Close-up of the left pocket of a blue jeans. You can clearly see the contours of a smartphone in the coloring of the fabric.

I did the jeans thing, and I liked it


Let me start with a confession. I’m a lazy dresser, even by German standards. Ideally, I don’t need to spend much (or any) time thinking about what to wear. And I’m certainly not very aware of trends.1

I’m also trying to buy fewer clothes, and wear them for longer. When I heard about dry selvage jeans, I dismissed the idea at first. It sounded so… fashionable:

Dry denim, also referred to as “raw” denim or unwashed denim, refers to a pair of untreated denim, which means they have not been washed or bleached. So instead of creating a worn-in look at the laundry facility you break in these jeans yourself. It’s a long term commitment and the outcome will depend on how much you wear them. With time you’ll get a personal pair of jeans with whiskers, honeycombs and fading created by your lifestyle.

Eventually, the concept grew on me. Just one pair of jeans, that I wear always, for everything? No more thinking about what to put on? Sign me up.

Through a friend I hit upon Nudie Jeans. They’re a Swedish company that’s been going for a while, and they seem ok. Also, free lifetime repairs! In the end, I bought a pair of Grim Tims.

Professional photo of a pair of dark blue jeans on a neutral background
Kinda what they looked like when new, though it’s not the exact model. Pic: Nudie

This is what they looked like when new:
Kinda what they looked like when new, though it's not the exact model. Pic: Nudie

A grim start

The first few weeks (or was it months?) were grim indeed. The jeans were quite tight, and made some movements hard. But I did like them. They looked great, and something about their austerity spoke to me.

I wore them on most days for a year, no washing. (It’s not as gross as it sounds, trust me.) The trousers became softer, smoother. And eventually they took on the shape of my body.

A worn pair of blue jeans, with areas at the knees and elsewhere where the colour has worn off
Jeans at two years

The color gets worn away in some places more than others, and the material takes on a life of its own. I really love the result.

Wear and repair

When the jeans started developing tears and holes, I took them to the Nudie shop in Munich. (They don’t have many physical shops, I’m just lucky.) You can clearly see where I carry my phone.

Close-up of the left pocket of a blue jeans. You can clearly see the contours of a smartphone in the coloring of the fabric.

The guy in the shop listened to my story about how hard the first few months were. He said: “Yeah, I can imagine. That’s one of the first models, before we started adding a little stretch to the material.” Oh ok… Then he repaired them for free, within a few days. Amazing!

The bottom of a jeans leg. The low end is folded up, and where the fold was worn out, it's been repaired with lots of stitches.

By now this pair is probably beyond repair. But I’ve come to love this approach to clothing. So I’ll be buying a new pair soon. And I’ll hand in the old one, because Nudie uses those as repair materials, and gives me a 20% discount on the new ones. Nice!

(You may have gathered that I’m not exactly fashion influencer material, and the company isn’t paying me anything for this post. They hardly know I exist.)

  1. I don’t mean to bash people who are into fashion. That’s a great passion to have. I wish I, and many others, were more like these awesome guys. ↩︎
OSM screenshot of the Bilbao - Donostia region, showing the Gorbea national park

Mulled wine



When December comes in Germany, mulled wine is everywhere. Every town has its Christmas market, and at each of them, you´ll find several stalls that sell the cheap red plonk with a few spices and lots of sugar.

But there´s a cup of mulled wine that is especially dear to my heart. Let me tell you about it.

More than twenty years ago, living in Madrid on a student exchange program, I went to visit my friend Sebastian in Bilbao. Together, we went to spend a weekend in the Basque mountains.

Spain’s northern cost is gloriously rugged and earthy. It’s a world away from the cheap resorts full of drunk tourists on the Mediterranean coastline, and even farther from the endless expanses of plastic in the country’s south-east, where immigrants from the poorest parts of the planet work in terrible condition to supply Europe with cheap tomatoes and cucumbers.

Sebastian’s flatmates, proud Basques, knew their region very well, and supplied us with helpful hints. We set off by bus on mid-Friday, riding through a torrential downpour towards the natural park of Gorbeia. We entered the park, found a shelter to spend the night in, and roasted chicken legs in the fireplace.

Setting off on Saturday morning, we figured we had taken too much food. So we ditched some canned beans. Someone else had left a carton of red wine, and we took that in return on our hike up the mountain.

