About:

Personal page of Krzysztof Kowalczyk. Programmer, creator of SumatraPDF.

Website:

Incoming Links:

Outgoing Links:

Patrick McKenzie
Subscribe to RSS:
The article discusses the design and implementation of a translation system for the user interface of SumatraPDF, a free and open-source PDF viewer. It details the challenges of translating application strings into 72 languages, t...
The post explains the concept of the empty interface in Go, denoted as interface{}, and its peculiar behavior regarding nil values. It discusses how nil is an abstract value representing zero values for various types, and why an u...
The post discusses the engineering decisions behind the C++ codebase of SumatraPDF, emphasizing its goals of speed, reliability, and minimalism. The author shares insights on various coding practices, such as using UTF-8 strings, ...
The article details the author's implementation of the StrVec class, an optimized array for storing multiple strings in C++ for the SumatraPDF project. It discusses the limitations of using standard STL containers like std::vector...
The article discusses strategies for increasing software sales by improving product registration rates. It emphasizes the importance of understanding customer perspectives, emotional investment in purchase decisions, and the effec...
The post discusses the concept of over-engineered code in C++, using specific examples to illustrate how unnecessary complexity can be introduced through object-oriented design. It critiques a specific implementation of file forma...
This article details the implementation of a custom search UI in the Edna note-taking application using CodeMirror 6 and Svelte 5. It explains how to integrate the @codemirror/search package to create a tailored search experience,...
The blog post discusses the process of splitting JavaScript bundles into chunks for lazy loading in a large web application using Rollup and Vite. The author shares their experience with optimizing the bundle size by separating li...
The author reflects on their experiences fixing bugs in the SumatraPDF application, emphasizing the importance of examining the causes of bugs to improve productivity as a programmer. They discuss specific bugs encountered, the re...
A guide on configuring PowerShell to run the Visual Studio C++ compiler (cl.exe) by replicating the environment setup of vcvarsall.bat.
TOON is a new, more efficient text format than JSON, designed for better readability and lower data transmission costs, especially for LLM AIs.
The post discusses the importance of fast iteration cycles in programming, particularly in web development. It emphasizes the need for quick transitions from writing code to testing it, highlighting the drawbacks of slow compilati...
The article discusses the implementation of a compact table of contents (ToC) for documentation pages, specifically for the Edna note-taking application. It highlights the importance of having a ToC for navigation, inspired by Not...
The post discusses the concept of lazy importing in JavaScript, particularly for large web applications. It explains how to split the bundle into multiple chunks and load them only when necessary, which improves loading speed. The...
The blog post discusses the use of snippets in Svelte 5, explaining how they can simplify HTML rendering by allowing developers to define reusable functions that generate HTML based on arguments. It covers various use cases for sn...
Svelte 5 introduces the ability to use async functions within components, allowing for improved handling of asynchronous operations. The article discusses how to implement an async function for multiplication and demonstrates the ...
The article discusses the challenges of writing desktop software due to the limitations of traditional UI technologies like Windows' win32 APIs and Mac's Cocoa. It highlights the popularity of Electron for cross-platform apps but ...
The post describes the author's experience setting up Zed to debug both a Go server and a Svelte web app simultaneously. The author outlines the development setup, including the use of specific arguments for the Go server and the ...
The author shares insights on integrating LLM APIs into a note-taking app, Edna, focusing on streaming responses. They discuss the OpenAI API and its compatibility with other LLMs like xAI's Grok and OpenRouter. The author notes t...
The blog post discusses the iterative design process of the UI for the 'Ask AI' feature in the Edna note-taking application. It highlights both the strengths and weaknesses of the initial version, emphasizing the importance of cle...
Benchmarking reveals that while JSON serialization is faster, TOON libraries in Go offer comparable performance without being a deal breaker for speed.
The blog post discusses the importance of adjusting the open file limit on Linux servers, particularly for web applications. It highlights the default limit of 1024 files, which can lead to failures in file and network connections...
The post discusses the Stage Manager feature in Mac OS, which helps manage multiple windows by displaying thumbnails on the left edge of the screen. It requires enabling in system settings and allows users to group windows for les...
The post discusses the new feature of multiple notes in the Edna application, detailing functionalities such as note switching, creating, deleting, archiving, and renaming notes. It highlights keyboard shortcuts for efficient navi...