Skip to main
a head full of memories by
Timo Mämecke
Jump to navigation

18 posts in 2024

· 1 minute read

Scenario: a magical fairy—the “magical” is important, so you don’t confuse it with a boring non-magical fairy—appears and grants me one wish. What would I wish for?

That JavaScript switches to snake_case over night. We wake up and all the camelCase is gone, replaced by beautiful snake_case.

This isn’t a matter of personal taste. camelCase is simply more difficult to read. It requires more visual effort. There’s even a study on that.

We’re used to reading words that are visually separated, and the underscore provides that visual separation. You probably had no issues reading this sentence, even though it was mostly lowercase letters. But writingLikeThis madeItLikely aBitMoreDifficult toRead, didn’t it?

JavaScript is not a visually appealing language. Perhaps Java and Smalltalk were not the best influences. And with all the new question marks added to its syntax, it looks like a very insecure “mocking spongebob” meme.

And I won’t buy the argument that camelCase is more efficient because you don’t have to type the underscore all the time! It’s as if developers spend their whole day just typing, non-stop, without autocomplete, constantly having to find those keys to press! Aaaaah help, where’s my underscore key gone now, I can’t find it!!!

Nah. snake_case would have been the better choice.

A man can dream though… a man can dream.

· 4 minute read

User-defined color theme in the browser without the initial flash

When adding dark and light mode to your site, a common approach is to store the theme in localStorage and reading it on the next visit. But our JavaScript usually runs after the page loads, so reading it in JavaScript can cause a flash of the wrong theme—like flashbanging dark mode users with light mode. We can fix this with a small script in the <head>. But wait—isn’t that a blocking script? Aren’t those bad? Let’s take a quick look at why that’s not always true.

Read more
· 3 minute read

Thought Leaders

I have many thoughts about this topic but I’ll try to keep it short: I don’t like this thought leadership in engineering, where it’s mostly about being an influencer and less about having a good influence.

It rubs me the wrong way. You could just say that it annoys me and I should ignore those parts of the internet. But it actually worries me because it feels like small cult-like groups in which engineers won’t grow: They’re caught in an echo chamber, which makes them feel like they’re growing, but instead of growing as a person and engineer, only a single opinion grows within them.

Read more
· 1 minute read

Lüften

Who would have thought that opening the windows several times a day would have a lasting effect on reducing the humidity in my home? My parents, probably. And probably everyone else except me.

Don’t get me wrong, I did air the rooms in my apartment regularly! But most of the time, not multiple times a day. For example, I aired my bedroom most days. Maybe I forgot to do it once a week, but I usually do it after I roll out of bed. But in the fall season, the humidity has always been at the upper limit before it’s too high.

I guess I was a bit ignorant because after opening the window for about 15 minutes, the humidity quickly returned to where it was before. I thought this would happen every time, no matter how many times I opened the window. But somehow I forgot the most logical conclusion: that doing it multiple times a day will incrementally dry out the room more and more.

After only 2 weeks of airing all the rooms several times a day, it’s now at a perfectly average level. And my windows are not fogging up as much overnight. I even bought a dehumidifier last year, which helped a bit, but in retrospect wasn’t necessary. I should’ve just opened the damn windows more than once a day.

To be honest, it’s a bit embarrassing to admit my ignorance. But I have learned something!

· 5 minute read

Breaking UI Changes

I think some apps I use every day, like Spotify for Desktop or YouTube TV, are being way too careless with seemingly small UI changes. It starts to annoy me a lot, so I put together some examples of sloppy and irresponsible UI changes that I noticed in Spotify and YouTube TV to make you think twice before making such careless changes in your apps.

Read more
· 1 minute read

Changelog, November 2024

I’ve motivated myself to write shorter posts more frequently! The previous list of headlines (which is now the Archive) added too much friction for writing down some content—not just because I had to come up with a title, but also because a short post on its own page felt a bit … lonely.

After 2 years of writing posts in GitHub Discussions, I’ve now switched to Keystatic. The writing experience is much better: it’s still in my browser, and the media handling is much better! Images and videos became a bit more cumbersome with GitHub Discussions. It wasn’t impossible, just a bit annoying. And that extra friction became an excuse to not writing down some thoughts I had.

I might have been just a wee bit too excited to release this new version. There are some minor tweaks here and there to improve, but pfft, that’s continuous deployment for you!

· 2 minute read

Not waking up at 6:30am

Early this morning I woke up briefly, it was 6:30am—yes, that’s early morning for me—and heard very faint shower noises. I usually don’t hear anything from my neighbors, but probably because it was so quiet otherwise, I realized that one of my neighbors had to get up now.

