Skip to content

Madin: Ibrahim Najjar's blog

  1. Swervo

    Security, API Keys, ideas and dead ends

  2. Cross Wails

    Wails, Golang, CGO and Cross Compilation

  3. Monty Hall Problem

    Even after learning so much about probability, my intuition still fails me! Does yours too? Let's explore the problem once more and try to see if we can fix it!

  4. In this series of posts, we will be building, in Rust, a super tiny programming language from scratch. We will do it end to end including basic VSCode integration support through a language server, and, even native code generation through LLVM

    1. 01 Introduction What is NTLC, and, what are we building exactly?
    2. 02 Lexer The lexer is the first step in the compilation process. It takes the source code and converts it into a stream of tokens.
    3. 03 Parser The parser is the second step in the compilation process. It takes the stream of tokens and converts it into an Abstract Syntax Tree (AST).
    4. 04 Type Checker The type checker is the third step in the compilation process. It takes the AST and checks that the types are correct.
    5. 05 Language Server Protocol The Language Server Protocol (LSP) is a protocol for enabling language features in text editors.
    6. 06 Code Generation The code generator is the fourth step in the compilation process. It takes the AST and converts it into LLVM IR.