This one is late. I started writing my first words mid-December. I think it’s best to quote my friend Maddie: “How do you write anything positive with such a shit-show of a year?” - last year we had Brexit and Trump. This year both are showing to worsen. It’s hard not to be constantly anxious when the place you grew up in is splitting apart and the place you moved to has split.

The toxic environment of 2017 dampens achievements and really brings a much more sombre tone to this year’s write-up. There are so many of things I’m happy about and lots of wins, but it’s hard to reconcile things I’m proud of with the worsening state of the UK and the US.

I don’t want to contribute to the depressing atmosphere too much, so I’ll start off by talking about mine and Danger’s most empathetic/selfish story of the year. We failed as dog fosterers.

My new VISA allows for Danger to start working, eventually (she still can’t), in the USA. Until then she’s been getting through a lot of Netflix. She wanted to do something a bit more meaningful with her time, so she signed up with Animal Haven (a dog/cat shelter) to volunteer once a week. By the second week, she was doing 3-4 days a week helping out with dogs. The centre got chaotic due to the hurricanes in Houston, Florida and Puerto Rico, which were wrecking havoc with civil infrastructure. Animal Haven were regularly receiving dogs from those areas, and Danger was on the fostering mailing lists. We thought about helping out, and so talked to Dave, our housemate, about fostering and Danger went down at midnight to help prepare.

The next day we were assigned a dog, and Murphy (then named Vesper by the shelter) arrived in our cosy NYC apartment. We don’t know much about Murphy’s background, and we did a DNA test which only muddied the waters even more. Does this guy look like a third-chihuahua, quarter-rottweiler and a mix of some other stuff?

I dunno. Anyway, after a week of fostering, we took him back to Animal Haven and Danger decided we weren’t going to be letting him stay there. I supported this call. Within a few days we had a new member of the family. He keeps Danger on her toes, and now she has someone to watch Netflix with. She’s been doing an amazing job at training him, it’s a really time-intensive job raising a puppy and luckily for us - she has that time. We’ve got a good network of friends who love helping out, and our housemate Dave is also a dog person. :+1:

We’ve had Murphy for 4 months now, it’s been great.

	<h1><span style="font-size:84px">/</span>Wedding Party<span style="font-size:84px">/</span></h1>

I originally opened this post on our our marriage and weddings, as it’s really shaped a lot of the year. I proposed last year in Central Park, and we handled most of the marriage paper work in 2016. We knew that arranging a wedding-like event was a lot of time and effort, so we gave ourselves 6 months to run an event and to prepare to move out of Huddersfield to NYC.

We didn’t want a big expensive wedding. Neither of us are particularly fussy, and we were paying for everything. So we had full-control, low expectations and could basically do whatever felt right. We wanted to do it local, Danger had been living in Huddersfield for over a decade, and I had appointed it as my unofficial-hometown (Halifax was closer to the village where I grew up) - as we were going to move to NYC, we were also considering it a farewell party also.

With both of us being non-religious, (we both subscribe to Optimistic Nihilism) we could skip on churches and more formal wedding events.

We ended up booking the place where I used to co-work as a venue: Bates Mill. Bates Mill is this innovative industrial factory space, where they host textile mills, tech co-working spaces, artist studios and thousand people all-night raves. It’s run by these two lovely brothers who are so fun to talk shop with. I got in touch saying that we wanted to do our wedding there, but that we were planning on handling it all ourselves. This made the event walking distance.

Danger handled most of the event setup. She had to leave her NHS job as a podiatrist to come to NYC, so she opted to leave a little bit earlier than needed to handle all the last minute preparations. She arranged a bunch of the magic. We invited people from all over the world.

For now, check the photos for our wedding on on Danger’s Facebook.

An awesome connection is that we managed to get the same photographer for our wedding as my sisters both had. He’s been to all sort of environments with our family: my older sister had a wedding in sun-drenched Crete, my younger sister had her wedding in the snow-topped peaks of Canada and me and Danger got married in the rolling green hills of Yorkshire.

