Index: .emacs
===================================================================
--- .emacs	(revision bee54a6db092e168445ba71b6b5d003e96f9e8b0)
+++ .emacs	(revision cdbce2b5a3ae60133769ab7ee63dc7d450e6420b)
@@ -92,9 +92,12 @@
          :html-postamble "
 
-      <p>w96k © 2019-2022</p>
+      <p>w96k 🄯 2019-2022</p>
 
       <p>
         <a href=\"/legal.html\">
           License
+        </a><br>
+        <a href=\"/sitemap.html\">
+          Sitemap
         </a>
      </p>
Index: content/digarden/20210411200801-здоровье.org
===================================================================
--- content/digarden/20210411200801-здоровье.org	(revision bee54a6db092e168445ba71b6b5d003e96f9e8b0)
+++ content/digarden/20210411200801-здоровье.org	(revision cdbce2b5a3ae60133769ab7ee63dc7d450e6420b)
@@ -9,6 +9,4 @@
 - [[id:28431181-3ec0-4ec6-a07a-cf6888ee4ddb][Самоооборона]]
 - [[id:7dd0c204-3cc0-4d16-b096-636e1b4895c0][Диета]]
-
-Упражнения:
 
 ** Препараты
@@ -23,3 +21,2 @@
 - Бронхиальная астма
 - [[id:df0b25b5-5a22-4fba-8f8b-698d6b105d98][Фенол]]
-- [[id:31413658-930f-43b7-b066-eeb592c73ede][Записи к врачу]]
Index: ntent/digarden/20210411215334-записи_к_врачу.org
===================================================================
--- content/digarden/20210411215334-записи_к_врачу.org	(revision bee54a6db092e168445ba71b6b5d003e96f9e8b0)
+++ 	(revision )
@@ -1,9 +1,0 @@
-:PROPERTIES:
-:ID:       31413658-930f-43b7-b066-eeb592c73ede
-:END:
-#+title: Записи к врачу
-* DONE Запись к терапевту
-  SCHEDULED: <2021-04-26 Пн 15:36>
-  
-
-  
Index: ntent/digarden/20210412224559-gnu_guix.org
===================================================================
--- content/digarden/20210412224559-gnu_guix.org	(revision bee54a6db092e168445ba71b6b5d003e96f9e8b0)
+++ 	(revision )
@@ -1,5 +1,0 @@
-:PROPERTIES:
-:ID:       2b5be8af-49ee-46c1-bd31-b5ab8ce733a3
-:END:
-
-
Index: ntent/digarden/20210413025536-воспроизводим.org
===================================================================
--- content/digarden/20210413025536-воспроизводим.org	(revision bee54a6db092e168445ba71b6b5d003e96f9e8b0)
+++ 	(revision )
@@ -1,5 +1,0 @@
-:PROPERTIES:
-:ID:       78ecbb72-a2bd-429f-9829-0a920a28d5ca
-:END:
-#+title: Воспроизводим
-
Index: content/digarden/20210513224522-курсы.org
===================================================================
--- content/digarden/20210513224522-курсы.org	(revision bee54a6db092e168445ba71b6b5d003e96f9e8b0)
+++ content/digarden/20210513224522-курсы.org	(revision cdbce2b5a3ae60133769ab7ee63dc7d450e6420b)
@@ -5,5 +5,3 @@
 Курсы в интернете и в реальной жизни.
 
