Valhalla's Things

Welcome

Welcome to my blog, where I post sporadically about the things I do and the ones I make.

Recent posts

Honeycomb shirt

Posted on May 25, 2025
Tags: madeof:atoms, craft:sewing, FreeSoftWear, GNU Terry Pratchett

A woman wearing a purplish blue shirt with very wide sleeves,
gathered at the cuffs and shoulder with honeycombing, and also a
rectangle of honeycombing in the front between the neckline and
just above the bust.
The shirt is gathered at the waist with a wide belt, and an almost
lilac towel hangs from the belt.

After cartridge pleating, the next fabric manipulation technique I wanted to try was smocking, of the honeycombing variety, on a shirt.

My current go-to pattern for shirts is the 1880 menswear one I have on my website: I love the fact that most of the fabric is still cut as big rectangles, but the shaped yoke and armscyes make it significantly more comfortable than the earlier style where most of the shaping at the neck was done with gathers into a straight collar.

A woman wearing a shirt in the same fabric; this one has a slit
in the front, is gathered into a tall rectangular collar and has
dropped shoulders because it's cut from plain rectangles. The
sleeves are still huge, and gathered into tall cuffs.
It is worn belted (with the same wide white elastic belt used in
the previous picture) and the woman is wearing a matching fabric
mask, because the picture has been taken in 2021.

