Didn’t have much time since the last update but I got plenty of new push buttons and switches connected. Shipment took weeks for some, which I don’t exactly mind since this is a low priority fun project, but I was still happy when everything finally arrived.

Made a grave mistake also when I jacked into the USB connector to get a read on how many mA I already need here and mixed up VCC and GND during the hot wiring. Good thing that the PCB I use has a fail-safe diode so it didn’t die on me. Phew, close one. I guess USB standards are good for something like this 😅 Anyway, I’m not even scratching the limits here yet so I’m good to go. I can also separate the powering of all LED from the controller any time by design and switch over to the 12V from the LCD panel and/or add a downstepper from that. The PSU for this I have under control. USB is limited and that has to be kept in mind.

Spent most of the rest of the night wiring up a new cable tree for the potentiometers and connect most of the new LED. Got some switches with integrated LED and safety caps mostly for seeing if I like them. I do. So I added them. I’ll make them light up when OFF because I’m going to use them for fire and forget functions like launching a missile or activating self destruct at some point in the future.

Speaking of LED, I got myself a decent LED light bar hanging over my desk so I can finally _see_ the stuff I’m working on. For the first time I was able to identify + and – on the components without the use of a magnifying glass. That’s really a huge improvement.

My soldering skills also improved. I’m still fighting with a way too huge tip on the soldering iron, because it’s the best I have, with temperature all over the place, but I’m slowly getting the hang of it again. Burnt myself only once yesterday too 🤣

The cable job looks like made from a madman. Trying to keep components grouped by type because stuff is still changing position here and there. Worked out okay for me so far. It’s very tedious work to connect all the tiny wires on the fly and it’s getting really crowded in there.

I’m also totally out of options to connect further joystick buttons. The tiny PCB I used so far is saturated so it’s probably time to switch to an Arduino or similar where I can read many more inputs. This brings me to another topic. First of I need some sort of de-bounce logic because a lot of the push buttons are very flimsy and should not trigger multiple times when pushed once. This can be easily done in software but that takes up program space. A circuit for hardware de-bounce (or filtering) isn’t that complex but requires additional components and this is where I really don’t want free flying parts inside the Primary Buffer Panel any more so I guess it’s also time to start making some own PCBs (and try that Aisler manufacturer this time).

The Arduino has also another very good argument to offer: Controlling status LED. At the moment all buttons simply glow but they can not be individually addressed. What can be individually addressed tho is a WS2811 or WS2812 LED stripe. This is basically one long string of LED that forward a data wire so I can power the whole thing with my regular VCC for all the lights and control the data lane with an IC like the Arduino. I found an older type that does not come as SMD but with “real” round LED that can be put on a panel more easily. It’s also RGB 🙋 There is only one drawback: If one LED gives up it usually dooms all the others following from operating until it is replaced. The stripe comes with 50pcs tho so I’ll have plenty as backup. Best of it: This solution is dirty cheap and occupies only one of the valuable pins before I have to go for an additional multiplexer. Not that such an IC is expensive but it adds another part to the free flying mix that is already going on.

Oh yeah, and I could finally put my rotary encoder to use too.

My little one bought herself some LED light “projector” from her pocket money. It comes with 4 ultra bright LED in various colours shining through lenses on a slowly rotating axis to project various motives on the ceiling. It also features a timer that disables the LED after 6 hours for 18 more hours. Kinda neat basically. It was sold as “Leucht-Projektor” from “Dekor” but I’m pretty sure it’s just one brand of many this thing is sold as.

On the next day she complained that some colours were gone. At first glance I thought that the LED simply broke down already. It was a cheap article after all and there is way too much electronic trash out there after all. So when the projector came back to life with all colours some hours later I was befuddled at first. This was when I noticed that the LED that disappeared were the “expensive” ones requiring a higher voltage to work.

LED are usually depending on a certain minimum voltage based on their colour with red and green on the lower end and the missing white and blue on the upper end. You can probably find some nifty charts when searching for LED colour voltage charts. So what we had was simply a voltage drop due to… empty batteries!

Well we all know that products with batteries included come with the cheapest batteries the market had to offer so we didn’t think much of this when we inserted a bunch of fresh batteries.

Rinse and repeat – on the next day the little one requested _more_ fresh batteries.

Now I got curious. Time for some maths. Usually an LR03 (AAA) comes with ~1200mAh and we got 3 of those. If we don’t know the required mA for a LED we guess it by rule of thumb with 30mA. There is also a little motor involved and certainly some IC too so I guessed ~150mA. This didn’t add up tho so I picked it apart.

