<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Geremi Wanga</title>
    <description>The latest articles on DEV Community by Geremi Wanga (@geremi-me).</description>
    <link>https://dev.to/geremi-me</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3720740%2F4133c6f4-31e9-4444-86ab-e75c407ef42b.jpg</url>
      <title>DEV Community: Geremi Wanga</title>
      <link>https://dev.to/geremi-me</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/geremi-me"/>
    <language>en</language>
    <item>
      <title>Demystifying The Lexer</title>
      <dc:creator>Geremi Wanga</dc:creator>
      <pubDate>Wed, 29 Jul 2026 14:32:29 +0000</pubDate>
      <link>https://dev.to/geremi-me/demystifying-the-lexer-5e6o</link>
      <guid>https://dev.to/geremi-me/demystifying-the-lexer-5e6o</guid>
      <description>&lt;p&gt;The Pipeline Behind compiling software can be challenging to grasp... I'll try to break it down as much as i can&lt;/p&gt;

&lt;p&gt;First of all the full pipeline looks something like this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;source code → [Lexer] → tokens → [Parser] → AST → [Semantic Analysis] → annotated AST → [LLVM IR] → optimized IR → machine code
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  The Lexer
&lt;/h3&gt;

&lt;p&gt;The lexer's job is more mechanical. It's also known as the tokenizer.&lt;br&gt;
It reads code character by character dividing it into small items known as tokens which are small chunks of a program, Take this as an example:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;let x = 3 + 4;&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;As raw text, that's just a sequence of characters&lt;br&gt;
&lt;/p&gt;

&lt;p&gt;&lt;code&gt;l, e, t, a space, x, and so on.&lt;/code&gt;&lt;br&gt;
&lt;/p&gt;

&lt;p&gt;The lexer's job is to turn that into a clean stream of tokens:&lt;/p&gt;

&lt;p&gt;After analysis from the lexer:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;KEYWORD(let)  IDENT(x)  EQUALS  NUMBER(5)  PLUS  NUMBER(3)  SEMICOLON&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Notice that the white space disappeared this is because after analysis they are not needed &lt;/p&gt;

&lt;p&gt;Another thing is each chunk or Token got tagged with what kind of a token or type it is &lt;/p&gt;

&lt;p&gt;One more thing i found interesting about the lexer is  that is uses &lt;em&gt;Regular Expressions (regex)&lt;/em&gt; &lt;/p&gt;

&lt;p&gt;But how?&lt;br&gt;
you might ask&lt;/p&gt;

&lt;p&gt;Simple, The lexer uses it to convert raw character sequences into tokens which are then passed to a passer to verify against the BNF/EBNF which are &lt;em&gt;formal notations systems used to define the syntax of grammar of programming languages&lt;/em&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;RAW TEXT INPUT: "if ( x &amp;gt; 10 )"
              │
              ▼
 ┌─────────────────────────┐
 │         LEXER           │ ◄── Powered by REGEX (Matches individual character patterns)
 └─────────────────────────┘
              │
              ▼ TOKENS: [KEYWORD("if"), LPAREN, IDENTIFIER("x"), GT, NUMBER(10), RPAREN]
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;&lt;br&gt;
plaintext&lt;/p&gt;
&lt;h3&gt;
  
  
  The Parser
&lt;/h3&gt;

&lt;p&gt;The parser also knows as a tree builder it builds a tree structure that captures how they relate to each other &lt;strong&gt;the (AST)&lt;/strong&gt;, the abstract syntax tree&lt;/p&gt;

&lt;p&gt;How does the parser build a tree lets see&lt;/p&gt;

&lt;p&gt;A token stream on it's own has no structure &lt;/p&gt;

&lt;p&gt;&lt;code&gt;[KEYWORD("if"), LPAREN, IDENTIFIER("x"), GT, NUMBER(10), RPAREN]&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;The parser builds the tree by consuming the tokens outputted by the lexer&lt;/p&gt;

&lt;p&gt;But it does this step by step,&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;Lexical analysis, Code text is split into small&lt;br&gt;
pieces called tokens &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Grammar, it reads these tokens to make sure they follow the strict rules of the language used&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Node creation, The parser builds memory objects for operations, variables and statements linking them together into a &lt;em&gt;TREE&lt;/em&gt; shape &lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;If we had this as an example&lt;br&gt;
&lt;code&gt;3 + 2 * 5&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;In the end we will have this as the tree&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;       / \
      3   *
         / \
        2   5
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;&lt;br&gt;
plaintext&lt;/p&gt;
&lt;h3&gt;
  
  
  Semantic Analysis
