Jan's Avatar

Jan

@jflessau

Software dev for health care products by day, side project hoarder by night. πŸ¦€ rust | 🎾 padel | 🎲 dnd | πŸ–¨οΈ 3d printing πŸ“ Hamburg, Germany Website: https://jflessau.com GitHub: https://github.com/jflessau Mastodon: https://hachyderm.io/@jflessau

87
Followers
133
Following
111
Posts
13.12.2024
Joined
Posts Following

Latest posts by Jan @jflessau

In Austria, price increases are only allowed once per day, at 12:00. There, it’s cheapest to refuel right before 12:00 and most expensive at 12:01, but at least you can plan a bit better.

06.03.2026 15:35 πŸ‘ 0 πŸ” 0 πŸ’¬ 0 πŸ“Œ 0

The idea that centralized fuel price data (held by the Cartel Office) would benefit customers was good. Now that gas stations are apparently using the data to spy on each other, it's a problem. How useful is it to know that a station has the lowest price if it may shoot up before you get there?

06.03.2026 15:35 πŸ‘ 0 πŸ” 0 πŸ’¬ 1 πŸ“Œ 0
Average Vehicle count per 15 minute time bucket over 24 hours from several car counting sensors in Hamburg, Germany. The line chart looks much smoother than the price chart just one big wave starting at 3:20 with its peak at 12:30.

Average Vehicle count per 15 minute time bucket over 24 hours from several car counting sensors in Hamburg, Germany. The line chart looks much smoother than the price chart just one big wave starting at 3:20 with its peak at 12:30.

If you’re wondering (like I was) whether waves of commuters correlate with prices: no. Here’s data from Hamburg’s car-counting traffic sensors plotted over a day. If we use car volume as a proxy for demand, then demand doesn’t correlate with this price pattern.

06.03.2026 15:35 πŸ‘ 0 πŸ” 0 πŸ’¬ 1 πŸ“Œ 0

It doesn’t make sense to raise prices only a little, because your competitors are still cheaper. So they raise them sharply. Others follow very quickly, and the next cycle starts.

06.03.2026 15:35 πŸ‘ 0 πŸ” 0 πŸ’¬ 1 πŸ“Œ 0

But how come?
This pattern isn’t correlated with supply or demand at all.
It’s a tactic to extract the most from consumers: stations lower prices to be the cheapest around for a while. At some point, prices have to rise again, and that increase is initiated by the big gas station chains.

06.03.2026 15:35 πŸ‘ 0 πŸ” 0 πŸ’¬ 1 πŸ“Œ 0
Line-chart of average Diesel, Super E5, Super E10 prices over 15k gas stations in germany for one day. 

Seven sharp increases followed by slow decreases.

Line-chart of average Diesel, Super E5, Super E10 prices over 15k gas stations in germany for one day. Seven sharp increases followed by slow decreases.

This pattern can even be observed in the average fuel price across all 15,000 fuel stations in Germany. They’re all in sync.

06.03.2026 15:35 πŸ‘ 0 πŸ” 0 πŸ’¬ 1 πŸ“Œ 0
Line chart of Diesel prices of one gas station for one day. There are several sharp increases, followed by slow decreases. Cycles are about 3-4 hours apart from each other and there are not such cycles at night.

Line chart of Diesel prices of one gas station for one day. There are several sharp increases, followed by slow decreases. Cycles are about 3-4 hours apart from each other and there are not such cycles at night.

Looking at the price of diesel at one gas station over the course of a day, there are several sharp increases followed by slow decreases.

06.03.2026 15:35 πŸ‘ 0 πŸ” 0 πŸ’¬ 1 πŸ“Œ 0
Line-Chart of fuel prices of one gas station in germany, showing Diesel, Super E5 and Super E10, all on the rise from around 1,70 € to almost 2,10€ per liter in the past few days, while they were relatively steady the three weeks prior to that.

Line-Chart of fuel prices of one gas station in germany, showing Diesel, Super E5 and Super E10, all on the rise from around 1,70 € to almost 2,10€ per liter in the past few days, while they were relatively steady the three weeks prior to that.

This chart is from mcsprit.de, a site a friend (hi Max!) and I built using data from the German Cartel Office. It shows #fuel prices over about a month for one particular gas station.

Fuel prices go brrr in #Germany right now.

#CivicTech #dataViz

06.03.2026 15:35 πŸ‘ 0 πŸ” 0 πŸ’¬ 1 πŸ“Œ 0
Terminal output, starting with uninteresting headers from CURLing a site, followed by the LLMs output. The original LLM output is in german. Here is the english translation:

