TheZoq2
thezoq2.bsky.social
TheZoq2
@thezoq2.bsky.social
Developing http://spade-lang.org and other fun stuff in Rust. PhD student at Linköping University

Usually at https://mastodon.social/@thezoq2
A few weekends ago I wrote a logic analyzer in Spade 🐠, and it took less than 4 hours

I figured I'd write a blog post to show how that was possible and how the code works: blog.spade-lang.org/quickscope/
November 10, 2025 at 2:23 PM
I finally got around to doing another Surfer release, so now we're on v0.4.0 🎉

My personal highlights are the new web assembly based translator system, and the improvements to our waveform control protocol, and you can read the full change log at gitlab.com/surfer-proje...
November 6, 2025 at 3:08 PM
That does look very cool, what exactly are we looking at?

My best guess is these are points that can be used as anchors for 3d reconstruction?

Duck duck go certainly isn't being very helpful :D
September 30, 2025 at 2:05 PM
I got inspired at orconf, so now play.spade-lang.org supports a full in-browser flow for submitting to tinytapeout.com/

Still experimental, so if you try it and run into any issues, let me know :)
September 20, 2025 at 9:12 AM
August 16, 2025 at 12:42 PM
After 2 skipped releases due to me finishing my thesis, it is time for Spade 0.14.0 🎉

This brings long awaited lambda functions into the language, new standard library functions that use them, and a much improved LSP

Release blog post: blog.spade-lang.org/v0-14-0/
June 26, 2025 at 1:16 PM
There it is 👀
June 10, 2025 at 9:11 PM
My thesis is now published online! 🎉

urn.kb.se/resolve?urn=...
June 3, 2025 at 12:23 PM
I talked a bit more about it on mastodon.social/@thezoq2/114... but here is a picture of the circuit and the schematic git.sr.ht/~acqrel/anal...

(Thought he schematic has some issues so it probably shouldn't be built, but can be used as a reference for how things work)
April 18, 2025 at 5:43 PM
Me and a friend (Well mostly my friend, she did most of the design work) built a fully analog flappy bird last weekend

No digital logic, just ~30 op amps and 70-80 resistors, a bunch of capacitors and a few analog switches. All assembled during a 48 hour game jam
April 11, 2025 at 5:44 PM
Still super happy that the code for this is primarily just stream transformations
March 24, 2025 at 5:34 PM
Oh hell yes, working ARP response + ICMP ping request/replies on my #fpga!
March 24, 2025 at 5:33 PM
My ARP impl in Spade now works, my computer can ask who has the IP address of the #FPGA, and it replies correctly :)

Still incredibly pleased with this stream based network packet API. It makes packet transformation super easy, and nicely decouples "fmax buffers" and fifos from behaviour
March 22, 2025 at 12:05 PM
And there it is, the slowest #riscv core? Running on the time multiplexed NAND gate (bsky.app/profile/thez...)

The display is showing the PC value. It is running a program to add 1 to a register, and it with 1, and skip an instruction if the result is 0
March 12, 2025 at 8:55 AM
Today we're releasing Spade 0.13.0, one of the biggest releases so far 🎉

The main addition is "gen if" which enables compile time recursion and lays the groundwork for more powerful generic programming

Namespaces and external Verilog interaction has also been improved

blog.spade-lang.org/v0-13-0/
February 20, 2025 at 4:17 PM
The SystemVerilog standard is wild. 1300 pages that manage to say absolutely nothing about how the language works, apart from gems like this
February 5, 2025 at 1:31 PM
My friend wrote a yosys backend for this thing, so now we're running spade-lang.org on a chip made with spade-lang.org which is immensely satisfying :)
February 4, 2025 at 9:38 PM
It being a time multiplexed NAND-gate and a giant shift register. Schematically, it looks like this.

Every clock cycle, it can read a value from the top of the shift reg to either the left or right operand, and write an input or the current NAND output back into the shift register.
February 2, 2025 at 8:41 PM
It works!!!
February 2, 2025 at 8:41 PM
It is time for the most boring Spade release yet 🎉

Boring is good though, it includes 13 bug fixes, along with a system for preventing previously common code gen bugs in the future. Other changes include Gowin #fpga support, and methods on non-named types

blog.spade-lang.org/v0-12-0/
January 9, 2025 at 4:00 PM
On Sunday it will be exactly 2 years since I made the first commit to Surfer 🍰 🎉. To celebrate, we're releasing Surfer version 0.3.0 that contains over half a year of new features and fixes!

Blog post: blog.surfer-project.org/v0-3-0/
Changelog: gitlab.com/surfer-proje...
December 20, 2024 at 3:43 PM
Added support for #gowin #fpga to Swim - the Spade build tool

If you have one of these laying around you can just `swim install-tools` and then `swim init --board tangnano9k` or `5k`
December 7, 2024 at 12:13 PM
Made ~~Minecraft~~ a forklift game over the weekend on two "networked" #fpga s

All built in spade-lang.org and not a processor in sight :) Everything except @acqrel's 3d renderer was written over the past 48 hours
December 1, 2024 at 5:54 PM
Spade 0.11.0 has been released 🎉

- Mutable wires are now unified with the rest of the inv port system
- Testing ports is much more convenient
- Support for instantiating parameterized Verilog
- Improved test output
- Generics in array range expressions

Release notes blog.spade-lang.org/v0-11-0/
November 28, 2024 at 4:18 PM
What was I thinking doing branchless programming in Python? That's never going to be fast!

I rewrote this in Rust for 🚀 🔥 blazingly 🔥 🚒 🚀 fast 🔥 🚀 performance

gitlab.com/TheZoq2/exce...
November 27, 2024 at 8:59 PM