&lt;/h3&gt;

&lt;p&gt;Maybe you've heard of it before in Natural Language Processing (NLP) it refers to resolving meaning and ambiguity in natural language like figuring out if rock means a stone or music genre.&lt;/p&gt;

&lt;p&gt;In compilers, it means something narrower and less fuzzy&lt;/p&gt;

&lt;p&gt;The AST from the parser only tells you the code is grammatically valid it doesn't know whether &lt;code&gt;x&lt;/code&gt; was declared before it's used or whether you're trying to add a string to an integer.&lt;/p&gt;

&lt;p&gt;Sematic analysis does this:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Type checking&lt;/strong&gt; is &lt;code&gt;x + y&lt;/code&gt; valid if x is an &lt;code&gt;int&lt;/code&gt; and y is a &lt;code&gt;string&lt;/code&gt; it might &lt;strong&gt;Parse&lt;/strong&gt; but its still a semantic error&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Scope resolution&lt;/strong&gt; was x actually declared before this line uses it? if there are nested scopes which x does this one refer to?&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Declaration&lt;/strong&gt; calling a function with the wrong number of arguments referencing undeclared variable&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;
  
  
  LLVM and LLVM IR
&lt;/h3&gt;

&lt;p&gt;LLVM was probably the most complex bit of this expedition one thing i noticed is &lt;/p&gt;

&lt;p&gt;LLVM doesn't know or care about your language.&lt;/p&gt;

&lt;p&gt;It's a reusable, language agnostic backend for code generation and optimizing Frontends for C, C++, Rust, Swift and many more funnel into it your job as a language author is to translate your AST into LLVM IR&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Front-end (Clang, Rust, your language) → LLVM IR → Back-end (x86, ARM, RISC-V, WASM)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;&lt;br&gt;
plaintext&lt;/p&gt;

&lt;p&gt;Back then before LLVM adding a new language or creating your own language with good performance meant writing your own optimizer and codegen for every architecture as unbelievable as that sounds its true.&lt;/p&gt;

&lt;p&gt;LLVM turns that N * M problem (language * architecture) into N + M write the optimizations once and they benefit every language &lt;/p&gt;

&lt;p&gt;I also wondered what the IR looked like something like this&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;; Declare the global string constant containing "Hello, World!\n"
@.str = internal constant [15 x i8] c"Hello, World!\0A\00"

; Declare the external printf function signature
declare i32 @printf(ptr, ...)

; Define the main function entry point
define i32 @main() {
entry:
    ; Call printf by passing a pointer to the string
    %call = call i32 (ptr, ...) @printf(ptr @.str)

    ; Return 0 to indicate successful execution
    ret i32 0
}

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



</description>
      <category>compiling</category>
      <category>c</category>
      <category>computerscience</category>
      <category>architecture</category>
    </item>
    <item>
      <title>Polymorphism</title>
      <dc:creator>Geremi Wanga</dc:creator>
      <pubDate>Sat, 23 May 2026 08:03:00 +0000</pubDate>
      <link>https://dev.to/geremi-me/polymorphism-3fo7</link>
      <guid>https://dev.to/geremi-me/polymorphism-3fo7</guid>
      <description>&lt;p&gt;In the last post we talked about encapsulation today we are getting into polymorphism. &lt;/p&gt;

&lt;h2&gt;
  
  
  An analogy
&lt;/h2&gt;

&lt;p&gt;so we have our houses right. We have a stone house, a brick house, a beach house. They are all houses. But if you asked each one to describe itself, each one would describe itself differently. &lt;/p&gt;

&lt;p&gt;The beach house mentions the deck, the brick house mentions the bricks, the stone house mentions the stone.&lt;/p&gt;

&lt;p&gt;Same question, different answers. That's polymorphism.&lt;br&gt;
The word itself just means many forms. In Java the same method can behave differently depending on which object is calling it&lt;/p&gt;

&lt;p&gt;We can have a describe method on the parent house class and every child class can override it to describe itself in its own way. &lt;/p&gt;

