Author Archives: James Furness

Transferring FreeNAS 8 to a different USB drive

As part of my FreeNAS 8 build, I purchased a Transcend 2GB USB drive which fits onto a standard motherboard 10-pin USB header to avoid having a USB thumb drive sticking out of the back of the case. Unfortunately this took a while to arrive as scan.co.uk had to order it in specially, so my initial FreeNAS […]

Guide to cryptographic hashes for content-based addressing

Just came across an interesting article on the use of cryptographic hashes in content-based addressing (e.g. Git, Rsync, Bittorrent) whilst doing some reading around ZFS deduplication in ZFS v21 which is coming soon (with v26) in FreeBSD (and hence hopefully soon in FreeNAS!)

FreeNAS i3 setup

Just finished building some new hardware to run FreeNAS 8.0. As there’s not a huge deal of info kicking around the internet about working hardware configurations I thought i’d post my experiences. Last time I built a PC I almost built a NAS box at the same, but looking at the increase in cost of […]

Tungsten FSM: A lightweight Java finite state machine library

I recently came across Tungsten FSM whilst looking for an off the shelf FSM implementation. Ideally I was looking for something which was a lightweight and no-frills but robust FSM implementation, and Tungsten FSM seemed to exactly fit the bill. All configuration is done in code, so no messing around with XML files, and the […]

A-Team London Insight Exchange

Myself and a colleague were offered some tickets for the A-Team Insight Exchange (High Performance Technologies for Trading and Risk) in London yesterday, and were able to get away from our desk long enough to attend the first half of the day! Overall a lot of the things discussed were things that we were already […]

Garbage Collection Tuning

I recently stumbled across a useful presentation: “GC Tuning In the HotSpot JVM” from FISL 10, which provides a good overview of how to tune the ParNew, Paralell and CMS collectors… Also quite useful is this blog entry which explains how to understand CMS GC logs.

Performance techniques used in the Hotspot JVM

Little gem from the Hotspot Internals wiki helping to solve puzzles such as is “X.class.isAssignableFrom(obj)” slower than “obj instanceof X“! Performance techniques used in the Hotspot JVM.

Calculating floating point epsilon/precision in Java

Floating point arithmetic/rounding can be somewhat painful, made worse by the fact that the epsilon (error) in the machine representation of floating point varies depending on the exponent (i.e. how large/small the number being represented is): Normalized numbers when Base = 2, Precision = 3, Exponents = -1 to 2 [Goldberg91] A very comprehensive paper […]

JMM Synopsis

Useful synopsis of the Java Memory Model from Doug Lea – in particular the clearest explanation I have found so far of the meaning of “happens-before”, and some useful definitions which helped to get a concrete idea of the semantics around safe-publication of variables through Thread.start()…

Server upgrade to Intel Atom Mini-ITX

My home linux server (formerly my desktop PC), which has been sitting in the corner of my lounge for a few years (with all fans other than the CPU fan unplugged in order to keep the noise down), finally blew up a few weeks ago. The motherboard was loading the BIOS but failing to recognise […]