Blog

January 08, 2017 17:19 +0000  |  Employment Family Greece Holy Places Homelessness Moving Programming Racism Spain The United States Travel United Kingdom 0

This was a big year, bigger than I had remembered when I sat down to write this thing. Somehow, I'd forgotten about half of this stuff, and rolled the other half into 2015 in my head. But 2016 wasn't all terrible. Here are the highlights:

Personal

2016 was a big deal on the where-to-live front. I finally got my wish and we moved away from the Netherlands and into a real city: London: The Centre of the World.

It turns out however that London is a rat infested toilet drowning in social inequality in a country rife with xenophobia, nationalism, and a dangerous mix of pride and ignorance.

Yes, you can quote me on that.

Our flat was a dark, damp, rat infested hellhole with a ground-floor view of a wall (the British love walls and fences almost as much as they love classism). The Tube is a remarkable feat of marketing that has managed to brand a hobbit tunnel of loud, stinky, smoggy, dampness as "modern" and "cultured". And absolutely everywhere you go, there are homeless people, stepped over and ignored: immediately by the public, and systemically by the government. They even have a quaint British term for them so it doesn't sound so tragic: rough sleepers.

London is amazing if you're a tourist, but once you live in its decaying buildings, commute on its antiquated transport, or are forced to breathe its toxic air for more than a few days, you recognise it for what it is: a terrible place to live.

...which is why we moved to Cambridge

The air is cleaner here, the roads more bike-friendly (though it has a long way to go before achieving Amsterdam-level cycling support) and nearly everything is walkable. It's a town more-or-less built for people, as opposed to London, which is built for plebs.

Our flat here is in a lovely modern building with proper ventilation and underfloor-heating. It's cool & quiet in the summer, warm & dry in the winter, and my commute is 30 minutes by bike along the river. Christina rides her bike through town in about 12 minutes.

Come visit us in Cambridge. You'll wonder what the hell everyone is doing in London.

Travel

As with every year I've lived in Europe, I did a reasonable amount of travelling this year, and once again, it feels as though I didn't travel enough.

Amsterdam

We may have left town, but Christina still had to return to defend her PhD in a process that's part ceremonial (you should see the Wizagamot-esque robes) and part academic (she literally had to defend her PhD against questions from academic rivals and friends). Unsurprisingly, she dominated the event, and walked out with a shiny new piece of paper attesting how brilliant she is.

Αθήνα & Μετέωρα

Right after Amsterdam, we hopped on a plane to Greece for Orthodox Easter where I once again ate far too much food and enjoyed the sunshine. This holiday included a road trip out to Μετέωρα where we did a little hiking and sightseeing around the monasteries in the area.

Copenhagen

The bi-annual RIPE Meeting was held in Copenhagen and as they had a hackathon for monitoring software, I signed up to play -- and my team won! Our project was called HALO, a head-sup display for your network, and the source code is here if you're curious.

Sesimbra

Christina's friend Ana got married in Sesimbra, Portugal this year and I'm so glad that I was able to attend. The wedding was lovely, and the country, beautiful. The food was good, the people friendly, and the view from our hotel room was awesome. Twitter has a few pictures.

Vancouver & Kelowna

The biggest news of the year is of course that my niece, Lucy was born! I was careful to time our trip home to coincide for her birth, but she had the indecency to be born a couple weeks premature, so when we finally showed up, we got to visit her in the hospital.

The trip home was also an opportunity to introduce Christina to Vancouver in the summer time. We also had an engagement party there so my family that can't make the trip to Greece would have an opportunity to spend some time with Christina. There's a great big blog post about it if you're curious.

Brussels

I was in Brussels twice in 2016. Once for my annual trip to FOSDEM, and later for Freedom not Fear, a series of meetings & workshops around freedom, surveillance, and politics in the EU. The former was great (it always is), and the latter, combined with my experience at Mozfest this year has given me some serious insight into the nature of EU politics. I want to do a separate post about that later though.

Madrid

There was another RIPE Meeting in 2016, and I showed up for that hackathon too. We didn't win though -- I think -- I had to leave before the announcements, but I don't think we did. The project was called "Pinder" or, Tinder for peering and the presentation is here, the code here, and an explanation over at peer.sexy.

Αθήνα, Again

One last trip back to Greece this year to make up for all the time Christina lost while working on her PhD. This was primarily a Christmas trip, so it was all just meeting with family, eating far too much, and exchanging presents. I also used some of the down time to work on my own family project that I mentioned in a previous post: my grandpa's video archive. There are some photos here if you're curious.

Professional

This was a big year for me professionally. I started contracting, started working for government, and took on a lead role at another company. I also almost got a job I desperately wanted, so I'm including that here too.

UKTI

The move to the UK started with my first (and likely last) government job ever. This was big money and a big title combined with everything you've heard about government work and more. I have never been more angry and frustrated on the job than I was there, but I probably would have stuck it out were it not for the fact that they were selling weapons to people what shouldn't have them.

Gynii-Me

In parallel to my work at UKTI, I started helping out a brand-new start up with occasional technical advice in what their options were for building a women's fertility web platform. I don't get paid, but I do help out where I can, vetting agency proposals and explaining complex technical topics to the company CEO. It's a fun side gig, and they're good people so I'm happy to help where I can.