-- [[id:a0fe2327-2d9d-4784-bc4e-61de1f206b30][From Nand to Tetris]]
-** Платформы
-- [[id:8945ae7c-c097-486d-92c9-7d1f6478a08e][Интуит]]
+- From Nand to Tetris
Index: ntent/digarden/20210513224542-from_nand_to_tetris.org
===================================================================
--- content/digarden/20210513224542-from_nand_to_tetris.org	(revision bee54a6db092e168445ba71b6b5d003e96f9e8b0)
+++ 	(revision )
@@ -1,5 +1,0 @@
-:PROPERTIES:
-:ID:       a0fe2327-2d9d-4784-bc4e-61de1f206b30
-:END:
-
-
Index: ntent/digarden/20220929033245-грузия_осень_2022.org
===================================================================
--- content/digarden/20220929033245-грузия_осень_2022.org	(revision bee54a6db092e168445ba71b6b5d003e96f9e8b0)
+++ 	(revision )
@@ -1,6 +1,0 @@
-:PROPERTIES:
-:ID:       8bb7911c-f1b7-4e7b-9a59-94a86a9cab1c
-:END:
-#+title: Грузия [Осень 2022]
-** Финансы
-- 29.09.2022 121к рублей
Index: content/en/posts/web-stacks.org
===================================================================
--- content/en/posts/web-stacks.org	(revision cdbce2b5a3ae60133769ab7ee63dc7d450e6420b)
+++ content/en/posts/web-stacks.org	(revision cdbce2b5a3ae60133769ab7ee63dc7d450e6420b)
@@ -0,0 +1,567 @@
+#+TITLE: Technologies of web development
+#+DATE: <2022-10-11 Tue>
+#+LANGUAGE: en
+
+* Technologies of web development
+#+BEGIN_abstract
+In this article I'm going to categorize languages, frameworks, libraries
+and software by a criteria of usage such technologies at hired work. It
+might be biased and irrational, be aware.
+#+END_abstract
+
+I work in the IT field as a web developer for many years, but cannot
+proudly claim myself as a professional. I don't know many things, I
+don't like to work in general, I don't like corporate IT culture and I
+don't like web development in particular, but I have an experience in
+that field, and it is much easier to dive into it to earn money
+for a living than other IT fields or other professions at my location. I
+hope this text will be useful for someone who is outside of the field of
+web development to get a grasp of technologies to learn.
+
+* What is tech stack
+#+BEGIN_abstract
+The tech stack is the mix of technologies (software, frameworks, libraries)
+that the project uses to implement a planned set of features.
+#+END_abstract
+
+Knowing everything from your tech stack is not the only key to
+success. It can sound obvious, but social skills can play a more
+important role than your programming skills. Programming is a very
+social activity, everything you are going to use is built by other
+people, sometimes something breaks and you need to contact people that
+provide you the software you use, it is also important to communicate
+with your company's team and not bring yourself into conflicts. And
+don't be that guy (or me), who hates something technical so much, that
+people get annoyed by you, it won't help you in any way. It can be seen
+as a suppression of your ego, but the truth is that hired work is more
+about collectivism than individualism.
+
+Next, I present the list of technologies you should know to work as a
+web developer. The list is not mandatary and you are not required to
+learn it on an expert level to get your job offer.
+
+* Technologies to learn
+Some things you will use in most of your projects, so you are better to
+familiarize yourself with them anyway. What I've discovered, is that
+most knowledge of some tech is transferable to other techs.
+** Text Editor
+Not sure if I need to write it, but you need a development environment
+where you will write code, run tests and compile your project.
+
+*Most popular choices*
+- [[https://gnu.org/software/emacs/][Emacs]] / [[https://www.vim.org/][Vim]] (I recommend them for a long run)
+- Jetbrains IDE (proprietary)
+- VSCode (proprietary)  
+
+*Less popular*  
+- Sublime (proprietary)
+- [[https://www.eclipse.org/][Eclipse]] / [[https://netbeans.apache.org/][Netbeans]] / [[https://www.kdevelop.org/][Kdevelop]]
+- other editors and IDEs
+
+Proprietary means that source code is not available and probably it
+costs money to use and you as a user don't have control over it. You can
+learn more why it is important on the [[https://gnu.org/philosophy/][GNU website]]. Such an important
+tool as a text editor should be free for everyone.
+
+[[[https://en.wikipedia.org/wiki/Text_editor][Wikipedia: Text editor]]] |
+[[[https://en.wikipedia.org/wiki/Integrated_development_environment][Wikipedia: Integrated development environment]]]
+
+** SQL
+Or it should be called persistence, but mostly you will use something
+like [[https://www.postgresql.org/][Postgres]] or [[https://mariadb.com/kb/en/][MariaDB]]/[[https://mysql.com/][MySQL]]. Rarely it can be NoSQL like MongoDB.
+
+The database is the main thing around which you will develop your
+application. I would say that the code is secondary compared to the data
+you store and get from the database, so it is an extremely good idea to
+learn SQL well, especially in the long run. For the start, it is okay to
+know a little and get going along the way because you will probably work
+with SQL through ORM.
+
+I recommend using [[https://dbeaver.io/][Dbeaver]] as IDE for running SQL-related code. It eases
+the complexity of writing and running SQL.
+
+[[[https://en.wikipedia.org/wiki/SQL][Wikipedia: SQL]]] |
+[[[https://en.wikipedia.org/wiki/Relational_database][Wikipedia: Reletational Database]]]
+
+*** ORM
+Each tech stack provides ORM. ORM allows you to operate your database
+"objects" as your programming language code without writing or
+minimazing writing raw SQL. It is quite rare, when you need to work with
+pure SQL or the project doesn't use ORM at all. ORMs might be something
+from the list:
+- [[https://hibernate.org/][Hibernate]]
+- [[https://docs.djangoproject.com/][Django ORM]]
+- [[https://www.doctrine-project.org/][Doctrine]]
+- [[https://sqlalchemy.org/][SQLAlchemy]]
+- [[https://guides.rubyonrails.org/active_record_basics.html][Rails Active Record]]
+- and many others
+
+[[[https://en.wikipedia.org/wiki/SQL][Wikipedia: SQL]]] | [[[https://en.wikipedia.org/wiki/Object%E2%80%93relational_mapping][Wikipedia: ORM]]]
+
+** In-memory database
+Some data needs to be stored in RAM for better performance. For that
+cases you need to learn about Redis or similar technology. Such databases are:
+- [[https://en.wikipedia.org/wiki/Redis][Redis]]
+- [[https://en.wikipedia.org/wiki/Memcached][Memcached]]
+
+[[[https://en.wikipedia.org/wiki/In-memory_database][Wikipedia: In-memory database]]]
+
+** HTTP Server and HTTP protocol
+You don't need to know everything from the start, but since you are
+going to work as a web dev you need to know what you are using. It is
+essential if you do backend APIs.
+
+The HTTP server is usually [[https://en.wikipedia.org/wiki/Nginx][Nginx]] or [[https://en.wikipedia.org/wiki/Apache_HTTP_Server][Apache]] (it is used rarely now). If you
+work with Java, HTTP servers can be written in Java such as [[https://en.wikipedia.org/wiki/Jetty_(web_server)][Jetty]] and
+others.
+
+[[[https://en.wikipedia.org/wiki/Web_server][Wikipedia: Web server]]] |
+[[[https://en.wikipedia.org/wiki/Hypertext_Transfer_Protocol][Wikipedia: Hypertext Transfer Protocol]]]
+
+** Fulltext search
+You might need searching functionality. It is okay to include google
+search in basic cases, but it is not an acceptable choice in many
+cases. To search like google does you will need full-text search
+engines. You can use your database for that or specific solutions like
+ElasticSearch for such purposes.
+
+[[[https://en.wikipedia.org/wiki/Full-text_search][Wikipedia: Full-text search]]] |
+[[[https://en.wikipedia.org/wiki/Elasticsearch][Wikipedia: Elasticsearch]]] (proprietary)
+
+** Message broker
+RabbitMQ, ZeroMQ, Kafka and others. You need those to create queues and
+other stuff that needs to be delayed. It is used because some languages
+have limitation to implement such functionality, for example PHP.
+
+[[https://en.wikipedia.org/wiki/Message_broker][Wikipedia: Message Broker]]
+
+** Unix-like OS
+You will probably work on Linux, variants of BSD systems, or macs. You
+need to familiarize with the system you use, different tasks require
+different degree of that skill, but knowledge of what you are using
+every day will be handy.
+
+There are many ways to learn it, but I recommend trying to install it on
+your machine and learning it along the way. I recommend to starting with
+[[https://debian.org/][Debian GNU/Linux distribution]]. You can read [[https://www.debian.org/doc/manuals/debian-faq/][FAQs]], manuals about
+[[https://www.debian.org/releases/stable/amd64/index.en.html][installation]] and [[https://www.debian.org/doc/manuals/debian-reference/][how to use the system]]. Docs are very useful, they are
+will be present in your filesystem you can read them by jumping into
+/usr/share/docs folder or running ~info~ and ~man~ commands. I recommend
+reading it and exploring the Debian website. Also for learning Linux
+Arch Linux wiki is a good source of knowledge (Slackware and Gentoo
+wikis are good as well).
+
+[[[https://en.wikipedia.org/wiki/Unix][Wikipedia: Unix]]] |
+[[[https://en.wikipedia.org/wiki/Linux][Wikipedia: Linux]]] |
+[[[https://en.wikipedia.org/wiki/Linux_distribution][Wikipedia: Linux distribution]]]
+
+** OOP
+You will be probably forced to use OOP techniques in corporate IT
+culture. It is not something that improves development that much, but it
+is a very common way to organize codebase and it is kind of great for
+working with many people. If you ask me, I would say that [[https://en.wikipedia.org/wiki/Closure_(computer_programming)][Closures]] and
+[[https://en.wikipedia.org/wiki/Modular_programming][Modules]] are much more game-changing tech improvements that happened in
+computer science than OOP.
+
+Not everyone will degree with my definition, but patterns are needed to
+express by your programming language object system, which is impossible
+to express otherwise, because of some language limitations. It is very
+true for very static and not expressive languages like PHP or Java and
+less true for more expressive languages like Lisp and Haskell.
+
+Besides the basic principle of using OOP in your programming language of
+choice, you are going to need patterns to learn. The benefits of them
+are questionable, but it is not bad to know and they are being asked in
+interviews often.
+
+The best way to learn patterns is to use [[https://en.wikipedia.org/wiki/Smalltalk][Smalltalk]] and read the book
+[[https://en.wikipedia.org/wiki/Design_Patterns]["Gang of Four"]]. [[https://martinfowler.com/][Martin Fowler]] is a great source of enterprise-level
+patterns and notes about enterprise development in general. Also, there
+is a very useful website about design patterns with examples in many
+mainstream languages: https://refactoring.guru/
+
+[[[https://en.wikipedia.org/wiki/Object-oriented_programming][Wikipedia: OOP]]] | [[[https://en.wikipedia.org/wiki/Software_design_pattern][Wikipedia: Software design pattern]]]
+
+** Debugger
+You have a chance to work with others people's code, so you have a
+chance to get confused by a lot of stuff going on. Also, it is possible
+that you would make a mistake and will not understand what is going on,
+or where is an error. In that case, you will need a debugger. The
+debugger is usually can be part of your text editor environment and it
+is usually included in your programming environment alongside your
+interpreter / compiler. Some languages don't include a debugger, so you
+need to download it separately.
+
+The debugger allows you to step through your code and see the values of
+stack and heap, basically you get access to everything evaluated by your
+interpreter/compiler. It is very common practice to use such a thing
+when errors happen and I think, that it is a great way to learn how your
+language of choice works internally.
+
+[[[https://en.wikipedia.org/wiki/Debugger][Wikipedia: Debugger]]]
+
+** Profiler
+A profiler is similar to a debugger, but it helps you to detect which
+part of your program is running slow, it also helps you detect memory
+leaks. Sometimes you or others write functions and do everything as
+intended, but it is running slow. To understand which part of your code
+is a bottleneck you need to run it in a profiler. Then profiler will
+show you a diagram with the execution time and memory consumption of
+your functions, which is helpful even when everything works fine.
+
+[[[https://en.wikipedia.org/wiki/Profiling_(computer_programming)][Wikipedia: Profiler]]]
+
+** Frontend
+If you are not exclusively backend developer, you will probably need to
+work with templates. Templates represent the outer view of your website,
+which represents backend's inner workings. Frontend part can be done
+using template engine or can be done as [[https://en.wikipedia.org/wiki/Single-page_application][Single Page Application]] with
+lots of client-side javascript coe.
+
+*** HTML
+HTML is used for representing your website information to your users. It
+contains only structural data and very basic formatting. If you see
+something that looks like an old document, that is probably plain HTML
+used.
+
+[[[https://en.wikipedia.org/wiki/Web_template_system][Wikipedia: Web Template System]]] |
+[[[https://en.wikipedia.org/wiki/Single-page_application][Wikipedia: Single-page Application]]]
+
+*** CSS
+CSS is being used for creating styling for your HTML pages. The role of
+CSS is to make your html layouts pretty, to make your buttons beautiful
+and the grid is clear.
+
+[[[https://en.wikipedia.org/wiki/CSS][Wikipedia: CSS]]]
+
+*** Javascript
+Javascript is being used for creating interactivity with your HTML
+pages. If you see a dropdown menu, carousel, or slider, there is
+probably javascript involved. Javascript is a big and complex
+programming language, so you as a web developer will be required to know
+only a subset of it except if your main programming language is
+Javascript.
+
+If you work with SPA Application, you might be interested in learning:
+- [[https://reactjs.org/][React]]
+- [[https://vuejs.org/][Vue]]
+- [[https://angularjs.org/][Angular]]
+- [[https://emberjs.com/][Ember]]
+- probably other technologies
+
+Popular non-SPA library is [[https://jquery.com/][JQuery]] and plugins for it.
+
+[[[https://en.wikipedia.org/wiki/Javascript][Wikipedia: Javascript]]]
+
+*** Template engines
+Template engines are needed to transfer your backend data to your
+user. It provides a way to generate HTML with embedding variables and
+different functions for the developer's ease. The template engine is
+usually built-in in your framework of choice.
+
+[[[https://en.wikipedia.org/wiki/Template_processor][Wikipedia: Template Processor]]]
+
+** Docker
+Your team probably will use docker for deployment or development (or
+both). You might want to get your project working in a container for
+better accessibility by your team. The point of docker as a development
+tool is to let your team quickly get the same environment as you. The
+point of docker as a deployment tool is to deploy the same environment
+that you developing in, it is important to have a reproducible
+production environment because catching bugs in 3 different environments
+(dev, staging, prod) suck a lot.
+
+[[[https://en.wikipedia.org/wiki/Docker_(software)][Wikipedia: Docker]]]
+
+** API
+There are standard ways to build APIs. If you are going to focus on that
+part of an application, only backend work, you should learn it.
+- [[https://en.wikipedia.org/wiki/Representational_state_transfer][RestAPI]]
+- [[https://jsonapi.org/][JSONAPI]]
+- [[https://en.wikipedia.org/wiki/GraphQL][GraphQL]]
+- [[https://en.wikipedia.org/wiki/SOAP][SOAP]]
+- and others
+
+The framework you use might provide a specific way for declaring APIs. For
+example, Symfony has [[https://api-platform.com/][API Platform]] and Django has [[https://www.django-rest-framework.org/][Django REST Framework]].
+
+[[[https://en.wikipedia.org/wiki/Web_API][Wikipedia: Web API]]]
+
+** Type hierarchy and standard library
+Every programming language has a standard library. The standard library
+is a library that comes together with your language, so you don't need
+to install any external dependencies to use it. Sometimes it is
+implicit, so you don't need to import anything, sometimes it is
+explicit, so you need to declare dependencies you use from the standard
+library.
+
+To learn more about your standard library, you should see your
+programming language documentation.
+
+[[[https://en.wikipedia.org/wiki/Standard_library][Wikipedia: Standard Library]]]
+
+** Package Manager
+It is hard to build something using only a standard library. Ideally you
+should try to use the standard library as much as you can, but it is
+very possible that the standard library will not include everything you
+would ever need. In such cases, you would use external software to get
+such software you can use package managers such as npm for nodejs, pip
+for python, composer for php, maven for java and gem for ruby.
+
+Such package manager can be installed together with your programming
+language interpreter or can be installed externally. Check package
+manager documentation about its installation.
+
+It is important to know the basics of how they work in general. The
+topic of dependency resolution is hard, but for end-users, it should be
+quite easy to work.
+
+[[[https://en.wikipedia.org/wiki/Package_manager][Wikipedia: Package Manager]]]
+
+** Version Manager
+If you don't use docker all the way, sometimes you will need to change
+your interpreter version depending on the project you use. To change
+let's say nodejs 18 to nodejs 16, you will need something called version
+manager, for that particular case you will need NVM (Node Version
+Manager). Such version managers exist for many languages (RVM, Pyenv,
+Jenv and so on).
+
+** Version Control
+You should always use version control system even if you work completely
+alone. Version control allows you to work with other people and check
+changes over your codebase over time. This is essential technology
+to know for development these days, at least if we talk about hired work
+as web developer.
+
+Version Control Systems:
+- Git
+- Mercurial
+- Darcs
+- Bazaar
+- Subversion  
+- RCS
+- CVS
+- and others
+
+Git is popular version control system and you probably will use it or
+already using it.
+
+To learn what is it all about you can watch [[https://www.youtube.com/watch?v=92sycL8ij-U][a short series of videos
+about git from computerphile]].
+
+[[https://git-scm.com/book/en/v2][Book called "Pro Git"]] can help you to learn Git in more depth.
+
+[[[https://en.wikipedia.org/wiki/Version_control][Wikipedia: Version Control]]]
+
+** Framework or(and) set of libraries
+Every job sticks to its own stack. Very often it sticks to one specific
+web framework, that you are required to learn. It can be something like
+Django, Symfony, Spring, Ruby on Rails, or others.
+
+Frameworks are usually the biggest part of your codebase. The difference
+between framework and library: Framework runs your code with your
+classes, but libraries are being used by you explicitly and you execute
+all the code from them. The concept of reverting control over the code
+to your framework is called [[https://en.wikipedia.org/wiki/Inversion_of_control][Inversion of Control]].
+
+To learn your framework of choice you should read its documentation. If
+documentation is bad then I would recommend not using it. Sometimes
+framework developers sell additional courses or books on using their
+product (IMO it's bad).
+
+** Programming language
+And the last but very important item on our list is the programming
+language itself. You should know it, you should know it well. To
+distinguish that item from the standard library I should point out that
+programming language consists of its syntax, semantics and in general it
+is every fundamental language block that is not described in that
+language itself (an example is the standard library).
+
+Mostly it is easy to understand your programming language since most of
+ it is a standard library. Many fundamental concepts of programming
+ languages come from programming in general. So you can read a book or
+ learn different programming languages by documentation and there is a
+ huge chance that concepts from them can be applied to many languages,
+ not just one.
+
+It is a good idea to learn programming, complexity with big O notation,
+data structures, algorithms, compiler/interpreter construction and so
+on. But it is not so required in actual day-to-day work, especially for
+web development. You can argue about this, but I would say that this is
+mostly true for many types of work since many libraries and SQL
+databases manage complexity on their own, all you need to declare your
+classes and don't make them leak memory that much.
+
+[[[https://en.wikipedia.org/wiki/Computer_programming][Wikipedia: Programming]]] | [[[https://en.wikipedia.org/wiki/Programming_language][Wikipedia: Programming language]]] | [[[https://en.wikipedia.org/wiki/Computer_science][Wikipedia: Computer Science]]]
+
+* Most popular programming languages
+Your choices are quite limited here. More jobs available, more chances
+to get that job. there will be different results in different areas. I
+think that in most areas you will have a choices between Java, Python
+and maybe PHP or Ruby. If you want to end up insane, there is also
+Javascript, but it is not that mature for backend as other technologies
+(it is my biased opinion), so I will not include it (there is only "big"
+framework called NestJS and demend of it is probably low).
+
+** Java / C#
+Probably the most popular programming languages out there especially
+when it comes to working at companies. It is statically typed and quite
+easy to learn languages. They are restricted to OOP moslty, so you
+prorably will use oop design patterns here more than in other
+programming language. Type system are not that advanced as in ML
+dialects and actually it is unsound as in other mainstream languages,
+but it provides some merits of safety compared to nonsafe C or weak
+typed languages such PHP and Javascript.  
+
+Frameworks:
+- [[https://spring.io/projects/spring-framework][Spring]]
+- [[https://dotnet.microsoft.com/en-us/][.Net]]
+
+ORM:
+- [[https://hibernate.org/orm/][Hibernate]]
+
+[[[https://learn.microsoft.com/en-us/dotnet/csharp/][C# Documentation]]] | [[[https://docs.oracle.com/javase/tutorial/][Java Documentation]]]
+
+** Python
+Second the most popular programming language. It differs from Java a
+lot. It is dynamic typed, strongly type, more object oriented than Java
+(everything is an object), but somehow manages to look like a procedural
+code, it forces you to indent your code right.
+
+Personally I like Python more than other mainstream languages, it does
+many things right. I like that being fully object-oriented language it
+doesn't drop to dogmatic believing in OOP patterns. It also has good
+[[https://en.wikipedia.org/wiki/Read%E2%80%93eval%E2%80%93print_loop][REPL]] and [[https://en.wikipedia.org/wiki/Reflective_programming][reflection]]/[[https://en.wikipedia.org/wiki/Introspection][introspection]] abilities without writing much code
+like in Java or PHP.
+
+Frameworks:
+- [[https://djangoproject.com/][Django]]
+- [[https://palletsprojects.com/p/flask/][Flask]]
+- [[https://fastapi.tiangolo.com/][FastAPI]]
+- [[https://trypyramid.com/][Pyramid]]
+
+ORM:
+- Django ORM (Active Record)
+- [[https://www.sqlalchemy.org/][SQLAlchemy]] (Data Mapper)
+
+Learning resources:
+- [[https://www.python.org/doc/][Python Documentation]]
+- [[https://realpython.com/][Real Python]]
+- [[https://www.fullstackpython.com/][Fullstack Python]]
+
+** PHP
+PHP might be unpopular in some areas, but it is quite popular in
+Russia. It runs lots of small businesses and it is probably the easiest
+tech stack to get a job (but not the easiest language to work with). The
+language has lots of caveats such as weak typing, unorganized standard
+library, less developed OOP and type checking, lots of procedural php
+legacy, most functions of the language is defined in C. My personal
+observation is that PHP has the worst error messages compared to other
+high level languages.
+
+Frameworks:
+- [[https://symfony.com/][Symfony]]
+- [[https://laravel.com/][Laravel]]
+
+ORM:
+- [[https://www.doctrine-project.org/][Doctrine]]
+
+Learning resources:
+- [[https://www.php.net/docs.php][PHP documentation]]
+- [[https://symfonycasts.com/][Symfonycast (paid)]]
+  
+* Less popular programming language
+** Go
+Is compiled statically typed procedural language made by creators of
+C. It has garbage collection as interpreted languages. It has rich
+standard library and as I understand used mostly for devops or
+microservices and less used for building monolithic application as in
+other programming languages. It also has strong abilities to do parallel
+computations. Language doesn't have REPL and strong
+reflection/introspection abilities.
+
+Learning resources:
+- [[https://go.dev/][GO documentation]]
+
+** Ruby
+Ruby is mostly used for web development, because of popularity of Ruby
+on Rails framework. The demand of it might be low in some areas, so
+investigate your market yourself before learning it. Ruby is strongly
+type object-oriented in smalltalk sense language. It has mixed lisp,
+perl and smalltalk roots. It has very powerful REPL,
+reflection/introspection abilities, probably the best after LISPs and
+Smalltalk. The biggest downside of the language is lack of good
+documentation on ruby website.
+
+Frameworks:
+- [[https://rubyonrails.org/][Ruby on Rails]]
+- [[https://sinatrarb.com/][Sinatra]]
+
+ORM:
+- [[https://guides.rubyonrails.org/active_record_basics.html][Active Record]]
+- [[https://en.wikipedia.org/wiki/DataMapper][DataMapper]]
+
+Learning resources:
+- [[https://poignant.guide/][why's (poignant) Guide to Ruby]]
+- [[https://ruby-doc.org/docs/ruby-doc-bundle/ProgrammingRuby/book/language.html][Programming Ruby Book]]
+- [[https://www.ruby-lang.org/en/][Ruby Website]]
+  
+* Harder to find a work languages
+- Scala
+- Haskell
+- Erlang
+- Clojure
+- Rust
+
+- (C/C++) since they are not suitable for web development
+
+* Almost impossible to find a work languages
+- Any LISP
+- SML
+- Other powerful functional programming languages such as Agda, COQ and
+  so on
+  
+* How to get good
+First of all don't buy any paid course or workshops, most information
+are available for free for everyone. Just read wikipedia links I
+provided in artible and follow links there to official documentation of
+the thing you want to learn.
+
+When it comes to programming in general I recommend learning it doing
+test projects or just playing with the code. For practice you can also
+use services like Exercism or Codewars to practice pure programming
+solving problems. Also there is great web resource for complete
+beginners called [[https://freecodecamp.org/][FreeCodeCamp]], it covers basics of web development and
+javascript programming.
+
+Also I recommend reading old academic books on programming, because many
+concepts are the same in many programming languages, what you need is
+the ability think abstractly using data structures and algorithms. I
+recommend anyone who wants to really grock programming to read:
+- [[https://en.wikipedia.org/wiki/Structure_and_Interpretation_of_Computer_Programs][SICP]]
+- [[https://en.wikipedia.org/wiki/How_to_Design_Programs][HTDP]]
+- [[https://www.cis.upenn.edu/~bcpierce/tapl/][TAPL]]
+- [[https://en.wikipedia.org/wiki/Essentials_of_Programming_Languages][Essentials Of Programming Languages]]
+- [[https://download-mirror.savannah.gnu.org/releases/pgubook/ProgrammingGroundUp-1-0-booksize.pdf][Programming from the ground up]]
+- Also see [[https://www.gnu.org/doc/other-free-books.html][free books from GNU website]]
+
+/Basically the rule of thumb is that if the book has wikipedia article,
+it is probably a good book and you should read it/.
+      
+There are many free sources to learn you just need to invest your time
+into it. The downside of learning LISP is that mainstream programming on
+your job can feel very restrictive and less expressive. Also you will
+probably learn, that many mainstream languages have lots of quircks or
+plainly bad design decisions.
+
+* Conclusion
+It is also possible to get a job with less popular stack, but if you are
+just starting it might be reasonable to focus on popular one first. The
+list of technologies is quite big, so newbies can be lost in new
+information. Be patient and learn one thing at the time. I would
+recommend starting with programming language documentation, then SQL and
+then going to docs of your web-framework / library.
+
+Demand for web developers is huge and in my opinion it is the easiest
+way to get a job. The web development sucks in general (at least for
+me), but that topic will be hold for another article. 
Index: ntent/en/posts/web-stacks.org.old
===================================================================
--- content/en/posts/web-stacks.org.old	(revision bee54a6db092e168445ba71b6b5d003e96f9e8b0)
+++ 	(revision )
@@ -1,404 +1,0 @@
-#+TITLE: Tech stacks for earning money as web developer
-#+DATE: <2022-07-27 Ср>
-#+LANGUAGE: en
-
-* Tech stacks for earning money as web developer
-#+BEGIN_abstract
-In this article I'm going to categorize languages, frameworks, libraries
-and software by a criteria of ease of starting to earn money. It is
-biased and irrational, be aware.
-#+END_abstract
-I work in IT field as web developer for many years, but cannot claim
-myself as professional. I don't like to work in general, I don't like
-corporate IT culture and I don't like web development in particular, but
-I has an experience in that field and it is much easier to dive in in
-order to earn money for a living than other IT fields. I hope this text
-will be useful for someone who is outside of field of web development
-and wish to start earning money in that field.
-
-* What is tech stack
-#+BEGIN_abstract
-Tech stack is the mix of technologies (software, frameworks, libraries)
-that project uses at your current or future company.
-#+END_abstract
-
-Knowing everything from your techstack is not the only key for
-success. It can sound obvious, but social skills can play more important
-role than your programming skills. Programming is very social activity,
-everything you are going to use is built by other people, sometimes
-something breaks and you need to contact with people that provide you
-software you use, it is also important to communicate with your
-company's team and not bring yourself into conflicts. And don't be that
-guys (or me), who hates something technical so much, that people get
-annoyed by you, it won't help you in any way. It is kind of that,
-because it can been seen as supression of your ego, but the truth is
-that hired work is more about collectivism than individualism. 
-
-Next I present the list of technologies you should know to work as web
-developer. The list is not mandotary and you are not required to learn
-it on expert level to get your job offer.
-
-* Fundamental technologies
-Some things you will use in most of your projects, so you are better to
-familarize with them anyway. What I've discovered, that most knowledge
-of some tech is transfarable to other techs.
-** Text Editor
-Not sure if I need to write it, but you need development environment
-where you will write code, run tests and compile your project.
-
-*Most popular choices*
-- [[https://gnu.org/software/emacs/][Emacs]] / [[https://www.vim.org/][Vim]] (I recommend them for a long run)
-- Jetbrains IDE (proprietary)
-- VSCode (proprietary)  
-
-*Less popular*  
-- Sublime (proprietary)
-- [[https://www.eclipse.org/][Eclipse]] / [[https://netbeans.apache.org/][Netbeans]] / [[https://www.kdevelop.org/][Kdevelop]]
-- other editors and IDEs
-
-Proprietary means that source code is not available and probably it
-costs money to use and you as a user don't have control over it. You can
-learn more why it is important on [[https://gnu.org/philosophy/][GNU website]]. Such important tool as
-text editor should be free for everyone.
-
-[[[https://en.wikipedia.org/wiki/Text_editor][Wikipedia: Text editor]]] |
-[[[https://en.wikipedia.org/wiki/Integrated_development_environment][Wikipedia: Integrated development environment]]]
-
-** SQL
-Or it should be called persistance, but mostly you will use something
-like [[https://www.postgresql.org/][Postgres]] or [[https://mariadb.com/kb/en/][MariaDB]]/[[https://mysql.com/][MySQL]]. Rarely it can be nosql like
-mongodb.
-
-The database is the main thing aroud which you will develop your
-application. I would say that the code is secondary compared to the data
-you store and get from the database, so it is extremely good idea to
-learn SQL well especially for a long run. For the start it is okay to
-know a little and get going along the way, because you will probably
-work with SQL through ORM.
-
-I recommend to use [[https://dbeaver.io/][Dbeaver]] as IDE for running SQL related code. It eases
-the complexity of writing and running SQL.
-
-[[[https://en.wikipedia.org/wiki/SQL][Wikipedia: SQL]]] |
-[[[https://en.wikipedia.org/wiki/Relational_database][Wikipedia: Reletational Database]]]
-
-*** ORM
-Each tech stack provides ORM. It is quite rare, where you need to work
-with pure SQL or the project doesn't use ORM at all. ORMs might be
-something from the list:
-- [[https://hibernate.org/][Hibernate]]
-- [[https://docs.djangoproject.com/][Django ORM]]
-- [[https://www.doctrine-project.org/][Doctrine]]
-- [[https://sqlalchemy.org/][SQLAlchemy]]
-- [[https://guides.rubyonrails.org/active_record_basics.html][Rails Active Record]]
-- and many others
-
-[[[https://en.wikipedia.org/wiki/SQL][Wikipedia: SQL]]] | [[[https://en.wikipedia.org/wiki/Object%E2%80%93relational_mapping][Wikipedia: ORM]]]
-
-** In-memory database
-Some data needs to be stored in RAM for better performance. For that
-cases you need to learn about Redis or similar technology.
-
-[[[https://en.wikipedia.org/wiki/In-memory_database][Wikipedia: In-memory database]]]
-
-** HTTP Server and HTTP protocol
-You don't actually need to know everything from the start, but since you
-are going to work as web dev you need to know what you are using. It is
-essential if you do backend APIs.
-
-HTTP server is usually [[https://en.wikipedia.org/wiki/Nginx][Nginx]] or [[https://en.wikipedia.org/wiki/Apache_HTTP_Server][Apache]] (it is used rarely now). If you
-work with Java, http servers can be written in Java such as [[https://en.wikipedia.org/wiki/Jetty_(web_server)][Jetty]] and
-others.
-
-[[[https://en.wikipedia.org/wiki/Web_server][Wikipedia: Web server]]] |
-[[[https://en.wikipedia.org/wiki/Hypertext_Transfer_Protocol][Wikipedia: Hypertext Transfer Protocol]]]
-
-** Fulltext search
-You might need searching functionality. In basic cases it is okay to
-include google search, but in many cases it is not acceptable choice. To
-do a search like google does you will need fulltext search engines. You
-can use your database for that or specific solutins like ElasticSearch
-for such purpose.
-
-[[[https://en.wikipedia.org/wiki/Full-text_search][Wikipedia: Full-text search]]] |
-[[[https://en.wikipedia.org/wiki/Elasticsearch][Wikipedia: Elasticsearch]]] (proprietary)
-
-** Message broker
-RabbitMQ, ZeroMQ, Kafka and others. You need those to create queues and
-other stuff that needs to be delayed.
-
-[[https://en.wikipedia.org/wiki/Message_broker][Wikipedia: Message Broker]]
-
-** Unix-like OS
-You will probably work on Linux, variants of BSD system or macs. You
-need to familiarize with the system you use, different tasks require
-different degree of that skill, but knowledge of what you are using
-every day will be handy.
-
-There are many ways to learn it, but I recommend try to install it on
-your machine and learn it along the way. I recommend to start with
-[[https://debian.org/][Debian GNU/Linux distribution]]. You can read [[https://www.debian.org/doc/manuals/debian-faq/][FAQ]], manuals about
-[[https://www.debian.org/releases/stable/amd64/index.en.html][installation]] and [[https://www.debian.org/doc/manuals/debian-reference/][how to use the system]]. Docs are very useful, they are
-will be present in your filesystem you can read it by jumping into
-/usr/share/docs folder or running ~info~ and ~man~ commands. I recommend to
-read it and explore Debian website. Also for learning linux Arch Linux
-wiki is good source of knowledge (Slackware and Gentoo wikis are good as
-well).
-
-[[[https://en.wikipedia.org/wiki/Unix][Wikipedia: Unix]]] |
-[[[https://en.wikipedia.org/wiki/Linux][Wikipedia: Linux]]] |
-[[[https://en.wikipedia.org/wiki/Linux_distribution][Wikipedia: Linux distribution]]]
-
-** OOP
-In corporate IT culture you will probably forced to use OOP
-techniques. It is not something that really improves development that
-much, but it is very common way to orginize codebase and it is kind of
-great for working with many people.
-
-Not everyone will degree with my definition, but patterns are needed to
-express by your programming language object system, which is impossible
-to express otherwise, because of different language limits. It is very
-true for very static and not expressive language like PHP or Java and
-less true for more expressive languages like Lisp and Haskell.
-
-Besides basic principle of using OOP in your programming language of
-choice you are going to need patterns to learn. The benefits of them are
-questinable, but it is not bad to know and they are being asked on
-interviews very often.
-
-The best way to learn patterns are to use [[https://en.wikipedia.org/wiki/Smalltalk][Smalltalk]] and read the book
-[[https://en.wikipedia.org/wiki/Design_Patterns]["Gang of Four"]]. Also there is very useful website about design patterns
-with examples in many mainstream languages: https://refactoring.guru/
-
-[[[https://en.wikipedia.org/wiki/Object-oriented_programming][Wikipedia: OOP]]]
-
-** Debugger
-You have a chance to work with others people code, so you have a chance
-to get confused by a lot of stuff going on. Also it is possible that you
-would make a mistake and will not understand what is going on, where is
-an error. In that case you will need a debugger. Debugger is usually can
-be the part of your text editor environment and it is usually included
-in your programming environment alongside your interpreter /
-compiler. Some languages don't include a debugger, so you need to
-download it seperately.
-
-Debugger allows you to step through your code and see the values of
-stack and heap, basically you get an access to everything evaluated by
-your interpreter/compiler. It is very common practice to use such a
-thing when errors happen and I personally think, that it is great way to
-learn how your language of choice works internally.
-
-[[[https://en.wikipedia.org/wiki/Debugger][Wikipedia: Debugger]]]
-
-** Profiler
-Profiler is similar to debugger, but it helps you to detect which part
-of your programm is running slow, it also helps you detect memory
-leaks. Sometimes you or others write functions and does everything as
-intended, but it is running slow. To understand which part of your code
-is a bottleneck you need to run it in a profiler. Then profiler will
-show you an diagram with execution time and memory consumption of your
-functions, which is helpful even when everything works fine.
-
-[[[https://en.wikipedia.org/wiki/Profiling_(computer_programming)][Wikipedia: Profiler]]]
-
-** Frontend
-If you are not exclusively backend developer, you will probably need to
-work with templates. Templates represent the outer view of your website,
-which represents backend's inner workings. Frontend part can be done
-using template engine or can be done as Single Page Application with
-lots of client-side javascript coe.
-
-
-*** HTML
-HTML is being used for representing your website information to your
-users. It contains only structural data and very basic formatting. If
-you see something that looks like old document, that is probably plain
-html used.
-
-[[[https://en.wikipedia.org/wiki/Web_template_system][Wikipedia: Web Template System]]] |
-[[[https://en.wikipedia.org/wiki/Single-page_application][Wikipedia: Single-page Application]]]
-
-*** CSS
-CSS is being used for creating styling for your html pages. The role of
-CSS is to make your html layouts pretty, to make your buttons beatiful
-and grid is clear.
-
-[[[https://en.wikipedia.org/wiki/CSS][Wikipedia: CSS]]]
-
-*** Javascript
-Javascript is being used for creating interectivity with your HTML
-pages. If you see dropdown menu, carousel or a slider, there is probably
-javascript involved. Javascript is big and complex programming language,
-so you as web developer will be required to know only subset of it
-except if your main programming language is Javascript.
-
-[[[https://en.wikipedia.org/wiki/Javascript][Wikipedia: Javascript]]]
-
-*** Template engines
-Template engines are needed to transfer your backend data to your
-user. It provides the way to generate HTML with embedding variables and
-different function for developer's ease. Template engine is usually
-built-in in your framework of choice.
-
-[[[https://en.wikipedia.org/wiki/Template_processor][Wikipedia: Template Processor]]]
-
-** Docker
-Your team probably will use docker for deployment or development (or
-both). Anyway you might want to get your project working in a container
-for better accessability by your team. The point of docker as
-development tool is to let your team quickly to get the same environment
-as you. The point of docker as deployment tool to deploy the same
-environment that you developing in, its important to have reproducible
-production environment, because catching bugs in 3 different
-environments (dev, staging, prod) suck a lot.
-** API
-There are standard ways to build APIs. If you are going to focus on that
-part of application, only backend work, you should learn it.
-- RestAPI
-- JSONAPI
--     
-** Type hierarchy and standard library
-
-** Framework or(and) set of libraries
-Every job sticks on their own stack. Very often it sticks to one
-specific web framework, that you are required to learn. It can be
-something like Django, Symfony, Spring, Ruby on Rails or others.
-
-Frameworks are usually the biggest part of your codebase. The difference
-between framework and library: Framework runs your code with your
-classes, but libraries are being used by you explicitly and you execute
-all the code from them. The concept of reverting the control over the
-code to your framework is called [[https://en.wikipedia.org/wiki/Inversion_of_control][Inversion of Control]].
-** Programming language
-
-You will need to 
-* Most popular programming languages
-Basically your choices are quite limited here. More jobs available, more
-chances to get that job. there will be different results in different
-areas. I think that in most areas you will have a choices between Java,
-Python and maybe PHP or Ruby. If you want to end up insane, there is
-also Javascript, but it is not that mature for backend as other
-technologies, so I will not include it (there is only "big" framework
-called NestJS, its demand should be low).
-
-** Java / C#
-Probably the most popular programming languages out there especially
-when it comes to working at companies. It is statically typed and quite
-easy to learn languages. They are restricted to OOP only, so you
-prorably will use oop design patterns here the most. Type system are not
-that advanced as in ML dialects and actually it is unsound, but it
-provides some merits of safety compared to nonsafe C.
-
-Frameworks:
-- Spring
-- .Net
-
-ORM:
-- Hibernate
-
-** Python
-Second the most popular programming language. It differs from Java a
-lot. It is dynamic typed, more object oriented (everything is an
-object), it forces you to indent your code right.
-
-Frameworks:
-- Django
-- Flask
-- FastAPI
-
-ORM:
-- Django ORM
-- SQLAlchemy
-
-** PHP
-PHP might be unpopular in some areas, but it is quite popular in
-Russia. It runs lots of small businesses and it is probably the easiest
-tech stack to get a job (but not the easiest language to work with). The
-language has lots of caveats such as weak typing, unorganized standard
-library, less developed OOP and type checking, lots of procedural php
-legacy, most functions of the language is defined in C.
-
-Frameworks:
-- Symfony
-- Laravel
-
-ORM:
-- Doctrine
-
-* Less popular programming language
-** Go
-** Ruby
-Ruby is mostly used solely for web development with popular Ruby on
-Rails framework. The demand of it might be low in some areas, so
-investigate your market yourself before learning it. Ruby is strongly
-type object-oriented in smalltalk sense language. It has mixed lisp,
-perl and smalltalk roots.
-
-Frameworks:
-- Ruby on Rails
-- Sinatra
-
-ORM:
-- Active Record
-- DataMapper  
-
-* Great language, but bad for finding work
-* How to get good
-First of all don't buy any paid course or workshops, most information
-are available for free for everyone. Just read wikipedia links I
-provided in artible and follow links there to official documentation of
-the thing you want to learn.
-
-When it comes to programming in general I recommend to learn it doing
-test projects or just playing with the code. For practice you can also
-use services like Exercism or Codewars to practice pure programming
-solving problems. Also there is great web-resource for complete
-beginners called [[https://freecodecamp.org/][FreeCodeCamp]], it covers basics of web development and
-javascript programming.
-
-Also I recommend reading old academic books on programming, because many
-concepts are the same in many programming languages, what you need is
-the ability think abstractly using data structures and algorhythms. I
-recommend anyone who wants to really grock programming to read:
-- [[https://en.wikipedia.org/wiki/Structure_and_Interpretation_of_Computer_Programs][SICP]] (mit scheme)
-- [[https://en.wikipedia.org/wiki/How_to_Design_Programs][HTDP]] (racket)
-- [[https://www.cis.upenn.edu/~bcpierce/tapl/][TAPL]]
-- [[https://en.wikipedia.org/wiki/Essentials_of_Programming_Languages][Essentials Of Programming Languages]]
-- [[https://download-mirror.savannah.gnu.org/releases/pgubook/ProgrammingGroundUp-1-0-booksize.pdf][Programming from the ground up]]
-- Also see [[https://www.gnu.org/doc/other-free-books.html][free books from GNU website]]
-
-/Basically the rule of thumb is that if the book has wikipedia article, it is probably a good book and you should read it/.  
-      
-There are many free sources to learn you just need to invest your time
-into it. The downside of learning LISP is that mainstream programming on
-your job can feel very restrictive and less expressive. Also you will
-probably learn, that many mainstream languages have lots of quircks or
-plainly bad design decisions.
-
-* Conclusion
-It is possible to get a job with less popular stack, but if you are just
-starting it might be reasonable to focus on popular one first. The list
-of technologies is quite big, so newbies can be lost in new
-information. Be patient and learn one thing at the time. I would
-recommend starting with programming language documentation, then SQL and
-then going to docs of your web-framework / library.
-
-Demand for web developers is huge and in my opinion it is the easiest
-way to get a job. The web development sucks in general (at least for
-me), but that topic will be hold for another article. 
-
-If to continue tech stack tier list sorted by popularity next one should be:
-
-** Advanced tier
-- Scala
-- Clojure
-- Erlang
-- Rust
-
-** Rare tier
-- Common Lisp / Scheme
-- Haskell
-- SML / Ocaml
-** Rare and legacy tier
-- Perl
-- Cobol
Index: content/sitemap.org
===================================================================
--- content/sitemap.org	(revision bee54a6db092e168445ba71b6b5d003e96f9e8b0)
+++ content/sitemap.org	(revision cdbce2b5a3ae60133769ab7ee63dc7d450e6420b)
@@ -139,8 +139,6 @@
   - [[file:digarden/20210411121541-ahmia_fi.org][Ahmia.fi]]
   - [[file:digarden/20210411103715-спорт.org][Спорт]]
-  - [[file:digarden/20210411215334-записи_к_врачу.org][Записи к врачу]]
   - [[file:digarden/20210412061340-stumpwm.org][StumpWM]]
   - [[file:digarden/20210413013843-lambdachip.org][LambdaChip]]
-  - [[file:digarden/20210412224559-gnu_guix.org][20210412224559-gnu_guix]]
   - [[file:digarden/20210412185045-gnu.org][GNU]]
   - [[file:digarden/20210412061320-window_managers.org][Window Managers]]
@@ -217,5 +215,4 @@
   - [[file:digarden/20210414170132-события.org][События]]
   - [[file:digarden/20210413035207-xorg.org][Xorg]]
-  - [[file:digarden/20210413025536-воспроизводим.org][Воспроизводим]]
   - [[file:digarden/20210415015017-научные_статьи.org][Научные статьи]]
   - [[file:digarden/20210413162950-музыка.org][Музыка]]
@@ -357,5 +354,4 @@
   - [[file:digarden/20210513160328-джодж_буль.org][Джодж Буль]]
   - [[file:digarden/20210428012316-лямбда_куб.org][Лямбда-куб]]
-  - [[file:digarden/20210513224542-from_nand_to_tetris.org][20210513224542-from_nand_to_tetris]]
   - [[file:digarden/20210520204942-марксизм.org][Марксизм]]
   - [[file:digarden/20210428023206-как_сдать_егэ_буду_взрослым_человеком.org][Как сдать ЕГЭ, буду взрослым человеком]]
@@ -465,5 +461,4 @@
   - [[file:digarden/20220912174818-геометрия.org][Геометрия]]
   - [[file:digarden/20220907133224-управление_памятью.org][Управление памятью]]
-  - [[file:digarden/20220929033245-грузия_осень_2022.org][Грузия [Осень 2022]]]
   - [[file:digarden/20221003124347-полиморфизм.org][Полиморфизм]]
   - [[file:digarden/20220905144344-статья_будет_ли_работать_анархизм.org][Статья "Будет ли работать анархизм"]]
