About TheLazyEngineer

Motivation

Finding robust, modern technology is difficult. It wasn’t long ago that we had to replace our computers and smartphones every couple of years to be able to use the newest features and software. Software updates always break something for someone, causing countless manhours of new work. The constant churn of new technology is endless and it grows tiresome when things are already working perfectly well.

Human beings are amazing at creating tools that last the test of time. Axes and hatchets have been cutting wood (and unfortunately people) for millenia. Wheels are still round and exceptionally useful. The venerable stick has been levering for all of recorded history. What do these tools have in common? Simplicity in function and form.

Simplicity is foundational to robustness and robust things are just nicer to use. Who wants to spend half a day fixing something that was working fine last week but then decided to update itself? Let’s bring back robustness to our technology. The information on this site is directed to this purpose.

Site Purpose

  1. To organize areas of scattered and neglected technical information – Docs
  2. A place for my opinionated, technical thoughts – Posts
  3. An excuse to learn to build a website from the ground up

Audience

This site is written for people who have at least some technology background or interest. Most of the content is at least tangentially related to software since that is where my expertise lies. I will try to include resouces for learning more about topics in the Docs section, but this site is not intended as an early learning resource.

Meaning of Lazy

The word ’lazy’ on this site has a meaning in the same spirit as is used in programming↗ : delay work until it is required and do the work only as often as necessary (ideally never or once).

You might think that this is a given in computer programs, but that’s not how they generally work. In most applications or websites (equivalent these days), many things are initialized when the program starts: connections to remote sites and databases are established, background processes are started, files are opened for use, initial state is loaded…etc. This is the delay that we notice when we open up a large application. To make this startup time faster, lazy evaluation is often utilized for components that might not be touched by the user. That way, the application startup time will be faster at the cost of minor delays when the components are initialized on use.

Another way to think of this meaning of “lazy” is: there is already more than enough work to do, so don’t add more work unless necessary. Try to eliminate time consuming, repetitive work since it is rarely of greater value than some other, available work. Embracing this laziness opens up time for more useful things (or often allows for more avaiable CPU cycles and RAM in computers). This spirit of laziness can be seen in all human tools. We created the wheel to avoid repeated trips. We created the washing machine to save countless hours of hand-washing cloths. We created computers to save millennia of manual calculations.

Humans are lazy by nature, and that trait keeps us moving forward in our exponential pursuit of avoiding work.

Background

I am a Software Engineer. I have been doing that kind of work for nearing two decades. I have always been paid to do text-based, backend work, so that is my main area of programming expertise. I have also built computers and servers for as long as I have been programming and have taken up Linux systems administration and networking as a hobby. More recently, I have spent some time learning about electronics, circuit design, and power systems.

I learned that I am a computer nerd later than many. I started programming for the first time in college. Before that, I thought that I should be a musician, but I never liked practicing as much as was needed. It was too idle for my brain, too claustrophobic in the university’s practice rooms, and I knew that hours of daily practice were required to move to the next level. Luckily, while coming to this realization, I saw a friend working on his Computer Science homework in C++. It looked interesting and I started asking him more about it. I signed up for the introductory course the next semester and have been hooked ever since.

Computing/technology is such a large field that there are always new areas to explore. That is why I love it. There will always be people who know a lot more than me about any topic and have kernels of amazing knowledge to share. If I get bored writing Java or C#, I can move on to Elixir or Nix systems administration for a while. There is always a new, relevant topic for me to learn more about.

Privacy

Privacy will always be respected on this site. Currently, no site analytics have been added. If site-analytics are added, then the details will be laid out here, won’t do anything obnoxious, and won’t require a silly GDPR↗ dialog.

Thank you for visiting my website. I hope that you find something useful.