Home
•
Software
•
Writings
blog posts
edit
in:
Writings
2022
Find programming work by increasing luck surface area
Extreme #include discipline for C++ code
2021
@levelsio and survivorship bias
Lessons learned from 15 years of SumatraPDF, an open source Windows app
How I use Roam Research
2019
The things we do to ship desktop software
Lessons learned porting 50k loc from Java to Go
Trade offs in designing versatile log format
2018
How I implemented Oembed Proxy for GitHub
Powering a blog with Notion and Netlify
2017
Business of Software talks
57 MicroConf videos for self-funded software businesses
Solo founders with profitable businesses, collected stories
Analyzing browserify bundles to minimize JavaScript bundle size
Tutorial for github.com/kjk/flex Go package (implementation of CSS flexbox algorithm)
Guide to predefined macros in C++ compilers (gcc, clang, msvc etc.)
2016
Optimizing JavaScript by using arrays instead of objects
2015
Extracting files from .7z archives in Go
Go package for better guid generation
Accessing GitHub API from Go
2014
SumatraPDF 3.0 released
Improving speed of SMAZ compressor by 2.6x/1.5x
Notes on Ansible
Tip for per-test verbose logging in Go
SumatraPDF 2.5.2 released
2013
Using Fabric for deploying server software
SumatraPDF 2.4 released
Inspiration for programmers that want a passive business
How I ported pigz from Unix to Windows
2012
Hiding duplicate content from your site via robots.txt
Speeding up Go with custom allocators
Thoughts on Go after writing 3 websites
Design and implementation of translation system for desktop software
SumatraPDF 2.2 released
How I sped up Go by 20% (or is Go really slower than Java?)
Websites with free ePub and mobi ebooks
SumatraPDF 2.0 released
SumatraPDF 2.1 released
Buying a certificate for signing windows applications
2011
A list of chm readers/viewers for Windows
SumatraPDF 1.9 released
How to make software crash less
SumatraPDF 1.7 released
Showing html from memory in embedded web control on windows
SumatraPDF 1.8 released
Easy vs. probable or how to make money with software
SumatraPDF 1.6 released
SumatraPDF 1.5 released
90% of success is showing up - a proof
Experience porting 4k lines of C code to go
SumatraPDF 1.4 released
XML is really, really slow
Writing a custom installer for Windows software
SumatraPDF 1.3 released
My social marketing failure
2010
Best captcha is exotic captcha
You have to implement to understand
Productivity ideas
E-books economics
Go vs. Python for a simple web server
Summary of talk on continuous deployment
uISV stories
SumatraPDF 1.1 release
SEO is harder than you think
Tools that find bugs in c and c++ code via static code analysis
Value your time
Simple duplicate post detection for your blog, forum or commenting software
Marketing lessons from WebP launch
Startup management lessons from “The Social Network”
8 habits for becoming a better programmer
SumatraPDF 1.2 released
Using averages - a common performance measurement mistake
Executable compressors comparisons: upx 3.07w vs. mpress 2.17
2009
ssh tips
Where do bugs come from?
Sumatra 0.9.4 release
SumatraPDF 1.0 released
2008
How to think
Sumatra 0.8 released
gflags - a debugging story
Variadic Macros (C++)
SumatraPDF 0.8.1 release
realloc() on Windows vs. Linux
SumatraPDF 0.9.3 released
SumatraPDF 0.9.1 released
SumatraPDF 0.9 released
2007
A debugging story
SumatraPDF 0.4 released
SumatraPDF 0.5 released
Few things I’ve learned when writing Sumatra PDF
Sane #include hierarchy for C and C++
SumatraPDF 0.6 released
Sumatra PDF 0.7 released
2006
Basics of mysql
Debugging adventure
Basics of writing DOS .bat batch files
Compile-time asserts in C
Embedding binary resources on Windows
Designing web forums software
Document your software
Sumatra PDF is born
Order of #include headers in C/C++
Deeply nested if statements
Sumatra PDF 0.2 released
Performance optimization story
Paradox of bad comments
How I improved Sumatra performance by ~60%
Sumatra PDF 0.3 released
2005
High-resolution timer for timing code fragments
Accurate timers on Windows
2004
Web writing that works
Review of “Hot text - web writing that works”
Alan Cox on writing better software
2003
Given enough eyeballs make all bugs shallow
My future is so bright that I’ll need to wear sunglasses
Writing to sell
2002
Bugs and eyeballs
Defining Professionalism for Software Engineers
Principle of good design: discoverability
The future is here, it’s just not evenly distributed
Good programming practices
Written on Jun 27 2018.
home
Found a mistake, have a comment?
Let me know
.
Feedback about page:
Feedback:
Optional: your email if you want me to get back to you:
Send Feedback
Cancel