Blog
Problems our tools were built for, and how they actually work. Every piece is meant to stand on its own, whether or not you ever use anything we make.
- How it works
A PDF table has no cells
An invoice table in a PDF is glyphs at coordinates, not rows and columns. Measured in jsPDF 4.2.1, ReportLab 5.1.0 and gopdf 0.38.4, a description wrapped in the header font overruns its column by 25pt, the row it needs is 13pt taller than the one reserved for it, and two text extractors disagree about which column the amount belongs to.
- How it works TableRune
Deleting a row does not retire its id
An import that deletes every row and re-adds them is not an update. Measured in SQLite 3.45.1 and PostgreSQL 16.15, the same import leaves a bill reading a different product, a dangling id, a deleted bill line or a refusal, decided by schema declarations and by the statement that clears the table, neither of which the import code mentions.
- How it works AegisPDF
A photo in a PDF keeps its GPS
A PDF metadata strip clears the Info dictionary and the XMP packet. A photograph placed on the page is usually stored as the JPEG file itself, metadata segments included, and no document-level strip reaches inside it. Measured with two PDF writers, two extractors and two EXIF readers, and checked against the PDF, Exif and JPEG standards.
- How it works TableRune
A file upload is three guesses at what the file is
A browser, an extension table and a content sniffer each have an opinion about what you just uploaded, and they are three independent guesses rather than three readings of one fact. Measured on a dozen small files, they disagree with each other, the extension table disagrees with itself about identical bytes, and a framework that chains two of them can reject a format it lists as supported.
- How it works AegisPDF
One scanned page should not cost you the document
A document extraction that fails on one page usually fails on all of them, because the unit of failure was never set to the unit of work. Two unrelated projects got there differently, one by throwing away text it had already read, the other by measuring an OCR job in bytes. Both fixes are the same idea.
- How it works FundQuill
What a signed FundQuill report can and cannot prove
The report records the file, the findings, the assumptions, the exact engine build and the seed that produced the simulation, then signs the whole record with a device key. That attests where it came from, which is a narrower claim than most people will read into a signature.
- How it works FilterProof
Filtering across 50,000 products without a page reload
Send the shopper's browser a compact index of the catalog once, and every filter click becomes a calculation on the shopper's own device. What goes in that index, what is left out, how it stays current, and where the approach stops working.
- Problem FundQuill
How to check a financial model you did not build
A practical answer for anyone who has been handed a spreadsheet, asked to sign off on the numbers, and has no idea which formulas to trust.
- How it works
A bank statement can prove it is complete
In every published version of camt.053 the balances are mandatory and the transaction list is optional. The format ships with the arithmetic that proves nothing was dropped, and the importers that read these files do not do the sum. One of them has carried a comment about the field it skips since the day it was written.
- How it works TableRune
A missing date is not a date
An invoice app has four places that show the same issue date, and a correct, documented way to say it does not have one. Three of the four use it. The fourth is the PDF, which prints 1 January 1970, or 31 December 1969 if you are west of UTC, and it is the only one of the four that leaves the building.
- How it works
An invoice template is an HTML document
A CRM filled custom invoice templates with str.replace and handed the result to WeasyPrint. One line changed str(value) to escape(value). That line is the difference between a PDF a member can forge a payment line onto and one they cannot, and it leaves a second substitution channel open that escaping was never going to close.
- How it works TableRune
A CSV file does not say what type anything is
Five readers, one byte-identical CSV, three different answers, and on a column of comma-decimal exponents two of them invert on adjacent rows. Not because any is buggy, but because the file carries no type layer, so each applies its own rule and each is internally consistent. Measured here across Python csv, LibreOffice, DuckDB and the DuckDB-Wasm build TableRune ships.
- How it works AegisPDF
A PDF title is bytes, not text
A PDF stores its title as bytes plus a rule for reading them, and the rule has no default beyond PDFDocEncoding. Write UTF-8 without the marker and you have produced a valid string that says something else. Measured across poppler, pypdf, pdf.js and our own engine, which disagree in four places.
- How it works
Blocking a request does not need to read the page
A content blocker asks for permission to read and change data on every site, and the honest reason is that only half of what it does needs that. Chromium's rule engine lets an extension block, allow and upgrade requests with no host access at all, and requires it for redirects, header rewriting and anything that touches the page itself. Without it, a tracker script uBO Lite would have swapped for a stand-in loads for real.
- How it works AegisPDF
The PNG your PDF throws away
A PNG is a zlib stream of filtered scanlines. A PDF image with /Predictor 15 is a zlib stream of filtered scanlines. They are the same bytes, so putting a PNG into a PDF can be a copy. Most libraries decode and re-encode instead, and the output size then has nothing to do with your PNG at all.
- How it works
An amount in PDF text has no edges
A parser that reads invoice totals out of a PDF's text has to decide where each number starts, where it ends and where its decimal point is. Two open-source importers each get one of those wrong, and in the worst case the invoice's own arithmetic still checks out.
- How it works
Catching the exception does not undo the writes
A try/except around a multi-step write does not roll anything back. Whether the earlier writes survive depends on where the error came from, which is the one thing the except block cannot see. Measured in two PostgreSQL versions, with the opposite result in each direction.
- How it works AegisPDF
The euro a standard PDF font will not draw
A PDF can ask for a euro sign in Helvetica and get nothing back, with no error and no visible gap. Of the currency symbols the standard PDF fonts carry, the euro is the only one their own encoding has no code for. Measured in three PDF engines against nine hand-built files.
- How it works TableRune
The cells an xlsx does not store
A spreadsheet's grid is not stored as a grid. Merged ranges keep one value, a filled-down formula is stored once, and empty cells are simply absent, so the sheet's size is a claim the file makes about itself. Measured by running four readers over one hand-built file.
- How it works AegisPDF
What a PDF metadata strip has to remove
A "remove metadata" feature for PDFs is usually specified as a list of fields to clear. Those fields live in only one of the two places a PDF keeps metadata, and some tools remove them by appending an update that keeps the original. Both versions pass the obvious test. Read from the documentation and source of pypdf, pikepdf, ExifTool and qpdf.
- How it works
A fix does not reach the invoices already written
An invoice total is usually a stored figure, not a calculation, so it changes only when something writes to it. Fixing the code that produced a wrong total leaves every invoice already written exactly as wrong as it was. Read from one public bug report and the source of two open-source invoicing systems.
- How it works
What a blocker has to say yes to
A content blocker that only refuses requests breaks the pages it is protecting, because pages wait on the scripts it removed. uBlock Origin ships 47 stand-in resources for that reason, and the interesting ones do not do nothing: they declare themselves ready, run the callback the page was waiting on, and fabricate the evidence of a filled ad slot.
- How it works
Where an xlsx keeps its meaning
A spreadsheet file does carry the answers a CSV leaves out: cell types, number formats, the workbook's date epoch, the sheet list. None of them is stored in the cell, so a reader that looks only at the value gets a plausible wrong answer instead of a missing one. Read from four widely used readers.
- How it works
What Chrome's rule limit actually counts
A blocker built on Chrome's declarative API registers its filter lists ahead of time, and the platform caps how many rules it may register. The cap counts rules and not hostnames, one shipped rule carries 48,868 domains, and going over the cap usually drops whole lists with a warning rather than failing to load.
- Problem
Why your invoice PDF comes out blank and nothing says why
Many silent invoice PDF bugs are the same mistake. "No value" can arrive as a missing key, a null, an empty string, a zero or a form field that was never sent, and the code checks for only one of them.
- How it works
The tracker your blocklist cannot see
A CNAME record makes a third-party tracker answer on a subdomain of the site you are visiting, so a list of bad hostnames has nothing to match. Seeing through it needs a browser permission that one of the two manifests in uBlock Origin asks for and the other does not.
- Problem AegisPDF
Why your scanned PDF extracts as an empty page
A PDF does not have to contain any text, and the tools that read one mostly ask whether the file has text rather than whether each page does. The loud failure is an empty result. The quiet one is a document that reports success with pages missing.
- Problem TableRune
Why your bank statement CSV will not import cleanly
The file opens fine in a spreadsheet, and the importer still stops to ask you six questions or silently brings last month in twice. Here is what a CSV does not carry, and the four decisions you end up making on its behalf.
- Problem
How to handle complex discount logic in a Shopify Function
Complicated discount rules do not fail on execution time. They fail on the input query cost budget of 30, before your code runs at all. The fix is to decide what matches before checkout instead of during it.
- Problem
Editing an order's shipping address will change its tax
From October 2026 Shopify recalculates tax when an unfulfilled order's address is updated. On an order that is already paid, that can leave money owed in either direction, and nothing about it looks like an error.
- Problem
Shopify script tags are going away. What actually breaks?
Two dates, one of which is invisible and one of which stops apps working. Here is what a script tag was, what replaces it, and the part of the replacement that a merchant has to switch on by hand.
- Problem
Shopify Scripts are gone. What replaces them?
Scripts stopped executing on 30 June 2026. Here is what each of the three kinds did, what replaces it, and which parts you now have to buy rather than write.
- How it works TableRune
What happens when you filter a million rows in TableRune
Three languages run in one browser tab to answer that click. Rust plans the work, JavaScript drives it, and DuckDB does the actual query. Here is the path, and what we did not write ourselves.
- Problem TableRune
What to do when a CSV is too big for Excel
A practical answer for anyone who exported a few million rows and found that the spreadsheet either refuses to open it or quietly leaves most of it out.
- How it works PrivHaven
What a PrivHaven report actually proves
The report records which engine build ran, over which bytes, under which rules, in an order that does not depend on how the file was scanned. Here is what that gets you, and what it does not.
- Problem PrivHaven
How to remove personal data from a CSV before you share it
A practical answer for anyone who has to send an export to a contractor, an analyst or a support agent, and cannot send the customer details along with it.
- How it works AegisPDF
Why AegisPDF never uploads your file
The PDF engine runs inside your browser tab rather than on a server. Document bytes never reach us, which is a design constraint rather than a policy promise.
- Problem AegisPDF
How to redact a PDF without uploading it anywhere
A practical answer for anyone who needs to remove information from a document they are not allowed to send to a third-party service.