Recently, I have been watching the show Severance. Without spoiling anything, it’s a show where the main characters have two distinct and separate versions of themselves. These versions are known as their “innies” and “outies”. In the show the “innies” are given hope by being told praise about their “outies”. This concept got me thinking about how we all have two versions of ourselves. We have who…
Earlier this year, I set out to learn mold making. I decided that I wanted to use my 3D printer and modeling skills as much as possible. I figured that silicone would be an easy place to start as it was a forgiving material. This is an outline of the technique that I developed. It will allow you to make rubber versions of any object that you want (within reason). This is not a lesson in part or…
There is nothing wrong with enjoying your job. There is nothing wrong with wanting to go to work. There is nothing wrong with finding meaning through the work that you do. Find a healthy balance and enjoy your time at work.
I am scared. That is a hard thing for me to say. I am sitting here in British Columbia mid January. It is raining outside and there is very little snow to be seen. I can feel the looming effects of climate change around me. I don’t know what to do.
When was the last time you completed a project? When was the last time you started a project? Have you every felt that you were trapped working on something that you don’t enjoy anymore? Size is something that I’m sure most developers with the drive to do side projects have felt. Recently I have been completing more projects with more success than ever before. This is my new process.
I like building 3D models with OpenSCAD . As a software developer, I find it the most intuitive and scalable way to build models. Sites like Thingiverse looked like the solution but I was looking for something that I could put on my website, that would have zero cost, and where I could fully customize the user experience. So, I got to work and after a few months of hard effort I created this:…
Recently I have been working on a project to build 3D printable lugs for a custom bike frame. I am using OpenSCAD to build this because I find the software to align very well to how I enjoy building things. As a software developer it is quite intuitive for building customizable 3D objects. In this post I want to walk through my process of building the lower head tube lug using OpenSCAD. I do…
Now that we have a working LLVM backend, I wanted to make one small step forward this week. Right now, the LLVM backend setup targets x86_64 based machines. That means the program that it creates will run on my laptop. But what if I want to run my program on something different? I have a lot of AVR microcontrollers. They are small 8-bit chips that are good for controlling small circuits. If you…
All of my compiler projects so far have been focusing on the frontend. I spent a lot of time focusing on parsing languages but the runtime is usually very small. Now it’s time to take a closer look at the backend and build up some new tools. I chose to work with LLVM because it has some great properties. I wanted a tool that could create native binaries. In my opinion, there is a huge advantage of…
This week I took yet another look at improving the parser logic that I have been using. In the past I tried to use parser-combinators to build up my parsers with the idea that they might be smaller, simpler or better. This time I decided to simply write the parser from scratch.
This week I set out to solve my parser woes from my last post. I worked really hard to build a library that would match my needs. In the end I came up with a project called pebble_parser . Its a similar parser combinator library to pom but with a better syntax and it works on iterators rather than arrays. My project for this week was to build a BrainF**k compiler. Its a simple language with very…
For this post (and maybe the next few) I want to try something different. Im calling this series “compiler weekly” because I want to explore different parts of compilers in fast iterations. My goal of this week was to figure out what tools to use when building compilers in rust. I needed a good lexer and parser . Ideally a set of libraries that are easy to use, expressive, extendable and with good…
I was recently helping my mother share a file using Microsoft Sharepoint. The file was a zip archive containing a few word documents. We uploaded the file and sent a share link to the recipient. They clicked the link and was unable to use the files. It turned out that rather than downloading the file, the link opens an online file browser that navigates into the zip. This caused confusion because…
I started playing Minecraft back in 2009 just after the beta version was released. I have fond memories exploring the worlds and setting up home servers so that my brother and I could play together. Now its 2020 and we are in a global pandemic. Everyone is isolating and we have to deal with that. So my friends and I have started to play Minecraft again. I setup a simple server on Google Cloud…
I don’t like WiFi. I find that there are too many variables that make it difficult to maintain a reliable signal throughout a home. WiFi extenders also don’t seem to solve the problem. They connect to a slower signal to re-send it further which only slows the connection down more. The best solution is obviously running an ethernet cable between every device, but that is rarely feasible if your…
As is usual for me, this year I went back home for the Christmas holidays. It’s always a nice time, however I find that it always ends up being busier than expected. This year was no exception. I had the usual family gatherings, drinks with friends and other get-togethers. Plus, there was one additional sporty social event. My girlfriend and I, who are both runners, were invited to join the…
As a software architect, how do you make a problem easy to solve? In the software engineering world this comes up a lot. There are always hard problems that will bring things to a screeching halt. Picture this: you are in charge of a brand new project. Your goal is to choose the right technology, the right practices and, the right workflow to make that project a success. You know this project will…
While visiting in Germany, my father and I went out for a bike ride around the towns near Essen. One of the towns that we checked out was Neviges . Within it you can find the Wallfahrtsdom (Pilgrimage Cathedral). This is one of the most interesting churches that I have seen. It has a very imposing presence, it is dark, very geometric and made entirely of concrete. It was built 50 years ago and…
Inverse kinematics is calculating the position of limbs and angle of joints in a system in order to make them reach a desired end position. In other words when considering a point calculate what angle limbs should be in to touch it. This is useful in games when making arms bend to hold objects, making legs touch the ground on uneven terrain or even rendering simple ropes. Almost a year ago I…
I have been using my Lenovo N22 Chromebook, running linux, for a couple of months now. It is an extremely convenient laptop for travel, school, and even personal projects. I have even been able to use the recently released Vulkan graphics API, just to show how capable these little laptops are. Unfortunately, there is one small problem that has been bothering me. The N22 model, similar to almost…