Hi, I’m Dmitry — an engineering manager interested in learning and education. I blog on topics of programming languages, compilers, parsers and advanced JavaScript.

You can find my classes on dmitrysoshnikov.educaton school which I run and also on Udemy platform.

For the latest updates you can follow me on Twitter @DmitrySoshnikov, and can also explore my side projects on Github.

If you find this content helpful and useful, you may also [ support ] the project.

Feel free to message me in case of any questions on classes and don’t hesitate posting questions in comments on blog posts.

Have fun with studying compilers and deep JavaScript!

– Dmitry Soshnikov

Write a Comment



  1. Hi Dmitry! Could you get back navigation? It was very handy to navigate over ES3-5 sections with it πŸ˜‰

  2. Oh,the new design is too unfirendly for category!

  3. You should link all your ECMAScript chapters as a Table of Contents here on your About page.

  4. I love your ECMAScript chapters very much. But they are not firendly for me to navigate them.And I had a question.How do you learn javascript by some open source code, such as react, vuejs and so on.Any idea for me? This has confused me a long time.

  5. @bird, thanks, and yes, they navigation issue was mentioned previously, I’ll try to add the navigation menu soon. Re: open-source — read the code, and try building a simpler prototype of some tool, adding more complex feature on top of it.

  6. There are 2 persons in js community who able to explain complicated things in a simple understandable manner: Dan Abramov and Dmitry Soshnikov. Thank you for articles!

  7. On the subject of proper educator’s approach : YOU, my good man, are The Governor !
    / === the king/

    These by far are the best explanations on the subject of ECMAScript!
    Fully understandable and remembered with one pass.
    (And I have seen my share, in the long nights searching for a good view on the matter.)

    Thank you very much! Your work is well appreciated!

    P.S. Grammar πŸ˜€ can be a bitch, if one doesn’t have the ability to redact one’s comment.

  8. Dmitry, are you going to write update on ECMA-262-6 and next?
    Particularly interested in how lexical/variable environment works with block scope variables let/const.

  9. @artin, yeah, perhaps will publish some renewal for ES2018+, as a single article. The core is still the same as in ES3-5, just with different terminology.

  10. Hi Dmitry,

    My name is Bruno and I am a french JavaScript developer. I would say to you great thanks to you for your ES3 serie!

    I have translated in French some of your articles so I would notify you. Each article refers your original article for SEO and I mention you as the author of the original one naturally.

    You can catch this comment and not publish it here, it was for let you be aware of the translation of your work because I have not found your email address to contact you quickly. If you want add it as French translation in your original post, you can!

    I’m really impressed by your work and want really continue to discover ES5 serie and translate it!

    This is the list of translated articles:

    β€” 1. https://blog.lesieur.name/les-contextes-d-execution/
    β€” 2. https://blog.lesieur.name/l-objet-des-variables/
    β€” 3. https://blog.lesieur.name/la-valeur-de-this/
    β€” 4. https://blog.lesieur.name/la-chaine-des-portees/
    β€” 5. https://blog.lesieur.name/les-fonctions/
    β€” 6. https://blog.lesieur.name/les-fermetures/
    β€” 7.2 (first part) https://blog.lesieur.name/les-types/
    β€” 7.2 (second part) https://blog.lesieur.name/les-constructeurs-et-les-prototypes/
    β€” 8. https://blog.lesieur.name/la-strategie-d-evaluation/

    Thanks Dmitry!

  11. Thanks a lot, pretty easy language and giid explanation in the chapters…

  12. Hi Dmitry,

    Your articles are great. I should mention that your articles helps a lot for my frontend developer carreer. As @artin said i’m also waiting for block scoping rules for let/const.


  13. Hi :), thanks a lot for your site! It’s very useful, professional! πŸ™‚ Thank you again! πŸ™‚

  14. i guess it`s best blog about JavaScript i have ever seen. i would love to read more. would write any post about async, callback, promises, … ?

  15. Hi Dmitry,

    Any idea when will the remaining videos on Garbage collection will be uploaded?


  16. @Naveen, yes, I’ll need to prepare them for the video lectures format, and will be uploading soon the whole class.

  17. Dear Dmitry,
    I hope if you have had the time to upload the GC videos. I would be very much appreciated if you do so soon :).
    Kind Regards Abdy

  18. Very good job, such people as you and Ilia Kantor are the frontmen of Russian webdev education elite! Krasava! πŸ™‚

  19. Thanks for lecture Java Script core 2’d edition. Very helpful for me.

  20. Awesome articles, I really like them.

    There is one thing which is confusing, its related to the [[Scope]] property.
    In “Closures” section it is mentioned that `[[Scope]] contains that lexical environment (the parent variable object) in which function is created`.
    I think it more true to say that [[Scope]] property contains lexical environment(THE PARENT SCOPE CHAIN) rather than variable object. Because if it only contained parent variable object then nested inner function will eventually lose the link to the global variable object or parent variable object which is two steps deep.

    Bar.[[Scope]] is identical to the FooContext.Scope instead to the FooContext.AO

    Does that make sense?

  21. Great resources. I loved to read these thoroughly written articles. I’m going to share it with all my colleagues. Thank you for your work!

  22. I just saw your lesson about backtracking parsers. Maintaining a single backtracking point as in the video works only if you have only a single choice in you grammar, otherwise you’ll need a stick which also needs proper maintenance. Even your simple grammar works only by accident, because the different production just happen to set the backtracking point to the same location.

  23. @Michael, that is exactly correct, and great point. The purpose of the class is to give you an idea of the algorithms, and you should be able to extend it further as you mention.

  24. Hi Dmitry, I just started your Building a Programming Language from Scratch course (which is awesome!)… I’m new to compilers and interpreters, would you recommend a book to continue with my learning process on this topic? I’m mainly intereset in all the phases involved in creating transpilers. Thanks πŸ™‚

  25. @Andres, thanks for the feedback, glad you like the course. As for books, I like the “Engineering a Compiler” and for transpilers there will be a separate course where we build a transpiler from our language to JS.

  26. HI Dimtry,
    I did your course on programming language interpretation on Udemy and I was blown over. Any idea when you will be out with “VM implementation” course that you had advertised. I would be very keen on the course.


  27. @Shallu, thanks for the feedback, glad you liked the course! Yes, the VM course is a work in progress and is coming soon.

  28. Hi Dmitry,
    Glad to know it is coming soon. I am trying to learn compilers. Honestly I do not want to buy other compiler/vm courses until I have seen this one. Any eta, I can wait for a month, if that is not being pushy :-).

  29. Hey Shallu, thanks, yes, it’s a work in progress, however is not coming in the next month. I’d recommend in general getting more info from different sources on the topics your are interested in — this will allow having a broader picture. My team usually focuses on high-quality education, in the interactive manner, making short videos on the topics, so it’s easier to follow and understand.

  30. Thank you for excellent content. I look forward to the VM course.

    For whatever it’s worth, I would love to see a course on Type Checking and Operating System fundamentals.

    Keep up the great work.

  31. @Mark Karavan: thanks for the feedback, glad you liked the course. And yes, VM course is coming soon. Type Checker may follow.

  32. Hi Dmitry ,
    I really liked your course at packtpub on garbage collection.
    Any idea when you would be coming out with your course on bytecode interpreter/ VM implementation. Since i have subscription on packtpub, wanted to know if it will be available there.

  33. @Shivani: thanks for the feedback, glad you liked the course. The VM course is a work in progress, and will be coming next later this year.

  34. Hi Dmitry,

    Will you be offering any courses on RegExp in Raku (a.k.a. Perl6)? I am told it is very advanced engine.


  35. Hi, I will be buying all of your courses and I have a question. What order is the best to watch them? Are there any prerequisites before starting each course? For example, would it be better to learn Assembly before?

  36. Hi, i bought build a parser and build an interpreter course bundle. Which order should i watch?

  37. @Yves — thanks, I would start from the interpreters and then get back to parsing. This is an opposite approach to “classic” compilers class, however I believe before parsing it’s better to grasp the runtime systems and see how a language works under the hood.

  38. Hi Dmitry,

    First thanks for sharing all your courses!

    I was interested in building Abstract Binding Trees (ABTs) instead of ASTs for my machine learning applications. I was wondering if you had any pointers on how to build a parser for that or what course you recommend to watch as a starting point to learn which parser you think would be easiest to extend for that. Thanks again!

  39. Hi Dmitry,
    Would you be able to tell when(which month if possible) can we expect your virtual machine course. Am running out of patience πŸ™‚ as I remember you talked about in your “interpreter from scratch” course.

  40. @Trini: thanks for the interest and the feedback, glad you liked the course. Currently due to my main schedule, the VM course is delayed, and is planned for end of the year.

  41. @Brando Miranda, thanks for the interest. Yeah, for ABTs I would look into existing parser implementations on Github and other sources, and also reading related wikis and papers.

  42. Hi. I am trying to learn how to build a tool to parse YAML files from scratch. Will your course(s) help with this?

  43. Hi Dmitry, which courses are required for writing a DSL?