Taking a closer look at the LED on the PCB and some Google Fu later I’m pretty sure that the LED in question are sold by AZAD Electronics as “High Power Super Bright LED SMD” and yeah, they come in different variants of 1W to 3W so it’s time for a meter readout and lo and behold, the readout came back with a total of 350mA! So with some very quick maths we get a total of roughly 10h of usage until the batteries are drained to a point where no LED will work any more at all. Hilarious considering that this thing has a timer to disable itself after 6 hours to restart itself after 18 more just to… die.

But Beko, what about rechargeables? You do the math! First of all rechargeables come only with 1.2V and next they only hold around ~750mAh – at peak! I’m not going to unscrew that frail battery compartment once a day and put any sort of new batteries in there while the old ones block the charger for all eternity. That is just insane and an economical and ecological nightmare!

Who the frak thought this is a good idea to sell it like that? And guess what, the bottom of the “candle” does have an opening for a cable so at some point during the design process this thing must have had a cable before.

Know what else could power this? USB! That comes with 5V and with 500mA max so we’re well within it’s limits. Also it will be attached to a charger and not to a PC. Admitted, without closer inspection of the PCB it was a gamble but hey, shiny new batteries usually have some extra ompf as well so when I play PCB designer with KiCAD I’d go with ~1.65V per battery anyway. Three in series are 4,95V – good enough! That thing is so cheap that I’d put money on the fact that it simply doesn’t die in droves on it’s users for good simply because nobody can afford to jam three new batteries into it _each day_ so what’s to lose?

If you may read a certain angry undertone here you’re correct. I’m so gorram tired that almost everything has to be custom-built into any usable state first nowadays.

Anyway, grabbed my soldering iron, prepared a test setup and slaughtered an old USB Typ B cable I had no more use for and fixed the gorram thing. There shall be light. In various colours. Without any further warranty 🖕

I was delighted to read about the digital reconstruction of a chain mail based on an exhibit next door.

The piece in question (exhibit F 14,01-2) was found in a grave near 72501 Gammertingen, Germany and consists of ~45.000 iron pieces. It’s well preserved and can be viewed in our local state museum or online at https://www.landesmuseum-stuttgart.de/sammlung/sammlung-online/dk-details/?dk_object_id=1280 – both basically next door for me.

The interesting part is that it’s a mix of riveted and stamped rings, also known as “Roman Mesh”. I own a similar piece myself and I’m fascinated by this type of mail.

This pattern was digital reconstructed using Blender and it’s polygonal modelling functions and uploaded to SketchFab under CC license by it’s authors:

Aleksei Moskvin (Saint Petersburg State University of Industrial Technologies and Design) https://independent.academia.edu/AlekseiMoskvin

Mariia Moskvina (Saint Petersburg State University of Industrial Technologies and Design) https://independent.academia.edu/MariiaMoskvina

Martijn A. Wijnhoven (VU University Amsterdam) https://vu-nl.academia.edu/MartijnAWijnhoven

It can be viewed in 3D with a modern browser at https://sketchfab.com/3d-models/gammertingen-mail-fabric-3d-reconstruction-dd52c61041f04f27a613488893082e29

So dear game devs, there is no longer an excuse for shoddy chain mail patterns in games – here it’s served on a silver platter 😛

I sure am playing a lot of space pew pew over the last months. Took a lot of screenshots too and it’s kinda hard not to drown my timeline with screenshots every day. Today I sifted through the pile and found a bunch I’d like to share (some again) so here is a little gallery of (mostly) space simulation games I play on my Linux PC. And I’ll keep making that point until I can browse the web without getting daily reminders by random strangers claiming that gaming on Linux PC is not possible. Cuz it is.

Added on 5th January 2022 and played with whatever Lutris thinks best. I really was going to hold out on Star Citizen a little longer but I got it as a gift to my birthday. My GPU is definitely at it’s limit here. Will probably have to give it some more time. I mean it’s Alpha and all but hey, it _does_ work.

This I play mostly under Proton with the Primary Buffer Panel whenever possible. It’s just the most fun this way (kids love it too).

 

The more recent X series have native Linux builds but work also perfectly fine with Wine.

 

Both run via Lutris and with Proton-GE and usually with my DIY Headtracker.

 

FlightGear runs native on Linux and Fly Dangerous does have a native Linux build but due to an issue with terrain generation being single threaded I use Proton for this one too until this is solved. No Man’s Sky runs perfectly with Proton.

