Ambient authority and Sleepycat Java Edition and stateful services

I’ve recently written an RMI service which has state – transactions. The service is implemented using Sleepycat Java Edition collections, and the transactions map to sleepycat transactions. The StoredMap class depends on ambient authority: it determines the current transaction from the thread. The methods will all be invoked in on separate threads, so we need…

Updated AJAX Erlang Jukebox

Our jukebox (mentioned previously) received an update yesterday. it now uses Erlang’s inets httpd instead of yaws, which reduces external dependencies while also giving the code better structure; it now uses a (mostly) RFC 4627-compliant JSON implementation, with a mod_jsonrpc plugin for the inets httpd (also mentioned previously) to expose services via AJAX JSON-RPC; the…

Deadlocks are annoying

Java’s concurrency model provides a sophisticated menu of ways in which to shoot yourself in the foot. Many styles and many variations are available. To give a taste of some of the delicacies on offer, here’s the essence of a problem I found in some code I’d written recently. Let thread one perform the tasks:…

The article about AMQP we’ve all been waiting for

AMQP is an open messaging protocol intended to support the high-volume, high-reliability applications used in the financial and telecoms industries (among others). Some might see it as the next natural layer to go on top of TCP/IP – that’s as close as I can get to describing it in a single phrase, anyway. This article about it is quite…

Why does everything on the web require registration?

Some sites or services, quite reasonably, need to know who I am (and that I really am that person, to some acceptable level of verifiability). It’s usually because they hold data on my behalf, and neither me nor they want anyone else getting at that data. But why does InfoQ require me to register to…

Folds and continuation-passing-style

In normal, direct-style programming in (mostly-)functional languages such as scheme and ML, folding is an operation that crops up all the time in various guises. Most list-manipulation libraries for such languages include implementations of left-fold and right-fold as standard. But what about the situation when you’re programming in continuation-passing style (CPS), such as when you’re…

New Timetracker release

A long-awaited new timetracker release is now available in LShift’s Open Source section. The main improvements are: – The user interface is richer – this includes proper columns reordering, helpful colouring for fields and some integration with bugzilla. – There is better HSQLDB schema consistency check and customization is much easier. We added more documentation…