Sun Mon Tue Wed Thu Fri Sat
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
|
Expo by Night × Gogbot
This evening, I went to Expo by Night × Gogbot. There were some projections from
PLANETART, who also organizes the
GOGBOT Festival, I saw the exhibition Paviljoen: Cross Media Design with works by students from the AKI. It was not clear who made which works. I did not attend the
opening presentation. (They are often rather boring.) I took a photograph of
the 23 names on the window outside. I can hardly believe that all those
students are in the exhibition. The following, I figured out:
Authum crocus
On our walk, we sae the flowers shown below. Pl@ntNet gives it a 44% chance for being a Colchicum lusitanum, however that species is not known to grow in the
Netherlands. This makes it more likely that it is a Colchicum autumnale, which is still rather rare in the Netherlands. On
some map of observations
I do see a red circle near where we live.
Niño 3.4
Niño 3.4 stands for the are around the equator in the Pacific Ocean from 120 to 170° West and 5° South and North of the
equator, which is an area of about 6 million square kilometer. The average
surface temperature is taken as an indicator for how strong the
El Nño is. In last week it is showing temperatures higher than
ever on the Daily Sea Surface Temperature of the Climate Reanalyzer website. The
temperature is getting close to 30° Celsius, which is 1.2° higher than
the last record temperature in 2015 and 3.3° higher than the average in
the years 1991 to 2020. The current El Nñno event is expected to peak around November or
December. The Daily Sea Surface Temperature, World (the whole world between 60°
South and North) is not at a record high but still higher since measurements
started in 1981. Surprisingly, the Subpolar North Atlantic area is cooler than average, while being a bit
higher during the past summer.
Some testing with dividing the page in three panels that can be resized.
Started with some ideas from Google AI and then figured out a simpler method.
I have not yet figured out how to get it working on touch devices.
The HTML source for the above is:
<style>
.window-container { display: flex; height: 100pt; overflow: hidden; }
.scroll-window { background: white; padding: 10px; overflow-y: auto; box-sizing: border-box; }
#left-window { width: 33%; min-width: 100px; }
#mid-window { width: 33%; min-width: 100px; }
#right-window { flex: 1; min-width: 100px; }
.resizer { width: 4px; margin-left: 9px; margin-right: 9px; background: #999; cursor: col-resize; transition: background 0.2s; }
.resizer:hover { background: #444; }
</style>
<script>
function initResize1(e) {
window.addEventListener('mousemove', StartResize1);
window.addEventListener('mouseup', StopResize1);
}
function StartResize1(e) {
const leftWindow = document.getElementById('left-window')
const midWindow = document.getElementById('mid-window')
leftWindow.style.width = (leftWindow.clientWidth + e.movementX) + "px"
midWindow.style.width = (midWindow.clientWidth - e.movementX) + "px"
}
function StopResize1() {
window.removeEventListener('mousemove', StartResize1);
window.removeEventListener('mouseup', StopResize1);
}
function initResize2(e) {
window.addEventListener('mousemove', StartResize2);
window.addEventListener('mouseup', StopResize2);
}
function StartResize2(e) {
const midWindow = document.getElementById('mid-window')
midWindow.style.width = (midWindow.clientWidth + e.movementX) + "px"
}
function StopResize2() {
window.removeEventListener('mousemove', StartResize2);
window.removeEventListener('mouseup', StopResize2);
}
</script>
<div class="window-container">
<div id="left-window" class="scroll-window">
<b>Left Panel</b>
<p>Drag the grey bar to the right to see me grow and the middle window shrink smoothly.</p>
</div>
<div id="dragBar1" class="resizer" onmousedown="initResize1()"></div>
<div id="mid-window" class="scroll-window">
<b>Middle Panel</b>
<p>Drag the grey bar to the left to see me grow and the left window shrink smoothly.</p>
<p>Drag the grey bar to the right to see me grow and the right window shrink smoothly.</p>
</div>
<div id="dragBar2" class="resizer" onmousedown="initResize2()"></div>
<div id="right-window" class="scroll-window">
<b>Right Panel</b>
<p>I will scale dynamically based on whatever room is left over over here.</p>
</div>
</div>
FÆES-›!T at Black Brick
At end of the afternoon, I went in to the city. The sun was shining and it was
warm authem weather, just over 20° Celsius, I guess. I bought a soft-serve
ice cream and walked to Black Brick to
see the exhibition that is part of the
FÆES-›!T, the yearly Sustainable Fashop Art Event. The
exhibition consisted of:
- Hoeveel kun jij dragen (Dutch for How much can you carry?)
by Emma Wijnsma
- Between Delicate and Violent by Şirin Bahar Demirel
- HIDE by
Adele Zavagno. It
consist of:
- A garment archetype by Adele Zavagno.
- Plastic Nostalgia by Patrick
- Heritage Canvas by Thuy
- Keepsake by Xoen Boerk
- Forgotten Canvas by Debbie
Building live-bootstrap
This Saturday, I am going to give a talk with the title Fast Linux bootstrapping at Hackfest. For that I
needed to know how long it takes to run live-bootstrap up to and including TCC-0.9.27. The README is not
completely clear how to do it with chroot on Linux. I started with
the following commands:
git clone https://github.com/fosslinux/live-bootstrap
cd live-bootstrap
git submodule update --init --recursive
I editted the file steps/manifest and removed everything after the
line build: tcc-0.9.27. The reason to do it at this point is to
reduce the number of files being downloaded. I continued with the commands:
./download-distfiles.sh
cp -r -t rootfs seed/stage0-posix/*
cp -r -t rootfs seed/*
cp -r steps rootfs
mkdir rootfs/external
cp -r distfiles rootfs/external
(The README does not mention that distfiles should be copied into
the directory external.) I created the file
rootfs/steps/bootstrap.cfg with the content:
ARCH=amd64
ARCH_DIR=/AMD64
FORCE_TIMESTAMPS=False
CHROOT=True
UPDATE_CHECKSUMS=False
JOBS=1
SWAP_SIZE=0
FINAL_JOBS=1
INTERNAL_CI=False
INTERACTIVE=False
BARE_METAL=False
DISK=sda1
KERNEL_BOOTSTRAP=False
BUILD_KERNELS=False
CONFIGURATOR=False
MIRRORS=file://
MIRRORS_LEN=1
Then issue the command:
time sudo chroot --userspec=${USER}:${USER} rootfs /bootstrap-seeds/POSIX/AMD64/kaem-optional-seed
After 13 minutes and 37 seconds, this terminated with the error:
+> tcc-mes -c -D HAVE_CONFIG_H=1 -I include -I include/linux/x86_64 -o unified-libc.o unified-libc.c
assert fail: 0
/usr/bin/tcc-mes abnormal termination, signal number = 11
Then I remembered that the 64 bits Intel x86 target (AMD64) is not supported. I
decided to try to build the 32 bits target. For this I changed the first two
lines of the file rootfs/steps/bootstrap.cfg into:
ARCH=x86
ARCH_DIR=/x86
and executed the commands:
rm -r rootfs/steps/mes-0.27.1/build
rm -r rootfs/steps/tcc-0.9.26/build
rm -r rootfs/usr
rm -r rootfs/tmp
rm configurator
rm script-generator
rm seed-full.kaem
time sudo chroot --userspec=${USER}:${USER} rootfs /bootstrap-seeds/POSIX/x86/kaem-optional-seed
This finished succesful in 11 minutes and 38 seconds, which is a bit faster
than building for the AMD64 target.
Duplicating code
In software engineering there is a rule to avoid
duplicated code. An important reason is that if you duplicate some code and
something has to be changed about it, it can happen that the change is made to
just one of the copies. But there are cases where duplicating code is an option
to consider. Sometimes when I am faced with such a situation, it can take me
several hours to consider the option to duplicate the code. If you have
written some function to interact with a global object and you are now faced
with the situation that you also have to interact with another similar global
object. To avoid code duplication you can extend all functions with an
additional argument to specify with which of the two objects it should interact
with. But in the situation that one part of the software always interacts with
one of the objects and that another part always interacts with the other
object, duplicating the code might be an option to consider, because the
value of the additional parameter is always constant from the location where
the functions are called. Especially in an environment that is time critical,
passing an additional parameter could have a some impact on the performance
that could potentially be significant. In some cases, adding a new parameter
to a function may also imply you have to add code to check if the parameter
has a valid value.
October 7: When developing in C, the C-preprocessor can be used to
produce duplicate functions by including a file after some macro symbols have
been defined.
23.7° Celsius
The temperature at Twente Airport has gone up to
23.7° Celsius, which breaks the previous record of 22.4°C on this date
in 1977.
Hackfest 2026
I went to Hackfest 2026 in
Enschede. It was held at a different location then last year. It was at Sickhouse. I
attended all the talks and in the breaks I looked around the various stands.
At 12:15, I listened to the talk Introduction MsshCore by FrankkieNL.
He showed how he uses a WisMesh Tag to connecto to the MeshCore through an
app on his smart phone using Bluetooth. At 13:15, I listened to the talk
BadgeTalk by Anne Jan Brouwer about
all the badges that he was involved with in and about Badge.Team. At 14:15, I gave the talk Fast
Linux bootstrapping. Afterwards, some people remarked that I maybe
should have explained bootstrapping a bit earlier in the talk. At 15:15, I listened to the talk
Printing in Seconds: Volumetric 3D Printing by Annalise Anspach. Quite interesting and many questions ans suggestions
were made. At 16:15, I listened to the talks Parametric antenna design and Building with OpenSCAD by
Andries Lohmeijer.
In between the talks and afterwards, I looked around the stands. Some of these
were:
- PILED from England.
- Everyone can learn to solder like a pro! by
Mitch Altman
from Berlin.
- I played a bit with a MIDI controller and a modular synth by
SoundForce
- Relions3D with 3D printed marble runner and B-lamp.
- Isetta Computer
- KITT Engineering with
The Smart Pavement Tile.
- Space Clock
- Is a 1973 Pinball Machine a Computer? showing a Bally 'Monte Carlo' pinball machine. The owner showed the inside and the
workings of machine. He was also in possession of the original schematics.
It reminded me at the pinball machine we had in our dorm when I studied
computer science.
- Nerds With Acid showing a modified drum machine besides some other things.
I also talked with various people and some old colleagues.
I walked to Creative Broedplaats
Enschede, who recently moved into a new building, to see the two
exhibitions with photographs: A Ballroom of
Eros by Anca Axinte and
Image of Imagination by Boel Nordenstam.
Bring Your Own Beamer
From 19:00 till 23:00, I showed my animation at
the Bring Your Own Beamer event at
TETEM art space. This is the fourth time I
joined this type of event. The previous time was in March 10 earlier this year. This time, I decided The China Labyrinth as a homage to Christian Freeling. I did bring two physical copies of the puzzle with me.
One made from wood and one made from perspex. The other artist and/or instalations at this event
(if I did not miss one) were
Carte Blanche
I went to see the exhibition
Carte
Blanche at B93. It was a double exhibition. Upstairs, was the work
Fragments Unknown by Désiré De Lacy with photographs, projections on sheer
curtains she had found on the street, and some audio playback. Quite
interesting how she blends images in such a way that you at first do not
notice it that they are blended. Downstairs was the exhibition of
Guusje Slagter (Instagram). I took one of the cards that were offered with a still from
the short film Het menselijk apparaat (The human apparatus).
Free form solution for The China Labyrinth
It turns out it is not so hard to find a solution for The China Labyrithn puzzle if you do not put restrictions on the border.
The solution below was found by two people in about half an hour. The puzzle is made from pieces that I made with a laser cutter on September 22.
Neocities: Coding Night
I went to the Neocities: Coding Night - Build your own digital garden event at
Sickhouse. A presentation was given by the
owner of theAlien Head Shit
Kid site on neocities.org. I found
a tutorial
explaining how to deploy to neocities throught github workflow.
This months interesting links
Home
| September 2026