×
Home Discussions Write at Opengenus IQ
×
  • DSA Cheatsheet
  • HOME
  • Track your progress
  • Deep Learning (FREE)
  • Join our Internship 🎓
  • RANDOM
  • One Liner

Erick Lumunge

Erick is a passionate programmer with a computer science background who loves to learn about and use code to impact lives positively.

Nairobi •
241 posts •
Blockchain

Ethereum's Four Development Stages

In this article, we look at the birth of the Ethereum blockchain network and the four major development stages.

Erick Lumunge
Blockchain

Merkle Trees and SPVs in Bitcoin

In this article, we learn about Merkle trees and simplified payment verification and how the two relate to each other.

Erick Lumunge
Blockchain

7 Components of Ethereum

In this article, we learn about the 7 different components of Ethereum such as Transactions, Consensus Rules, Consensus Algorithms and much more.

Erick Lumunge
Blockchain

Ethereum Multiple Choice Questions [for Interviews]

In this article, we test our understanding of Ethereum with 60 multiple choice questions.

Erick Lumunge
Python

Python Multiple Choice Questions

In this article, we test our Python Knowledge by going through 50 Multiple Choice Questions.

Erick Lumunge
Blockchain

Components of a Blockchain

In this article, we learn about Ethereum, the differences between Ethereum and Bitcoin, and a look at the general components that make up a blockchain.

Erick Lumunge
Compiler Design

Add support of Debugging: DWARF, Functions, Source locations, Variables

In this article, we continue to discuss other aspects involved with debugging and debugging information in Kaleidoscope. We discuss how to include function definitions, source locations, and variable locations in debug information.

Erick Lumunge
Compiler Design

Building a Compiler Front-End

The front-end of a compiler comprises four phases, source code is converted from high-level code to an intermediate representation which is optimized and compiled to machine code.

Erick Lumunge
Compiler Design

Add debugging support in Programming Language

A good programming language should also be able to support debugging and debug information. In this article, we add support for debugging and debug information.

Erick Lumunge
Compiler Design

Bootstraping a Compiler

Bootstrapping a compiler involves producing a self-compiling compiler, that is, we write a compiler using language A that produces code for target machine B and can still compile itself.

Erick Lumunge
Compiler Design

Compiling LLVM IR to Object Code

We have seen how to implement the Kaleidoscope programming language, from source code to an LLVM IR to optimization to implementing a JIT compiler and implementing further extensions. In this article, we will compile the LLVM IR into object code.

Erick Lumunge
Compiler Design

Variable Mutation in Kaleidoscope

Mutation in programming languages involves the ability to change an object. In this article, we further extend our language, we add to it the ability to define new variables and mutate them.

Erick Lumunge
Compiler Design

How to compile a compiler? [Bootstrapping]

In this article, we will learn the process and types of bootstrapping. Bootstrapping involves using compilers to compile other compilers or themselves.

Erick Lumunge
Compiler Design

LLVM Memory and SSA

In this article, we learn all about SSA and LLVM memory and how the two are related.

Erick Lumunge
Compiler Design

User-defined Operators in Kaleidoscope

User-defined operators take in a set of operands as input and return a result. We want to support functionalities such as division, logical negation, comparisons, etc.

Erick Lumunge
Compiler Design

If-then-else in LLVM Control Flow

Control flow statements are statements used to change the flow of execution of the program. In this article, we extend Kaleidoscope to include control flow operations such as if-then-else statements.

Erick Lumunge
Compiler Design

For loops in LLVM Control Flow

In programming, we use loops to repeat a sequence of instructions until a specified condition is met. In this article, we further extend Kaleidoscope to support for loops.

Erick Lumunge
Compiler Design

Implementing JIT (Just In Time) Compilation

JIT(Just in Time) compilation involves transforming bytecode into machine executable instructions bytecode. In this article, we will implement a JIT to our Kaleidoscope interpreter.

Erick Lumunge
Compiler Design

LLVM Compiler Optimization

Code optimization transforms an LLVM IR to code that consumes fewer resources such as memory. In this article, we will learn how to apply different compiler optimizations to the LLVM IR produced.

Erick Lumunge
Linux

Installing VNC Server in Rocky Linux 8

VNC(virtual network computing) is a screen-sharing client-server system. System administrators and support staff use it to troubleshoot issues on a remote computer without physically being there. VNC applications include TeamViewer, Anydesk, TigerVNC, TightVNC, etc.

Erick Lumunge
Linux

Installing Angular.js on Ubuntu

AngularJs is a Javascript framework. With it, we can build scalable single-page applications(SPAs) using HTML and Typescript. It was developed and is currently being maintained by Google. We learn how to install Angular in Ubuntu.

Erick Lumunge
Linux

Installing PHP Composer on Rocky Linux 8

PHP composer is an open-source application-level package manager for managing application dependencies and libraries used during PHP development. We learn how to install composer in Rocky Linux.

Erick Lumunge
Compiler Design

Constructing a Parser in Compiler Design

In this article we will be constructing a recursive descent parser for the Kaleidoscope programming language.

Erick Lumunge
Compiler Design

Compiler Front-end: Building a lexer

We will build a lexical analyzer for the Kaleidoscope programming language which converts source code into tokens. This is the first program to interact with the source during compilation.

Erick Lumunge
Compiler Design

LLVM: IR, Assembly, SSA

This is an introduction to LLVM intermediate code which is low level but still human-readable along with Assembly and Static Single Assignment (SSA).

Erick Lumunge
OpenGenus IQ © 2025 All rights reserved â„¢
Contact - Email: team@opengenus.org
Primary Address: JR Shinjuku Miraina Tower, Tokyo, Shinjuku 160-0022, JP
Office #2: Commercial Complex D4, Delhi, Delhi 110017, IN
Top Posts LinkedIn Twitter
Android App
Apply for Internship