I play all of the above with my X52 Pro H.O.T.A.S. and some with my DIY headtracker stretched over three displays in a so called multihead setup. Let me know if you’ve any questions how this can be set up.

Okay, recap from the last making session of the button box for my . What I achieved this time: The LCD controller has now a place inside the contraption while the LCD controller buttons are screwed on the outside. This is mostly because I have no buttons laying around to be used instead. I did note down the pin-out of the connector though so I can change this any time. It has a funny LED though that has 3 pins, GND, Red and Green. Uncertain what to make of this.

The button box itself was put on stilts for the extra room required. The LCD itself is prepared to be added to the button box but I’ve to remove part of the former hinges because they are way too sturdy to be removed with a simple cutter knife. I’ll probably need a grinder or a saw and that’s work I will not do at my computer but in the basement.

Next was preparing the ICP in the centre. For this I created a new box of cardboard that is attached to the button box with tape that also acts as a hinge so I can “open” it to work on the switches that go there. I also noticed that my knobs for the rotary encoders or potentiometer are way too big. I could compensate this with more height but I don’t want the ICP to dwarf the button box itself 🤔 So… mebbe I’ll use smaller knobs. On the topic of knobs: Dem, the costs for decent sized knobs are insane. Like ~8 EUR for one knob! So… perhaps I’ll go for spray painted wood here. I don’t know yet 🤷

Yeah, and I got tired of calling it just “button box”. It’s not. It’s a “glorified button box mock-up with a gorram LCD made from cardboard”. So I decided that it needs a name and as a nerd I came up with… Primary Buffer Panel! Firefly fans will know. Others may educate themselves via https://www.youtube.com/watch?v=mY59BYSrxn0 and have a laugh.

It’s also a running gag in the family. My van tended to loose all kind of parts while driving and when Serenity aired my dad yelled at this very specific scene: “Hah, just like your car!” 🤣

I’m making heavy use of Hetzner storageboxes, a rather slow network storage solution perfectly suited for backup tasks. Sadly they come with hickups resulting sometimes in a failed automount status where the machine may not recover from on it’s own. That’s so common that I got tired of checking monitoring or logging in to each individual machine. and to my aid!

for i in {bob,alice,steam,punk,younameit}; do echo "$i:"; systemctl --host "$i" status storagebox.automount; done
So how are my storagebox mounts today? Ah yes, yes, seems like two need a little pep talk.

I track my working hours with timewarrior. That’s a CLI program that has a lot of nifty features and can also be hobbled together with taskwarrior to automated time tracking when a task is started. The taskwarrior on the other hand gets my todo list from various bugtrackers as sources, like Redmine and Jira, using bugwarrior-pull.

With this set-up I’ve my to-dos and my tracked hours available on the terminal, where I spend most of the day anyway. This is more or less comfortable for me but there is a huge drawback.

At the end of the months I’ll need some numbers and as it goes each company or customer has it’s own time tracking system (or even wants a csv export!) so I’ve to backfill the real systems each month. That’s a very tedious work especially if time has to be logged on specific tickets or customers and booking is done with quarter hours so I’ve to do some quick math in my head all the time.

In theory timewarrior has me covered on this because it has a summary view that is basically fine but this can not be used to grepped or sorted for certain tickets because it displays the date for each day only once.

Another nifty feature is the timewarrior export function that results in a JSON. The result is somewhat limited though since it will for example not display and durations and there is as far as I know no way to change this.

Demo how the various views or exports of timewarrior look (And yes, not _everything_ I work on is tracked here :P)

This is where jq (a lightweight and flexible command-line JSON processor) comes in. This little tool is seriously underrated and it allows me to change the format and the values of the JSON export on the fly by calculating for example time durations on the fly, reformats start and end dates so import functions of table calculation programs, like LibreCalc, can read the values as date (we all know that Excel reads anything as date already) and displays me the tracked time in quarter hours for each entry so it’s for most cases a no brainer now to backfill another time tracking system with this. The result can also be easily sorted now to find for example times for a specific ticket by grepping for it’s id.

