Searching txt.sour.is

Twts matching #c
Sort by: Newest, Oldest, Most Relevant

Chilly 15°C in the shade with a slight breeze, but it was very nice in direct sun. I jumped outside after calling it quits. There were five herons on that meadow, super sweet. One even caught something fairly large when I returned, but it was already too dark, so my camera just cooked up a blurry pixel soup.

The country road is closed for construction. There’s now a one-way detour on the field road. For the opposite direction, you need to take a giant detour. It looks like they installed a temporary traffic light just for that one dairy farm, so that the farmer can also go in the opposite direction, just like before. Surprisingly to me, the traffic wasn’t too heavy on that field road. Of course, I really don’t wanna walk there anymore for the time being, but I expected a hell lot more.

As always, the sunset looked much cooler in person.

https://lyse.isobeef.org/2026-10-12-waldspaziergang/

⤋ Read More

It was a nice three hours stroll to my backyard mountain and back. 28°C, my goodness. Autumn is here with its colors. Not so much with the temps, unfortunately. At least the nights are chillier, so I should be thankful.

The great spotted woodpecker was hiding behind the leaves, so 18 was the best I managed. Still really terrible.

I think this is my very first slow worm this year in 32. Very late. And it might have been even cactus, not sure.

https://lyse.isobeef.org/2026-09-30-waldspaziergang/

⤋ Read More

Just some light Sunday afternoon entertainment: Printing from NetBSD on the dotmatrix printer by dumping data to /dev/ulpt0. The netbook doesn’t have a parallel port, so this must be done over USB. NetBSD.escp was created by a little custom ESC/P converter written in C. 🄳

https://movq.de/v/14b09c47a5/print-small.mp4

Video description:

Video begins with a view of the netbook’s screen: 3 windows are open, one of them showing the typical NetBSD logo to print, the other one shows the commands I ran in preparation:

magick /usr/X11R7/include/X11/pixmaps/NetBSD.xpm -depth 8 -alpha set /tmp/NetBSD.pam
./pam2escp /tmp/NetBSD.pam /tmp/NetBSD.escp

The other terminal shows a root shell with this command:

cat /tmp/NetBSD.escp >/dev/ulpt0

I hit Enter, the printer starts printing.

Camera pans to show the printer, an Oki ML 3390. Continuous paper. Once finished, I manually feed the paper a little bit to better show the result.

(If you turn up the volume enough, you can hear ā€œLeavingā€ by ā€œChill Carrierā€ from 2008.)

⤋ Read More

Awful 33°C today. But I had to move, no matter what. So, I went outside. At first, the sun was out a bit. It was brutal. Later it vanished behind the clouds. But the humidity was still through the roof.

I watched the corn harvest I came across. Dusty as hell, but it was great fun observe the machineries work.

Going up my backyard mountain, there weren’t many people around. I was pleasantly surprised. However, the smaller hill below was rather crowded. Many people with picnic mats, enjoying their dinner, painting A3 love letters, claiming all available benches, taking wedding photos, walking their dogs, etc.

The public barbecue site at the summit is still closed due to the ongoing fire hazard. I found it rather funny to see a fire extinguisher ready to go next to it. The bread and cake smell disclosed that the Mountain Baking Boys were active. The large oven right next to the BBQ was still going strong.

https://lyse.isobeef.org/waldspaziergang-2026-08-27/

⤋ Read More

Yesterday, my mate and I left the house at 10 in the morning around 15 or 16°C. There was a steady wind blowing, the sun came and went every two minutes. The clouds looked really nice. Temperatures peaked at 21°C I reckon. Certainly great t-shirt weather. It was supposed to slightly rain at some point in the morning, but all we got was less than two hand full of drops and later the tiniest amount of drizzle for not even half a minute. So, nothing.

The weathermen also called for a cloudy arvo and partially sunny evening. The forecast must have scared off people right away, because there was noone around. We saw very dark clouds in the distance and there was certainly rain in the town. But out in nature, just a constant alternation between the sun and clouds.

Just before noon, we arrived at the bakery two villages over and got four fire brezels (with pepper, extremely tasty, but the fingers are an oily mess after that) and two nut sticky buns for provisions. This is where the small bird (19-23) was giving us a show.

It’s so dry, the landscape looks already like autumn for several weeks. Sooo many orange and brown leaves on the ground, it’s crazy. I hope we still get a real autumn and head not straight from summer into winter. Last weekend was still an awful 37°C.

This time, we paid the small entrence fee to walk around inside the ruin of Hohenrechberg Castle. The red sandstone looks super sick. I really dig it. It’s actually purplish at parts, no kidding. Absolutely unreal! At least for me, I normally only see the beige sandstone around here.

Right when we went down the castle ditch, both camera batteries were completely drained after just 880 photos in total. What a bummer. I saw a guy with a leather glove coming out of a door and immediately followed him to the aviary in the hopes of a show or something. That flight cage wasn’t there last time I visited the ruin. And we were lucky, the falconer fed his harris’ hawk and explained us along the way. Other families came and went, but we talked to him for at least 20 minutes. Super interesting. I think that was easily the best part.

At exactly 19 o’clock I unlocked the front door. Our feet were done. It was an amazing nine hours hike. :-)

The gallery is a tiny bit larger than usual, enjoy: https://lyse.isobeef.org/wanderung-auf-die-burgruine-hohenrechberg-2026-08-22/

⤋ Read More

At 8 o’clock, we had chilly 10°C. My mate and I dashed up our backyard mountain in just a tad under an hour. And that wasn’t the direct way. Our jumpers came off quick. It was really nice, because the sun was already warming and lighting up the landscape and everbody else still asleep. We had everything to our own.