And then I remembered that I used to have to get up at about that time when I went to school. To be exact, I always got up at precisely 6:55am. My morning was always timed to the minute to get the most sleep out of it. The whole family had to coordinate who was in the bathroom at what time. I actually went to bed for another 15 minutes after taking a shower, just to make the most out of every minute of sleep.

Read more
· 2 minute read

Picking those low-hanging fruit in your life

When I moved into my first apartment over 11 years ago, I learned something that I continue to learn on a regular basis: solve the little problems in your life. Realize that they’re just low-hanging fruit, ready to be picked.

Low-hanging fruit is a term I usually think of only in the context of work. And I still do! Thinking and writing about low-hanging fruit in the context of my personal life feels strange to me, but of course they exist.


I never really liked the faucet in the kitchen of my new apartment. It was a little loose, and when you rotated it, the whole apparatus rotated a few degrees. It was tall, and the water always splashed more than usual when it fell into the sink, splattering water all over the dark granite countertop and stove. You couldn’t pull the faucet down, and it didn’t have a sprayer. It was inconvenient and annoying.

But I didn’t do anything about it because… I don’t know why? Because it’s just a faucet? It didn’t occur to me that this was a low-hanging fruit that I could solve. I just lived with the damn thing for 2 years. Until I realized that a new faucet only costs 50€ and is easy to replace. I could fix this annoyance in my life with the least amount of effort.

Even the little wiggle it had could have been fixed in a few minutes without any tools. Yet I never did.

And I began to avoid using it because it annoyed me so much. Instead of washing my hands in the kitchen, I didn’t wash them at all I actually went from the kitchen to the bathroom sometimes and washed my hands there so I wouldn’t have to wipe the counter because the water would splash everywhere.

I wasted 2 years on something I could have fixed with the click of a button on amazon and 30 minutes of “work”.

That’s just one of many. I’ve started to identify and fix more of them in my life, but it always takes some time to realize “yeah, this has been bothering me for a while, and it’s easy to fix”.

So here’s my call to you: identify those low-hanging fruits and pick them. The big things in life are hard enough, and the little things make a difference.

· 1 minute read

One year with the Aeron Chair

1 year ago I wrote about my first two weeks with my new Herman Miller Aeron Remastered chair. So, how is it after a full year?

This chair was the best investment I made last year. My butt never gets tired of this chair.

I still use the tilt mechanism as I configured it a year ago. It’s perfect. I lean back a little, a little more, or not at all. In meetings, I like to lean back a lot, put my hands behind my head and just relax.

It’s a good thing I didn’t get the headrest, because you really don’t need it. When I sit upright, I don’t rest my head. And when I lean back, like I said, I like to put my hands behind my head and lean on them, and it’s really comfortable. It would probably be annoying if there was a headrest.

My back pain never came back! I remember I used to have this constant tension under my right shoulder and looking back it was really not good. But since then it’s just gone. Never had any problems again.

If your job involves sitting at a desk a lot, and sometimes your butt starts to get tired, or you have some tension in your back or shoulders, and you’re not short on money, I would highly recommend buying this chair if you’re not short on money. The price tag may seem high for a chair, but when you consider how expensive a good mattress and pillow is, and how many hours you’ll spend on it, it’s worth every penny. #notsponsored

· 1 minute read

Screenshot an HTML element with transparent background

Today I learned that you can capture a screenshot with transparent background using Safari’s Web Inspector. That’s nice because Chrome’s Dev Tools can’t do it. It will always capture it with the background. Sometimes I just want to quickly paste an HTML element into Figma without recreating it. Now I have at least one reason to open Safari from time to time!

A few interesting things to mention:

  • If you zoom in, the screenshot is also more high res, which is nice.
  • If you select text, the text is also selected in the screenshot. Before you ask: the mouse is not included.
  • It only makes a screenshot of whatever is in the bounds of the selected element. If the element has a shadow, the shadow is not in the screenshot. You gotta add some spacing around it if you wanna include the shadow.
  • It also includes any absolute positioned child elements, even if they’re not in the bounds of the element. Which makes sense, you’re capturing the node, which also includes its children.
  • While the screenshot does not include the background, it does include elements that overlap the bounds of screenshot, even if they’re from a totally different node.
  • But it doesn’t include all overlapping elements? It’s a bit difficult to explain, let me demonstrate:

I played around with it, and when I remove the inline-block from my name, it is in the screenshot. Interesting, but not interesting enough to try to understand it because it’s likely the most useless knowledge out there.