timew export :week | jq -r '["id", "start", "end", "duration", "quarter_hours", "description"], 
    (.[] | 
        # make sure .end is set (may be empty for currently active tracked time)
        .end = (.end // (now | strftime("%Y%m%dT%H%M%SZ"))) |
        .duration = ( (.end | strptime("%Y%m%dT%H%M%SZ") | mktime) - (.start | strptime("%Y%m%dT%H%M%SZ") | mktime) ) |
        # round duration to quarter hours
        .quarter_hours = (.duration / 3600 / 0.25 | ceil*0.25) |
        [
            .id,
            # urks, localtimes are a mess in jq, ymmv - as long as it is consistent off I do not care tho
            (.start | strptime("%Y%m%dT%H%M%SZ") | mktime | todateiso8601), 
            (.end | strptime("%Y%m%dT%H%M%SZ") | mktime | todateiso8601), 
            (.duration | strftime("%T")),
            .quarter_hours,
            (.tags | join(", "))
        ]
    ) |
    @csv'

The resulting csv file can be imported into most table calculation software now or read manually in a more comfortable way.

Timezones are still an issue. There are so many open tickets on jq on this that I don’t even bother.

Ymmv, as usual 🙂

When you have a water cooled computer the last thing you want to see is a message from your CPU driver telling you that it forcefully clamps down power because this means your CPU is throttling down.

Refilling an AIO be quiet water cooling system

This may mean that there is not enough water in your cooler and the CPU starts to overheat. Time for maintenance and a refill!

What we need for this is an external power supply or the pump, a pipe, an adapter, and some sort of filter hopper and of course water for the refill.

The pump is powered by 12V and this model should not be undervolted. Seriously, this one will break when undervolted. 12V is basically what an Ikea LED lights strip power supply will provide. You can also use another PC power supply but this is what I have anyway for a fan providing fresh air for my office.

The hose I used for the pipe is a used DN9 RAUFILAM-E from REHAU that I found in the barn. It costs about ~1 EUR per meter but you can of course buy a “special” hose from your usual PC parts mafia for 10 EUR per meter.

Distilled water should be fine. You can also purchase whatever overpriced holy water you may prefer. I won’t care.

I spare you the details how to remove the water cooler, because I assume you assembled it before and if not there are plenty of other tutorials on the net.

This pump was completely dry after opening the lid with a screw driver. I prepared this contraption held in place with a wire attached to the chandelier. So don’t do this at home. Now I started the pump and added water to the pipe until the pipe was filled.

Now is the time to move and shake the radiator to get all the air out. Do not shake the pump! This takes some time. You’re done when no more bubbles appear.

Don’t forget the seal and screw in the lid while there is still water standing in the hole. Do not use force on the lid, because it breaks easily.

Make sure everything is clean and tidy (and dry) in the end because you don’t want water in your PC. This also helps to see any leaks that may spring. Don’t forget the heat sink compound later or this will be a very short adventure.

When done let the pump run for a little bit to see if any water leaks out.

When everything is assembled again make sure to run a load test and see if any leak springs.

And this is it. The system is able to hold 32°C again where it was hardly able to hold 80°C before.

And as usual, if you break your system you get to keep the pieces.

I’m not responsible for your mistakes.

Re-Visited Campus Galli in 88605 Meßkirch / Germany mostly for the new barn that is almost finished by now. My last visit was in 2019 so it was really time to see how much changed (despite the gorram pandemic). This time I took so many pictures that my battery drained.

Visitors aren’t allowed inside of the barn yet since it will be under construction until the end of the month. That was perfectly fine for me because catching the impression of the almost finished building is what I was after:

This cart also catched my attention so I checked it out closer. Spoiler: It doesn’t come with free rust proofer:

I consider myself lucky with the weather situation by the way. I could see a lot of systems that prevent flooding of the area in action – or not.

The orchard changed a lot since my last visit. The entrance for example is now completed.

Many trees were cut down for the constructions going on. Wood is needed everywhere and for everything on the site and some areas are becoming aerial.

The wooden church also got some changes. Most important the bell tower next to it and also a new porch. Couldn’t get enough of it.

All the other buildings required on a medieval construction site are also still there. Some show a lot of wear by now and constantly ongoing repairs are required.

The masons seem to be busy with a new arch. No idea where it will go tho 🤔 Their space doubles as a place to dry scales of wood in the attic.

This time I also managed to get pictures of some of the livestock!

This was a great day. Didn’t poke my nose outside much over the last year and I really missed excursion like this.

I also recorded some small video snippets so I may eventually come around creating a small video later too 🙂

https://www.campus-galli.de/

Diaspora: Shattered Armistice, still awesome today: http://diaspora.hard-light.net/

Video of Diaspora: Shattered Armistice (on Linux PC)

Seems to work nice with my DIY headtracker on Linux PC too. Sadly I got quite some frame-drops due to recording (and probably multi-head too). It works way better without all the cameras and a life-stream going on but I think it’s enough to get a good impression. Botched emergency landing included xD

Warning: This may fuel a desire to re-watch the BSG series again 😀