koldfront

D-A-D turns 40 - exhibition #d-a-d #disneylandafterdark

🕘︎ - 2024-02-21
Columns outside the Danish National Museum decorated with pictures of the band D-A-DColumns outside the Danish National Museum decorated with pictures of the band D-A-D, other angle

The Danish National Museum has started advertising the upcoming exhibition about Denmark during the last 40 years seen through the band D-A-D, which turns 40 the day the exhibit opens, March 3rd, 2024.

The weekend after the opening there is a series of talks at the museum as well!

I ❤️ Free Software #free software #ilovefs

🕠︎ - 2024-02-14
I Love Free Software sticker - Use Study Share Improve

GNU Emacs, Debian GNU/Linux, Linux, Gnus, X.Org, Postfix, GHC, PostgreSQL, OpenSSH, Firefox, Apache, ejabberd, Dovecot, git, GnuPG, XMonad, jabber.el, Magit, rdiff-backup, LaTeX, Gimp, VLC, Syncthing, Sakura, chrony, Fail2ban, WeeWX, DejaVu fonts, ripgrep, lirc, MPD Flameshot, lots of GNU, the list goes on and on - thanks everybody!

Fallen Leaves (2023) #movies

🕧︎ - 2024-01-28
Cinema poster for Koulleet Lehdet (Fallen Leaves) by Aki Kaurismäki, showing the to main characters sitting in a cinema

Caught the early Sunday screening of Kuolleet Lehdet (Fallen Leaves) by Aki Kaurismäki today.

The movie is good - good is the movie.

Well worth going to the cinema for.

Improvements in HTML/CSS #html #css

🕗︎ - 2024-01-17

I kind of stopped following the HTML and CSS standards quite a while back. Sort of when XHTML and CSS2 were the newest stuff.

Recently I learned about CSS grids, which seemed nice, although I haven't used that on a public site yet.

I stumbled over the blog-post "Making my website faster" a couple of days ago, and it had some stuff I want to remember without having to read the entire thing again, so I'm just going to list them here:

    <link rel="preload" as="ROLE" crossorigin href="URL">

in <head> before anything else, eg for fonts; URL must match the entry in the CSS file exactly.

Lazy loading images using loading="lazy", and <details>:

    <details>
      <summary>This is a big GIF, you have been warned!</summary>
      <img src="big-gif.gif" loading="lazy" alt="You're not missing much, really">
    </details>

Bubble sort, recursive, in Haskell #haskell #programming

🕘︎ - 2024-01-14

I asked an LLM to spit out an implementation of recursive bubble sort and it kept regurgitating code that didn't work.

That made me want to write a recursive bubble sort in Haskell. It took me a, to be honest slighly embarrassing long, while to come up with a way to write it, so I'm putting it here:

bubbleSort :: [Int] -> [Int]
bubbleSort (x:xs) | bubble (x:xs) == (x:xs) = x:xs
                  | otherwise               = bubbleSort (bubble (x:xs))

bubble :: [Int] -> [Int]
bubble (x:xs) | null xs      = [x]
              | x <= head xs = x : bubble xs
              | otherwise    = head xs : bubble (x : tail xs)

The first function is the ending condition: if bubbling doesn't change the list, we are done. Otherwise, bubble the list and test again.

Bubbling is simple as well, if the first element is smaller than or equal to the second element, keep the first element and bubble the rest of the list.

On the other hand, if the first element is larger than the second, the resulting list is the second element followed by bubbling the first element and the rest of the list.

Here is a Haskell snippet to try it out:

main :: IO ()
main = print (bubbleSort [5, 4, 8, 1, 3, 2, 9, 7])

olduse.net keeps on keeping on #olduse.net

🕐︎ - 2024-01-01

A new year, a new port added to olduse.net!

Yes, you can now follow the beginning of Usenet delayed by 44, 43, 42, 41, or 40 years.

The replay started in 2022, and it'll keep rolling on.

Cross compiling for OpenWrt/LEDE mips_24kc_nomips16 #crosscompiling #openwrt #printing

🕕︎ - 2023-12-17

Recently I looked at OpenWrt's list of recommended hardware and when I to my surprise saw an access point available in local webshops on the list, a Xiaomi AX3200, I treated myself to one.

What I didn't think to check was whether the new access point has a usb port.

It doesn't.

Why does that matter? Well, I have this setup where when I tell my computer to print something, it tells the access point to toggle a usb controlled relay, which turns on the printer.

It's pretty neat, if I may say so myself.

However switching from the old access point to the new would leave me without somewhere to plugin and control the usb relay.

But wait, the Genexis Pure ED500 VDSL router I have that connects to the internet, it has a usb port, and it runs a customized version of OpenWrt, maybe I can use that?

Unfortunately it runs a veeery old version of OpenWrt:

* iopsysWRT Version    = 4.3.6
* LEDE/OpenWRT Version = Reboot (SNAPSHOT, r0+8411-adc4ef5)
* Linux Kernel Version = 4.9.109+

running opkg update on it just gave a whole bunch of "404 Not found". And I need the crelay package.

After searching for a while, I couldn't find it anywhere online. I could find one build for mips_24kc, but not for mips_24kc_nomips16 - there are very few hits for "nomips16".

I tried the package for mips_24kc any way, and after installing the needed libraries: "Bus error".

Ok, so I probably need to (cross) compile it myself. I posted a cry for help on the fediverse, but there were no takers.

Armed with the information from /etc/openwrt_release:

DISTRIB_ID='LEDE'
DISTRIB_RELEASE='SNAPSHOT'
DISTRIB_REVISION='r0+8411-adc4ef5'
DISTRIB_CODENAME='reboot'
DISTRIB_TARGET='intel_mips/xrx500'
DISTRIB_ARCH='mips_24kc_nomips16'
DISTRIB_DESCRIPTION='LEDE Reboot SNAPSHOT r0+8411-adc4ef5'
DISTRIB_TAINTS='no-all busybox override'

I went searching again, and I found a guide "Cross compiling" on the OpenWrt website, which says to start by setting up the build system as described on "Build system usage".

After a couple of false starts, this is what I did:

  • Checked out the lede-17.01 branch
  • In make menuconfig choose the architechture that looked like it might be mips_24kc, switched to big endian, turned on advanced options, turned off mips16.
  • Fixed the various problems in building tools and toolchain:
    • Fixed tools/m4 compilation by removing && SIGSTKSZ < 16384 in c-stack.c.
    • Fixed tools/mklibs compilation by adding HOST_CPPFLAGS += -std=gnu++98 to the Makefile, as seen in "tools/mklibs: Fix compile with GCC 11" on the openwrt-devel mailing list.
    • Fixed toolchain/gcc compilation by adding HOST_CXXFLAGS += -std=gnu++98 and CFLAGS_FOR_TARGET="$(TARGET_CFLAGS)" in common.mk
    • Fixed cmake-3.7.1 compilation by adding #include <limits> in cmStandardIncludes.h as indicated in "‘numeric_limits’ is not a member of ‘std’" on StackOverflow.
  • Followed the instructions on "Building a single package" to build crelay.
  • Unpacked the crelay, libftdi1, and hidapi ipk's and copied the files to the router.

Success!

Now I can switch from the old access point to the new, and still have printing working as smoothly as before.

Lille langebro

Monday

seistrup.dk (25).

Thursday

Leap year.