Model vs View

I started my post-college career as a Microsoft Windows developer, building a visitor centre application for Scottish Nuclear’s “Come and See” program in 1995.  Microsoft’s Visual C++ and the MFC framework meant it was relatively easy to make an app “look and feel” like Windows.  You really had to go out of your way to make a really bad UI, but obviously that didn’t stop everyone.

My code back then wasn’t great.  Wasn’t the cleanest.  Didn’t have much attention lavished on its internal structure.

By 2000 I was a Java developer and developing client side apps for Windows was an exercise in frustration, so I welcomed the switch to serverside – servlets and JSP.  On that team we had front end people and designers to build the HTML and CSS, so I was able to concentrate on building a good model and controller layer.  This was the era of TDD and patterns, refactoring.  Complete focus on the structure of the code.  Beautiful on the inside was all I cared about.

Around 2006 I switched to Ruby and Rails, but still I had people to worry about the UI.  I could keep my head clear for refactoring, code smells, classes and methods and structure and not be worrying really about how the app looked.  This was immensely satisfying in the dayjobs, where the front end team could be relied upon to take care of stuff.  It was, however, immensely frustrating in personal side projects. Sure I could build a basic little app to store comics, or run a conference, but I lacked any of the skills to make it look good enough to release to the public.  I quickly gave up.

Then, in 2008, the iPhone.

A return to my days of Windows.  A standard platform look and feel.  An IDE that allowed one to make HIG compliant, clean UIs.,  Again you had to work hard to make something horrible, it was easy to make something look decent.  Satisfying.  My little home projects looked reasonable.  I didn’t feel like I needed a designer to do the front end stuff.

Now, looking at these three phases – Windows, web apps, iOS it strikes me that in each case I’m saying I don’t have to worry too much about the UI.  Either because the tools make it easy for me, or because someone else is worrying about it.  In all three cases I should be free to focus on the internal quality of my code.  To do the things I love, looking for places where code belongs elsewhere, or theres an abstraction that will clear up a ton of code (I’m much happier refactoring code than I am writing it :).

What I notice though is that even though the UI is “easy” (very simple little apps remember, I’m not saying all UI/UX work is easy, just that its easy to make something thats not horrible) having to write those classes at that level means I take my eye off the ball.  I sacrifice a lot of model-level awareness and attention because I’m building the app one ViewController at a time instead of thinking of a domain model.

Maybe I need to get back to server side development, or build command line apps.  🤔



Personal Failures and Resilience

Apologies for how rambly this post will likely be, but I’m resolved to try and write more and worry less about whether its good writing or not.  I’ve had a bit of a crash recently, and one of my realisations is that I essentially work at my job, do chores around the house and then “veg out” in front of TV or Xbox.  Thats it.  Just those three things.

I’m not sure when I stopped having hobbies, but it seems to me its been a while.

Actually I don’t even mean a hobby, I’m trying to call it creative relaxation instead of “hobby”, because a hobby seems to me a thing like building models, or playing golf, and those aren’t the kinds of thing I’m talking about. What I mean is that in my “time off” I am doing nothing creative or useful.  I’m not exercising, I’m not building or making or learning stuff, I’m simply vegetating in front of the TV.

This should be an easy problem to solve.  Go for a walk every saturday morning.  Sign up for a course every tuesday night.  But yet I find that I naturally rebel against structure and schedules.

Anything I decide to do on a scheduled basis I will find a way to screw up.  I have to skip this tuesday because Hope has a show or Jane has a class and so once I miss one, I have failed so I just give up.

It’s like giving up your web business the first time you have an outage instead of being proud of “4 9s” reliability.

Also, I realise I’m sort of blaming my family for making it difficult to carve out time for myself to do some creative relaxation, but in the end it’s nobody’s fault but mine.

When I used to travel I’d tell myself it will be nice to get away and have evenings to myself with nothing to do but work on some interesting coding project. Inevitably all I’d do is watch TV and sleep.

