Home
Software
Writings
Contact Me
Recently updated:
2 d All about Svelte 5 snippets Home
3 d C++ engineering decision in SumatraPDF code Home
4 d Bugs I fixed in SumatraPDF Home
5 d Implementation of optimized vector of strings in C++ in SumatraPDF Home
6 d Custom search UI in CodeMirror 6 and Svelte 5 Home
8 d Notion-like compact table of contents in JavaScript Home
9 d Go is 80/20 language Home
10 d Automatic Chrome Dev Tools workspace setup Home
11 d How I made SumatraPDF crash less Home
13 d Compressing for the browser in Go Home
Ban std::string Home
14 d Thoughts on C/C++ killer Home
15 d Implementing nested context menu in Svelte 5 Home
Idea for code editors Home
17 d Optimizing calling Windows DLL functions in Go Home
20 d Simplest C++ callback, from SumatraPDF Home
23 d Why Go iterators are ugly, clever and elegant Home
24 d Showing UI on mouse move, in Svelte 5 Home
310 d Modern C++ Home / Writings
Man vs. AI: optimizing JavaScript (Claude, Cursor) Home
311 d Software Home
315 d Implementing Notion-like table of contents in JavaScript Home
373 d Porting a medium-sized Vue application to Svelte 5 Home
451 d Changing font size in Windows dialog in C++ Home
837 d How I implemented wc in the browser in 3 days Home
847 d Advanced markdown processing in Go Home
849 d Persisted Svelte store using IndexedDB Home
867 d About me Home
I’m a Go freelancer for hire Home / About me
868 d Thoughts on Go after writing 3 websites Home
870 d Hiding duplicate content from your site via robots.txt Home
Website Home
Writings Home
872 d Logging HTTP requests in Go Home / Writings / Go programming articles
873 d Designing web forums software Home
Using Fabric for deploying server software Home
Marketing lessons from WebP launch Home
Document your software Home
Summary of David Ditzel talk on binary translation Home / Where do bugs come from?
On difference between amateur and professional shareware Home / My future is so bright that I’ll need to wear sunglasses
Where do bugs come from? Home
gflags - a debugging story Home
Writing to sell Home
Paradox of bad comments Home
You have to implement to understand Home
How I improved SumatraPDF performance by ~60% Home
Value your time Home
Startup management lessons from “The Social Network” Home
Summary of talk on continuous deployment Home
874 d SumatraPDF 0.9.3 released Home
@levelsio and survivorship bias Home
Tools that find bugs in c and c++ code via static code analysis Home
SEO is harder than you think Home
SumatraPDF 1.1 release Home
uISV stories Home
Productivity ideas Home
Preventing duplicate posts in forum or blog commenting software Home
8 habits for becoming a better programmer Home
Using averages - a common performance measurement mistake Home
SumatraPDF 1.2 released Home
Executable compressors comparisons: upx 3.07w vs. mpress 2.17 Home
Writing a custom installer for Windows software Home
SumatraPDF 1.3 released Home
My social marketing failure Home
XML is really, really slow Home
SumatraPDF 1.4 released Home
SumatraPDF 1.5 released Home
90% of success is showing up - a proof Home
Easy vs. probable or how to make money with software Home
SumatraPDF 1.6 released Home
Experience porting 4k lines of C code to go Home
E-books economics Home
SumatraPDF 1.7 released Home
SumatraPDF 1.8 released Home
SumatraPDF 1.9 released Home
Showing html from memory in embedded web control on windows Home
A list of chm readers/viewers for Windows Home
SumatraPDF 2.0 released Home
Buying a certificate for signing windows applications Home
SumatraPDF 2.1 released Home
Websites with free ePub and mobi ebooks Home
How I sped up Go by 20% (or is Go really slower than Java?) Home
Best captcha is exotic captcha Home
Speeding up Go with custom allocators Home / Go Cookbook
Design and implementation of translation system for desktop software Home
SumatraPDF 2.2 released Home
SumatraPDF 1.0 released Home
How I ported pigz from Unix to Windows Home
SumatraPDF 2.4 released Home
Sumatra 0.9.4 release Home
SumatraPDF 2.5.2 released Home
SumatraPDF 3.0 released Home
Tip for per-test verbose logging in Go Home
Improving speed of SMAZ compressor by 2.6x/1.5x Home / Go Cookbook
Accessing GitHub API from Go Home / Go Cookbook
Go package for better guid generation Home
Extracting files from .7z archives in Go Home / Go Cookbook
Optimizing JavaScript by using arrays instead of objects Home
Analyzing browserify bundles to minimize JavaScript bundle size Home
ssh tips Home
Go vs. Python for a simple web server Home
SumatraPDF 0.9.1 released Home
SumatraPDF 0.9 released Home
realloc() on Windows vs. Linux Home
SumatraPDF 0.8.1 release Home
Variadic Macros (C++) Home
Sumatra 0.8 released Home
Sumatra PDF 0.7 released Home
Sane #include hierarchy for C and C++ Home
SumatraPDF 0.6 released Home
Tutorial for CLSS flexbox library for Go Home
Guide to predefined macros in C++ compilers (gcc, clang, msvc etc.) 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
57 MicroConf videos for self-funded software businesses Home
Performance optimization story Home
Sumatra PDF 0.2 released Home
Things I Learned the Hard Way: Engineering and Computer Science in the Real World Home / Writings
Sumatra PDF is born Home
Embedding binary resources on Windows Home
Compile-time asserts in C Home
Basics of writing DOS .bat batch files Home
Extreme #include discipline for C++ code Home
High-resolution timer for timing code fragments Home
Accurate timers on Windows Home
Review of “Hot text - web writing that works” Home
Good programming practices Home
The future is here, it’s just not evenly distributed Home
Powering a blog with Notion and Netlify Home
Principle of good design: discoverability Home
Bugs and eyeballs Home
Trade offs in designing versatile log format Home
Engineering school (summary of Rick Catell talk) Home / Writings
Lessons learned porting 50k loc from Java to Go Home
The things we do to ship desktop software Home
List of CBR, CBZ comic book readers for windows Home / Writings
List of CHM readers and viewers for Window Home / Writings
List of ePub format readers and viewers for Windows Home / Writings
List of mobi format readers and viewers for Windows Home / Writings
List of website with free eBooks in EPUB and MOBI formats Home / Writings
Go programming articles Home / Writings
The Silver Searcher windows port Home / Software
How I use Roam Research Home
Lessons learned from 15 years of SumatraPDF Home
Business articles Home / Writings
Find programming work by increasing luck surface area Home
What I've learned from "After the Gold Rush" Home / Writings
882 d filerotate - Go library for rotating files Home / Software
903 d Hide header on scroll in Svelte Home / Writings / Programming articles
How I reverse engineered Notion API Home / Writings / Programming articles
904 d Finding freelancers Home / Writings / Business articles
Advanced web spidering with Puppeteer Home / Writings / Programming articles
Using GitHub Actions with Go Home / Writings / Go programming articles
Using Go instead of bash for scripts Home / Writings / Go programming articles
Small business stories Home / Writings / Business articles
Big projects written in Go Home / Writings / Go programming articles
Companies using go Home / Writings / Go programming articles
Sending emails with Mailgun in Go Home / Writings / Go programming articles
Rewritten - tales of rewriting software from X to Go Home / Writings / Go programming articles
Diary of a solo dev building a web app Home / Writings
Using MySQL in Docker for local testing in Python Home / Writings / Programming articles
A short guide to marketing for developers Home / Writings / Business articles
Essentials of Starting Indie Business Home / Writings / Business articles
Typescript basics Home / Writings / Programming articles
Portable Executable File Format Home / Writings
Summary of Founders Battle Talk #7 about SEO Home / Writings / Business articles
Summary of “Sell to Strangers” video about content marketing Home / Writings / Business articles
Summary Of "The Mom test" book about validating business ideas Home / Writings / Business articles
Social media image sizes Home / Writings / Programming articles
Basics of freelancing Home / Writings / Business articles
Programming articles Home / Writings
1085 d Tech note: speed of iteration in programming Home / Writings / Diary of a solo dev building a web app
1086 d Day 35: fixed onedrive, gdrive token refresh Home / Writings / Diary of a solo dev building a web app
1087 d Tech note: Dropbox login Home / Writings / Diary of a solo dev building a web app
Tech note: JavaScript debugging helpers Home / Writings / Diary of a solo dev building a web app
Day 34: more backblaze, refactorings Home / Writings / Diary of a solo dev building a web app
1089 d Day 33: more backblaze Home / Writings / Diary of a solo dev building a web app
1091 d Day 10: s3 file delete, ui tweaks Home / Writings / Diary of a solo dev building a web app
Day 9: Dropbox upload Home / Writings / Diary of a solo dev building a web app
Day 0: the idea Home / Writings / Diary of a solo dev building a web app
Day 14: image preview, file rename Home / Writings / Diary of a solo dev building a web app
Day 1: tech stack, creating project from scratch Home / Writings / Diary of a solo dev building a web app
Day 15: text preview Home / Writings / Diary of a solo dev building a web app
Day 2: displaying list of files Home / Writings / Diary of a solo dev building a web app
Day 16: bookmarks Home / Writings / Diary of a solo dev building a web app
Day 17: file download Home / Writings / Diary of a solo dev building a web app
Day 18: improving s3 upload Home / Writings / Diary of a solo dev building a web app
Day 19: analytics, context menu Home / Writings / Diary of a solo dev building a web app
Day 20: fs refactoring Home / Writings / Diary of a solo dev building a web app
Day 21: s3 create new dir, last modification time Home / Writings / Diary of a solo dev building a web app
Day 3: Dropbox Home / Writings / Diary of a solo dev building a web app
Day 22: file properties Home / Writings / Diary of a solo dev building a web app
Day 23: file copy Home / Writings / Diary of a solo dev building a web app
Day 24: dialog refactoring Home / Writings / Diary of a solo dev building a web app
Day 25: Google Drive support Home / Writings / Diary of a solo dev building a web app
Day 26: more google drive support Home / Writings / Diary of a solo dev building a web app
Day 27: better Google Drive login, One Drive support Home / Writings / Diary of a solo dev building a web app
Day 28: OneDrive support, more file properties Home / Writings / Diary of a solo dev building a web app
Day 29: optimizing file representation and s3 Home / Writings / Diary of a solo dev building a web app
Day 30: better dialogs Home / Writings / Diary of a solo dev building a web app
Day 31: tweaking bookmarks list Home / Writings / Diary of a solo dev building a web app
JavaScript optimization story Home / Writings / Diary of a solo dev building a web app
Day 4: s3, sorting, remembering credentials Home / Writings / Diary of a solo dev building a web app
Day 32: optimizations, backblaze Home / Writings / Diary of a solo dev building a web app
Day 13: local fs fixes Home / Writings / Diary of a solo dev building a web app
Day 5: setting up a website Home / Writings / Diary of a solo dev building a web app
Day 12: s3 upload and delete directories Home / Writings / Diary of a solo dev building a web app
Day 11: upload file to local fs Home / Writings / Diary of a solo dev building a web app
Day 6: Dropbox fix, bug fixes and small improvements Home / Writings / Diary of a solo dev building a web app
Day 7: context menu, file delete Home / Writings / Diary of a solo dev building a web app
Day 8: more file delete, file upload Home / Writings / Diary of a solo dev building a web app
1092 d Programmer productivity: lines of code edition Home / Writings / Diary of a solo dev building a web app
1100 d Filerion marketing Home / Writings / Diary of a solo dev building a web app
1103 d Thoughts on getting user feedback Home / Writings / Diary of a solo dev building a web app
Using Roam Research for productivity Home / Writings / Diary of a solo dev building a web app
Thoughts on documentation Home / Writings / Diary of a solo dev building a web app
Thoughts on developer productivity Home / Writings / Diary of a solo dev building a web app
Filerion tech stack Home / Writings / Diary of a solo dev building a web app
1110 d S3 and directories Home / Software / Filerion documentation
Upload files from your computer Home / Software / Filerion documentation
1418 d Pure Bash Bible Home / Writings
1419 d Using Notion API Go client Home / Software
atomicfile - robustly writing to a file in Go Home / Software
Vim Reference Home / Writings
siser Home / Software
2151 d Fuzzing Markdown parser written in Go Home / Go Cookbook
2169 d Pigz windows port Home / Software
2451 d Go Cookbook Home / Writings
2894 d Experience porting 4.5k loc of C to Go (Facebook's CSS flexbox implementation Yoga) Home / Go Cookbook
2917 d 3 ways to iterate in Go Home / Go Cookbook
2918 d Embedding build number in Go executable Home / Go Cookbook
Rotate log files daily in Go Home / Go Cookbook
Using MySQL in Docker for local testing In Go Home / Go Cookbook
HTTPS for free in Go, with little help of Let's Encrypt Home / Go Cookbook
Simple serialization format for logging and analytics in Go Home / Go Cookbook
Advanced command execution in Go with os/exec Home / Go Cookbook
Generating good unique ids in Go Home / Go Cookbook
2924 d Solo founders with profitable businesses, collected stories Home

Krzysztof Kowalczyk