
I know how to make and sell software online, and I can share my tips
with you.
Email
|
Twitter
|
LinkedIn
|
Comics
|
All articles
Email Etiquette
Posted 16 years ago
If you begin your emails with "Hi, <name>!" then they will seem less rude.
> steve, we were testing your changes and they errored. can you pls
> look at these tracefiles?
> cam
You dolt, you set HPLX_PARAMETER_7=A0, but it should be set to AO.
Please re-run the test.
Compare to:
> steve, we were testing your changes and they errored. can you pls
> look at these tracefiles?
> cam
Hi, Cam!
You dolt, you set HPLX_PARAMETER_7=A0, but it should be set to AO.
Please re-run the test.
See what I mean?
Let's read a Truetype font file from scratch
Walkthough of reading and interpretting a TrueType font file in a few lines of Javascript.
Coding tips they don't teach you in school

Some time-saving shortcuts for C code that will make your coworkers scream. In Awe.
Rules for Effective C++
The rules for safe C++ code are surprisingly controversial.
The simple and obvious way to walk through a graph
At some point in your programming career you may have to go through
a graph of items and process them all exactly once. If you keep following neighbours, the path might loop back on itself, so you need to keep track of which ones have been processed already.
How wide should you make your web page?

Based on 22500 unique IP addresses over the past week.
Comment spam defeated at last
For years when running this blog, I would have to log in each day and delete a dozen comments due to spam. This was a chore, and
I tried many ways to stem the tide.
qb.js: An implementation of QBASIC in Javascript
Play NIBBLES.BAS in your browser. I re-implemented a small part of QBASIC as a compiler in Javascript, so it runs in a webpage.
O(n) Delta Compression With a Suffix Array
The difference between two sequences A and B can be compactly stored using COPY/INSERT operations. The greedy algorithm for finding these operations relies on an efficient way of finding the longest matching part of A of any given position in B. This article describes how to use a suffix array to find the optimal sequence of operations in time proportional to the length of the input sequences. As a preprocessing step, we find and store the longest match in A for every position in B in two passes over the suffix array.
C++: A language for next generation web apps
On Monday, I was pleased to be an uninvited speaker at
Waterloo Devhouse, hosted in
Postrank's magnificent office. After making some surreptitious alterations to their agile development wall, I gave a tongue-in-cheek talk on how C++ can fit in to a web application.