About Me

About Me

I’m a professional software engineer and engineering manager, working in Melbourne, Australia. I was born in South Africa, and spent 5 years working in California before moving to Melbourne.

I am a full-stack engineer, specializing in software and firmware, but also with some awareness of electronics and hardware. I am well suited to small companies and startups, where everyone is often required to wear many hats — I have experience in the development of firmware, web, user interfaces, graphic design, databases, applications, and server and cloud software, and limited experience in electronics, PCB layout and mechanical modeling. In the past few years, I have also taken on a management role at my current employment, where my breadth of experience helps me to a lead a diverse engineering team to develop a suite of IoT cold-chain-monitoring solutions.

My passion is everything JavaScript. Not because it’s a fantastic language (although it’s pretty good these days), but because it enables an unprecedented level of productivity. As with many modern languages, it’s completely type-safe — you can’t accidentally trash memory corresponding to unrelated pieces of code, which would lead to unpredictable behavior and subtle defects that can take weeks to debug1. It is also phenomenally easy to integrate third-party libraries to do most of the work for you2. And lastly, JavaScript is ubiquitous these days — it runs on almost everything, and it’s very easy to find developers who will write JavaScript. If you want to learn a programming language, then JavaScript will give you a breadth of platforms that I believe no other language matches, from noSQL databases, to web browsers, to server software, to application software — JavaScript proliferates them all. Conversely, it’s easier to hire JavaScript developers, and a JavaScript-based team will have a common language leading to better team cohesion and sharing of ideas and code across a heterogeneous mix of software systems.

Since there is currently no good way to write firmware in JavaScript yet, in my spare time over the last few years, I’m undergoing the monumental task of writing a JavaScript compiler from scratch, specifically to target small, embedded microcontroller devices. It is born out of my frustration with the state of firmware development in the present age — if you want to have a small, power-efficient device, then you currently need to write the code in C or C++, but if you want to use a high level language, then you need to run a VM or interpreter and incur a 10-100x decrease in performance, as well as a sizable overhead in RAM and flash space, along with an increase in complexity and maintenance skills required. Neither of these are acceptable solutions, and so my mission is to fix the problem, by bringing an intuitive and productive JavaScript development tool to the embedded firmware development industry, while retaining many of the favorable performance characteristics of C and C++.

If you want to know more about me, or if you feel inspired to join my cause, or inspired to ridicule my ideas and tell me they won’t work3, feel free to¬†drop me an email.

  1. C++ firmware engineers will know what I’m talking about 

  2. I regularly write both C++ and JavaScript code, and every time I work in C++, I am frustrated by how many things you need to write yourself, when there are probably another thousand people who have already written very similar code 

  3. Criticism is sometimes the best way to refine an idea. It’s great if you agree with me, but even better if you can point out flaws that didn’t occur to me. If I disagree, it will just be more motivation to get it done, so I can prove you wrong ;-)  

Leave a Reply