Zsolt Ero

@hyperknot.com

Building https://openfreemap.org and http://maphub.net Writing on http://blog.hyperknot.com Loves paragliding

This is the state of the art on ChatGPT when asked to create a map (topic was hot springs in Cyprus). I guess interactive maps are safe for now.

Bild

Look, this is the 1st Google result for wplace live, just below the main website. Maybe the majority of users didn't use scripts, but the ones who did are definitely responsible for the load:

Bild

OpenFreeMap survived 100,000 requests per second I was about to post about how nice the last 10 months of OpenFreeMap have been. The architecture has really proven itself to be great, Cloudflare has agreed to sponsor the bandwidth, Hetzner servers are super stable as always,

Is CSS scrollbar-gutter support like totally broken in almost all browsers? This is Chrome. Safari is broken in a different way. I don't want to add JS based scrollbars, but it's really hard to fix this in a cross-platform way.

screenshot

Ultimate marketing flex by Midjourney: 1. Make every user connect with the "Midjourney Bot." 2. Notify 21 million users of a new launch, for free! (Even if they left ages ago.)

Bild

One US client sent us a USD paper check in the mail, instead of the wire transfer / ACH we'd asked them to use. Now I have this piece of paper for $1100. What can I do with it? I'm in the EU and I have no idea where I can possibly cash or deposit this check.

Right now, you might have read the news that a Chinese paraglider pilot, Peng Yujiang, got sucked into a cloud and ended up at 8,598 meters / 28,000 feet.

cover

Honest question: How do you pay using your iPhone while on a call? I mean the one where I double-click the side button and pay at a cashier?

Crossposter final touches Multi-day threads. I can now continue a post after it has been posted. First, I create post1.md, then later as I progress post2.md, etc. After each post, the status is saved into a JSON, and when the next part is posted, it continues the original thread.

Crossposter progress update: I just remembered that I cannot write "Bluesky" on X, the land of free speech. Asked Gemini how to make similar-looking Unicode characters, which look the same but are actually not the same string.

unicode version

Crossposter progress update: I was using regex-based parsing for links, images, @handles, etc. It started out simple but became increasingly confusing as I tried to synchronize this regex-based parsing for Bluesky posts with the optimal splitting code.

Crossposter progress update: Optimal splitting into threads works! It was a big one. Turns out I need dynamic programming to find the optimal splitting points in a thread. What does an optimal splitting point mean?

code

Looking at @astro.build source code be like: returning a template string of JS code, which imports template strings of image paths, which maps regex-parsed HTML matches to async image objects, all while JSON-parsing a stringified regex-escaped string!

code

Moving all my blogs over to @astro.build. Substack is getting more and more bloated; it feels like it's becoming another Medium in the long term. @ghost.org is painful with Markdown-based workflows. They started with Markdown but went full-on with a WYSIWYG editor.

Crossposter progress update: Posting on bsky works! Amazing DX and super friendly dev community on Discord. Posting on X works! Terrible DX, scary low quota + returns wrong quota information in response headers. I have no idea when it blocks me and for how long.

python_snippet

I've started developing my own cross-poster because I don't want to limit my posting to just a single platform. Starting with X, Bluesky and LinkedIn. Later planning to grow it into full-on blog posts and newsletter.

I'm developing a local-first app and found conflicting information online about how much data I can actually store in localStorage. I found "Browser Storage Abuser", a 12 years old (!) website for stress testing the limits of different local storage options in browsers.

screenshot

OpenAI o3 hallucinations are on a different level compared to anything I've seen before. Here o3 hallucinated a whole ecosystem! Everything here is 100% hallucinated!

screenshot

Here is a small snippet I'm using to 'replace all' across all files in a directory tree. It uses ripgrep so it's super optimised, much faster compared to grep.

code

I love when LLMs make a typo! It's so much out of their character that it feels like catching a shooting star. Here, Gemini wrote "Rable" instead of "Table."

screenshot

One more amazing project using OpenFreeMap: Streetview roadtrip simulator by @neal.fun Launched today and instantly became the #1 site using @openfreemap.org ! Neal reached out beforehand and generously provided a $150/month sponsorship via @github.com Sponsors, fully covering usage costs.

Neal Agarwal@neal.fun · last yr.

I made a streetview roadtrip simulator where we all vote on a direction every 10 seconds Also we have to vote to change the radio station. Enjoy! > neal.fun/internet-roa...

Today I learned, sitting on a train: Ping packets can still return after 20 seconds! You'd think that your internet connection is broken, but no, somewhere out there, there is a packet destined for your laptop, arriving 20 seconds later!

terminal

How many times have I received an important PDF by email, only to find it password protected by my bank or insurance company? Of course, the email usually includes instructions on how to determine the password - typically something based on your personal information, (1/3)

We cannot reach one of our clients because their Office 365 is configured to "only accept messages from people in its organization or on its allowed senders list." I don't mean I'm trying to cold-email someone - we've exchanged 50+ emails over the years. (1/5)

email screenshot

I've just spent 3 days fixing the screenshot infrastructure of MapHub. Somehow, this part has the tendency to break more often than everything else altogether. (1/3)

I've just spent 3 days fixing the screenshot infrastructure of MapHub. Somehow, this part has the tendency to break more often than everything else altogether. At this point, for Puppeteer, I've explored Chrome, Chrome Headless Shell, and even Firefox,

Gemini 2.5 Pro unusable for coding? Something really strange is going on with Gemini 2.5 Pro. On one hand, it's supposedly the smartest coding model ever made. (1/4)