all posts tagged 'timbornholdt.com'

December 2024 Observations

originally shared here on

  • I feel like I am still trying to figure out who I am. I feel like I can get along with anybody, but in order to do so, I have to contort myself into the shape I think is most acceptable to the other person. There aren't very many places where I feel like I don't need to contort. The internet promises to be that place, but now that the internet effectively has an infinite memory, I feel like any minor mistake I make will haunt me forever, which has a depressingly chilling effect on me.

  • My brand for the past few years was "neurotic, scared nerd." My brand going forward is "kind, confident, and fair nerd."

  • I wore my Windows 95 ugly sweater through the skyway and six different people told me how much they loved it. I think a big part of my purpose in life is to find ways to spread joy, even if it's by doing something as dumb as wearing the most bad ass Christmas sweater ever.

  • I got my son to try eating pizza. This is huge; he does not like pizza and refuses to even try. This is completely my fault, I've been horrible at encouraging my kids to be brave and adventurous with trying new foods. I, admittedly, am not exactly adventurous in that department either. My son told me he needed strength to be brave to try it, so I helped him bring all of his stuffed animals and cars downstairs into the kitchen, and we blased Sara Bareilles's Brave over the HomePod. And guess what? He put a piece of pizza in his mouth and kept it in there for a few seconds! Later that night, to much less fanfare, I bravely tried an Airhead. I didn't like it, but I tried it. It's cool to face scary situations together, even if that fear comes in various forms of high fructose corn syrup.

  • I have this idea to build a mini website which functions as my music library. I have a very specific vibe for a design (bad ass 70s-looking lounge area but with 2025 technology). There would be this record table console with records mounted on the wall such that you could see their faces1, and flanked on either side are the spines of records with the names of the albums on there. Clicking on a record would put it in the record player (maybe having it display some streaming widget dingus in view) along with why I like this record (interesting stories I learned about the production of the record, meaningful memories associated with it, vibes I get from it, recommended similar albums, etm.)

  • There's a fun AI project that I'm working on right now, but I am finding it so difficult to drum up the motivation to work on it. You know why? Because getting computers to do anything useful is so, so, so painful.

  • I watched this video called Why creating is crucial to human existence and it highlights the fact that what we do everyday is who we are. So in that spirit, I started a 100 day sit up challenge this month, because I wanna be the kind of guy who does stuff like that. I'm only a month into this challenge and I'm already able to knock out 100 sit ups without stopping in a little under 3 minutes.

  • The formula for discipline is (1) Create rules and standards for yourself; (2) Never break these promises to yourself; (3) Keep these promises at all costs (so start small!); (4) Build up slowly to a disciplined lifestyle; (5) Be on guard for at least a year.

  • For years now, I've had this recurring nightmare where I am being ushered out on stage in front of a huge crowd for a theatrical performance. I do not know the lines or the blocking or the choreography, and I feel this massive wave of embarassment and shame. This past month, I went to see a musical at my wife’s school, and I was unexpectedly asked to go on stage as a character. I had exactly zero idea what the show was, nor did I know the lines or blocking or choreography.2 Sometimes, life literally presents an opportunity to directly face your nightmares head on, and that rules.3

  • Direct passage from my journal from a year ago: "It's hard to write publicly about the things I am suffering with because it always seems like I look back on it in a couple of years and realize how silly it was to be stressed out about it."

  • I tend to avoid the trance style of EDM. It amplifies my anxiety because of how logical it is; I find myself hyperfocused on the technical aspects of the music, completely ignoring how it makes me feel.

  • The first big snowfall of the year rules when you have kids. The road coming back from the small sledding hill in our neighborhood was still covered in ice and snow, so I put the kids in their sleds and pulled them behind me. It was hard. My heart was pounding. My legs kept slipping on the slick road. But it was easy to continue, because I kept thinking: "why do you work out, if not for this?"

  • Running is more meaningful to me lately. I've been using it more as a meditative period in my day, a moment to disconnect from technology and notice as much as I can in my neighborhood.4 Ten years ago, I would've been mortified if I didn't push my hardest every single time. Now, I will often stop in the middle of a run and stare at the fog traveling across the pond, or watch the color of the sky subtly change as the sun comes up.

  • “Finns det hjärterum, sĂĄ finns det stjärterum” is Swedish for "If there’s heart room, there’s butt room."

  • I love learning new slang. This month, I learned two new phrases: sksksksk and ijbol.

  • Christmas Eve felt particularly bittersweet for me this year. It feels like my parents are getting closer to downsizing their home, so I tried my hardest to soak up the ambiance. And when you're in a "soak up this moment" mindset, it seems like there's never enough time to do it.

  • "It's time to stop researching and start living."

  • Before the sermon on Christmas Eve, my pastor said his words don't matter. What matters is what you hear. Sometimes, the thing you take away from a story is not what the artist intended, but that is okay.

  • The most nutritional part of a potato is its peel. Apple peels are also nutritionally important. Nothing of note is lost in a carrot peel.