Cyan

I moved from UKTI to a company called Cyan/Connode who were super-convenient, as they had a London and Cambridge office and we were moving up there in a few months. I helped them out on the technical front, and helped management understand a little about why they were having retention problems, but was terribly unhappy, so I got out of there after a few months.

Mozilla

In my quest to get out of Cyan, I applied to Mozilla for what would have been a pretty amazing position: engineer on the incredibly popular Mozilla Developer Network. Unfortunately, while I made it to the very last round, I didn't get the job, which sucked, but it was an honour to make it that far anyway.

Money Mover

I ended up moving on to a fintech company that has an office just outside of Cambridge and wonderful staff of truly friendly and engaged people. Seriously, best work environment ever. It's a small team right now, but we'll be growing in 2017. My role is Lead Developer which is pretty fabulous, and my current Big Job is picking up the code left from an agency that did the bulk of the work for the company over the last few years and making it ours. Having worked at a few agencies in the past, I suppose I deserve this :-/

Projects

Like every year, I overextended myself on New Projects as well as building on the old.

Paperless

Early in the year, I suddenly lost interest in my super-popular project, Paperless when I discovered that there was an eerily-similar project out there doing things better than I had. I didn't really do much more than field pull requests for much of the year, but toward the end, there seems to be a lot more interest all of a sudden, and I've started doing a little more work on it.

There seems to be a "market" for a project like Paperless which is much less complicated and capable of running on lighter hardware.

Korra

Working for government introduced me to the clusterfuck that is "security" in large office environments. I wrote something fun & easy to self-host and it got a reasonable amount of attention on Reddit and at the London Django meetup.

Basically, Korra lets you share files easily, without special software, and securely so that you don't have to do insane things like email people's passports or private government documents around.

Spirithunter

When I started commuting longer distances (to Cambridge from London for while) I started back in on Spirithunter, trying out Django's new Channels support (OMG it's awesome). However, when my commute shrunk to a 30min bike ride, all of that development stopped. I might pick it up again when I'm bored one day, or if Mihnea decides he wants to hack on it with me.

Global

I know that this is a personal blog, so it seems kind of silly to reflect on global events here, but these things affect me, so I thought it relevant.

#Brexit

What a disaster. After living here only a year, I'm not surprised at all that this country voted to Leave the EU, but I'm still saddened by it. It will take generations for this country to recover from this mistake, and knowing what I now know about British culture, I'm sure they'll find a way to look back on all of this as some sort of Trial they all had to go through, that they survived because Britain Prevails or some doublespeaking-fluff like that.

I'm more concerned about the rise in hate-crime here though, and the remarkable tendency people here have to blame immigrants for everything wrong with the country -- especially when it's plainly obvious that the current government's malevolent domestic policy is really what's at fault.

Trump

I called it and now it's going to happen. As an outsider, I kind of want to sit down and watch everything burn with a bowl of popcorn; this is after all what the public voted for. He, along with the Republican House and Senate are going to hollow out the US and give people everything they asked for. I can only hope that they serve as a cautionary tale for the rest of us.

Deaths

A lot of important people died this year: Bowie, Prince, and Castro to name a few. For me though, this will always be the year Leonard Cohen died. The world is diminished without him in it.

Of course Rob Ford and Antonin Scalia died this year too. I'm really not all that bothered by that. I suppose that's one of the greatest things about the Reaper: he doesn't care who you are. When it's your time, that's it.

Conclusion

So that was 2016. Hopefully at this time next year I'll be posting about how in 2017 I finally got Romanian citizenship, and how Christina and I finally have a date & location for our wedding.

I'd like to do some more travelling to undiscovered (by me) places this year. At the very least, I'd like to see more of Scotland and maybe even Romania and the Czech Republic. None of that is booked yet though.

Here's hoping fewer of our heroes than villains die in 2017.

December 31, 2016 12:38 +0000  |  Family Grandpa Programming 0

I built a thing for my family this Christmas and I wanted to post about it briefly.

If you're one of the few people dedicated enough to follow this blog, you'll know that my grandfather died last year, and that he was sort of the family videographer. What you likely don't know however is that this year, on my trip home I acquired his entire collection of DVDs that he'd been accumulating over the years.

This some really old stuff:

  • Around the Christmas tree when I was 3 or 4 years old
  • My dog learning tricks for the first time
  • My parent's wedding
  • My graduation
  • My mother as a child in Romania
  • My grandparents, so much younger, with friends in Romania
  • My niece, Violet

It was an amazing collection spanning 4 generations over 39 DVDs, and I spent a few days on that trip home ripping every last one of the disks onto a portable hard drive so I could take the raw data home for a special project.

Well that project is now finished, so for those of you who don't care about the technical aspects, here's the link. I shared the URL with my family by email on Christmas day since I was on the other side of the world for the holiday festivities this year, but all in all, it seems to have gone over well.

My father has suggested that I expand on the collection with my own videos in the future -- I may just do that, though I'm more of a still photos guy. We'll see.

The Technical

This whole thing was a HUGE pain in the ass, so I want to document the process, perhaps if only for future websurfers looking to do something similar.

The Problem