&lt;p&gt;You call the same method, you get different results based on what you're actually dealing with.&lt;/p&gt;

&lt;h2&gt;
  
  
  But why
&lt;/h2&gt;

&lt;p&gt;imagine you have a whole neighbourhood of different houses and you want each one to describe itself. Without polymorphism you'd have to know exactly what type of house each one is and handle each separately. &lt;/p&gt;

&lt;p&gt;With polymorphism you just say describe yourself and each house handles it on its own terms. Your code stays clean, you don't have to think about every possible case.&lt;br&gt;
It all connects&lt;/p&gt;

&lt;p&gt;This is where everything we've covered starts clicking together. You have a parent class, child classes inheriting from it, fields locked down through encapsulation, and now methods that behave differently depending on who's calling them. &lt;/p&gt;

&lt;p&gt;These aren't separate ideas, they're all working together.&lt;br&gt;
The more i go through Java the more i realize these concepts aren't things you just learn and move on from. &lt;/p&gt;

&lt;p&gt;They keep showing up together, building on each other, which honestly makes them easier to remember the further in you get.&lt;/p&gt;

&lt;p&gt;At this point Java is just becoming my second language &lt;/p&gt;

</description>
      <category>java</category>
      <category>oop</category>
    </item>
    <item>
      <title>You can't see me</title>
      <dc:creator>Geremi Wanga</dc:creator>
      <pubDate>Fri, 22 May 2026 08:45:55 +0000</pubDate>
      <link>https://dev.to/geremi-me/you-cant-see-me-1gfl</link>
      <guid>https://dev.to/geremi-me/you-cant-see-me-1gfl</guid>
      <description>&lt;p&gt;In the last we talked about inheritance today we are getting into encapsulation&lt;/p&gt;

&lt;h2&gt;
  
  
  Encapsulation
&lt;/h2&gt;

&lt;p&gt;So we have our house right. Now imagine you have a boiler room in that house the boiler controls the heating and hot water for the whole house. &lt;/p&gt;

&lt;p&gt;You don't want just anyone walking in there and messing with it. So you lock the door. &lt;/p&gt;

&lt;p&gt;But you still need a way to control the heating so you put a thermostat on the wall, anyone can use the thermostat but nobody can get directly to the boiler.&lt;/p&gt;

&lt;p&gt;Thats encapsulation.&lt;br&gt;
In Java you can hide the fields of a class from the outside, make them private so nothing outside that class can directly touch them&lt;/p&gt;

&lt;p&gt;But you still provide a way to interact with them through methods. Those methods are called getters and setters. Getters let you read the value, setters let you change it.&lt;/p&gt;

&lt;h2&gt;
  
  
  But Why
&lt;/h2&gt;

&lt;p&gt;Because direct access is dangerous. If anything in your program can just reach into a class and change its fields directly, things break in ways that are hard to track down. &lt;/p&gt;

&lt;p&gt;Encapsulation puts you in control. You decide what can be seen, what can be changed and how.&lt;/p&gt;

&lt;p&gt;You are the one setting the rules&lt;br&gt;
That's really what encapsulation is about. You built the house, you decide which rooms are locked and which ones are open. &lt;/p&gt;

&lt;p&gt;The thermostat is there for a reason it's a controlled way in. The more i learn Java the more i see that a lot of these concepts are really just about control and structure. &lt;/p&gt;

&lt;p&gt;Encapsulation is probably the clearest example of that.&lt;br&gt;
These are just more things i'm picking up as i go. Analogies make it stick better than any definition ever could.&lt;/p&gt;

</description>
      <category>java</category>
      <category>oop</category>
      <category>beginners</category>
    </item>
    <item>
      <title>Hand me down an object</title>
      <dc:creator>Geremi Wanga</dc:creator>
      <pubDate>Thu, 21 May 2026 21:03:55 +0000</pubDate>
      <link>https://dev.to/geremi-me/hand-me-down-an-object-1g9j</link>
      <guid>https://dev.to/geremi-me/hand-me-down-an-object-1g9j</guid>
      <description>&lt;p&gt;In my last post we were looking at classes..&lt;br&gt;
but today we will get into an concept of an object &lt;strong&gt;Inheritance&lt;/strong&gt; &lt;/p&gt;

&lt;h2&gt;
  
  
  Objects
&lt;/h2&gt;

