tech ...

Private Blockchains Considered Harmful

Like the much maligned GOTO statement, the private blockchain, as a means to data privacy or tighter governance, should be considered harmful. (Although like the GOTO statement, it might still sometimes be a lesser evil.)

Why? Because the security properties of blockchains (and many other distributed data structures) rely on all transactions being visible to all participants. Once a system has enough participants to be useful, at least one of those participants will have included a compromised device.

Blockchains, Determinism, Monads, Agents and Functional Reactive Programming

(I am going to assume the reader is a software developer who's interested in programmable blockchains. If you feel confused by smart contracts etc, go read Programmable Blockchains in Context by Vinay Gupta, who explains them far better than I do!)

OP_RETURN in Java: A bitcoin Gist

For everyone who's trying to work out how to pop a hash into the bitcoin blockchain.

Written with the help of this article and a lot of browsing the bitcoinj forums.

Cleanroom Techniques for Office Geeks

My portable Linux desktop for sysadmins lives on GitHub if that's all you came for.

Medical and health metaphors are ubiquitous in everyday IT security. Computers get infected, cured and healed. And to a degree, they work. Computer viruses do spread through networks in way that resembles a biological virus. Anti-virus products do "disinfect" machines.

Testing Time Dependent PL/SQL

One of the main reasons web developers (like me) shy away from placing business logic in the database is the difficulty of testing it. One of those problems is how to test time dependent code - monthly billing cycles, repeat reminders, interest payments, etc. Code that's usually very important to get right. (And tends to run unattended at 2am.)

Oracle does offer a way to set the internal system clock to a fixed time for testing.

Translate Your Java Project to 51 Languages

My pet project for the last couple of evenings.

A simple ant task and runnable JAR for translating Java property files using Google Translate. You'll need a Google Translate API key from the Google API Console.

Get it now on GitHub:

Unit Testing Oracle PL/SQL

Unit testing stored procedures is usually a pain. Database development don't seem to have the xUnit culture we have on the application tier. But there are some good tools if you look.

If you use Oracle, PLUnit is a necessity. The other Oracle test frameworks, PLUTO and utPLSQL, seem to want to force an OOP approach on plsql.


SWIFT is a miracle of 1970s ingenuity and a testament to man's ability to work across cultures and borders. (How many real institutions manage to have Iranian, Israeli and Arab members?) It's also €1 for a 700 byte message, takes £10,000 to set-up with my bank and requires dedicated private line for real-time connectivity.

Brief Notes on HTTP Cookie with Javascript and Unicode

Cookies are very useful, but they basically suck as they're just an ASCII string bounced between the server and the browser. RFC 2965 has standardised then, but they're still icky. You're best off avoiding them, storing per user data on the servers-side and having permanent session cookies with just a SUID.

If you want handle cookies with javascript and correctly handle unicode:


Subscribe to tech ...