It was early May. The weather in the Biscay region changes rapidly. A sunny morning quickly became overcast, and worse. By the time we reached Gorbeia´s summit, there was a snowstorm. The wind was blowing so hard that the crucifix at the top of the mountain had horizontal icicles on it.

We clearly weren´t equipped for this sort of thing. We were cold and wet. We hadn´t even brought enough water, and it wasn´t clear when we would find any. We packed our bottles full of snow, in the hope that it would melt later, giving us a minimal supply.

Fortunately, the weather improved a bit when we hiked down the other side of the mountain. But there was a new worry. Sebastian´s flatmate had told us about a cave where we could spend the night. No need to bring a tent! He had given us a fairly good description, and pointed at our map. But as we were standing there, trousers streaked with mud, we realized that finding the cave was going to be difficult.

The forest was no doubt beautiful. Yet in our condition – tired, wet, cold, thirsty -, it started looking a tiny bit inhospitable. We searched and roamed, trying to find the cave that would give us shelter for the night. It was somewhere around here, but where?

Suddenly, Sebastian spotted a horse in the forest. To all appearances, it was just roaming free. Do they keep semi-wild horses in the Basque country? We didn’t know. We decided to take a closer look, and slowly walked towards the animal. When we were close enough, we realized that it was standing right in front of our cave!

Relieved, and with many good words for the horse (which left of its own accord), we occupied the cave and made ourselves at home. In the late afternoon of a long day, the fire we built was a wonderful source of warmth and comfort. The appearance of the horse gave the whole evening a magical air, as if we had been guided by a unicorn. We put a couple tins of ravioli on the fire, and when they were hot, we found them a meal fit for a king.

Then we recalled the carton of red wine. We poured it into one of the tins. We found an orange in our backpacks. We squeezed its juice into the wine, and threw some peel in for good measure. Then the tin went back onto the fire.

And that cup of mulled wine was the most magical I’ve ever tasted.

The night was quiet. In the morning, we were awoken by a hiker who climbed up to the cave and greeted us with “Egun on” – “good morning” in Basque. We packed our bags, and hiked the rest of the way out of the national park.

It´s been over two decades. In the meantime, Sebastian and I have grown from boys into men. We´ve found partners, had kids, built lives. We still go on mountain adventures together, and each one is magical in its own way. There’s a mutual trust that comes from hiking through a snowstorm and finding what is to all intents and purposes a unicorn.

The mulled wine at the Christmas markets? That always falls short of what my heart expects.

Making notebooks

I live my life in a bunch of different contexts. I’m a father, and a husband. I’m a professional in my job, and an amateur in a million things. I’m an outdoors person. I have little bunny rabbits in my brain that constantly hop every which way, and come up with ideas anytime they like.

Accordingly, I have too many ways of keeping track of stuff I need to remember. There’s various todo lists at work, in a plethora of tools. Some things live in email. Sure, I have a smartphone with a bunch of note-taking apps; but writing things down there takes long, and retrieving it even longer. If I recall that I put it there in the first place, that is.

That’s why I like notebooks. With blank pages. They allow me to jot down a few words; to make a quick drawing; or to write thoughts down in longer blocks. Except that I like notebooks perhaps a little too much. I’m prone to buying very nice ones, and then not using them, because I don’t feel that today’s shopping list is worthy of a place in my 25€ notebook.

So, depending on your perspective, it’s either complicated, or I have entirely too many hangups about everything. (insert whynotboth.gif) The good news is that, after too many years of mentally tying my shoelaces together in this way, I have hit upon a solution:

I make my own cheap, trashy notebooks!

A stack of 8 notebooks

This way, I can have a small, disposable notebook. I know it’s made out of common-or-garden printer paper. There’s nothing special about it. Plus, it’s so small that I can carry it everywhere in my back pocket, without even noticing it’s there. Great!

Here’s how I do it.

It’s easiest to make these things in batches. A batch takes about an hour, and will give you maybe 8 notebooks. Those tend to last me roughly a year.

Find a table with some space on it. You’ll need:

  • a bunch of printer paper
  • a couple of sheets of thicker paper, for the covers.
  • a ruler
  • a pair of scissors (if you have a paper cutting machine for some reason, that’s great. Use it.)
  • some clamps – clothespins will do fine
  • a nail
  • a hammer
  • a sturdy sewing needle
  • some thread
  • an old piece of wood as a mini workbench