Movies I watched:

Knocked Up (2007)

  • Glad I watched it? Yeah. I got 30% of the way through it and decided “I’m good here.” It's okay for your tastes to change as you do.
  • Will I watch it again? Nah.

Enough Said (2013)

  • Glad I watched it? Yeah. I heard Julia Louis-Dreyfus say on a podcast that she loved working with James Gandolfini, and it was cute to watch them interact on the big screen.
  • Will I watch it again? Nah. I didn't even finish it.

Yes Man (2008)

  • Glad I watched it? Yeah. I remember watching it in college and thinking it was a nice sentiment. It definitely hits harder at 37.
  • Will I watch it again? Nah. Wait, am I supposed to say "yes"?

That Christmas (2024)

  • Glad I watched it? Yeah. It was a cute movie, the kids loved it. It's nice to see some traditional ideas playing out in our modern time.
  • Will I watch it again? Yeah, I'd watch this again next year.

Mallrats (1995)

  • Glad I watched it? Meh. It was cool to see Eden Prairie Center in the 90s, but if I'm being honest, I've never "got" most of Kevin Smith's movies. I thought maybe I would now that I'm in my late 30s, but I think it's that I'm not a Gen-Xer.
  • Will I watch it again? Nah.

Youth in Revolt (2009)

  • Glad I watched it? Yeah. I'm a little embarassed to admit that I identify with Michael Cera in most of the movies that he is in. I like how he created a character to embody when he wants to feel confident.
  • Will I watch it again? Nah.

Rudolph the Red-Nosed Reindeer (1964)

  • Glad I watched it? Yeah. I don't think I've ever watched the whole thing from start to end.
  • Will I watch it again? Begrudgingly, I'm sure I will. This wasn't my favorite claymation Christmas movie.

Dear Santa (2024)

  • Glad I watched it? Yeah, this movie ruled. The kid actors were quite talented, and obviously Jack Black killed it.
  • Will I watch it again? Absolutely.

Arthur Christmas (2011)

  • Glad I watched it? Yeah. I snuggled and watched it with my kid on Christmas Day. It's an adorable Christmas movie.
  • Will I watch it again? Absolutely.

National Lampoon's Christmas Vacation (1989)

  • Glad I watched it? Yeah. I forget how much slapstick is in that movie.
  • Will I watch it again? Probably? I feel like that movie is slightly before my time, and because it wasn't on repeat at my house growing up, I don't have the same nostalgic feelings I get from other Christmas movies like Home Alone or Muppet Christmas Carol.

Home Alone (1990)

  • Glad I watched it? Obviously.
  • Will I watch it again? Obviously.

The Muppet Christmas Carol (1992)

  • Glad I watched it? Yes. It made me want to watch Muppet Treasure Island again, too.
  • Will I watch it again? Obviously.

  1. These would be my "current vibes," or albums which I have in a dedicated collection that I play as my default. 

  2. This is embedded in the script for the show. It's supposed to be like a "work/shoot" in wrestling where the real life beef between the actors playing these wrestlers becomes part of the show. Again, I knew none of this until after the show was over. 

  3. I'm glad my nightmares contain public performance anxiety and not, like, a fear of falling from a plane without a parachute. 

  4. Well, as meditative as I can be while ensuring I am not flattened in an intersection by an SUV. 


Why I still blog after 15 years


đź”— a linked post to jonashietala.se » — originally shared here on

Many of these kinds of retrospectives contain graphs of views over time or the most popular posts; but I’m not showing it to you because I can’t—I don’t keep any statistics whatsoever.

I don’t really care—and I don’t want to care—about how many readers I have or what posts are and aren’t popular. I worry that if I add statistics to the blog it’ll change from an activity I perform for the activity’s sake, to an exercise in hunting clicks where I write for others instead of for myself.

If I were chasing views I would certainly not have continued to blog for as long as I have, and I’d have missed out on the many benefits I’ve gotten from the blog.

I couldn’t agree more with this sentiment.

I do thoroughly enjoy when people reach out and tell me they read the blog, but I don’t share things here for the social clout.

I share things on here because the act of curating thoughts through the writing process brings me so much joy and clarity.

I’ve been meaning to write something longer form on here for a while, but all my good long thoughts have been sent to Monkey Wrench.

But this post made me reflect on my own blogging journey. I started blogging in a LiveJournal at some point in the early 2000s. I bought my own domain and moved my thoughts over there in 2004. I blogged from a pseudonym starting in 2006 up through college. I bought this domain while sitting in a TV production class my senior year of college and started a fresh blog.

