This continues from part 1 of the ZigLM series. So far we parsed the GGUF file and loaded it into memory, defining Tensor but leaving the data part out. Each Tensor we read contains an offset to a location in the data region of the GGUF file. This data region makes up the majority of the file, and is where mmap gains the most benefit as we don’t need to store multiple copies of the tensor in memory....
1. Implementing a GGUF Parser in Zig
Part 1 of the ZigLM series. Repo: https://github.com/james-o-johnstone/ziglm GGUF is a file format for storing models for inference with GGML which is a C/C++ ML library. The file contains the complete model definition including weights, tokenizer and architecture. We will start with loading this file as it is the first step to using a model for local inference. It’s also a good first step for learning Zig fundamentals like types, IO, memory etc....
ZigLM: Learning Zig and local inference
I recently came across this video from the Zig creator which inspired me to check out the language. I have also been playing around with running local LLM models using llama.cpp and wanted to learn a bit more deeply about how that works. I’m trying to use Claude to learn here rather than generate everything, so I can dig more deeply into the code. I think that Claude can be a very useful tool for learning quickly if used responsibly, but it requires a bit of effort to get the balance right to ensure you are still learning....
Implement DNS in a Weekend (in Rust!) Part 3
Part 3 of “Implement DNS in a weekend” - implementing the resolver.
Implement DNS in a Weekend (in Rust!) Part 2
Continuing to follow along with “Implement dns in a weekend”, this is part 2.
Implement DNS in a Weekend (in Rust!) Part 1
To improve my skills in Rust, learn more about how DNS works and eventually learn about Rust/Ruby and Rust/Java interop I have decided to follow along with “Implement dns in a weekend”, reimplementing the Python code in Rust.
Calculators for Running (Implemented In Rust Using WebAssembly)
Some calculators I use for running, in the format I wanted on a single page. The underlying calculations are performed in Rust.
Java Performance
10 interesting new things I learned after reading the O’Reilly Java Performance book.
Helm: Nil Pointer Error Accessing Global Variables in a Range Loop
A short lesson in Helm variable scoping.
Stripe Billing Integration for Garmin (Connect IQ) Apps: Part 1
How I implemented stripe billing for my Garmin app Humin.