Inklings: a tumblelog

ATL and Upside-Down Inheritance

Pretty much explains why I was scratching my head when I was trying to get into COM programming with ATL.

RFC 3229: Delta encoding in HTTP

Damien Katz: Error codes or Exceptions? Why is Reliable Software so Hard?

Good article, misleading title. It has more to do with strategies for making software reliable.

JAR File Specification

JavaScrypt: Browser-Based Cryptography Tools

Packrat Parsing: Simple, Powerful, Lazy, Linear Time

Packrat parsing is a novel technique for implementing parsers in a lazy functional programming language. A packrat parser provides the power and flexibility of top-down parsing with backtracking and unlimited lookahead, but nevertheless guarantees linear parse time. Any language defined by an LL(k) or LR(k) grammar can be recognized by a packrat parser, in addition to many languages that conventional linear-time algorithms do not support. This additional power simplifies the handling of common syntactic idioms such as the widespread but troublesome longest-match rule, enables the use of sophisticated disambiguation strategies such as syntactic and semantic predicates, provides better grammar composition properties, and allows lexical analysis to be integrated seamlessly into parsing. Yet despite its power, packrat parsing shares the same simplicity and elegance as recursive descent parsing; in fact converting a backtracking recursive descent parser into a linear-time packrat parser often involves only a fairly straightforward structural change. This paper describes packrat parsing informally with emphasis on its use in practical applications, and explores its advantages and disadvantages with respect to the more conventional alternatives.

Coding Horror: Fail Early, Fail Often

RFC 4151 (rfc4151) - The 'tag' URI Scheme

The World's Shortest Marketing Plan

Crossing borders: Concurrent programming with Erlang

A Lack of Basic Text Formatting Skills

So, so true. Painfully true.

Ned Batchelder: Painless Bug Triaging

Cocoa Objective-C Language Documentation

No, I’m not getting a Mac, but I’d like to have a poke through all this some time.

Dinosaur Shocker

How cool!

Damien Katz: Signs You're a Crappy Programmer (and don't know it) - The Official Emily Booth Website

A.K.A. The hot one from Bits.

Lightweight Java Game Library - Indie/Casual Game Portal

Code Ownership

Adobe Photoshop Effects Tutorials

Creating an explosion effect in Photoshop

This is exactly the kind of look I want. Not it just needs to be animated.

Unifying events and threads

This project uses a language-based technique to unify two seemingly opposite programming models for building massively concurrent network services: the event-driven model and the multithreaded model. The result is a unified concurrency model providing both thread abstractions and event abstractions. We implemented the unified concurrency model in Haskell, a pure, lazy, functional programming language. Our implementation demonstrates how to use these techniques by building an application-level thread library with support for multiprocessing and asynchronous I/O mechanisms in Linux. The thread library is type-safe, is relatively simple to implement, and has good performance. Application-level threads are extremely lightweight (scaling to 10,000,000 threads!) and our scheduler, which is implemented as a modular and extensible event-driven system, outperforms NPTL in I/O benchmarks.

Integration Testing Demonstrated

Coding Horror: The Ten Commandments of Egoless Programming

Of all of these, I think the one I fail most on is that it’s all too easy for me to become “the guy in the room”.


Small Java app for combining individual Windows .ico files of varying sizes and resolutions into one file.

FxCop Team Page

FxCop is a code analysis tool that checks .NET managed code assemblies for conformance to the Microsoft .NET Framework Design Guidelines. It uses reflection, MSIL parsing, and callgraph analysis to inspect assemblies for more than 200 defects.

Schneier on Security: The Value of Privacy - Gach leabhar Gaeilge i gCló

SafariTest: Mac Screenshot Compatibility Test


What is Shibumi?

WorldChanging: Another World Is Here: The Debate is Over

Bill de hÓra: Using TinyMCE in Django's admin

Regrets? They've had a few...

Classic Twenty! :-)

Berlusconi reveals hope of return

Would he ever just fuck off.

Cruiskeen Eile: Please Define Your Terms

Me! A piece I wrote! Blogged about on CE! Yay!

iTunes -> m3u converter

WINAMP.COM | Forums - M4A plugin (AAC encoded by iTunes)

I ripped a few tracks in the wrong format and I’m too lazy to rip them again.

This guy is excellent. Download the music from his site, listen to it, go to his shows.

3ivx D4 4.5 - MPEG-4 Audio and Video Compression

Create and playback MP4 files with MPEG-4 Video and MPEG-4 Audio using The 3ivx Filter Suite.

HttpHandlers: Learn Them. Use Them

How to use CSS to go beyond separation of content and presentation - Xaprb

When to use surrogate keys in InnoDB tables - Xaprb

STREST (Service-Trampled REST) Will Break Web 2.0

That is, do REST right or you interfere with how the web’s meant to work.

Why I Prefer Pair Programming to Code Reviews - Brian Slesinsky

Aharef: Websites as graphs

How bloody cool is this! It’s a Java applet that graphs the structure of a webpage.

Video: Joe Hewitt Talks About FireBug

Why Startups Condense in America

However, for better or worse it looks as if Europe will in a few decades speak a single language. […] This is presumably a taboo subject, but if present trends continue, French and German will eventually go the way of Irish and Luxembourgish: they’ll be spoken in homes and by eccentric nationalists.

As my fellow Irishman Jeremy Keith said, What. A. Wanker.