&lt;p&gt;An object is an instance of a class. Remember we had a blueprint and an actual house using that blueprint we build a house (object) funny thing is you can build as many houses as you want with the same blueprint this is how object work&lt;/p&gt;

&lt;h2&gt;
  
  
  Inheritance
&lt;/h2&gt;

&lt;p&gt;Now what if you wanted to build a house but of different kinds for example stone built house or a brick house &lt;br&gt;
a brick house can have the same thing that the stone house has for example the floors, tiles and even color but it has extra things on top like &lt;em&gt;Bricks&lt;/em&gt; instead of &lt;em&gt;Stone&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;But if you already have a blue print for a stone house we don't need to create another separate print for creating a brick house because there's so much information (fields) and even functions (methods) that both the brick and stone house have of course here is where &lt;strong&gt;Inheritance&lt;/strong&gt; Comes in.&lt;/p&gt;

&lt;p&gt;In Java a class can inherit everything from another class here there is a child class and a parent class.&lt;/p&gt;

&lt;p&gt;Without inheritance we'll be rewriting the same blueprints all the time.&lt;/p&gt;

&lt;p&gt;With inheritance we can stand on what already exists modify it to work a little differently like add a few rooms in the brick house from the stone house. Even overwrite a method by changing what it does instead of rebuilding from the ground up again.&lt;/p&gt;

&lt;p&gt;The more I learn Java the more i did deeper into Object oriented programming and how things can be connected&lt;/p&gt;

&lt;p&gt;Inheritance is a means of connection of classes. Classes either build on top of one another or they relate to each other. The child knows what the parent knows like a hand me down of methods an fields.&lt;/p&gt;

&lt;p&gt;This is what I think in Java in general everything is connected to something else there is no such thing as separate concepts something can be connected to something else&lt;/p&gt;

</description>
      <category>java</category>
      <category>oop</category>
      <category>beginners</category>
    </item>
    <item>
      <title>Settle in Class</title>
      <dc:creator>Geremi Wanga</dc:creator>
      <pubDate>Thu, 21 May 2026 20:14:58 +0000</pubDate>
      <link>https://dev.to/geremi-me/settle-in-class-362h</link>
      <guid>https://dev.to/geremi-me/settle-in-class-362h</guid>
      <description>&lt;p&gt;In regular Object oriented programming for example in JavaScript It's is Prototype based way meaning it uses objects that inherit directly from other objects.&lt;/p&gt;

&lt;p&gt;Java does things differently. Unlike other object oriented languages Java is class based not prototype based meaning everything you write in Java lives inside of a class.&lt;/p&gt;

&lt;p&gt;What does that mean?&lt;/p&gt;

&lt;h2&gt;
  
  
  Class
&lt;/h2&gt;

&lt;p&gt;A class is like a blueprint you use before you build a house, You will build a house using this blueprint later on &lt;br&gt;
and the house is what we define as an object &lt;/p&gt;

&lt;h2&gt;
  
  
  What does a class know
&lt;/h2&gt;

&lt;p&gt;Here is where we introduce something inside the class called a field. A field going back to our previous analogy is like describing the house or object for example color of the house number of rooms things of the sort&lt;/p&gt;

&lt;h2&gt;
  
  
  Constructors
&lt;/h2&gt;

&lt;p&gt;When you need people to start working on the house before you get in you can tell them or not once you give them the plan (class) and information about the house (fields) they'll get to work even without telling them anything &lt;br&gt;
The same thing happens with constructors when you create an object a constructor runs automatically.&lt;/p&gt;

&lt;p&gt;The constructor is to get everything ready even before the start. Instead of going piece by piece it does everything once at the beginning&lt;/p&gt;

&lt;h2&gt;
  
  
  Methods
&lt;/h2&gt;

&lt;p&gt;The methods inside a class are the ones that give your class behavior. They act like functions defined inside of a scope and you can only access those function by referencing the scope they are in. in our analogy a method is like a field that performs tasks with the data for example a method that calculates the area of the house sits in&lt;/p&gt;

&lt;p&gt;These are just some of the few concepts i learned in Java i try using analogies and associate them to real life so i can remember them later on..&lt;br&gt;
class dismissed&lt;/p&gt;

