Recently updated:
4 d SumatraPDF new features: June 16, 2026 Home
SumatraPDF new features: June 15, 2026 Home
5 d SumatraPDF new features: June 14, 2026 Home
SumatraPDF new features: June 13, 2026 Home
7 d SumatraPDF new features: June 12, 2026 Home
8 d SumatraPDF new features: June 11, 2026 Home
SumatraPDF: Open PDFs inside .p7m files Home
SumatraPDF new features: April 23, 2026 Home
SumatraPDF new features: April 14, 2026 Home
9 d SumatraPDF new features: April 12, 2026 Home
SumatraPDF new features: April 11, 2026 Home
10 d SumatraPDF new features: April 10, 2026 Home
SumatraPDF: Extract Text From Document works for DjVu Home
11 d SumatraPDF new features: April 8, 2026 Home
12 d SumatraPDF new features: April 5, 2026 Home
SumatraPDF new features: April 4, 2026 Home
13 d SumatraPDF new features: April 3, 2026 Home
14 d SumatraPDF new features: April 2, 2026 Home
SumatraPDF new features: April 1, 2026 Home
Sumatra File Manager: Refresh Home
The things we do to ship desktop software Home
15 d SumatraPDF new features: March 31, 2026 Home
SumatraPDF new features: March 30, 2026 Home
SumatraPDF new features: March 29, 2026 Home
Sumatra File Manager: Open a folder or file from the command line Home
16 d SumatraPDF new features: March 28, 2026 Home
SumatraPDF new features: March 27, 2026 Home
SumatraPDF new features: March 26, 2026 Home
17 d SumatraPDF new features: March 25, 2026 Home
SumatraPDF new features: March 21, 2026 Home
18 d SumatraPDF new features: March 20, 2026 Home
SumatraPDF: Built-in PDF command-line tools Home
SumatraPDF new features: March 18, 2026 Home
46 d Simple serialization format for logging and analytics in Go Home / Go Cookbook
HTTPS for free in Go, with a little help from Let's Encrypt Home / Go Cookbook
Experience porting 4.5k loc of C to Go (Facebook's CSS flexbox implementation Yoga) Home / Go Cookbook
Generating good unique IDs in Go Home / Go Cookbook
Using MySQL in Docker for local testing in Go Home / Go Cookbook
Embedding a build number in a Go executable Home / Go Cookbook
Accessing GitHub API from Go Home / Go Cookbook
Fuzzing a Markdown parser written in Go Home / Go Cookbook
Speeding up Go with custom allocators Home / Go Cookbook
Ways to iterate in Go Home / Go Cookbook
Rotate log files daily in Go Home / Go Cookbook
Extracting files from .7z archives in Go Home / Go Cookbook
Advanced command execution in Go with os/exec Home / Go Cookbook
Improving speed of SMAZ compressor by 2.6x/1.5x Home / Go Cookbook
58 d Advanced markdown processing in Go Home
59 d Simplest C++ callback, from SumatraPDF Home
Better unique id generation than UUID Home
Implementation of optimized vector of strings in C++ in SumatraPDF Home
60 d Optimizing memory use in a Markdown parser Home
123 d Letting AI agents drive a GUI app with -dbg-control Home
125 d Finding active GitHub forks from the command line Home
206 d Speeding up JavaScript function with AI help Home
278 d How to run msvc cl.exe from command-line (powershell) Home
303 d Novel login system for web apps Home
310 d From JSON to TOON Home
Benchmarking JSON vs TOON in Go Home
456 d Fixing Zed's debugger keybindings Home
Ideas for faster web dev cycle Home
457 d Zed debug setup for go server / Svelte web app Home
Stage manager in Mac OS Home
AltTab for Mac OS Home
458 d lazy import of JavaScript modules Home
Using await in Svelte 5 components Home
459 d vite /rollup manualChunks Home
460 d Increase software sales by 50% or more Home
461 d File sync is very slow Home
469 d Evolving Edna Ask AI UI Home
Desktop UI frameworks written by a single person Home
470 d Implementing UI translation in SumatraPDF, a C++ Windows application Home
Calling Grok, OpenAI, Anthropic, Google, OpenRouter API from the browser Home
471 d Increase open file limit on Ubuntu Linux Home
Case study of over-engineered C++ code Home
472 d Explaining nil interface{} gotcha in Go Home
473 d Size textarea to content Home
475 d All about Svelte 5 snippets Home
476 d C++ engineering decision in SumatraPDF code Home
477 d Bugs I fixed in SumatraPDF Home
479 d Custom search UI in CodeMirror 6 and Svelte 5 Home
481 d Notion-like compact table of contents in JavaScript Home
482 d Go is 80/20 language Home
483 d Automatic Chrome Dev Tools workspace setup Home
484 d How I made SumatraPDF crash less Home
486 d Compressing for the browser in Go Home
Ban std::string Home
487 d Thoughts on C/C++ killer Home
488 d Implementing nested context menu in Svelte 5 Home
Idea for code editors Home
490 d Optimizing calling Windows DLL functions in Go Home
496 d Why Go iterators are ugly, clever and elegant Home
497 d Showing UI on mouse move, in Svelte 5 Home
783 d Modern C++ Home
Man vs. AI: optimizing JavaScript (Claude, Cursor) Home
788 d Implementing Notion-like table of contents in JavaScript Home
846 d Porting a medium-sized Vue application to Svelte 5 Home
924 d Changing font size in Windows dialog in C++ Home
1310 d How I implemented wc in the browser in 3 days Home
1322 d Persisted Svelte store using IndexedDB Home
1340 d About me Home
I’m a Go freelancer for hire Home / About me
1341 d Thoughts on Go after writing 3 websites Home
1343 d Hiding duplicate content from your site via robots.txt Home
Writings Home
1345 d Logging HTTP requests in Go Home
1346 d Startup management lessons from “The Social Network” Home
Using Fabric for deploying server software Home
How I improved SumatraPDF performance by ~60% Home
Paradox of bad comments Home
Order of #include headers in C/C++ Home
Designing web forums software Home
Document your software Home
gflags - a debugging story Home
Writing to sell Home
On the difference between amateur and professional shareware Home
Value your time Home
Marketing lessons from WebP launch Home
Summary of talk on continuous deployment Home
You have to implement to understand Home
Where do bugs come from? Home
Summary of David Ditzel talk on binary translation Home / Where do bugs come from?
1347 d Buying a certificate for signing Windows applications Home
Accurate timers on Windows Home
57 MicroConf videos for self-funded software businesses Home
Guide to predefined macros in C++ compilers (GCC, Clang, MSVC, etc.) Home
Analyzing browserify bundles to minimize JavaScript bundle size Home
Optimizing JavaScript by using arrays instead of objects Home
Tip for per-test verbose logging in Go Home
SumatraPDF 3.0 released Home
SumatraPDF 2.5.2 released Home
Powering a blog with Notion and Netlify Home
Variadic Macros (C++) Home
Sumatra 0.8 released Home
Trade-offs in designing a versatile log format Home
SumatraPDF 2.4 released Home
Lessons learned porting 50k loc from Java to Go Home
Sumatra PDF 0.7 released Home
List of CBR and CBZ comic book readers for Windows Home
List of CHM readers and viewers for Windows Home
List of ePub format readers and viewers for Windows Home
List of MOBI format readers and viewers for Windows Home
List of websites with free eBooks in EPUB and MOBI formats Home
Sane #include hierarchy for C and C++ Home
The Silver Searcher windows port Home / Software
How I use Roam Research Home
Lessons learned from 15 years of SumatraPDF Home
SumatraPDF 0.6 released Home
What I've learned from "After the Gold Rush" Home
Engineering and Computer Science in the Real World Home
How I ported pigz from Unix to Windows Home
A debugging story Home
Few things I’ve learned when writing Sumatra PDF Home
SumatraPDF 0.5 released Home
SumatraPDF 0.4 released Home
Sumatra PDF 0.3 released Home
SumatraPDF 2.2 released Home
Design and implementation of a translation system for desktop software Home
How I sped up Go by 20% (or is Go really slower than Java?) Home
@levelsio and survivorship bias Home
Extreme #include discipline for C++ code Home
Performance optimization story Home
Sumatra PDF 0.2 released Home
Sumatra PDF is born Home
Websites with free ePub and mobi ebooks Home
SumatraPDF 2.1 released Home
Embedding binary resources on Windows Home
Compile-time asserts in C Home
Basics of writing DOS .bat batch files Home
High-resolution timer for timing code fragments Home
Find programming work by increasing luck surface area Home
Business of Software talks Home
Review of “Hot text - web writing that works” Home
SumatraPDF 2.0 released Home
A list of chm readers/viewers for Windows Home
Business articles Home
Go programming articles Home
Showing HTML from memory in an embedded web control on Windows Home
Good programming practices Home
SumatraPDF 1.9 released Home
SumatraPDF 1.8 released Home
SumatraPDF 1.7 released Home
Experience porting 4k lines of C code to Go Home
SumatraPDF 1.6 released Home
Easy vs. probable or how to make money with software Home
90% of success is showing up - a proof Home
SumatraPDF 1.5 released Home
SumatraPDF 1.4 released Home
XML is really, really slow Home
My social marketing failure Home
SumatraPDF 1.3 released Home
Writing a custom installer for Windows software Home
Comparison of executable compressors: UPX 3.07w vs. MPRESS 2.17 Home
SumatraPDF 1.2 released Home
Using averages - a common performance measurement mistake Home
8 habits for becoming a better programmer Home
Preventing duplicate posts in forum or blog-commenting software Home
SEO is harder than you think Home
Tools that find bugs in C and C++ code via static code analysis Home
Go vs. Python for a simple web server Home
SumatraPDF 1.1 release Home
uISV stories Home
Productivity ideas Home
E-books economics Home
The best CAPTCHA is an exotic CAPTCHA Home
SumatraPDF 1.0 released Home
Sumatra 0.9.4 release Home
ssh tips Home
SumatraPDF 0.9.3 released Home
SumatraPDF 0.9.1 released Home
SumatraPDF 0.9 released Home
realloc() on Windows vs. Linux Home
SumatraPDF 0.8.1 release Home
The future is here, it’s just not evenly distributed Home
Principle of good design: discoverability Home
Bugs and eyeballs Home
Defining Professionalism for Software Engineers Home
Engineering school (summary of Rick Catell talk) Home
1355 d filerotate - Go library for rotating files Home / Software
1376 d Hide header on scroll in Svelte Home
How I reverse engineered Notion API Home
1377 d Summary of "The Mom Test," a book about validating business ideas Home
Diary of a solo dev building a web app Home
Companies using Go Home
Rewritten - tales of rewriting software from X to Go Home
Using MySQL in Docker for local testing in Python Home
A short guide to marketing for developers Home
Essentials of starting an indie business Home
Finding freelancers Home
Advanced web spidering with Puppeteer Home
Small business stories Home
Portable Executable File Format Home
Basics of freelancing Home
Big projects written in Go Home
Summary of “Sell to Strangers” video about content marketing Home
Summary of Founders Battle Talk #7 about SEO Home
Social media image sizes Home
Sending emails with Mailgun in Go Home
TypeScript basics Home
Using GitHub Actions with Go Home
Using Go instead of bash for scripts Home
Programming articles Home
1558 d Tech note: speed of iteration in programming Home / Diary of a solo dev building a web app
1559 d Day 35: fixed OneDrive and Google Drive token refresh Home / Diary of a solo dev building a web app
1560 d Tech note: JavaScript debugging helpers Home / Diary of a solo dev building a web app
Tech note: Dropbox login Home / Diary of a solo dev building a web app
Day 34: more Backblaze and refactoring Home / Diary of a solo dev building a web app
1562 d Day 33: more Backblaze Home / Diary of a solo dev building a web app
1564 d Day 25: Google Drive support Home / Diary of a solo dev building a web app
Day 18: improving S3 upload Home / Diary of a solo dev building a web app
Day 5: setting up a website Home / Diary of a solo dev building a web app
Day 4: S3, sorting, and remembering credentials Home / Diary of a solo dev building a web app
Day 3: Dropbox Home / Diary of a solo dev building a web app
Day 2: displaying a list of files Home / Diary of a solo dev building a web app
Day 1: tech stack, creating a project from scratch Home / Diary of a solo dev building a web app
Day 31: tweaking bookmarks list Home / Diary of a solo dev building a web app
Day 0: the idea Home / Diary of a solo dev building a web app
Day 30: better dialogs Home / Diary of a solo dev building a web app
Day 29: optimizing file representation and S3 Home / Diary of a solo dev building a web app
Day 28: OneDrive support, more file properties Home / Diary of a solo dev building a web app
Day 7: context menu, file delete Home / Diary of a solo dev building a web app
JavaScript optimization story Home / Diary of a solo dev building a web app
Day 8: more file deletion and file upload Home / Diary of a solo dev building a web app
Day 9: Dropbox upload Home / Diary of a solo dev building a web app
Day 10: S3 file deletion and UI tweaks Home / Diary of a solo dev building a web app
Day 11: upload a file to the local filesystem Home / Diary of a solo dev building a web app
Day 12: S3 upload and directory deletion Home / Diary of a solo dev building a web app
Day 13: local filesystem fixes Home / Diary of a solo dev building a web app
Day 27: better Google Drive login and OneDrive support Home / Diary of a solo dev building a web app
Day 14: image preview, file rename Home / Diary of a solo dev building a web app
Day 15: text preview Home / Diary of a solo dev building a web app
Day 16: bookmarks Home / Diary of a solo dev building a web app
Day 17: file download Home / Diary of a solo dev building a web app
Day 26: more Google Drive support Home / Diary of a solo dev building a web app
Day 6: Dropbox fix, bug fixes and small improvements Home / Diary of a solo dev building a web app
Day 24: dialog refactoring Home / Diary of a solo dev building a web app
Day 32: optimizations and Backblaze Home / Diary of a solo dev building a web app
Day 23: file copy Home / Diary of a solo dev building a web app
Day 19: analytics, context menu Home / Diary of a solo dev building a web app
Day 20: filesystem refactoring Home / Diary of a solo dev building a web app
Day 21: creating S3 directories and tracking modification times Home / Diary of a solo dev building a web app
Day 22: file properties Home / Diary of a solo dev building a web app
1565 d Programmer productivity: lines of code edition Home / Diary of a solo dev building a web app
1573 d Filerion marketing Home / Diary of a solo dev building a web app
1576 d Thoughts on developer productivity Home / Diary of a solo dev building a web app
Filerion tech stack Home / Diary of a solo dev building a web app
Using Roam Research for productivity Home / Diary of a solo dev building a web app
Thoughts on documentation Home / Diary of a solo dev building a web app
Thoughts on getting user feedback Home / Diary of a solo dev building a web app
1583 d Upload files from your computer Home / Software / Filerion documentation
S3 and directories Home / Software / Filerion documentation
1891 d Pure Bash Bible Home
1892 d Vim Reference Home
Using Notion API Go client Home / Software
siser Home / Software
atomicfile - robustly writing to a file in Go Home / Software
2642 d Pigz Windows port Home / Software
2924 d Go Cookbook Home
3397 d Solo founders with profitable businesses, collected stories Home