Shortly after we were atop, the first two yoga women showed up with their mats. When we decended, a bunch more were on the way up. And then came the families with dogs and kids. Very glad to have missed all this hustle and bustle.

Now, I’m really tired. But it’s a great feeling of exhaustion. Two and a half hours later, we’re at 17°C. It’s supposed to hit an acceptable 23°C later on.

Unfortunately, no pics. I learned that charging via the docking station when the computer is turned off doesn’t do shit at all. Oh well.

⤋ Read More
↳ In-reply-to » It is such a nice feeling that Mu is such a capable little language šŸ˜… And I decided to write code code in Mu by hand 🤚 haha 🤣 and start solving Project Euler problems, like Problem 8 which works out to be a nice elegant solution in Mu:

Oh man wow 😮 Problem 9 was quite hard 😱 I had to build two new functions in the Mu stdlib for computing combinations and permutations, but then the combinations of range(1000) for triples such as a + b == c is enormous! So i had to write iterator versions of these to do lazy evaluation. Anyway solution follows:

#!/usr/bin/env mu

// Special Pythagorean Triplet

import "iter"

fn usage() {
  print("Usage:", args()[0], "<n>")
}

fn sqr(x) { x * x }

fn main() {
  if len(args()) < 2 {
    usage()
    exit(1)
  }

  n := must(int(args()[1]))
  print("n:", n)

  // For a < b < c and a + b + c == n, both a and b are strictly less
  // than n/2. Generate only (a,b) combinations and derive c directly. This
  // keeps the search lazy and reduces n=1000 from C(999,3) = 165,668,499
  // candidate triples to C(499,2) = 124,251 candidate pairs.
  pairs := iter.combinations(iter.range(1, n / 2), 2)

  triples := iter.map(pairs, fn(xs) {
    a := xs[0]
    b := xs[1]
    return [a, b, n - a - b]
  })

  // Enforce b < c; a < b is already guaranteed by combinations over an
  // increasing range, and a + b + c == n holds by construction.
  triples = iter.filter(triples, fn(xs) {
    return xs[1] < xs[2]
  })

  // Euler 9 has one answer for n=1000. find() stops the entire upstream
  // iterator chain as soon as the first Pythagorean triple is found.
  answer := iter.find(triples, fn(xs) {
    return sqr(xs[0]) + sqr(xs[1]) == sqr(xs[2])
  })

  print(answer)

  if answer != nil {
    print(answer[0] * answer[1] * answer[2])
  }
}

main()

⤋ Read More
↳ In-reply-to » Solar eclipse: https://movq.de/v/25e6071e0c/

@movq@www.uninformativ.de Hell yeah, this is awesome! Great shots!

When I checked at the beginning, the sun was already way behind the trees. I then decided to wait until the end before leaving the house and melting in direct sunlight at 31°C. At the hill, there were around 15 people in camping chairs and on picnic rugs. Some dragged out their camera gear as well.

My first two photos were through the eclipse glasses. In contrast to others, I didn’t bring my tripod and just used a tree as a crappy makeshift one. With the large zoom it’s impossible to keep it still for one second (what my cam decided to be the exposure time). Leaning the camera against the side of the tree is just not good enough.

https://lyse.isobeef.org/sonnenfinsternis-2026-08-12/

⤋ Read More
↳ In-reply-to » Got up at 5 to have a shower and air out the bathroom before the sun hits, went back to bed. Strolled with my mate for one and a half hours and now I'm absolutely done. At 8 the temps were pleasantly cool, but that didn't last long.

@lyse@lyse.isobeef.org I also got up at 5 (I always do šŸ˜…) and went on a quick stroll around 6:30, but boy, that was chilly. So I said to myself: Screw that, I’ll try again later.

And now we’re at 32 °C. 🤣

⤋ Read More

I really think I should go back to Java.

Writing programs in Python is so exhausting. I want a compiler and I want static typing. No, linters and type checkers and IDEs are not good enough. Compilers catch way more errors in advance.

Rust is also exhausting. They’re constantly adding language features and, at the same time, the runtime library remains tiny and you need 3rd party libraries for everything. Many of those are still at version 0.x (SemVer!) and you can’t rely on anything. Often times, you need the latest Rust nightly compiler.

Go is … I don’t like it. And huge binaries.

I like C as a language, but it’s too fragile. I want to have a proper HashMap every now and then.

None of the above have good GUI libraries, at least not on Linux.

And then there’s Java. This is my fractal renderer that I wrote over 17 years ago:

https://movq.de/v/fcd3c4e557/vid-1784121825.mp4

It’s fast. It has a GUI with custom widgets and those weren’t even hard to make. It still works without changing a single line of code. The source code files have timestamps from 2009 and I just noticed that the JAR file I’m using in the video was compiled in 2010.

Java as a language is relatively easy to learn and to master. There are few surprises. The source code organization with packages is good. Java API docs are clear and well written.

The JVM ramp-up times have improved considerably:

https://movq.de/v/e7314e521e/vid-1784121998.mp4

This isn’t like the Dark Ages anymore. Might even be usable for some CLI tools.

The only thing where Java really sucks is anything close-ish to the kernel. Try issuing an ioctl() … I couldn’t have made my TUI framework in Java, but then again, I wouldn’t have needed to because Swing already exists and it just works.

⤋ Read More
↳ In-reply-to » We slept in the forest. It was really great except of my mate's fucking terror dog who was barking and snarling the entire night to each and every sound. I had maybe half an hour of sleep in total. Despite that, it was pleasantly warm. Well, the night, that is. The heat was brutal during the days. Literally streams of sweat were running down on us on the way there in the evening and back in the morning.

