ADTs (Algebraic Data Types) in Java
Big ball of mud
Big ball of mud
Erik L. Arneson
The Oregon Scottish Rite Education Foundation awards scholarships annually to students across Oregon who are entering into college or trade schools. Over the past few years, their foundation has grown, requiring them to distribute more scholarships than ever. However, since the foundation board is...
Big ball of mud
I had the pleasure of giving a talk at the Scalar Conference 2026 in Warsaw. The talk was titled āThe Concurrency Triangle: Scala Fibers, Java Virtual Threads, and Kotlin Coroutinesā. I discussed about how continuations and coroutines are implemented in Scala, Java, and Kotlin. I also compared the...
Erik L. Arneson
Freelancing for small businesses and organizations leads to a position where you are juggling a number of projects for multiple clients. You need to keep track of a number of tasks ranging from software development to sending emails to project management. This is a lot easier when you have a...
Arnaud Pouppeville
A year ago, smoke tests on my projects were a luxury: too expensive to justify, too slow to run on every PR, too hard to maintain alongside a fast-moving codebase. Today they're the default output of every feature cycle. Not because I added a QA team. Because I built an AI-orchestrated development...
Big ball of mud
I had the pleasure of giving a talk at the Scala Days 2025 in Lausanne. The talk was titled āYo Dawg, Heard You Want To FlatMap Your Direct-Styleā. I talked about the challenges of using direct-style programming in Scala and how we can leverage the power of effect systems to make our code more...
Erik L. Arneson
I run the Regolith Desktop Environment on my laptop, which I love because it provides a convenient GNOME wrapper and interface for the i3 tiling window manager. Regolith relies on a program called ilia for application launching, and sometimes ilia gets caught in some kind of CPU-churning state...
Erik L. Arneson
Well-known Emacs package creator Protesilaos Stavrou interviewed me for his video podcast series, āProt Asks.ā We talked about a wide variety of topics, from Emacs to podcasting to Portland to public transit. I thought it was a great time, and perhaps you will like it, too! You can read and...
Ayman Nadeem
Like many developers, Iāve spent most of the past year vibe coding. Across the many tools Iāve tried, my workflow looks something like this: I prompt AI agents in natural-language and hope they make the edits I want. When it works, it feels like sorcery. When it fails, Iām left spelunking through...
Big ball of mud
The Ticino Software Craft Meetup gave me the opportunity to give a talk about my library YAES, which is an effect system for Scala. We did an excursus on Effect Systems in Scala, starting from the monadic effects in Cats Effect, going through the ZIO effect system, and Jyo and finally arriving at...
Big ball of mud
I had the pleasure of giving a talk at the Scalar Conference 2025 in Warsaw. The talk was titled āYo Dawg, Heard You Want To FlatMap Your Direct-Styleā. I talked about the challenges of using direct-style programming in Scala and how we can leverage the power of effect systems to make our code...
Erik L. Arneson
I just released version 1.0.0 of maybe, a command-line utility that succeeds some of the time. It is written in Go and is not very many lines of code, but I do hope that it can be useful for people. Some History I recently got a Korg Volca Drums drum synthesizer. It has a sequencer that allows...
Ayman Nadeem
LLMs continue to push the boundaries of content generation, but they can struggle when the output needs to follow very strict rules, like writing code, generating formulas, or creating markup languages (like JSON or HTML). This begs the question: how do we generate highly structured outputs that...
Ayman Nadeem
Iāve been diving back into static analysis and programming language theory after a 4 year hiatus. Getting re-acquainted with papers in the field has been humbling, and can feel like solving a puzzle with infinite pieces. Writing and summarizing helps me make sense of it all, so I wanted to share...
Ayman Nadeem
During YC, the group partnersā constant refrain about remaining intellectually honest and prioritizing customers needs seemed almost redundant. Yet I fell into the very trap they had repeatedly warned againstāa humbling reminder that even the clearest advice canāt immunize us against our own blind...
Ayman Nadeem
I started using Copilot as a GitHub employee when it first emerged, long before it was available publicly. I found myself skeptical. The early versions felt noisy and distractingāauto-complete suggestions caused more interruption than inspiration. The user experience fundamentally scattered my...
Chip š¼<br>Chirp
Some Background On the advice of my advisor noting a āwell fortifiedā set of classes taken so far, I am taking a class this semester in a different area from my normal electrical engineering classes. The class covers Max/MSP, a visual programming environment for audio and video processing. I am...
cowlark.com
Iāve just done a port of CP/M to the 6502 ā for, um, reasons. It currently runs on the BBC Micro (or Master, or Tube second processor) and the Commodore 64.
Technorage
Let's see if Golang became better with the addition of generics.
cowlark.com
Iāve been spending some time porting EmuTOS, an open source version of Atari TOS, to the AlphaSmart Dana portable laptop word processor typewriter thing. It runs really well, and will run (some) original Atari ST software. And, Iāve done it all on video! Itās about 38 hours of me talking about...
cowlark.com
Iāve just released an epic eight-and-a-half hour video where I live code an assembler and simulator for the OBP, the On-Board Processor used by a variety of spacecraft, designed way back in 1968.
Technorage
My second impression of Rust, after building a real-life use case with it and my thoughts on why it is a great general-purpose language for the future.
cowlark.com
Iāve just spent a couple of weeks indulging a retrocomputing itch: Iāve just written a FPV 3D game for the Commodore PET, a 1980 text-only computer with 32kB of RAM and a 1MHz 6502. Because, apparently, I have too much free time.
cowlark.com
Iāve finally finished (or at least, made feature complete) my Raspberry Pi Pico Fuzix Port. This is a proper V7 Unix clone which will run on the Raspberry Pi Foundationās $4 microcontroller board. This now requires no extra hardware to run! You can use it with a UART or an SD card. Just plug your...
SSilver2k2
Iāll be honest, I really keep thinking if I blog what Iām doing now then that will be it, and I wonāt have any content for next week. Hah! Every week just reminds me how many things I end up putting myself into so yeah, I just need to stop worrying about having content and just keep making...
cowlark.com
So, my new Raspberry Pi Picos (two of them) arrived just as I was finishing up the ESP8266 Fuzix port, and naturally I had to port Fuzix to this too. I didnāt video this one, which is a shame as it would probably have been a more interesting watch.
cowlark.com
I have just āfinishedā a port of Fuzix, Alan Coxās lightweight Unix for small machines, to the ESP8266 microcontroller. And: I screen recorded it all, with narration by myself, so if anyone wants to watch the entire process, you now can!
cowlark.com
Iāve just merged in a change to FluxEngine, my open-source and easy to build USB floppy drive interface, which will let you use it to write Macintosh 800kB GCR disks using a normal PC drive.
SSilver2k2
Hey all. Happy New Year! This year I resolve to blog once a week again. Every Friday I will post what Iām working on. Iāve become creative again (I thinkā¦) and I want to put out to the world what Iām working on. Raspberry Pi StepMania Dance Pad Right now Iām working on a CNCād...
Larry Davis
A recent obsession with retro gaming on Raspberry Pi using RetroPie led me to play through a few old favorites, starting of course with Wolfenstein 3D (and my subsequent work on Splitwolf). After making my way through history with Doom and Quake I, it was only natural that I load up Quake II... A...
SSilver2k2
For anyone that knows me, Dance Dance Revolution and StepMania were a large part of my life years ago. Itās how I lost a ton of weight. 6 years ago was my first attempt to get StepMania running on a Raspberry Piā¦and it was a horrible experience. Today Iām proud to say that StepMania runs...
cowlark.com
Iāve just released version 0.8 of WordGrinder, my minimal word processor for writing first drafts. This started life as a bugfix release but I got a bit carried away with the feature requests, and thereās a tonne of new quality-of-life improvements.
cowlark.com
Two years ago (really? Two years?) I did some writeups on performing arithmetic on the 6502 and Z80 processors in the context of my Cowgol compiler. Well, I'm now working on a code generator for the 6303, so it's time for another one!
Technorage
Advice for beginners from my decade long development career
Technorage
What are the advantages and disadvantages of being a polyglot developer and how to be an effective polyglot developer
cowlark.com
Iāve just released a proper working version of Cowgol 2.0, a brand new version of my small language for small systems. Better type checking! Better syntax! Better code generation! Better compilation speed! And, ironically, this was mostly achieved by drastically simplifying it and reducing...
cowlark.com
Good news! After literally years of (very on and off work), I've just release Cowgol 2.0, my very small language for very small systems! It's simpler, smaller, less complex, and is better in every way.
Technorage
Let us take a closer look at how Rust manages memory.
Technorage
Let us take a closer look at how Golang manages memory.
Larry Davis
The hunt for the tiniest laptop I got excited about tiny laptops. I don't mean netbooks, I mean damn near palmtop laptops, the kind that would just barely fit in an oversized pocket... Something so small it seems impractical. Why? Beyond the needing a field laptop to tune and update FPV drones, I...
Technorage
Let us take a look at how modern programming languages manage memory.
Technorage
Languages to learn in 2020 depending on your experience & domain and resources to get started.
Technorage
3 tips that can make your code cleaner, more efficient and easy to read
Technorage
After using JavaScript for more than 10 years, here is what I think of it
Technorage
Functional programming concepts in Rust for beginners.
Technorage
This is what I thought about Rust while learning it. From a pragmatic perspective.
Technorage
Functional programming concepts in Go for beginners.
Technorage
Functional programming concepts in Java for beginners.
cowlark.com
As itās the 50th anniversary of the Apollo 11 moon landings, I thought this would be a great opportunity to live code a demonstration of using my new compiler to write a simple lunar lander game⦠but first, Iām going to port the compiler to generate code for an actual lunar lander. Yes, my target...
cowlark.com
Livecoding time again today, and Iām writing a compiler. This is a prototype for an alternate take on code generation for my Cowgol programming language. This is an Ada-inspired programming language for very small systems, such as 8-bit machines, intended to be self-hosted on such systems...