Inklings: a tumblelog

Quickpost Bookmarklet

Must remember to start posting again, must remember to start posting again, must remember…

Everything is Unix

research!rsc: The Hideous Name

On the importance of good notation and of how a bad notation can do more harm than good.

DBUtils User's Guide

Pro Git

The book online.


Visitors is a very fast web log analyzer for Linux, Windows, and other Unix-like operating systems. It takes as input a web server log file, and outputs statistics in form of different reports.

Lame Nokia Sues Apple Over iPhone Patent Infringement

This sort of crap is one of the reasons why allowing standards to feature patents is utter stupidity:

Nokia is suing Apple over the iPhone, claiming patent infringement for GSM, UMTS and wireless LAN (WLAN) standards.

Nokia licenses these technologies to other companies but says Apple has not paid for the right to use them ever.

Ilkka Rahnasto, Nokia’s VP Legal & Intellectual Property, says in a release, “By refusing to agree appropriate terms for Nokia’s intellectual property, Apple is attempting to get a free ride on the back of Nokia’s innovation.”


Making KORG DS-10 sing "Harder, Better, Faster, Stronger"


Bits of Evidence

What we actually know about software development, and why we believe it’s true.

Haven’t watched this yet but I’ve read great things about it.

Project Euler

Project Euler is a series of challenging mathematical/computer programming problems that will require more than just mathematical insights to solve. Although mathematics will help you arrive at elegant and efficient methods, the use of a computer and programming skills will be required to solve most problems.

Habari Project

Seems like a good blogging engine, both in terms of coding and UI quality. It’s not something that could replace the system I have running here (which has very specific requirements), but it does look like a good alternative to WordPress, Moveable Type, and so on.

Why Events Are A Bad Idea (for high-concurrency servers)

Event-based programming has been highly touted in recent years as the best way to write highly concurrent applications. Having worked on several of these systems, we now believe this approach to be a mistake. Specifically, we believe that threads can achieve all of the strengths of events, including support for high concurrency, low overhead, and a simple concurrency model. Moreover, we argue that threads allow a simpler and more natural programming style.

We examine the claimed strengths of events over threads and show that the weaknesses of threads are artifacts of specific threading implementations and not inherent to the threading paradigm. As evidence, we present a user-level thread package that scales to 100,000 threads and achieves excellent performance in a web server. We also refine the duality argument of Lauer and Needham, which implies that good implementations of thread systems and event systems will have similar performance. Finally, we argue that compiler support for thread systems is a fruitful area for future research. It is a mistake to attempt high concurrency without help from the compiler, and we discuss several enhancements that are enabled by relatively simple compiler changes.

Python logging from multiple processes

Tools of the Modern Python Hacker: Virtualenv, Fabric and Pip

EBS 2.0

Revisions to Evidence-based Scheduling (EBS) in FogBugz.

Basic Etiquette of Technical Communication

Parents spend years trying to teach their children to be polite, and some of us had to learn at school how to properly address an archbishop. Yet, it seems that advice on courteousness and politeness in technical communication is in short supply; most of us learn these skills through what is euphemistically called “on the job training.” With enough bruises on my back to demonstrate the amount and variety of my experience in this area (though not my skill), here are some of the things I’ve learned.

Managing UI Complexity

Interface complexity is an issue every designer wrestles with when designing a reasonably sophisticated application. A complex interface can reduce user effectiveness, increase the learning curve of the application, and cause users to feel intimidated and overwhelmed.

Thunks, Trampolines and Continuation Passing

NaCl: Networking and Cryptography Library

NaCl (pronounced “salt”) is a new easy-to-use high-speed software library for network communication, encryption, decryption, signatures, etc. NaCl’s goal is to provide all of the core operations needed to build higher-level cryptographic tools.

Of course, other libraries already exist for these core operations. NaCl advances the state of the art by improving security, by improving usability, and by improving speed.

The Git Parable