@prologic@twtxt.net Well, 15 shows the site. On the left, I had a roll mat on a tarp. I borrowed some ā€œNVA tarpsā€ from the scouts for this trip. The scouts got them from the National People’s Army, the German Democratic Republic’s armed forces after Germany was reunited. They’re 1.75m x 1.75m in size and weigh 1.3kg, quite heavy, but super awesome. One tarp on the bottom, another one to cover up the clothes, shoes and sleeping bag in order to protect against the thaw. Finally, a mosquito net over all that, hung from a rope between two trees.

My mate just used a hammock with a mozzie net on the right hand side. The third tarp served as the luxurious bedside carpet. :-)

We sat on my second tarp to chill and enjoy the sunset and surroundings. It was nice to notice birds etc. die down. It took a really long time for the last light to fade away. Since we have a very high risk of forest fires, we of course couldn’t have a camp fire. But after all the exhaustion, I didn’t even miss it for one second.

Since we had dinner at home before leaving, all we brought were two lye rolls, two grain rolls, two brezels, some sausage and chocolate biscuits for breakfast. From the 2.5l of water, I ended up using 2l. It’s always good to have a little extra, despite the unnecessary weight. We had brekkie a few kilometers further on a bench in the shade. The first bench was already in direct sun.

Our camp site was maybe 30m to the side and a few meters down of a summit path hidden behind some trees and bushes. We were quite lucky, the other side of the hill got quite a bit of a breeze at night. We could hear the leaved treetops making much more noise behind us.

@movq@www.uninformativ.de Yes, these kind of dogs should really be strictly forbidden!

It’s not illegal if you own the forest or ask the owner. :-)

@david@daiwei.me Yeah, no clue. But my mate said the dog is disqualified from such adventures in the future. :-)

The temps were supposed to hit 14°C just before sunrise. Since we didn’t bring a thermometer, I can’t tell for sure. I was rather hot in my sleeping bag, so I had to pull out my arms every now and then. My mate’s sleeping bag was a little lighter and, unfortunately, the zipper jammed up. Since it didn’t close all the way, it felt quite a bit cold I was told in the morning. When we got up at 6ish (we said, we don’t care about time at all), it was probably already 16°C if not more. I brought a jumper, but a t-shirt was already nice enough to wear. The jumper just served as my pillow. The mercury raised by the minute then.

Yeah, I circled the spot with a biro to keep an eye on it. Until now, there’s absolutely nothing to see. Looks like I got lucky.

⤋ Read More

@GabesArcade@gabesarcade.com The no-JS part is one thing, but you also have to disable the (nowadays common) forced-HTTP-to-HTTPS-redirect, because those old browsers can’t do modern crypto. And make sure that your webserver serves the correct page even if no Host header is sent by the client. And don’t even think about serving UTF-8 or even just putting utf-8 in the content type. šŸ˜… And for the JPEG thumbnails I pass a special flag to ImageMagick so that IBM Web Explorer from OS/2 won’t trip. 🤣 And always use link rel="stylesheet" for CSS, because some browsers render inlined CSS as literal text. And … probably more that I forgot by now. šŸ˜‚

@david@daiwei.me Not sure, actually. Let’s see. Those are the ones where I still have the original disks (or have bought them on eBay again):

  • SuSE Linux 6.4 (it’s a massive 7 CD distro with a huge manual, best thing ever)
  • OS/2 2.1
  • OS/2 Warp 3 (red and blue spine because $reasons)
  • OS/2 Warp 4
  • PC DOS 7
  • MS-DOS 6.22
  • Windows 3.1
  • Windows for Workgroups 3.11
  • Windows 95 C
  • Windows 98
  • Windows NT 4 Workstation (still in the mail, though šŸ˜…)
  • Windows 2000
  • Windows XP Professional (last Windows I ever used on my private PCs)