The videos were in DVD format. Thankfully, it was digital, but it's certainly not web-friendly. The video data needed to be ripped from the disks and compressed into a web-friendly format that was high-quality enough to preserve the video, but in a file small enough to stream to Canada-quality internet connections.

Also, the DVDs were terribly organised and not indexed in any way. The disks often had multiple title tracks, sometimes duplicate tracks, and there were tracks that just contained garbage data.

Oh, and there was a time constraint. I only had the disks for a few days when I was in Canada. I wasn't going to take them back to the UK with me.

The Process

It was basically done in three stages:

Raw DVD > .iso file > .mp4 file

The .iso file step was just a clean & easy way to back up all of the DVDs without having to worry about accidentally missing something while I was hurriedly trying to get through them all in Canada. By turning 39 DVDs into 39 files on a USB drive, I could be sure that I wouldn't accidentally lose data during the ripping process.

As it turns out, this was a good plan, since it took a few weeks of tinkering with this project before I realised that some disks had multiple titles on them.

The creation of the .iso files was easy. I just put the disk in the USB DVD drive I brought with me and typed this:

$ dd if=/dev/dvd of=/path/to/usb/hard-drive/disk-00.iso

Waited about 20min, then took the disk out, and repeated this... 39 times.

The creation of the actual video file on the other hand was the big problem. There are lots of sites out there that claim to tell you how to do this, and very few of them have anything helpful. I think that this is because the end goal is rarely understood up front. Sometimes people are trying to encode DVDs into a high quality file for local playback, and the settings for that are rather different from what someone would want to do to encode for a web-friendly format.

There's also a wide variety of tools out there, most of which are buggy, unsupported, don't have a port for Gentoo, or just plain suck. The most common recommendation I found was for Handbrake, which is an impressive GUI for ripping videos but for me:

  • It didn't encode files that were high enough quality given the file size
  • It didn't make web-friendly formats. Even when you tick the box to make it web-friendly, the output file doesn't stream in Firefox. I didn't test other browsers.
  • It was terribly slow to find all the tracks, apply the settings I wanted and then wait to see if things panned out. There's no command-line interface to make things easier.

All of this lead to a lot of frustration and weeks of tinkering, finally leading me to a site that gave me the magic ffmpeg incantation to generate a web-friendly file:

$ ffmpeg \
  -i /path/to/input.mp4 \
  -vpre libvpx-720p \
  -pass 1 -passlogfile ffmpeg-18 -an -f webm \
  -y /path/to/output.webm && \
  ffmpeg -i \
  /path/to/input.mp4 \
  -vpre libvpx-720p \
  -pass 2 -passlogfile ffmpeg-18 -acodec libvorbis -ab 100k -f webm \
  -y /path/to/output.webm

Of course this assumed a .mp4 input file, and I wanted to rip straight from the .iso, so after much digging, I discovered that ffmpeg has a means of concatenating (chaining) video inputs and it can read straight from a DVD's .VOB file. With this nugget of knowledge, all I had to do was mount the .iso locally and compile a list of files conforming to this naming convention:

VIDEO_TS/VTS_01_#.VOB

With that information, I wrote a quick shell script that ended up generating a great big queue file of commands that look a lot like this:

ffmpeg -i \
'concat:/mnt/grandpa/18/VIDEO_TS/VTS_01_1.VOB|/mnt/grandpa/18/VIDEO_TS/VTS_01_2.VOB|/mnt/grandpa/18/VIDEO_TS/VTS_01_3.VOB|/mnt/grandpa/18/VIDEO_TS/VTS_01_4.VOB|/mnt/grandpa/18/VIDEO_TS/VTS_01_5.VOB' \
-vpre libvpx-720p -pass 1 -passlogfile ffmpeg-18 -an -f webm \
-y /home/daniel/Projects/Grandpa/htdocs/vid/18.webm && \
ffmpeg -i \
'concat:/mnt/grandpa/18/VIDEO_TS/VTS_01_1.VOB|/mnt/grandpa/18/VIDEO_TS/VTS_01_2.VOB|/mnt/grandpa/18/VIDEO_TS/VTS_01_3.VOB|/mnt/grandpa/18/VIDEO_TS/VTS_01_4.VOB|/mnt/grandpa/18/VIDEO_TS/VTS_01_5.VOB' \
-vpre libvpx-720p \
-pass 2 -passlogfile ffmpeg-18 -acodec libvorbis -ab 100k -f webm \
-y /home/daniel/Projects/Grandpa/htdocs/vid/18.webm

Unfortunately, ffmpeg doesn't really do threading very well, and the prevailing advice out there appears to be that you should just thread the process yourself rather than ask ffmpeg to try to use all your CPUs yourself. For this bit, I wrote a very simple paralleliser in Python and magically, all of the cores on my super machine could crunch Grandpa's videos, 16 at a time.

Finally, I wrapped the whole thing in a simple script that mounted all of the .isos simultaneously and then ran the paralleliser, and ran that in a tmux session so I could get on a plane and Fly to Greece while my computer did it's thing for two days.

While I was in Athens, I spent a day or two fiddling with the site itself, getting video.js to work the way I wanted it to and playing with Select2 to try and get an interface that the non-technical people in my family could follow. I wish I had better skills in this area 'cause frankly, the site is kinda ugly, but at least it's functional now.

