From 154a705b2d978eb42b0c92875a8d564640dc2ce9 Mon Sep 17 00:00:00 2001 From: "user@node5.net" Date: Sat, 25 Jul 2026 19:29:24 +0200 Subject: Text TV BornHack - 2026 update. Reworked previous to improve flow --- Text TV BornHack/2026/pixelflut/closeup.webp | Bin 0 -> 156026 bytes Text TV BornHack/2026/pixelflut/pixelflut.webp | Bin 0 -> 135240 bytes Text TV BornHack/2026/web/error.webp | Bin 0 -> 32764 bytes Text TV BornHack/2026/web/speakers_tent.webp | Bin 0 -> 120852 bytes Text TV BornHack/Anti aliased text.png | Bin 2489 -> 0 bytes Text TV BornHack/Anti aliasing turned off.png | Bin 1781 -> 0 bytes Text TV BornHack/index.md | 73 +++++++++++++++------ Text TV BornHack/pango_cairo/Anti aliased text.png | Bin 0 -> 2489 bytes .../pango_cairo/Anti aliasing turned off.png | Bin 0 -> 1781 bytes 9 files changed, 52 insertions(+), 21 deletions(-) create mode 100644 Text TV BornHack/2026/pixelflut/closeup.webp create mode 100644 Text TV BornHack/2026/pixelflut/pixelflut.webp create mode 100644 Text TV BornHack/2026/web/error.webp create mode 100644 Text TV BornHack/2026/web/speakers_tent.webp delete mode 100644 Text TV BornHack/Anti aliased text.png delete mode 100644 Text TV BornHack/Anti aliasing turned off.png create mode 100644 Text TV BornHack/pango_cairo/Anti aliased text.png create mode 100644 Text TV BornHack/pango_cairo/Anti aliasing turned off.png diff --git a/Text TV BornHack/2026/pixelflut/closeup.webp b/Text TV BornHack/2026/pixelflut/closeup.webp new file mode 100644 index 0000000..806f10d Binary files /dev/null and b/Text TV BornHack/2026/pixelflut/closeup.webp differ diff --git a/Text TV BornHack/2026/pixelflut/pixelflut.webp b/Text TV BornHack/2026/pixelflut/pixelflut.webp new file mode 100644 index 0000000..49baa04 Binary files /dev/null and b/Text TV BornHack/2026/pixelflut/pixelflut.webp differ diff --git a/Text TV BornHack/2026/web/error.webp b/Text TV BornHack/2026/web/error.webp new file mode 100644 index 0000000..2a3aa3b Binary files /dev/null and b/Text TV BornHack/2026/web/error.webp differ diff --git a/Text TV BornHack/2026/web/speakers_tent.webp b/Text TV BornHack/2026/web/speakers_tent.webp new file mode 100644 index 0000000..4187bde Binary files /dev/null and b/Text TV BornHack/2026/web/speakers_tent.webp differ diff --git a/Text TV BornHack/Anti aliased text.png b/Text TV BornHack/Anti aliased text.png deleted file mode 100644 index 739c551..0000000 Binary files a/Text TV BornHack/Anti aliased text.png and /dev/null differ diff --git a/Text TV BornHack/Anti aliasing turned off.png b/Text TV BornHack/Anti aliasing turned off.png deleted file mode 100644 index 628d80c..0000000 Binary files a/Text TV BornHack/Anti aliasing turned off.png and /dev/null differ diff --git a/Text TV BornHack/index.md b/Text TV BornHack/index.md index 84b34eb..0631f06 100644 --- a/Text TV BornHack/index.md +++ b/Text TV BornHack/index.md @@ -1,47 +1,44 @@ --- -description: Website imitating teletext aka *Tekst-TV* featuring schedule +description: Screens showing the schedule at BornHack created: 2024-07-07 --- [TOC] -## --> [text-tv.bornhack.node5.net](https://text-tv.bornhack.node5.net/) <-- +Link to web version: [text-tv.bornhack.node5.net](https://text-tv.bornhack.node5.net/) + +## 2024 -![Text TV CRT](Text TV CRT.png) -![](2025.webp) ![](2024.webp) -## Idea +BornHack 2024 featured an even cooler pixelflut screen, inspiring me to make something for it. -This years BornHack (2024) will feature an even cooler Pixelflut setup, which inspired me to make something for it. -An important goal was to have something with a low barrier of entry to interact with it. -My first idea involved a keyboard presented at the Pixelflut setup, -allowing one to type messages to be displayed on screen. -Then later i got the idea to make it Text TV themed, this works well with the nerdy culture, and allows me to add a -schedule, and get user interaction through a "news" section. +### Idea + +My initial aspiration was to make something with a low barrier of entry for people to interact with the pixelflut. +I got the idea to make a text-tv themed setup with a news section and a schedule. The news section was later scrapped, +honing in on the main focus displaying the schedule, which was nowhere to find physically at the event, only online. ### Mock up +![Text TV CRT](Text TV CRT.png) ![Mock up](Mock up.png) -### Inspiration +#### Inspiration --- -## Renderer coding +### Pixelflut client -### Text rendering in C using pango & cairo +A fellow hacker sent me a project to get me started written in C with Pango/Cairo, which can render images and text rather easily, but it was anti-aliased, making it look horrible in the small format. -Based on a cairo pixel flut code sample from a fellow hacker, which i could expand to import and image, rather easily, -and render text, which worked, but it was anti aliased, making it look horible in the small format. - -![Anti aliased text](Anti aliased text.png) +![Anti aliased text](pango_cairo/Anti aliased text.png) Top is gimp mock up text, bottom is pango cairo rendered text -### Turning off anti aliasing +#### Turning off anti aliasing This was annoying, because `cairo_set_antialias(cr, CAIRO_ANTIALIAS_NONE);` didn't work, it had to be done in pango context. @@ -125,7 +122,7 @@ Here's a code sample: Which renderes non-anti-aliased text -![Anti aliasing turned off](Anti aliasing turned off.png) +![Anti aliasing turned off](pango_cairo/Anti aliasing turned off.png) Again, top is gimp mock up text, bottom is pango cairo rendered text @@ -133,4 +130,38 @@ bottom is pango cairo rendered text --- So 2024 Bornhack happened, sadly the pixel flut screen died, so i shifted from pixel flut to a website. -Which was featured at the bar in 2024 and in our village in 2025 + +## 2025 + +![](2025.webp) + +The web version was displayed in out village, and the pixel flut client was setup pretty late. +Setup was too hacky to easily deploy. + +## 2026 + +This time i come prepared, I've got time leading up to the event to do it right. +It's all about making it easy once you arrive at the event. +I've setup all the services with nix, allowing me to declare the setup. + +### Web + +The web client got an upgrade from refreshing the entire page to using JavaScript `fetch` as to not make the page flash. +Furthermore, should an error arrise it will be displayed on the top bar in red, and it will retain the last state, +allowing me to fix it, whilst remaining useful to the users. +The screen was up before the first event. + +The utility of it was presumably great, i saw lots of people check what events were comming up. + +![](2026/web/speakers_tent.webp) +![](2026/web/error.webp) + +### Pixelflut + +![](2026/pixelflut/pixelflut.webp) +![](2026/pixelflut/closeup.webp) + +I had everything ready, i even had the pixelflut client self reported its IP on boot, allowing me to reach it. + +The client ran for about a week at about 900 Megabits/s that's 68 Tera**Bytes** of data 🫪 wowe +`(0.9 * 60 * 60 * 24 * 7 / 1000 / 8)` diff --git a/Text TV BornHack/pango_cairo/Anti aliased text.png b/Text TV BornHack/pango_cairo/Anti aliased text.png new file mode 100644 index 0000000..739c551 Binary files /dev/null and b/Text TV BornHack/pango_cairo/Anti aliased text.png differ diff --git a/Text TV BornHack/pango_cairo/Anti aliasing turned off.png b/Text TV BornHack/pango_cairo/Anti aliasing turned off.png new file mode 100644 index 0000000..628d80c Binary files /dev/null and b/Text TV BornHack/pango_cairo/Anti aliasing turned off.png differ -- cgit v1.3.1