• New Hardware and Software in January

    In January, I began adjusting some of my long-standing software and hardware habits.

    🖥️ From iTerm2 to Ghostty

    I had been using iTerm2 for years, and it consistently met my needs. Although they introduced some AI features, these were quickly made optional, and overall, I can still recommend the tool. Recently, I started exploring Ghostty, a terminal emulator developed by Mitchell Hashimoto. While it's still under development—e.g., settings must be edited in a file, though this is expected to change—it operates efficiently and integrates well with macOS. After configuring it, I decided to make it my new default terminal.

    🤖 Monarch as a Spotlight Alternativ

    For system searches and launching applications, I relied on Spotlight and never felt the need for more advanced tools like Alfred. However, after reading a recent post by Alexander Olma mentioning Monarch, I decided to give it a try. While I'm still evaluating it as my default launcher, I appreciate its enhanced capabilities, particularly the seamless initiation of web searches and integration with applications like Reminders. This experience has prompted me to explore alternatives beyond Spotlight.

    🔎 Switching from Google to Kagi

    Last year, I transitioned most of my email communication from Google to Fastmail, using iCloud for personal correspondence. The next step was to find an alternative search engine, leading me to Kagi. Although it requires a subscription fee, similar to Fastmail, I value my privacy and prefer not to exchange my data for free services. Kagi's integration with Safari is functional, and the search results have been satisfactory, making it a viable option for the foreseeable future.

    ⌨️ Adopting Logitech's MX Keys Mini

    At my desk, I've decided to change my keyboard setup. While I still appreciate my NuPhy mechanical keyboard, its noise level isn't suitable for the office environment. I previously used Apple's Magic Keyboard but found myself favoring Logitech's MX Keys Mini, which I also use with my gaming PC. Seeking a quiet keyboard with a US layout, I chose Logitech's model as my new office standard.

    🖱️ Experimenting with the MX Master Mouse

    Having used a touchpad for years, I decided to experiment with a mouse to assess any potential benefits. Last week, I connected my MX Master to my Mac. While I'm not entirely certain about replacing my Magic Trackpad, I appreciate the touchpad's gestures for tasks like switching between screens or windows. I plan to spend more time adapting to the alternatives offered by the MX Master before making a final decision.

  • htmx offers stability as a feature

    At the moment, I'm waiting to upgrade applications to the latest Angular version because breaking changes in the update are slowing down the development of one of the libraries we use. In this context, stability as a feature sounds very appealing.

    People shouldn’t feel pressure to upgrade htmx over time unless there are specific bugs that they want fixed, and they should feel comfortable that the htmx that they write in 2025 will look very similar to htmx they write in 2035 and beyond. -- htmx blog

    In my perception, things have gone very quiet around htmx in the last few months after an initial wave of hype. I'm curious to see if it will become a serious option for future projects.

    via Simon Willison

  • Basic NextDNS Configuration

    And here’s another useful tip if you’re using NextDNS (which, along with Wipr 2, is the reason I see no ads and get tracked less): This " Hitchhiker’s NextDNS Guide" pretty much covers all the key information you need for configuration.

    I personally use NextDNS through the app, but Alex’s approach has its advantages:

    Instead of directly applying the profile (on the router), I install the native apps for DNS relay and the firewall so I can quickly disable them (on individual devices). It's inevitable that you’ll occasionally need to load websites “without a content blocker” and without the DNS redirection — even if you’ve explicitly added domains to the general “allowlist.” -- iPhoneBlog.de

    via iPhoneBlog.de

  • Creating Biometric Passport Photos

    More of a note to myself than actual news: You can create passport photos using your smartphone and then adjust them on passfotogenerator.com. This can be particularly useful when dealing with small children. For instance, taking a passport photo of my one-year-old daughter was quite challenging with a professional photographer. Doing it in a familiar environment with more time would likely have been much easier.

    To create a biometric passport photo, the following requirements must be met:

    • Biometric passport photos must measure 3.5 x 4.5 cm
    • The face height should occupy about 70–80% of the image
    • The photo must be sharp, high-contrast, and evenly lit
    • The image quality should be high with natural skin tones
    • The background must be plain, light-colored, and pattern-free
    • The head should be centered and positioned straight
    • Eyes must be open and looking directly into the camera
    • A neutral facial expression and closed mouth are mandatory
    • Head coverings are only allowed for religious reasons
    • Special rules apply for children and infants

    via Volker Weber

  • 2024 Wrapped: My Default Tools

    As 2024 draws to a close, it’s time to reflect on the apps, tools, and platforms that shaped my daily life this year. Here’s a comprehensive look at my go-to choices for productivity, creativity, and beyond. Anything that has changed has a strike-through the previous tool:

    That’s my 2024 wrapped! What were your favorite tools this year? Let me know!

  • Python Rediscovered: uv – The Swiss Army Knife for Tooling

    As a developer who works extensively with JavaScript and Java, exploring Python anew has been an exciting journey. Back in university, I had already worked with Python, but at that time, I didn’t give much thought to tooling — it just worked, or so it seemed. Today, I understand that tools for dependency management and virtual environments are fundamental for modern software development.

    However, much like in the JavaScript ecosystem, I encountered a vast array of options in Python: pip, poetry, virtualenv, and many more. The sheer variety, combined with tutorials often relying on different tools, can feel overwhelming when starting out.

    To find a clear entry point, I reached out to my friend Oliver for advice. His response was concise:

    Yes. Only uv. It replaces pip, venv, poetry, twine, setuptools, pdm, hatch, and everything else out there.

    This recommendation felt like a practical solution to what could otherwise have been a daunting setup process.

  • Stepping into Other Bubbles

    Every year, I dedicate some of my free time to Advent of Code, and each year I try to tackle it with a different programming language. It doesn’t have to be anything overly exotic, and I often end up using Go. But this year, I want to give Python another chance.

    And what can I say: I can totally understand how other developers feel when they transition into the JavaScript ecosystem. You're practically overwhelmed by tools and opinions, leaving you afraid to even get started for fear of doing it wrong. Back when I first started programming (often with Python, among other things), it was simpler. I didn’t know what I needed to pay attention to (testing, build systems, dependency management), and somehow, it was more chaotic back then—but it also felt faster.

  • TIL: Efficient Sorting of Git Branches

    In Git, branches are sorted alphabetically by default. This is convenient when you remember the branch name, but it's not always the most practical approach. Fortunately, the sorting order can be customized to display branches with the latest changes first:

    git branch --sort=-committerdate

    Optionally, -r can be added to search for a remote branch. This is particularly useful when looking for a branch previously worked on with a teammate.

    I have set this as the default in my personal .gitconfig:

    [branch]
        sort = -committerdate
  • Cleaning Up Local Git Branches

    Over time, I accumulate several local Git branches in various projects. To maintain clarity, I regularly delete all branches except the main branch.

    To avoid having to constantly search for the command, I'd like to share it with you here:

    git branch | grep -v "main" | xargs git branch -d

    git branch lists all local branches. grep -v "main" filters out the main branch from this list, as I don't want to delete it. xargs git branch -d executes the git branch -d command on the remaining branches.

    If you want to keep multiple branches, you can extend the command:

    git branch | grep -v "main" | grep -v "develop" | xargs git branch -d

    Here, two branches, main and develop, are filtered out from the list and thus not deleted.

    I hope this tip helps you keep your system as tidy as it helps me.