You Don't Know Gif - An analysis of a gif file and some weird gif features — Yes I am referring to the mainstay common gif you’ll find all over the web at large sites like Google’s owned Tenor or Facebook’s owned giphy. Everyone’s favorite file format for sharing short animated snippets. The gif as most people know it As most people know gif, gif is an animated file format. You might have looked at gif files and thought wow these files are pretty large. Perhaps you looked at them and thought: wow, these pictures are low definition.
Learn by doing, rather than do by learning — During my time as a professional software engineer, I have had countless debates over the merits of one design pattern, library, or concept over the other. Some are even publicly documented! At this point in my career I have spent a number of years educating folks. This includes students in elementary school, to students in college, to hundreds of professional software engineers at previous workplaces. Across these landscapes there has been one constant, you can tell people whatever you want, but often they won’t “get it” until they believe it.
Twolander a Moonlander Update — Since making my Moonlander post I’ve had a lot of folks from work and otherwise checkout my blog. I don’t keep website statistics here (I like to honor folks' privacy on this site) but I can see my nginx logs are popping! However the information in the previous post is a little out of date. I’ve changed up some layouts a little and found one more comfortable! Let’s jump in.
Landing on the Moon - A trip to ergonomic keyboards — Note: I have an update to this post! If you’re interested in learning more of my later experiences with a split keyboard, check it out here. Since I sit at a desk for so long each day I want the experience to be as comfortable as possible. Keyboards are the primary way I interact with computers, and I’ve had a number of them over the years. Some big, some small. Some mechanical, and some not.
Writing a calculator parser/evaluator (without knowing anything about them!) — A few weeks ago I got an urge to build a calculator parser and evaluator. Something that can take a simple 5 + 6 + 7 expression and evaluate it to a number: 18. I had never worked with calculator parsers before and had also never heard of the shunting-yard algorithm when I wrote this. I wanted to go in blind just for the fun of it and to see what I could come up with.
Self Hosting Is Cool — After many years of my main site and my blog (you’re here right now) being hosted on infra I don’t own, I have migrated everything to infra I do own. My main site was hosted on GitHub pages, and my dev blog on a Google Cloud Micro instance (the free tier one). I didn’t intentionally scatter them about, it kind of just happened over the years. I had a little extra time on my hands and was tired of the messy configuration, so I decided to unify them.
Error handling in Java is error prone — There have been a number of debates over the years about the merits of checked versus unchecked exceptions. Kotlin’s approach when doing interop with Java is to ignore checked exceptions altogether, effectively turning every exception into unchecked exceptions. You may have your opinions about whether you prefer checked or unchecked exceptions, but I’m here to tell you both are problematic. If you look deeply enough into this, you may come to the conclusion I think all exceptions are problematic.
So you want to write object oriented Rust — Whether you wanted to find out about object oriented Rust yourself, or you wanted to see why in the world I’m talking about object oriented rust, you are here. And so let us talk about object oriented Rust. Object oriented Rust is not so outlandish. Many folks think of Rust as a functional language, and while there are plenty of functional paradigms in Rust, many of those paradigms are also available to other languages in one way or another.
Flicker free fireworks (or how I accidentally rediscovered the regen buffer) — In my last post I talked about how I made a enjoyable little display of fireworks for the terminal. It was fun to make and it’s fun to watch when meetings get boring (always). Fireworks can be found here. However after running my fireworks for a while, I started noticing some funky details. The fireworks could be a little flickery at times. And not in a good way. Well we couldn’t have that!
Fireworks for your terminal — Recently I embarked on a fun little side project. There have been just too many rampant fireworks going on outside and I was feeling a little left out, so I decided to make some of my own. Given I have no experience with anything like OpenGL at all, and was feeling like learning termion since I consistently use tui with a termion backend and only sort of understand how it works, I decided terminal fireworks would be the way to go.