Newest Entry
Complete Archives
Subscribe (atom feed)
I'm a recovering programmer who has been designing video games since the 1980s, doing things that seem baroquely hardcore in retrospect, like writing Super Nintendo games entirely in assembly language. These days I use whatever tools are the most fun and give me the biggest advantage.
james.hague @ gmail.com
Where are the comments?
2013
A Short Quiz About Language Design
Remembering a Revolution That Never Happened
Exploring the Lower Depths of Terseness
Expertise, the Death of Fun, and What to Do About It
Don't Be Distracted by Superior Technology
Simplicity is Wonderful, But Not a Requirement
The Highest-Level Feature of C
Sympathy for Students in Beginning Programming Classes
Trapped by Exposure to Pre-Existing Ideas
An Irrational Fear of Files on the Desktop
2012
Documenting the Undocumentable
The UNIX Philosophy and a Fear of Pixels
"Not Invented Here" Versus Developer Sanity
OOP Isn't a Fundamental Particle of Computing
The Background Noise Was Louder than I Realized
Do You Really Want to be Doing This When You're 50?
Digging Out from Years of Homogeneous Computing
Minimalism in an Age of Tremendous Hardware
The Goal is to be Like a Bad Hacker Movie
Hopefully More Controversial Programming Opinions
All that Stand Between You and a Successful Project are 500 Experiments
One Small, Arbitrary Change and It's a Whole New World
App Store Failure and Personal Responsibility
Things to Optimize Besides Speed and Memory
The Silent Majority of Experts
Your Coding Philosophies are Irrelevant
Another Programming Idiom You've Never Heard Of
The Pace of Technology is Slower than You Think
We Who Value Simplicity Have Built Incomprehensible Machines
You, Too, Can Be on the Cutting Edge of Functional Programming Research
The Most Important Decisions are Non-Technical
A Forgotten Principle of Compiler Design
Use and Abuse of Garbage Collected Languages
100,000 Lines of Assembly Language
This is Why You Spent All that Time Learning to Program
A Complete Understanding is No Longer Possible
Don't Fall in Love With Your Technology
A Peek Inside the Erlang Compiler
Pretend This Optimization Doesn't Exist
Virtual Joysticks and Other Comfortably Poor Solutions
Recovering From a Computer Science Education
Follow-up to "A Programming Idiom You've Never Heard Of"
A Programming Idiom You've Never Heard Of
2011
User Experience Intrusions in iOS 5
Photography as a Non-Technical Hobby
Adventures in Unfiltered Global Publishing
Things That Turbo Pascal is Smaller Than
Papers from the Lost Culture of Array Languages
Optimization on a Galactic Scale
Greetings from the Bottom of the Benchmarks
Building Beautiful Apps from Ugly Code
It's Like That Because It Has Always Been Like That
"Avoid Premature Optimization" Does Not Mean "Write Dumb Code"
8-Bit Scheme: A Revisionist History
The End is Near for Vertical Tab
Living in the Era of Infinite Computing Power
Revisiting "Tricky When You Least Expect It"
Caught-Up with 20 Years of UI Criticism
If You're Not Gonna Use It, Why Are You Building It?
Don't Distract New Programmers with OOP
Exploring Audio Files with Erlang
2010
Write Code Like You Just Learned How to Program
Learning to Ignore Superficially Ugly Code
Good-Bye to the Sprawling Suburbs of Screen Space
This Isn't Another Quick Dismissal of Visual Programming
A Concurrent Language for Non-Concurrent Software
Advice to Aimless, Excited Programmers
Erlang vs. Unintentionally Purely Functional Python
One Small Step Toward Reducing Programming Language Complexity
Free Your Technical Aesthetic from the 1970s
Explaining Functional Programming to Eight-Year-Olds
Tricky When You Least Expect It
A Ramble Through Erlang IO Lists
How Much Processing Power Does it Take to be Fast?
Rethinking Programming Language Tutorials
Living Inside Your Own Black Box
Dehumidifiers, Gravy, and Coding
What to do About Erlang's Records?
Nothing Like a Little Bit of Magic
Flickr as a Business Simulator
2009
Follow-up to "Functional Programming Doesn't Work"
Functional Programming Doesn't Work (and what to do about it)
How I Learned to Stop Worrying and Love Erlang's Process Dictionary
Slow Languages Battle Across Time
How Did Things Ever Get This Good?
Tales of a Former Disassembly Addict
Micro-Build Systems and the Death of a Prominent DSL
The World's Most Mind-Bending Language Has the Best Development Environment
A Personal History of Compilation Speed, Part 2
The Pure Tech Side is the Dark Side
A Personal History of Compilation Speed, Part 1
Want People to Use Your Language Under Windows? Do This.
Digging Deeper into Sufficiently Smartness
Let's Take a Trivial Problem and Make it Hard
How My Brain Kept Me from Co-Founding YouTube
Revisiting "Purely Functional Retrogames"
2008
Accidentally Introducing Side Effects into Purely Functional Code
Understanding What It's Like to Program in Forth
Kilobyte Constants, a Simple and Beautiful Idea that Hasn't Caught On
Functional Programming Went Mainstream Years Ago
Want to Write a Compiler? Just Read These Two Papers.
A Spellchecker Used to Be a Major Feat of Software Engineering
Don't Be Afraid of Special Cases
Purely Functional Retrogames, Part 4
Purely Functional Retrogames, Part 3
Purely Functional Retrogames, Part 2
Purely Functional Retrogames, Part 1
Slumming with BASIC Programmers
In Praise of Non-Alphanumeric Identifiers
Five Memorable Books About Programming
Back to the Basics of Functional Programming
Don't Structure Data All The Way Down
Why Garbage Collection Paranoia is Still (sometimes) Justified
2007
Functional Programming Archaeology
Would You Bet $100,000,000 on Your Pet Programming Language?
Revisiting "Programming as if Performance Mattered"
Finally: Data Structure Constants in Erlang
Trapped! Inside a Recursive Data Structure
Sending Modern Languages Back to 1980s Game Programmers
Erlang as a Target for Imperative DSLs
Follow-up to "Admitting that Functional Programming Can Be Awkward"
Admitting that Functional Programming Can Be Awkward