Thursday, February 29, 2024
Google search engine
HomeUncategorized2023: Year in Review

2023: Year in Review

Hello! This was my 4th year working full time on Wizard Zines! Here are a few
of the things I worked on this year.

a zine!

I published How Integers and Floats Work, which I worked on with
Marie.

This one started out its life as “how your computer represents things in
memory”, but once we’d explained how integers and floats were represented in
memory the zine was already long enough, so we just kept it to integers and
floats.

This zine was fun to write: I learned about why signed integers are represented
in memory the way they are, and I’m really happy with the explanation of
floating point we ended up with.

a playground: memory spy!

When explaining to people how your computer represents people in memory, I kept
wanting to open up gdb or lldb and show some example C programs and how the
variables in those C programs are represented in memory.

But gdb is kind of confusing if you’re not used to looking at it! So me and
Marie made a cute interface on top of lldb, where you can put in any C program,
click on a line, and see what the variable looks like. It’s called memory spy and here’s what it looks like:



a playground: integer exposed!

I got really obsessed with float.exposed by Bartosz
Ciechanowski
for seeing how floats are represented in
memory. So with his permission, I made a copy of it for integers called integer.exposed.

Here’s a screenshot:

It was pretty straightforward to make (copying someone else’s design is so much
easier than making your own!) but I learned a few CSS tricks from analyzing how
he implemented it.

Implement DNS in a Weekend

I’ve been working on a big project to show people how to implement a working
networking stack (TCP, TLS, DNS, UDP, HTTP) in 1400 lines of Python, that you
can use to download a webpage using 100% your own networking code. Kind of like Nand to Tetris, but for computer networking.

This has been going VERY slowly – writing my own working shitty
implementations was relatively easy (I finished that in October 2022), but
writing clear tutorials that other people can follow is not.

But in March, I released the first part: Implement DNS in a Weekend. The response was really good
– there are dozens of people’s implementations on GitHub, and
people have implemented it in Go, C#, C, Clojure, Python, Ruby, Kotlin, Rust,
Typescript, Haskell, OCaml, Elixir, Odin, and probably many more languages too.
I’d like to see more implementations in less systems-y languages like vanilla
JS and PHP, need to think about what I can do to encourage that.

I think “Implement IPv4 in a Weekend” might be the next one I release. It’s
going to come with bonus guides to implementing ICMP and UDP too.

a talk: Making Hard Things Easy!

I gave a keynote at Strange Loop this year called Making Hard Things Easy (video + transcript),
about why some things are so hard to learn and how we can make them easier. I’m
really proud of how it turned out.

a lot of blog posts about Git!

In September I decided to work on a second zine about Git, focusing more on how
Git works. This is one of the hardest projects I’ve ever worked on, because
over the last 10 years of using it I’d completely lost sight of what’s hard
about Git.

So I’ve been doing a lot of research to try to figure out why Git is hard, and
I’ve been writing a lot of blog posts. So far I’ve written:

What’s been most surprising so far is that I originally thought “to understand
Git, people just need to learn git’s internal data model!“. But the more I talk
to people about their struggles with Git, the less I think that’s true. I’ll
leave it at that for now, but there’s a lot of work still to do.

some Git prototypes!

I worked on a couple of fun Git tools this year:

  • git-commit-folders: a way to
    mount your Git commits as (read-only) folders using FUSE or NFS. This one
    came about because someone mentioned that they think of Git commits as being
    folders with old versions of the code, and it made me wonder – why can’t
    you just have a virtual folder for every commit? It turns out that it can and
    it works pretty well.
  • git-oops: an experimental prototype of an
    undo system for git. This one came out of me wondering “why can’t we just
    have a git undo?“. I learned a bunch of things about why that’s not easy
    through writing the prototype, I might write a longer blog post about it
    later.

I’ve been trying to put a little less pressure on myself to release software
that’s Amazing and Perfect – sometimes I have an idea that I think is cool but
don’t really have the time or energy to fully execute on it. So I decided to
just put these both on Github in a somewhat unfinished state, so I can come
back to them if later if I want. Or not!

I’m also working on another Git software project, which is a collaboration with
a friend.

hired an operations manager!

This year I hired an Operations Manager for Wizard Zines! Lee is incredible and has done SO much to
streamline the logistics of running the company, so that I can focus more on
writing and coding. I don’t talk much about the mechanics of running the
business on here, but it’s a lot and I’m very grateful to have some help.

A few of the many things Lee has made possible:

  • run a Black Friday sale!
  • we added a review system to the website! (it’s so nice to hear about how people loved getting zines for Christmas!)
  • the store has been reorganized to be way clearer!
  • we’re more consistent about sending out the new comics newsletter!
  • I can take a vacation and not worry about support emails!

migrated to Mastodon!

I spent 10 years building up a Twitter presence, but with the Recent Events, I
spent a lot of time in 2023 working on building up a Mastodon account. I’ve found that I’m able to have more
interesting conversations about computers on Mastodon than on Twitter or
Bluesky, so that’s where I’ve been spending my time. We’ve been having a lot of
great discussions about Git there recently.

I’ve run into a few technical issues with Mastodon (which I wrote about at Notes on
using a single-person Mastodon server
) but overall
I’m happy there and I’ve been spending a lot more time there than on Twitter.

some questions for 2024

one of my questions for 2022 was:

  • What’s hard for developers about learning to use the Unix command line in 2022? What do I want to do about it?

Maybe I’ll work on that in 2024! Maybe not! I did make a little bit of progress
on that question this year (I wrote What helps people get comfortable on the command line?).

Some other questions I’m thinking about on and off:

  • Could man pages be a more useful form of documentation? Do I want to try to do anything about that?
  • What format do I want to use for this “implement all of computer networking in Python” project? (is it a website? a book? is there a zine? what’s the deal?) Do I want to run workshops?
  • What community guidelines do I want to have for discussions on Mastodon?
  • Could I be marketing Mess With DNS (from 2021) more? How do I want to do that?

moving slowly is okay

I’ve started to come to terms with the fact that projects always just take
longer than I think they will. I started working this “implement your own
terrible networking stack” project in 2022, and I don’t know if I’ll finish it
in 2024. I’ve been working on this Git zine since September and I still don’t
completely understand why Git is hard yet. There’s another small secret project
that I initally thought of 5 years ago, made a bunch of progress on this year,
but am still not done with. Things take a long time and that’s okay.

As always, thanks for reading and for making it possible for me to do this
weird job.

Read More

RELATED ARTICLES

1 COMMENT

LEAVE A REPLY

Please enter your comment!
Please enter your name here

- Advertisment -
Google search engine

Most Popular

Recent Comments