Wednesday, 12. March 2025 Week 11

Quoting Steve Yegge on Claude Code

I recently tried out Claude Code for both some personal project as well as some work project.
Was very impressed how far the AI coding assistants have come already.
Looks like a powerful tool when used by an experienced software engineer.

I've been using Claude Code for a couple of days, and it has been absolutely ruthless in chewing through legacy bugs in my gnarly old code base. It's like a wood chipper fueled by dollars. It can power through shockingly impressive tasks, using nothing but chat. [...]

Claude Code's form factor is clunky as hell, it has no multimodal support, and it's hard to juggle with other tools. But it doesn't matter. It might look antiquated but it makes Cursor, Windsurf, Augment and the rest of the lot (yeah, ours too, and Copilot, let's be honest) FEEL antiquated.

Steve Yegge, who works on Cody at Sourcegraph

(via)

Saturday, 8. March 2025 Week 10
Friday, 7. March 2025 Week 10

If your content is only on social media, I'm not going to see it

If your content is only on social media, I'm not going to see it by Cory Dransfeldt.

If you only post on social media, I won't see it. If you don't have an RSS feed, I won't follow it, I won't subscribe to it. I don't want want your app because I don't want a homescreen full of apps for publications and platforms.
I don't have a fear of missing out. I am missing out. I've come to terms with that. Algorithms can be a convenient means of surfacing relevant content. They can be. But those algorithms are tailored by platform operators whose aims are (very) often not aligned with yours. They tailor content discovery purely to keep you hooked. Eyeballs to ads, money to shareholders.

Or as commented on by Mike Sass:

Same same. Just get an RSS feed, and stop relying on the hegemonic platform silos.

(via)

Wednesday, 5. March 2025 Week 10

tmux - the essentials

Tmux - the essentials is a concise article by David Winter giving a gentle introduction to the tmux terminal multiplexer.

  • tmux create a new tmux session
  • tmux ls list any existing tmux sessions
  • tmux a reattach to the last open tmux session
  • ctrl + b the default tmux command prefix
  • prefix + d detach from current tmux session
  • prefix + c create a new window
  • prefix + 0-9 to switch to the numbered window
  • prefix + , rename the existing window
  • prefix + % split the current pane into two vertical panes, left and right
  • prefix + " split the current pane into two horizontal panes, top and bottom
  • prefix + q view numbered panes for current window
  • prefix + q, 0-9 switch to pane immediately after displaying pane numbers
  • prefix + z to zoom and unzoom

(via)

Friday, 28. February 2025 Week 9
Wednesday, 26. February 2025 Week 9

SPACE Framework: 5 Metrics That Actually Work

In SPACE Framework: 5 Metrics That Actually Work, Csaba Okrona explains the five dimensions of the SPACE framework for developer productivity. For each dimension he presents examples of real-life indicators.

Satisfaction and Well-being: The Foundation

  • Work-life balance metrics (after-hours commits, weekend work patterns)
  • Team survey responses about job satisfaction
  • Voluntary overtime trends
  • Project ownership satisfaction
  • Learning and growth opportunities

Performance: Outcomes Over Output

  • Feature adoption rates
  • Customer impact metrics
  • System reliability improvements
  • Technical debt reduction impact
  • Time-to-value for new features

Activity: The Daily Reality

  • Time distribution across different types of work
  • Code review participation patterns
  • Documentation contributions
  • Technical design involvement
  • Mentorship and knowledge sharing activities

Communication and Collaboration: The Force Multiplier

  • Code review response times
  • Cross-team collaboration frequency
  • Knowledge sharing effectiveness
  • Documentation quality and usage
  • Meeting efficiency ratings

Efficiency and Flow: The Productivity Engine

  • Time blocked on dependencies
  • Context switching frequency
  • Deployment pipeline efficiency
  • Build time trends
  • Interruption patterns
Tuesday, 25. February 2025 Week 9

How Core Git Developers Configure Git

How Core Git Developers Configure Git

What `git config` settings should be defaults by now? Here are some settings that even the core developers change.

TLDR

# clearly makes git better

[column]
        ui = auto
[branch]
        sort = -committerdate
[tag]
        sort = version:refname
[init]
        defaultBranch = main
[diff]
        algorithm = histogram
        colorMoved = plain
        mnemonicPrefix = true
        renames = true