I think I hit rock bottom yesterday. Jane and Hope were in Edinburgh and Isaac was visiting a friend, I didn’t know for how long, all a bit vague. So I’m in the house, alone, with all the time to do something interesting. I told myself that I couldn’t start anything big or go anywhere cause Isaac could call for a lift home at any point. End result, between 2pm and 7pm I ate fried egg rolls for lunch, Domino’s for dinner and spent the rest of the time playing Xbox or watching Star Trek on Netflix. Thought about renting an actual interesting movie but decided not to as I was sure I’d just get interrupted.

I had 5 hours and I did nothing but burn time between eating bad food as some kind of “woo I’m alone!” treat. It wasn’t even a treat. The food didn’t make me feel happy, just the idea of eating bad food because nobody could stop me made me happy.

So what can I do? How can I motivate myself into a routine. How can I get a little exercise, or do something a little creative every day?

I don’t know any trick to it other than trying again and (most importantly) not getting discouraged if I miss a day.

So I’ve set up the Streaks app for the following:

1) complete my Apple Watch activity rings every day

2) 8000 steps a day, which is my current goal in Pedometer++ and I know I can hit it by doing an entirely reasonable amount of exercise.

3) don’t eat bad food.

4) write something every day.

I’m also trying to figure out whether to dust off my electric piano or get myself a guitar as both of those are things I have tried (and failed) to learn before. That will become number 5 once I figure out what I want to do.

2 exercise things, 2 creative things and 1 food reminder.

This is the first day (managed 12,000 steps) The key will be to see how resilient I will be in the face of inevitable failure.

I’m writing this all out here, mostly so I can point to it from a post and ask for some suggestions.

What I Want

I like the idea that I post what I’m going to continue to call my ‘tweets’ to My Own Thing and that they are just mirrored into twitter (Someone Else’s Thing).  There’s some confusion there around replies.  If someone on twitter replies to my tweet and I go into twitter to reply back, thats not going to be on My Own Thing, but in general I like the idea of my posts, both long and short, being My Own Thing.

What I have

  • I have an existing blog, here, on WordPress.  Its available as both and
  • I have a twitter account @PossiblyAlan.  I haven’t switch to mirror to it yet.
  • I have registered for as acf.  I have a paid plan which gives me, which is not My Own Thing, its Manton’s Thing.
  • I have created a GitHub pages repo and sent to mirror into it (though its not jekyll-configured yet).  So currently I post to Mantons Thing and then mirrored into My Own Thing.
  • I have the apps for iOS and Mac, which can post to or WordPress.
  • I have the WordPress iOS app for posting to WordPress.

Questions I Have

It seems like I should ditch the hosted as it runs against the idea of posting to My Own Thing.  I’m currently just posting to Mantons Thing instead of Jack Dorsey’s Thing and then mirroring into Githubs Thing.

That means that I’d essentially just post to wordpress and have hit be mirrored into Mantons Thing which would then mirror it into Jack Dorsey’s Thing.

Does that then mean that all would be is a way to put my WordPress posts into the audience and the twitter audience?  I can’t see why I’d need the apps then?  They say they can post to WordPress, but I can already do that with more complete tools.  This feels like I must be missing something.

Maybe I’m confusing a bunch of use cases ?

Perhaps one use case is you stop using twitter, and you switch to using the apps and a hosted and you swap Jack’s Thing for Manton’s Thing, but you know you can get at Manton’s Thing via RSS or export it.  Thats one use case for someone, but not me as it’s still not My Own Thing, its just a safer and more open Someone Else’s Thing.

The other use case where I post to WordPress ( My Own Thing )  and just use a username to consume the RSS and cross post to the TL and the twitter TL is a separate thing that doesn’t require the apps at all?

Assume I post direct to WordPress, then.  I am ignoring the app and hosted solution and just posting to My Own Thing.  Do I keep posting short and long form posts to ?  Will show short form posts inline and link to long form ones?  Maybe I should create a second WordPress blog which is just the  That means its always ‘tweets’ and they can be duplicated into the timeline and twitter, but it does mean its entirely separate from the main wordpress blog.