(Plus a few ā€œclassicā€ office products as can be seen here: https://movq.de/blog/postings/2024-05-23/0/POSTING-en.html )

⤋ Read More

My mate and I hiked up the backyard mountain. We got 25°C and quite some wind, so it was actually not too terrible. The wind could have blown harder or the temps a little lower, but oh well.

I saw the squirrel’s bushy tail stick up on the forest floor in the sunlight and immediately thought of this cute little feller. Since it didn’t move at all, even when we came closer, I got irritated and reconsidered that it might actually be some kind of dried up farn. But then we also were able to see its body. Unfortunately, the squirrel ran up the tree too quickly, so all the shots are kinda crap.

At one flower spot, there were sooo many butterflies, wasps, flies, bugs and other insects. The botanic was completely crowded.

The workers were transferring logs from one log truck to the other in a parking lot. I’ve never seen this happening before. When we passed the same place on the way home, they had moved logs into a sea container. That was surprising. This semi wasn’t there on the way there. One log was probably too long and sticking out the container, so they probably had to wait for somebody to return with a chainsaw. Crazy that they’re shipping logs from here probably overseas. Why else would they put them in a sea container?

After our first break, a blackbird was really posing for us with his worm in the dark shade.

Today was my first time I ever saw a hummingbird hawk-moth (TaubenschwƤnzchen) for real. My mate photographed them many, many times before, but I never came across one myself. So, that was really special.

The forest service installed an outdoor table with two benches next to the timber lion, that was cool to see. We sat down for a few minutes and enjoyed both the view into the Fils valley and ant on the tabletop, but the sun was beating down too heavily on us, so we had to move on.

All in all, it was a very nice few hours long hike. Enjoy! https://lyse.isobeef.org/waldspaziergang-2026-07-03/

⤋ Read More
↳ In-reply-to » We’re at 39.5 °C now. Are we going to hit 40? https://movq.de/v/43544d5385/2026-06-27--14-12.webp

@movq@www.uninformativ.de Oh my! :-O We reached 38°C. It’s now down one degree.

I just got up from my two, three hours siesta. And I tell you, that was bloody amazing. Layed in bed in undies, no blanket, just some power metal in my headphones and I was sleeping like a baby. Normally, I NEED a blanket, no matter what. But this summer, it’s already the second time that I actually manage to drop off without one.

⤋ Read More
↳ In-reply-to » So I decided to change tact a bit with GoNIX and instead of trying to build apure Go browser from scratch (which I kinda of half succeeded, in at least it was able to render most static ssr sites), I've instead decided to write a new browsered using the Chromium Embedded Framework, otherwise known as CEF. So now I have a fully working browser in GoNIX šŸŽ‰ -- However since my goal is to keep GoNIX pretty lcean and mostly written in Go, I delegated the cef part(s) to an OCI container image and run that with GoNIX's box (command-line container runtime). It works great šŸ‘

@movq@www.uninformativ.de CEF turns out to be pretty easy. I had to write a bit of C and Go to bridge, but once that got going I was able to write it into my pure Go go-wayland wlui library for final rendering. The delegating the entire CEF part was a good idea though because it keeps all the complexity in a container Image, leaving me with just the Go + C stubs/interface and SHM/IPC parts.

⤋ Read More
↳ In-reply-to » I went to check on the fireflies this season. But I didn't see any. Instead lots of moths. At first, I thought it might have been still too light, but it was already dark enough for me to miss and destroy a snail shell. Bummer. Maybe it was too wet tonight. Although, it's probably just another or two weeks until my glowing friends will finally show up.

We went to the source of the river Fils this evening. I couldn’t believe it, but as I was promised, there were just 20°C. That was super nice. Almost chilly. We only met two others with their three dogs right at the beginning and had everything to our own. We enjoyed the firefly and bat show on a bench. Now back in town and the temps are cooking at 27°C. Fuck me!

It was already fairly dark for my camera, so all the photos are even more blurry than usual. Sorry!

https://lyse.isobeef.org/filsursprung-2026-06-25/

06 shows the bench in the background. The source is next to the building under the trees. 07 shows it in its full glory. 08 is the view before the glowing show began.

⤋ Read More
↳ In-reply-to » Hmmm are there really no decent Wayland (desktop) compatible image viewers that don't drag in Mesa and all it's hundreds of dependences or GCC and libgcc and it's multi-hour long build time or Rust? geez

@movq@www.uninformativ.de I looked into swagimg. That’s the thing, The latest version pulls in fark’n C++ (geez fuck) and luajit. Anything else I’ve round for Wayland depdns on Rust (wtf?!) – So I built my own in Pure Go. It’s wonderful, so simple, only ~170 lines of Go 🤣

⤋ Read More
↳ In-reply-to » I went to check on the fireflies this season. But I didn't see any. Instead lots of moths. At first, I thought it might have been still too light, but it was already dark enough for me to miss and destroy a snail shell. Bummer. Maybe it was too wet tonight. Although, it's probably just another or two weeks until my glowing friends will finally show up.

@lyse@lyse.isobeef.org Sounds lovely! (I think. Not sure about spider webs and such. šŸ˜…)

I woke up to 26°C this morning. 🄵

⤋ Read More
↳ In-reply-to » I went to check on the fireflies this season. But I didn't see any. Instead lots of moths. At first, I thought it might have been still too light, but it was already dark enough for me to miss and destroy a snail shell. Bummer. Maybe it was too wet tonight. Although, it's probably just another or two weeks until my glowing friends will finally show up.

How truly wonderful! I went out tonight and the first thing I noticed was the temperature drop. It felt actually quite pleasing. What a welcome surprise, I didn’t expect that at all. It was warmer in the forst than between the fields. The tiniest breeze helped to cool off the surroundings I think. Right now, the temperature shows 23°C. It’s supposed to reach 18°C at 5 in the morning before it rapidly shoots through the sky again.

When I left the house I even saw the very end of a nice sunset. A bat was around, too. The several thousand fireflies delivered a fantastic show. It’s such a pity that I cannot show this to you. :-(

There were many frogs or toads around. Luckily, the light tan gravel road made for a good constrast to the darker hopping amphibians. So, I spotted them just in time. No animals were harmed.

The moon was out and lit up the scenery. I was perfectly chasing my own shadow for several hundred meters on a forest road. I had the moon right in my back. That moon light shadow felt magical. <3

It must have set a new record on picking up spider webs along the way. The threads around arms and legs always feel quite yucky. People were blasting music somewhere in town. You could here that noise in the entire forest. I found that rather annoying. All street lamps are operational again, so I got already blinded right at the entrance to the town. But other than that, this was a very nice evening stroll. Totally recommended. Already looking forward to tomorrow. :-)

⤋ Read More

It’s 34°C and all the shutters are closed. Walking past the front door, I was surprised that there is light sneaking through the covered glass next to it. I somehow thought it’s already the middle of the night. :-D

⤋ Read More

The dairy farm has a new milk vending machine. The prices increased by 20%. One liter is now 1.20€ instead of 1.00€. But I don’t complain.

In a few meters of shrubs there were easily 50 butterflies. That was crazy, I’ve never seen this many in one spot. I should have taken a video.

The grain field in the beginning was looking so great. Crazy colorful and very yummy looking. I would have loved to take a bite. Or at least lie down right in the middle.

That was another great time in the outdoors. The 21°C were killing us, though. We were always glad when we reached a shady spot with a little breeze. I’m not gonna survive the 35°C later this week. :-(

https://lyse.isobeef.org/waldspaziergang-2026-06-15/

⤋ Read More
↳ In-reply-to » Oh boy, I absolutely hate this stupid trend of not writing changelogs anymore! Why the fuck would one seriously consider it to be a viable option to just let some shitty bot spew all merge requests on a goddamn GitHub release?! First of all, these merge request titles suck balls. The order of the changes in this "changelog" is completely random (well, probably merge time, which is as useless as the dick on the Pope). They are not grouped by anything at all. Additions, changes, removals, deprecations, etc. randomly mixed up in one giant list. And then "Add feature X", seventeen kilometers further down "Revert 'Add feature X'". Fuck you! Don't include this shit in the first place!

@movq@www.uninformativ.de I just ran across another thing. At least I personally couldn’t care less about CI infrastructure changes. Whether they’re using github action a or b or c or version v or w, it is not of my interest. At all. (It might be useful to estimate the supply chain attack risk, though.) If the maintainers want to include them in the changelog – and there are probably people to whom this information is crucial – it’s probably best to document CI infrastructure changes in their own section.

⤋ Read More

Show HN: I built 80 mini-games using Fable before it was shut down
Dear Hacker News,

I’m kindly asking for your participation in the open beta for my AI-managed mini-games website. Thank you in advance!

For a limited time window, I’m setting the all-free feature flag to true. I hope you have a lot of fun exploring the AI’s sense for games! Here and there, I tweaked it to help with visual consistency.

I would be deeply grateful if you opted into analytics.

$2,300 in API tokens…

Cheers!

Comments URL: [https://news.ycombinator.c … ⌘ Read more

⤋ Read More

Got absolutely jack and sick of all the fucking useless bots, C&C and shitā„¢ hitting my Git server tonight 🤬 So I sat down and built a lightweight version of Anubis, called caddy-pow. So now going forward, you’ll have to (sorry) have a HS-enabled browser to hit git.mills.io which will hopefully make most (if not all) bots just go the fuck away šŸ¤¦ā€ā™‚ļø #Hostile #Web

⤋ Read More
↳ In-reply-to » @lyse Two emails. šŸ˜… One person asking for the source code, and the author of wcwidth (the library I’m using) contacted me to provide some input. šŸ‘Œ

@movq@www.uninformativ.de Great to be asked for feedback! I just noticed that the first wcwidth version was derived from Markus Kuhn’s C code. I came across him in my ISO 8601 and RFC 3339 endeavors the other day. https://www.cl.cam.ac.uk/~mgk25/iso-time.html What a surprise. :-)

⤋ Read More

Show HN: Formally verified polygon intersection – Opus 4.8 oneshots, prev failed
To my knowledge, this is the first formally verified implementation of an intersection algorithm for polygons.

The experience of working with AI agents on this project changed a lot with recent model releases, as I describe in the readme. Opus 4.8 is able to provide algorithm implementation with formal proof in one shot, whereas previous models required me to provide proof strategies in multiple steps.

Trust in the correctness c … ⌘ Read more

⤋ Read More

Oh boy, it was bloody humid this morning. Just around 20°C when we left, but climbing rapidly. The flow of air when walking was okay, but as soon as we stopped, streams of sweat were pouring down on us. Luckily, it was cloudy, but the lack of wind was bad. Now, the sun is out, 29°C will be reached in an hour and I’m glad that the house is still cool. It will be a different story in a few weeks or months. Not looking forward to that at ll.

On the bright side, we saw the first tadpoles of the year and an also first, but sadly dead slow worm that probably some bird dropped on a bench next to the fountain. The fly was stuck to its feast and also cactus. The municipality fixed the railing nicely and we came across a giant patch of great looking fire bugs on the summit.

All in all, a successful stroll through the woods but for the humid heat.

https://lyse.isobeef.org/waldspaziergang-2026-05-30/

⤋ Read More
↳ In-reply-to » @movq Thanks. I noticed the <updated> of the feed, too. But for some reason, some articles were suddenly marked as new.

Aha, yesterday’s newly added support for LC_TIME to render localized timestamps also broke the feed parsing with my LANG=de_DE.UTF-8 and LC_CTYPE=de_DE.UTF-8 environment. :-)

Atom feeds make use of RFC 3339 timestamps. They are first converted into RFC 882 timestamp representation, which is the one that RSS feeds use. However, this conversion now results in localized RFC 882 timestamps, which cannot be parsed into Unix timestamp numbers via curl_getdate(…). I bet that it doesn’t know about the localization at all and expects English month and weekday names. Looking at its docs, I reckon that function was selected because of its myriad of supported timestamp formats: https://curl.se/libcurl/c/curl_getdate.html RFC 3339 is not included, though, hence the transformation up front.

The intermediate Item objects in the parser domain use std::string for the timestamp representation. This isn’t all that silly, because Newsboat supports all sorts of different feed formats with different timestamp formats. These RFC 883 timestamps are centrally parsed into time_t.

Speaking of time: It’s time to go to bed after this late bug hunting fun. :-)

⤋ Read More

We’re currently at about 28-30°C, but the relative humidity is at a crazy low level of 20%. 😳 This actually feels pretty nice. If it only were always like that …

⤋ Read More

@lyse@lyse.isobeef.org AI result ahead, feel free to ignore.

I ā€œaskedā€ the AI at work the same question out of morbid curiousity. It ā€œsaidā€ that SQLite converts that integer to floating point internally on overflows and then, when converting back, the x86 instruction cvttsd2si will turn it into 0x8000000000000000, even if the actual floating point value is outside of that range. So, yes, it allegedly actually saturates, as a side effect of the type conversion.

I couldn’t find anything about that automatic conversion in SQLite’s manual, yet, but an experiment looks like it might be true:

sqlite> select typeof(1 << 63);
╭─────────────────╮
│ typeof(1 << 63) │
ā•žā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•”
│ integer         │
╰─────────────────╯

sqlite> select typeof((1 << 63) - 1);
╭──────────────────────╮
│ typeof((1 << 63) ... │
ā•žā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•”
│ real                 │
╰──────────────────────╯

As for cvttsd2si, this source confirms the handling of 0x8000000000000000 on range errors: https://www.felixcloutier.com/x86/cvttsd2si

The following C program also confirms it (run through gdb to see cvttsd2si in action):

<a href="https://txt.sour.is/search?q=%23include">#include</a> <stdint.h>
<a href="https://txt.sour.is/search?q=%23include">#include</a> <stdio.h>

int
main()
{
    int64_t i;
    double d;

    /* -3000 instead of -1, because `double` can’t represent a
     * difference of -1 at this scale. */
    d = -9223372036854775808.0 - 3000;

    i = d;
    printf("%lf, 0x%lx, %ld\n", d, i, i);

    return 0;
}

(Remark about AI usage: Fine, I got an answer and maybe it’s even correct. But doing this completely ruined it for me. It would have been much more satisfying to figure this out myself. I actually suspected some floating point stuff going on here, but instead of verifying this myself I reached for the unethical tool and denied myself a little bit of fun at the weekend. Won’t do that again.)

⤋ Read More

@rdlmda@rdlmda.me most of our conversations used to be about twtxt, I am not going to lie. Lately? Not so much. It turns out (a) we don’t need a longer hash, (b) we don’t care so much about changing addressing, and Ā© I am just Bender, what else can I say? :-D :-P

⤋ Read More

@kiwu@twtxt.net Sorry, I have two functional brain cells left in my brain, and I’m not sure if you’re asking What am I putting in it, as in a) when making some? Or as in b) when consuming/serving it?

