
Software engineers use programming languages every day, but few of us understand how those languages are designed and implemented. Crafting Interpreters gives you that insight by implementing two complete interpreters from scratch. In the process, you'll learn parsing, compilation, garbage collection, and other fundamental computer science concepts. But don't be intimidated! Crafting Interpreters walks you though all of this one step at a time with an emphasis on having fun and getting your hands dirty.
Another really good book is "Crafting Interpreters".
My name is Johny Georges and I would like to present Jet, a C-like general purpose programming language. It's currently in alpha so I wouldn't recommend using it in a professional environment.
Here are some quick facts about it: - it supports both OOP and functional programming paradigms - the syntax is similar to Typescript and Swift - arrays and strings are dynamic - memory is automatically managed for you - you have full control over how values get passed around (by value or by reference)
In anticipation of the typical questions that come with creating and publishing a new programming language, I've authored an FAQ that's available in the repo. I will also be around today to answer any other questions that come up.
FAQ: https://github.com/JetJet13/Jet/blob/main/FAQ.md
Special thanks to Robert Nystrom for authoring 'Crafting Interpreters' and making it available for free, what a guy! I also want to give props to Chris Lattner & Vikram Advethe for creating LLVM. What an impressive piece of kit!
But that's not the point; the point is understanding these things better by seeing how they are made (or grown, if you prefer). Building something at a level further down the stack than you will ever go forces you to confront details that shape the layers above that you do deal with. This is one reason why Crafting Interpreters is such a beloved book here on HN.
LLMs are now at the core of tools we all use everyday... don't you want to know how they are made? Maybe not everyone has this itch to understand the platforms and tools they use, but I sure do, and it's helped me over and over again. Sure, LLMs aren't like operating systems or compilers. They're a quasi-organic mass of billions of parameters learned during training and honestly nobody (not even the mech interp folks) really deeply understands why they work so well. But that's no reason to completely give up and there is still a lot you can learn.
Take RLVR ("Reinforcement Learning from Verifiable Rewards"). This is the training technique that made LLMs get so good at programming and math in 2025 and 2026. A lot of people who confidently talk about LLM capabilities either haven't heard of it (and thus end up parroting out-of-date factoids about LLM training derived from the pre-2025 era) or have only a very dim idea of what it is. In this course you actually do RL training of an LLM to get it solving math problems better. You're right down in the details. It's interesting for its own sake but it will also give you a grounding for discussing questions such as: "why did LLM writing get so weird and bad in mid-2026?" and "why is it so hard to train LLMs to be good at things that aren't like math and programming?"
Anyway, Sebastian's two books are great and highly recommended; I worked through the first one a year ago and it was one of the best investments of my time in all of 2025. If you prefer video for learning this is great as well (although I'd still say - try the books first).
Objo Studio is my attempt to build a modern version of the kind of development environment I grew up enjoying: Visual Basic, REALbasic/Xojo, Delphi, etc. You visually design an interface, add event handlers and write code, without needing to understand complex frameworks before you can put a button on a window.
The big change since I last posted is that Objo can now build both *desktop and web applications* from the same IDE. Desktop applications target macOS, Windows and Linux.
Objo also has its own object-oriented programming language. Underneath it is a hand-crafted stack-based virtual machine (written in .NET), while the IDE and desktop UI framework uses Avalonia. Performance has been an important part of the project from the beginning: I want editing, compiling and running an application to feel immediate rather than having the development environment get in the way. Big shout out to Bob Nystrom for his Crafting Interpreters book which got me interested in compilers and interpreters in the first place.
The language is deliberately conventional. Classes, methods, properties, inheritance, enumerations, exceptions, collections and so on should all feel familiar if you’ve used languages such as BASIC, C# or similar. I’m not trying to invent a new programming paradigm - the goal is to make building small and medium-sized applications enjoyable and quick.
One of the nicest parts of working on it has been having a small group of people actually using it. Quite a few features and fixes have come from someone reporting a problem or saying "this workflow is awkward", and because the project is still small I'm able to turn those around fairly quickly.
Objo is obviously nowhere near as mature as tools that have been around for decades, and there are still plenty of things I want to add. But it has reached the point where people are building real applications with it, rather than it just being a language/IDE experiment.
I’m particularly interested in whether there is still a place for *visual RAD development* today, especially in the world of Vibe Coding. My feeling is that there are still people who enjoy crafting their code visually. I've been using it to teach my teenage daughter to code and she really likes it :)
If that idea interests you, I’d be very interested in any feedback.
Objo Studio: https://objo.dev