Look out for No. 1
In the late 1990s, eurozone wannabes squeezed and stretched to meet the criteria for accession, including low inflation and government deficits, and moderate levels of debt. The criteria were somew…
Solving Tetris in C
Exactly one of the following statements is true. In Tetris, you can always get at least one line before losing. In Tetris, a sufficiently evil AI can always force you to lose without getting a single line, by providing bad pieces. Which one? Prove it. The setup I crea...
FareBot: Read data from public transit cards w/ your NFC-equipped Android phone
When it was announced that the Nexus S would have a built-in NFC radio, I immediately started thinking about the potential of using cell phones with RFID public transit fare systems. The day the Gingerbread source code was released, I picked up a Nexus S and began working on a proof-of-concept application that can…
Setup a complete Django server, deploy, rollback – all in one powerful script.
This will create the neccesary directories, install nginx and gunicorn under supervisord control and upload new configuration files made from templates on all the app-servers. Additionally it deploys the newest codebase from your local git branch.
Making of Crash Bandicoot - GOOL
I’m always being asked for more information on the LISP based languages I designed for the Crash and Jak games. This post is about GOOL, the LISP language used in Crash 1, Crash 2, and Crash …
VP trees: A data structure for finding stuff fast
<img src="http://stevehanov.ca/wavelet/cup.png"/> Let's say you have millions of pictures of faces tagged with names. Given a new photo, how do you find the name of person that the photo most resembles? <p> In the cases I mentioned, each record has hundreds or thousands of elements: the pixels in a photo, or patterns…
Bloat reduction in LibreOffice 3.4.0
Older items: 2023 : ( J F M A M J ), 2022 : ( J F M A M J J A S O N D ), 2021 , 2019 , 2018 , 2017 , 2016 , 2015 , 2014 , 2013 , 2012 , 2011 , 2010 , 2009 , 2009 , 2008 , 2007 , 2006 , 2005 , 2004 , 2003 , 2002 , 2001 , 2000 , 1999 , legacy html
Objective-C's niche: why it survives in a world of alternatives
Objective-C remains an impediment for many programmers coming to the Mac or iPhone platforms — few programmers have ever experienced it before learning Cocoa, forcing two learning curves at once for new Cocoa developers. How did Apple end up with such a weird language? And for a company known to replace CPU…
Why do C++ folks make things so complicated?
This morning Miroslav Bajtoš asked "Why do C++ folks make things so complicated?" in response to my article on regular expressions in C++. Other people asked similar questions yesterday. My response has two parts: Why I believe C++ libraries are often complicated. Why I don't think it has to be that way. Why would…
The Difference Between A Developer, A Programmer And A Computer Scientist
How a computer scientist, a programmer and a developer differ in skills, focus and priorities, even though the terms are often used interchangeably.
How I Found a Co-Founder, Built a Prototype, and Raised $5M in Less Than 4 Weeks
In 2007 I was 23 years old, working full time as a product manager at ZoomInfo while moonlighting on a number of entrepreneurial side projects. I had previously started a few companies with angel funding and a couple small exits, but certainly nothing of scale. In a whirlwind of
Selling pickaxes during a gold rush
programming, philosophy, history, internet, startups
Git: fetch and merge, don’t pull
This is too long and rambling, but to steal a joke from Mark Twain Blaise Pascal I haven’t had time to make it shorter yet. There is some discussion of this post on the git mailing list , but much of it is tangential to the points I’m trying to make here.
A git Primer
Definitions git‘s Index Branches Remote Repositories Merges Managing a Website Using git Tags Essential Commands git is a wicked-powerful distributed revi
Essential JavaScript design patterns
Learning JavaScript Design Patterns is a book with examples of JavaScript design patterns and how to apply them to your code.
Maze Generation: Wilson's algorithm
Algorithms, circle mazes, hex grids, masking, weaving, braiding, 3D and 4D grids, spheres, and more!
The Demon Machine
Over the weekend I was reunited with the first two computers I spent extensive time programming. The Sharp MZ-80K (released in 1979) and t...