a) 1L milk (0.5L cold + 0.5L warm @ ~45 °C), a bit of store bought yogourt for the bacteria, sugar and vanilla extract.
b) Most of the time, as is. But I’ve tried once: adding in a couple of diced strawberries that have been sitting in granulated sugar for a couple of minutes, until they’d released enough syrup, and I think I might’ve caught a new addiction on top of the original one.

What do you put in yours?

⤋ Read More
↳ In-reply-to » @lyse The sun makes it look nice and cosy and warm, but it wasn’t, right? šŸ˜…

@movq@www.uninformativ.de I’ve got the same problem that you had the other day: finding past temperature data. But yeah, it looked much warmer than it actually was. Maybe 5°C? Possibly less when I found myself in the snow- and rainstorm in the end.

With the wind, my fingers were frozen. I should have worn gloves. Without them, I could only put my hands in the pockets of my jacket. That didn’t help much, though, because I frequently stopped to take yet another photo, so they cooled off again right away. :-D

Balancing the big/long, closed umbrella under my arm while I had my hands burried was also a little tricky.

First world problems. :-)

⤋ Read More
↳ In-reply-to » @lyse I don’t know a number (wait, why can’t I google a Wetterbericht but only a Wettervorhersage?!), but it was enough for public transportation to shut down. šŸ˜… I think I saw around five trucks on the side of the road who couldn’t continue, too icy. Some cars stranded.

