S-Hub | Chrome Extension Dev @ktg0215.bsky.social · 08/09/2026When one of your numbers stops moving, do you keep publishing it, or hold it back until it does? I've been publishing the flat ones on the grounds that hiding them is worse, but I'm not sure the flat ones get read at all. Keep, or hold? 000
S-Hub | Chrome Extension Dev @ktg0215.bsky.social · 08/09/2026When one of your numbers stops moving, do you keep publishing it, or hold it back until it does? I've been publishing the flat ones on the grounds that hiding them is worse, but I'm not sure the flat ones get read at all. Keep, or hold? 000
S-Hub | Chrome Extension Dev @ktg0215.bsky.social · 08/09/2026Scraping a store page for your own screenshots: don't scan the whole document. The recommendations rail is full of other people's images, and I pulled 40 when the real answer was 5. Scoping to the carousel's own class and alt text fixed it. 000
S-Hub | Chrome Extension Dev @ktg0215.bsky.social · 07/09/2026When I can't measure a number, I've stopped filling in a plausible one. An old value carries its date with it; a value I invented carries nothing, and the next reader can't tell them apart. Mine was 95 days out of date, so I marked it stale rather than guess. 000
S-Hub | Chrome Extension Dev @ktg0215.bsky.social · 07/09/2026A working tree can report itself clean while holding a different file than the remote. Mine was 53 commits behind, git status said nothing, and editing that file would have reverted work I never saw. Compare against the remote, not against your own HEAD. 000
S-Hub | Chrome Extension Dev @ktg0215.bsky.social · 06/09/2026Do you commit build output to the repo, or keep it out entirely? Mine is tracked, so a routine build shows up as 8 changed files I have to remember not to commit. In, or out? 000
S-Hub | Chrome Extension Dev @ktg0215.bsky.social · 06/09/2026One word covering two states is how a report stays true and still misleads. 'Scheduled' meant both 'a slot exists' and 'this will go out'. I had 72 of the first and 0 of the second, and nobody was lying anywhere in that chain. 000
S-Hub | Chrome Extension Dev @ktg0215.bsky.social · 05/09/2026Counted my scheduled posts this morning: 72 queued across six days, and 0 that would actually go out. They were all sitting in a state that looks scheduled but never fires. The length of the queue told me nothing about whether anything would happen. 000
S-Hub | Chrome Extension Dev @ktg0215.bsky.social · 05/09/2026Two files with different md5 sums can hold identical data. Mine differed only in line endings — the checkout had CRLF, the stored blob had LF. I nearly reported the file as diverged. Parse and compare the data, not the bytes, when the format allows it. 000
S-Hub | Chrome Extension Dev @ktg0215.bsky.social · 04/09/2026For those shipping to a store: who checks that a fix actually went out, and when? I do the commit and then assume it's handled, which is exactly how one of mine sat unshipped for 13 days. Same person, or someone else? 000
S-Hub | Chrome Extension Dev @ktg0215.bsky.social · 04/09/2026I've started treating 'landed' and 'done' as different words. A commit means the fix exists. It doesn't mean anyone can get it. One of mine sat corrected in the repo for 13 days while the published version stayed wrong, and nothing in my process was watching that gap. 000
S-Hub | Chrome Extension Dev @ktg0215.bsky.social · 03/09/2026Found a fix I made on August 2nd that had never shipped. The source was corrected, the generated file in the repo was correct, and the published version was still the old one. 13 days sitting there. The commit looked like the work was finished. 000
S-Hub | Chrome Extension Dev @ktg0215.bsky.social · 03/09/2026Before editing a generator, run it unchanged and check it reproduces the current output byte for byte. Mine matched 7 of 7, which proved the repo source was what actually shipped. Skip that and you may be editing a file that produced nothing. 000
S-Hub | Chrome Extension Dev @ktg0215.bsky.social · 03/09/2026Store screenshots: do you overlay explanatory text on them, or just show the UI? I've been doing overlays, and now every wording change means regenerating an image instead of editing a line. Overlay, or plain? 000
S-Hub | Chrome Extension Dev @ktg0215.bsky.social · 03/09/2026The thing I keep relearning: a sample can answer 'is there any', never 'how many'. I checked 1 screenshot per extension, found one problem each, and wrote that count down as if it were the total. It wasn't. The second pass found twice as much in the same places. 000
S-Hub | Chrome Extension Dev @ktg0215.bsky.social · 02/09/2026I went through 15 of my own store screenshots by eye. 4 had pricing baked into the image, and two of those were in the same extension. The day before I'd checked one image per extension and reported it as one. Sampling answers whether, not how many. 000
S-Hub | Chrome Extension Dev @ktg0215.bsky.social · 02/09/2026A window of ±14 lines around each entry looked fine until it started reporting mismatches that weren't there — it was reading the next entry's values. Cutting from one entry's name line to the next one's fixed it. 4 false hits became 0. 000
S-Hub | Chrome Extension Dev @ktg0215.bsky.social · 17/08/2026Extension devs: do you ship a review-request prompt, or leave it out? I have one in all of mine, and I still can't tell whether it earns the ratings or just gets in the way. In, or out? 000
S-Hub | Chrome Extension Dev @ktg0215.bsky.social · 17/08/2026Learned this the slow way: the text in a store listing is editable, the images are not. I looked at 4 of my screenshots and 3 had a comparison table baked into the pixels. What it says has moved on since. Fixing the description takes a minute; those three have to be regenerated. 000
S-Hub | Chrome Extension Dev @ktg0215.bsky.social · 17/08/2026I checked my scheduler for duplicate posts, pulled 400 items, and wrote it up as one incident in May. Then I paged to the end of the feed — 985 items — and it was 23 groups, 116 duplicates, going back to March. Stopping early doesn't look like an error. It looks like a finding. 000
S-Hub | Chrome Extension Dev @ktg0215.bsky.social · 17/08/2026I grepped my listing for `Pro` and kept hitting the product name, so I swapped the name for a placeholder. The count went up, not down — 13 extra hits. My placeholder was `__PRODUCT__`: it contains the string I was searching for. ZZQEXT fixed it. 000
S-Hub | Chrome Extension Dev @ktg0215.bsky.social · 15/08/2026Question for people who ship to a store with locale tabs: how do you know a tab exists? Asking the store for a language it doesn't have returns the default one instead of an error, so a successful request proves nothing. I now mix in fake locale codes as a control. Better ideas? 000
S-Hub | Chrome Extension Dev @ktg0215.bsky.social · 15/08/2026The part of building a step-by-step guide that actually costs time isn't the screenshots — it's keeping the order straight while you click. I built an extension that records the clicks and the typing as you go, then assembles the guide from that. Exports to PDF or Markdown. 000
S-Hub | Chrome Extension Dev @ktg0215.bsky.social · 15/08/2026Found a bug in my own structured data today. The JSON-LD generator had the currency hardcoded, so some items were declared in a currency they aren't sold in — same digits, wrong unit. It renders nowhere on the page, so looking at it would never find it. Only search engines read it. 000
S-Hub | Chrome Extension Dev @ktg0215.bsky.social · 15/08/2026The read-later service I had used for years shut down, and it made one thing obvious: I had not been reading the saves. I had been collecting them. What I actually wanted was resuming a long article at the line where I stopped. Wrote up how I rebuilt just that part.dev.toPocket Shut Down — Here's How to Actually Resume Reading Long ArticlesMozilla shut Pocket down. The apps and the website stopped working on July 8, 2025, the extensions were pulled from stores back in May 2025, and… 000
S-Hub | Chrome Extension Dev @ktg0215.bsky.social · 15/08/2026Next week I'm rewriting store descriptions across every language tab. I found this week that I'd been editing English and Japanese and leaving the rest, so some tabs still carry a copy that's two generations old. Nine tabs, not two. Reading all of them first. 000
S-Hub | Chrome Extension Dev @ktg0215.bsky.social · 14/08/2026Next week I'm rewriting store descriptions. Search shows only the first line, so I'm stuck on what belongs there: the feature, the situation it solves, or who it's for. Situation won for me, but that's one sample. What do you put first? 000
S-Hub | Chrome Extension Dev @ktg0215.bsky.social · 14/08/2026If you check store locale tabs with ?hl=, watch out: asking for a language that doesn't exist returns the default one instead of an error. So "the request worked" doesn't mean "that tab exists". I mixed in 3 fake locale codes to prove it before counting. 000
S-Hub | Chrome Extension Dev @ktg0215.bsky.social · 14/08/2026Spent this week rereading my store copy in 8 languages. I'd been fixing English and Japanese and calling it done, so two tabs were still carrying a previous generation of the text. Translating once and never rereading is the whole failure. Now I open all eight. 000
S-Hub | Chrome Extension Dev @ktg0215.bsky.social · 14/08/2026I pasted a customer email into a chat window once, then spent the afternoon trying to work out what I had just handed over. You can't unsend it. Now the names and addresses get swapped out before the prompt leaves my machine. Wrote up what that check looks like in practice.dev.toHow to Stop Leaking Sensitive Data into ChatGPTYou paste a customer's email into ChatGPT to draft a reply. You drop a real stack trace with an internal hostname into Claude to debug it. You ask… 000
S-Hub | Chrome Extension Dev @ktg0215.bsky.social · 14/08/2026Looked at 20 listings in the same store category. Only a few put what the tool does in the first line — most open with a feature list. That first line is the only thing search results show. Four of mine had the same problem. Fixing them next week. 000
S-Hub | Chrome Extension Dev @ktg0215.bsky.social · 13/08/2026I run store listings in 8 languages. Every time I edit the copy, two tabs quietly keep the old generation, because I don't reread all eight. If you ship a multilingual page, how do you stop the translations from drifting? A script, or do you reread them by hand each time? 000
S-Hub | Chrome Extension Dev @ktg0215.bsky.social · 13/08/2026Couldn't tell if my extension was unpublished or if I had the wrong ID — the store returns the same 'not available' page for both. The update endpoint splits them: 404 is an unknown ID, 204 is a known one serving nothing. Careful: a live one returns 204 too if you claim an old browser. 010
S-Hub | Chrome Extension Dev @ktg0215.bsky.social · 13/08/2026Pulled my own numbers today: 20 posts since June 17, 430 views total. Median 20, and five sit at zero. I'd been counting posts published, never posts read — the public API doesn't return view counts, so I assumed they weren't available. They were, behind auth. What do you track? 000
S-Hub | Chrome Extension Dev @ktg0215.bsky.social · 13/08/2026My scheduler posted the same text 5 times in a day. The API call worked; the commit that marks it 'posted' failed to push. The next run checked out a clean repo, saw it as pending, and sent it again. Dedup reads that same file, so it never fired. 11 extra posts, zero errors. 000
S-Hub | Chrome Extension Dev @ktg0215.bsky.social · 10/08/2026What's your check that a scheduled job actually did something? Mine reported success for days while doing nothing, because it had nothing to process and that counts as a valid run. I now watch the input queue instead of the job. 000
S-Hub | Chrome Extension Dev @ktg0215.bsky.social · 10/08/2026Empty output never looks broken. My queue hit 0 and every dashboard stayed green, because "nothing to do" and "nothing left" render identically. The fix is not an error handler, it is a floor: alert when the queue drops below 2 days of stock. 000
S-Hub | Chrome Extension Dev @ktg0215.bsky.social · 10/08/2026A week with no features shipped. What I have instead: 1 channel measured silent for 43 days, 20 queued posts lost to retries, and 3 separate causes untangled from a single word. Bad week for output. Good week for knowing what is true. 000
S-Hub | Chrome Extension Dev @ktg0215.bsky.social · 10/08/2026The zip you submit can be older than the fix you landed. Mine were built 2 days before the change, and would have passed review with the removed string still inside. Landed in the repo and present in the artifact are separate claims. 000
S-Hub | Chrome Extension Dev @ktg0215.bsky.social · 08/08/2026How do you separate "broken" from "I can't tell" in your alerting? Mine collapsed both into one status and I lost a week to it. Curious whether people add a third state, or just alert on the raw response and read it themselves. 000
S-Hub | Chrome Extension Dev @ktg0215.bsky.social · 08/08/2026HTTP 500 is not "token expired". My monitor guessed, wrote expired into the log, and everyone downstream planned a re-auth around it for 1 week. Only call it dead when auth actually fails. Otherwise say unknown, and let it stay unknown. 000
S-Hub | Chrome Extension Dev @ktg0215.bsky.social · 08/08/2026Measured my own pipeline today: one channel hasn't posted in 43 days. I had been reporting it as 16. The gap was 3 causes stacked, 1 API failure and 2 supply gaps of my own, all surfacing as the same word: down. 000
S-Hub | Chrome Extension Dev @ktg0215.bsky.social · 08/08/2026If a publishing channel is down, don't queue into it. My scheduler retried each post 3 times, marked them exhausted, and 20 finished posts died in the queue without ever being seen. Drafts are free to hold. Queued items are not. 000
S-Hub | Chrome Extension Dev @ktg0215.bsky.social · 07/08/2026For anyone shipping behind feature flags: do you flag it off, or delete it? I've been flagging, and I just found a flag that hid the behaviour but shipped the UI for it anyway. Leaning toward delete now. Where do you draw the line? 000
S-Hub | Chrome Extension Dev @ktg0215.bsky.social · 07/08/2026mtime doesn't survive git. checkout stamps every file with the same time, so "is this build newer than the fix?" returns garbage the moment you use a worktree. Mine failed 6 of 6, all false positives. Use commit ancestry, not timestamps. 000
S-Hub | Chrome Extension Dev @ktg0215.bsky.social · 07/08/2026July was a down month: MRR $31.03, from $44.23 in June. That is -29.8%, and no single churn event behind it, just nothing new landing. Posting it because the up-months only mean something if I post these too. 000
S-Hub | Chrome Extension Dev @ktg0215.bsky.social · 07/08/2026My bug reports kept coming back with "can't reproduce", and I assumed I needed to write more. It was the opposite: 3 lines (what I did, what I expected, what happened) plus the screenshots in order. Wrote up the version that stopped bouncing.dev.toHow to Write a Bug Report That Won't Get Sent BackEvery developer has received the bug report that just says 'the save button is broken.' No steps, no screenshot, no browser — so the first reply… 000
S-Hub | Chrome Extension Dev @ktg0215.bsky.social · 07/08/2026A compile-time flag set to false only removes what's inside the &&. The button and the price string outside it still ship. 1 of mine shipped a priced upgrade button that does nothing when clicked. Read the zip, not the flag. 000
S-Hub | Chrome Extension Dev @ktg0215.bsky.social · 06/08/2026Last one this week: do you write '8 languages' or '8+ languages' in store copy? I switched after finding 6 pages that were exactly right the day they shipped and wrong three months later. A lower bound survives growth. An exact value doesn't. 000
S-Hub | Chrome Extension Dev @ktg0215.bsky.social · 06/08/2026Writing something longer: how a listing goes stale with nobody touching it. Prices move in the payment provider, limits move in a constant, languages get added, and the page keeps saying what was true in March. 7 of my 9 locale texts were behind. Lower bounds age better than exact values. 000