In my stash I had a cut of purple-blue hopefully cotton [#cotton] I had bought for a cheap price and used for my first attempt at an historically accurate pirate / vampire shirt that has now become by official summer vaccine jab / blood test shirt (because it has the long sleeves I need, but they are pretty easy to roll up to give access to my arm.

That shirt tends to get out of the washing machine pretty wearable even without ironing, which made me think it could be a good fabric for something that may be somewhat hard to iron (but also made me suspicious about the actual composition of the fabric, even if it feels nice enough even when worn in the summer).

A piece of fabric with many rows of honeycombing laid on top of
the collar and yoke of the shirt; a metal snap peeks from behind
the piece of honeycombed fabric.

There are still basting lines for the armscyes.

Of course I wanted some honeycombing on the front, but I was afraid that the slit in the middle of it would interfere with the honeycombing and gape, so I decided to have the shirt open in an horizontal line at the yoke.

I added instructions to the pattern page for how I changed the opening in the front, basically it involved finishing the front edge of the yoke, and sewing the honeycombed yoke to a piece of tape with snaps.

Another change from the pattern is that I used plain rectangles for the sleeves, and a square gusset, rather than the new style tapered sleeve , because I wanted to have more fabric to gather at the wrist. I did the side and sleeve seams with a hem + whipstitch method rather than a felled seam, which may have helped, but the sleeves went into the fitted armscyes with no issue.

I think that if (yeah, right. when) I’ll make another sleeve in this style I’ll sew it into the side seam starting 2-3 cm lower than the place I’ve marked on the pattern for the original sleeve.

The back of the unbelted shirt: it has a fitted yoke, and then
it is quite wide and unfitted, with the fabric gathered into the
yoke with a row of honeycombing and some pleating on top.

I also used a row of honeycombing on the back and two on the upper part of the sleeves, instead of the gathering, and of course some rows to gather the cuffs.

The honeycombing on the back was a bit too far away from the edge, so it’s a bit of an odd combination of honeycombing and pleating that I don’t hate, but don’t love either. It’s on the back, so I don’t mind. On the sleeves I’ve done the honeycombing closer to the edge and I’ve decided to sew the sleeve as if it was a cartridge pleated sleeve, and that worked better.

Because circumstances are still making access to my sewing machine more of a hassle than I’d want it to be, this was completely sewn by hand, and at a bit more than a month I have to admit that near the end it felt like it had been taken forever. I’m not sure whether it was the actual sewing being slow, some interruptions that happened when I had little time to work on it, or the fact that I’ve just gone through a time when my brain kept throwing new projects at me, and I kept thinking of how to make those. Thanks brain.

Even when on a hurry to finish it, however, it was still enjoyable sewing, and I think I’ll want to do more honeycombing in the future.

The same woman with arms wide to show the big sleeves and the
shirt unbelted to show that it is pretty wide also from the front,
below the yoke and the honeycombing.
The back can be seen as about 10 cm longer than the front.

Anyway, it’s done! And it’s going straight into my daily garment rotation, because the weather is getting hot, and that means it’s definitely shirt time.


POLARVIDE modular jacket

Posted on April 28, 2025
Tags: madeof:atoms, craft:sewing

A woman with early morning hair wearing a knee-length grey
polar fleece jacket; it is closed at the waist with a twine belt
that makes the bound front edge go in a smooth curve between the
one side of the neck to the other side of the waist and then flare
back outwards on the hips.
The sleeves are long enough to go over the hands, and both them
and the hem are cut

Years ago I made myself a quick dressing gown from a white fleece IKEA throw and often wore it in the morning between waking up and changing into day clothes.

One day I want to make myself a fancy victorian wrapper, to use in its place, but that’s still in the early planning stage, and will require quite some work.

a free cat sitting half asleep on an old couch, with a formerly
white piece of fabric draped between the armrest and the seat.
A piece of cardboard between two seat pillows provides additional
protection from the wind.

Then last autumn I discovered that the taxes I owed to the local lord (who provides protection from mice and other small animals) included not just a certain amount of kibbles, but also some warm textiles, and the dressing gown (which at this time was definitely no longer pristine) had to go.

For a while I had to do without a dressing gown, but then in the second half of this winter I had some time for a quick machine sewing project. I could not tackle the big victorian thing, but I still had a second POLARVIDE throw from IKEA (this time in a more sensible dark grey) I had bought with sewing intents.

The fabric in a throw isn’t that much, so I needed something pretty efficient, and rather than winging it as I had done the first time I decided I wanted to try the Modular Jacket from A Year of Zero Waste Sewing (which I had bought in the zine instalments: the jacket is in the March issue).

After some measuring and decision taking, I found that I could fit most of the pieces and get a decent length, but I had no room for the collar, and probably not for the belt nor the pockets, but I cut all of the main pieces. I had a possible idea for a contrasting collar, but I decided to start sewing the main pieces and decide later, before committing to cutting the other fabric.

As I was assembling the jacket I decided that as a dressing gown I could do without the collar, and noticed that with the fraying-free plastic fleece I didn’t really need the front facings, so I cut those in half lengthwise, pieced them together, and used them as binding to finish the front end.

the back of the worn jacket, other than being clinched in by
the belt it is pretty straight.

Since I didn’t have enough fabric for the belt I also skipped the belt loops, but I have been wearing this with random belts and I don’t feel the need for them anyway. I’ve also been thinking about adding a button just above the bust and use that to keep it closed, but I’m still not 100% sure about it.

Another thing I still need to do is to go through the few scraps of fleece that are left and see if I can piece together a serviceable pocket or two.

folding the sleeves back by a good 10 cm to show the hands.

Because of the size of the fabric, I ended up having quite long sleeves: I’m happy with them because they mean that I can cover my hands when it’s cold, or fold them back to make a nice cuff.

If I’ll make a real jacket with this patter I’ll have to take this in consideration, and either make the sleeves shorter or finish the seam in a way that looks nice when folded back.

Will I make a real jacket? I’m not sure, it’s not really my style of outer garment, but as a dressing gown it has already been used quite a bit (as in, almost every morning since I’ve made it :) ) and will continue to be used until too worn to be useful, and that’s a good thing.


Stickerses

Posted on April 27, 2025
Tags: madeof:atoms, madeof:bits, craft:graphics, topic:stickers

After just a few years of procrastination, I’ve given a wash of git-filter-repo to the repository where I keep my hexagonal sticker designs, removed a few failed experiments and stuff with dubious licensing and was able to finally publish it among my public git repositories

This repo includes the template I’m using, most of the stickers I’ve had printed, some that have been published elsewhere and have been printed by other people, as well as some that have never been printed and I may or may not print in the future.

The licensing details are in the metadata of each file, and mostly depend on the logos or cliparts used. Most, but not all, are under a free culture license.

My server is not setup to correctly serve the SVG files, yet: downloading them (from the “plain” links) should work, but I need to fix the content type that is provided. I will probably procrastinate doing it for quite some time, but eventually it will be done. Of course cloning the repository from the public https URL also works.

