Note: this only reflects my personal work in January. Visit BTC Map Blog to get consolidated monthly reports.
Discord is No More
I’m proud to report that BTC Map is no longer dependent on Discord. I migrated the remainder of our channels and bots to our new Matrix space.
We’ve also removed the Discord links from the landing page footer. I guess we’ll just let the old server slowly fade away.
Android Clustering
There’s been good progress on a new clustering method for the Android app. The animations feel smooth, but there’s a noticeable performance hit. I’ll keep working with this API since the old one has been deprecated by MapLibre.
Health Checks
The API health checks are working fine, but I noticed a few website health check failures. I’ve added more logging, and it looks like there are some SSL issues (curl exit code 35):
healthcheck[898007]: [111B blob data]
healthcheck[898007]: * IPv6: (none)
healthcheck[898007]: * IPv4: 75.2.60.5
healthcheck[898007]: * Trying 75.2.60.5:443...
healthcheck[898007]: * ALPN: curl offers h2,http/1.1
healthcheck[898007]: } [5 bytes data]
healthcheck[898007]: * TLSv1.3 (OUT), TLS handshake, Client hello (1):
healthcheck[898007]: } [1554 bytes data]
healthcheck[898007]: * SSL Trust Anchors:
healthcheck[898007]: * CAfile: /etc/ssl/certs/ca-certificates.crt
healthcheck[898007]: [2.1K blob data]
healthcheck[898007]: * TLS connect error: error:00000000:lib(0)::reason(0)
healthcheck[898007]: * OpenSSL SSL_connect: Connection reset by peer in connection to btcmap.org:443
healthcheck[898007]: [76B blob data]
healthcheck[898007]: * closing connection #0
healthcheck[898007]: curl: (35) Recv failure: Connection reset by peer
I’m not entirely sure what’s causing it, but it looks like the issue is on Netlify’s side. I’ll keep monitoring that curl call to collect more data.
Event API
Events are still an experimental feature I added for fun in the Android app. The goal is to see if there’s any organic demand for it.
I personally maintain a few events in Asia, but we were recently contacted by the guy behind BitcoinWalk, who wanted to sync our databases.
The problem was, we didn’t have an event API or event-scoped admin roles. So I built the missing endpoints, and they’re now live. BitcoinWalk is already using the new API, which is why you can see dozens of new events in the BTC Map Android app.
If you’re a web or iOS developer and want to see events on your platform, pull requests are welcome.
Payment Infra
We care about privacy, but we also don’t want spam, so we’ve spent a lot of time messing with paywalls. Our apps don’t require signups, but some stuff, like anonymous comments and boosts, will cost you a few sats. We weren’t sure if users would bite, but we’ve seen a steady trickle of paid invoices.
Our old invoicing server is a total hack job though. It’s unreliable and held together by digital duct tape. My main mission in January was to finally fix this mess.
I looked at a few options and ended up with a new server running Bitcoin Core/Knots and LND. Our old setup used the LNBits API, which was always the weakest link. The other headache was CLN, which is a maintenance nightmare. I’m a big fan of the single‑binary approach (thanks, bitcoind), and LND gets that right.
The new server is live. I’ll probably keep the old one around as a backup. By routing all new invoices to the new box, I can finally poke at the old one without breaking everything.
Sharing Knowledge
I also wrote up my whole node setup quest in a dedicated post. I’ll probably follow up with a few more deep‑dives, but this is a solid start.