Race Conditions

One commit at a time

  • Notes About Decorators

    Decorators are one language feature in Python that I frequently use as a consumer of libraries and frameworks such as Flask but rarely implement myself. It’s time to revisit this feature! Thank you very much to Mark Lutz’s discussion in the 5th Edition of Learning Python. All mistakes are my own and feedback and comments are always appreciated. Decorators are a way to augment Python functions and classes. They do this by providing a syntax that allows us to associate code that should be run before/after a call to a function or a class.

    Read more…
  • Lessons From One Year of Bootstrapping

    If they don’t give you a seat at the table… Last July I decided to take a plunge and try to start a technology company. It felt like a idea good time: I felt that I had come to a standstill in my current software engineering role and needed a new challenge. While ‘needing a new challenge’ on its own is not a good enough reason to take the financial and career risk that is trying to create a company, I wanted to see if maybe trying to forge my own opportunities would be better than trying to knock down doors that were closed to me.

    Read more…
  • Blackhoodie18 Berlin Bootcamp Report

    In my previous post I wrote a few notes about the Blackhoodie18 Conference day. In this post, I’ll do a brief overview of some of the topics that were covered in the two day (intensive!) bootcamp. For some reason(most likely I did not read the track descriptions closely enough), I applied to track 3. The name (on my way to rock as hell) sounded super cool and I was really intrigued by the topics that were covered (intro to crypto, intro to Return Oriented Programming (ROP) and intro to Windows Kernel internals via building a keylogger).

    Read more…
  • Blackhoodie18 Berlin Conference Report

    Blackhoodie RE - a one day conference(which I’ll be talking about in this blogpost) and two-day intensive security topics bootcamp(next blogpost) - took place this weekend in Berlin and I was fortunate enough to be able to attend! Phew! The weather was cold (hi Berlin, you remind me of Helsinki!), but my braincircuits were still overclocked by all the great talks and the two day bootcamp in Track 3 - lots of crypto, Return Oriented Programming and exploits, and Windows Kernel internals.

    Read more…
  • What Makes a Good Technologist

    A recent job application asked me to reflect on the characteristics that define a good data scientists. I really liked the question and the kinds of thoughts it generated in my mind, so I decided to poke around this topic a bit more and think about the kinds of qualities that make a good technologist. The term technologist is quite broad in scope - indeed, most of the appliances we use in every day life (including writing - the applicance I’m using to communicate with right now!

    Read more…
  • Mobile Web App Prototyping With Flask

    A big chunk of traffic for any modern web application comes from mobile devices and so developing with smaller screensizes and touch screen controls in mind is imperative when building a startup MVP. This was my first mistake when I started developing the visual colour search engine lipcolourmatch.com. As a developer my work environment is the desktop and so naturally the first iteration of the Flask application was built with the desktop in mind.

    Read more…
  • Working With Kubernetes Deployments

    When I first started working with Kubernetes Deployments, the defacto way to create a deployment was to write up some configuration into a YAML file and run kubectl --namespace=<somespace> apply -f <file>. This made it easy to make changes to the deployment later. Simply, make the required changes in the file and run kubectl --namespace=<somespace> apply -f <filename>. However, recently after following some Google Kubernetes Engine tutorials, I’ve gotten into a habit of creating deployments using the kubectl --namespace=<somespace> run command.

    Read more…
  • Notes on Interviewing for Python Developer Roles

    A few months ago, I opened my Twitter DMs for questions about tech interviews for Python developer roles. I received lots of great questions from junior developers looking for their first software engineering role and from more experienced developers looking to make a change to Python development. Because there seems to be sufficient interest in interviewing for Python dev roles, I’ve decided to compile the notes that I’ve taken over my four years of interviewing for Python developer roles and publish them here for the benefit of anyone applying or thinking of applying for a Python developer job.

    Read more…
  • Software Engineer Contracting in the UK

    Last summer, I handed in my resignation at BigCorp. Although there is no doubt that some personal exhaustion played a role in my decision to leave, the main catalyst was the professional wall that I had reached as a software engineer. The system I had built and maintained for the past months was stable. We were just reaching the final stages of improvements that would fix the last remaining niggles.

    Read more…
  • Hello Again, World!

    I have been blogging about the technology industry, software engineering and machine learning for a while over at winterflower.github.io. Recently, I’ve also accumulated lots of notes about various technical and tech career related topics that I would like to share and so I’m starting up a new blog, here at race-conditions. As some of you may know, I left my permanent software engineer position last July to focus on bootstrapping an open source technology company here in London.

    Read more…