Here we are, four months into 2018 and I'm finally getting around to wrapping
up 2017. I think I've been putting off for two reasons really: I've been
swamping myself with side projects, which consume most of my time, and to be
honest, with the exception of one Big Event, I don't really look back on 2017
as something really worth remembering. It's depressing frankly.
...but first, the good news.
We Got Married
I may have proposed back in 2015, but we finally
made it happen in August of 2017. We decided that
as this was our wedding, we didn't need to follow anyone else's conventions
or demands. It was going to be that we wanted, and what we wanted was: cheap,
low-stress, and as easy as possible.
The real problem was all of you people. You insist on living all over the
world 😛. This meant that if we were going to have a wedding and have it be
cheap & low-stress, we'd have to break it up over 3 countries. This way, the
events could be small & simple, and we could still see as many of you as
Wedding #1 was the legal ceremony. Having it in the UK means that our license
is less likely to be a problem in other countries than it would have been
coming from Greece. It also meant that organising something would be easier &
cheaper, since we could do it ourselves and keep things simple.
Christina got all prettied up with nice hair & make up, I got a linen suit (who
the hell wants to sweat like crazy in your wedding photos), we booked a slot in
the Cambridge registry office, and reserved a hotel banquet room for the
evening. That was it. Those who could make the trip saw the "I dos" and then
we took pictures, ate a lot of food, and called it a day.
Wedding #2 took place about a week later just outside Athens at a beautiful
restaurant overlooking Lake Marathon. Christina's family covered the cost of
this event and did all of the organising. All we had to do was show up.
Best Gift Ev-ar. Friends that couldn't make the Cambridge event, hopped a
flight to Athens for this one, and that led to some nice siteseeing around town
with people we love but don't get to see very often. Honestly, that whole week
Wedding #3 is still coming and will be in Vancouver this Summer. I'll try to
post about it later and include some pictures too.
My travel history for 2017 was really quote disappointing. Where in the past,
I've managed to travel to more than 10 different places in a single year, 2017
consisted of only 6 -- all but one were places I'm already familiar with.
As is tradition, I made the trip out to Brussels for FOSDEM
in February. The conference is getting crazy-popular, like, impossibly busy,
and the resources available remain finite. Most of the rooms are full of
people who showed up to hold a seat for the next talk, and the lines for food
are just brutal. On the one hand, it's wonderful that Free software has
garnered such interest and that a Free conference like this can draw so many
people, but surely, there must be a way to raise money to expand the conference
facilities without tainting the ideals that started it all.
In April, I made the trip out to Florence for DjangoCon.
I have a special blog post devoted to the event in
detail if you're interested. Florence is still beautiful, but a lot of the
wonder seemed to fall away for me on this trip, and not just because all of
the food I had was disappointing.
I guess that when you travel for work, you really do get a different feel for
a place. I didn't feel like I was exploring so much as going somewhere new to
then ignore that somewhere new in favour of doing what I do at home. Maybe I
would have felt different if I'd never visited Florence, but I think the lesson
here is that if I'm going to travel for work, I really should bookend the trip
with some personal time.
The only new place I visited in 2017 was Prague in April. Christina was
attending a conference in Brno, and did the smart thing: she added some
personal days to the trip and met me in Prague so we could do a long weekend.
It was only a short trip, but still well worth the time & money. Prague is
as beautiful as they say, and the food wasn't bad either. It was nice to be
somewhere actually foreign again, where English translations weren't
immediately available everywhere, and wandering through the old city is an
excellent way to spend a Saturday.
Vancouver & Kelowna
In May, I got news that my grandmother was fading fast and that she didn't have
much time left. I decided to fly home to say a proper goodbye and to try and
help out where I could. As it turns out, her body refused to give up, and she
recovered, though her mobility was greatly affected. Still, it was nice that
the trip didn't end up being as somber as I thought it would be when I boarded
This was also the week that Kelowna flooded though. The snow on the mountains
melted faster than anyone was prepared for, and the water system that drains
everything into the sea was not capable of handling the changes. As a result,
all of the lakes in the Okanagan began to back up, and my parent's home (and
those around them) was flooded. No amount of sandbagging would do, the water
was literally coming up from under them as the water table rose.
On my last day in town, I were awoken at 1am by a police officer that had come
to the door to evacuate us.
In the end, the damage for some was substantial, while others -- like my
parents -- managed to avoid the worst. The water went under their home, but
didn't create any structural damage. The worst of it was that their entire
yard was lost and had to be rebuilt.
Other families weren't so lucky.
Athens & Ios
A few months later, my parents made the trip from Kelowna to Cambridge for
Weddings 1 & 2. They were here for the ceremony (my dad was the Best Man) and
then they came with us to Athens where we did some sightseeing for a week
together. After that, Christina & I disappeared for a week to the island of
Ios (Ιος) for our honeymoon, and my parents went on a mini-cruise through the
It was all very pretty. Pictures can be seen here.
I had a couple holidays left over as the year came to an end, so decided to
take a long weekend in Amsterdam to see some friends. Mihnea was kind enough
to put me up in his place for a couple nights, and when I stopped by the RIPE
NCC office, they invited us both out to their annual Christmas party at Nemo!
I spent much of the night just catching up with everyone, chatting with Robert
about Atlas architecture, and just plain enjoying my time there. That company
really is a great place to work.
Oh, and the food. I did miss Hotel V & Albert Heijn. Burger Bar was a
terrible disappointment though.
In terms of my day job, I'm afraid things haven't been too exciting, but at
least the people I work with are great.
When I started at Money Mover, everything was running on an old version of
Django and Python 2.7. I made it a priority from my first day there to bring
everything up to date and it was about as difficult as you'd expect.
- The entire project had 200 unit tests, 50% of which were failing.
- It was running Django 1.6 and Python 2.7
In my year there, I increased those tests from 100 (working) to 1100, and
leveraged that coverage to migrate us first to Django 1.8 (for a while), then
to Python 3, then to Django 1.11. I also added a async subsystem (RabbitMQ +
Celery) for bulk jobs and other heavy tasks.
If ever I wasn't sold on tests, I sure as hell am now. Migrations like these
would have been so much more painful without adequate testing.
The truth about my job though is that the work isn't interesting. For
business, this is good: you don't want interesting code, you want
predictable, stable code. Experimental codebases make for bad banking
platforms. However, as an engineer, I can get bored pretty fast with stuff
like that, so 2017 saw a boom in my side projects.
It's still going strong. I started it way back in 2015 and at this stage, the
community does more work on it than I do. Mostly I step in once or twice a
week to answer questions in the issue tracker,
or accept pull requests. I've done a little original work, but for the most
part, I try to stay out of it as my interests are elsewhere.
There's also been a few cases of people inventing drama around the project,
claiming that I somehow "stole" the project idea (or maybe the actual code, I'm
not sure) from the much-more-polished Mayan EDMS,
but I've done my best to stay out of that too. I mean, the code is Free and
Open. Anyone who wants to know the truth can just look at it to know that the
projects are clearly an example of simultaneous invention.
There've also been a few cases of companies & individuals contacting me about
the project specifically. In most cases, they want to know if they can find a
way around the GPL, but some just want pointers about technology used, or want
to know if I want to co-found a company with them.
My Twitter-aggregator, Albatross
was the code behind my Tweetpile project years ago. Unfortunately, when
Twitter changed their API rules, I realised that it wasn't a feasible business
model so I shelved the project. The domain lapsed and I forgot about it.
However when I moved to Cambridge, I met a woman doing a PhD that involved
analysis of social media data and so I decided to try and repackage the project
as a self-hosted thing. It let me expand my understanding of async and
event-driven code as well as improve on my Docker-foo, and after a month or
three of tinkering, it's now in a finished state. The latest release, codenamed Cersei Baratheon,
can be installed and run with just a few clicks.
It started as a frustrated blog post,
but one night I got it into my head that if no one was doing it yet, that I
would start. Aletheia is an idea
and technical spec, while pyletheia
is the implementation. The gist is that this is a way for people to guarantee
the source for a media file (image, audio, or video) and guarantee that that
file hasn't been altered since it was released by that author.
At the moment, only JPEG images are supported, but I'm almost done hacking MP3
support into it as well (which opens the door for all sorts of audio & video).
I also have a presentation
that I'm just putting the finishing touches on. I hope to give this talk at
the local Python meetup.
It's not a side project so much as a weekend-long event, but 2017 was also host
to the Sudo:immerse hackathon here in Cambridge -- an event which my team won
and that didn't suck.
2017 is also the year I joined Codebar. Think of it as
a monthly meetup tutorial session where people who can code teach people who
want to learn -- with one exception: straight, white, males aren't allowed.
The thinking is that there's enough people like me in this field, Codebar is an
attempt to balance the scales a bit.
To be honest, I'm typically not a fan of exclusionary tactics, especially when
your goal is inclusivity, but the reality is that all my life, programming
has been straight-white-male dominated and nothing else we've done has fixed
that. I'm happy to give this a shot. Besides, it's fun!. I've already
helped one woman with her potato science PhD, another with basics of server
access and typical dev-ops, and my current pupil is learning basic Python
skills so she can do that social networking PhD I mentioned earlier.
I did have a rather ugly disagreement with the mods in their Slack channel
though, so my participation is limited to the in-person meetups. I don't have
enough patience to deal with people obsessed with thoughtcrime (long story).
Along with the various bits of software I've written over the year, I also
joined an online community of people aspiring to be better Python developers.
Most of the members are very green, but a few are like me: happy to help and
wanting to share what we know. I spend most of my time in the Slack group,
but there's also a Github account with
monthly challenges that the membership hacks on. For the most part, it's just
nerds getting together to help each other out, and it's fun to be involved.
2017 has been very tech-heavy. Sure, we got married this year, but outside of
that, my life has been largely tech-focused. I'm starting to feel like I've
forgotten how to be anything else and it's freaking me out a bit. I may be
a bit far into 2018, but my resolution for this year is to do something else
with my life as well. That is to say, I'm not going to give up my various
side projects or anything, but I need to get a handle on balancing this stuff
out with having a life that doesn't involve code.