[Known TODO: A set of all photos coming soon]

Our wedding party went off without a hitch. It’s cool because this is our second wedding party. We became legally married back in October 2016, and had tiny civil ceremony in Huddersfield’s town hall and then ordered Indian food back at my sister’s house.

In keeping with having two wedding parties, we had two honeymoons. The first one was a weekend away in Wales because we wanted to do the world’s biggest underground trampoline. We actually missed our booking at Bounce Below and went back the next day. We lucked out - we missed a school holiday, and the day after was empty, so we had the entire place to ourselves for 2 hours. It was fun.

In contrast, our other honeymoon was an epic three weeks in Japan. We started out in Tokyo, then moved to Kyoto, Osaka and Hiroshima and then back to Tokyo. Japan is one of the few places both of us had never visited. We both had an amazing time, for us both our favourite memories was doing MariCar: go-karting on Tokyo’s main streets. Check the photos on Danger’s Facebook and my Exposure.

We started out in Tokyo for the try! Swift Tokyo, where I gave what was my last big talk for the iOS community.

We spent a lot of time just walking around the tokyo, I’d seen many aspects of the city via anime/games, but it was super cool to see what they were actually representing. We walked through some of the seediest areas, and visited the terri-great sex shops. I spent days looking for the famous Japanese photo booths, and we got amazing shots.

We both found a love for Japanese-style fluffy pancakes they’re beautiful.

We did some fun tourist things, ended up on TV reviewing okonomiyaki, did the Asahi Beer tour, spent time in the hiroshima bomb museums and the cup noodles museum.

It’s a beautiful and complex country. I’m glad to have spent the time there. I now love ramen.

	<h1><span style="font-size:84px">/</span>NYC<span style="font-size:84px">/</span></h1>

Back when I was 24 I optimistically moved to Huddersfield from my parents’ with no job, a tiny amount of savings and only knowing a few people there. I matured in that town, I owe it a lot. I’m sorry to leave it, but I don’t think I could move back. I’ve turned into a city person, after ~28 years of being a country boy.

The underlying pull for the big city is that there are just so many more people doing the same kinds of things as me. This helps give me a sense of place. Huddersfield was great, but there wasn’t much of a developer scene. I was close enough to Leeds and Manchester to occasionally participate in theirs, but the difference in scale to NYC is dramatic.

Since Danger arrived, we’ve been living with my housemate since Huddersfield in the city, it’s a little small, but they’re not new to each other. Dave’s been though a lot this year, and I’d like to hope the extra company helps.

	<h1><span style="font-size:84px">/</span>Artsy<span style="font-size:84px">/</span></h1>

I’m in my 7th year at Artsy. It’s cool to look back at the brief mention of Artsy in on being 25 and see this section expand over time. When I first joined the general stressors were “will this work?” - the usual for an early stage startup, and it did. As the product and company matured it lowered a lot of the risk. Yet this year has been my most stressful, and looking at it from the other side of the project it’s hard to easily pinpoint anything exact for that.

I’ve never really had problems around deadlines and external expectations at Artsy. Yet, I ended up being roughly 5 months late on what seemed like such a simple 1-2 month project from the beginning. I’m still struggling to quite get why that happened. After the 1st month of being late I dropped almost everything which I enjoyed doing but wasn’t directly related to this project’s bottom line. No more: blogging, public speaking, improvements to our tooling and I even started breaking my personal rule of not doing Artsy product work in my personal time.

The people I work with are understanding, but that doesn’t really help dealing with personal guilt.

It feels like the last few months at Artsy have just been a bunch of sucker punches: I’ve been feeling really down about being late, our head of design Robert announced he was leaving and then Artsy’s first engineer, Craig, announced he was also leaving. Both of whom are people I’ve worked with for the full 6+ years. I did a lot more work with Robert when we were a tiny company, and I’ve been doing a lot of work with Craig since we de-siled mobile devs and moved to JavaScript.