BRB, need to add MOAR stickerses.


MOAR Slippers

Posted on March 7, 2025
Tags: madeof:atoms, craft:sewing, FreeSoftWear

A pair of espadrille-style slippers in black denim with a shiny
black design on the uppers and twine soles.

A couple of years ago, I made myself a pair of slippers in linen with a braided twine sole and then another pair of hiking slippers: I am happy to report that they have been mostly a success.

Now, as I feared, the white linen fabric wasn’t a great choice: not only it became dirt-grey linen fabric in a very short time, the area under the ball of the foot was quickly consumed by friction, just as it usually happens with bought slippers.

I have no pictures for a number of reasons, but trust me when I say that they look pretty bad.

The same slippers, one of them is turned upside down to show
the sole made from a twine braid, sewn in a spiral until it is the
shape of a sole.

However, the sole is still going strong, and the general concept has proved valid, so when I needed a second pair of slippers I used the same pattern, with a sole made from the same twine but this time with denim taken from the legs of an old pair of jeans.

To make them a bit nicer, and to test the technique, I also added a design with a stencil and iridescent black acrylic paint (with fabric medium): I like the tone-on-tone effect, as it’s both (relatively) subtle and shiny.

A pair of open-heeled slippers in faded blue jeans.

Then, my partner also needed new slippers, and I wanted to make his too.

His preference, however, is for open heeled slippers, so I adjusted the pattern into a new one, making it from an old pair of blue jeans, rather than black as mine.

A braided twine sole, showing how an heel has been made in the
same technique and sewn under the sole with blanket stitches.

He also finds completely flat soles a bit uncomfortable, so I made an heel with the same braided twine technique: this also seems to be working fine, and I’ve also added these instructions to the braided soles ones

Both of these have now been work for a few months: the jeans is working much better than the linen (which isn’t a complete surprise) and we’re both finding them comfortable, so if we’ll ever need new slippers I think I’ll keep using this pattern.

Now the plan is to wash the linen slippers, and then look into repairing them, either with just a new fabric inner sole + padding, or if washing isn’t as successful as I’d like by making a new fabric part in a different material and reusing just the twine sole. Either way they are going back into use.


Hexagonal Pattern Weights

Posted on February 24, 2025
Tags: madeof:atoms, craft:3dprint, craft:sewing

Eight hexagonal pieces with free software / culture related
graphics on top.

For quite a few years, I’ve been using pattern weights instead of pins when cutting fabric, starting with random objects and then mostly using some big washers from the local hardware store.

However, at about 22 g per washer, I needed quite a few of them, and dealing with them tended to get unwieldy; I don’t remember how it happened, but one day I decided to make myself some bigger weights with a few washers each.

I suspect I had seen somebody online with some nice hexagonal pattern weights, and hexagonal of course reminded me of the Stickers Standard, so of course I settled on an hexagon 5 cm tall and I decided I could 3D-print it in a way that could be filled with washers for weight.

Rather than bothering with adding a lid (and fitting it), I decided to close the bottom by gluing a piece of felt, with the added advantage that it would protect whatever the weight was being used on. And of course the top could be decorated with a nerdish sticker, because, well, I am a nerd.

I made a few of these pattern weights, used them for a while, was happy with them, and then a few days ago I received some new hexagonal stickers I had had printed, and realized that while I had taken a picture with all of the steps in assembling them, I had never published any kind of instructions on how to make them — and I had not even pushed the source file on the craft tools git repository.

And yesterday I fixed that: the instructions are now on my craft pattern website, with generated STL files, the git repository has been updated with the current sources, and now I’ve even written this blog post :)


Water Resistant Hood

Posted on February 23, 2025
Tags: madeof:atoms, craft:sewing, FreeSoftWear

a person wearing a relatively boxy water resistant jacket with
pockets and a zipper, and a detached hood with a big square cowl
that reaches mid-torso.

Many years ago I made myself a vest with lots of pockets 1 in a few layers of cheap cotton, and wore the hell out of it, for the added warmth, but most importantly for the convenience provided by the pockets.