It’s been a while since I burned the stack to the ground and started fresh, but ever since I started building websites for a living, it stopped being fun to do it in my free time.

Continue to the full article


Some small tweaks to this site

originally shared here on

It's been a while since I used my own website as much as I did during this year's WeblogPoMo. The daily posting routine revealed some small annoyances which made visiting this site a little less fun.

For starters, I haven't redesigned this site since I got COVID back in 2021. 13 year old Tim would have been mortified at how long we've gone without a big redesign.

That's not to say I didn't try! I experimented with (and coded out) nearly a dozen different potential layouts.

The one I had the most fun with was a 90s Memphis style layout where the background elements were independent SVGs that were subtly animated.1

The problem I'm realizing2 is that I'm not a particularly skilled designer. I know what good design feels like, but I haven't taken the time to articulate what good design feels like.

The other problem? Building websites isn't fun for me anymore.

The tools you use to build websites are all essentially the same. There is functionally zero difference between a monolith Rails app running Postgres, a monolith Laravel app running MySQL, a static site generator powered by a Rube Goldberg-ian series of GitHub actions, or a GraphQL-powered React app.

The biggest casualty of choosing to build software professionally is my desire to learn new web technologies.

Instead of forcing myself to sit down and spoon-feed myself a puree in the form of a Next.JS tutorial, I'm leaning into other areas that interest me more.

Offline, that includes fixing up my house and lawn, writing, and being a better parent/husband.

Online, that includes playing with generative AI and sharing more of my thoughts on this blog and in my newsletter.

But even while I'm exploring other interests, that doesn't mean I can just let this site deteriorate and fill up with prickly weeds.

So over the last couple days, I made a couple small changes to this page that subtly improve the user experience. Most of these changes come in the form of discoverability.

When I launched this version of my site, I decided to lean into the linked list style of posting.

This was a great move because it's allowed me to (1) share interesting webpages with y'all, but also (2) make an archive of thoughts and ideas that inspire me.

Earlier this year, I added tags to all my posts. That process is what first made me realize that once I posted something on this site, it was next to impossible to find it again without jumping into a Rails console and searching for it.

Now that all of my posts have tags, I wanted a way to better visualize what topics I tended to think about and navigate through them.

If you visit the main page of this blog, you'll see a section at the top that explains what I tend to write about along with some groups of tags.3

I also made some slight CSS tweaks so the site looks even better on mobile.4

The main page is another source of stress for me over the past couple years.

As previously mentioned, my blog is mostly linked posts, but I do occasionally post longer essays and these shorter posts.

My main page had two separate sections to display my longer posts and my recent links, but these sorts of posts vanished into the ether.

My solution was to display a stream of all the posts along with their tags and an indication if it's a link post.

Like I said: these are small tweaks.

But small tweaks are sometimes all you need. It's important to maintain our virtual spaces.

Just because I'm not inspired to build new websites doesn't relieve me from the obligation to keep it functioning the best I possibly can.

And a positive consequence of these changes? You can expect more shorter posts from me like these!


  1. The problem I ran into was how inefficient these animations were. One of my main goals with this site is to be as energy efficient as possible. I should probably get off Rails and switch to a static site generator to be even more efficient, but this is good enough for now. And I at least didn't make it worse by deploying a big energy vampire that just made some squiggly lines wiggle up and down.  

  2. Maybe "realized" is the wrong word, because I've known I'm a mediocre designer for the past 20 years. "Accepted" is probably more accurate. 

  3. It was a fun exercise to print out the list of 448 tags and pick out the key ones. 

  4. For some reason, I didn't realize that if you have a parent element that honors the dimensions of the screen, but then you have a child element with a max-width tag set that's bigger than that, mobile Safari will just stretch the content of that child beyond the bounds of the parent, causing it to cut off the content on the sides. That is a đź’© experience. 


Adding tagging to timbornholdt.com

originally shared here on

I just released a feature to this site where blog posts can now be tagged with any number of tags.

You can then read all the posts that are tagged as confidence or music or programming or whatever.

I was extremely inspired by kottke.org's recent redesign. The idea of turning your blog into your own social media stream-looking thing strikes me as one of those design decisions that feels revolutionary and obvious at the same time. I will no doubt try to do something similar to this site right here.

But as I think through the best place to start, I'm resisting my urge to just blanket redesign the site without a plan. And the first step of that plan is to do the tedious work of going through my archives and adding tags to the old posts.

Tags aren't exactly a revolutionary new feature. It took me about a half hour to implement the basics, and then another day or so of tweaking the process of adding them to each post so I can do it quickly.

The reason I wanted to share this as a post is because one unintended consequence of going through this process was [pause for sarcastic and dramatic effect] ... anxiety!

Because of course the creation of a a feature for my site that is read by an exceptionally low number of people must result in getting way into my head about it.