</description>
      <category>java</category>
      <category>oop</category>
      <category>classes</category>
    </item>
    <item>
      <title>Windows Wearing Hoodies</title>
      <dc:creator>Geremi Wanga</dc:creator>
      <pubDate>Thu, 21 May 2026 14:07:43 +0000</pubDate>
      <link>https://dev.to/geremi-me/linux-on-windows-litterally-2anm</link>
      <guid>https://dev.to/geremi-me/linux-on-windows-litterally-2anm</guid>
      <description>&lt;p&gt;Back then before 2016 people always saw linux users..&lt;br&gt;
They wore hoodies and they looked happy because of how free they were. They got jealous and so Microsoft invested a significant amount of resources in creating a virtual environment inside windows that runs linux commands and is executed by the windows operating system this was WSL 1&lt;/p&gt;

&lt;p&gt;First they started with the idea of having a windows command translated directly into &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fpyofhsbb2zo4gvn55uvc.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fpyofhsbb2zo4gvn55uvc.png" alt=" " width="800" height="600"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Fast forward, and now we have WSL 1 and WSL 2&lt;/p&gt;

&lt;p&gt;But have you Ever wondered what happens when you run Linux commands via WSL? Let’s break it down.&lt;/p&gt;

&lt;p&gt;In one of last posts i explained the concept of a system call and the journey from shell all the way to the hardware&lt;/p&gt;

&lt;p&gt;A system call is how a program asks the operating system to do something for it.&lt;/p&gt;

&lt;p&gt;The first one uses a system call translation layer converts Linux system calls into Windows kernel calls.&lt;br&gt;
This interestingly works without any need for a Virtual machine.&lt;br&gt;
The only problem with WSL1 was poor file system performance&lt;br&gt;
But still It was proved to be possible&lt;/p&gt;

&lt;p&gt;Then the Second Came for this one it actually runs a real Linux kernel inside a lightweight Hyper V Virtual Machine.&lt;br&gt;
Linux commands execute here without any traslation layer with full system call support. Crazy right&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fsy4x1ertkxvtlsr7b5tt.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fsy4x1ertkxvtlsr7b5tt.jpg" alt=" " width="798" height="448"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;fun thing about wsl2 is it Supports Docker containers&lt;/p&gt;

</description>
      <category>linux</category>
      <category>microsoft</category>
      <category>systems</category>
      <category>shell</category>
    </item>
    <item>
      <title>JavaC</title>
      <dc:creator>Geremi Wanga</dc:creator>
      <pubDate>Thu, 21 May 2026 13:35:05 +0000</pubDate>
      <link>https://dev.to/geremi-me/javac-kep</link>
      <guid>https://dev.to/geremi-me/javac-kep</guid>
      <description>&lt;p&gt;Normally languages like C and C++ compile their code directly into machine code to be executed by the machine.&lt;/p&gt;

&lt;p&gt;This machine code is specific to the machine and operating system you are executing in and sometimes it may not work.&lt;/p&gt;

&lt;p&gt;Now here's why JavaC is better than GCC or any C compiler.&lt;/p&gt;

&lt;p&gt;Java has an intermediate step during compiling it.&lt;br&gt;
It converts Java file into another human readable .java file into &lt;strong&gt;ByteCode&lt;/strong&gt; which is a format that is neutral and readable across many operating systems unlike GCC.&lt;/p&gt;

&lt;h2&gt;
  
  
  JVM
&lt;/h2&gt;

&lt;p&gt;This is Java's virtual machine.. In my last post we saw how an command is taken from shell all the way to the kernel to the Hardware using a &lt;strong&gt;system call&lt;/strong&gt; now instead of this we execute the code using this virtual machine called &lt;strong&gt;JVM&lt;/strong&gt; now this sits on top  the operating system&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F3mvp0r1gf8i8yj9o9udm.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F3mvp0r1gf8i8yj9o9udm.jpg" alt=" " width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;But how? There is a specific jvm version for all operating systems for almost all operating systems Now the jvm converts this byte code into machine code that the specifc machine understands or system calls that the machine can use&lt;/p&gt;

&lt;h2&gt;
  
  
  Evolving
&lt;/h2&gt;

&lt;p&gt;&lt;em&gt;The concept of build once run anywhere&lt;/em&gt; has now evolved tools like docker and other containerization platforms have adopted this principle and have used it to build working applications that run anywhere&lt;/p&gt;