the same person showing just the vest, with two applied pockets
on the bust, closed with buttons, and two big flaps covering two
welted pockets at waist level, plus a strip of fabric with loops
where things may be attached.

Then a few years ago the cheap cotton had started to get worn, and I decided I needed to replace it. I found a second choice (and thus cheaper :) ) version of a water-repellent cotton and made another vest, lined with regular cotton, for a total of just two layers.

the same person, this time there are also two sleeves, attached
to the vest with big snaps, the outline of which can be seen on
the vest. they are significantly less faded than the vest.

This time I skipped a few pockets that I had found I didn’t use that much, and I didn’t add a hood, which didn’t play that well when worn over a hoodie, but I added some detached sleeves, for additional wind protection.

This left about 60 cm and some odd pieces of leftover fabric in my stash, for which I had no plan.

the hood pulled down on the back, showing the big square cowl.

And then February2 came, and I needed a quick simple mindless handsewing projects for the first weekend, I saw the vest (which I’m wearing as much as the old one), the sleeves (which have been used much less, but I’d like to change this) and thought about making a matching hood for it, using my square hood pattern.

Since the etaproof is a bit stiff and not that nice to the touch I decide to line3 it with the same cotton as the vest and sleeves, and in the style of the pattern I did so by finishing each panel with its own lining (with regular cotton thread) and then whipstitching the panels together with the corespun cotton/poly thread recommended by the seller of the fabric. I’m not sure this is the best way to construct something that is supposed to resist the rain, but if I notice issues I can always add some sealing tape afterwards.

I do have a waterproof cape to wear in case of real rain, so this is only supposed to work for light rain anyway, and it may prove not to be an issue.

As something designed to be worn in light rain, this is also something likely to be worn in low light conditions, where 100% black may not be the wisest look. On the vest I had added reflective piping to the armscyes, but I was out of the same piping.

from the front; a flash was used to take the picture, making
the border of the cowl very visible.

I did however have a spool of reflector thread made of glass fibre by Rico Design, which I think was originally sold to be worked into knitting or crochet projects (it is now discontinued) and I had never used.

I decided to try and sew a decorative blanket stitch border, a decision I had reasons to regret, since the thread broke and tangled like crazy, but in the end it was done, I like how it looks, and it seems pretty functional. I hope it won’t break with time and use, and if it does I’ll either fix it or try to redo with something else.

Of course, the day I finished sewing the reflective border it stopped raining, so I haven’t worn it yet, but I hope I’ll be able to, and if it is an horrible failure I’ll make sure to update this post.


  1. and I’ve just realized that I haven’t migrated that pattern to my pattern website, and I should do that. just don’t hold your breath for it to happen O:-). And for the time being it will not have step-by-step pictures, as I currently don’t need another vest.↩︎

  2. and February of course means a weekend in front of a screen that is showing a live-streamed conference.↩︎

  3. and of course I updated the pattern with instructions on how to add a lining.↩︎


Conference Talk Timeout Ring, Part One

Posted on February 4, 2025
Tags: madeof:atoms, madeof:bits

low quality video of a ring of rgb LED in front of a computer:
the LED light up one at a time in colours that go from yellow to
red.

A few ago I may have accidentally bought a ring of 12 RGB LEDs; I soldered temporary leads on it, connected it to a CircuitPython supported board and played around for a while.

They we had a couple of friends come over to remote FOSDEM together, and I had talked with one of them about WS2812 / NeoPixels, so I brought them to the living room, in case there was a chance to show them in sort-of-use.

Then I was dealing with playing the various streams as we moved from one room to the next, which lead to me being called “video team”, which lead to me wearing a video team shirt (from an old DebConf, not FOSDEM, but still video team), which lead to somebody asking me whether I also had the sheet with the countdown to the end of the talk, and the answer was sort-of-yes (I should have the ones we used to use for our Linux Day), but not handy.

But I had a thing with twelve things in a clock-like circle.

A bit of fiddling on the CircuitPython REPL resulted, if I remember correctly, in something like:

import board
import neopixel
import time

num_pixels = 12

pixels = neopixel.NeoPixel(board.GP0, num_pixels)
pixels.brightness = 0.1