Anyway, analysis paralysis and thoughts welcomed.

UPDATE: I just cancelled my subscription.  The only story I could actually understand was the hosted one which mean I was just posting to Mantons’ Thing instead of Jack’s Thing and that didn’t seem worth the effort.  I’ll just keep tweeting on twitter and blogging here on WordPress.


I was looking for a job and then I found a job


Having written a couple of times about what kind of things I wanted and didn’t want to do, and having decided to really take my time an opportunity came along that ticked pretty much every box I had.

I won’t be starting right away.  I’m going to finish up my contract and LS work at the end of June, and then I promised myself and my family that I’d take all of July off.  Kids are on holiday so its a chance to spend some time together as a family.  Its also the anniversary of Jane’s accident so we’re not sure how that will affect us… whether we’ll want to go away or stay home.

But this post isn’t about that.  Its about the job that I’ll start formally on August 1st.

I’m absolutely delighted to say that I’ll be joining Bohemian Coding to work with the team on the award-winning Sketch.

So what kind of job is it?  How does it manage to tick my various boxes ?

My key goal was to find a place where I could parlay my “senior” skills in one area to allow me to be a junior in another, and I think I specifically mentioned Mac development as a thing I hadn’t done much of and would like to do more of.  Thats what I’m going to get at Bohemian.

The role isn’t quite defined yet, and that’s by design.  I’ve described the kind of work I do as the spaces in between the moving parts of a team.  Sometimes its oil to reduce friction, sometimes its glue to increase cohesion, but in both cases its moving through the people who do the real work and figuring out ways to make the whole better than the sum of its parts.  Thats the kind of thing I’m going to be doing with Bohemian.  Not really quite a project manager.  Not really quite a team lead.  Not even quite a coach. Luckily Bohemian doesn’t have job titles so I don’t need to even give it a name.

I’m going to be asking a lot of questions, trying to understand whats working and what isn’t, and how to help this amazing team be even better.  Thats my day job.  I couldn’t ask for a better one.  I’m also hoping that by being involved in the day to day operations of a Mac development team I get a chance to try a few small stories, or pair a little on some larger ones.

Bohemian is distributed by design, with people all over the world.  This means that the day to day practicalities of my job won’t change.  I keep my small office a couple of miles from the house.  I’m close to Jane’s work and the kids schools in case I’m needed (which I am more post-accident).

I’m glad I waited.  I’m glad I didn’t panic.  I’m glad I took the time to have a lot of conversations and be sure about what I was looking for.  I’m glad I didn’t go into a single interview desperate for a job at any cost.

I was looking for a job and then I found a job, but heaven knows I’ve never been less miserable.




Hunting High and Low

So while I figure out the longer term career stuff (conversations are ongoing) I thought I’d take the time to build a couple of apps I’ve had on my mind.  I’m procrastinating by writing, but also I’m trying to write more and this is whats on my mind.

I know what I should do is put Xcode away and try and think about what I want to build.  I should be making app definition statements (though I notice that idea is gone from the Apple developer site, but available in the wayback machine ) and thinking about designs and all that good stuff.  I should be way up high in the clouds, looking down at the landscape, trying to figure out if the app makes sense and how it might work.

What I’m doing instead is hacking on a model layer to support the first app I thought about building.  I’m down in the trenches building an engine in a framework that the app (and notification centre and the watch) can use.

This has the advantage that coding is something I’m good at, and product design isn’t.  It also has the advantage of the illusion of progress.  I feel like I’m busy making something.

Unfortunately without all that other stuff, I can’t really tell if I’m building the right model layer for the app.  I have a rough idea of the objects involved, and CRC lets me figure out pretty well the responsibilities of each in any given operation, but who knows if the operations make sense?  I can’t see enough to know if what I’m building makes sense in context.  I can’t see the wood for the trees.

I think I’m going to force myself to stop.  Just like the larger career questions, I don’t need to hurry.  I don’t need to demonstrate progress to anyone.  I can take my time and stay in the clouds where the view is better.