OK, let’s go

  1. Cut the A4 sheets in half, and those pieces in half again. (For Europeans and everyone else using proper formats, the result is A6. For USians, it’s probably 1/34th of a football pitch by one stone or something. Who knows. Who cares.)

A5 sheets (well, really A4 sheets cut in half), clipped together, in a cutting machine

  1. Stack your new sheets. In my experience, 10 sheets are about right.

8 piles of cut sheets, some of them clamped together

  1. Now cut your cover sheets to size. If you’re making a batch of eight notebooks, you’ll want eight cover sheets. When done cutting, align neatly, and put on a clamp to hold the sheets in place.

That’s the paperwork done! Now let’s turn all those sheets into a little book.

  1. Take one stack of sheets. Fold the cover sheet along its centerline, put it back on the stack, and reapply the clamp. Check the alignment one last time.
  2. Next, we need to make some holes for the thread that’s going to hold our books together. Put your piece of wood on the table. Put the stack of sheets on top, with the cover facing up. Grab your nail, and put it in the middle of the centerline. With the hammer, punch a hole into the stack.
  3. Repeat the punching along the centerline, for a total of seven holes, evenly distributed.

stacked sheets + cover sheet lying on a piece of wood. They're clipped together. A nail is sticking through the middle, and a small hammer is lying next to them.

  1. Time to sew! Thread your needle, and start going through the holes. Just up through one hole, and down through the next – in the simplest way possible. Leave about 10cm of thread hanging out the end.

a notebook in the process of sewing

  1. When you’ve reached the end of the row of holes, go around the outside, and turn back the way you came. This time, if you went down through a hole on the way there, you’ll go up through that hole on the way back.
  2. Fold your notebook. The result should look like this.

Close-up of a notebook, focusing on the seam

 

Congratulations! You’ve made a bunch of notebooks.

I usually keep only one of these notebooks active at a time, to avoid confusion. It lives in my back pocket. When I go out, I usually carry a small pencil along – those short ones from Ikea work great.

By the time the notebook is filling up, the covers will often look quite bent and crumpled. My wonderful partner has made me a perma-cover out of an old bicycle inner tube. This makes the notebook a bit thicker, but it keeps it well protected. It also looks pretty cool.

Enjoy your notebooks!

Finding the sun

(February 2025)

It’s been grey and overcast here for a while. Last Saturday I simply couldn’t take it anymore. Something had to be done! So I put on my hiking boots, and went up a mountain. If the sun didn’t come to me, I would just have to go and
find the sun!

The Brünnstein is a not-terribly-high mountain nearby, peaking at 1634m. I picked it because a) I hadn’t been there before, and b) the relevant apps offered a tour that looked
like what I wanted.

When I parked the car at the trailhead, everything was still depressively grey. Not so much weather, more like an absence of weather. The path soon led me into the forest, and took on a substantial grade.

There was still a lot of snow on the ground, and I was happy to have my trekking poles. The forest felt a little mysterious. Finally, I approached the upper edge of the fog that’s been plagueing us for weeks:

Hiking into the sunlight was magical. The rays on my face felt great after such a long time. And the view above the clouds was beautiful:

There are two routes to the summit. One is a very easy via ferrata. I had brought a band sling and a couple of carabiners, so I could improvise a climbing harness. But I’m not a very experienced mountaineer, and all that snow on the ground didn’t inspire confidence.

So I decided to save the via ferrata for spring, and took the easier — if slightly longer — path to the summit. This turned out to also be something of a climb. Not really dangerous or difficult, but interesting enough that the local hiking club had fixed a bunch of substantial steel cables to the rocks,
so climbers could secure themselves.

Arriving at the summit was just perfect. I mean, look at this view!

The mountain has two peaks. The one that’s visited most is what you see in the picture, just by the little chapel. The actual, slightly higher peak (by maybe 2 meters, if that) is a little away over a ridge. I dithered whether I should
risk the snow-covered, narrow ridge. In the end I decided that I would be really annoyed with myself if I didn’t. So I went, and it was fine!

I went home the way I had come. Only much happier. Mountains are good for the soul.

Army soldiers cleaning Papamoa Beach after oil from the grounded ship Rena reached shore.

Freeing up disk space on Debian

[This post is above all for my own reference, so I’ll know what to do the next time this problem occurs.]

