Hi! I'm Jonas Hietala, a writer, developer and wannabe code monkey.
Say hello, or keep reading.

Posts


A simple timeline using CSS flexbox

Microfeatures in my blog

Back to lazy.nvim

Migrating to rocks.nvim

Autocomplete with nvim-cmp

Exploring the Gleam FFI

Rewriting my Neovim config in Lua

Battling burnout

Rewriting my blog in Rust for fun and profit

How I wrote a book using Pollen

Series

Extending Neovim for blogging

ongoing

Originally meant to be a single blog post, my quest to customize Neovim to help with my blogging spiraled out of control.

This series details my journey of enhancing my blogging experience by tweaking file browsers, autocomplete, goto definition, diagnostics, and more. There will be coding in Lua on the Neovim side, and we’ll update the Rust backend to serve the editor with content-aware interactions. I’ll end the series with just a dash of JavaScript to provide a live preview of the site in the browser.

Let's build a VORON Trident

completed

This series documents my journey building my very first 3D printer: a VORON Trident 250.

I’m not a 3D printer expert—in fact I’m a complete beginner and I’ve never even held a 3D printed part in my hand before—so don’t expect any deep insights from this series. Instead I’ll try to document my progress, write about problems I encounter, contain lots of pictures, and will hopefully end with an awesome printer.

How I wrote 'Why Cryptocurrencies?'

completed

This series documents how I wrote, designed and self-published the book Why Cryptocurrencies?. It includes how I approached the writing process, how I made it available to read online, how I designed the layout of the physical book, and how I turned it into an eBook.

The T-34 keyboard layout

completed

In this series I document my journey in developing a custom keyboard layout for a smaller keyboard. It contains pictures, graphs and ideas that have been fun and helpful for me.

Projects

Tree-sitter Djot

The Tree-sitter grammar for the Djot markup language gives editors such as Neovim the ability to syntax highlight, conceal, select text semantically, jump between elements, and more.

{#example-attribute}
# Djot is like Markdown
But Djot is _easier_ to parse and has some additional
markup elements.[^footnote]
::: div_class
i. Roman numerals for lists.
i. Lisp-like :symbols: for postprocessing.
i. LaTeX math: $`i^2 = -1`
i. ~superscript~, {+insert+} and {-delete-}, and more...
:::
[^footnote]: But I admit, the difference between Djot and
the various Markdown flavors isn't *that* large.

If you’re curious about Tree-sitter, make sure to check out the in-depth post Let’s create a Tree-sitter grammar that walks you through the creation of a grammar for a subset of Djot.

MARC

This is a VHDL implementation of the Core Wars 88 standard. Core Wars is a computer game where two programs compete and try to destroy each other.

The programs may look like this:

; This program will copy a DAT instruction to every 4th line in the memory,
; hoping to catch enemy processes and kill them off.
;
; add 4 to the instruction at offset 3 (the DAT)
ADD #4, 3
; copy the instruction at offset 2 to relative location of
; the second field of instruction 2 (+4 lines after DAT the first execution)
MOV 2, @2
; jump back to beginning
JMP -2,0
; if a process tries to execute this line, it dies
DAT #0, #0

See the Core Wars wiki for more info.

Games

Some fast game prototypes. Most were made in 7 days or 48 hours.