def end(min):
    pixels.fill((0, 0, 0))
    for i in range(12):
        pixels[i] = (127 + 10 * i, 8 * (12 - i), 0)
        pixels[i-1] = (0, 0, 0)
        time.sleep(min * 5)  # min * 60 / 12

Now, I wasn’t very consistent in running end, especially since I wasn’t sure whether I wanted to run it at the beginning of the talk with the full duration or just in the last 5 - 10 minutes depending of the length of the slot, but I’ve had at least one person agree that the general idea has potential, so I’m taking these notes to be able to work on it in the future.

One thing that needs to be fixed is the fact that with the ring just attached with temporary wires and left on the table it isn’t clear which LED is number 0, so it will need a bit of a case or something, but that’s something that can be dealt with before the next fosdem.

And I should probably add some input interface, so that it is self-contained and not tethered to a computer and run from the REPL.

(And then I may also have a vague idea for putting that ring into some wearable thing: good thing that I actually bought two :D )


Winter

Posted on January 10, 2025
Tags: madeof:atoms, craft:painting, medium:acrylic

An acrylic painting in blue and greenish grey vaguely
resembling rocky slopes at the bottom right and a cloudy sky at
the top left.

A few days ago1 I wanted to paint, but I didn’t know what to paint, so I did a few more colour tests to find out which green combinations I can get out of the available yellows and blues (and greens) acrylic I have (from a cheap student grade line).

A sheet of colour tests with mixes of various yellows and
blues.

I liked the cool grey tones in the second to last line, from 200 “Naples yellow” (PY3 PY83 PW6) and 410 Ultramarine blue (PB29), so I went up a step on the scale of “things to do when having a desire to paint, but the utter inability to actually paint something ” and did a bit of a study with those two colours plus titanium white.

The study above over a sheet of scrap paper: at one of the edge
the excess paint has connected the two together.

And btw, painting with acrylics on watercolour paper taped to a sheet of scrap paper works just fine for stuff like this that is not supposed to last, but the work will get glued to the paper below when (not if) the paint overflows :D


  1. i.e. almost three months, and then I wrote 95% of this post and forgot to finish and publish it.↩︎


Poor Man Media Server

Posted on January 9, 2025
Tags: madeof:bits

Some time ago I installed minidlna on our media server: it was pretty easy to do, but quite limited in its support for the formats I use most, so I ended up using other solutions such as mounting the directory with sshfs.

Now, doing that from a phone, even a pinephone running debian, may not be as convenient as doing it from the laptop where I already have my ssh key :D and I needed to listed to music from the pinephone.

So, in anger, I decided to configure a web server to serve the files.

I installed lighttpd because I already had a role for this kind of configuration in my ansible directory, and configured it to serve the relevant directory in /etc/lighttpd/conf-available/20-music.conf:

$HTTP["host"] =~ "music.example.org" {
    server.name          = "music.example.org"
    server.document-root = "/path/to/music"
}

the domain was already configured in my local dns (since everything is only available to the local network), and I enabled both 20-music.conf and 10-dir-listing.conf.

And. That’s it. It works. I can play my CD rips on a single flac exactly in the same way as I was used to (by ssh-ing to the media server and using alsaplayer).

Then this evening I was talking to normal people1, and they mentioned that they wouldn’t mind being able to skip tracks and fancy things like those :D and I’ve found one possible improvement.