The following parable will take you on a journey through the creation of a Git-like system from the ground up. Understanding the concepts presented here will be the most valuable thing you can do to prepare yourself to harness the full power of Git. The concepts themselves are quite simple, but allow for an amazing wealth of functionality to spring into existence. Read this parable all the way through and you should have very little trouble mastering the various Git commands and wielding the awesome power that Git makes available to you.

FreeBSD How-To: Postfix + SMTP TLS Auth + Dovecot IMAPs, POP3s + Squirrelmail-ssl + ClamAV + Anti Spam with bogofilter and procmail

This is for when I eventually set up Dovecot for IMAP access to the mailboxes on my server.

FreeBSD virtualization with ezjail

5 top non-technical mistakes made by programmers | Making Good Software

Here’s the list:

  1. Lack of discipline
  2. Big egos
  3. Being a bad communicator
  4. Forgetting about the customer
  5. Not prioritizing the work properly

I think everybody’s guilty of these from time to time, to one degree or another.


Nice XML building library for Python based on the Ruby builder library. It’s not dissimilar to AFK_ElementNode either.

Finally: Finger Trees! : Good Math, Bad Math

Finger trees are an incredibly elegant and simple structure for implementing sequence-based data structures. They’re primarily used in functional languages, but there’s nothing stopping an imperative-language programmer from using them as well. […] What finger trees do is give me a way of representing a list that has both the convenience of the traditional cons list, and the search efficiency of the array based method.

Also see the follow-up article that covers some things not mentioned in the original one.

Developing and deploying applications with Fabric and Subversion

The APIs for the Sun Cloud

An excellent model for describing RESTful systems.

Tips on using python's datetime module

On Hearing and Speaking the Truth

I’ve worked at two kinds of companies in my career:

  1. those with open and honest communication
  2. those whose communications better resembled Soviet-style propaganda

As a manager, I’ve always considered accurate information one of my most important assets. I need to know where we are and what it’s going to take to succeed. My team has standing orders to let me know as soon as they figure out that they’re not going to make it so we can adjust the plan.

UMAC -- Message Authentication Webpage

UMAC is a message authentication code: an algorithm for generating authentication tags, which are used to ensure the authenticity and integrity of transmitted messages. UMAC is the fastest message authentication code that has been reported on in the cryptographic literature. First described in 1999, UMAC has undergone significant revisions since its introduction. Large algorithmic changes were made in 2000 to make UMAC faster on short messages. Small algorithmic changes were made in 2004 and a number of UMAC options were eliminated for simplicity.

Specified in RFC4418.

Writing PHP Extensions

4 ssh config tips for faster remote working

HOTP: An HMAC-Based One-Time Password Algorithm (RFC4226)

EtherPad: Realtime Collaborative Text Editing

EtherPad is the only web-based word processor that allows people to work together in really real-time.

Repos Style - Subversion index XSLT + css + icons

A free open source stylesheet for the Subversion index web page. The XSLT and CSS is fully customizable. There is icons for folders and many different filetypes. Install Repos Style as it is or use is as a sample XSLT to design your own. A simple log viewer is also included.

What Matters in an Asynchronous Job Queue

Where Have You Gone, Bell Labs? - BusinessWeek

On the value of basic research and pure science and on how the business obsession of purely focusing on applied research, i.e., aiming towards productisation, is ultimately harmful.

Scalable Bloom Filters (PDF)

…can adapt dynamically to the number of elements stored, while assuring a maximum false positive probability. The technique is based on sequences of standard bloom filters with increasing capacity and tighter false positive probabilities, so as to ensure that a maximum false positive probability can be set beforehand, regardless of the number of elements to be inserted.

3 ways MySQL uses indexes | MySQL Performance Blog

There’s some surprises there.

What to Know Before Debating Type Systems

Python Logging 101

Non-blocking State Machines

An open letter to micromanagers

Karmic 9.10 on Dell Mini 12 - Ubuntu Forums

Bonus! I won’t be upgrading straight away, but there’s a pretty strong chance I’ll be upgrading mine within the next month.