I’ve got three coding-related goals for this year.
- Ship something I’m proud of
- Improve my CS skills in a measurable way
- Keep a development diary
I’ve always had the somewhat nebulous ambition of “getting an app in the app store”, which… Well. Shipping is way hard. That gulf between hacking something together that works for you on a good day if you don’t hold the iPhone wrong vs. something that is vaguely comprehensible by beta testers – the first 90% and the last 90%. None of that will be new to you, wise reader, but apparently I needed to learn this the hard way (I can’t be the only one, can I?).
So how can I get to shipping, this year? I’ve a whole list of app ideas, don’t we all, but I’ve done some hacky but serviceable work on 3:
Project A is the app I started working on a few years ago as I taught myself iOS and Objective-C. It was daft really, because as a specialized mapping app it was pretty ambitious in scope anyway, let alone for a first app. I put a lot into it though – CoreData, lots of high level APIs, concurrent programming issues, project architecture, CocoaPods and dependencies, custom UI… However, it very much taught me in a “what not to do” fashion and there’s no way much of that code is ever seeing the light of day, even though I still believe in the elevator pitch, and I’d love to support the app on a long term basis. It has competitors, sure, but nothing that does exactly what I’d like it to.
Projects B and C are simpler apps that focus on things I love – fitness and cooking respectively. Both are hacked together and working, ish, in Swift. Both could be shipped this year. B is the more straightforward, has a bigger audience, the potential for a Watch component (fun) and is data-driven – effectively it’s another view of your HealthKit data with some analysis, similar to David Smith’s recent work1. I would use it every day if it existed but for sure there are competitors which do similar things. C is far more specialized with a much tinier audience, and might need complex custom UI to really make it pop. Realistically, I’d use it at most once or twice a week, and I’d be a fairly hardcore user. It’s unique, but if no one’s done it before, the market probably ain’t there… Fun, though.
- On that basis, the sensible course of action would seem to be to do another check on competitors to B, to make doubly sure there isn’t a perfect duplicate for what I’d like to do. If not, get that done, get it out and start getting experience in supporting an iOS app.
- Project C seems very much like something that can stay in private beta for a good long while, although I will put in some work to get it working in Swift 3 for my personal satisfaction.
- And Project A: file under 2018.
I’m a self-taught programmer, so let’s just say I have some “tiny holes” in my theoretical knowledge 😅.
- I’ve signed up for Stanford’s Algorithm speciality on Coursera. It’s going to be challenging, recursion can go fuck itself until it reaches an even more unpleasant base case, and my husband is totally enjoying those spaced out moments when I finally have an epiphany during dinner.
Waffling on often helps me to sort my ideas out in a more logical way, so I’d actually like to get more words out here rather than in the Drafts folder of silent doom. To that end I’ve:
- updated this blog to use the Hugo back end. It makes publishing actually as simple as pushing git, rather than trying to build a Ruby environment with endless dependency conflicts and updates - what a fucking nightmare that turned into, and the principal reason I haven’t blogged in a year.
- supported Manton Reece’s Micro.blog project. I hope that will give me an extra push, when it ships, to keep writing a more frequent development diary.
- If you like data, heart rate training and have a Watch, I recommend you try David Smith’s Workouts++ app. I use it to track zones when spinning or circuit training and really appreciate the ability to customize colours (everything is now pink, ta v much) as well as to save haptic alerts at different heart rate levels for custom workouts. ^