29 Dec 2018
Do it twice and it becomes tradition? That’s what they used to say at my old alma mater.
And perhaps it applies to blogging too? In either case, I enjoyed doing a
retro on 2017, so I’ve
decided to take the plunge and do it again for 2018. It’s hard to believe the year is almost
over and yet here we are. I have some half frozen piparkakkutaikina (frozen gingerbread batter one can
buy in any Finnish or Swedish supermarket) waiting on the table, so I’ll try to make this short and sweet.
As last year, the year will be reviewed in chronological order.
December
Crisis. Personal, internal, domestic, global, political, climatological. Every kind of crisis. All I can think about is
the comic with the cartoon dog in the middle of a burning house drinking coffee with ‘This is fine’
playing on repeat. I’ve repeated that phrase many times to myself since that summer’s day in 2016
and now things are no longer fine.
In December, an hour becomes a long time in British politics. Power figures tiptoe
around various brinks and meanwhile three million people with lives, families, lovers, hopes and dreams
firmly rooted in the UK wait to see if they will be allowed to stay in their homes.
I used to be one of those three million, too.
I used to dream about summers spent summiting in Snowdonia or running the Cumbria Trail, visiting Skiddaw again.
Spending the winter season hiking around Guildford and Denbies, finally taking the plunge and running my first 100 mile race through the North Downs.
And now, instead, I’ll be packing to move somewhere else. Even so, I feel incredibly privileged to be able to just uproot my life and move. Plenty of folks are in the same Brexit limbo situation, but can’t relocate as easily due to family issues or a job that requires presence in London.
The thought leaving a home of five long years weighed heavily and I spent the bulk of December wandering around the streets of London (now busy with the ebbing tides of tourists and frantic Christmas shoppers) and saying goodbye. I’m sure I’d like to come back at some point.
Various other things happened in December. I’m going to continue working on colour search engines and synbyote.io, but I’ll also be taking a step and working at Big Cloud Company with the machine learning division. Is this part of the big serious Career Plan? Not sure. We’ll see what happens.
A visit to Sweden to see a very good friend and to fill out some paperwork necessary for immigration. My friend introduced me to julmust - a Swedish Christmas beverage and I’m a fan now!
November
First time visiting Berlin and attending Blackhoodie 18 - an infosec bootcamp that is all kinds of awesome. To my surprise, I even managed to crack the reverse engineering challenge. You can read a writeup I wrote on the Blackhoodie webpage.
October
Did something I’ve never done before: had a lawyer review my employment contracts and tried to challenge some of the intellectual property clauses in it. Was unsuccessful. Also lots of job searching: interviews, some victories, lots of disappointments. Forever grateful to all of the lovely people online and in real life who gave me tips and advice and put me in touch with their network. No person is an island, no person is entirely self-made.
September
One of my longstanding dreams - visiting and hiking in the Austrian Alps came true! I flew to Munich and drove south towards Saalbach region. After a few beautiful days hiking around Lake Fuschl and the mountains around Zell am See it was time to return back to London and plan for the future.
August
Last dregs of the heatwave torturing London since late June vanish into a cool summer rain. I’m still working as a contract Python developer at Big Corp. A good friend comes to visit me in London, but I’m too stressed about the slow progress on the contracting project I am doing for Big Corp to properly enjoy any of it.
July
Heatwave. My commute to and from work involves a lengthy trudge across the Tower Bridge. In the afternoons, the bridge is crowded and overheated. I buy an ice tea from the nearby Starbucks just so I can hold the icy drink container against my forehead as I walk across to the DLR station on Tower Hill.
June
Search for second contract kicks off and I land a developer gig at Big Corp! The heatwave that is to torture this city for the next six weeks begins.
May
A childhood friend from Finland flies to visit me in London! We trawl through the vintage market at Spitalfields, look at the Gherkin and wander around the Tate Modern. Took the Eurostar to Amsterdam (for the first time!) to speak at PyData Amsterdam about JupyterHub and Kubernetes! The weather was glorious - stifling heat and clear, sunburned skies.
April
Finish one of the best gigs I’ve ever had - a six month remote role where I get to play around a lot with AWS, learn about Terraform and ECS and have a few disasters with CloudFront, WAF rules and a little known thing of SNI and Java compatibility. Decide that maybe remote-first is the way to go for me in the future. Spoke at PyData London 2018 about my work on deploying JupyterHub to the cloud with Kubernetes. Start drafting ideas for a lipstick colour search engine that is to become lipcolourmatch.com.
March
Work, work, work.
February
Visit a good friend in Stockholm and look at the sights of the city. Consider seriously moving there for a while in 2019.
January
Work, work, work.
One of the most memorable days that I still sometimes dwell on is visiting a snowy (or perhaps it was sleet?) Manchester for a work meeting in the middle of January and finishing Mortality by Christopher Hitchens on the train back.
04 Dec 2018
I want things I don’t need. I need things I don’t want.
I’m addicted to checking my Twitter feed. Click, click, click. Refresh.
Log off and log right on. More meaningless scrolling, cat emojis,
an interation on the Ariana Grande ‘thank u, next’ meme, another rendition
of ‘Ladies, if he never answers your texts’ meme.
It’s meaningless, but calming. When reality offers nothing but one crisis after another,
one rejection after another, that eternally scrolling thing promises to at least to entertain.
Hey, we can’t fix the world, but at least we’ll have emojis, memes and GIFs to checkout while
we roast in a warming planet.
27 Nov 2018
I’m tired. I’m sorry if that is a boring way to open a post, but it’s the truth. The truth of the feeling that’s comfortably settled itself somewhere deep within my body and won’t let go. Fractal tentacles of black inky liquid curling around my insides.
Maybe I should have used fatigue. A more elegant word. Tres French. Tres chic.
Or exhaustion. Maybe I should have used that. On a recent Tube journey through the hellscape that is rush hour London, the word popped into my mind (no place better to engage in a little mental gymnastics than the armpit of your fellow rush hour commuter). Exhaustion. Like exhaust but with an extra -ion. The condition of being an exhaust. A human exhaust.
I suppose that is an apt description of how I feel. A human exhaust. Everything else has dissolved.
I went to sleep in the early hours of the morning struggling to keep my sleepy eyes awake as I typed the last touches on a reverse engineering writeup I’d promised to deliver a few days earlier. I knew the writeup would have been better if I had just left it to the morning, proofread it again and then hit send, but the guilt- the guilt of promising to deliver and then failing - would not let me be and I suspected would not have let me fall asleep. The sense of self-worth is tied too closely to achievements. I’ve been failing spectacularly at the achievements part lately, so the guilt is even more acute.
(Warning: start of rant - you may wish to skip to another post).
In any case, this post is not about our broken models of human value, the London Underground system or exhaust, though I could probably fill these pages with ramblings about all three. Instead, I’m going to talk about something that was making the rounds on Twitter yesterday: the maintainer of a very popular npm package had stepped down and transferred control of the package to an interested third party that had been making contributions to the repository. This kind of thing happens in open source projects and is nothing out of the ordinary. The new maintainer then integrated some code into the package that turned out to contain a malicious payload. Users (big companies among them) were affected. Cue: initiate absolute clusterfuck where the previous maintainer gets shit for transferring the ownership without ‘proper vetting’ (based on the comments I read, no one actually suggested how to properly do this). I was glad the conversation was quickly steered into the direction of open source sustainability problem, because yes, we still have a problem of paying maintainers unless they work for a company that supports an open source project financially or allocates company time. Strangely, most companies, including the billion dollar behemoths don’t have a problem with profiting from open source projects. Anyway, people far more eloquent and knowledgeable about this topic have made better writeups of the situation and why it needs fixing.
The security breach and the ensuring cluterfuck reminded me of a conversation I had a few weeks ago with a hiring manager, who gently asked me about my GitHub and the kinds of contributions I had been makind to open source. I could see their face fall when I described contributing to documentation and community in a few projects. Apparently, it’s only code that counts. Good luck learning how to use an open source project without good documentation. I was then gently prodded to make contributions to the company’s open source project, which would ‘be good for getting hired in the future’.
I’m not going to go into how this ‘github as your cv’ hiring practice disadvantanges people who may be excellent in their day jobs, but don’t work on open source full time and have other obligations outside of work (family, hobbies, carer duties, civic duties, life?) - others have done so already and far more eloquently. What I am going to say though is this. Everyone seems to want to see open source contributions until you go to work for them. After that, it’s going to be ‘jump through these 50 legal hoops we’ve setup to prevent you from open sourcing any code’.
/rantover
Now it’s back to our regularly scheduled programming.
25 Oct 2018
Failing fast is usually a good thing in application code. Much less so when it comes to job applications.
And yet here we are. The perils of checking one’s email right before bed only to discover that
the job application one spent hours polishing has been rejected within hours of submission.
It was a damn good opportunity too. A great company and a great set of problems to work on.
As much as I like to pretend I can take a good slap-in-the-face rejection as well as any seasoned
programmer (who once, many years before, used to regularly submit my badly written thinkpieces and fiction to literary journals),
it hurts. My brain has dug out the familiar ‘Compilation of Epic Fails’ reel from the Forbidden Archives and all those moments are now gleefully playing in my mind. Not a good recipe for sleep. So perhaps it’s time for some more thinkpieces.
Any given application is like a garden of forking paths. Data flows through functions, taking left
or right turns at if-junctures, looping about in loops, before finally exiting the application
boundaries. When application developers design these convoluted gardens, we often make many
assumptions about the paths that come before the particular segment we are working on and
what the data will look like once it has traversed those and reached our little nook of the garden. We build our own abstractions and instructions based on those assumptions and often, our utopian views of the world upstream from us, is flawed.
We rely on the gardeneres who designed the paths before us to trim the weeds and lay enough traps so that any rogue bits and bytes
don’t reach our pristine constructions. Laying these traps are what we speak about when we speak about failing fast in code.
In Python, my current language of choice, it is a common task to lookup a value in a data structure known as a dictionary (though other programming languages may know it as a hashmap) using a key. Sometimes, we may not know before runtime whether a given key will exist in the dictionary, so to help out programmers in these situations, Python allows for two ways to look up dictionary values.
The first
will fail if the key key
does not exist.
The second
will not. It will return to the caller the value of None
and the program will continue on its merry way. If the value of whatever is stored at key
in this dictionary is critical to the functioning of the rest of the program, it would be best to use the first method and force the program to fail fast. Otherwise, the downstream error that would result from allowing the None
value to propagate might be cryptic and result in many wasted braincycles of debugging.
Is there a life equivalent to ‘failing fast’? Is there some test one can carry out to determine if it’s worth continuing on this path or if one should just throw in the towel?
A few years ago as an undergraduate I worked in a chemical physics lab for the summer. While I wasn’t zapping dye molecules with ultrafast lasers (a story for another time!), I shared an office with a postdoc, who told me about her strategy for failing fast. She told me that she would solicit honest feedback about her work from her supervisors and ask if they thought she could make it as a scientist. I wonder if I should start doing the same and if I could take the answers whatever they might be.
Hearing that you’re just not cut out for something you really really like doing has never been easy (even if deep down inside you already know you’re not cut out for it).
When I was in high school, I got really into mathematics. By sheer chance, I’d done a few problems from an advanced book on sequences and series and fell in love with the problems. They were addicting to solve! That same month, my mathematics teacher returned our exams and looking at the class told us, ‘There are no diamonds here.’ I think she meant that none of us were going to be the kind of star students that score high on math olympiad questions. I already knew this. I was never going to be able to do research in math or compete in the olympiad and yet, I felt a bit deflated. Why try if the person teaching me already thinks it’s a lost cause? Later, when the teacher tried to encourage some girls from the class (weirdly enough, me too) to sign up for the math olympiad, I flat out declined. There are no diamonds here.
So now I wonder: Can I really make it in technology? I don’t come from a traditional background. I don’t have a degree from Oxbridge or an Ivy. I don’t have the Big 4 on my resume. I was not a diamond in anything back in high school and I sure as hell am not one now. Can I make it? Or am I just deluding myself? Have I gotten this far just because of my gender? Maybe I really don’t have what it takes.
13 Oct 2018
There will be no Indian summer in October, the Met Office had promised just a few weeks ago, when it seemed that London, faced with a milky white cold drizzle, had collectively looked back at those suffocating weeks between late June and early August and let out a longing sigh. And yet this Saturday morning in mid-October is glorious. Though only a faint image of the sticky, dusty heatwave that had sent Argos stocks for air conditioning units into the negatives, the temperature is warm and I, still dressing for the Finnish October of my childhood, am of course overdressed and very soon, overheated.
Soon after I cross the lights at the knot of Regent’s Street, Shaftesbury Avenue and Piccadilly, the street goes into lockdown. Armoured police trucks drive up and down, sirens blaring. One of them gives an irritated honk to a driver of garbage disposal truck, who dutifully moves the vehicle further down onto one of those posh little streets that veer off Piccadilly into Mayfair. A helicopter, perhaps two, circles above. I duck into a corner at Waterstones and call my mother. Has she heard anything on the news? I want to tell her I’m ok. After the many incidents of last year, one can’t be too careful. But the consuming must go on! And so I rejoin the groups of window shoppers who have now spilled over onto the empty road and dive into the bookstore.
I already own too many books, too many unread novels, too many poetry collections I bought because an errant phrase here or there had given flight to my imagination, too many nonfiction books I’ve never read and will never be able to use at parties (which I never go to) to, in equal parts, annoy and astound my dates (which, to date, mostly only materialise in my daydreams). Most of them are not really books, but proxies for dreams, half-finished dreams, now indefinitely parked on a shelf to gather dust.
So I don’t stay long, lest the less well-behaved parts of my brain manage to convince the others, that yes, another erudite volume, another novel is definitely necessary. I take the stairs to the fourth floor and read some Russell on happiness but the words seem to slide through my consciousness like sand through fingers. I exit and walk out towards Green Park. Presence of police - everywhere, on the road, on the corners, in the blinking lights of the blue sirens, in the rumble of the helicopter circling above, in the policemen on the corner of Bond Street and then Albemarle Street and then further down at the entrance to the Green Park Tube station.
I enter the park through one of the side gates and, in spite of the annoying rat-tat-tat of the helicopter, am embraced by a tranquil golden autumn. It is here, under these trees and on the grass that just a few months ago was brown, prickly, singed by the prolonged heatwave, where I sat eating strawberries on a blanket that was later tinged with red droplets, like droplets of blood, one can find,in miniature, the full spectrum of human intimacy and its absence. The couples embracing on blankets, their shoulders gently touching, their hands intertwined, a gentle touch on the face, perhaps followed by a kiss. And then nearby, a woman on her own, eating a sandwich and staring out, far away from the present. I dare not look at the woman for too long nor at the couples, especially not at the couples. Why is it so, that the happiness - whether imagined or real - always maginifies an absence in our own lives?
I find an empty bench. The wind is gentle, the light bright and pure, filtered by the canopy of trees. The city and its many anxieties seem far away, their only echo a distant rumble of the helicoper still circling the perimeter of Piccadilly and Mayfair. I wish I could stay here forever, listening to the butterfly flutter of fallen leaves as storm Callum, with its final gusty breaths twirls them round and round. Here, I could love you forever, London.
It doesn’t take long for the tranquility to dissipate. It happens first at the entrance to Buckingham Palace, where I accidentally photobomb several tourist groups angling for a photo, then again near Westminster, a branch from a tree, falls, hits me in the face. I stand there, for a moment, stunned and draw my fingers on the forehead to check for blood. Meanwhile, groups of people continue to trickle around me. No one stops to ask. To survive in this city, one develops a kind of selective blindness, an ignorance to casual cruelties.
The Jubilee Line is a mild inferno and packed, as happy, slightly sundusted and windswept Londoners return home from an outing in the parks. At the bus station, a group of twentysomethings, lightly tipsy, stop to examine the shoes of their friend and a blister he has developed because of them. ‘Does anyone have a plaster?’ one of the women yells, half in jest and they burst out laughing and walk away. How easy it is to take part in a stranger’s joy and also feel alienated, an outsider, an observer, more so now as the Deadline approaches?
When I return to the corner of the world where I live, the sun has gone and the brilliant landscape of autumn dipped in in deep tones of translucent blue. It’s high tide on the Thames - the skin of the river ripples restlessly in the wind. Very soon it will be completely dark and then only the millions of lights in the millions of windows will carry the memory of the day gone by.