So that's it. I hope that one day, someone will find this stuff useful. The ffmpeg incantations were especially difficult to find and assemble, so I figure that'll help someone eventually.

December 15, 2016 18:56 +0000  |  Engineering Ethics 5

Something amazing is happening in my industry right now and I want to take a minute to talk about it.

Americans are freaking out. They're staring down the barrel of the very real possibility that the Trump administration will draw up lists of Muslims living the United States. This is a dangerous first step toward dictatorship and the end of rule of law, and those of us paying attention are understandably worried.

The American engineering community is slowly arriving at a state of self consciousness though: a few of them have banded together and written a pledge stating in short, that if the US government wants to build technology to destroy the country, then they're going to have to find someone else to do it:

We, the undersigned, are employees of tech organizations and companies based in the United States. We are engineers, designers, business executives, and others whose jobs include managing or processing data about people. We are choosing to stand in solidarity with Muslim Americans, immigrants, and all people whose lives and livelihoods are threatened by the incoming administration’s proposed data collection policies. We refuse to build a database of people based on their Constitutionally-protected religious beliefs. We refuse to facilitate mass deportations of people the government believes to be undesirable.

We have educated ourselves on the history of threats like these, and on the roles that technology and technologists played in carrying them out. We see how IBM collaborated to digitize and streamline the Holocaust, contributing to the deaths of six million Jews and millions of others. We recall the internment of Japanese Americans during the Second World War. We recognize that mass deportations precipitated the very atrocity the word genocide was created to describe: the murder of 1.5 million Armenians in Turkey. We acknowledge that genocides are not merely a relic of the distant past—among others, Tutsi Rwandans and Bosnian Muslims have been victims in our lifetimes.

Today we stand together to say: not on our watch, and never again.

And they didn't stop there. They've done what engineers do best, they built something: a platform to allow other people to add their names. The list currently stands at 1239 people with new pull requests (the process by which people request to be added) happening so fast that they literally have had problems keeping up.

What's more, the whole thing is being developed in the open and you can watch the process unfold. Just yesterday afternoon I was following this ticket where they were debating how to solve the onslaught of applicants and introduce some uniformity for scale. The software chosen was Free, Open, and conforming to a universal standard that's easy to follow.

What's exciting about this, for me at least, is that this could very well be the beginning of a Code of Ethics for software engineering: developed in the open by ourselves, in an effort to operate as a community for the greater good.

Ethics in engineering is nothing new of course. The Ritual of the Calling of an Engineer has been a thing in Canada since 1922 in an effort to make sure that, in the interest of the Public Good, engineers who built bridges would adhere to ethics rather than employer directives.

Historically however, software engineering has been a Wild West of people doing whatever they want, with zero focus on the ethics of what we're doing. It's my hope that if anything comes out of a Trump presidency, a sense of responsibility for our actions should be it.

There's a lot of potential here. In an ideal world, I'd like to see companies and Free software projects adopting a policy of only collaborating with engineers who have signed the pledge: a simple declaration that we are thinking people with moral compasses who are responsible for our actions. In much the same way that companies, conferences, and projects have codes of conduct, I think it's time that we acknowledge that ethics should be an integral part of what we do.

This is just one project though, and a rather US-centric one at that, so I'm not sure it has the legs required to get us to where I think we need to be, but it's a start, and I'm absolutely thrilled that we're finally having this conversation.

November 16, 2016 18:59 +0000  |  Politics The United States 1

The outcome of the US presidential election was easily predicted. I say this because I was sure Trump would win as far back as May of this year. There seems to be a great many people still entirely surprised by the outcome though, so I thought I'd write down my reasoning.

There were two primary factors in Trump's taking of the White House. I'll deal with the minor reason first.

Sexism

It's still easier for most people to vote for a black man than it is for a white woman. The reasons for this are long and horrible, but this reality hasn't changed much in the last few thousand years. A woman may have a better chance now of winning an election, but sexism continues to stack the deck against every female candidate in most of the world.

It's a real problem, but I don't think it's nearly enough to explain why Clinton lost in an election that was the Left's for the taking.

The Establishment

Trump didn't win this election, Clinton lost it because she couldn't convince people to show up. Take a look at this chart showing the voter turnout over the last few elections (credit to dinoignacio via reddit). Trump rode the coattails of the Republican base who vote red regardless of the candidate, but the Left barely represented, begging the question: why not?

To answer this you need only look at the Bernie Sanders campaign. Here was a candidate who called for an end to money in politics, real socialised medicine, a focus on the environment, and on returning industry to the country. His focus on the future appealed to young people, his record on social policy encouraged the base, and his rhetoric on taking care of people hit hardest resonated with everyone who has been hurting over the last few years.

That last group is what matters because that last group is HUGE.

The truth is that in most Western nations, the US included, austerity and the right-wing have been at war with the working class for decades. In countries without an adequate social safety net (like the US), it's entirely common to have a household with two working parents and two children, and still not have enough to make ends meet. For those families just squeaking by, they live in fear of one of them losing their job, at which point they are literally homeless.

These people are angry, and they're scared, and the best that the Left could drum up was a woman whose dynastic name practically begs the spectre of corruption and hereditary rule. Clinton is the embodiment of "politics as usual" handed to a nation of people desperate for change.