&lt;p&gt;In the next post we are going to dig deeper into virtual machine and the most popular virtual machine &lt;strong&gt;WSL&lt;/strong&gt;&lt;/p&gt;

</description>
      <category>java</category>
      <category>beginners</category>
      <category>compiling</category>
      <category>c</category>
    </item>
    <item>
      <title>Past the JVM</title>
      <dc:creator>Geremi Wanga</dc:creator>
      <pubDate>Thu, 21 May 2026 12:48:15 +0000</pubDate>
      <link>https://dev.to/geremi-me/under-the-coffee-mug-hood-1g74</link>
      <guid>https://dev.to/geremi-me/under-the-coffee-mug-hood-1g74</guid>
      <description>&lt;p&gt;Learning Java got me thinking how exactly does things word under the hood.. I'm not talking about Java in Particular I'm mentioning programming in General how does a command I Write on my shell or bash terminal get executed in the machine&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;What role does the kernel play in all of this&lt;/li&gt;
&lt;li&gt;And who does all the heavy lifting internally is it the kernel or the hardware&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I did research on all of this let me walk you through it&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F0tco27n4skmtmv3km42x.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F0tco27n4skmtmv3km42x.png" alt=" " width="336" height="150"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  The user and the shell
&lt;/h3&gt;

&lt;p&gt;When I type a command, the shell interprets it and decides which actions to take.&lt;/p&gt;

&lt;h3&gt;
  
  
  System Calls
&lt;/h3&gt;

&lt;p&gt;The shell issues system calls eg fork(), execve(), and open() to request services from the kernel.&lt;/p&gt;

&lt;h3&gt;
  
  
  Kernel to Hardware
&lt;/h3&gt;

&lt;p&gt;The kernel handles the system calls, communicates with device drivers, and interacts with hardware safely and in a controlled way.&lt;/p&gt;

&lt;h3&gt;
  
  
  Back to user
&lt;/h3&gt;

&lt;p&gt;The output appears in the terminal all of this happens in milliseconds&lt;/p&gt;

&lt;p&gt;What so great about all this is how every user program, not just the shell, uses system calls to communicate with the kernel. It’s like a controlled gateway to the operating system&lt;/p&gt;

&lt;p&gt;I'd like to do more research about this Java in particular this time we'll go under the &lt;/p&gt;

</description>
      <category>java</category>
      <category>programming</category>
      <category>systems</category>
      <category>beginners</category>
    </item>
    <item>
      <title>Galileo Gosling the father of Java</title>
      <dc:creator>Geremi Wanga</dc:creator>
      <pubDate>Wed, 20 May 2026 09:39:51 +0000</pubDate>
      <link>https://dev.to/geremi-me/galileo-gosling-the-father-of-java-1d07</link>
      <guid>https://dev.to/geremi-me/galileo-gosling-the-father-of-java-1d07</guid>
      <description>&lt;p&gt;Before Getting into development straight away.&lt;br&gt;
We must learn the origin the customs and the way of Java Right from the start.&lt;/p&gt;

&lt;p&gt;We must start first with the man behind it.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;The Father of Java&lt;/em&gt; &lt;strong&gt;James Gosling&lt;/strong&gt; was born in 1955 in Canada and later Joined Sun Microsystems in 1984 where he worked for 26 years.&lt;/p&gt;

&lt;p&gt;In 1994 He got the Idea while writing a program to port software from a PERQ by translating Perq Q-Code to VAX assembler you know just normal stuff&lt;/p&gt;

&lt;p&gt;He created the original design of Java and implemented the compiler (JAVAC) and also the Virtual machine (JVM) &lt;/p&gt;

&lt;p&gt;Though it wasn't all sunshine. Java was acquired later on by &lt;strong&gt;Oracle&lt;/strong&gt; from sun.&lt;/p&gt;

&lt;p&gt;After this James Gosling decided to part ways with sun microsystems in April 2 2010. Since then he has taken a critical stance toward Oracle.&lt;/p&gt;