[push]
        default = simple
        autoSetupRemote = true
        followTags = true
[fetch]
        prune = true
        pruneTags = true
        all = true

# why the hell not?

[help]
        autocorrect = prompt
[commit]
        verbose = true
[rerere]
        enabled = true
        autoupdate = true
[core]
        excludesfile = ~/.gitignore
[rebase]
        autoSquash = true
        autoStash = true
        updateRefs = true

# a matter of taste (uncomment if you dare)

[core]
        # fsmonitor = true
        # untrackedCache = true
[merge]
        # (just 'diff3' if git version < 2.3)
        # conflictstyle = zdiff3 
[pull]
        # rebase = true

(via)

Sunday, 23. February 2025 Week 8

The IndieWeb Doesn't Need to "Take Off"

There's a corner of the Internet where people have been reclaiming their digital independence by hosting their own websites and promoting the idea of owning your own content—it's called the IndieWeb.
This movement promotes the idea that individuals should control their own digital presence through personal websites. But every time this topic comes up in online discussions, someone inevitably claims that the IndieWeb hasn't taken off!
The IndieWeb doesn't need to go mainstream to be meaningful. It's a celebration of a more personal, decentralised, and creative world wide web. And for those of us who still care about these values, it is already meaningful.

The IndieWeb Doesn't Need to "Take Off"Susam Pal

Wednesday, 19. February 2025 Week 8

MapCanvas

MapCanvas creates beautiful map portraits.
You can enter any city and have it generate minimal custom maps.
And if inclined also order them as printouts and framed posters.

MapCanvas of Zweisimmen

(via)

Tuesday, 18. February 2025 Week 8
Sunday, 16. February 2025 Week 7
Saturday, 15. February 2025 Week 7

Notice

“I urge you to please notice when you are happy, and exclaim or murmur or think at some point, ‘If this isn’t nice, I don’t know what is.’”
— Kurt Vonnegut

(via)

It’s a simple two-step process:

  1. First, notice. Notice that things are good. Notice the feeling of pleasure. Notice today’s perfect temperature. Notice the art project your child is sharing with you.
  2. Then, say thank you. To the person you’re with, for the life you live, to the reality you’ve been blessed with, to the God you feel must be there.

And if none of those feel like the right objects of gratitude, that’s okay too. Simply murmur to yourself, ‘If this isn’t nice, I don’t know what is.’

(via)

Friday, 14. February 2025 Week 7

terminal survey

Ruben Schade published a post with answers to the terminal survey that Julia Evans recently conducted.
Inspired by this, below are my answers to these questions.

How long have you been using the terminal?

Since 2002.

Which shells do you use?

zsh (on my laptop/workstation), bash (on servers).

Do you use your system’s default shell?

No and yes (was using zsh before macOS made it the default).

What OS do you use a Unix terminal on?

macOS, Linux.

What Terminal emulators do you use?

Terminal.app, GNOME Terminal.

Do you use a terminal-based editor?

Yes, vim.

Do you customise your terminal’s colour scheme?

Yes, my current scheme evolved from the 2003 Gentoo default scheme.

If your terminal get messed up, what do you do?

Run reset.

What terminal settings do you customise?

PATH, environment variables, alias, the prompt, custom functions, history, syntax-highlighting.

Do you use job control?

No. Tried it sporadically, but not really my thing, rather using a terminal multiplexer.

Do you manage your files using the terminal, or a GUI file manager?

Basic local operations mostly in the GUI. Anything advanced, automated, remote or mass-operations in the terminal.

Which of these environment variables have you set intentionally?

PATH, EDITOR, and some others:

% grep export zshrc/zshrc|sed -e 's/=.*//'
export GIT_AUTHOR_NAME
export GIT_COMMITTER_NAME
export TZ
export PERL5LIB
export GOPATH
export LOCKPRG
export SAM_CLI_TELEMETRY
export JAVA_HOME
export RSYNC_RSH
export CVS_RSH
export EDITOR
export USE_EDITOR
export CVSEDITOR
export BROWSER
export LESS
export HOMEBREW_NO_ANALYTICS
export WWW_BROWSER
Do you use vi mode in your shell?

Yes.

How do you navigate files in less?