Here are the next collection dates from the waste collection calendar, sorted by date:
12 February 2026: βšͺπŸ”΅β€©	
13 February 2026: βš«β€©	
20 February 2026: βš«πŸŒΏπŸŸ‘β€©	
26 February 2026: βšͺπŸ”΅β€©	
27 February 2026: βš«πŸŒΏπŸŸ‘β€©	
6 March 2026: βš«πŸŒΏπŸŸ‘β€©	
12 March 2026: βšͺπŸ”΅β€©	
13 March 2026: ⚫

Emojis:
βšͺ: Blue paper bin
⚫: Black residual waste bin
	
🌿: Green organic waste bin
	
🟑: Yellow recycling bin/bag

Please note that the collection dates are listed starting from the current date (11 February 2026).

Terminal output, starting with uninteresting headers from CURLing a site, followed by the LLMs output. The original LLM output is in german. Here is the english translation: Here are the next collection dates from the waste collection calendar, sorted by date: 12 February 2026: βšͺπŸ”΅β€© 13 February 2026: βš«β€© 20 February 2026: βš«πŸŒΏπŸŸ‘β€© 26 February 2026: βšͺπŸ”΅β€© 27 February 2026: βš«πŸŒΏπŸŸ‘β€© 6 March 2026: βš«πŸŒΏπŸŸ‘β€© 12 March 2026: βšͺπŸ”΅β€© 13 March 2026: ⚫ Emojis: βšͺ: Blue paper bin ⚫: Black residual waste bin
 🌿: Green organic waste bin
 🟑: Yellow recycling bin/bag Please note that the collection dates are listed starting from the current date (11 February 2026).

Made a script to grab a waste collection calendar HTML table from a site and pipe it to an #llm, prompting it to list the dates.

Its nice and all, but every time it gets something else slightly wrong 🀷

(translation in alt text)

11.02.2026 10:16 πŸ‘ 0 πŸ” 0 πŸ’¬ 0 πŸ“Œ 0

πŸ‡

07.02.2026 15:55 πŸ‘ 1 πŸ” 0 πŸ’¬ 0 πŸ“Œ 0

This is so damn awesome! Congrats on such a nice build :)

02.02.2026 23:03 πŸ‘ 1 πŸ” 0 πŸ’¬ 0 πŸ“Œ 0

Good guess, it’s indeed ratatui!

02.02.2026 22:55 πŸ‘ 0 πŸ” 0 πŸ’¬ 0 πŸ“Œ 0
3d printed case of my cyberdeck. With a 3x3 key pad, a small and a large OLED and a physical button.

3d printed case of my cyberdeck. With a 3x3 key pad, a small and a large OLED and a physical button.

Internals of the cyberdeck, including a raspberry pi and a powerbank.

Internals of the cyberdeck, including a raspberry pi and a powerbank.

Cyberdeck without the lid, showing the wiring and usb-c port (for power) of the deck.

Cyberdeck without the lid, showing the wiring and usb-c port (for power) of the deck.

My #cyberdeck build is almost done.
#3dprint is complete, parts are assembled but not painted yet.
Still working on the #rust TUI application that runs on the main screen.

#freeCAD

31.01.2026 16:52 πŸ‘ 6 πŸ” 1 πŸ’¬ 1 πŸ“Œ 0
Post image

this elevator thing is brilliant btw

29.01.2026 19:16 πŸ‘ 1 πŸ” 0 πŸ’¬ 1 πŸ“Œ 0

This is exactly what I need right now. Thanks :)

29.01.2026 18:57 πŸ‘ 1 πŸ” 0 πŸ’¬ 0 πŸ“Œ 0

Heat inserts are so awesome!
Discovered them way to late.

29.01.2026 18:52 πŸ‘ 0 πŸ” 0 πŸ’¬ 0 πŸ“Œ 0
Retro Cube 3D printable case for an OLED, a rotary encoder, and a Raspberry Pi Zero W.

Thank you so much for all your nice messages! It's been a typical Monday, and they really cheered me up :)

I think I managed to capture most of them in a picture, which I'll be adding to my blog post about this project:
jflessau.com/projects/ret...

26.01.2026 11:14 πŸ‘ 1 πŸ” 0 πŸ’¬ 0 πŸ“Œ 0
The display on my retro cube showing β€žthis is dogβ€œ, which is the part of a message that fits on the screen. If this were a video, you would see the text line moving to eventually display all characters.

The display on my retro cube showing β€žthis is dogβ€œ, which is the part of a message that fits on the screen. If this were a video, you would see the text line moving to eventually display all characters.

🀩

26.01.2026 09:29 πŸ‘ 0 πŸ” 0 πŸ’¬ 0 πŸ“Œ 0
3d printed housing for a raspberry pi zero w and an OLED, showing a text message: β€žLow-res, high vibesβ€œ.

3d printed housing for a raspberry pi zero w and an OLED, showing a text message: β€žLow-res, high vibesβ€œ.