&lt;p&gt;In march 2011 he joined &lt;strong&gt;Google&lt;/strong&gt; for six months.&lt;br&gt;
After he followed his friend &lt;strong&gt;Bill Vass&lt;/strong&gt; and joined into a startup &lt;strong&gt;Liquid Robotics&lt;/strong&gt;. Things were doing better for Gosling until the startup became too good, later in 2016 &lt;strong&gt;Liquid Robotics&lt;/strong&gt; was acquired by &lt;strong&gt;Boeing&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Following the inevitable Mr Gosling left &lt;strong&gt;Liquid Robotics&lt;/strong&gt; and joined &lt;strong&gt;AWS&lt;/strong&gt; in &lt;strong&gt;2017&lt;/strong&gt; as a Distinguished Engineer and later Retired in 2024&lt;/p&gt;

&lt;p&gt;Being A creator comes with a lot of hardships and mishaps. Even though Gosling had differences with oracle because of being stripped off decision making authority. People still associate him Greatly with the JAVA language &lt;em&gt;He is still the father of Java&lt;/em&gt; &lt;/p&gt;

&lt;p&gt;Aside from all this he was still accredited for a lot of things &lt;br&gt;
In &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;2002: awarded The Economist Innovation Award&lt;/li&gt;
&lt;li&gt;&lt;p&gt;2002: awarded The Flame Award USENIX Lifetime Achievement Award.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;2007: made an Officer of the Order of Canada.[32] The Order is Canada's second highest civilian honor. Officers are the second highest grade within the Order.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;2013: became a fellow of the Association for Computing Machinery.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;2015: awarded IEEE John von Neumann Medal&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;2019: named a Computer History Museum Fellow for  the conception, design, and implementation of the Java programming language&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Even with all the challenges &lt;strong&gt;Gosling&lt;/strong&gt; remains an inspiration to many for his resilience including myself&lt;/p&gt;

</description>
      <category>java</category>
      <category>algorithms</category>
      <category>programming</category>
      <category>tutorial</category>
    </item>
    <item>
      <title>Head First Java</title>
      <dc:creator>Geremi Wanga</dc:creator>
      <pubDate>Tue, 19 May 2026 12:27:41 +0000</pubDate>
      <link>https://dev.to/geremi-me/head-first-java-357l</link>
      <guid>https://dev.to/geremi-me/head-first-java-357l</guid>
      <description>&lt;p&gt;One of the best things when learning a new language would be to read.&lt;/p&gt;

&lt;h3&gt;
  
  
  Read and understand the vocabulary...
&lt;/h3&gt;

&lt;p&gt;Occasionally write with that language this helps build muscle memory and memory.&lt;/p&gt;

&lt;p&gt;But for &lt;strong&gt;JAVA&lt;/strong&gt; this is entirely different you can't read  syntax then use it later on you have to grasp the syntax the &lt;strong&gt;Classes&lt;/strong&gt;, you have to &lt;em&gt;jump straight into the "&lt;/em&gt;&lt;em&gt;void&lt;/em&gt;&lt;em&gt;"&lt;/em&gt; 😆 so to speak&lt;/p&gt;

&lt;p&gt;But as the famous Ray BradBury said '&lt;em&gt;Jump, and you will find out how to unfold your wings as you fall.&lt;/em&gt;'&lt;/p&gt;

&lt;p&gt;But what are the wings in Java? That would be the resources and for me the best resource I've found so far is &lt;strong&gt;Head First Java&lt;/strong&gt; &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F9woav4irnt95wmrqii7p.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F9woav4irnt95wmrqii7p.png" alt=" " width="714" height="824"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;written by &lt;strong&gt;Kathy Sierra&lt;/strong&gt; and &lt;strong&gt;Bert Bates&lt;/strong&gt;&lt;br&gt;
With photos and visuals it has been engineered to keep your attention Pinned and for People with ADHD 🤫 you won't find any trouble paying attention &lt;/p&gt;

&lt;p&gt;If you're also learning &lt;strong&gt;Java&lt;/strong&gt; definitely check out this book&lt;/p&gt;

</description>
      <category>java</category>
      <category>jvm</category>
      <category>books</category>
      <category>beginners</category>
    </item>
    <item>
      <title>The coffee language</title>
      <dc:creator>Geremi Wanga</dc:creator>
      <pubDate>Mon, 18 May 2026 10:38:58 +0000</pubDate>
      <link>https://dev.to/geremi-me/the-coffee-language-g81</link>
      <guid>https://dev.to/geremi-me/the-coffee-language-g81</guid>
      <description>&lt;p&gt;Sometimes learning a new Language can be hard...Believe me it's not as hard as Java&lt;/p&gt;

