1 d |
Fixing Zed's debugger keybindings
Home
|
|
Ideas for faster web dev cycle
Home
|
2 d |
AltTab for Mac OS
Home
|
|
Stage manager in Mac OS
Home
|
|
Zed debug setup for go server / Svelte web app
Home
|
3 d |
Using await in Svelte 5 components
Home
|
|
lazy import of JavaScript modules
Home
|
4 d |
vite /rollup manualChunks
Home
|
5 d |
Increase software sales by 50% or more
Home
|
6 d |
File sync is very slow
Home
|
13 d |
New Edna feature: multiple notes
Home
|
14 d |
Evolving Edna Ask AI UI
Home
|
|
Desktop UI frameworks written by a single person
Home
|
15 d |
Calling Grok, OpenAI, Anthropic, Google, OpenRouter API from the browser
Home
|
|
Implementing UI translation in SumatraPDF, a C++ Windows application
Home
|
16 d |
Increase open file limit on Ubuntu Linux
Home
|
|
Case study of over-engineered C++ code
Home
|
17 d |
Explaining nil interface{} gotcha in Go
Home
|
18 d |
Size textarea to content
Home
|
20 d |
All about Svelte 5 snippets
Home
|
21 d |
C++ engineering decision in SumatraPDF code
Home
|
22 d |
Bugs I fixed in SumatraPDF
Home
|
23 d |
Implementation of optimized vector of strings in C++ in SumatraPDF
Home
|
24 d |
Custom search UI in CodeMirror 6 and Svelte 5
Home
|
26 d |
Notion-like compact table of contents in JavaScript
Home
|
27 d |
Go is 80/20 language
Home
|
28 d |
Automatic Chrome Dev Tools workspace setup
Home
|
29 d |
How I made SumatraPDF crash less
Home
|
31 d |
Ban std::string
Home
|
|
Compressing for the browser in Go
Home
|
32 d |
Thoughts on C/C++ killer
Home
|
33 d |
Implementing nested context menu in Svelte 5
Home
|
|
Idea for code editors
Home
|
35 d |
Optimizing calling Windows DLL functions in Go
Home
|
38 d |
Simplest C++ callback, from SumatraPDF
Home
|
41 d |
Why Go iterators are ugly, clever and elegant
Home
|
42 d |
Showing UI on mouse move, in Svelte 5
Home
|
328 d |
Man vs. AI: optimizing JavaScript (Claude, Cursor)
Home
|
|
Modern C++
Home
|
329 d |
Software
Home
|
333 d |
Implementing Notion-like table of contents in JavaScript
Home
|
391 d |
Porting a medium-sized Vue application to Svelte 5
Home
|
469 d |
Changing font size in Windows dialog in C++
Home
|
855 d |
How I implemented wc in the browser in 3 days
Home
|
865 d |
Advanced markdown processing in Go
Home
|
867 d |
Persisted Svelte store using IndexedDB
Home
|
885 d |
I’m a Go freelancer for hire
Home / About me
|
|
About me
Home
|
886 d |
Thoughts on Go after writing 3 websites
Home
|
888 d |
Hiding duplicate content from your site via robots.txt
Home
|
|
Writings
Home
|
890 d |
Logging HTTP requests in Go
Home
|
891 d |
How I improved SumatraPDF performance by ~60%
Home
|
|
Summary of David Ditzel talk on binary translation
Home / Where do bugs come from?
|
|
Startup management lessons from “The Social Network”
Home
|
|
Value your time
Home
|
|
Paradox of bad comments
Home
|
|
Writing to sell
Home
|
|
Where do bugs come from?
Home
|
|
Marketing lessons from WebP launch
Home
|
|
You have to implement to understand
Home
|
|
Designing web forums software
Home
|
|
gflags - a debugging story
Home
|
|
Document your software
Home
|
|
Using Fabric for deploying server software
Home
|
|
On difference between amateur and professional shareware
Home
|
|
Summary of talk on continuous deployment
Home
|
892 d |
XML is really, really slow
Home
|
|
Sumatra PDF 0.3 released
Home
|
|
SumatraPDF 1.6 released
Home
|
|
Experience porting 4k lines of C code to go
Home
|
|
90% of success is showing up - a proof
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
|
|
SumatraPDF 1.5 released
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.4 released
Home
|
|
How I ported pigz from Unix to Windows
Home
|
|
SumatraPDF 2.4 released
Home
|
|
Engineering and Computer Science in the Real World
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
|
|
What I've learned from "After the Gold Rush"
Home
|
|
Engineering school (summary of Rick Catell talk)
Home
|
|
Bugs and eyeballs
Home
|
|
Principle of good design: discoverability
Home
|
|
The future is here, it’s just not evenly distributed
Home
|
|
Good programming practices
Home
|
|
Review of “Hot text - web writing that works”
Home
|
|
Accurate timers on Windows
Home
|
|
High-resolution timer for timing code fragments
Home
|
|
Basics of writing DOS .bat batch files
Home
|
|
Compile-time asserts in C
Home
|
|
Tutorial for CLSS flexbox library for Go
Home
|
|
Guide to predefined macros in C++ compilers (gcc, clang, msvc etc.)
Home
|
|
Embedding binary resources on Windows
Home
|
|
Sumatra PDF is born
Home
|
|
Easy vs. probable or how to make money with software
Home
|
|
Sumatra PDF 0.2 released
Home
|
|
Performance optimization story
Home
|
|
57 MicroConf videos for self-funded software businesses
Home
|
|
Business articles
Home
|
|
SumatraPDF 0.4 released
Home
|
|
SumatraPDF 0.5 released
Home
|
|
My social marketing failure
Home
|
|
Few things I’ve learned when writing Sumatra PDF
Home
|
|
A debugging story
Home
|
|
Go programming articles
Home
|
|
SumatraPDF 0.6 released
Home
|
|
SumatraPDF 1.3 released
Home
|
|
Sane #include hierarchy for C and C++
Home
|
|
Sumatra PDF 0.7 released
Home
|
|
Sumatra 0.8 released
Home
|
|
Powering a blog with Notion and Netlify
Home
|
|
Variadic Macros (C++)
Home
|
|
SumatraPDF 0.8.1 release
Home
|
|
Trade offs in designing versatile log format
Home
|
|
Writing a custom installer for Windows software
Home
|
|
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
|
|
List of CHM readers and viewers for Window
Home
|
|
List of ePub format readers and viewers for Windows
Home
|
|
List of mobi format readers and viewers for Windows
Home
|
|
List of website with free eBooks in EPUB and MOBI formats
Home
|
|
realloc() on Windows vs. Linux
Home
|
|
The Silver Searcher windows port
Home / Software
|
|
How I use Roam Research
Home
|
|
Lessons learned from 15 years of SumatraPDF
Home
|
|
SumatraPDF 0.9 released
Home
|
|
Find programming work by increasing luck surface area
Home
|
|
SumatraPDF 1.2 released
Home
|
|
Executable compressors comparisons: upx 3.07w vs. mpress 2.17
Home
|
|
SumatraPDF 0.9.1 released
Home
|
|
SumatraPDF 0.9.3 released
Home
|
|
ssh tips
Home
|
|
Sumatra 0.9.4 release
Home
|
|
SumatraPDF 1.0 released
Home
|
|
Best captcha is exotic captcha
Home
|
|
E-books economics
Home
|
|
Productivity ideas
Home
|
|
@levelsio and survivorship bias
Home
|
|
Extreme #include discipline for C++ code
Home
|
|
uISV stories
Home
|
|
SumatraPDF 1.1 release
Home
|
|
Go vs. Python for a simple web server
Home
|
|
Tools that find bugs in c and c++ code via static code analysis
Home
|
|
SEO is harder than you think
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
|
900 d |
filerotate - Go library for rotating files
Home / Software
|
921 d |
Hide header on scroll in Svelte
Home
|
|
How I reverse engineered Notion API
Home
|
922 d |
Diary of a solo dev building a web app
Home
|
|
Typescript basics
Home
|
|
Basics of freelancing
Home
|
|
Small business stories
Home
|
|
Big projects written in Go
Home
|
|
Companies using go
Home
|
|
Programming articles
Home
|
|
Social media image sizes
Home
|
|
Summary of “Sell to Strangers” video about content marketing
Home
|
|
Summary of Founders Battle Talk #7 about SEO
Home
|
|
Portable Executable File Format
Home
|
|
Rewritten - tales of rewriting software from X to Go
Home
|
|
Sending emails with Mailgun in Go
Home
|
|
Using MySQL in Docker for local testing in Python
Home
|
|
A short guide to marketing for developers
Home
|
|
Essentials of Starting Indie Business
Home
|
|
Finding freelancers
Home
|
|
Using Go instead of bash for scripts
Home
|
|
Using GitHub Actions with Go
Home
|
|
Summary Of "The Mom test" book about validating business ideas
Home
|
|
Advanced web spidering with Puppeteer
Home
|
1103 d |
Tech note: speed of iteration in programming
Home / Diary of a solo dev building a web app
|
1104 d |
Day 35: fixed onedrive, gdrive token refresh
Home / Diary of a solo dev building a web app
|
1105 d |
Tech note: Dropbox login
Home / Diary of a solo dev building a web app
|
|
Tech note: JavaScript debugging helpers
Home / Diary of a solo dev building a web app
|
|
Day 34: more backblaze, refactorings
Home / Diary of a solo dev building a web app
|
1107 d |
Day 33: more backblaze
Home / Diary of a solo dev building a web app
|
1109 d |
Day 25: Google Drive support
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
|
|
JavaScript optimization story
Home / Diary of a solo dev building a web app
|
|
Day 32: optimizations, backblaze
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 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 27: better Google Drive login, One Drive support
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 24: dialog refactoring
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 23: file copy
Home / Diary of a solo dev building a web app
|
|
Day 1: tech stack, creating project from scratch
Home / Diary of a solo dev building a web app
|
|
Day 2: displaying list of files
Home / Diary of a solo dev building a web app
|
|
Day 3: Dropbox
Home / Diary of a solo dev building a web app
|
|
Day 4: s3, sorting, remembering credentials
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 6: Dropbox fix, bug fixes and small improvements
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
|
|
Day 8: more file delete, 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 delete, ui tweaks
Home / Diary of a solo dev building a web app
|
|
Day 11: upload file to local fs
Home / Diary of a solo dev building a web app
|
|
Day 12: s3 upload and delete directories
Home / Diary of a solo dev building a web app
|
|
Day 13: local fs fixes
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 18: improving s3 upload
Home / Diary of a solo dev building a web app
|
|
Day 22: file properties
Home / Diary of a solo dev building a web app
|
|
Day 20: fs refactoring
Home / Diary of a solo dev building a web app
|
|
Day 21: s3 create new dir, last modification time
Home / Diary of a solo dev building a web app
|
1110 d |
Programmer productivity: lines of code edition
Home / Diary of a solo dev building a web app
|
1118 d |
Filerion marketing
Home / Diary of a solo dev building a web app
|
1121 d |
Using Roam Research for productivity
Home / Diary of a solo dev building a web app
|
|
Filerion tech stack
Home / Diary of a solo dev building a web app
|
|
Thoughts on developer productivity
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
|
|
Thoughts on documentation
Home / Diary of a solo dev building a web app
|
1128 d |
S3 and directories
Home / Software / Filerion documentation
|
|
Upload files from your computer
Home / Software / Filerion documentation
|
1436 d |
Pure Bash Bible
Home
|
1437 d |
Vim Reference
Home
|
|
Using Notion API Go client
Home / Software
|
|
siser
Home / Software
|
|
atomicfile - robustly writing to a file in Go
Home / Software
|
2169 d |
Fuzzing Markdown parser written in Go
Home / Go Cookbook
|
2187 d |
Pigz windows port
Home / Software
|
2469 d |
Go Cookbook
Home
|
2912 d |
Experience porting 4.5k loc of C to Go (Facebook's CSS flexbox implementation Yoga)
Home / Go Cookbook
|
2935 d |
3 ways to iterate in Go
Home / Go Cookbook
|
2936 d |
Using MySQL in Docker for local testing In Go
Home / Go Cookbook
|
|
Rotate log files daily in Go
Home / Go Cookbook
|
|
Simple serialization format for logging and analytics in Go
Home / Go Cookbook
|
|
Embedding build number in Go executable
Home / Go Cookbook
|
|
HTTPS for free in Go, with little help of Let's Encrypt
Home / Go Cookbook
|
|
Advanced command execution in Go with os/exec
Home / Go Cookbook
|
|
Generating good unique ids in Go
Home / Go Cookbook
|
2942 d |
Solo founders with profitable businesses, collected stories
Home
|