My Thinkpad’s SSD has an impolite tendency to run out of disk space, even though I might not really be adding lots of data. It seems to be mostly cruft that Debian accumulates, perhaps out of a desire for thorough record-keeping.

Looking for ways to free up disk space, I found this StackExchange post. It has bunch of ways for giving my hard drive a good scrub.

Let’s see what they do!

Automating the process

I decided to do myself a favour, and turn this into a shell script. With a bit of help from Gemini (ahem), I ended up with a script that runs the commands below. After that, it lists the 10 biggest files in the user’s directory, and the 10 largest files in the root directory of the machine.

You can put the script in /etc/cron/weekly, so it will run automatically once per week. Be careful to remove the file ending – cron doesn’t like those. Call the script cleanup or something, rather than cleanup.sh.

To make sure that it runs even if your computer isn’t turned on at the scheduled time, install the anacron package on your system (sudo apt install anacron).

Here is the script:

#!/bin/bash
# Just to be on the safe side: This script is in the public domain.
# The level of quality and security assurance is strictly "it works on my machine". 

# Maintenance script to clean logs and package cache

# Function to get current used space on / in blocks
get_used_space() {
    df / | awk 'NR==2 {print $3}'
}

# Capture space BEFORE cleanup
PRE_CLEAN=$(get_used_space)

echo "Freeing up disk space..."

# Reduces journal logs to 300 MB
sudo journalctl --vacuum-size=300M

# Forces rotation of system logs based on configuration
sudo logrotate /etc/logrotate.conf

# Deletes downloaded package files (.deb) from the local repository
sudo apt-get clean

# Removes packages that were automatically installed and are no longer needed
sudo apt-get autoremove -y

# Capture space AFTER cleanup
POST_CLEAN=$(get_used_space)

# Calculate total freed space (in KB, then convert to MB/GB)
FREED_KB=$((PRE_CLEAN - POST_CLEAN))
FREED_HUMAN=$(echo "$FREED_KB" | numfmt --from-unit=1024 --to=iec)

echo ""
echo ">>> Total disk space freed: $FREED_HUMAN"
echo "--------------------------------------------------"


echo ""
echo "--- 10 Largest Files in Current User's Home ($HOME) ---"
# Searches only within the current user's home directory
# -type f: find files only; -printf: output size in bytes and path
# sort -rn: numeric reverse sort; numfmt: make sizes human-readable (M, G)
find "$HOME" -type f -printf "%s %p\n" 2>/dev/null | sort -rn | head -n 10 | numfmt --to=iec --field=1

echo ""
echo "--- 10 Largest Files on Root Filesystem (Excluding /home & other mounts) ---"
# -xdev prevents find from searching other mounted filesystems (like /home if it's on its own partition)
sudo find / -xdev -type f -printf "%s %p\n" 2>/dev/null | sort -rn | head -n 10 | numfmt --to=iec --field=1

echo ""
echo "Maintenance complete."
Army soldiers cleaning Papamoa Beach after oil from the grounded ship Rena reached shore.
Army soldiers cleaning Papamoa Beach after oil from the grounded ship Rena reached shore.

Helpful commands

  1. Start by emptying your Trash bin.

2. Clean up logs – this freed about 3GB of disk space.

sudo journalctl --vacuum-size=300M # reduces the logs to 300 MB

This freed about 3GB of disk space.

More log cleaning. Did not have any visible impact:

sudo logrotate /etc/logrotate.conf # compresses or (?) deletes system logs

3. Delete cached packages. I did this before starting a more systematic analysis, so I can’t say how much space it freed up. But it was easily more than one GB:

sudo apt clean # deletes packages that were cached for installation

4. Remove unused packages. Freed up a cool 1.9 GB:

sudo apt autoremove # removes unused packages

That’s all the straightforward commands that the linked post provided.

Finding large files

In addition, it told me how to find large (<100MB) files, so that I can check whether I want to delete them:

sudo find / -mount -type f -size +100M -exec du -h {} \; | sort -n

But most of the results looked like they were at least somewhat important, so I didn’t actually go and delete any of them.

Remember to floss regularly

Maybe I should simply put all these commands into a little script, and run that as a cron job? Once a month or so?

Airdrop for the rest of us


Serving files from an iPhone via http