@movq@www.uninformativ.de Oh, so just half a millimeter then! :-D That’s plenty these days for everything to shut down, I’m afraid. If only the same Ć©lan was still in action as back then:

Image

And here I am watching Mattias Bjƶrnstrƶm’s gas pedal freezing at full throttle around -40°C. Well, falls apart and gets stuck.

https://www.youtube.com/watch?v=MLgmV15XeSY

I’m not an expert on this subject at all, but I reckon an automatic in addition with all its sensors is much worse than a manual one. All wheel drive, studded tires and diff locked is what one wants in icy situations. :-D

⤋ Read More
↳ In-reply-to » Just showelled 20cm of snow for half an hour, fuck me! I'm totally shattered. But it's worth it. Looks so beautiful. And all the disbelief and terror in the eyes of the people. Well, that's what our winters were like three decades ago. I'm just glad that I can work from home.

I’ve got sore muscles. The sticky snow couldn’t be pushed, it had to be laborously cleared shovel by shovel. :-D

In my lunch break, I went on a short stroll. Oh boy, walking through deep damp snow is exhausting! There were sections with easily 30 centimeters and more. Some big wind drifts had piled up. Despite melting off quickly in the 4°C, especially turning the trees brown again, the white landscape still looks so nice. I’m glad these road marking sticks finally came in handy for the snow plow guys. :-) The black and orange stripes are 30 cm high.

https://lyse.isobeef.org/waldspaziergang-2026-01-26/

That’s probably it. There’s no significant snowfall announced for the rest of the week and temperatures are supposed to stay in the 2-4°C range by day.

⤋ Read More
↳ In-reply-to » @lyse Ohh, Winter Wonderland. Lovely!

@movq@www.uninformativ.de I was also extremely surprised and couldn’t believe it myself. But around the hair were definitely two, three millimeters of ice with a bunch of snow on top. I couldn’t simply brush it off, the hair were all frozen together. Back in the house, it took maybe three minutes to melt the solidified white stuff and free up and disconnect the individual hair. Crazy.

Yeah, 0°C in town, maybe -2°C on the summit. It definitely didn’t feel all the cold, but I came prepared with a few layers of cloth.

⤋ Read More
↳ In-reply-to » What a beautiful, beautiful 0°C Sunday arvo and evening! The weather forecast delayed the snow by the minute. An hour or so after it finally started very, very lightly, I headed off for the woods to check out the lake again. Unfortunately, with the fresh snow layer, the crazy wild surface texture of the ice sheet wasn't visible anymore. But it brought some other nice views and photo opportunities.

@lyse@lyse.isobeef.org Ohh, Winter Wonderland. Lovely!

Never had frozen hair. 😳 With just around 0°C? šŸ¤”

⤋ Read More

What a beautiful, beautiful 0°C Sunday arvo and evening! The weather forecast delayed the snow by the minute. An hour or so after it finally started very, very lightly, I headed off for the woods to check out the lake again. Unfortunately, with the fresh snow layer, the crazy wild surface texture of the ice sheet wasn’t visible anymore. But it brought some other nice views and photo opportunities.