I made a website to control the content on my retro cube.
If you’d like, send me a message :)

retro-cube.jflessau.com/form
user: retro
password: cube

#3dprinting #pi #rust

26.01.2026 09:14 πŸ‘ 3 πŸ” 0 πŸ’¬ 2 πŸ“Œ 0

100% this!

26.01.2026 08:04 πŸ‘ 1 πŸ” 0 πŸ’¬ 0 πŸ“Œ 0
Video thumbnail

I made a housing for a #pi zero, an #OLED, and a dial for navigating between the views:

- Date & Time
- Weather
- A message fetched from a server

The server hosts a web form to update the message.
I think the colors turned out pretty cool :)

All written in #Rust and designed with #FreeCAD.

21.01.2026 20:39 πŸ‘ 4 πŸ” 1 πŸ’¬ 0 πŸ“Œ 0
Video thumbnail

Switched from #blender to #FreeCAD for my #cyberdeck build and finally gathered all the hardware parts. #3dprinting it tomorrow! Still not sure how I’ll paint it, though.

18.01.2026 20:50 πŸ‘ 13 πŸ” 1 πŸ’¬ 0 πŸ“Œ 0

A small part of me wishes people who start hitting the gym in January would give up sooner. This year most stayed until March and it was so crowded.

30.12.2025 16:36 πŸ‘ 0 πŸ” 0 πŸ’¬ 0 πŸ“Œ 0

Peak commedy πŸ˜…

23.12.2025 22:38 πŸ‘ 0 πŸ” 0 πŸ’¬ 0 πŸ“Œ 0
Video thumbnail

Had some fun with fuel price data from the german cartel office and wrote about it.

Teaser: Very synchronized prices of two gas stations, different companies, 5 km apart, no clear line of sight.
[one frame = one station]

#data #datascience #blog #opendata

jflessau.com/projects/gas...

23.12.2025 16:23 πŸ‘ 1 πŸ” 0 πŸ’¬ 0 πŸ“Œ 0
A screenshot of a website showing a search bar for location and zip code at the top, a map of Hamburg in the middle, with pins and prices for petrol stations, and a list of petrol stations below the map, showing the first two with their name, zip code, price and the time of the last price update. It’s 1,49€ at 21:20 for the first station and also 1,49€ at 21:00 for the second one. 
The petrol station names are: 

Raiffeisen Energie Nord GmbH at zip code 22952
and the second one is
Calpam Express 6-22h Tanken at zip code 22941

A screenshot of a website showing a search bar for location and zip code at the top, a map of Hamburg in the middle, with pins and prices for petrol stations, and a list of petrol stations below the map, showing the first two with their name, zip code, price and the time of the last price update. It’s 1,49€ at 21:20 for the first station and also 1,49€ at 21:00 for the second one. The petrol station names are: Raiffeisen Energie Nord GmbH at zip code 22952 and the second one is Calpam Express 6-22h Tanken at zip code 22941

A friend and I built mcsprit.de, a website to see real-time gasoline prices in Germany.

Prices change so often that you’ll likely see a different one by the time you actually arrive. That’s why we’ll have some fun with time series prediction models.

#civictech #solidjs #rust #ml #datascience

20.12.2025 20:52 πŸ‘ 3 πŸ” 1 πŸ’¬ 0 πŸ“Œ 0
Post image

First 3d print for my #cyberdeck project turned out so well.

Measurement for all the parts were correct 🀯
But I forgot some parts πŸ™„

Anyway, super happy with the look and feel.

#raspberry #pi #3dprint

15.12.2025 12:33 πŸ‘ 1 πŸ” 0 πŸ’¬ 0 πŸ“Œ 0
Video thumbnail

Recently discovered the subreddit r/cyberdeck, and it's the coolest thing ever!
I'm now building one with two OLED displays, a 3Γ—3 keypad, a dial, etc.

Can't wait for the first one to come out of the 3D printer.
The UI will be built with ratatui.

#cyberdeck #blender #3dprinting #rustlang #ratatui

14.12.2025 16:00 πŸ‘ 6 πŸ” 0 πŸ’¬ 0 πŸ“Œ 0

Thanks for explaining :)
Makes perfect sense. I got burned trying out surrealDB recently and ended up going back to Postgres as well. Still keeping an eye out for other interesting DBs to try. Maybe not for production, though.
But sqlx in rust is just so damn good.

14.12.2025 08:46 πŸ‘ 1 πŸ” 0 πŸ’¬ 0 πŸ“Œ 0

Curios to know why you chose Postgres as Gelβ€˜s successor.

12.12.2025 19:16 πŸ‘ 2 πŸ” 0 πŸ’¬ 2 πŸ“Œ 0