6 years is a long time to work at the same place, so I can totally see where they’re coming from. Robert started his own design agency and Craig just wants to chill out for a few months. But damn though, I’m gonna miss them.

Even with those lows, in 2017 Artsy continues to be a really cool place to work. I still think the work is a net positive to the world and worthwhile of my time.

When I think to myself, “what would I want to do if I left Artsy?” - it’s basically exactly what I’m doing now. I’d want to work on the type of projects I work on at Artsy: sometimes bleeding edge, sometimes perfectly boring. I get to work with people who are willing to dive deep into all sorts of potential technologies and that’s inspiring. Artsy isn’t in the “disruption” business (check out this repo for more info) both at business level and within the dev team, we’re still an outstanding example of community-wide contributors within the iOS and front-end world for our size.

There’s an upcoming re-org that I’m apprehensive about, and I’m less excited about improving dev culture at work than I used to be, but it’s likely we’ll be expanding the dev team in 2018 and trying new things - I’m excited for that.

	<h1><span style="font-size:84px">/</span>Code<span style="font-size:84px">/</span></h1>

Somehow this year I ended up being one of the top 20 most active OSS contributors to GitHub. Part of this is a life-hack called Open Source by Default. I’ve been focusing on 3 things in particular this year:

Hardening of CocoaPods: The last 3 years have been pretty crap in the world of iOS, especially if you care about mundane topics like dependency management and dev tooling. They are not flashy problems, but are the biggest on-boarding barriers for joining and participating in a community.

What spoiled working on CocoaPods for me was that the GitHub Mac team shipped Carthage which stuck around and fragmented the ecosystem. Then a couple of months later Apple announced their own dependency manger which deprecated both Carthage and CocoaPods. This is old news now as that all happened two years ago, but the Swift Package Manager doesn’t actually deprecate CocoaPods, because it doesn’t handle the same problem. It created an entirely new domain for dependency management (Swift server/CLI apps) and left iOS/macOS apps to CocoaPods. This sucks.

For the last 2 years, Apple has made it not worth putting time into the biggest iOS community project, relied on by millions of apps]8. This took the energy out of the community, and they have one full-time employee working on a replacement. This environment meant most active developers on the CocoaPods team left to pursue projects more worth their time.

However, you can’t just drop a big project like that, servers need to keep running, PRs need to be merged and the needs of your dependents aren’t static. Luckily, there’s fresh blood in the project, Dimitris Koutsogiorgas is basically handling pushing the project forwards on his own now. There are other people like me who ensure things don’t fall over, but that’s it. I don’t have the time, energy or inclination to help grow the contributor base any more. So it’ll just stay as is. Which is sad.

On the bright side, CocoaPods still exists, and 2 million new projects started using CocoaPods this year. It’s not exactly gathering dust. Still, I feel a loss that CocoaPods could be so much more of a force for lowering the barriers of entry to OSS and improving the community.

JS Infrastructure - Artsy moved more of our native focus to JavaScript, we needed to ensure that a lot of the fuzzier edges of JavaScript were hardened. This ranges from feeling confident in the lifetime of our key dependencies, to knowing that that Artsy can influence this. The JavaScript culture is pretty different from the native.

A lot of this move has been technical, I’ve made contributions to many of the key tools that we are using to build our apps with. For example:

I feel a lot more comfortable in the JavaScript community this year. It’s only been a year and a half, but I think I understand where I fit and how the majority of the many node ecosystems work.

Danger - I once thought that I would be done with Danger, but Artsy’s move to consolidate on JavaScript meant that I needed to really grok the ecosystem fast. I had been thinking about how to build Danger on a server for a year or two, but in order to do it I’d have to make a lot of drastic changes. So I used those as momentum to start Danger JS.

I covered the whys and hows pretty comprehensively in this Artsy Engineering blog post: Danger and in On Being 30. No need to cover it all in too much depth here.