Yesterday, I spent about an hour going through my old posts and adding some tags to them.

As I got deeper into the archives, I kept thinking of tags that would've been great to add to posts I had already added tags earlier.

I found myself getting mad at myself for not being optimized up front and just having a tag list to choose from.

Well guess what, Tim? There’s no way you’ll know what tags you want to add until you’ve added all the tags!

Just do your best, man. Even getting half way is an amazing leap forward. Just keep moving forward.

It's proving to be surprisingly hard for me to not beat myself up over this tag system, which again, is supposed to be fun, you goober!

Here's the best case scenario from doing all this work: maybe these tags will help me articulate the overall themes I cover on my site, to identify the topics I’ve been interested in throughout the last fifteen-ish years.

Here's the worst case scenario from doing all this work: complete and total indifference from the universe.

Note to self: just enjoy getting a chance to go through the clutter of your site and clean it up. It’s fun! Add whatever tags you think will help, and if you get an idea about a better tag later, go back and look it up then!

As you can see, I'm still working on not letting anxiety cripple me from starting and completing a project.

Why am I even stressing about this?

Just go have some fun with your tag thing.

It makes you happy.

That should be enough.


timbornholdt.com Strikes Back

originally shared here on

A few weeks ago, I got an email from Google saying that I had an "unusual number of 404 errors" on my site. I looked into it, and a very helpful script kiddy exploited my Wordpress site and took over the admin account.

It didn't look like there was much in there in terms of damage done, but they basically changed my admin password, bricked my template, and moved on.

After years of neglecting this blog (yet again) and after years of dealing with an annoying CMS, I had the same thought that every web developer has: "Nuts to this, I'm just gonna build this site myself from scratch."

So here we are: timbornholdt.com version whatever!

After reading back from my old posts in 2012, I realized that I really should start blogging again. I really enjoy seeing how much has changed in the past 6 years, and I know that if I start blogging about my life now that I'll look back in another 6 years and have the same feelings.

So without further ado, welcome to the blog, and we'll see you in another 6 years!


How to detect and replace YouTube links by extending the Redcarpet gem

originally shared here on

As I'll explain in a future post, I had an old Wordpress blog that I got sick of maintaining and updating, so I did what any red-blooded developer would do: build my own blog engine.

In doing so, however, I needed to import all my old posts from Wordpress over to my own Rails form. This worked nearly flawlessly, with the exception of my YouTube videos, which looked something like this (without the space inside the tag):

[youtube]nFZZxOHHZlo[/youtube ]

Because I am using the Redcarpet gem, I thought I'd extend its parsing capabilities to detect anything like this and wrap it in a responsive frame.

Here's how I did it (with extreme thanks to this SO post):

Step 1: Create a folder called app/services, and then create a file called custom_markdown.rb:

class CustomMarkdown < Redcarpet::Render::HTML
  def preprocess(text)
    format_youtube(text)
  end

  def format_youtube(text)
    text.gsub! /\[youtube](.*?)\[\/youtube]/ do
      "<div class='embed-container'><iframe src='https://www.youtube.com/embed/#{$1}' frameborder='0' allowfullscreen></iframe></div>"
    end
    text
  end

end

This code will perform a regular expression to find anything wrapped in [youtube] tags and replace it with a <div> that we can now style with CSS.

Step 2: Add the following SCSS somewhere in your project where it makes sense:

.embed-container { 
  position: relative; 
  padding-bottom: 56.25%; 
  height: 0; 
  overflow: hidden; 
  max-width: 100%; 
  iframe, object, embed { 
    position: absolute; 
    top: 0; 
    left: 0; 
    width: 100%; 
    height: 100%; 
  }
} 

Step 3: Use the custom parser when including Redcarpet in your project:

require './app/services/custom_markdown.rb' # This was necessary for me, might not be necessary for you
@blogs = Blog.all.order("published_at desc")
renderer = CustomMarkdown.new()
@markdown = Redcarpet::Markdown.new(renderer, extensions = {})

Now, anywhere you use those [youtube] tags, you'll get this fancy rendering instead:


New Front Page Design

originally shared here on

It was around this same time last year that I updated timbornholdt.com, and I figured I was due for a bit of a redesign as well.

This time, I went a bit more simplistic: just one page with a short biography and links to some choice projects.

I'd love to hear what you think. Holler at me on Twitter.


Welcome

originally shared here on

I've had the motivation for the last few months now to start my own blog, and after listening to this week's superb episode of The Talk Show, I decided it's time to just get it going.

This blog will be a smorgasbord of links, long-form posts and shameless, shameless self-promotion. I'll likely link to lots of stuff about Apple, photography, podcasting, running and other general geeky topics. And don't be surprised if I change the design six thousand times and leave this site stagnant for months on end.

So, without further ado, here we go.