&lt;p&gt;There's a reason why most beginners quit after the first few tutorials of learning 'The learning curve' is extreme&lt;br&gt;
Most senior engineers say that the initial bit of Java is the hardet to climb but after &lt;strong&gt;every hill is a landslide&lt;/strong&gt; &lt;/p&gt;

&lt;h2&gt;
  
  
  The Syntax
&lt;/h2&gt;

&lt;p&gt;This is the number one reason why beginners quit learning Java with it's strong Object Oriented syntax... It's a hard mountain to climb &lt;br&gt;
Concept like:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Encapsulation&lt;/li&gt;
&lt;li&gt;Inheritance&lt;/li&gt;
&lt;li&gt;Polymorphism
Being the hardest bones to chew&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;For the next week i'll be sharing my progress and learning materials&lt;/p&gt;

&lt;p&gt;If you are also starting your journey on learning Java.. Join me as we strive to conquer one of the hardest mountains created by man &lt;strong&gt;James Gosling&lt;/strong&gt; 😉&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Stay tuned&lt;/strong&gt;&lt;/p&gt;

</description>
      <category>java</category>
      <category>systemdesign</category>
      <category>gamedev</category>
    </item>
    <item>
      <title>Building Klimatt</title>
      <dc:creator>Geremi Wanga</dc:creator>
      <pubDate>Mon, 18 May 2026 08:11:29 +0000</pubDate>
      <link>https://dev.to/geremi-me/building-klimatt-2144</link>
      <guid>https://dev.to/geremi-me/building-klimatt-2144</guid>
      <description>&lt;h3&gt;
  
  
  A smarter way to track farm markets in Kenya
&lt;/h3&gt;

&lt;p&gt;Over the past few months I’ve been building &lt;strong&gt;Klimatt&lt;/strong&gt;, a farming platform focused on helping farmers make better decisions using market data and simple management tools.&lt;/p&gt;

&lt;p&gt;A big part of the project started after I found food price datasets from Kenya provided through WFP/FPMA records. I began experimenting with parsing the CSV data using Go and exposing it through APIs to a React frontend.&lt;/p&gt;

&lt;p&gt;The idea slowly grew into something bigger.&lt;/p&gt;

&lt;h2&gt;
  
  
  Current features
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;📊 Market price tracking from markets across Kenya&lt;/li&gt;
&lt;li&gt;🌽 Commodity and stock keeping&lt;/li&gt;
&lt;li&gt;🛒 Marketplace where farmers can post and discover products&lt;/li&gt;
&lt;li&gt;📅 Farming calendar for tracking activities like planting schedules and rainfall periods&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Working with real agricultural data
&lt;/h2&gt;

&lt;p&gt;One of the most interesting parts has been working with real agricultural datasets:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;normalizing prices&lt;/li&gt;
&lt;li&gt;grouping commodities by region&lt;/li&gt;
&lt;li&gt;comparing markets&lt;/li&gt;
&lt;li&gt;calculating trends&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight go"&gt;&lt;code&gt;&lt;span class="n"&gt;router&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;GET&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"/api/prices/latest"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="k"&gt;func&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;c&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="n"&gt;gin&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Context&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="n"&gt;c&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;JSON&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="m"&gt;200&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;response&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="p"&gt;})&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;h2&gt;
  
  
  Tech stack
&lt;/h2&gt;


&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Go + Gin
React + TypeScript
CSV ingestion pipelines
n8n automation experiments
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;I recently made a short Loom walkthrough showing the direction of the project:&lt;/p&gt;


&lt;div&gt;
  &lt;iframe src="https://loom.com/embed/dc03520f3bf247ad811275d4ec3f6aa8"&gt;
  &lt;/iframe&gt;
&lt;/div&gt;



&lt;p&gt;Still a work in progress, but it’s been exciting building something around a real problem affecting farmers and market access.&lt;/p&gt;

&lt;p&gt;Would love feedback from anyone working in:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;agri-tech&lt;/li&gt;
&lt;li&gt;logistics&lt;/li&gt;
&lt;li&gt;data engineering&lt;/li&gt;
&lt;li&gt;market systems&lt;/li&gt;
&lt;li&gt;Go backend development&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>agriculture</category>
      <category>ai</category>
      <category>react</category>
      <category>go</category>
    </item>
  </channel>
</rss>
