1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
|
# Projects
Of all the peojects I've made over the years, not many deserve their own
standing blogpost either because (a) it is too ephemeral and a thread of
512-character long microblogs is enough or (b) it is more fitting to write
proper documentation for it instead (ironic when I build my blog with
MkDocs). But the few that do, are here.
Projects below are sorted reverse chronologically (most recent first).
## nand2tetris
### [Part 1](nand2tetris_1)
![Diagram of a simple computer](img/nand2tetris_1/computer_registers.png)
In July 2022 I enrolled in a course called nand2tetris. In part one of
this course I built a computer from NAND gates and ran assembly on it. It
was great fun.
### [Part 2.1](nand2tetris_2.1/)
![Diagram of a stack](img/nand2tetris_2.1/stack_before_add.png)
A few days after Part 1 was finished, I entered Part 2. There were so many
things ahead of me that I decided to split it into multiple blogposts. In
Part 2.1 I learned about the stack machine and wrote a VM translator.
### [Part 2.2](nand2tetris_2.2/)
In nand2tetris 2.2 I built a tokenizer for a simple language, Jack.
## [SIRTET](sirtet)
![Screenshot of SIRTET mid-game](img/sirtet/sirtet.png)
In June 2022 I made a game in C. It was my first time using ncurses. Also,
I no longer fear pointers (although I'd still keep away from them).
## [One tøp song](one_top_song)
![Screenshot of desktop UI](img/one_top_song/ui_desktop.png)
On April 19, 2022, I released a web game made out of words that only
appear in one twenty øne piløts song. It involves automation using curl,
Python, and Unix utilities, but on top of it there's a lot of manual work.
Here are the steps I took over the course of this project, from
downloading the lyrics, to generating a dataset, and finally making
a game.
## [Kanvas](kanvas)
![Screenshot of Kanvas 0.1.1](img/kanvas/screenshot_0.1.1.png)
In April 2022 my friend released a Canvas LMS desktop widget for the
Wallpaper Engine. I feel happy for him, but I'm disappointed that I can't
use it. So I went ahead and wrote my own Plasma widget (or applet, or
plasmoid).
## [Bikeblinkers](bikeblinkers)
[
![
All PCBs, soldered and unsoldered, and 3D printed case all laid out
on the desk
](img/bikeblinkers/bikeblinkers.jpg)
](img/bikeblinkers/fullsize/bikeblinkers.jpg)
In September 2021 I broke my wrist in a (fairly stupid) cycling accident.
This led to a two-month-long quest for a pair of blinkers for my bicycle.
I made all sorts of mistakes along the way, as I always do, and this
blogpost has all that yelling-at-past-myself covered. It also covers
_some_ actual project details.
## [Rickstodon](rickstodon)
![Demo](img/rickstodon/rickstodon.webp)
On April Fool's Day, 2020, I launched a mock Mastodon login page at
`https://social.fkfd.me` (now defunct) that rickrolled anyone that clicked
the links or buttons. It was more sophisticatedly designed than most other
rickrolling attempts (it's weird to compare trolling technique, I know) in
that hovering your cursor over the links doesn't immediately reveal your
evil intent; the URL shown is totally legit, and it takes another round of
carefully set-up nginx configs to redirect you to the classic music video.
Because of restrictions in AGPL that Mastodon is distributed under,
I decided not to release the code itself but rather to write a guide on
how I made it. The codeberg repo that came along was unlicensed.
As I said, this was a impulse project that's faded into the past. It is
2022 as I write this. Isn't this crazy?
|