Those of us living in Apple’s golden cage know that the fruity phones offer a pretty decent user experience. But try rattling the bars, and you’ll find out that Cupertino has done a solid job of locking you into their system.

One of the nicer functionalities of iOS is Airdrop. This lets us transfer files between devices over Bluetooth. It’s as easy as sending a file by Signal. But disappointingly, it only works with Apple devices. This both a fact of life, and really stupid.1

For example, I sometimes find interesting ebooks on the internet. My ebook reader is in the non-aligned camp, because what I’m reading is honestly none of Jeff Bezos’ fucking business. When I find a book I like, e.g. on Project Gutenberg, I often download it to my phone.

So, how do I transfer that epub file to my ebook reader?

http to the rescue

I could just copy it to my computer, connect the ebook reader with a cable, and copy it over. This works, but it’s cumbersome: When I get time to read, I’ve usually just managed to tear myself away from the computer. So I don’t want to turn around and fire up the time-wasting box again.

Much better to waste time in a more interesting way! Turns out it’s really not hard to start a http server on my iPhone, direct the ebook reader’s browser to download the epub file from there.

(Of course, this works with literally any sort of file. Let’s just stick with my use case for now for simplicity’s sake.)

Important: This will only work if your iPhone and your ebook reader are on the same wifi network. If your reader doesn’t have wifi, then sorry, it’s cables for you.

Preparations

You only need to do this stuff the first time. We’re following these instructions.

On the iPhone:

  1. download the iSH app. It’s a Linux shell, more or less.
  2. start iSH, and install Python 3:

    apk add python3

  3. open your Files app, and hit “Browse”. In the top right corner there’s a circle with three little dots in it. A menu pops up, and you select “Edit”. This will show you a bunch of places where your phone can store files, iSH among them. Make sure iSH has a green toggle.

=== ADDED ===

Instead of installing Python and then using the http.server package, you can also just install darkhttpd, like so (still in iSH):

apk add darkhttpd

and then run it with

darkhttpd .

The dot is for the current (root) folder. If you’re feeling fancy, use another path where your files are stored.

(Thanks jacksonchen666 for the pointer!)

=== end of addition ===

Oh, and download the epub file you want to transfer to your reader. It doesn’t matter where you get it from, nobody’s judging you.

Transferring files

  1. On your iPhone, figure out where the downloaded file is stored. Just open the Files app, click on “Recent”, and it’ll probably sit right at the top.
  2. Copy the epub file to iSH’s root directory:
    • Long press on the file > copy.
    • Then hit “Browse”, and under “Locations”, you should see “iSH”.
    • Tap on “iSH”, then on “root”
    • long press somewhere on the empty screen. A context menu pops up, and you select “paste”. That’s it.
  3. On your iPhone, open iSH and fire up the web server:

    python3 -m http.server

If all is well, you should now get a message in iSH like “Serving HTTP on 0.0.0.0 port 8000”.

Do you see it? Congratulations, you’re running a web server on your phone!

But where, in network terms, is your phone? Let’s go find out your local IP address. On your iPhone:

  1. Open Settings
  2. Tap on “Wifi”. You’ll see the network you’re connected to. There’s a little “i” in a circle. Tap that, scroll down a bit, and you’ll see your phone’s local IP address. Mine is currently 192.168.178.47. Yours should look similar.

Now let’s transfer the file.

On your ebook reader, fire up the web browser. In the address bar, enter

http://< your IP address >:8000

for example

http://192.168.178.47:8000

Then hit “Enter”. You should now see a very plain directory listing that contains the epub file!

Just tap on the file to download it. My ebook reader decided to store it in its library and open it right away; I’m not sure how yours will do it. But you’ll figure it out.

Done!

Congratulations! You did it. That’s all. Repeat the steps from the “Transferring files” section as often as you like.

When you’re done, go to iSH on your phone, tap “^” and then “Z” to stop the server.

Of course, this process isn’t limited to ebooks. Open protocols like http are among the finer things in life, right up there with food and sex. Enjoy them!

You can just put any file in iSH’s root directory, and access it from any device on your network that speaks http.

Feedback, please

Did this work for you? Cool!

Oh, it didn’t work? Please let me know on the Fediverse, and I’ll see what I can do to help.I’m fully aware of how capitalism works. We’re writing from the user’s perspective here, ok?

  1. I’m fully aware of how capitalism works. We’re writing from the user’s perspective here, ok? ↩︎