Keith McLamb · Mechanicsville, Virginia

Hi, I’m Keith.
I make things
less annoying.

I’m a workforce analyst with a soft spot for useful reports, practical automation, and home servers. If something is repetitive, confusing, or needlessly difficult, there’s a decent chance I’m already trying to fix it.

This is where I write about what worked, what didn’t, and what I probably should have read before clicking Save.

A bit more about my work ↗

Recent writing

All posts ↗

Hey, remember me?

Three years, a new coat of paint, and a whole new collection of technical hyper-fixations. 

It's been a little over three years since I last posted anything here. Apparently, my approach to maintaining a blog has been roughly the same as my approach to cleaning out the garage: I'll get around to it eventually.

It would seem that eventually has arrived! Well, for the blog. I'll get to the garage, I swear.

For the three people that have been here before, you've probably noticed that the site looks a little different. I've finally gotten around to giving it a much needed redesign. The old design served its purpose, but it looked dated when it was new, and I wanted something cleaner, simpler and a little less cringey.

Man, that's an ugly website. Who built that garbage? 

So, what have I been up to?

For awhile, web design and development were really interesting. I enjoyed building this website, experimenting with the JavaScript that pulled it together and figuring out how to make things work. I still enjoy that stuff, but somewhere along the way, my attention wandered.

Recently, I've spend more time working with self-hosted services, automation, Python, and, more recently, artificial intelligence. What started as an interest in building websites has evolved into an interest in writing Python scripts to do my day job for me, building workflows and figuring out how to duct tape different applications and services together to make one useful tool.

My current collection of projects includes a home server, various self-hosted applications and an increasingly elaborate AI assistant setup. Much of it is genuinely useful. Some of it probably exists because I wanted to see whether I could make it work.

What's next? I'd like to start writing here more often. Not necessarily about web development, although I'm sure that'll come up again, but about whatever technical rabbit hole I happen to be exploring. That might mean documenting a project, explaining how I solved a particularly irritating problem, reviewing something I've been experimenting with or sharing an idea that seemed brilliant until I actually tried implementing it.

I'm not planning on turning this into a tutorial site or pretend to be some kind of expert on everything (or anything) I write about. Mostly, I want a place to document what I'm learning, share the occasional useful discovery and maybe save somebody else a few hours of troubleshooting or, at the very least, provide an oppertunity for someone else to laugh at me for managing to make a relatively simple task unnecessarily complicated.

The site has a new look, my interests have expanded and I've accumulated plenty of things worth writing about. Whether that translates into a steady stream of posts or another three year stretch of radio silence remains to be seen. But, hey, I finally got around to making the site prettier and posting this. I'd call that progress!

Permalink ↗

I'm back!

Wow, it's been awhile! My role at work changed, so I haven't been able to update the site at all. In fact, I had messed up the DNS records, so it wasn't even up for awhile! I use Google Workspace for email, Blogger (where this is actually being typed up and posted) and a few other things, but Github and Netlify to host and present the site. When I switched my DNS over to Netlify, I left my MX records at Google, so I wasn't getting new emails. I was expecting an email at [email protected] for a work project, but it wasn't coming through, so I fumbled around and eventually just swapped everything back over to Google. Since I don't have my site hosted at Google, it didn't have anything to display. My poor site was down for quite awhile and I was too busy to even realize it. I've got everything corrected now, though! Now you can read this on my site, then send me an email about how poorly it was written!

I expect that I won't have much downtime with the new role, so I'll probably start working on this in my off time. I like the idea of having something that I made from scratch being out in the universe for the world to see, even if it's just a handful of people here and there. I also want to continue learning HTML/CSS/Javascript and the best way to learn is to do.

Things I still need to do now that the site is actually back up:

  • I need to go through and relearn For loops in Javascript so I can change the ForEach loop that pulls my blog posts in the main page to a For loop that stops at 5 items. That shouldn't be too difficult. I just need to play around a bit to make sure I have it right.
  • I still need to nix the Contact Me page and redo the nav bar.
  • I'm thinking about changing the color scheme to something lighter. Maybe I'll set up a light/dark mode. That's pretty low on the list of priorities, though.

Permalink ↗

Finally, progress!

Progress! Well, not yet, but it's coming! I haven't update this blog in a bit, but I've still been working on the site itself in the meantime. I don't really like that, at the time this is being written, the main page is just a long list of every post I've made, so I'm making an archive page and a sidebar with links to older posts. I hate that my "Contact Me" page looks like it was ripped right out of a 1994 Geocities website, so I'm moving that to the sidebar too. The sidebar takes up too much space if the site is viewed from a mobile phone, I've made it to where the sidebar isn't there if the screen is too narrow for it to display well. If you, dear reader, want to see what it looks like once it's live, just turn your phone sideways and you should see it. I haven't deployed it yet, but it shouldn't be much longer.

I haven't been able to put much time into the site recently. Work has been hectic. I've had three of the last 34 days off and I don't have another scheduled day off until the 23rd. I've signed up for every second of overtime I can get and will continue to do so for as long as they'll let me. With how busy things have been recently, it seems like they'll keep letting me.

Things I still need to do for the site (that I can think of):

  • I need to work on the CSS for the archive page. I finally got the JavaScript and HTML working, now I just need to make it less ugly.
  • I still need to change up the JavaScript on the main page to limit the number of posts. Without that, what's the point of an archive page? Right now, it loops through every post given by the Blogger API and spits out the title, date, content, etc. I just need to change that loop to stop after the most recent five or so. I have an idea of how to accomplish that, but putting it into place should be a fun learning experience.
  • I should probably 86 the Contact Me page all together, then clean up my top navigation bar. Maybe I'll go ahead and redo the entire top nav bar.
Permalink ↗
Away from the spreadsheet

A perfectly reasonable use of my free time.

Outside of work, I tinker with Python, self-hosted services, and AI tools. Most projects start with “there has to be a better way.” A few end with a useful tool. Others end with a much better understanding of why nobody bothered.

Say hello ↗