At his core, Obama wasn't much different from Clinton in the ideals that capitalism somehow equals freedom, but importantly on the surface Obama was inspirational: the first black president, a Democrat who talks like a Kennedy. That man could have read the phone book to the public and the world would still have fallen in love with him.

But after eight years with him at the helm, the people are still scared and angry. They've barely survived a banking crisis that crippled the planet and saw not one rich white banker convicted. There are riots on the streets spurred by cops with military hardware murdering cvilians. They're still living paycheque to paycheque and the only explanation they're getting is from the Orange Beast on the right who is insisting that the immigrants are to blame for everything.

This was a hard sell, but the American people were ripe for a real shift in policy. So what did the Democratic party do? They sabotaged the Sanders campaign and assumed that fear of the damage Trump could do would be enough to get the plebs to vote blue.

The people are tired, angry, and scared. They want an end to corruption, to a government that doesn't understand or even hear their plight. They were told repeatedly by that establishment that a vote for Trump would be insane, that it would burn everything down. The trouble is, that's what the people want. The people want a revolution. They want to see muderous cops and "banksters" behind bars, they want an end to foreign wars, and they want coprorations out of politics.

This is a failure of the Left to give the people what they want. The left could have run an inspirational candidate, one who wanted the same thing 70% of Americans wanted. This was the opportunity to capture the White House, the Senate, Congress, and the Supreme Court for that revolutionary vision of the future.

But the Democrats wanted another Clinton.

That's why they got Trump.

October 15, 2016 16:08 +0000  |  Cycling London Moving United Kingdom 1

We've managed to get out of London and move up to Cambridge, and it is so much nicer here. Cambridge is almost everything London isn't: clean, quiet, bike-friendly, and accessible. Where in London it will take 40min to 2 hours on the dark, disgusting Tube to get anywhere and do anything, in Cambridge you just hop on your bike and you're anywhere in town in less than 20min. There are garden festivals in the big open parks that double as cow pastures, and the air is clean. London's air quality is a toxic mess and a constant reminder of how much (nearly) everyone living there hates it.