For the directories with the generated single-track ogg files I’ve added some playlists with the command ls *.ogg > playlist.m3u, then in the directory above I’ve run ls */*.m3u > playlist.m3u and that also works.

With vlc I can now open http://music.example.org/band/album/playlist.m3u to listen to an album that I have in ogg, being able to move between tracks, or I can open http://music.example.org/band/playlist.m3u and in the playlist view I can browse between the different albums.

Left as an exercise to the reader2 are writing a bash script to generate all of the playlist.m3u files (and running it via some git hook when the files change) or writing a php script to generate them on the fly.


Update 2025-01-10: another reader3 wrote the php script and has authorized me to post it here.

<?php
define("MUSIC_FOLDER", __DIR__);
define("ID3v2", false);


function dd() {
    echo "<pre>"; call_user_func_array("var_dump", func_get_args());
    die();
}

function getinfo($file) {
    $cmd = 'id3info "' . MUSIC_FOLDER . "/" . $file . '"';
    exec($cmd, $output);
    $res = [];
    foreach($output as $line) {
    if (str_starts_with($line, "=== ")) {
        $key = explode(" ", $line)[1];
        $val = end(explode(": ", $line, 2));
        $res[$key] = $val;
    }
    }
    if (isset($res['TPE1']) || isset($res['TIT2']))
    echo "#EXTINF: , " . ($res['TPE1'] ?? "Unk") . " - " . ($res['TIT2'] ?? "Untl") . "\r\n";
    if (isset($res['TALB']))
    echo "#EXTALB: " . $res['TALB'] . "\r\n";
}


function pathencode($path, $name) {
    $path = urlencode($path);
    $path =  str_replace("%2F", "/", $path);
    $name = urlencode($name);
    if ($path != "") $path = "/" . $path;
    return $path . "/" . $name;
}

function serve_playlist($path) {
    echo "#EXTM3U";
    echo "# PATH: $path\n\r";
    foreach (glob(MUSIC_FOLDER . "/$path/*") as $filename) {
    $name = basename($filename);
    if (is_dir($filename)) {
        echo pathencode($path, $name) . ".m3u\r\n";
    }
    $t = explode(".", $filename);
    $ext = array_pop($t);
    if (in_array($ext, ["mp3", "ogg", "flac", "mp4", "m4a"])) {
        if (ID3v2) {
 	   getinfo($path . "/" . $name);
        } else {
 	   echo "#EXTINF: , " . $path . "/" . $name . "\r\n";
        }
        echo pathencode($path, $name) . "\r\n";
    }
    }
    die();
}



$path = $_SERVER["REQUEST_URI"];
$path = urldecode($path);
$path = trim($path, "/");

if (str_ends_with($path, ".m3u")) {
    $path = str_replace(".m3u", "", $path);

    serve_playlist($path);
}

$path = MUSIC_FOLDER . "/" . $path;
if (file_exists($path) && is_file($path)) {
    header('Content-Description: File Transfer');
    header('Content-Type: application/octet-stream');
    header('Expires: 0');
    header('Cache-Control: must-revalidate');
    header('Pragma: public');
    header('Content-Length: ' . filesize($path));
    readfile($path);
}

It’s php, so I assume no responsability for it :D


  1. as much as the members of our LUG can be considered normal.↩︎

  2. i.e. the person in the LUG who wanted me to share what I had done.↩︎

  3. i.e. the other person in the LUG who was in that conversation and suggested the php script option.↩︎


Asemic Writing, a Zine

Posted on October 24, 2024
Tags: madeof:atoms, madeof:bits, craft:zine

An open booklet with lines that look like some kind of cursive
non-alphabetic script, framed by a border in the same script and
four symbols in the corners.

I have no idea either.

The front of that booklet, with three lines of fake text in
different sizes and a circle of the same.

Happy Maladay1 to those who celebrate it, I guess.


A template on white paper with pencil lines where text is
supposed to go.

Multiple A4 sheet of tracing paper with fake text, plus an A6
sheet and a white A6 sheet with a stamp impression.

If you care about the how, it started as china ink on tracing paper, with the help of a template (and a correction sheet for one page where I used the wrong line on the template).

A rubber stamp was carved with the author’s signature and stamped on white paper because the ink from the pad wasn’t working well on tracing paper.

Then everything was scanned (with the correction on top of the wrong page) asemic_zine_scans.tar.

Imported in Inkscape and traced asemic_zine_svg.tar.

Printed, cut in half, folded and stapled. The magenta lines weren’t by design, but are there because my printer is currently2 cursed.

And finally, asemic_zine.pdf was created, joining the pages together with pdfjam, for convenience in case somebody wants to download the full thing.

All the .tar and .pdf downloads from this page are released under the WTFPL, or All Rites Reversed..


  1. it’s still technically Maladay when I write this, even if by the time you’ll get this it’s probably the 6th of The Aftermath.↩︎

  2. I mean, all printers are always cursed, but at different times they can be cursed in different and novel ways.↩︎


…this is probably not the beginning, you can find more in the archives.