I initially thought that I just go for a quick turn. However, with the snowfall a wee bit increasing I was hooked and kept going. Visibility was poor, but the snow blankets just looked too stunning. The road surfaces were quite slippery, so I often just walked alongside the pathways. On downhill slopes I had some good fun sliding down the road on my feet. With varying success. Luckily, I managed not to fall.

On the summit of the mountain the twigs had those absolutely magnificently looking windblown crystal coverings. Awwwwwww! They never get old. It was already getting dark, so the camera was tired and wanted to sleep. The snow program then made use of the flash and I’m quite pleased with how these shots turned out.

Two deer crossed the road in front of me and ran into the woods, that was sight for sore eyes. Although I felt bad that they had to flee from me in this white terrain. By the time I got home, the snow had accumulated around eight centimeters in height, even in town down in the valley. Walking on this fresh snow is just amazing. And I love the sound it makes. Today, the snow consistency must have been just right, because the crushing sound was really loud.

I cannot recall that I had frozen hair and beard before, but today, there was a thick ice buildup. In case I had, it was definitely never this much. Felt really cool.

Enough of this preliminary skirmishing, there ya go: https://lyse.isobeef.org/waldspaziergang-2026-01-25/

⤋ Read More

My mate and I went on a hike earlier. Yesterday, we had lovely 12°C. But today, it was down to at most 4°C. Oh well. At least the sun was out and and there was just a tiny bit of wind. We knew upfont that scarf, beanie and gloves were mandatory. Especially at the more windy sections like up top the hills. The view was absolutely terrible, but we made the best of it.

With the sun shining on us during our lunch break at a forest edge bench, we still enjoyed the lookout in 01. I brought some old carpet scraps to sit on and was happily surprised that they isolated even better than I had hoped for. Some hot tea helped us staying warm.

After five hours we returned just after sunset. I’m quite tired now, completely out of shape.

https://lyse.isobeef.org/waldspaziergang-2026-01-17/

⤋ Read More
↳ In-reply-to » Btw @movq you've inspired me to try and have a good 'ol crack at writing a bootloader, stage1 and customer microkernel (µKernel) that will eventually load up a Mu (µ) program and run it! 🤣 I will teach Mu (µ) to have a ./bin/mu -B -o ... -p muos/amd64 ... target.

@prologic@twtxt.net I’d love to take a look at the code. šŸ˜…

I’m kind of curious to know how much Assembly I need vs. How much of a microkernel can I build purely in Mu (µ)? šŸ¤”

Can’t really answer that, because I only made a working kernel for 16-bit real mode yet. That is 99% C, though, only syscall entry points are Assembly. (The OpenWatcom compiler provides C wrappers for triggering software interrupts, which makes things easier.)

But in long mode? No idea yet. šŸ˜… At least changing the page tables will require a tiny little bit of Assembly.

⤋ Read More

Vacation: Doing crazy things like C on DOS, lots of Rust, bare-metal assembly code, everything is fine.

Back at work: How the fuck do I move an email in this web mail program? Am I stupid? šŸ˜®ā€šŸ’Ø

⤋ Read More
↳ In-reply-to » I came across this on "Why Is SQLite Coded In C", which I found interesting:

@bender@twtxt.net They’re not completely impossible, but C makes it much easier to run into them. I think the key point is that in those ā€œsafeā€ languages, buffer overflows are caught and immediately crash the program (if not handled otherwise) instead of silently corrupting memory, not being noticed right away and maybe only later crashing at a different location, where it can be very hard to find the actual root cause. This is a big improvement in my book.

Some programmers are indeed horrible. I’m guilty myself. :-)

I like the article.

⤋ Read More

I came across this on ā€œWhy Is SQLite Coded In Cā€, which I found interesting:

ā€œThere has lately been a lot of interest in ā€œsafeā€ programming languages like Rust or Go in which it is impossible, or is at least difficult, to make common programming errors like memory leaks or array overruns.ā€

If that’s true, then encountering those issues means the programmer is, simply, horrible?

⤋ Read More

Mu (µ) is now getting much closer to where I want it to be, it now has:

  • A process stdlib module (very basic, but it works)
  • An ffi stdob module that supports dlopen / dlsym and calling C functions with a nice mu-esque wrapper ffi.fn(...)
  • A sqlite stdlib module (also very basic) that shows off the FFI capabilities

šŸ˜…

⤋ Read More
↳ In-reply-to » @movq That's cool! I also like the name of your library. :-) I assume you made the thing load quickly, didn't you?

The baseline here is about 55 ms for nothing, btw. Python ain’t fast to start up.

$ time python -c 'exit(0)'

real    0m0.055s
user    0m0.046s
sys     0m0.007s

⤋ Read More

My little toy operating system from last year runs in 16-bit Real Mode (like DOS). Since I’ve recently figured out how to switch to 64-bit Long Mode right after BIOS boot, I now have a little program that performs this switch on my toy OS. It will load and run any x86-64 program, assuming it’s freestanding, a flat binary, and small enough (< 128 KiB code, only uses the first 2 MiB of memory).

Here I’m running a little C program (compiled using normal GCC, no Watcom trickery):

https://movq.de/v/b27ced6dcb/los86%2D64.mp4

Image

Next steps could include:

  • Use Rust instead of C for that 64-bit program?
  • Provide interrupt service routines. (At the moment, it just keeps interrupts disabled.)

⤋ Read More
↳ In-reply-to » Advent of Code 2025 starts tomorrow. šŸ„³šŸŽ„

I rewrote all my solutions in Rust (except for day 10 part 2) and these are the runtimes on my i7-3770 from 2013 (this measures CLOCK_PROCESS_CPUTIME_ID, not wallclock):