Where our London flat was a dark, damp, rat-infested ground-floor shithole, our Cambridge home is a big, beautiful two bedroom flat in a modern building with secure bike parking. The rooms are wired for ethernet and the wifi is crazy-fast, the rooms are warm and the showers (yes, that's showers plural) are spacious and just wonderful.

OMG I don't think I can convey how much better life in Cambridge is when compared to London.

Christina has settled into her job as lecturer at the university and despite her fears, I think she's getting the hang of it. Fresh out of her PhD, she's now a lecturer at one of the most prestigious universities on the planet. I'm really proud of her.

In terms of my career, things have been a little more bumpy. I didn't want to renew my contract working for the British Government, so I moved to a company that had a London & Cambridge office hoping to take some of the pain out of the move. Then the job at Mozilla came up, and I almost got it, and now I've decided to give up on contracting altogether in order to take a job at a local start-up as lead developer. My time with my current employer ends in less than a week and then I've got a week off before I start at Money Mover. Lots of moving around, but I think in this latest stop, I've found a good company that suits me.

It sure will be nice to be doing the start-up thing again. I've really missed it.

October 15, 2016 16:05 +0000  |  Self Reflection Strangers 1

Much of this blog recently has been a collection of elaborate updates, so allow me one post just to assemble some thoughts I've had over the past few days.

I made the unfortunate mistake yesterday of leaving for a trip to Brussels without my passport. I mean, it's just Belgium, why the hell would I need a passport to go to Belgium? Unfortunately I forgot that I live in "The America of Europe", a nation of the terrified and proudly uninformed -- they're not keen on open boarders here.

My feelings about the British aside, it remained that I wasn't about to be allowed on the train, so I had to go back to the ticket booth and try to exchange my ticket for one running the following day. The woman behind the desk was friendly and helpful, and in the end, my stupidity only cost me £60. In fact, I'm on the newly-booked train right now and expect to be arriving in Brussels in about 2hours.

Before I walked away from the counter though, it occurred to me that the tiny cupcakes I'd been carrying around for the last hour would never make it to Brussels, and I certainly wasn't going to eat them all, so I offered them to the nice young woman for being so helpful. Her eyes lit up: "Really? I have a colleague who's leaving the company today and he's my favourite person in the world. He's leaving right now. Here are your tickets, I gotta go!"

She hopped up from her desk and raced to the back of the office, disappearing through a staff door. I heard some shouting and cheering, and lots of other happy noises, and then I checked my phone for my route back to Cambridge.

When I knew where I was going, I started out of the station only to hear the sound of frantic footsteps coming in my direction. The woman was still so excited, but now she wanted to thank me properly. Gushing, she hugged me, afraid she was going to cry. Somehow, those nine tiny cupcakes had deeply affected her. I hugged her back and continued on my way.

We all have the tendency, occasional or otherwise, to forget that every person around us is in fact a living, breathing person, with a story of their own and deep emotional connections to people we will likely never meet. I know that I'm personally guilty of this more than I'm comfortable with, and this experience surprised me, so I wanted to share.

September 05, 2016 11:39 +0000  |  Employment Job Hunting 3

I suppose you could say that the process started years ago when I mused about applying to Mozilla. I was living in Amsterdam at that point and wanted a job where I could go into the office and have lunch with coworkers etc. so despite Andy's encouragement, I decided not to apply for a developer position there.

Years later another position opened up just as I was about to move to London, so I applied, got through a few rounds of interviews and then the position evaporated, changing to a junior-level role instead.

Later still another job opened for a developer tools role. I applied to that and ran aground on their new "HackerRank" coding test. These tests are terrible, but that's a rant for another time. Regardless, I bombed out on that application too.

Then a few months ago, Stephanie sent me a message telling me that her team had an opening for a senior Python developer. I applied not long after the role appeared on the site, along with Stephanie's recommendation. This time, I've managed to graduate past the terrible HackerRank test, and through all four rounds of interviews.

As I understand it, the verdict is supposed to come down tomorrow and I'm facing off against two other potentials. The anxiety around this whole thing is surprisingly crippling: this isn't just a job, it's Mozilla, the Good guys, a big important company that's on the front lines in the fight for the Open Web. I don't think I've ever wanted any job more than I want this one.

It's a long weekend in Canada & the US, so they won't be getting back to me 'till Tuesday, which means sometime between 8pm and 5am London time. I may not know anything until I wake up and check my phone on Wednesday morning. That's my last day at my current job (Cyan) for this week, since I took two days off to pack for our move to Cambridge, so this Wednesday is going to be messy, regardless of the Mozilla decision.

Update

Well I didn't get it. The main guy over there had some very nice things to say about me in the "we don't want you" email, but the reality is that I will not be working for the Good Guys this time around either :-(

July 17, 2016 19:23 +0000  |  Programming 3

Back in 2010, Stephanie came to me with an idea that she'd been batting around with a friend of hers. Now that Gowalla was dead, we were all looking for a replacement and she had the idea to create one of our own: a geolocational game for finding and collecting monsters.

The mechanics were simple: there are little monsters all over the real world, and you could use your phone to find them, fight them, and capture them. Importantly, the monsters are native to their environment: water monsters only appear near water, darkness monsters only at night, bosses only when Jupiter is above the horizon, etc.

I thought it was a brilliant idea, and started hacking on a server-side implementation. It turns out that this is a lot harder than it sounds. There were all sorts of concepts that were totally new to me:

  • GIS extensions for PostgreSQL to handle geographical queries
  • Timezone information (which varies widely) by geographic point
  • National border information had to be loaded and queried for every request
  • Ladder logic for all of the monsters' experience levelling
  • Figuring out the position of various celestial bodies based on the time & place
  • Figuring out how to tell whether the user was actually near water or green space (that was fun)
  • Building a vagrant box (this is pre-Docker) so Stephanie could have an environment to work with

All of this was solved, by me, over the course of many years, but I never had enough time to put into it, and there was of course the considerable barrier that neither of us had any illustrative talent. When 2015 rolled around and Nintendo announced that it was going to build Pokémon Go in partnership with Niantic, I accepted defeat and stopped tinkering with it altogether.

Except... Pokémon Go kinda sucks. More to the point, it doesn't scratch the itch Stephanie and I wanted scratched when we started Spirithunter (working title). Niantic decided to go the multiplayer route, which is (a) more complicated, and (b) pretty much sucks the fun out of the game for many of us. If you want to collect monsters and don't fancy getting your butt kicked by "professional" players out there with all of the best gear and time in the world, then with Pokémon Go you're pretty much out of luck.

By its nature, Pokémon Go forces people to compete with each other rather than just passively have fun, and I think that sucks.

So that more-or-less leaves Spirithunter as still viable really. I think I'm going to give it another whack over the next week or so. I believe that last I left it it was running Django 1.5 with an older version of DRF so I'll upgrade those first. Then I'll see about getting it up & running on my Linode.

I've also unlocked the repository so that other people can take a look if they're curious. At present, the copyright is still mine, though I might just GPL it if I decide not to pursue this as a corporate venture.

Anyway, if you're reading this and think that you'd like to contribute -- especially if you have artistic skills and want to see your art brought to life in an indie game -- drop me a line. There's 7 billion people in the world, more than enough to support two geolocational games, so why cant ours be one of them?

July 11, 2016 17:46 +0000  |  Family Friends Lucy Vancouver Violet 8

christina-me christina-michael dad-lucy-mom grandma-jack grandma-lucy lucyfoot lucy me-sarah-shawna mom-violet-dad shawna shawna-sarah shawna-violet-matt violet-jack

Noreen keeps asking, and as it's quite possible that she's the only regular reader of this blog, I really should do what I can for her :-)

