Zsolt Ero
@hyperknot.com
Building https://openfreemap.org and http://maphub.net
Writing on http://blog.hyperknot.com
Loves paragliding
Writing on http://blog.hyperknot.com
Loves paragliding
This is amazing, a beautiful, global terrain layer in PMTiles format! Thank you for making this Oliver @oliverwipfli.ch!
Mapterhorn v0.0.1 has been released. It is an aggregation of the global Copernicus GLO-30 low-resolution digital elevation model with the Swiss swissALTI3D high-resolution model. mapterhorn.com
mapterhorn
Open terrain tile sets and data catalog
mapterhorn.com
August 11, 2025 at 9:31 AM
This is amazing, a beautiful, global terrain layer in PMTiles format! Thank you for making this Oliver @oliverwipfli.ch!
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:
August 11, 2025 at 9:20 AM
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:
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,
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,
August 9, 2025 at 3:30 PM
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,
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.
I don't want to add JS based scrollbars, but it's really hard to fix this in a cross-platform way.
July 11, 2025 at 11:03 PM
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.
I don't want to add JS based scrollbars, but it's really hard to fix this in a cross-platform way.
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.)
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.)
June 19, 2025 at 12:43 PM
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.)
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.)
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.
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.
June 3, 2025 at 3:17 PM
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.
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.
May 30, 2025 at 10:58 PM
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.
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?
May 29, 2025 at 4:32 PM
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.
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.
May 23, 2025 at 8:04 PM
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.
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.
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.
May 22, 2025 at 7:45 PM
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.
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.
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.
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.
May 20, 2025 at 3:56 PM
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.
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?
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?
May 19, 2025 at 12:16 PM
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?
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?
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!
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!
May 18, 2025 at 6:07 PM
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!
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!
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.
@ghost.org is painful with Markdown-based workflows. They started with Markdown but went full-on with a WYSIWYG editor.
May 18, 2025 at 3:02 PM
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.
@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.
May 18, 2025 at 9:49 AM
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.
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.
May 17, 2025 at 10:26 AM
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.
I found "Browser Storage Abuser", a 12 years old (!) website for stress testing the limits of different local storage options in browsers.
May 15, 2025 at 2:53 PM
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.
I found "Browser Storage Abuser", a 12 years old (!) website for stress testing the limits of different local storage options in browsers.
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!
Here o3 hallucinated a whole ecosystem! Everything here is 100% hallucinated!
May 12, 2025 at 12:52 PM
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!
Here o3 hallucinated a whole ecosystem! Everything here is 100% hallucinated!
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.
May 12, 2025 at 10:09 AM
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.
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."
May 11, 2025 at 9:16 PM
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."
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.
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.
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...
Also we have to vote to change the radio station. Enjoy!
> neal.fun/internet-roa...
Internet Roadtrip
Let's take a streetview roadtrip
neal.fun
May 9, 2025 at 5:40 PM
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.
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.
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!
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!
April 27, 2025 at 11:08 AM
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!
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!
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)
(1/3)
April 16, 2025 at 1:27 PM
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)
(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)
I don't mean I'm trying to cold-email someone - we've exchanged 50+ emails over the years.
(1/5)
April 15, 2025 at 12:43 PM
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)
I don't mean I'm trying to cold-email someone - we've exchanged 50+ emails over the years.
(1/5)
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)
April 14, 2025 at 3:32 PM
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)