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 error messages.
To test this I build a very simple calculator REPL. It takes math input like this:
5 + 5 / 10 and will print out the answer. It will not handle brackets, order of operations or any other intricacies of calculators. Those are problems for a later time.
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 the the user did not understand that a online view of the files is not the same as having the files on your computer.
This is common in the world of online files. So I started to wonder: How can we build software that does not continuously confuse people?
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 Platform that only costs around a dollar a month for our usage. In this post I will go over the pieces that I used to build that server and how you can setup your own.
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 home is not already wired for it. Recently I started using powerline adapters as a middle ground. They may be a good substitute for ethernet cables, but only if they are setup correctly.
Powerline adapters work by plugging the devices into two locations on the same electrical system. They send high frequency signals across the system that can be read back out on the other side. Just like an ethernet cable, these adapters are physically connected using the wiring that is already in your home. However there is a catch, the line is shared. This makes the adapters sensitive to interference caused by other equipment. In this article I will cover how to diagnose connection issues and how to optimize your powerline network. I am using the D-Link DHP-701AV for my power adapters. Some of what I have learned will work on most adapters but there is some information that is specific to these devices.
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 Tri-Annual Harry and Henny Fun Run. It was a simple event, start the day with a 5k, a 10k or a half-marathon and then enjoy a nice breakfast. Seemed simple enough and I didn’t put much thought into it. Christmas is busy, it’s always like that, so what’s the worst that could happen? All I was worried about was a bit of burn out at the end. Little did I know, I would be learning a lot of important lessons in the coming weeks.