On June 17th, my contract with the British Government ended, and the very next day Christina and I got on a plane to Vancouver to spend some well-deserved relaxation time. I hadn't seen my family in about a year at that point, and Christina hadn't been in Canada since 2013 so there was much to see and do -- so much that I thought I might see about extending my stay by a few weeks (now that I didn't have a job to go back to right away). That all went sideways after the 23rd, but I'm getting ahead of myself.

Squamish

I wanted to go hiking. I figured: this is the first time Christina has been to BC in the summer, let's show her how beautiful it is! The plan was to the Grouse Grind, or hike the Chief, or some other gorgeous and brutal experience, but jetlag is a harsh mistress and neither of us were even remotely interested in anything that difficult in our first few days. Instead, my dear friend Shawna, now living in Vancouver, back from Korea (yay!) drove us up to Squamish with her husband Michael and her friend Sarah for a leisurly ride up the Sea to Sky Gondola. There, for the ridiculous-but-acceptable-when-accounting-for-jetlag price of $40 each, we had a nice ride up the side of the mountain to a plateau at the top with little "hiking" trails (more like a stroll really) and magnificent views in all directions.

I didn't take a lot of pictures on this trip, so instead I'm just going to fill this post with lots Michael's shots from this hike. He's a pro photographer and he made us all look amazing. My new profile pic is one he took actually ;-)

A Quick Visit with Friends & Family

There wasn't much time for anything else in Vancouver this year. We had one day to (try to) recover from the jetlag, one to go Squamish, and one to visit with friends & fam. For this last case, we booked some time to meet with Ruth (Jeanie's mom) over lunch at Boston Pizza where we were treated to messy, sticky (but quiet!) children and good company. Ruth bought me chocolate (yay!) and gave us bubbles to play with, and we got to catch up on what was going on in our lives. Later that evening we did it all again, but with a larger group and in a noisier setting: Quinn, Jeanie, and Michelle met us for dinner at Milestones where we watched basketball and talked about what's going on in our lives. Chris and Trish were supposed to meet us there too, but their twins had the audacity to be born just a day or so beforehand so they had their hands full.

The next day Christina, my grandmother and I hopped on a bus up to Kelowna.

A Note About Greyhound

Holy crap is this the way to travel now. They've instituted express busses, shortening the YVR/YLW trip to just over 4 hours. During the trip you get:

  • Large, comfortable seats
  • A beautiful view
  • Free Wi-Fi
  • AC Power

Why would you ever want to fly?

  • 40 minutes to the airport
  • 20 minutes to check in
  • 20 minutes through security
  • 1 hour waiting for your flight
  • 40 minutes in the air
    • Turn off your laptop "for safety"
    • Tablets are ok, but not keyboards, they're dangerous!
    • Yes, I'm bitter
  • 20 minutes to deboard and collect your bags

=~ 3.5 hours and about 3 times the price. Screw that.

Kelowna

After having our schedule feel very pressed for the first few days, I tried to slow things down a bit in Kelowna. We had lots of slow nights doing family dinners, some lounging in the sun on my parent's patio, and a few shopping trips here and there.

The Engagement Party

Things got a little crazier around the 25th, as we were doing a joint birthday party / engagement party for Christina and me. It was only family at this shindig, but it was an opportunity for the fam to get to know Christina and see us together. We're still not sure how we're going to work out you know, actually getting married yet, so there were a lot of questions as to how the actual ceremony will happen. Would we do a Greek wedding? In Athens or on an Island? What about doing one in Kelowna and another in Greece? I think I'm starting to understand why people just don't bother getting married: the stress is insane.

Still, it was nice to be able to spend time with both of my grandparents in the same room again. We even had my grand-aunt June fly in from Ottawa this time around! It's been a really long time since all three have been together. I also got to see Violet & Ried for the first time which was fun, and despite Shawna being fresh out of the hospital with my brand-new niece, she was there and looking fabulous.

Lucy

My new neice, Lucy Jane Quinn was born, 6lbs & 2oz, just a few days before we arrived. She was nearly a month early and so she had to be kept in the hospital for almost a week while she got used to being in the world. Mother and baby came out of it ok though, so all is good. Christina and I had an opportunity to visit her in hospital where tiny Lucy was bundled up in a box with tubes up her nose and down her throat. Shawna was there with a bundle of books and a laptop on hand: she was the food source so she basically had to set up shop there until the doctors let her take Lucy home.

She was released a few days after we arrived in Kelowna though, so the second time we saw her, she was at home with Mom, Dad, sis, and the dogs getting her immune system revved up.

Brexit

When I booked the flight, I joked that I might leave one country and come back to a completely different one. Like most Britons I didn't actually think that that would happen. As the votes rolled in, my family huddled around the TV, dumbfounded by the sheer idiocy of the British public on this issue. Our jaws gaped at the fall of the pound, of the considerable sum of money I had personally lost in just a few minutes. Christina was in rough shape for much of the rest of the trip, and I cancelled any plans I might have had to extend my stay in Canada.

Idiots doing idiot things because they're idiots.

Melanie

The only friend I have up in Kelowna is Melanie, who was up there finishing her contract with UBC. We went for some ice cream and then met her for lunch where I got her to take a picture with @travellingjack! Then my mom picked us up like we were still in high school to take us home. It was a nice day.

My Solar Desalinator

One project I've been toying with in my head for years now got to see the light of day for some time while I was in Kelowna. I've been working on a way to use solar power to desalinate water cheaply and pollution-free modeled after this power station in Andalucia.
Most of the progress on this front was talking to my father and brother about it, changing the model in my head, scratching bits out on napkins, and fiddling with a parabolic mirror in the backyard and almost setting the house on fire. Good times.

