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.

Wrapping up treat

It seems like we’ve reached an impasse with Treat . It’s been our focus for almost a year now and while we’ve learned quite a bit about what people want and don’t want, there hasn’t been enough interest in any direction to really warrant the continued effort in the product. That said, I still think two key points we got right will define whatever product wins the mobile gift card segment in the future:

  • You can send a gift card to anywhere (or nearly so)
  • Interactions with your friends during/after sending

The plan is to keep it as a side project so anyone with outstanding treats can still use them and new users can send them. I even have a couple new features to roll out that are mostly done before it really goes into cold storage: full on sender-to-receiver chat (powered by Layer) and a new way to get info about your treat location (business hours, photos, etc) will be heading to the App Store soonish.

I’ll probably write a longer breakdown of the issues faced once that release is out.


Other things for this week: I am writing posts for Try Again before it even exists! This is traditionally opposite of how I usually do things (build first, write later) which doesn’t often work out. In general I tend to gravitate towards the “hard” engineering work first and the actual content or validation steps later which may have been the root of some initial issues with treat 😁 So we’re giving the reverse process a shot.

I lied just a little bit: I did doodle a quick design for the blog and started working up a quick template in Hugo before I started writing this. But it’s by no means complete (I don’t even think I can see this post yet). So the plan is to see how much I like writing about current projects a few times a week and slowly build a local site around it just to see how it feels. I’d like to have a rough site by the end of this week.

I asked around for some connections related to Project Y . I should put together some of the research I’ve done in the case that I get a meeting. I already know one company with a similar goal, though their technology choices make me wonder if they’re competent. It’s a bit of a stretch but I’ll keep tabs on it until it plays out.

I must, must, must resolve the issues with the upcoming PermissionScope 1.0.2 release this week. We’re encountering more and more people creating issues for stuff that’s been fixed and not released so it’s starting to be a drain. Still no great plans for how to test the project because of the complexity of permissions on iOS. Still thinking about it. I’m happy with the contributions and progress for Pantry so far, I should review the enum support and get that pulled in this week. Also, I have a plan for getting a bit more attention for Pantry that I should try this week.

While we’re on Swift, I started writing actual technical posts on That Thing in Swift again during the break. I realized that I’m being dumb not capitalizing on the insane Google ranking I have for some swift search terms so I might as well put a bit of effort into expanding the topics covered. Most of the blogs/results are slow and littered with ads so the least I can do is give a non-shitty alternative. So far I’ve published a piece on guard statements and I’m working on why you want to write your own API clients (as opposed to ad hoc usage of Alamofire or something).