frontpage.
newsnewestaskshowjobs

Made with ♥ by @iamnishanth

Open Source @Github

fp.

Open in hackernews

Show HN: SheetSage – A Linter for the Most Dangerous Programming Language

https://sheetsage.co/
1•CherishRoby•1h ago
I built SheetSage because "Silent Failures" in spreadsheets are a massive unmanaged risk in finance and ops. Most tools just find broken references (#REF!), but the real killers are logical errors like a VLOOKUP defaulting to approximate match on unsorted data, returning a plausible but wrong value.

The Technical Implementation:

Locale aware parsing: Since Google Sheets doesn’t provide an AST for formulas, I had to build a conservative parser that tracks quotes, parens, and braces to extract function calls without getting poisoned by strings or array literals. It handles localized argument separators (, vs ;) and decimal separators (, vs .) based on the spreadsheet's locale.

R1C1 Clustering: To avoid UI noise, I don't treat every cell as a unique finding. I normalize formulas using getFormulasR1C1() to identify templates that have been copied down. This allows the fix all engine to refactor thousands of cells in one batch.

The systemic softcap scoring: standard penalty per thousand metrics often under react to widespread errors. I implemented a continuous soft-cap model. It calculates union coverage for risks—if a critical error covers 40% of your workbook, your health score is soft-capped regardless of how many other healthy cells you have.

Snapshot & Rollback: Since I’m mutating user data, I implemented a SnapshotService that writes original formulas to a hidden SheetSage_SNAPSHOT sheet before any bulk fix. This provides a native "Undo" even after the Apps Script execution finishes.

Privacy: No spreadsheet data ever leaves the Google environment. The audit engine runs entirely in Apps Script. The only external call is a signed HMAC request to a Vercel/Next.js billing service to verify subscription entitlements via a stable clientId.

I'd love to discuss the heuristics I'm using to distinguish magic numbers from legitimate constants (like 24 for hours), and how I'm handling LockService to prevent race conditions during bulk refactoring.

Comments

CherishRoby•1h ago
Spreadsheets are the only programming language where approximate string matching is the default behavior (VLOOKUP with range_lookup=TRUE). I can't think of another language where fuzzy matching happens silently unless you explicitly opt out. Is this the most dangerous design decision in computing history?
JustinXie•1h ago
The R1C1 normalization is smart. Treating 5k copied formulas as one "finding" is the only way to avoid alert fatigue.

Re: magic numbers, have you considered checking column headers as a signal? E.g., if a header contains "Rate" or "Months", a hardcoded number is likely a valid constant. If it's just "Total", * 1.2 is probably a hidden risk. How do you handle cases where the context is ambiguous?

CherishRoby•1h ago
Great question! I am using column headers as context signals. If a column is named 'Rate', 'Price', 'Percentage', or 'Count', I'm more lenient with constants in formulas referencing it. For ambiguous cases like 'Total', I currently flag it and let the user decide—which isn't ideal. I've been considering a confidence score system where:

High confidence whitelist: 24, 60, 7, 365 (time conversions) Context-dependent: numbers near column headers with semantic meaning Always flag: arbitrary numbers like 1.2, 847, etc. unless they're in a 'Constants' or 'Assumptions' section

The hardest edge case is something like Revenue * 0.15 where 0.15 might be a legitimate tax rate OR a hardcoded assumption that should be in a named cell. Right now I flag it as medium priority. How would you approach this?

Falsehoods CS Students (Still) Believe Upon Graduating

https://www.netmeister.org/blog/cs-falsehoods.html
1•varbhat•2m ago•0 comments

I went on Holiday with my Colleagues

https://dogdogfish.com/blog/2026/01/26/holiday-with-colleagues/
1•matthewsharpe3•2m ago•0 comments

Show HN: Encrypter v2.0 – Time-lock files and rich text in the browser

https://www.encrypter.site/
1•zealer•3m ago•0 comments

Zerobrew: A drop-in, 5-20x faster, experimental Homebrew alternative

https://github.com/lucasgelfond/zerobrew
2•signa11•4m ago•0 comments

Show HN: StarSeeker – Find early signals from Reddit, X, and XHS comments

https://github.com/PingoJ26/starseeker
1•xkbear•5m ago•1 comments

Nvidia Invests $2B More in CoreWeave, Offers New Chip

https://www.bloomberg.com/news/articles/2026-01-26/nvidia-invests-another-2-billion-in-coreweave-...
1•marc__1•5m ago•0 comments

A Universe Without Time

https://www.4rknova.com//blog/2026/01/25/barbour-timeless-universe
1•ibobev•6m ago•0 comments

TI-99/4A: Hybrid Software Development

https://bumbershootsoft.wordpress.com/2026/01/24/ti-99-4a-hybrid-software-development/
1•ibobev•7m ago•0 comments

The Wayforward Machine (2021)

https://wayforward.archive.org/
1•exploraz•7m ago•0 comments

Show HN: Luametry – Parametric CAD for Lua Developers (Built on Manifold)

https://github.com/BenSiv/luametry/blob/main/doc/hk_blog.md
1•bensiv•7m ago•1 comments

Setting Up Year in Command Line

https://danishpraka.sh/posts/setting-up-year-in-command-line/
1•prakashdanish•10m ago•0 comments

The Hardest Test for AI Isn't Math. It's Writing

https://localoptimumai.substack.com/p/the-hardest-test-for-ai-isnt-math
1•turing_complete•10m ago•0 comments

The TCP/IP Guide

http://www.tcpipguide.com/
1•shrikaranhanda•11m ago•0 comments

Vibe Coding Kills Open Source

https://arxiv.org/abs/2601.15494
3•kgwgk•16m ago•0 comments

Screeps: A Game About Programming Sold Its Players a Remote Access Trojan

https://outsidetheasylum.blog/screeps/
2•akyuu•16m ago•0 comments

Beijing: Highest-profile purge to date of senior military commanders

https://www.reuters.com/world/china/china-investigating-senior-military-officials-zhang-youxia-li...
1•irthomasthomas•17m ago•0 comments

BGP Vortex: Internet Routing Vortices Create Outages by Preventing Convergence

https://pulse.internetsociety.org/blog/bgp-vortex-internet-routing-vortices-create-outages-by-pre...
1•speckx•17m ago•0 comments

Norad pact would change if Canada pulls back from F-35 order: envoy to Ottawa

https://www.cbc.ca/lite/story/9.7059800
3•colinprince•17m ago•1 comments

Water 'Bankruptcy' Era Has Begun for Billions, Scientists Say

https://www.bloomberg.com/news/articles/2026-01-20/water-bankruptcy-era-has-begun-for-billions-sc...
3•ciconia•19m ago•1 comments

Robert Moreno and the use of ChatGPT that defined his time at Sochi

https://www.beinsports.com/en-us/soccer/articles/robert-moreno-and-the-use-of-chatgpt-that-define...
1•nopakos•20m ago•0 comments

Your CI/CD pipeline doesn't understand the code you just wrote

https://octomind.dev/blog/qa-agent-in-your-ci-cd-pipeline/index.html
2•Octomind_dev•21m ago•0 comments

A China-Europe energy alliance could deliver a new world order

https://www.telegraph.co.uk/business/2026/01/23/china-europe-energy-alliance-deliver-new-world-orde/
1•saubeidl•22m ago•0 comments

AI "swarms" could distort democracy

https://www.mpg.de/26044163/ai-swarms-could-distort-democracy
3•giuliomagnifico•22m ago•2 comments

Intrascope, BYOK team chat with shared team context

https://intrascope.app/
1•Intrascopeapp•25m ago•0 comments

UpScrolled – Your Voice Amplified

https://upscrolled.com/en/
1•bjourne•25m ago•0 comments

Show HN: Storage.to CLI, upload a file, get a link

3•rsbadger•25m ago•0 comments

QueueSpec – drafting speculation tokens while a request queues

https://blog.doubleword.ai/queue-speculation-drafting-while-you-wait
1•mezark•27m ago•0 comments

Show HN: LLM Sanity Checks – A practical guide to not over-engineering AI

https://github.com/NehmeAILabs/llm-sanity-checks
1•44za12•27m ago•0 comments

The truth about detoxes – by a liver specialist

https://theconversation.com/the-truth-about-detoxes-by-a-liver-specialist-272761
2•u1hcw9nx•28m ago•0 comments

Accidentally rm -RF'd a production server

https://old.reddit.com/r/cscareerquestions/comments/1qjsfv8/accidentally_rm_rfd_a_production_server/
1•Topfi•28m ago•0 comments