blog@yourbrowser ~ $ cd /devlog
blog@yourbrowser ~ $ cat entries.md
Devlog #10 - 2025-01-14
Crosswords
I started a new project called “crosswords”, a crossword-puzzle generator written in Go. You can visit the application at https://crossword.nkoll.de.
Currently, the Frontend styling is generated mostly by ChatGPT, but in the future, it will get a rewrite into a better looking, handwritten Frontend Application.
The generated Puzzles will be saved as files and get deleted after 30 Days of inactivity. That means, if they aren’t accessed for 30 Days, they are lost. There are plans to add a User System, where puzzles saved into the User acount are not deleted automatically.
The Generation works by trying as many valid puzzles as possible and choosing the best one. This is done by first, checking the amount of fitted words, where a puzzle with more words is always better than fewer words. After that a score is computed, where the smaller the better and the more square the better. This is done either until all possible outcomes are computed or 5 seconds passed. The algorithm itself is pretty simple and naive, but goroutines make it possible to compute a lot of them in parallel.
Devlog #9 - 2024-12-23
Flowlang
I restructured the Semantic Analyzer for better readability and fixed a bug where the arithmetic operators would only check for numeric operands, but not if they are the same type.
I also started implementing Arrays, but I hit a wall and that’s still where I’m at.
Game of Life
I tried my hands at WebAssembly with Zig and made a small, semi-complete version of Conway’s Game of Life. I made a small HTML-Page, slapped some JS Glue on it to call the WASM Binary and enable easy interfacing between buttons/events and WASM.
Devlog #8 - 2024-12-13
Flowlang
Since the last entry, I added a few small things, like shorthand assignment syntax (i += 1
, …), refactored and cleaned up the code base and added a big feature: Extensions!
It is now possible to write Extensions in Zig, which can be important via the build system (for example through Zig’s package manager), and then add globally available functions to call into Zig Code. That enables performance critical code to be implemented in Zig and exported via a simple, type-safe API into Flow-Land.
Devlog #7 - 2024-12-08
Flowlang
Userland Functions are on the way! Basic top-level functions work, but there are still a few bugs/unsolved problems regarding the analysis order, so calling a function in a declaration of a global variable/constant does not work yet.
Other Notable Improvements:
- Extended
build.zig
with a simple integration testing framework - Added a
flake.nix
for simple pipeline environments - Added a GitLab pipeline for automatic testing
Devlog #6 - 2024-12-05
Flowlang
Got a lot done in Flowlang, and started with building a Tree-Sitter grammar for Syntax Highlighting in NeoVim. The current Version can be viewed on Gitlab.
Some notable milestones:
- Variables and Constants, local and global scope
- Type Checking, Constants Checking
- Control-Flow (
if/else
,for
-loop,break/continue
inside loops) - Framework for builtin functions
- Removed print keyword in favour of builtin function
Devlog #5 - 2024-11-24
Flowlang
Started with Flowlang, a garbage-collected language with focus on concurrently and type-safety, inspired by Go and Zig.
Current Status:
- Working Byte-Code Compiler
- Bundling VM and Byte-Code into a single executable
- Minimal Subset of the language is implemented, namely standard arithmetic, boolean negation, (print keyword) and primitive literals
I also wrote a Blog post about it.
Devlog #4 - 2024-11-18
zs
Added single file support. Now doing something like zs build.zig
gives the expected output instead of errors
Devlog #3 - 2024-11-05
Blog
Added basic Syntax highlighting using Zine’s builtin treesitter parsing Telescope’s picker for Vim’s highlight-groups.
Devlog #2 - 2024-10-29
Zli
- Added Enums as possible Type definitions in Options
- I also wrote a longer Post about Zli here
zs
- Wrote my own version of the unix command
ls
- Only C Dependency is libc function
getgrgid
- slightly better memory footprint than
ls -laF
Devlog #1 - 2024-10-15
This is my first entry of this Devlog. I will post updates on current projects all on this page, so it won’t be a very organized feed. I will just use this to document my progress overall, make short descriptions of new stuff I built. Maybe there will be something interesting for you.
If there is more to talk about in greater detail I will maybe talk about it in a separate blog post, which will then be linked from here.