-
Cold Turkey -
Subtle Interactions, Non-local Problems Alex Miller has a really interesting blog post up today. In LBQ + GC = slow, he shows how LinkedBlockingQueue can leave a chain of references from tenured dead objects to live young objects. That sounds really dirty, but it actually means something to Java programmers. Something bad. The effect here is a subtle interaction between the code and the mostly hidden, yet omnipresent, garbage collector. This interaction just happens to hit a known sore spot for the generational garbage collector.
Continue Reading » -
Combining here docs and blocks in Ruby Like a geocache, this is another post meant to help somebody who stumbles across it in a future Google search. (Or as an external reminder for me, when I forget how I did this six months from now.) I've liked here-documents since the days of shell programming. Ruby has good support for here docs with variable interpolation. For example, if I want to construct a SQL query, I can do this:
Continue Reading » -
Beautiful Architecture O'Reilly has released "Beautiful Architecture," a compilation of essays by software and system architects. I'm happy to announce that I have a chapter in this book. The finished book is shipping now, and available through Safari. I think the whole thing has turned out amazingly well, both instructive and interesting. One of the editors, Diomidas Spinellis, has posted an excellent description and summary.
-
Another Cause of TNS-12541 -
Using a custom WindowProc from Ruby This is off the beaten path today, maybe even off the whole reservation. Still, I searched for some code to do this, and couldn't find it. Maybe this will help somebody else trying to do the same thing. I'm currently prototyping a desktop utility using Ruby and wxRuby. The combination actually makes Windows desktop programming palatable, which is a very pleasant surprise. Part of what I'm doing involves showing messages with Snarl.
Continue Reading » -
OTUG Tonight -
Attack of Self-Denial, 2008 Style -
(Human | Pattern) Languages, part 2 At the conclusion of the modulating bridge, we expect to be in the contrasting key of C minor. Instead, the bridge concludes in the distantly related key of F sharp major... Instead of resolving to the tonic, the cadence concludes with two isolated E pitches. They are completely ambiguous. They could belong to E minor, the tonic for this movement. They could be part of E major, which we've just heard peeking out from behind the minor mode curtains.
Continue Reading » -
(Human | Pattern) Languages We missed the point when we adopted "patterns" in the software world. Instead of an organic whole, we got a bag of tricks. The commonly accepted definition of a pattern is "a solution to a problem in a context." This is true, but limiting. This definition loses an essential characteristic of patterns: Patterns relate to other patterns. We talk about the context of a problem. "Context" is a mental shorthand. If we unpack the context it means many things: constraints, capabilities, style, requirements, and so on.
Continue Reading »