September 15, 2009 – 11:32 am
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()…
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 the HDDs or boot from a CD despite the fact the HDD/CD seemed fine in another PC, so I presumed that the Southbridge had failed due to overheating.
I decided to switch to a low-power Mini-ITX based design rather than replacing the broken motherboard with a comparable one, and after a quick bit of research decided upon an Intel D945GCLF2 motherboard – which is based around the Atom 330 (dual core 1.6 GHz) processor, 2 Gb of RAM and a Morex Venux 668 case from ITX Warehouse. A complete PC (excepting disks) with change to spare from £150 – pretty impressive!
The parts arrived two days later (I ordered after the 5pm cutoff), and within a few hours everything was installed in the new case and ready to go. I was amazed as Debian booted off of the old disk without any issues (try changing the motherboard architecture on Windows without reinstalling from scratch!). After some slight issues with the network I eventually realised the new network card was coming up as eth1 rather than eth0. A quick check of google revealed that the old network card needed to be removed from /etc/udev/rules.d/70-persistent-net.rules. Following this everything was up and running as before.
The fan on the D945GCLF2 is apparently notorious for becoming very noisy after a few weeks, and the fans in the case are of a similar diameter, so I am expecting my next project will be to replace these with either low-noise fans or passive cooling.
A handy concurrency refcard from Alex Miller is now available on DZone. Most of this should be second nature for experienced Java developers, but it provides a handy summary of concurrency and reminders of some of the less frequently used (and hence more easily forgotten) classes like ConcurrentSkipListSet, Atomic*Array etc.
Some tips on using keyboard shortcuts to speed up daily GTD email chores.
I have personally been following a similar system also based upon Lifehacker’s trusted trio, but with “@” prefixes to the labels so they appear at the top of the list, filters so I can email todo items directly into my @action list and using the google labs Multiple Inboxes feature to display action/deferred/waiting emails alongside my inbox.
I have been having some problems with my employers’ remote access system which uses Aventail SonicWall. Unfortunately it seems that whilst it was previously working fine, some change to my PC means that the Aventail applet (used to verify the endpoint is running the Aventail system scanning agent) does not work correctly so access is not granted. After spending several hours on the phone to my employers’ IT Helpdesk reinstalling different versions of Firefox, IE and Java, I was told my only hope was to reinstall Windows.
Somewhat loathe to do this, at a colleague’s suggestion I decided to instead try connecting via a VM running under VirtualBox. This has been my first foray into virtualisation (other than Xen) since trying out VMWare about a decade ago. VirtualBox seems to have all of the features I remember from VMWare (with the added advantage of being free), and it was fairly quick to set up an Ubuntu VM. It also seems that network support has vastly improved from my early memories and the VM had internet access without requiring any manual intervention. And of course there is now support for hardware virtualisation (AMD-V/VT-x) which should in theory make the VM run faster.
Unfortunately stability seems to be somewhat lacking, the VM seems to hang from time to time, requiring it to be “powered off” and restarted (as a virtual reset does not seem to work). Also the “Seamless Mode” support doesn’t seem to be as seamless as I had hoped – although it does remove the guest OS’s desktop, when windows are moved or resized it seems that the “hole” in the host desktop through which they are visible does not resize with them, so the window ends up being cut off when enlarged in size or part of the guest desktop becomes visible when reduced in size.
Still, not bad for a free virtual machine…
After occasionally wondering over the past 2 years whether spending money on extra drives to build a RAID 5 array in my desktop PC was worthwhile, I now feel vindicated after one of my drives (a Western Digital WD5000YS) failed over the weekend. Upon restarting my PC, Intel Matrix Storage Console was able to identify the failed drive, but it was impossible to actually use the computer due to constant delayed write error notifications and constant freezing. After noting down the serial number of the failed drive from Storage Console, I was able to remove the failed drive, and my PC is again working although the volume now shows Degraded status.
Even better, Western Digital have an Advance Replacement RMA program where the replacement drive is shipped immediately without needing to first return the faulty drive. They reserve the value of the replacement from your credit card, and this is not deducted as long as the faulty drive is returned within 30 days.
After repeatedly retrying the upgrade for about 3 hours due to activation server errors I was finally able to upgrade by Wednesday evening.
Since then things have gone pretty smoothly. Finally having the ability to copy and paste is a godsend, as are basic things one would expect from a phone like sending contacts to other people via MMS/email (unfortunately no SMS), receiving MMSes (although it took 12 hours for O2 to respond to my activation SMS) etc.
Spotlight (the search feature on the home screen) seems useful, although emails not downloaded from the server will not be searched. In order search mails on the server, the search function inside Mail has to be used – a search box has been added which appears when scrolling all the way to the top of a mailbox in email, and after searching emails on the phone, a “Continue Search on Server” option is presented which uses the IMAP SEARCH command to search mail on the server.
The phone screen also seems to have been pimped somewhat with more information visible on the recent calls listing to show which of a contact’s numbers (home/mobile/work/etc) the entry refers to. Had a problem for a few hours after the upgrade where the names of my favourite numbers had been replaced by their telephone numbers, but that seems to have gone away on its own.
The maps application looks very slightly different, with slightly different graphic for the GPS location. Also the iPod application now supports more precise scrubbing to find a position in a track – by dragging your finger down the resolution increases. Also there are a bunch more tweaks I haven’t yet tried…
A quick guide to migrating contacts, calendar, email and email filters from GMail (user@gmail.com) to Google Apps (user@domain.com).
Read More »
Just came across this, looks like it has been around on Sourceforge for a while as part of lib-high-scale. Designed for large numbers of CPUs (e.g. Azul hardware), but microbenchmarks claim a small improvement over ConcurrentHashMap even on 2 CPUs.