Holy crap it's March

March has definitely snuck up on me this year. Maybe partially because I have a lot of other work to do right now, days can be a bit of a slog to wake up, figure out which contract needs attention, build stuff all day, sleep, repeat. I definitely need to mix my days up a bit which was my intention when I said I was going to work out of some different locations a few weeks ago. Still have not gotten around to figuring out where those places are or when I would do this 😁

I made a few small tweaks to SPI Websockets to move the frame timing back to where it should be (in the spi package) but I’m still messing around with what designs I can actually build with it. I have to make a gif of the real thing vs the sim display before I can open source it. Afterwards I’m not sure about when I’ll get around to building something in it.

My first That Thing in Swift livecoding event was last week and went way better than expected. I built a small project in a little over an hour, had roughly 10 concurrent watchers the whole time and got some good feedback on Twitter afterwards. I did some digging into how to improve my setup afterwards and it seems cheap and straightforward to make some big steps up in quality, though I’m still not completely sold on the format. 1 hour is a long time to commit to watching a video!

I’m going to produce a few small (non-live) videos to go along with the most popular pages on the site (notably Singletons and Background threads) and post those at the top of the page in a new That Thing in Swift youtube account, we’ll see how many views and subscribers that gets us. Then we’ll figure out where to go from there!

Lastly on the project updates, I realized that I know very little about how Solar cells actually produce power. I get the photoelectric/voltaic effect but there’s a big difference between knowing that physical process versus how to turn it into functioning electricity. I’m keeping notes on everything I learn and I’ll hopefully wrap it up in some regular posts here.


Treat has finally made its way to the archived pile. I still think the core idea is awesome, there’s just no great hook for why you want to use it in the first place. Surprisingly (to me), the fact that people use gift cards is not enough to justify the same people wanting to do the same thing (but better, obviously) on their phone. It’s still in the back of my mind and there are a few small things I want to do work on to feel out some assumptions but it’s not going to happen for a few months.

A big takeaway from the project is that I got wrapped up in this Startup culture and let those norms decide how I would build a company.

One thing that has really resonated with me since then has been this great, simple Startup Growth Calculator from @tlbtlbtlb. Here’s a shot of the model that makes sense with how I work:

The good Startup Growth chart

All the things on this chart are concrete and achievable. Spend $100 weekly? That’s way more than I usually spend to acquire users, initial investment for an engineer on their own project is mostly time. $45 weekly revenue? That might not be achievable on day 1 but it’s a low target that should be easy to hit if your project has any merit at all (no, I don’t want to make a “free” product where the customers are actually advertisers). 3% growth? That’s minuscule for a startup.

Let’s push the “profitability” back by 6 months since you’re not making $45 a week immediately. That’s still a single year to get to profitability, incredible. I know this is a simplistic model and you’ll probably want to grow faster by reinvesting or getting new investment during this time scales but this is what my year 1 plan should be for any project that I want to make money on. And your starting investment in the project is time and not quite $2000, not even enough to get your halfway through this month’s rent in SF.

The best part is all the way on the right (outside the frame of this screenshot) where it says “$100M/yr revenue at year 7”. If you’re on track for $100M/yr, there’s nothing that can stop you.

Smaller project progress

It’s been too long! Time for some smaller project updates:

I started and mostly completed a microproject I’ve had in mind for a while. A friend has a string of ~750 addressable LED lights (model APA102-C) around the top of his roof deck and they’re controlled by a Raspberry Pi SPI interface. Since all the LEDs are individually addressable, he wrote a bunch of Go to make different patterns in the lights and the code gets deployed directly to the Pi.

I started writing some patterns but they’re difficult to test unless you’re physically there so I wanted to write a “deck simulator” where I could see the output of my patterns locally and revise them until they’re good. No clue how I was going to start but I had some time I allotted as free and this jumped into my brain.

I ended up writing a swappable spi-websockets library that has all the same interfaces as the real one but just forwards the spi data over websockets to whatever clients are connected. Then I wrote a simple visualizer in a canvas that interprets the data and draws all the lights. Some days I dread doing things that I don’t know really well because in contrast with how fast I can get stuff done in Swift, it feels frustratingly slow. Other days I’m OK with spending time learning something new.

So now I have to properly write the patterns I was planning on making in the first place 😂 I’ll post the code when I’m finished and give a quick wrap-up.

I got a ton of stuff done on the CMYK site for my brother two weeks ago, though not so much this past week. I was primarily wrapped up in getting some regular work done and being sick so not much extra time there. There’s some familiarity to it from my front end days but lots of new things to play with and APIs to work on.


I hit a big realization recently related to the work I do and the kind of thing I want to spend my time on. It’s definitely related to me coming off of Treat where I wanted to be a “startup CEO” and thinking more recently about going back to full time work. The core idea is that I shouldn’t let other people’s idea of success become my own. I’ve never been successful when I followed the normal thing to do and my favorite successes are when I’ve done something unusual and made it work. I have a pretty good idea of the box my successes fit into so I’ll be trying to be cognizant of those strengths.

One thing I really like to do is tackle big, weird problems that I have no (initial) expertise in and come up with new and different ways of doing things. I’m serious that it really interests me; I wake up thinking about these kinds of problems and it’s really motivating. I’ve always been a physics nerd but only way one works in physics professionally is by having your creativity beaten out of you over 6-10 years of rigid schooling. Obviously that doesn’t work for me but I’ve learned lots of fun stuff on my own over the years and occasionally I try to apply it in different areas. I’m not afraid of learning new things, particularly things that people think are “too hard” to learn outside of some structured learning environment.

One of the new projects I’ll be working on is a deep investigation into finding different approaches to minimize skin friction in aircraft. It’s one of those obscure subjects that I always do a bit of research on when I hear something related come up and I think I have some good ideas or at least directions to investigate. I’ll write up more about this particular project on its own soon but for now I’m calling it the Boundary Layer project.