Archives
There are 450 articles.
- More speculations on arenas in C++
- Hierarchical field sort with string interning
- Assemblers in w64devkit, and other updates
- Parameterized types in C using the new tag compatibility rule
- WebAssembly: How to allocate your allocator
- Lessons learned from my first dive into WebAssembly
- A more robust raw OpenBSD syscall demo
- Robust Wavefront OBJ model parsing in C
- Meet the new xxd for w64devkit: rexxd
- Tips for more effective fuzz testing with AFL++
- Examples of quick hash tables and dynamic arrays in C
- Rules to avoid common extended inline assembly mistakes
- Everything I've learned so far about running local LLMs
- Windows dynamic linking depends on the active code page
- Slim Reader/Writer Locks are neato
- Giving C++ std::regex a C makeover
- Deep list copy: More than meets the eye
- Symbol inspection tools for w64devkit: vc++filt and peports
- Arenas and the almighty concatenation operator
- Guidelines for computing sizes and subscripts
- Speculations on arenas and custom strings in C++
- Protecting paths in macro expansions by extending UTF-8
- An improved chkstk function on Windows
- Two handy GDB breakpoint tricks
- So you want custom allocator support in your C library
- My personal C coding style as of late 2023
- A simple, arena-backed, generic dynamic array for C
- An easy-to-implement, arena-friendly hash map
- Arena allocator tips and tricks
- How to link identical function names from different DLLs
- Everything you never wanted to know about Win32 environment blocks
- "Once" one-time concurrent initialization with an integer
- Solving "Two Sum" in C with a tiny hash table
- My ranking of every Shakespeare play
- Hand-written Windows API prototypes: fast, flexible, and tedious
- My favorite C compiler flags during development
- Practical libc-free threading on Linux
- CRT-free in 2023: tips and tricks
- Let's implement buffered, formatted output
- Let's write a setjmp
- My review of the C standard library in practice
- u-config: a new, lean pkg-config clone
- SDL2 common mistakes and how to avoid them
- QOI is now my favorite asset format
- I solved the Dandelions paper-and-pencil game
- How to build a WaitGroup from a 32-bit integer
- Illuminating synchronization edges for ThreadSanitizer
- The quick and practical "MSI" hash table
- My new debugbreak command
- Assertions should be more debugger-oriented
- My take on "where's all the code"
- A lock-free, concurrent, generic queue in 32 bits
- Luhn algorithm using SWAR and SIMD
- A flexible, lightweight, spin-lock barrier
- Compressing and embedding a Wordle word list
- The wild west of Windows command line parsing
- A new protocol and tool for PNG file attachments
- Some sanity for C and C++ development on Windows
- Fast CSV processing with SIMD
- OpenBSD's pledge and unveil from Python
- Billions of Code Name Permutations in 32 bits
- Test cross-architecture without leaving home
- strcpy: a niche function you don't need
- More DLL fun with w64devkit: Go, assembly, and Python
- How to build and use DLLs on Windows
- The cost of Java's EnumSet
- Effects of Fortuna
- A guide to Windows application development using w64devkit
- Well-behaved alias commands on Windows
- Single-primitive authenticated encryption for fun
- State machines are wonderful tools
- You might not need machine learning
- Improving on QBasic's Random Number Generator
- I Solved British Square
- w64devkit: (Almost) Everything You Need
- Asynchronously Opening and Closing Files in Asyncio
- Conventions for Command Line Options
- Exactly-Once Initialization in Asynchronous Python
- Netpbm Animation Showcase
- Latency in Asynchronous Python
- w64devkit: a Portable C and C++ Development Kit for Windows
- How to Read UTF-8 Passwords on the Windows Console
- When Parallel: Pull, Don't Push
- A Go Module Testbed
- A Makefile for Emacs Packages
- Go's Tooling is an Undervalued Technology
- Purgeable Memory Allocations for Linux
- Unintuitive JSON Parsing
- Efficient Alias of a Built-In Emacs Lisp Function
- Chunking Optimizations: Let the Knife Do the Work
- On-the-fly Linear Congruential Generator Using Emacs Calc
- Infectious Executable Stacks
- Legitimate-ish Use of alloca()
- Legitimate Use of Variable Length Arrays
- No, PHP Doesn't Have Closures
- Keyringless GnuPG
- The Long Key ID Collider
- Predictable, Passphrase-Derived PGP Keys
- Go Slices are Fat Pointers
- UTF-8 String Indexing Strategies
- Looking for Entropy in All the Wrong Places
- Fibers: the Most Elegant Windows API
- Endlessh: an SSH Tarpit
- An Async / Await Library for Emacs Lisp
- Python Decorators: Syntactic Artificial Sweetener
- The CPython Bytecode Compiler is Dumb
- The Day I Fell in Love with Fuzzing
- A JavaScript Typed Array Gotcha
- A Survey of $RANDOM
- Why Aren't There C Conferences?
- A JIT Compiler Skirmish with SELinux
- The Missing Computer Skills of High School Students
- From Vimperator to Tridactyl
- Brute Force Incognito Browsing
- Prospecting for Hash Functions
- The Value of Undefined Behavior
- Intercepting and Emulating Linux System Calls with Ptrace
- Minimalist C Libraries
- Emacs 26 Brings Generators and Threads
- When FFI Function Calls Beat Native C
- When the Compiler Bites
- Blast from the Past: Borland C++ on Windows 98
- A Crude Personal Package Manager
- Emacs Lisp Lambda Expressions Are Not Self-Evaluating
- Two Chaotic Motion Demos
- Options for Structured Data in Emacs Lisp
- Inspiration from Data-dependent Rotations
- Debugging Emacs or: How I Learned to Stop Worrying and Love DTrace
- What's in an Emacs Lambda
- Initial Evaluation of the Windows Subsystem for Linux
- Render Multimedia in Pure C
- Make Flet Great Again
- A Branchless UTF-8 Decoder
- Finding the Best 64-bit Simulation PRNG
- Blowpipe: a Blowfish-encrypted, Authenticated Pipe
- Gap Buffers Are Not Optimized for Multiple Cursors
- Ten Years of Blogging
- Vim vs. Emacs: the Working Directory
- A Tutorial on Portable Makefiles
- Introducing the Pokerware Secure Passphrase Generator
- Integer Overflow into Information Disclosure
- Rolling Shutter Simulation in C
- Stack Clashing for Fun and Profit
- Building and Installing Software in $HOME
- Switching to the Mutt Email Client
- Web Scraping into an E-book with BeautifulSoup and Pandoc
- The Adversarial Implementation
- Two Games with Monte Carlo Tree Search
- My Journey with Touch Typing and Vim
- How to Write Portable C Without Complicating Your Build
- Why I've Retired My PGP Keys and What's Replaced It
- OpenMP and pwrite()
- Asynchronous Requests from Emacs Dynamic Modules
- How to Write Fast(er) Emacs Lisp
- Manual Control Flow Guard in C
- C Closures as a Library
- Domain-Specific Language Compilation in Elfeed
- Relocatable Global Data on x86
- Some Performance Advantages of Lexical Scope
- Faster Elfeed Search Through JIT Byte-code Compilation
- A Showerthoughts Fortune File
- Portable Structure Access with Member Offset Constants
- A Magnetized Needle and a Steady Hand
- Baking Data with Serialization
- Zero-allocation Trie Traversal
- Emacs, Dynamic Modules, and Joysticks
- An Array of Pointers vs. a Multidimensional Array
- Small-Size Optimization in C
- The Vulgarness of Abbreviated Function Templates
- Linux System Calls, Error Numbers, and In-Band Signaling
- Render the Mandelbrot Set with jq
- Modifying the Middle of a zlib Stream
- Inspecting C's qsort Through Animation
- How to Read and Write Other Process Memory
- Two Years as a High School Mentor
- An Elfeed Database Analysis
- Automatic Deletion of Incomplete Output Files
- Appending to a File from Multiple Processes
- Const and Optimization in C
- Stealing Session Cookies with Tcpdump
- Elfeed, cURL, and You
- Four Ways to Compile C for Windows
- You Can't Always Hash Pointers in C
- Makefile Assignments are Turing-Complete
- Mapping Multiple Memory Views in User Space
- Hotpatching a C Function on x86
- Calling the Native API While Freestanding
- Small, Freestanding Windows Executables
- 9 Elfeed Features You Might Not Know
- Quickly Access x86 Documentation in Emacs
- RSA Signatures in Emacs Lisp
- Counting Processor Cores in Emacs
- Web Tips For Webcomic Authors
- Recovering Live Data with GDB
- Shamus Young's Twenty-Sided Tale E-book
- Mandelbrot Set with SIMD Intrinsics
- Minimal OpenGL 3.3 Core Profile Demo
- Raw Linux Threads via System Calls
- NASM x86 Assembly Major Mode for Emacs
- A Basic Just-In-Time Compiler
- Goblin-COM 7DRL 2015
- Generic C Reference Counting
- Interactive Programming in C
- How to build DOS COM files with GCC
- LZSS Quine Puzzle
- C Object Oriented Programming
- Emacs Autotetris Mode
- Global State: a Tale of Two Bad C APIs
- The Billion Pi Challenge
- C11 Lock-free Stack
- Stabilizing C's Quicksort
- A GPU Approach to Particle Physics
- A GPU Approach to Path Finding
- Feedback Applet Ported to WebGL
- Emacs Unicode Pitfalls
- A GPU Approach to Conway's Game of Life
- Tag Feeds for null program
- Per Loop vs. Per Iteration Bindings
- Emacs Chat with Sacha Chua
- A GPU Approach to Voronoi Diagrams
- Emacs Lisp Buffer Passing Style
- Digispark and Debian
- An Emacs Foreign Function Interface
- Three Dimensions of Type Systems
- Duck Typing vs. Type Erasure
- Northbound 7DRL 2014
- Emacs Lisp Defstruct Namespace Convention
- The Julia Programming Language
- Reimaging a VM from the inside with Debian
- Introducing EmacSQL
- Emacs Lisp Object Finalizers
- Measure Elisp Object Memory Usage with Calipers
- Emacs Byte-code Internals
- Emacs Lisp Readable Closures
- Clojure-style Multimethods in Emacs Lisp
- Emacs Lisp Reddit API Wrapper
- Emacs, Thanksgiving, and Hanukkah
- Elfeed Tips and Tricks
- My Grading Process
- Atom vs. RSS
- The Elfeed Database
- Introducing Elfeed, an Emacs Web Feed Reader
- Leaving Gmail Behind
- JavaScript Function Metaprogramming
- Coining Autoism
- Live Systems are Handy
- Liquid Simulation in WebGL
- Personal OS Configuration Live System
- An HTML5 Canvas Design Pattern
- Life Beyond Google Reader
- Long Live WebGL
- Emacs Mouse Slider Mode for Numbers
- A Handy Emacs Package Configuration Macro
- Skewer Gets HTML Interaction
- Should Emacs Packages Self Configure?
- Load Libraries in Skewer with Bower
- JavaScript Function Statements vs. Expressions
- Inventing a Datetime Web Service
- Disc RL in the Media
- Userspace Threading in JavaScript
- Tracking Mobile Device Orientation with Emacs
- Prototype-based Elisp Objects with @
- Precise JavaScript Serialization with ResurrectJS
- JavaScript Fantasy Name Generator
- A Seedable JavaScript PRNG
- Applying Constructors in JavaScript
- 7DRL 2013 Complete
- Serializing JavaScript Objects
- Fast Monte Carlo Method with JavaScript
- JavaScript "Map With This"
- How to Make an Emacs Minor Mode
- Emacs Javadoc Lookups Get a Facelift
- Web Distributed Computing Revisited
- Live CSS Interaction with Skewer
- The Limits of Emacs Advice
- Parameter Lists in Common Lisp and Clojure
- Turning Asynchronous into Synchronous in Elisp
- Flu Trends Timeline
- Clojure and Emacs for Lispers
- An Emacs Pastebin
- How a simple-httpd Vulnerability Slipped In
- Elisp Weak References
- A Use For Macrolet
- JavaScript Truthiness Quiz
- Raising the Dead with JavaScript
- JavaScript Debugging Challenge
- JavaScript Strings as Arrays
- JavaScript's Quirky eval
- Skewer: Emacs Live Browser Interaction
- Debian Bugtracker Data
- Emacs visual-indentation-mode
- Emacs Abnormal Termination
- Programs as Elisp Macros
- Elisp Recursive Descent Parser (rdp)
- Revisiting an N-body Simulator
- Fractal Rendering in Emacs
- Markov Chain Text Generation
- Implemented Is Simple Data Compression
- simple-httpd and impatient-mode
- Elisp Unit Testing with ERT
- Switching to the Emacs Lisp Package Archive
- The Physical Analog for Encryption is the Hyperdrive
- Programmatically Setting Lisp Docstrings
- Viewing Java Class Files in Emacs
- A Few Tricky C Questions
- Literal Arrays and Vectors in Lisp
- Moving to Openbox
- Publishing My Private Keys
- Versioning Personal Configuration Dotfiles
- SSH and GPG Agents
- Perlin Noise With Octave, Java, and OpenCL
- SSH Honeypots
- Presentations with Jekyll and deck.js
- Why Do Developers Prefer Certain Kinds of Tools?
- Pseudo-terminals
- Making Your Own GIF Image Macros
- Rumor Simulation
- Lisp Let in GNU Octave
- Cartoon Liquid Simulation
- Silky Smooth Perlin Noise Surface
- CSS Variables with Jekyll and Liquid
- Poor Man's Video Editing
- Try Out My Java With Emacs Workflow Within Minutes
- Introducing NativeGuide
- Some Cool Shell Aliases
- Emacs Configuration Repository
- Halftone
- Java Hot Code Replacement
- October Chess Engine Updates
- Fake Emacs Namespaces
- Moved To New Hosting
- Pendulum Waves
- Infinite Parallax Starfield
- Feedback Loop Applet
- October's Chess Engine Gets Some Attention
- Movie Montage Comparison
- Torrent File Strip
- BrianScheme Update: Bootstrapping and Images
- The Great Tab Mistake
- BrianScheme
- Flip Foolflim the Dragon Traitor
- Pth and ncurses
- Elisp Function Composition
- Sudoku Applet
- Java Applets Demo Page
- A Modest Chess Engine
- Lorenz Chaotic Water Wheel Applet
- Introducing Java Mode Plus
- Jump to Java Documentation from Emacs
- Emacs Set Window to 80 Columns
- Sample Java Project
- Emacs Find All Files
- Elisp Higher-order Conversion to Interactive
- Throw Up a Quick HTTP Server
- Middleman Parallelization
- Java is Death By A Thousand Paper Cuts
- Distributed Computing with Emacs
- Elisp Memoize
- GIMP Painting
- Pen and Paper RPG Wishlist
- GIMP Space Elevator Drawing
- Emacs Byte Compilation
- Emacs ParEdit and IELM
- Elisp Printed Hash Tables
- Identifying Files
- Neat Random Inn Generator
- The Problem with String Stored Regex
- Scheme Live Coding
- Emacs cat-safe
- A Fractran Short Story
- Common Lisp Quick Reference
- Wisp Screencasts
- Wisp Lisp
- Setting up a Common Lisp Environment
- Magick Thumbnails
- Game of Life in Java
- Tweaking Emacs for Ant and Java
- Emacs Web Servlets
- Your BitTorrent Client is Probably Defective by Design
- Comments Upgrade with Avatars
- Unorderable Sets
- SumoBots Programming Game
- null program Turns Two Years Old
- Lossless Optimizers
- Web Pages Are Liquids
- Ad-blocking and the Regrettable URL Format
- Television Commercials
- Lisp Fantasy Name Generator
- Converted to HTML 5
- The Emacs Calculator
- United States Hamiltonian Paths
- JavaScript Distributed Computing
- E-mail Obfuscater Perl One-liner
- Elisp Wishlist
- Elisp Running Time Macro
- Unquoted Let
- Getting Lisp
- Another Perl One-liner: Byte Order
- Emacs Web Server
- I Finally Have Comments
- Greasemonkey User Scripts
- Wikipedia Flu Time-lapse
- Clay Klein Bottle
- A Not So Stupid C Mistake
- SWF Decompression Perl One-liner
- URL Shortening
- Brainfuck Halting Problem
- The Lazy Fibonacci List
- Apartment Balcony Gardening
- Vimperator Firefox Add-on
- Avoid Zip Archives
- LZMA Tarballs Are Coming
- GNU Screen
- Readline Wrap
- Distributed Issue Tracking
- Git is Better
- Fantasy Name Generator: Request for Patterns
- Don't Write Your Own E-mail Validator
- The Fire Gem
- Controlling a Minefield
- Play NetHack
- A GNU Octave Feature
- Two-Man Double Blind Coke vs. Pepsi Taste Test
- Sudoku Solver
- Variable Declarations and the C Call Stack
- Up is Down
- Memoization
- Lisp Number Representations
- Linear Spatial Filters with GNU Octave
- My Team Won the Robot Competition
- The 3n + 1 Conjecture
- Optimizing, Multi-threading Brainfuck to C Converter
- Movie Montage Poster
- A Faster Montage
- Unsharp Masking
- Movie DNA
- Traveling Salesman Problem by Genetic Algorithm
- Noise Fractals and Clouds
- Neural Network Blackjack Game
- Iterated Prisoner's Dilemma
- Chess AI Idea
- Robot Version 1
- Java Animated Maze Generator and Solver
- Mandelbrot Set on a Cluster
- Proposal for a Free Musical
- BCCD Clusters
- PNG Archiver - Share Files Within Images
- YouTube with Free Software
- Mandelbrot with GNU Octave
- null program is Alive