Danger is something that has gone from being a quick, small project to scratch an itch, to a complex many-headed hydra:

Each one of these projects are serious in their own right, and maintaining them all is a non-trivial task. In the last year I’ve shipped around 250 PRs to the danger org, and handled thousands of issues. That’s a lot of spare time code.

Peril is a great idea, but an engineer at GitHub is building a similar project, probot. It’s great, we use it. Peril occupies another space, but the venn diagram for what they do has a strong overlap. I could easily spend the next year or two building and exploring Peril, but should I? Sometimes the answer feels like yes, sometimes the answer feels like no.

Some other highlights:

Here are some tweets that have made me real happy or re-think ideas this year: 1, 2, 3, 4, 5, 6 & 7

And from when I felt like had time I to write: 1, 2, 3, 4 & 5

	<h1><span style="font-size:84px">/</span>Stories<span style="font-size:84px">/</span></h1>

I’ve spent so many years studying programming and code architecture. I can jump into most codebases and have a sense of where people have taken shortcuts for time trade-offs, been new to an environment, or written really well thought-out code. These are mostly gut feelings from reading and writing so much, you grow a sense of appreciation for the art.

I’ve taken a considerable amount of time this year studying narrative structures. I started off buying a few books, but they ended up being very male by default - which turned me off finishing most. Instead I moved to YouTube, and that was such a great decision. There are so many great youtube channels devoted to critical analysis of great movies/shows.

I can sit and watch hours of people picking apart media. This year, I have listened to around a hundred hours of a podcast doing critical analysis on just one book (it’s a great book). Danger and I watched a lot of movies and TV.

On the screen: American Gods, American Horror Story, Black Butler, Blackish, Bob Burger, Bojack Horseman, Cheers, Dear White People, Friends, Game of Thrones, Mindhunter, One Punch Man, Parks & Recs, Preacher, Rick & Morty, Steve Universe, The Good Place, The Handmaid’s tale and The Wire.

The Wire was my favourite. I enjoy going back to the tv-tropes page for The Wire to get a deeper understanding of how they tell that story.

This was a really good year for games too: Dead Cells, Super Mario Odessey, Zelda: Breath of the Wild, Splatoon 2 and Destiny 2 were all worth my time. I got to run a raid for the first time thanks to destiny.

I read a few books too: The Three Body Problem, Worm 2, The Gender Knot: Unraveling Our Patriarchy, Version Control: A Novel.

I’m real excited for Worm 2 (it’s name is “Ward”) there’s a new chapter every tuesday and saturday. Then every wednesday there’s an episode of We’ve got Worm, which really helps wrap the pieces together.

	<h1><span style="font-size:84px">/</span>:wave:<span style="font-size:84px">/</span></h1>

I don’t really know how to end this. I’ve re-drafted these paragraph so many times for this year, here are some of the highlights:

None of these got past the full review cycle - but they are all feelings I’ve felt, which makes it real. This is a year where the good outweighs the bad. I used to always say “this has been my best year” and for 2017? it’s not really been the case.

I explored feelings like this before in 2015 when I felt a resurgence of anger at the NSA/GHCQ with “Spheres of influence” and really started to re-think what I wanted to spend my spare time on. I feel like the start of 2018 is another one of those times, but it’s not really anger that incites it, it’s apathy.

I have less of a connection to the programming communities I used to care about, a lot of my long-term working buddies have left Artsy and the culture feels different. These used to be core pillars of my identity and this year they both crumbled a bit. Maybe it’s a transition year.

I’d been in this really weird/low head-space for months, but the thing that really broke me out feels so irrelevant. I received a notification for some code review on for one of our Swift repos. It runs one of our iOS apps through a code formatter which we use in JavaScript, but for Swift. I felt really optimistic, and happy for the people I’ve moved on from. There’s like a million great things that happened in the last 6 months, but a code formatting pull request is what made me break back through the ice. Aren’t humans weird?

So, I gave myself two new years resolutions: