Return Zero

The Sewing Machine Motor Scam: Why High Speed Motors Keep Failing You

Lately, my day job has become an exercise in pure abstraction. With AI taking over the granular and creative execution, my role shifted entirely to orchestrating high level systems. While intellectually demanding, being the architect left me feeling detached from the actual joy of making things. I needed an unforgiving and physical medium to clear […]

What’s worse than an N+1: Accidental Cartesian Products

Object-Relational Mapping (ORM) tools are widely used in modern web development for their convenience in database interactions. However, they can sometimes lead to unexpected and severe performance issues. One such issue is the generation of queries that result in cartesian products, potentially returning an enormous number of rows. Understanding the Cartesian Product Problem A cartesian […]

Six Months Without Sight: The Hardest Technical Challenge I’ve Ever Faced

I was out for a Saturday morning jog, headphones in, doing my usual loop through the park. There was this group of kids messing around with those cheap plastic bow-and-arrow toys. One kid (maybe nine) got a bit too excited, yanked the string back hard, and let it rip. The arrow went way off course […]

LISPy-JSON 7: Support recursion in an interpreter

This post is a continuation of LISPy-JSON Part 1, Part 2, Part-3, Part-4, Part-5 and Part-6, you should read these prior to reading the current post. We already have the capability of defining and calling functions, but we do not have the ability to resolve functions and variables defined in the parent or grand parent scope. We will limit ourselves […]

LISPy-JSON 6: Implement functions in an interpreter

This post is a continuation of LISPy-JSON Part 1, Part 2, Part-3, Part-4 and Part-5 you should read these prior to reading the current post. To implement functions, the first thing we would need is to design a syntax for our function declaration. Functions usually have three things, a function name, a list of arguments and the function body. The […]

LISPy-JSON 5: Implement If-Else in an interpreter

This post is a continuation of LISPy-JSON Part 1, Part 2, Part-3 and Part-4 you should read these prior to reading the current post. If-else is nothing but an extension of functions that implement binary operators. With a binary operator you evaluate the two expressions and operate on the result. With the If-Else statement, you have three expressions: […]

LISPy-JSON 4: Comparison and Boolean operators in an Interpreter

Note: This post is a continuation of LISPy-JSON Part 1, Part 2 and Part-3, you should read these prior to reading the current post. Comparison and Boolean Operators are very simple to implement in our Interpreter’s model, If you remember how we implemented binary operators like +, – and so on, These would follow a […]

LISPy-JSON 3: Variables and State in Interpreters

This post is a continuation of LISPy-JSON Part 1 and Part 2. Most programming language support some way of referring to data in memory, we call them variables. Javascript syntax looks like the following: But instead of the ‘let’ keyword, we will use the ‘def’ (define) keyword, This is just so that it looks a […]

LISPy-JSON 2: Expressing Expressions in Interpreters

If you haven’t read the first part, please do so before reading this. In the previous post, we created an interpreter that implemented a print function but it could only print static text or numbers but could not print a calculation like, print 3+5 From now on, we will call all calculations like 3+5, 2+3, […]

LISPy-JSON: My second attempt at explaining Interpreters

I wrote a previous post trying to explain a virtual machine interpreter, but I feel I did not explain it in a simple enough manner and the primary reason for that was due to my limited understanding of these topics at the time, thus it ended up being a bit more convoluted than I intended […]

Back to top