Sign in

Vladimir Chemeris | Indie Dev

@chama.pro
80 followers 233 following 378 posts

Solo dev. Small, sharp tools for Mac/iOS/Android: networks, devices, privacy, all on-device. Building in public: the numbers and the flops. 🛠️ chama.pro

PostsRepliesMedia
Vladimir Chemeris | Indie Dev @chama.pro · 09/10/2026
I sent 5,000 QoS 1 messages to Mosquitto 2.1.2 while my persistent-session subscriber was offline. All PUBACKs were RC:0. Back online, it got the first 1,000. The broker dropped the newest 4,000: max_queued_messages defaults to 1000 per client. #homelab #homeassistant
Terminal output from Mosquitto 2.1.2. A subscriber with a persistent session subscribes to the topic sensors and goes offline. A publisher sends 5,000 QoS 1 messages and gets 5,000 PUBACKs with RC:0. The subscriber reconnects and receives 1,000 messages. The broker's counter $SYS/broker/publish/messages/dropped reads 4000.
100
Vladimir Chemeris | Indie Dev @chama.pro · 11/09/2026
ClickHouse TTL is a merge on a cooldown. A one second TTL cleared my first insert a second later. The next insert into the same partition was still there four minutes later: merge_with_ttl_timeout is 14400 s between TTL merges per partition. OPTIMIZE FINAL clears it. #devops
clickhouse-client session. A MergeTree table with TTL ts plus one second. The first insert of a million rows at 13:28:10 counts zero rows one second later. A second insert at 13:28:24 still counts one million rows at 13:32:24, four minutes later. system.part_log shows a single TTLDeleteMerge at 13:28:11. system.merge_tree_settings shows merge_with_ttl_timeout equal to 14400.
101
Vladimir Chemeris | Indie Dev @chama.pro · 09/09/2026
pg_stat_activity does not fail on missing rights. Without pg_monitor other sessions show null state and <insufficient privilege> as query, and an alert on it stays green. Managed Postgres comes without superuser, so I draw missing rights as a state and name the role. #devops
psql session as a plain role named oncall. Selecting pid, usename, state and query from pg_stat_activity for user app returns one row with an empty state and <insufficient privilege> as the query. pg_terminate_backend(90) fails with permission denied to terminate process, and the DETAIL names the pg_signal_backend role. After a superuser runs GRANT pg_monitor TO oncall, the same select shows state active and the running query SELECT pg_sleep(300).
000
Vladimir Chemeris | Indie Dev @chama.pro · 04/09/2026
I denied my own publish with a Mosquitto ACL and the client read it as a success. At QoS 1 under MQTT 3.1.1 the PUBACK came back RC:0, the same code a delivered one gets. Reconnect as MQTT 5: RC:135, Not authorized. QoS 0 has no PUBACK to carry it. #homeassistant #homelab
Terminal output. The same denied MQTT publish, run twice against a Mosquitto broker. Under MQTT 3.1.1 the client receives PUBACK RC:0, the success code. Under MQTT 5 the same publish returns PUBACK RC:135 and the client prints "Not authorized". Below, the mosquitto 2.1.2 broker log shows "Denied PUBLISH" for both.
000
Vladimir Chemeris | Indie Dev @chama.pro · 02/09/2026
My deploy skipped IndexNow from March to August. No key, no error. It wrote the cache file anyway, so the log read clean. Bing showed up two weeks after the fix, then DuckDuckGo on the same index. They have sent 18 sessions since, Google 9. #buildinpublic #indiedev
Dot strip chart of daily sessions to iperf3app.com, 1 July to 1 September 2026, three rows. Bing has a single dot on 8 July, then nothing until 21 August, after which it appears almost every day. DuckDuckGo has no dots at all until 23 August, then six in ten days. Google organic appears throughout the window. A dashed line marks the IndexNow fix on 7 August.
031
Vladimir Chemeris | Indie Dev @chama.pro · 21/08/2026
Your duplicate finder says 40 GB. You delete, and free space moves by 2. On APFS a copy is often a clone: two files, one set of blocks, and ls reports full size for both. Hard links you catch with ls -li. Trust df before and after. storageradar.app #macos #indiedev
StorageRadar duplicate evidence: 318 groups, 38.1 GB logical reclaimable, 38.1 GB estimated physical, with physical savings labeled as estimates
020
Vladimir Chemeris | Indie Dev @chama.pro · 24/07/2026
Most "private" translators still send your words to a server to translate them. This one runs Gemma on your phone. Type it, photograph a sign, or say it. Once you install the model, it works in airplane mode, and your words never leave the device. aitranslator.chama.pro/?utm_source=…
Offline AI Translator on iPhone, Chat tab: heading 'Private conversations on device', a card to install the on-device Basic Model with note that translation tools keep working while it downloads, and tabs for Chat, Translate, Activity, Models, Settings.
000
Vladimir Chemeris | Indie Dev @chama.pro · 13/07/2026
macOS "About This Mac → Storage" lies. It buckets 40GB of caches, dead Docker layers, and stale simulator runtimes into a gray "System Data" blob. I got tired of guessing what eats my SSD, so I built a Mac app that shows the exact paths and deletes nothing without your ok. storageradar.app
StorageRadar Dev Cleanup screen: Xcode DerivedData at /Users/user/Library/Developer/Xcode/DerivedData (27 GB), CoreSimulator data (25 GB), and iOS device support (24 GB), each tagged Safe or Caution with a review-before-Move-to-Trash action.
031
Vladimir Chemeris | Indie Dev @chama.pro · 10/07/2026
CacheDeck is live. A Redis client for the 2am on-call. Connect via SSH tunnel or TLS. Browse keys with SCAN, never KEYS. Destructive commands need the exact key name. Creds stay in device-only Keychain, no relay backend. $14.99 once. apps.apple.com/us/app/cachedeck/id6…
Three CacheDeck screens: connecting to a Redis cluster over TLS and an SSH tunnel, browsing keys as a tree with SCAN, and a delete dialog that requires typing the exact key name to confirm.
000
Vladimir Chemeris | Indie Dev @chama.pro · 06/07/2026
Rebuilt the Mac version of my iPerf3 app from the ground up for 2.0. New native desktop layout, a Home dashboard that charts throughput live, and one tap to run your Mac as an iperf3 server. apps.apple.com/app/apple-store/id67…
iPerf3 for Mac 2.0. Home dashboard during a live test: speedometer at 192 Mbps and a live bandwidth trend chart.
000