day01/1 [      00.000501311] Result: 1066
day01/2 [      00.000400298] Result: 6223
day02/1 [      00.000358848] Result: 12586854255
day02/2 [      00.000750711] Result: 17298174201
day03/1 [      00.000106537] Result: 17405
day03/2 [      00.000404632] Result: 171990312704598
day04/1 [      00.000257517] Result: 1626
day04/2 [      00.007495342] Result: 9173
day05/1 [      00.000237212] Result: 505
day05/2 [      00.000142731] Result: 344423158480189
day06/1 [      00.000229629] Result: 4076006202939
day06/2 [      00.000279552] Result: 7903168391557
day07/1 [      00.000204422] Result: 1622
day07/2 [      00.000283816] Result: 10357305916520
day08/1 [      00.029427421] Result: 84968
day08/2 [      00.028089859] Result: 8663467782
day09/1 [      00.000310304] Result: 4764078684
day09/2 [      00.015512554] Result: 1652344888
day10/1 [      00.000796663] Result: 375
day10/2 [      --.---------] Result: 15377 (Z3)
day11/1 [      00.000416804] Result: 753
day11/2 [      00.000660528] Result: 450854305019580
day12/1 [      00.000336081] Result: 577
day12/2 [      00.000000695] Result: no part 2

A little under 90 ms total.

On my Samsung NC10 netbook from 2011 with its Intel Atom N455 at 1.6 GHz:

day01/1 [      00.003771326] Result: 1066
day01/2 [      00.003267317] Result: 6223
day02/1 [      00.003902698] Result: 12586854255
day02/2 [      00.006659479] Result: 17298174201
day03/1 [      00.000747544] Result: 17405
day03/2 [      00.002737587] Result: 171990312704598
day04/1 [      00.001263892] Result: 1626
day04/2 [      00.044985301] Result: 9173
day05/1 [      00.001696761] Result: 505
day05/2 [      00.000978962] Result: 344423158480189
day06/1 [      00.001387660] Result: 4076006202939
day06/2 [      00.001734248] Result: 7903168391557
day07/1 [      00.001295528] Result: 1622
day07/2 [      00.001809659] Result: 10357305916520
day08/1 [      00.277251443] Result: 84968
day08/2 [      00.284359332] Result: 8663467782
day09/1 [      00.003152407] Result: 4764078684
day09/2 [      00.071123459] Result: 1652344888
day10/1 [      00.005279527] Result: 375
day10/2 [      --.---------] Result: 15377 (Z3)
day11/1 [      00.003273342] Result: 753
day11/2 [      00.005139719] Result: 450854305019580
day12/1 [      00.002857552] Result: 577
day12/2 [      00.000004421] Result: no part 2

A little over 700 ms total.

I like this. You get performance that’s more or less in the ballpark of C, but without the footguns.

⤋ Read More

Day 7 was pretty tough, I initially ended up implementing an exponential in both time and memory solution that I killed because it was eating all the resources on my Mac Studio, and this poor little machine only has 32GB of memory (I stopped it at 118GB of memory, swapping badly!), This is what I ended up doing before/after:

  • Before: Time O(2^k Ā· L), memory O(2^k), where k is the number of splitters along a reachable path and L is path length. Exponential in k.
  • After: Time O(RĀ·C) (or O(RĀ·C + s) with s split events), memory OĀ©, where R = rows, C = columns. Polynomial/linear in grid size.

⤋ Read More
↳ In-reply-to » Advent of Code 2025 starts tomorrow. šŸ„³šŸŽ„

FWIW, day 03 and day 04 where solved on SuSE Linux 6.4:

Image

Image

Performance really is an issue. Anything is fast on a modern machine with modern Python. But that old stuff, oof, it takes a while … šŸ˜…

Should have used C or Java. 🤪 Well, maybe I do have to fall back on that for later puzzles. We’ll see.

⤋ Read More

Fark me šŸ¤¦ā€ā™‚ļø I woke up quite late today (after a long night helping/assisting with a Mainframe migration last night fork work) to abusive traffic and my alerts going off. The impact? My pod (twtxt.net) was being hammered by something at a request rate of 30 req/s (there are global rate limits in place, but still…). The culprit? Turned out to be a particular IP 43.134.51.191 and after looking into who own s that IP I discovered it was yet-another-bad-customer-or-whatever from Tencent, so that entire network (ASN) is now blocked from my Edge:

+# Who: Tentcent
+# Why: Bad Bots
+132203

Total damage?

$ caddy-log-formatter twtxt.net.log | cut -f 1 -d  ' ' | sort | uniq -c | sort -r -n -k 1 | head -n 5
  61371 43.134.51.191
    402 159.196.9.199
    121 45.77.238.240
      8 106.200.1.116
      6 104.250.53.138

61k reqs over an hour or so (before I noticed), bunch of CPU time burned, and useless waste of my fucking time.

⤋ Read More

I had no meetings this arvo, so I made an appointment with the woods in my extended lunch break. The 6°C warm sun was out all day long and there was only a very light breeze. So, a very nice autumn day.

When I stopped to take a photo in the forest, a deer behind me took off into the woodland. I didn’t see it before. Also, I came across one or the other clearing. Sadly, it’s all commercial timberland here. Luckily, in a year or so, when nature slowly took over and reclaimed some spots, the apocalyptic sites are then looking a bit more decent again.

Cleaning of the ruin walls on my backyard mountain slowly takes shape. They made some progress and moved on to the other section. The flag on top is halfway disintegrated again, all the yellow half is completely gone. I’m wondering if they just stop replacing it at some point in time. But probably not.

Enjoy! https://lyse.isobeef.org/waldspaziergang-2025-11-19/

⤋ Read More