/ to search, then mostly spacebar to scroll and the occasional j/k.

How do you use pipes?

sort, uniq, tr, sed, find with xargs to parallelise, and awk.

Do you use a terminal multiplexer?

screen (still trying to migrate to tmux, eventually).

What’s the most frustrating thing about using the terminal for you?

Scripts assuming GNU specific parameters/tools on macOS.

Wednesday, 12. February 2025 Week 7
Tuesday, 11. February 2025 Week 7

Git commit templating

In the Conventional Commits article, Mike Perham explains how git commit templating can be used to support commit message consistency.

The key part is the template statement in the ~/.gitconfig:

[commit]
	template = ~/.gitmessage

This references the ~/.gitmessage file which is used as template for every new commit message.
For Conventional Commits, the following can be useful:

# type(subsystem): short description
### Types
# feat: A new feature
# fix: A bug fix
# docs: Documentation only changes
# build: Changes that affect the build system or external dependencies
# ci: Changes to our CI configuration files and scripts
# perf: A code change that improves performance
# refactor: A code change that neither fixes a bug nor adds a feature
# style: Changes that do not affect the meaning of the code
# test: Adding missing tests or correcting existing tests
Sunday, 9. February 2025 Week 6
Friday, 31. January 2025 Week 5

The beauty of goofy diagrams

In The beauty of goofy diagrams Einenlum explains how a diagram drawn in a more casual style, can support conveying information easier to the audience.

The thing is, I’m more and more convinced that the style of a presentation matters. Even before looking at the content itself, the style puts you in a particular mood.
[...] To me, although they convey the same content, the first one creates a sense of seriousness and gravity. It feels like only clever people can understand it. I’m already a bit tense and I feel like I need to focus. I almost take a deep breath and say to myself “okay, you can do it”. I feel dumb but I feel that with enough curiosity and hard work I can understand the content.

The second one, on the other hand, makes me feel more relaxed and probably more curious. The topic seems easier to grasp and I’m quite confident I can understand it. It doesn’t mean it brings more clarity: the first diagram is actually probably clearer but the content has more chance of reaching my brain with the second one because I’m more open to it.

(via)

Tuesday, 28. January 2025 Week 5

Upgrade to Jekyll 4.4.0 - google-protobuf workaround

I upgraded the blog to the newest Jekyll 4.4.0 which was released yesterday.
Unfortunately this first resulted in the following segfault while running jekyll build 🙈

/usr/gem/gems/sass-embedded-1.83.4/ext/sass/embedded_sass_pb.rb:11: [BUG] Segmentation fault at 0x0000000000004410
ruby 3.1.1p18 (2022-02-18 revision 53f5fc4236) [x86_64-linux-musl]

Turns out that this is a known problem of the google-protobuf gem (which is used by jekyll-sass-converter which is part of the default Jekyll).
Luckily there is a workaround.
Adding the following to my Gemfile fixed it 🎉

gem 'google-protobuf', force_ruby_platform: true if RUBY_PLATFORM.include?('linux-musl')
Saturday, 25. January 2025 Week 4
Friday, 24. January 2025 Week 4

How to improve your WFH lighting to reduce eye strain

Russel Baylis shares this helpful article about their learnings regarding improving the working environment to reduce eye strain.

I work from home everyday, I am susceptible to eye strain, eye pain, and dizziness. Having a working environment that’s as easy on my eyes as possible is of critical importance. I'd like to share what I've learned over the years in hopes that it can be helpful to you if you work from home, and like many, have experienced WFH eye strain.
  1. An even, diffused lighting environment is best for the eyes
  2. When it comes to light brightness, too much is just as problematic as too little
  3. Use natural light wherever possible
  4. Quality of artificial light matters
  5. The best lighting for camera, is not necessarily the best lighting for ergonomics
  6. Even the perfect lighting environment will fatigue you — take breaks, and take care of yourself

(via)

Tuesday, 14. January 2025 Week 3

SSH unable to negotiate

When connecting to an older SSH device the following 'unable to negotiate' errors occurred. They indicate that my client-side config does not allow the (old/obsolete) methods offered by the device.

Unable to negotiate with 10.222.23.2 port 22: no matching key exchange method found. Their offer: diffie-hellman-group-exchange-sha1,diffie-hellman-group1-sha1,diffie-hellman-group14-sha1