I've started fiddling with a proper 3d model in Blender, and now that I'm back in the UK, I've started poking around to find spaces that might be able to offer me the technical expertise I lack in this area. Something may never come of it, but you never know. For now, it's fun to think about.

Remainder

The rest of the trip was largely a series of car trips: out to Peachland and Penticton to see my aunt and then brother's family, running through sprinklers with my neice and eating fabulous homemade ice cream. Other nights we drove out to Vernon to have dinner with my grandmother and grand-aunt, and still other nights we just stayed in, ate Dairy Queen Blizzards and bemoaned the future of the UK.

Canada Day

Canada Day in Holiday Park is a big deal -- by Holiday Park standards anyway. It's a villiage of a lot of old people with a lot of golf carts, small decorating budgets, and a lot of time on their hands. Given this equation, a golf cart parade seemed fitting for Canada's birthday. It was our last day in Canada, so we got up in time to see the show, after which I drove down to the Greyhound station to send my grandmother home. For the rest of the day we relaxed in the sun (or in my case, the house) and enjoyed the peace, quiet, and family.


I'm back in the UK now, and the Brexit mess is still in full swing. I decided to come home on time because I felt like I needed to be here in case shit, but that feeling of helplessness is as thick here as it was in Kelowna. I think in retrospect I wish I'd stayed a little longer -- I really miss my family, especially now that I've got two nieces who are just starting to grow.

Being an expat is hard.

June 24, 2016 17:52 +0000  |  Europe United Kingdom 3

I'm in Canada right now, so we had to watch the carnage unfold in real time on a BBC live stream. As soon as Newcastle reported in with its weak Remain results, the pit of my stomach began to sink and things never recovered.

The United Kingdom has made what historians will refer to as the greatest and last mistake in its long history. Scotland and Northern Ireland are already talking about leaving the UK to join the EU. The pound has dropped to the lowest point in 31 years and France has now surpassed them as the world's 5th largest economy. They've lost more money in a few hours than they contributed to the EU in 43 years.

I woke this morning to a sense of surreal dread. One thing is certain: the UK is undone. The only question that concerns me is how much of their self-destructive behaviour will rub off on the rest of us.

The UK economy has already started to contract. Major banking institutions are likely to follow through with their promise to relocate to Dublin and Frankfurt. That will undoubtedly increase unemployment, driving the country further into recession. For Christina and I, there are dangerous times ahead.

Three Paths

The real danger though is how far this madness will spread. Given the likelihood of a Scottish (and potentially Northern Irish) exit from the UK, England must be considered lost, but what of the rest of Europe? I can only see this going one of three ways:

Special Status

The worst possible scenario for all involved would be if the EU is so fearful of instability that it caves to the UK's demands to (a) remain part of the European Economic Area (single market) while (b) not being beholden to the four freedoms. For the non Europeans, this would mean that the UK would have free trade with EU nations but not have to allow free movement of people, goods, etc. They might even try to get away with not paying into the EU at all.

This would be catastrophic as it would signal to the other EU nations that they too could have all of the benefits of the EU without the responsibility. It would embolden the weak separatist voices in France, Norway, Greece, and the Netherlands and spur similar moves to exit as well. It would effectively end the European Union.

Remain Part of the EEA

This is the most likely (however ironic) outcome. The UK would negotiate a Norway-like deal wherein they remain part of the EEA while still being responsible for the four freedoms. Effectively, this would mean that the UK would keep all of the responsibilities the Leave campaign said they wanted no part of, (free movement, financial contributions) but give up its right to have any say in how those responsibilities are determined. As a bonus, Nigel Farage's party would no longer have any seats in the European Parliament.

This isn't as dangerous as the "special status" option above, but it runs the risk of separatist parties declaring this a victory (this is post-factual democracy after all). If other nations follow suit, this could have crippling effects on the EU.

Out in the Cold

In this scenario, the EU recognises this for the opportunity that it is and cuts the UK loose. Over the following years, as the rest of Europe watches the UK economy wither, and the country fracture from Great Britain into Little England, the UK becomes a cautionary tale for would-be separatists: "Leave the EU, are you nuts? Don't you remember what it was like for the English?"

"Better together" would no longer be a campaign slogan but a statement of fact and it would embolden Europe as a Union.

The obstructionist English voice in the European project would disappear completely, allowing for the agenda of an ever closer union to progress. Dreams like a fiscal union and a unified military would become more feasible.

My Preference

I tweeted about this last night and it was not appreciated by a couple of my followers, but I stand by it. The "out in the cold" option is the best case for Europe, the worst for the UK -- but they've made their bed. The European Union is the single most ambitious project humanity has ever undertaken and if it's going to survive, it has to cut the UK loose. They've voted to leave, let them serve as an example of just what leaving means.

I say this of course as someone who lives in the UK. Christina has her job at Cambridge, so we're stuck there for at least a year, but when that's finished, we'll be looking to return to Europe -- this in itself is a risk, as it means waiting an entire year while anyone with a degree of mobility works to get out of the UK.

I don't know what we're going to do when Christina's contract is up. We want to move back to the Netherlands, but by then the EU will likely be awash in unilingual anglophones with marketable skills. This could be Very Bad for us.

But if it's good for the EU, we're ok with it.