Sunday 13 May 2012
New PC Build
This is a short post detailing what I've gone for and why, not to show off, but so in years to come I can look back (as I have before) on what was available at the time and I'll have a record I can get to should I forget the detail of which parts are in my current PC.
I'm still the sort of geek that likes to build my own computers. I like to do the research and put them together but it's still definitely the best way to get a good deal and the only way to get each component to be the exact one you want. I also still like to have a PC for some reason, I have a laptop for work so I've already got something mobile and a PC just feels like the right solution for home use.
So with no further ado, on order are:
Case: I'm sticking with my old Antec SLK3700 case, okay so strictly speaking this isn't on order.
Processor: Intel Core i5-3570K (£175)
Sandybridge was a real game changer when it came out and firmly handed back the power to the hands of Intel in the processor market. I've been waiting for Ivybridge to come out for a while, either so I could buy a cheaper Sandybridge or plump for the Ivybridge if the price difference wasn't too great. Well, for those who know their processors you'll see I've gone for the Ivybridge option. Currently it's only 20-odd quid more than the equivalent Sandybridge processor and I think the extra expense is worth it to get the better on-chip graphics capabilities and minor improvements in speed and energy efficiency.
Motherboard: Asus P8Z77-V LX (£94)
I'm a sucker for a good Asus board, I've used them in most of my PC builds so that's where I start looking when I want a new machine. I nearly went for the LE version of this board, it was another 20 quid, but I decided I wouldn't be using the extra features it provides (surround-sound audio and extra sata sockets) so I pocketed the difference and went for this one instead.
Memory: Kingston (4x4GB) DDR3 1600MHz XMP HyperX (£65)
I very nearly went for some Corsair low profile DIMMs but was swayed by the vendor support list for DIMMs for the motherboard chosen above. I'm still in shock that you can get 16GB RAM for 65 quid!
Storage: Intel 120GB 520 Series SSD (£140)
I've got 4 hard disks in my PC at the moment, one of which is not connected, another is hardly used and the remaining 2 are coupled together in a striped RAID array in an attempt to get some sort of speed out of them. Hard disks really are the bottleneck in your PC these days so I've decided to shove in a top notch SSD from Intel. They're the only manufacturer to offer a 5 year warranty and also came highly recommended (under the Hitachi brand, Intel and Hitachi work together on their SSDs) from one of my respected colleagues in the storage department at work. 120GB should be ample for my storage requirements on the PC, the disk will be split to dual boot both Windows 7 64-bit (for those occasions when only Windows will do and a bit of gaming) and the main stay of Fedora x86_64. My data other than the operating system already lives on a NAS.
PSU: CoolerMaster 600W Silent Pro Modular (£63)
Unfortunately my current 620W ATX power supply only has a 4 pin CPU connector rather than the currently common 8 pin EPS so I've begrudgingly had to fork out for a new PSU. This CoolerMaster one gets some decent reviews for being quiet, efficient and delivering good consistent power within the tolerances required by ATX. The 600W rating will also leave me with some overhead should I decide to whack in a high-end GPU at some point in the future.
Thermal Paste: Arctic Silver 5 (£5)
I've got some really old unbranded thermal paste knocking around somewhere but decided to invest in some decent stuff for this build so the Arctic Silver was the way to go.
DVD Writer: Samsung S222AL 22x with Lightscribe (£15)
I've got 2 optical drives at the moment, both are IDE and with the new breed of motherboards (or not necessarily even the ones that are particularly new) IDE is long since dead so I've opted to get a Sata DVD writer for this build. Similar to the memory, I'm amazed you can pick something like this up for 15 quid!
Front Case Ports: Akasa USB 3.0 Card Reader (£20)
My current case has a couple of USB ports on the front, I thought it would be useful to throw a couple of USB 3.0 ports to the front of the case too. This unit also has a built-in multi-card reader so I'll no longer have to hunt for my USB SDHC reader every time I want to copy pictures from my camera.
Case Fan: Antec TrueQuiet 120 (£7)
A 12cm fan for the front of my case, I've got a slot to fit another one in so I thought why not given the heat output I'd expect from this build.
Keyboard and Mouse: Logitech Desktop MK120 (£13)
My current keyboard is PS/2 and has seen better days. I still like a simple keyboard with none of these funny curves or multimedia keys you can get these days so went for this cheap set from Logitech.
The obvious note in this build is a lack of a GPU. As I mentioned above, I've left overhead in the power supply to put in a GPU in the future should I choose to do so. I'm going to do this build and run on the GPU built into the processor. I'll be interested to see what the performance of the HD 4000 is for my needs, if it's sufficient then great, otherwise I'll be tempted towards an NVidia GTX-560 card. I guess it all depends on if I do a little more gaming then I do currently (which is next to none on the PC) and whether the HD 4000 is up to the job.
The other thing I've got my eye on is an up-rated cooler from the stock cooler supplied with the 3570K. I quite like the look of the Corsair H60 Hydro should the need arise.
Saturday 21 April 2012
Home Networking
Photo by Beth |
I started out by planning the route for the cable and researching the kit I would need to buy in order to complete the job. I decided to channel the cable into the wall where the fire is, using a channel I had the fire fitter make behind the fire when it was fitted. For the rest of the run along the green wall and into the kitchen the cables are sunk into the back of the skirting board. Having replaced the skirting, I routed out a channel just big enough for 2 Ethernet cables and re-hung the skirting back in place.
The next decision was what type of cable to buy, Cat 5e or Cat6, Solid Core or not? I already knew I wanted 2 cables, driven mainly by the fact it seemed pointless just to run one and a lot of Ethernet wall face plates have 2 sockets in them so that's what I decided on. Then I went shopping.
I already had a couple of single metal backing boxes to mount face plates on, the rest of my shopping list consisted of the following for the sum of just under 40 quid:
- 2 x 20M Cat6 Shielded Network Cable, 20 Meters, FTP, Grey Ethernet Patch Lead
- 2 x RJ45 Face Plate Wall Sockets Cat6 Double 2 Port with Keystones Jacks
- TeckNet RJ45 and RJ11 N21CL Ethernet cable tester
- KRONE Type IDC Punch Down Tool Telephone/Cat5 Insertion
- RJ45 Ethernet Cable Connectors Cat6, UTP - Pack of 10 pieces
- RJ45 CRIMPER TOOLS
- Ethernet Network Cable kink protection hoods - Pack of 10 pieces
Tuesday 10 April 2012
Moving to Talkmobile
That all sounds great, except for the fact that moving to Talkmobile has turned into a nightmare of sorts. You'd think it would be simple to switch network operators. Basically, you get a Sim card from the new provider, ask your old provider for a PAC, then call the new provider and they arrange to transfer your number over. Not so. Here's my story.
Thu 29th March
Ordered Sim from Talkmobile.
Fri 30th March
Talkmobile Sim arrived.
Sat 31st March
Called Vodafone to get my PAC which was given with much less hassle than I was expecting, basically I just told them I found a better deal on another network and they gave me the PAC with no further questions or persuasion to stay with them.
Called Talkmobile support to arrange for my number to be ported to the new Sim. I was informed because it was a Saturday the request would be queued and completed on Tuesday, no later than 5pm - 6pm. No problem for me, I still had some Vodafone credit to use up as I was on PAYG with them. I was told to call back on Wednesday after the porting was complete in order to register and set up the top up card.
Tue 3rd April
Called Talkmobile support at around 7pm and explained my phone was still responding to the temporary number and that my number porting had not yet completed. The number I want to use is now disconnected and not responding at all so I'm now disconnected from anyone calling or sending me texts, either with the Talkmobile or Vodafone Sims.
After some time spent with them on the phone and going through the phone numbers and Sim numbers for both the Talkmobile Sim and the Vodafone Sim they concluded that the porting had been performed incorrectly and that the problem was with Vodafone as Talkmobile don't do their own number porting but use Vodafone to do it for them. The fix for this is to do the porting again so another request was put in to port my number, but being late on Tuesday this would be queued on Wednesday for completion on Thursday.
Thu 5th April
The porting was successful, my number is now reconnected and people can call/text me once again. I set about explaining to those people who had contacted me via other means that my number was now working again - I have no idea if anybody else tried contacting me during this downtime, there's no way of knowing.
I figured out I was now on a different price plan to the one I had originally purchased the Sim to use. I had sent some texts to people to tell them my number was working again but realised I was over-charged compared to the text price I thought I should be paying. I also noticed that when I checked my balance I was informed I had "3 minutes before lower rate" which wasn't something I would expect to see of the plan I wanted to use, the PAYG Essentials plan.
I called Talkmobile support again to get them to switch me back to the Essentials plan, figuring that during porting something must have got switched over. The guy on the phone was very confused and told me the price plan was wrong (he easily switched me over to the one I wanted) and that mobile Internet connection, Voice Mail and MMS were not enabled for my Sim which he said he'd never seen before. He was also easily able to add those to my Sim card so I could use those services.
I took the opportunity to register at this point and to connect my top up card to the Sim as I'd been informed I should do when I first called Talkmobile.
Fri 6th April
I decided to test the mobile Internet connection, not something I use a huge amount as I'm normally connected to a wireless network and hence why I don't bother with a monthly contract and go with PAYG. The connection didn't work. After a bit of searching around the Internet I found out that I have to manually configure the Access Point Name (APN) on my HTC Desire Android phone.
This was an entirely new concept to me as in all my years on the Vodafone network I'd never had to manually configure anything at all, it always "just worked" and was configured over the air to my phone. The best Talkmobile can do here, however, is to provide a page of settings for Android users to manually configure their phones. I followed the instructions to set up the APN on my phone and was unable to connect, getting a "connection failed" message.
I was going away for the weekend to see family and decided to wait until Tuesday after I could check my APN settings with my friend at work who is also with Talkmobile.
Tue 10th April
I checked the APN settings with my friend at work and was still unable to connect to the Internet using the mobile network, still getting a "connection failed" message. Time to phone Talkmobile once again!
I spoke to the assistant (who are all very good, clear English speakers by the way - I'm getting a lot of experience with them) who directed me to the web page for Android settings. In informed him that I'd already entered the settings and needed some further assistance. As you would expect he double-checked the settings I entered with me and we decided they matched what was required. He did some further debugging and got me to re-register my phone onto the Vodafone network and to reboot the phone but nothing appeared to work. I was put on hold while he did some further checks, he came back to me and informed me there was nothing wrong with my phone but the Sim card is faulty.
The resolution this time is that I'm being sent a new Talkmobile Sim which I should receive in 2-3 days time and will have to go through a number transfer process once again when it has been received as I still want to keep my old number.
Wed 11th April
The replacement Sim arrived in the post so I called Talkmobile to get the number swapped between the original Talkmobile Sim and the replacement. As I've become used to, the chap on the end of the phone was very helpful and arranged for the number transfer to take place. It is, however, going to take another 24-48 hours to transfer the number again due to the fact they have to send spreadsheets of porting information over to Vodafone by email (so he said) for the number swaps to be done.
Fri 13th April
Checked the new Sim and my original Talkmobile Sim and the number transfer has not yet completed by 7pm - it was due by 6pm at the latest today. I'm now wondering whether I should give Talkmobile more time or if it's time to consider looking at another network entirely as this really is becoming a shambles.
Called Talkmobile yet again. I was informed that there has been an issue (which was not specified to me) with the number transfer and that this issue has been escalated but they are not able to give me more accurate information than that at this time. I enquired when the transfer might happen and if I should wait indefinitely for the transfer to happen. The guy on the end of the phone really had no idea and seemed to think there was an outside chance the transfer might happen on the weekend but thought Monday was more likely. I was advised to call back on Monday for further status.
Tue 17th April
Called Talkmobile for a status update of the number transfer as it's still not completed 1 week after I initiated the process. I'm told now that there is a backlog of number transfers outstanding and that my number swap is in the queue awaiting processing and there is some hope that it might be done by tomorrow. Talkmobile offered a £5 credit to my PAYG account for the inconvenience. I'm assured that one of the managers has my issue in hand and is going to encourage the number swapping team to complete the request as quickly as possible.
Wed 18th April
The good, my number has finally been moved across to the new Sim. The bad, I still can't connect to the Internet - the very problem the new Sim was supposed to solve! So, guess what?
A familiar call to Talkmobile to ask what's going on. I'm told that now my number has been moved across I no longer have GPRS or MMS facilities enabled on my Sim card, so I'm back to the same place I was at on Thursday 5th/Friday 6th April when I couldn't connect to the Internet because my Sim is not enabled. Talkmobile have to once again escalate the problem back to Vodafone, so it's yet another 24-48 hour wait for the turnaround of my issue. At least this time the Talkmobile contact on the phone appeared to be taking some ownership of the issue and has said she will contact me either tomorrow or on Saturday with an update on the issue.
I feel sorry for Talkmobile in a way, they appear to be attempting to do everything they can to help and get the issue(s) sorted, but on the other hand I really have no idea where the incompetence lies throughout this whole story. Once again, I'm left wondering how long it will be before I'll be asking Talkmobile for my PAC? I've come this far so figure I may as well stick with it a little longer, but if it's not sorted fairly quick-smart from now I think I'll be taking another close look at GiffGaff.
Thu 19th April
I received a call from Talkmobile tonight. Yes, it seems someone really has taken ownership of my problem and I'm finally getting some good customer service in addition to the polite customer service I've been receiving all along. I was told the problem(s) should now all be fixed and I should try a manual roam on my phone to disconnect from the network and reconnect again before I should attempt a GPRS connection. I was informed if that didn't work I should try a couple of times just to be sure. I confirmed with the person on the phone just what that meant and what I should do on my phone. We agreed to part company there and I would attempt the instructions with another call-back expected on Saturday to check how I got on.
So, I set about having dinner first of all (I was in the middle of cooking when the call came through). But not entirely eagerly after that I turned on mobile data on my phone, no worky. I did a manual roam, still no worky. I did another manual roam, still no worky. By this time I'm thinking there's still an issue but decided to allow a little time and try again later.
A couple of hours later and I've just done another couple of manual roam cycles and still got nothing. I decided a to do a full reboot of the phone and when it came back up, bingo.... IT'S FIXED!!!
I'd like to thank the unnamed (unnamed on this post anyway) person on the end of the phone for finally taking some ownership and getting things sorted out. I'm sure I'll find the network perfectly ok now I've moved across and you've saved your company a disgruntled customer - I'm merely just an annoyed customer now for the length of time and number of calls I've spent speaking to your service personnel.
In conclusion then, it took me eight calls to Talkmobile, one call-back and exactly 3 weeks to the day to transfer satisfactorily from Vodafone while keeping my number.
Fri 20th April
It's not over, until... well no fat ladies here I don't think! However, with the saga behind us (I say "us" because I'm certainly glad it's sorted and think Talkmobile are too) I received a call this afternoon from one of the managers. He was very gracious and first of all apologised for all the troubles I've documented above. We went on to have a nice chat about the situation, whether there was anything else he could do for me, thanked me for my feedback both here and on Twitter, and he was appreciative of both my patience and for the lack of ranting (ranting is not my style) and good humour on this post. I gratefully accepted a further £20 credit to my account in addition to the £5 I was offered on the 17th. We parted company on good terms at the end of the call and I pointed out that all my calls have been courteous (as I've documented) and while my problems weren't always sorted out I appreciate having someone easy to understand (UK call centre) and polite on the other end of the phone, and I asked him to thank his staff.
Going forwards, as I've said before I'm really not expecting to have any problems. My better half has initiated her transfer to Talkmobile, so unknown to them until now, they were in danger of losing 2 customers. I wish her better luck than I had, but I really suspect my experience is a rare one-off kind of a situation.
So, the big final question is really whether I would recommend Talkmobile. I'm hesitant either way at the time of writing. Based purely on my experience joining it would probably be a negative, however, given the way the situation has been turned around, the likelihood it's a one-off, and assuming normal life with my mobile is resumed over the next month or two I would gladly make a positive recommendation. So essentially it's a "well done" to Talkmobile, you could have properly screwed up and lost custom, but you didn't and I'm grateful for that.
Tuesday 6 March 2012
Perl Hash Examples
I have a friend at work who occasionally writes in Perl and so has been learning the language over quite a while, picking up new bits when he needs to write something else. I'm generally his Perl sounding-board (among other topics) and he's getting pretty good at writing things from scratch himself now, even asking questions on things I've not done with Perl, not that I'm a massively advanced Perl programmer myself.
One of the things my friend regularly needs help with and I think confuses a lot of people with Perl is with variables, and in particular hashes. People often say to me they're not sure when to use dollar, percent or at-sign in their Perl variables. I knocked together some pretty noddy code to illustrate the various ways a hash can be used in Perl code as an example for him and thought it might be useful to a wider audience so posting it here.
The source code is below with the output from running this code presented afterwards. Syntax highlighting was done courtesy of perltidy.
#!/usr/bin/perl -w # # Some noddy hash examples # Note: the syntactical differences can be quite subtle # Note: hashes don't have guaranteed ordering (run this code) use strict; ################################################################################ # lets play with a hash ################################################################################ # define a variable as a hash with some content my %hash = ( 'a' => 1, 'b' => 2, 'c' => 3 ); print "print the hash value assigned to the key 'a'\n"; print $hash{"a"}."\n\n"; print "print all of the hash values\n"; foreach my $key (keys %hash) { print $hash{$key}."\n"; } print "\nprint all of the hash values in order\n"; foreach my $key (sort keys %hash) { print $hash{$key}."\n"; } print "print all of the hash values with associated keys\n"; foreach my $key (keys %hash) { print $key . " is " . $hash{$key}."\n"; } print "\nprint all of the hash values with associated keys in order\n"; foreach my $key (sort keys %hash) { print $key . " is " . $hash{$key}."\n"; } # get rid of the hash so we're 100% sure we're not using it below! undef %hash; ################################################################################ # lets play with a hash reference ################################################################################ # define a variable as a hash reference with some content my $hashref = { 'a' => 1, 'b' => 2, 'c' => 3 }; print "\n\nprint the hash reference value assigned to the key 'a'\n"; print $hashref->{"a"}."\n\n"; print "print all of the hash reference values\n"; foreach my $key (keys %{$hashref}) { print $hashref->{$key}."\n"; } print "\nprint all of the hash reference values in order\n"; foreach my $key (sort keys %{$hashref}) { print $hashref->{$key}."\n"; } print "print all of the hash reference values with associated keys\n"; foreach my $key (keys %{$hashref}) { print $key . " is " . $hashref->{$key}."\n"; } print "\nprint all of the hash reference values with associated keys in order\n"; foreach my $key (sort keys %{$hashref}) { print $key . " is " . $hashref->{$key}."\n"; }
print the hash value assigned to the key 'a' 1 print all of the hash values 3 1 2 print all of the hash values in order 1 2 3 print all of the hash values with associated keys c is 3 a is 1 b is 2 print all of the hash values with associated keys in order a is 1 b is 2 c is 3 print the hash reference value assigned to the key 'a' 1 print all of the hash reference values 3 1 2 print all of the hash reference values in order 1 2 3 print all of the hash reference values with associated keys c is 3 a is 1 b is 2 print all of the hash reference values with associated keys in order a is 1 b is 2 c is 3
Thursday 1 March 2012
Failing to Invent
This comic strip really sums up what can often happen when you investigate protecting one of your ideas with a patent. It struck me recently while out to dinner with friends that there's nothing wrong with failing to invent as the cartoon above says Leibniz did. It's the innovation that's important here and unlucky for Leibniz that he wasn't seen to be inventing. It can be quite difficult to think of something sufficiently new that it is patent-worthy and this often happens to me and those I work with while trying to protect our own ideas.
The example I was drawing upon on this occasion was an idea I was discussing at work with some colleagues about a certain usage of your mobile phone [I'm being intentionally vague here]. After thinking it all through we came to the realisation that while the idea was good and the solution innovative, all the technology was already known available and assembled in the way we were proposing, but used somewhere completely different.
So, failing to invent is no bad thing. We tried and on this particular occasion decided we could innovate but not invent. Next time things could be the other way around but according to these definitions we shouldn't be afraid to innovate at the price of invention anyway.
Friday 24 February 2012
Autoqueue
The idea of the project is to generate interesting tracks to queue up automatically in your player while you're listening to music based on what you're currently listening to. Put simply, seed your playlist with a few tracks of the sort you want to listen to, turn the plugin on and it will continue to populate your queue with similar tracks. It's great when all you want to do is have some non-particular music in the background (say when you're coding for example) and you don't want to bother with managing what's playing right now. If you're in the mood for some acoustic through to heavy metal, just seed with what you want and let autoqueue do the rest.
The Rhythmbox plugin for this project wasn't particularly mature when I picked it up so I've modified it so now I've got a nice little button in my player that I can use to switch the plugin on or off depending on whether I want to choose the tracks or allow the plugin to do it for me. Autoqueue attempts to be generic about the players it supports by essentially providing a library that player plugins can talk to over a dbus interface.
The autoqueue project itself currently supports 2 mechanisms to determine track similarity. There's what the project seems to hold as the primary method which is comparing the audio signal of the track you're listening to with those in your music library. It uses an external library called mirage for this which was originally written for the Banshee player. Then there's the method I prefer to use which is to call out to last.fm to ask for the similar tracks to the current one playing and queue up one from the list you already have in your library. Eventually, I'd like to extend this so it takes into account your last.fm profile such that the similar tracks picked are ones you prefer to listen to.
While it's a great little project and I love this type of idea for generating dynamic playlists, the project is fairly stale, not much activity in development and the code repository is way more up-to-date than any released zip files. However, if you're interested it's easy to get going so long as you know how to write a plugin for your player.
<edit>See comments from the project maintainer below for latest updates on project status at the time of writing.</edit>
Tuesday 4 October 2011
Computer History
Hint to where my first PC came from. |
Not necessarily wanting to hang on to the paper I thought I'd make the info available here for future reference so here follows my computer history from way-back-when. There's a chance not all of it was mine since some of it was delivered to friends houses and I've always regularly ordered kit on behalf of parents (who doesn't?), etc.
1995 June - My first PC system, we actually bought it from a shop in Basingstoke!
Pentium 60 PC with 540MB hard disk, 14" CRT monitor, keyboard, mouse, speakers, joystick, mouse mat, DOS 6.2, Windows for Workgroups 3.1.1, OS/2 Warp. £1229.1995 September - Wow, these things really were quite expensive!
10 Floppy disks. £18.60.1995 November - Replaced my Epson dot matrix (used with my Acorn A3010).
Canon BJC 4000 Printer. £280.85.1996 January - No idea why I kept the receipt for this.
Worms. £27.99.1999 August/September - I didn't invest in computer kit in the previous years (during university).
Borland Delphi 4 for Windows 95. £89.30.
2x 16MB SIMM. £47.00.
Maxtor Quantum Fireball Plus 13.6GB UDMA66 Hard Disk £138.65
120MB LS-120 Floppy disk driver. £58.75
1x LS-120 120MB Floppy disk. £10.57.
Abit BE6 Motherboard. £88.12
Pentium III 450Mhz Slot 1 Processor. £88.12
32MB PC100 DIMM. £31.002000 February - This was actually for some university work!
Creative Sound Blaster Live Player 1024 PCI sound card. £56.40.2000 August - Probably my first investment in photography as a hobby.
Agfa Snapscan e40 Flatbed Scanner. £146.86.2001 January - Interesting hard disk, small (by today's standards) but fast.
46GB IBM PATA100 hard disk, 2MB cache, 7200 RPM. £101.47.
Guillemot Force Feedback racing wheel. £92.81.2001 June - First home network.
Dlink 8-Port 10Base-T Ethernet Hub. £34.07
8cm cooling fan. £5.87.
5 metre CAT5 patch cable. £7.05.2001 August - What on earth did I do with all these hard disks?
IBM Deskstar 20.5GB UDMA100 hard disk £69.32
Maxtor Fireball Plus 10.2GB UDMA100 hard disk £64.62
128MB PC100 168 pin CL2 DIMM model £18.082001 September - Not yet writing CDs or DVDs.
Pioneer Slot-in IDE DVD ROM, 16xDVD 40x CD £56.402002 May - I'm still using both of these today!
Asus 16xDVD 40xCD Player IDE
Epson Stylus Photo 790
Monday 12 September 2011
Text Analytics Project Ends
I haven't often been involved with relatively pure research in my day job so that coupled with leading the project presented a few challenges in itself which was most enjoyable. While I can't give away the details, I wanted to express the areas this research concerned here.
The project was a text analytics project, not a new field in itself and a subject on which IBM and my local department (Emerging Technologies) contains many well read and respected experts. For those of you not familiar, text analytics is essentially applying computer systems to text documents such that some sort of processing can be performed e.g. (simple example) the analysis of pages from news web sites to infer what the current news stories are.
One of the complexities we were investigating was natural language processing. This is a major area of research for computer systems at the moment and presents one of the biggest problems of applying computer systems to human written documents. Our brain is able to parse language in ways we've not yet managed to teach computers to do, taking into account context, slang, unknown terms and all sorts of other subtle nuances that make it a hard problem to crack for computers.
My recent work has been investigating how we can express things found in documents in the form of controlled natural language which leads to the question of what on earth is that? Simply put, it's an expression made using normal words but using more rigid semantics than are found in pure natural language. This makes it possible to parse it using a computer but it still feels fairly natural to the human reader as well. This sounds great as you get computers talking a language that feels very usable to humans but with all the added power of memory and processing provided by the computer. It seems to me this approach might only be a stop-gap solution until computers (inevitably it'll happen some time) eventually understand full natural language.
While having a discussion last night with my wife over dinner she expressed a sometimes-heard opinion from her that I occasionally "speak funny". This came to light recently when on holiday in Ireland, I suspect it's a combination of both this type of research seeping into my use of language but also my semi-conscious approach to trialling these techniques in the real world and what better opportunity than when immersed in another English speaking culture.
So, as this article is published I'll be standing at the front of a room of people talking about the details of our work with my colleagues. Wish us luck!
Wednesday 7 September 2011
Hursley Extreme Blue 2011 Presentations
Wednesday 13 April 2011
Rhythmbox Artist Prefix Plugin
I've just written a first versions of a plugin I'm calling Rhythmbox Artist Prefix which allows the user to choose whether to have Rhythmbox attempt to automatically sort artists ignoring certain artist prefixes. If you use Rhythmbox then give it a try!
The plugin works by querying the Rhythmbox database for artists with the given prefixes and that don't currently have a sort order defined (which allows the user to manually override the sort order derived by the plugin). So long as the plugin is active it will watch the database for changes too. The first time you run the plugin it will automatically add an entry to the sort order of all tracks returned by the query and if you leave it running then any time Rhythmbox finds new tracks matching the query their sort order will be updated as well. Whenever the plugin is notified of a track by an artist such as "The Beatles" and that track doesn't already have a sort order, it will chop off "The" from the artist name and add the remainder (in this case "Beatles") to the artist sort order property for that track. Quite simple really and I'm amazed it hasn't been done before.
Monday 11 April 2011
Another New Home Server
I opted for the ReadyNAS Ultra series because I run a SqueezeBox Duet for my music and Netgear are the only partner directly supported by Logitech for their music devices. After spending huge amounts of time hacking the NSLU2, tinytuxbox and Joggler I felt it was about time I had a device that "just worked" so the option of simply downloading and installing stuff and having it work is really quite attractive. Of course, other NAS devices can run SqueezeCenter but whether the community supported versions work well and are kept up to date is another matter which I didn't investigate thoroughly. Another good reason for choosing the Ultra series is they're based on x86 hardware so some of the code and plugins I know I want to run which had previously not worked (or been possible) on the slug for example would be fine, a lot of NAS boxes are still running ARM processors.
The Ultra 2 comes in 2 flavours and I went for the more powerful of the two (the Ultra 2 Plus). They are exactly the same except the Ultra 2 Plus has a dual core processor vs a single core on the Ultra 2. Given I'm fully intending to run what is probably more than average on the NAS the chance of getting a more powerful processor was well worth the extra few quid it costs.
On the subject of price, the NAS solution is probably one of the more expensive ways to get yourself a home server. Again though, the "it just works" factor comes heavily in to play here as I'm not responsible for installing the O.S. and setting up a raft of different services on the box, they're all just there, working! Probably the most competition for a NAS would be the Asus Revo running Linux, possibly with FreeNAS on it too. The Revo with the same processor as the Ultra 2 Plus I bought is around 60% of the price. The Revo isn't able to support the amount of storage you can get with a NAS device though, doesn't (easily) support RAID and if I did want to do those things it would have to be with ugly USB attached disks which are hard to spin down when not in use.
It took just a matter of hours to unpack, boot and setup the device in the way I wanted. The array has been formatted and exports a share to Linux and Windows boxes, all my data has been copied on there with plenty of room for expansion and user management is sorted. After that, updating SqueezeCenter to the latest version was simple and installing other additional software (whether official or community supported) is also really easy. So far I've set up transmission (for bit torrents) and enabled ssh access. Hardware management is all done through a web interface so the option of automatically powering on/off the device on a schedule or setting up disk spin down is merely just a box tick away.
I've got it connected to a 10/100 switch which is fine for streaming music to the SqueezeBox or sharing pictures with the Joggler but for access from my PC and to large amounts of data I figured that throughput wouldn't be enough. Fortunately, the NAS has 2 Gigabit Ethernet ports so I've used the second one to direct attach it to my PC and enabled Jumbo frames. The performance over that link has been absolutely fine whether measured simply by the subjective feel of how long it takes to do certain tasks or via a more rigorous iozone test.
With the tasks of device and software management all taken care of the the thing up and running in no time at all, I'm looking forward to having more time on my hands to do some even more interesting hacking with the box instead.
Sunday 10 April 2011
ReadyNAS Ultra 2 Plus
It appears to be running a distribution based from Debian Etch which Netgear have modified to make what they call their Raidiator operating system. It shipped with Raidiator version 4.2.15 and this is upgradeable when they release new versions.
They seem to carve out some sort of virtual storage on the disks you put into the box too. I've not quite worked this out yet but df reports the following
/dev/md0 4.0G 572M 3.3G 15% /
The CPU is pretty beefy for this type of hardware, Linux sees one processor and two hyperthreaded cores so you get four lots of the following in /proc/cpuinfo
processor : 0
vendor_id : GenuineIntel
cpu family : 6
model : 28
model name : Intel(R) Atom(TM) CPU D525 @ 1.80GHz
stepping : 10
cpu MHz : 1800.215
cache size : 512 KB
physical id : 0
siblings : 4
core id : 0
cpu cores : 2
apicid : 0
initial apicid : 0
fpu : yes
fpu_exception : yes
cpuid level : 10
wp : yes
flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx lm constant_tsc arch_perfmon pebs bts rep_good aperfmperf pni dtes64 monitor ds_cpl tm2 ssse3 cx16 xtpr pdcm movbe lahf_lm
bogomips : 3600.43
clflush size : 64
cache_alignment : 64
address sizes : 36 bits physical, 48 bits virtual
power management:
The other hardware in the system is pretty much covered by the output of lspci
Host bridge: Intel Corporation Unknown device
VGA compatible controller: Intel Corporation Unknown device
Display controller: Intel Corporation Unknown device
PCI bridge: Intel Corporation 82801G (ICH7 Family) PCI Express Port 1
PCI bridge: Intel Corporation 82801G (ICH7 Family) PCI Express Port 2
PCI bridge: Intel Corporation 82801G (ICH7 Family) PCI Express Port 3
USB Controller: Intel Corporation 82801G (ICH7 Family) USB UHCI #1
USB Controller: Intel Corporation 82801G (ICH7 Family) USB UHCI #2
USB Controller: Intel Corporation 82801G (ICH7 Family) USB UHCI #3
USB Controller: Intel Corporation 82801G (ICH7 Family) USB UHCI #4
USB Controller: Intel Corporation 82801G (ICH7 Family) USB2 EHCI Controller
PCI bridge: Intel Corporation 82801 Mobile PCI Bridge
ISA bridge: Intel Corporation Unknown device 27bc
SATA controller: Intel Corporation 82801GR/GH (ICH7 Family) Serial ATA Storage Controller AHCI
SMBus: Intel Corporation 82801G (ICH7 Family) SMBus Controller
Ethernet controller: Marvell Technology Group Ltd. Unknown device 4380
USB Controller: NEC Corporation Unknown device 0194
Ethernet controller: Marvell Technology Group Ltd. Unknown device 4380
The hardware Specs from the ReadyNAS site are
Intel® Atom 1.8 GHz Dual-core CPU (Ultra 2 Plus)
1GB DDR2 SODIMM
Two (42) Serial ATA II channels
Hot swappable and lockable trays
Two (2) 10/100/1000 Ethernet ports
One (1) USB 3.0 port
Two (2) USB 2.0 ports
Embedded 128 MB Flash Memory for OS
Kensington Lock security hole
Software controlled 80 mm chassis cooling fan
Dimension (H x W x D): 101 x 142 x 220 mm (3.98 x 5.59 x 8.66 in)
Weight: 2.07 kg (4.56 lb), without hard disks
60W External AC power supply
Input: 100-240V AC~ 50-60Hz 5A(Max)
34W typical with 2 x 2TB disks
32W idle, 19W with disk spin-down
0 to 40 C (32 to 104 F)
20% to 80% Humidity (non-condensing)
FCC, UL, CE, RoHS, C-tick, VCCI, CCC, KCC compliance
Diskless
Half-populated
Saturday 26 February 2011
When Jogglers Go Bad
7th January
Tuesday 22 February 2011
CEL MT3 Multi Tool
The MT3 made by CEL UK is an oscillating Multi Tool with all manner of different attachments, one of which is a carbide grout removal tool. The fact the tool oscillates (rather than rotates, say like a Dremel multi) means you don't fling the grout all over the house as dust. Vibrations from the tool are enough to remove grout and drop the majority of the mess neatly out of the joints in front of you.
I think at this point you probably already get the picture so here's a fun video of someone using the tool before I splurge out a bit more detail on it:
As you can see in addition to grout removal, it can be used for cutting but also sanding, rasping and probably a whole load of other tasks too. There's a bunch of other videos on the MT3 and other tools from CEL on their YouTube channel.
As an alternative, the known branded version of this thing is the PMF 180 E from Bosch. The best deal I found on the Bosch was at Amazon who sell the tool and large accessory pack together for just under 100 quid at the time of writing. This is more or less the same price as the MT3 from CEL so here's my logic for why I didn't go for the big name product.
Accessories are expensive for both products, but the Bosch is even more expensive than the CEL. However, the Bosch is only capable of using bits supplied by Bosch themselves where as the CEL is capable of using bits from pretty much anywhere, including Bosch (they include an adapter for Bosch bits). Given this and the fact the CEL is slightly more powerful I thought I'd go for supporting the small British startup company rather than the large German corporation and if CEL doesn't survive into the future I can always buy alternative bits for the tool from other manufacturers anyway.
Now I've mentioned CEL are a small British startup, it's probably a good point to say they successfully pitched on the Dragon's Den TV programme back in August 2010. You can see the designer and company MD, Chris Elsworthy, making his pitch on YouTube. However, it seems that ultimately CEL didn't accept the offer of investment.
Dealing with CEL while buying the tool was an absolute dream, one of the best Internet buying experiences I've ever had and really shows how the personal service you can get from a small company makes a difference. I wanted to buy the MT3-C Pack which at the time was advertised as "coming soon" and is made up of the MT3 Tool, accessory pack, and a case. Buying all 3 as a pack represented a saving of around £20.
I wrote to the generic sales email address on their web site asking when the pack might be available as I was interested in buying all 3 products together. Within half an hour I had a response back from their office saying they had all three parts, they were willing to put them together as a pack and honour the advertised pack price on the web site. This is where it gets really good, in addition they also sent through a PayPal invoice so should I wish to go ahead with the purchase I just had to complete the invoice and they would send the products out that afternoon for next day delivery! At this point it was a no-brainer, I returned the invoice and followed up via email too. Again, only half an hour later I had a response saying they had received the payment and sent the product out. 8:30am the next morning arrives and I've got my new tool, brilliant!
So far the tool and dealing with the company have both been great so I'm completely sold and wish CEL every success for the future and in creating some more great kit.
Friday 11 February 2011
Building Native-like Web Apps for Mobile
Sencha Touch |
The first key decision in a project such as this is whether to go with a native application or an app delivered through the browser. Since in this particular case the people I was writing for all used iPhones, perhaps the natural choice would have been to write a native iPhone application. They could, however, just as easily have been using Android or a whole host of other devices. The real benefit of the native application (aside from speed perhaps) is the ability to interact with the hardware on the device your application will be running on. Since I did not require access to a camera, GPS, accelerometers or any other phone features, delivery through a web browser was a very realistic option. In giving up the ability to access these hardware features you gain the ability (if done carefully) to write-once run-anywhere. That is, the application I came up with would be able to run on an iPhone and Android or pretty much any device with a web-kit based browser and a decent touch screen interface, but at the cost of not being able to use, for example, a bar code scanner.
There are probably others but to the best of my knowledge there are currently three Javascript toolkits positioning themselves for the mobile space. Dojo Mobile, JQuery Mobile and Sencha Touch. Did I just say positioning for mobile space? Lucky you, if you're playing buzzword bingo, sorry! At the time of creation, Dojo and JQuery weren't options, they are both only now ramping up development in this area and in the case of JQuery releasing early alpha drops. Sencha Touch was much more advanced and already at a 0.90 beta when I first started playing with it. I followed it through the beta development cycle over the summer months in 2010. Fortunately, it seemed the timing of the production release of Sencha Touch was likely to be at the same time the first phase of my customer work went live so it became the obvious choice.
As a bit of background (and again this is my understanding so may not be absolutely accurate) Sencha was formed by the merger of JQ Touch and the EXT JS toolkit when the original author of JQ Touch, David Kaneda, joined forces with EXT development. Essentially, Sencha Touch is the next generation version of JQ Touch but now has a small army of developers, a community, and a company behind it to provide a support network.
I quite like the approach of delivery mobile apps through the web browser, where it's appropriate to do so of course. I've already discussed that in my view you can develop a web app in the browser if you don't need access to the device hardware. If you don't require that sort of access, it's hard to see why you'd want to develop any other way. As an Android user, I often get frustrated when apps (pointless or otherwise) are released only for the iPhone simply because that's what an iPhone user expects. One example I had recently was while reading through my subscription of BBC Good Food magazine who seem to provide only an iPhone or iPad application. In fact if you go to their web site they also provide a Chrome app and a Samsung Wave app, why I wonder? The magazine simply displays content with little or no interaction from the user, sure the online versions contain video and other features you can't put down on paper but there's nothing there to suggest the maintenance of a myriad of different apps for different mobile platforms is worthwhile. Not to mention my surprise that an organisation such as the beeb are carving up their community by device type rather than, as we'd expect, supporting the masses as we saw with iPlayer coming to Mac and Linux after their early Windows only versions. Surely, a javascript toolkit approach here would be better?
In the early days of my playing around with the Sencha Touch beta code I wrote a mobile version of a badminton web site I maintain. It's not particularly advanced and certainly not representative of all the things you can do with a toolkit like this but thought I'd put it out there anyway. It should, at the time of writing work with iPhone, iPad, Android and Blackberry devices and quite probably with others too. If you're trying on your desktop then make sure you're using a WebKit based browser such as Google Chrome or Safari, or for something a little bit different the great little browser Midori. For a better selection of demos take a look at the Sencha Touch Demo page and for a developer perspective on the widgets and options available in the toolkit have a look at their Kitchen Sink demo which gives a simple overview of many of the components.
Wednesday 8 December 2010
Killer Android Apps
Rather than bother myself considering which is the most useful, here's an alphabetical list of the apps I'm using right now. I'd love to hear what other people are using for similar things, there's so many good apps out there I'm sure to have not checked them all out.
Angry Birds (Game)
There's loads of games on the Android platform but this is the one I've spent most time playing. I'd be very surprised if you haven't come across it by now but if not then give it a go.
Barcode Scanner (Bar Code Scanner)
When I first got the phone I really didn't see the point of having a barcode scanner. It has, however, proven quite useful on occasion. I've yet to use it to scan any tangible product in a shop for example. Where it does come into its own is opening links from the web on your desktop in your mobile browser. I have, on more than one occasion, now come across sites that provide a QR code (2d bar code) that gives you a link to a web page or even better gives you a link directly to the right app in the marketplace.
eBuddy (Instant Messenger)
A multi-protocol instant messenger for Android. It connects to all the instant message services I use and gives me a nice way to increase the amount of time I spend logged into them so I can still be contacted even when not directly using a computer. I use a multi-protocol client on my desktop so it's great to find a decent one on the mobile platform which means you don't have to run individual apps for each of the services you want to log into.
ES File Explorer (File Manager)
The version of Android I have (2.2 from HTC) doesn't come with any sort of file manager or mechanism for installing APK files. ES File Explorer is excellent for both of these tasks. It's the best and most flexible file explorer I've come across but for some reason isn't the most popular or widely known/used. It has some neat advanced features such as the capability to connect to files over FTP/Samba and integrated bluetooth, etc. A real step up from any of the other file managers I've seen on Android.
Google Reader (Feed Reader)
As I write Google have just released the official app for their Reader service. It's definitely an improvement over the mobile version of Reader in the web browser so I'd recommend it just for that. However, it also seems to be (IMHO) better than other popular reader apps such as Feedsquares. Personally, Reader is the only internet based feed reader I use so having something integrated to it on my phone is fab.
Maps (Navigation)
Google maps in an app. You've almost certainly already seen it, but I still use it a lot and like it so it makes my list of useful apps.
RAC Traffic (Traffic/Navigation)
This is one area where I've not searched around much for other apps in the field. The RAC traffic app shows you where the traffic hot spots and problems are on roads in the UK. It's really useful to check this (when I remember to do so) before going off on a longer journey in order to help pick the best route that day. I'm sure it can't be the best app out there for this sort of thing so would be interested in hearing about others too.
Scrobble Droid (Social Music)
I find the last.fm service on the Internet a really useful way to discover music and share music with friends. I don't tend to use the last.fm clients to listen to music very much so that app doesn't feature on my list. However, this is a really tiny but useful app (more of a utility really) that will send the tracks you play in the Android music player to last.fm. This means anything I listen to on my phone gets added to my last.fm account and helps build my profile on the site.
Skype (Instant Messenger and VOIP)
Either you use Skype or you don't and you know what it is or you don't. The official client for Skype on Android seems to be pretty good to me and a neat way to make free calls to friends over your wireless network.
Todo List Widget (Productivity)
I've tried several todo list apps and widgets on Android but essentially wanted something stupidly simple that would literally just shove a list of stuff on the desktop and allow me to add/remove/tick off items as I deem necessary. Through a recommendation from a friend I found a widget called "Todo List Widget" which does just that, it's everything I wanted, very very simple and easy to use. If you want something advanced or more pervasive across devices this isn't the one for you, check out something like Remember The Milk instead.
TweetDeck (Social Client)
I've ditched the Facebook and Twitter apps in favour of using the same app on the phone as I do on the desktop. I've never experimented with Adobe Air but TweetDeck seems to be a great example built on that platform. I find TweetDeck much more usable than the other apps and it does seem to just work, is intuitive and nice to use. Once again a great user experience wins the day on the mobile platform.
Youtube (Video)
Ever tried watching videos in the web browser, they're rubbish right? The bulk standard youtube app sorts this out nicely, giving a much better view and size of the video and easy to use controls.
I found some other useful apps on my phone too that I have used briefly but can't necessarily recommend with the apps above because I've not used them extensively enough. These are "AndChat" for IRC related chats, it seems to be very similar to xchat but for Android; "c:geo" for Geocaching as it appears to be a fully functional geocaching app you can use out in the field while caching; and "Gesture Search" which is a Google app which allows you to very neatly search for things (apps, contacts, etc) on your phone via gestures.
In full Trevor McDonald style I'll sign off this post with an "And finally" thought... wouldn't it be really useful to have a social market place where you can suggest and rate apps to friends? The ratings system in the market place is all very well but isn't particularly relevant to me. My friends and contacts know me best and I respect their recommendations much more than a generic ratings system. This sort of functionality would certainly remove the need for this type of blog post entirely.
Tuesday 1 June 2010
Joggler Linux Boot Mysteries
EFI has its roots in Intel in the same way as a BIOS has its roots in IBM. Basically, it consists of a set of executables able to run within the simple environment EFI provides. These executables are just little computer programs that can vary extremely widely from talking to a piece of your hardware to providing you with a shell environment in which you can interact with EFI through to booting your operating system. This last function is quite important to us as computer users if we're to understand how EFI is used to start your machine, in this case your Joggler. A BIOS will boot your machine by looking at the master boot record and starting the boot loader that your installed operating system has put there; your operating system is responsible for booting itself. EFI does away with this, moving the responsibility for booting operating systems into the firmware interface itself, you no longer need a boot loader for your operating system. Instead, the boot loader is now just another EFI program that runs within the simple EFI environment I mentioned earlier.
You've been wondering what this FAT partition on your Joggler image is all about? FAT is just another file system like NTFS for Windows or ext for Linux, it's very widely understood so is commonly used these days on USB sticks but not necessarily many other places. If your disk is to be used to boot an operating system then EFI says you need a FAT file system as the first partition of that disk. EFI actually says FAT12 or FAT16 must be used for "removable media" so for us Joggler users with USB sticks or hard disks we should be using FAT16 even though EFI can understand FAT32 as well. You could boot any other disk from your FAT partition but all the simple Joggler cases would just involve booting an operating system somewhere else on the same disk i.e. the second partition.
Fortunately for us, when you start your Joggler its EFI looks both at its internal disk (the one with the O2 interface on it) and removable media (your USB disk). The FAT partition is discovered on your USB disk and by convention the file called startup.nsh is executed. This file is simply a script which can be used to execute any EFI script commands you wish. For Joggler USB booting it just runs a local script on your disk to start your boot loader EFI program.
So for the Joggler we might have something like this in startup.nsh on our disk in order to call the boot.nsh:
fs1:boot2
fs0:boot
And the following in the file boot.nsh to start the grub EFI boot loader program:
fs1:
grub
You now know what to do in order to boot your Joggler from a USB disk but the final missing piece to the puzzle is the EFI boot loader program itself. In the example above I used grub as the boot loader program. Yes, this is the same grub you're familiar with from booting Linux on BIOS based machines. However, in this example it's an EFI program so you'd be right to be wondering how you go about getting a copy of it. In my example here your FAT partition already has 2 files on it (startup.nsh and boot.nsh) and you'll need another 2 files (grub.efi and grub.cfg) to be able to boot your disk
There are two versions of grub. The old version, grub 1 or grub legacy as it's know known is not the one you want. You're looking for the current version which is (or will become) grub 2. At the time of writing grub 1.98 is the latest version, download the released version. Unfortunately, it doesn't work on the Joggler without applying a patch. So it's with thanks and reference to the guys over at Joggler Hacks I got my Joggler booting with my own grub 2.
To compile an EFI version of grub 2, unpack the source you've downloaded, then apply the Joggler grub 2 patch (using patch -p1), run ./configure --with-platform=efi and make. The compilation should proceed through to completion leaving you just finish off by making the grub EFI program. You can do this with ./grub-mkimage -d . -o grub.efi part_msdos hfsplus fat ext2 normal sh chain boot configfile linux. The file grub.efi will be created and you can copy this to your FAT partition.
The one remaining thing to do is create the grub configuration file. In grub 2 this is called grub.cfg and can be put in the root directory of your FAT partition with the other three files already there. If you've got your root file system on your second partition then the following should be enough for you to boot it:
set timeout=0
menuentry "Linux" {
set root=(hd0,1)
linux /vmlinuz root=/dev/sda2 acpi=force ro idle=halt
initrd /initrd
}
You can find a lot more of my information about the Joggler at my Joggler Index post. I also have a list of Joggler Bookmarks.