This can be fixed by enabling one of the old key exchange methods:

ssh -oKexAlgorithms=+diffie-hellman-group1-sha1 10.222.23.2 
Unable to negotiate with 10.222.23.2 port 22: no matching host key type found. Their offer: ssh-rsa,ssh-dss

This can be fixed by additionally enabling one of the old host key types:

ssh -oKexAlgorithms=+diffie-hellman-group1-sha1 -oHostKeyAlgorithms=+ssh-rsa 10.222.23.2
Sunday, 12. January 2025 Week 2

Platform Engineering

terra tauri quotes from the Platform Engineering book:

If you only promote people who solve big technical problems, you’re going to have a hard time retaining the people who do the work to smooth out the usability edges, actively listen to the customer teams, and adjust their work priorities to fix the stuff that is causing the most pain. So, look closely at what you are celebrating, compensating, and promoting, and make sure you are including work that makes the product better, whatever that looks like, even if it isn’t the hardest technical bits. You may even want to reevaluate your engineering ladder to make sure the expectations at each level reflect all of the skills you now demand. Remember, this is a cultural change, and cultural changes that don’t involve changes to what is valued (as seen by what you recognize and reward) are destined to fail.

Looks like this might be a candidate for my /reading list.

(via)

Flexoki

Flexoki — a great looking color scheme inspired by paper and ink colors.

Flexoki is an inky color scheme for prose and code. Flexoki is designed for reading and writing on digital screens. It is inspired by analog inks and warm shades of paper.
Flexoki is minimalistic and high-contrast. The colors are calibrated for legibility and perceptual balance across devices and when switching between light and dark modes.

Flexoki Light

Flexoki Dark

Full Flexoki palette.

(via)

Monday, 6. January 2025 Week 2

Blogging: you’re doing it right

Manu Moreale: Blogging: you’re doing it right

That’s all you need to know. If you’re doing it, you’re doing it right. If you have decided to reclaim ownership of your place on the web, you’re doing it right. It doesn’t matter how you did it. [...] What matters is that you’re doing it. Your effort is commendable. You deserve to be thanked so, thank you.

(via)

Sunday, 5. January 2025 Week 1
Thursday, 2. January 2025 Week 1

Getting iPhone Photos to Linux - with PhotoSync

During casual surfing I found this article from Brain Baker explaining their revised backup strategy.
The most interesting part was the brief mention of PhotoSync used to sync photos to their Linux system.

This came just at the right moment, as I was exploring options how to get photos from an iPhone to a Linux machine as seemlessly as possible.
Previous attempts with ifuse/libimobiledevice didn't work reliably, and uploading the photos to iCloud and somehow scraping/downloading them again doesn't look very future-proof either.
Thus very happy about PhotoSync which runs on the iPhone and talks a plethora of protocols on the other side (in my case I opted for SFTP).

It is a freemium app with paid in-app purchase for the pro/premium features (raw photo sync and autosync in the background).
Based on the good reviews and initial functionality testing of the free version I decided to fo for the one-time purchase to unlock the premium features.

I did setup a chrooted SFTP user to receive the photos on the Linux machine.
Then configured this SFTP access in the app which worked seamless.
So far the manual sync of existing photos and videos worked reliably over WiFi.
And I'm looking forward for the geofence-triggered autosync to run 🤞🏻

Wednesday, 1. January 2025 Week 1

Fetching RSS feeds respectfully with curl

In this article, MacKenzie builds up a config, script and systemd file to respectfully fetch an RSS feed with curl.

It uses the following as base config for curl:

fail
compressed
max-time = 30
no-progress-meter
alt-svc = alt-svc-cache.txt
etag-compare = tech.CitizenLab.rss.etag
etag-save = tech.CitizenLab.rss.etag
output = tech.CitizenLab.rss.xml
time-cond = "Tue, 05 Nov 2024 15:00:35 GMT"
write-out = "%output{tech.CitizenLab.rss.lm}%header{last-modified}"
url = "https://citizenlab.ca/feed/"
next

Then adds conditional checks for the etag-compare and time-cond directives, so they are only added if the corresponding file contains a non-empty value.

The last part is then to use a systemd Timer file with OnUnitInactiveSec=1hour, so that the command will be run one hour after the previous run finished.