|« May 2013|
May 23, 2013
For the last 4-5 years my trusty downhill/freeride/dirt-jump/trail centre/
There's always been one thing which I've found difficult though - getting good road speed. At first I didn't really care as I was having so much fun, but over the years I guess my base level of fitness has improved and I've started trying to keep pace with the faster bikes on the road. This is when I realised that riding a heavy mountain bike with 2.4" dirt jump tyres, a chain device and lots of heavy components does not make for an easy time trying to break the london-commute-speed-record! And so over the years I've felt the gentle yet persistent tug from the dark side, that all mountain bikers fear... that's right, I've started to want a road bike!
Ok, so I'm being dramatic, there is no "dark side", I'm sure road bikes are ace, it's just I've never ridden one before. Also given my limited distance of ~100 miles a week I wasn't sure a full-on road bike was what I wanted (lots of roadies I know regularly do 100 miles in a day!).
So what then?
I've been hearing more and more about a discipline called Cyclo-cross recently and after chatting to a few mates who have some experience I decided it definitely sounded like something I should find out about. Cyclo-Cross is a mixture of on and off road riding on what is ostensibly a souped up road-bike (i.e. slightly different geometry, disk brakes (usually) and thin but treaded tyres for off-road). The folks who do it seem to be of fine fettle and essentially like throwing themselves down slippery trails on fairly inappropriate bikes (hang on I'm sensing a theme emriding tree roots on narrow tyres with drop bars seem like a good example here!). After watching a few YouTube entries my decision had been made - I needed a Cyclo-cross bike!
Fast forward through lots of internet research to last weekend when I picked up shiny new bike from BonVelo (who are lovely, friendly and generally awesome by the way), a Kinesis Crosslight Pro6... and it's beauuuutiful!:
Riding the thing
This Monday was my first commute on the Kinesis. I didn't have much time to fettle over the weekend in preparation so I took a few tools in case I needed to make any adjustments en-route.
Things I thought would be scary:
- SPDs: I was a bit nervous of riding SPDs as I've never used them before but after slightly slackening the cleats off from their default position I found that they were pretty easy to clip in and out of. On Monday I made sure to clip out uber early when approaching lights but on Tuesday I did a bit of trackstand practise and found that I could still trackstand easily enough on the new bike so as not to need to unclip at lights.
Things I didn't think would be scary that are:
- General balance: I'm used to riding my Easton MonkeyLites which are nice and wide, in contrast the bars on the Kinesis are so narrow and consequentially the bike feels massively unstable which makes me feel vulnerable to traffic.
- Brakes don't work very well (yet): Again being used to Avid Elixirs with a 200m disc my mechanical 160mm bb7's feel somewhat lacking by comparison. They seem so be getting more grippy as they bed in though so should be easy enough to get used to.
- Trying to stand up and pedal hard and nearly catapulting myself diagonally over the bars. This is getting easier each day as I get use to the bike but I think I could benefit from improving my core + upper body strength.
- Cornering on those tiny little tyres: The road/tyre contact patch is literally tiny! Definitely an opportunity to improve my cornering skills!
- General riding position: It's mental, I'm hunched over like Quasimodo!
- How in the name of all things sane am I supposed to ride this thing offroad?! Actually I'm quite looking forward to figuring this out so am going to try out for the London Cyclo-Cross Summer Series which looks like a noob friendly way of getting some off-road practise done just down the road in Herne Hill.
Things that are ace:
- It is SO fast!
- It it SO light!
- Bunny Hops really easily
I'm enjoying riding the Kinesis more and more every day, so I think next steps are just to continue to get more familiar with the bike and then see if I can get some of that all important road speed I was after. Actually I can see that happening already, in the last few days I have started to consistently take 3 minutes out of my 35 minute to-work journey and 5 minutes off my 38 minute return journey. Something must be going right there!
I'm also really looking forwards to riding the bike offroad at the summer-series, that's going to be quite a different kettle of fish to riding downhill I bet!
Feb 22, 2013
We're looking for the new member to join the devops team of the BBC's digital archive project, the role is a split of soft and technical skills and is essentially a "devops engineer/ release manager" position. Experience has taught me that devops is a notoriously difficult thing to recruit for so I'm widening my search by posting here as well as using all the usual routes.
What follows is a summary of the characteristics that I'm looking for, I'm not expecting to find someone who fits all of these but hopefully they should give you a good insight in to what I'm after.
So then here's what I think you might be like...
You may have worked as a full time developer in the past (you may still do so). You are probably somewhat of a programming polyglot and are definitely well versed in Java applications and their various containers (Tomcat, Jetty etc). You probably understand design patterns and have a passion for TDD and use this knowledge wherever you can when working on devops problems. If you have worked with Java in the past then you're probably more interested in Spring, Groovy and Grails than J2EE and other 'enterprisey' things which are inherently difficult to use TDD techniques against.
You are well versed in several scripting languages, notably Ruby, Bash and Perl
You don't like doing things by hand more than once or twice, you know what inconsistencies this can cause and prefer to automate using tools like Puppet, Chef, Ansible and Capistrano.
You hate technical debt with a passion, but rather than seeing it as an annoyance which you don't enjoy fixing you relish the challenge of working it off, improving things, reducing build times, making deployments more robust and reliable.
You have a dislike for proprietary software and have a love of open source. You have a broad working knowledge of many reliable and popular open source projects. You also know when to avoid certain projects because they're too immature or could lead to a support nightmare due to lack of community.
You like tools like Vagrant and love the fact that you can use Vagrant's provisioners to test changes locally before deploying to development environments (which will inevitably break if you can't test changes locally first).
You have a website/ blog which you set up as a technical experiment which may or not receive as much love as you know it should. You may spend some of your personal time learning and playing with new tech. You may have a github account and may have contributed to one or more open source projects.
You are a dab hand with source code control systems, you've definitely used Subversion and have probably used Git. You've taken the time to read the relevant documents and are competent at branching and merging in both.
You understand SSH to the extent that you can set up SSH config and SSH agents. You know how to use private and public keys.
You have high development standards and hold your self to these. You take pride in your work, you plan it, you don't just hack your way there (Although you've probably done a lot of hacking about in your time, but you know when to hack and when not to).
You may use a Mac or Linux operating system, hey you might even run Windows, and you take your Laptop everywhere with you. Given the choice you would rather use your own laptop than a boring sanitised enterprise desktop machine.
Personally (Soft Skills):
You are an organised person and are used to context switching between tech and non tech work. You are probably an outgoing person and enjoy working collaboratively, you enjoy pulling together the various pieces of the release and deployment puzzle and getting everything prepped on time for releases. You accept that releases sometimes contain more manual steps than you'd like but have a desire to move towards a continuous deployment model (and the skills to help get there).
You enjoy working in a fast paced environment or one where it sometimes feels like you need to wade through a little treacle in order to get where you want to be, because you know the feeling of getting there will be worth it in the end.
You favour agile methodologies (Scrum, Kanban etc) over traditional ones (Waterfall, Prince2 etc). Your preference is derived from experience of working in a successful agile team.
You are available for interview as soon as possible (ideally in the next couple of weeks). If all goes well and we agree that you will join us you will be available to start work on site at the BBC's White City campus in London within 1 - 4 weeks of offer. The role is intended to be a contract role however there might be an opportunity for it to be a permy role for those interested.
If much of the above sounds like you and you're interested in discussing the role further I would love to hear from you, so please drop me a line at edd-AT-eddgrant-DOT-com
Feb 05, 2013
I have been working on a little project recently to enable me to spin up a fully configured and installed Apache roller system in a matter of minutes. The project has taken me a couple of evenings so far but is now in a position where it's worth sharing.
What is it?
- Create an Ubuntu VM
- Install a JDK, Apache Tomcat 6 and MySQL Database
- Deploy the Apache Roller webapp and write out the various required configuration files
Why did I create this?
- To provide a quick and easy means to test drive Roller - this will make testing migrations between versions easier and more predictable.
- To provide a convenient and sandboxed way to author and test Roller themes - until now I have had only a single Roller install (this site), so it's useful to be able to have more freedom in what I can easily change, knowing that I can simply blow away the changes and start again should I need to.
- To provide some Puppet code with which a Roller install may be automated. I figured it's time to practise what I preach professionally. 'Work of art' environments (i.e. hand crafted, unreproducible and each one slightly different to the last) are the last thing that any self-respecting devops or software engineer wants. Although I set this site up many years ago as an experiment it's about time that I made it easily and autonomously reproducible for that 'not if but when' moment.
Installing and configuring Roller isn't particularly difficult but it can be somewhat time consuming and fiddly, particularly to Roller newcomers or those unfamiliar with the technology. I hope that vagrant-roller is useful to people who want to play with Roller without wanting to go through the set-up steps themselves.
Go-on dive in
So if you're interested in Roller, why not have a play with vagrant-roller, the project is very much in its infancy right now (only 2 evenings old!) but it works well enough to be useful already so is worth sharing.
I welcome any feedback, bugs, feature requests, pull requests etc that people have, just raise them on the issue tracker.
The year is 2013, the modern world understands that gay rights are of equal importance to straight rights, that it is unacceptable, conceivably immoral even, to discriminate against someone because of their sexuality or sexual preference. Parts of the developing world, even where education is poor and conservative or traditional religions are strong, are beginning to understand this simple concept of equality of rights.
Yet here in the UK, a comparatively rich and well educated nation, it is believed that more Tory MPs voted against gay marriage than voted in support (BBC currently reporting 140 against vs 132 in support). Thankfully it seems that MPs from other parties have actual brains and the bill was voted through with 400 votes in support vs 175 against...
The next general election can't come soon enough if you ask me!
Jan 09, 2013
Work has been crazy busy recently, so it seemed like a good time to re-charge and take a break. I agreed with my client that I'd take 2 weeks off over Christmas and was looking forward to this break for a number of reasons. It was our first Christmas together as a family, we've finally bought a new Car which is big enough for the four of us and all our assorted baby paraphernalia to allow us to go away for more than a single day and I was looking forward to relaxing with Tash and the babies. We had also planned to make quite a few changes to the babies routine in order to try and get them sleeping more solidly through the night.
It has been lovely spending so much time with the babies, seeing with them round the clock I noticed how visible their day-to-day development is. Both Luca and Finn have started to chatter and babble and are so funny to listen to. Luca has also figured out how to roll from front to back, although can't yet do it consistently. And Finn has found a love for the Jumperoo and goes quite mad when he gets in it!
Going home was a mission, I don't think either Tash or I could really believe how much stuff two babies need just to go away for a few days. Fortunately the new car had just about enough room for everything we needed. It was great catching up with family though and we really appreciated everyone's willingness to muck in and help with baby feeding and entertaining. Tash's brother Ben has been living in Cambodia recently and came back for Christmas, he hadn't met the twins yet so it was great for them to get to meet their other Uncle. We were also lucky enough to catch up with Phil Cox and Ben Knighton and it was great for the littluns to meet them too.
When we got back home we instigated quite a few changes to the twins' bedtime routine. We moved them from our room in to the nursery, stopped swaddling them and started trying to reduce their reliance on dummies at night. The net result of these changes was several nights with awful sleep and a few more where I ended up sleeping on the nursery room floor in a sleeping bag as it seemed easier than traipsing down the hall every 5 minutes to settle them... Things didn't really improve from there and we have now regressed somewhat. They're now back in our room and Finn is back in his swaddle. We are however making progress as they're starting to sleep a little more reliably and we're having much more luck at not using dummies... One step forward two steps back I suppose!
I've had a great break, but it has been exhausting. I don't think either of us anticipated how much the travel and exposure to so many new places and faces would exhaust the twins. They both got really knackered as a result and their sleep was worse than usual. Having said that it felt really freeing to be able to leave London for more than a day and the new car is ace - so glad I finally found what I was after!
I went back to work this Monday, I was so tired that I felt like I was on another planet while I was bumbling around the flat getting ready. Fortunately the morning cycle and a few cups of strong Tea sorted me right out! Having a break has clearly done me good as I'm feeling really focussed on getting the team to address some of our more debilitating technical debt items so we can take then build the next sections of our deployment pipeline. Exciting stuff ahead!
Oct 30, 2012
Cancer sucks! So, in an effort to make it suck for fewer people in the future I'm joining the 'BBC men of fabric' team in raising money for Prostate Cancer UK and the Institute of Cancer Research.
Please consider sponsoring me/ us with any pennies you can spare. You can donate and checkout the Mo progress on my Movember page: http://mobro.co/egrant
Aug 12, 2012
I have already posted this on FaceBook and Twitter and told family and friends, nonetheless I want to mark the occasion here on my blog:
On Monday the 23rd July 2012 my girlfriend of some 10 years Tash gave birth to our twins, and our daughter Luca and son Finlay were born at 04:51 and 04:53 respectively.
Our hospital was Kings in London, England (for the benefit of any international readers). Tash and I had made a birthing plan which included using a birthing pool for pain relief and delivering the twins naturally unless there was a medical reason not to at any point. Unfortunately during the later stages of labour Finn's heart rate became elevated and didn't return to normal after a period of monitoring, so our best made plans somewhat went out of the window as an emergency c-section suddenly became our only option to ensure safe delivery of the twins. Tash was an absolute soldier and the staff at Kings mostly did a fantastic job, apart from the moment when they left me waiting alone outside theatre without first having told me what the plan was (i.e. that someone was getting me some scrubs and I would be able to enter theatre shortly to support Tash). Our midwife Jean from the Paxton Group Practice was an absolute hero in providing fantastic continuity of care to Tash, before, during and after the labour. Jean's colleagues Jackie, Emma and Veronica have also provided fantastic post natal support and advice for which we are incredibly grateful.
We ended up staying in the post-natal ward for a few days before being discharged, Little Finn had some blood sugar issues at birth and had to spend a couple of days in the special care ward (SCBU), however he was quickly put right and was discharged from SCBU so he could rejoin his sister and us in the post-natal ward. Tash has coped with everything brilliantly and is recovering really well from her c-section, she was up and moving around the day after the birth which is testament both to her courage and the advances in c-section techniques.
One thing I will not miss was sleeping on the hospital floor for the 4 or 5 nights we were at the hospital, that combined with the lack of sleep, canteen food and the constant activity of the staff coming in and out made it a pretty tough few days in terms of keeping our heads together whilst we were adapting to being new parents, so we were pleased when we were told that everything was in order for us to be discharged and to go home and start our new family life together.
As I'm writing this we have now been home for 2 weeks, Tash and I are absolutely knackered but despite the lack of sleep we are loving every moment of getting to know the twins. They don't do much other than eat and sleep at the moment but already their individual personalities are so apparent and we're loving getting to know them whilst we learn the parenting ropes. I have been really fortunate that my current client has agreed to me taking 3 weeks leave from the project, this has been an invaluable time and I am feeling both sad and yet also super excited to be returning to work this coming Monday.
So without further ado I would like to welcome Finlay and Luca to the world and our family, here's to many many happy years together!
Jul 17, 2012
The following provides instructions on how to install a particular version of Puppet from Puppet Labs' own APT repos, this is particularly useful if you run different O/S versions across your puppet nodes or simply don't want to use the versions bundled with your particular Ubuntu distro.
This will cover puppet rather than puppetmaster but the basic installation principles are the same for both, it's simply the configuration which is different between the two.
I'm writing this mostly as an aide-mémoire to myself as it's one of those things that I do infrequently enough that I'm always forgetting the precise steps.
# First of all ensure that you have uninstalled any existing puppet installation sudo apt-get --purge remove puppet sudo rm -fr /etc/puppet # Install the Puppetlabs GPG key. apt-key adv --recv-key --keyserver pool.sks-keyservers.net 4BD6EC30 # Add the Puppetlabs APT repository to our APT sources # Note the deliberate carriage return, this is important # for the 'apt.puppetlabs.com.sources.list' file to be correctly formatted. sudo sh -c 'echo "deb http://apt.puppetlabs.com natty main deb-src http://apt.puppetlabs.com natty main" > /etc/apt/sources.list.d/apt.puppetlabs.com.sources.list' # Install the puppet-common package. # Shouldn't strictly have to do this as it should be a dependency # of puppet package but seems to be something wrong witg # the dependency setup so have to do this manually for 2.7.17 at least. sudo apt-get install puppet-common=2.7.17-1puppetlabs1 # Install puppet package. sudo apt-get install puppet=2.7.17-1puppetlabs1
That's it, now just configure puppet as you would do usually (e.g. /etc/puppet/puppet.conf and /etc/default/puppet), register your client's cert with your puppetmaster and you're good to go!
Nov 21, 2011
Back when I was a student I used to run a home server to provide various services for my housemates and I, the 'server' was an old desktop I had spare at the time and sat in a cupboard running 24x7x365, well that was the plan anyway... Everything ran fine for 4 or 5 months before it started to behave very strangely indeed, I spent many hours diagnosing some pretty weird and often unreproducible issues and in doing so learnt that normal desktop hardware is not intended for 24x7x365 usage, particularly cheap power supplies and hard disks of which I went through several of each during this short period.
When it was time to pay the electricity bill we also discovered that standard desktop PC's consume an astonishing amount of electricity and therefore cost lots to run 24x7x365, this wasn't a very welcome surprise for a bunch of skint students!
Eventually I grew bored of replacing el cheapo disks and budget power supplies and retired the home server, I moved a few of the services (eddgrant.com etc) over to a linux VPS. The VPS was fine for modest resources, but for the price I was able to pay was very constrained both in terms of disk space (~ 5GB), RAM (~316MB!) and firewall configuration (default ports only unless I doubled my monthly spend). So whilst the VPS was able to run eddgrant.com it wasn't able to take on a lot of duties that the old server took care of (backups, file serving etc).
After a while I started looking around for some suitable hardware to build a new home server on, I have somewhat of a fascination (err... obsession?) with electrical efficiency and saving the amount of electricity used at home so I wanted to build something which fitted the following requirements:
- Extremely low power consumption: <= 10 watts under load (or as close as possible).
- Robust enough for 24x7x364 operation.
- Near silent operation.
- Capable of taking on routing and modem duties i.e. replace my modem/ router to further reduce electrical usage at home.
There seem to be quite a few devices in the low power arena, each with it's own pros and cons. Certain things that one would take for granted with a desktop/ server grade machine, such as having a wealth of expansion slots or input/ output controllers becomes less common with lower power devices, the result being that you really need to plan carefully in order to be sure that the device can provide the required interfaces for the task at hand. Having said that I was impressed that there are several really capable low power devices which provide a reasonable range of connectivity/ expansion.
I looked at the following devices:
Soekris NET5501, CompuLab fit-PC2(i), Netgear ReadyNAS
The NET5501, is based on a single core 500 MHz AMD Geode CPU and comes with up to 512MB RAM. It has 4 10/100 Mbit ethernet ports and a SATA 1.0 controller. It is incredibly power efficient drawing about 7 watts under load. It is intended for industrial application and so is built robustly, it also has 1 x PCI and 1 x MiniPCI slot so could take on routing and modem duties with the appropriate card. The presence of the PCI slots makes this device incredibly flexible in terms of it's configuration. However one frustrating thing about the NET5501 is the small amount of RAM, being limited to 512MB, is really a deal breaker for me. Also there is a distinct lack of any documentation for the 5501 which concerns me (the only available documentation refers to the 5501's predecessor, the NET4801).
fit-PC2(i) is based on a single core 2GHz Intel Atom Z550 CPU and comes with 2GM RAM. It has 2 10/100/1000 Mbit ethernet port and a SATA controller and an internal 9.5mm SATA bay for an onboard HDD. It draws 8 watts under full load (excluding HDD) and, whilst not quite as robust as the soekris is built sturdily for continual use. The fit-PC2(i) also has a build in SD card slot and onboard sound and graphics which, while not required for a headless server hugely simplifies initial O/S installation. It also has onboard 802.11n WLAN and 4 USB 2.0 ports for further expandability.
Re-evaluating my priorities.
I initially prioritised having a device which could replace my router/modem, the most likely candidate for this would be to obtain a PCI ADSL modem card and a MiniPCI wireless access point card. From the devices I found available the only one which had the available expansion for this was the Soekris, costing up the options looked prohibitively expensive, furthermore, moving routing/ modem to a single box would also create a single point of failure in terms of internet access from home, which could be an almighty pain if the box went down unexpectedly. With this in mind I decided to remove this requirement and leave my existing router in place for the time being.
In order to be able to run several services on the device I was concerned that I was going to need a reasonable amount of RAM (reasonable being >= 1GB in my estimation). The Soekris does not allow increasing of RAM from it's 512MB stock, unless you want to get handy with a soldering iron, this was a limitation too far for me so the Soekris was eliminated from the runnings. It appears to be possible to increase the RAM in the ReadyNas but I felt that the power consumption of the device was too high for me to be willing to run it 24x7x365 which essentially ruled it out. This leaves us looking at the FIT PC, it comes loaded with 2GB of RAM, draws an absolutely tiny amount of electricity and has reasonably good explansion options, albeit based more around USB devices than PCI/ MiniPCI. It is also the only device which has onboard graphics which makes installation and initial configuration dead easy compared to the “fun and games setting baud rates with a serial cable” required to get a Soekris up and running. The only area that the FIT PC doesn't do so well is when compared to the native RAID and multiple disk capability of the NetGear, however having multiple disks creates an issue of power consumption so this is something I'm wiling to work around, perhaps with some more creative/ robust backup strategies. So that was it, decision made, time to order a fit-PC2(i).
The FIT PC arrived in no time, I've named it PICO after it's PICO-ITX architecture and the fact that it's absolutely tiny!
This is PICO:
So what am I going to do with it?
Well, I want to squeeze every last CPU cycle out of it, so I plan to run as many services as feasably possible whilst ensuring that each of the services provides an adequate response/ user experience. My initial ideas being:
Jenkins Server for my personal projects
Master backup server
LDAP Schema master
Music/ Video fileshare
eddgrant.com svn repo
MythTv master backend running MythWeb
Puppet master server
ssh/ sftp server and point of entry to home network
I think that's a reasonable list to start off with. I think it could be quite an interesting project to see how it copes with the running of each of the above so will probably blog further entries as I get each bit setup.
Mar 25, 2011
Just a quick one today...
Barry Cranford and James Bowkett from the London Java Community (LJC) and Graduate Developer Community (GDC) have been putting together a series of online interviews intended to help graduates and undergraduates get a feel for what it's like in the professional world of I.T. Barry and James were kind enough to invite me to do an interview on my experiences to date as a consultant, I was really keen to get involved since this is exactly the kind of information which I would have found invaluable when I was looking in to the various graduate employment possibilities when leaving University.
I found it a useful exercise providing me with a good opportunity to reflect on my experiences so far, I hope it is of interest/ use to the GDC community.
Mar 10, 2011
Wow! Last weekend was truly a special one! A few folk from CGCC, ThisIsSheffield and notably Steve Peat himself, had been busy at work organising a downhill race in Grenoside Woods. Titled 'Peaty's Steel City Downhill' the race took place on the Saturday. Tash and I drove up to Sheffield and stayed with some CGCC mates on Friday before heading over to Greno woods on Saturday.
The weather wasn't great on Saturday (it was Sheffield - what do you expect!) but the constant mist that hung in the air made the woods look great and made for some great photos. I'd not ridden the track before, it was pretty great though - very pedally throughout, full of rocks and as slippery as hell, especially on my balding high rollers.
I really enjoyed the track despite not really being able to get to grips with it. Some of the faster boys and girls were managing to carry speed through the rocky, muddy, heather mid-section where I just seemed to lose all control! The drop at the finish was top fun though, although I did have a moment of panic during practise when someone fell at the finish directly where I was about to land!! Fortunately we managed to avoid a collision so all was well... *phew*.
Despite the wet the turnout was fantastic - I couldn't believe how many people came down both to race and spectate. I was also impressed at the number of companies who had rocked up with their various bits and pieces, some were even giving out free stuff!
After the results and (frankly incredible) prizes were handed out at Greno we finished the day at the Showroom watching a series of Alex Rankin films followed by a short interview with Rob Warner and Steve Peat.
One of my favourite aspects of the day was the fact that all the pro bikers were so easy going and were happy to race with all the people who just ride bikes for fun - quite rightly thrashing us in the process! I love the fact that there was no elitism in this way and that world champs like Steve Peat make an effort to get so involved with the general mountain biking community. Can you imagine this happening in Formula 1? I think not!
Also - I should mention - one of the main points of the race was to raise money for the Greno Woods Appeal - in an attempt to raise money to save the woods. A worthy cause!
There are already a few photos and videos of the event cropping up, here are some links which I'd highly recommend checking out:
And the vids (I don't know how these guys get their stuff edited and put together so quickly!)
Just want to say a HUGE thanks to the organisers Steve Peat, Nick Hamilton, Joe Bowman, Steve Hardcastle and Henry Norman for organising such a great event, also to the marshals who braved the grim Sheffield weather all day and to John and Anna for being such generous hosts! I won't be forgetting this weekend for a long long time!
Mar 08, 2011
I use zoneedit
to manage some of my DNS domains and subdomains, they're one of the only TLD DNS services who offer a free service with dynamic dns and allow you use your own domain rather than a suffix on their TLD. In order to access
certain services hosted on machines at home I have created a subdomain
of my eddgrant.com domain, called home.eddgrant.com. I then used the
dynamic DNS capabilities of my ADSL modem/router (a Thomson TG585 v7) to update my zoneedit account on a regular basis to ensure that home.eddgrant.com always points to my current home IP address.
Getting this setup wasn't the most straight forward process so I thought I'd document the steps I took and some of the problems I encountered during the process.
The Thomson TG585 v7 provides several preconfigured 'service' templates for use with certain dynamic DNS vendors, I looked at these providers but they were all either paid services or only offered dynamic addressing using a subdomain of their TLD e.g. eddhome.dyndns.org. Fortunately the speedtouch also provides a 'custom' dyndns template which allows for the configuration of a custom provider e.g. zoneedit. Unfortunately the speedtouch makes some rather unhelpful assumptions about the list of parameter names and values it supplies to the dyndns provider and as far as I can tell some of the necessary parameters are totally inaccessible through the web admin GUI. So in order to get everything working it is necessary to use a combination of telnet and web GUI access, here's how you do it:
- telnet on to your modem/ router e.g. telnet bebox.config/ telnet 192.168.1.254 etc, log in as the Administrator account.
- Type dyndns service, this will locate you in to the dynamic dns services menu.
- Type list, this will list all of the available services, one of which will be 'custom', this is the one we're going to edit to work with ZoneEdit).
- Type modify, the device will prompt you for the name of the service you wish to modify, type custom and hit return.
- The device will prompt you to enter details for each configuration attribute of the service, enter the following (ensuring that you replace home.eddgrant.com with whatever domain you're going to be updating).
name = custom
[server] = dynamic.zoneedit.com
[port] = www-http
[request] = /auth/dynamic.html?host=home.eddgrant.com&ignoreTheFollowing=
[updateinterval] = 8600
[retryinterval] = 30
[max_retry] = 3
:dyndns service modify name=custom
Notes on the above:
- The &ignoreTheFollowing might look odd but it is required to render the default URL parameters which the device sends ineffective by ensuring they are treated as the content of the ignoreTheFollowing URl parameter.
- The above configuration essentially instructs the device to make an http call, every 8600 seconds, to http://dynamic.zoneedit.com/auth/dynamic.html?host=home.mredd.co.uk&ignoreTheFollowing=<device's original URL parameters>.
- You should now be back at the menu, type list again to list the services, this time you should see your changes reflected in the 'custom' service.
- That's all we need to do in the telnet interface so exit the session.
- Now you've configured the custom service you need to configure it as the active service and add authentication details, this is easiest done in the web gui.
- Open a browser and log in to your modem/ router (again as the Administrator) e.g. http://bebox.config
- Click Toolbox from the menu on the left.
- Click Dynamic DNS Service
- Click Configure
- Enter your ZoneEdit username and password in the appropriate fields
- Select the 'custom' service
- Set the Host as: dynamic.zoneedit.com (not sure if this is entirely necessary since we've set it up in the telnet session but let's do it anyway)
- Click apply (it should look something like the image below).
You're done! Your device should pretty much immediately call the ZoneEdit update page updating your IP address - you can confirm that this by logging in to your ZoneEdit control panel and verifying your WAN IP address against something like whatismyip.com.
What to do if it doesn't work?
Essentially you're going to need to debug the requests being made by the device. I found the easiest method was to reconfigure the server property of the custom service (in the telnet steps above) to point to one of my webservers and to change the updateinterval period to 30 seconds and then tail the web server's access logs. This process gives you visibility of http requests that the device is making which makes the whole process much easier to understand and debug. Here's an example from my apache logs:
184.108.40.206 - - [06/Mar/2011:10:40:53 -0500] "GET auth/dynamic.html?host=home.eddgrant.com&ignoreTheFollowing=?system=custom&hostname=home.eddgrant.com&myip=220.127.116.11
0&wildcard=OFF&offline=NO HTTP/1.0" 400 303 "-" "SpeedTouch-18.104.22.168"
Well that's pretty much it, hope that helps someone. Just want to add my thanks to the contributors of this post who made the task much easier .
Feb 03, 2011
On my birthday we drove over to Chicksands Bike Park and spent the day riding the various tracks and trails. We virtually had the place to ourselves which was great so we got in a good few runs on the dual slalom, 4X and freeride areas. I spent a bit of time trying to clear the 4X double cleanly...
... had a play in the freeride area...
... and had a bash at the small set of tables in the jump area
Tash got some great practise in and really enjoyed the dual course! After riding all day we were absolutely knackered so we went home, ate some awesome Indian food from the Bombay Bicycle Club and drank a great bottle of Champagne! To my surprise the next day Tash had arranged a secret meal where we met up with my sister Jo and her boyfriend Dave - it was great to see them both - cheers for coming down guys!
I must admit I was half expecting to feel a bit weird about turning 30, but actually I feel pretty good about it. The fact that I got a good 3 days off work, riding bikes with Tash fixes it firmly as my favourite birthday so far! Big thanks to Tash for everything!!
Today I went back to work and got stuck in to a fun technical problem which has been plaguing our project for a while, I was fortunate to find a good solution - something I will probably blog about once I've tidied it all up as it's a very poorly documented area.
Anyway that's about it, I'm enjoying being 30 and am looking forward to what this year brings!
Nov 21, 2010
Heard this tune by James Blake yesterday for the first time, on Radio 1 of all places, and completely fell in love with it. It's a cover of a track originally by Fiest.
I absolutely love the feeling of space that he's created, there's a mournful edge to it initially but wierdly the sub-bass and the way the track builds yields to an almost comforting, yet still dark feeling (which for some reason reminds me of dancing to the dub sound systems at Notting Hill Carnival).
Oh and if you like your production/ sounds then definitely listen to this one on a system with some serious bass, or some good headphones!
May 08, 2010
I recently sat and passed the Sun Certified Java Programmer 1.6 exam (310-065). Throughout my life I have found exams unusually difficult so I wanted to share some tips which I found invaluable in case they are of help to others.
Before explaining my revision tactics it might be useful to give a bit of background on the exam itself. The exam is a multiple choice test which consists of 60
questions, has a pass mark of 58% and a duration of
180 minutes. This gives approximately 3 minutes to answer each question. Questions with more than one correct answer will state how many answers should be picked, but exactly the right answers must be selected for each question to get the mark. Most of the questions involve reading a code excerpt and detailing the outcome of the execution of the code, some questions involve dragging code snippits in to the appropriate place in a code excerpt. The exam is not negatively marked.
So without further ado, here are my revision tactics:
- Read the official book(s) - There are several books on the market which exist specifically to teach the exam subject content, reading at least one of these in detail is one of the most important things you can do. I chose the study guide by Kath Sierra and Bert Bates and found it to be excellent; the book covers all the official certification objectives in detail and also provides a useful section on how to prepare for the exam. As an added bonus the book comes with a free CD which contains the book content as a PDF plus an exam simulator containing 2 full length mock exams. Note that there are many other SCJP 1.6 books available which are definitely worth checking out before you decide which to buy as you never know which will suit you most.
- Learn the chapters and objectives - The SCJP exam will only test you on the official objectives, the exam questions are notorious for being deliberately ambiguous about what they are testing (by including red herrings) and for often referencing at least one objective even when the answer refers only to a sigle objective. Thus knowing the objectives can give you a distinct advantage in helping to quickly identify what a question is really testing you on, it also makes it quickly to spot and eliminate red herrings allowing you to answer questions more accurately.
- Do mock exams - Mock exams are important since they allow you to test your skills, identify strong/weak areas and determine your question answering speed. Having worried that I would run out of time in the real exam I found this really beneficial as I determined early on that I generally took about 90 seconds to answer each question. This was comforting to know and made me much more relaxed in the real exam as I knew I would have time to complete all questions and review my marked questions. There are several sites which offer free mock exams, I used www.certpal.com which contains full mock exams for both the SCJP 1.5 and 1.6 certifications. Don't be put off by the slightly basic design of the site, or by the occasionally badly worded question explanations as the quality of the questions outweighs both these things. With retrospect, having now taken the exam, I can see that the certpal questions were consistently harder than the real exam questions, so if you can consistently get a good pass mark on certpal that's a good indicator of being ready for the exam. However if you don't like certpal then JavaRanch maintain a useful list of SCJP mock tests.
- Code! - Seems obvious doesn't it but you'd be suprised how many people apparently don't sit down and learn through coding. I found that writing small pieces of code, specifically targeted in testing an individual objective or API, to be hugely beneficial in enhancing my understanding of my weaker areas. Coding also helped me in learning a new objective/API that I hadn't previously used much before (java.util.NavigableSet and java.util.Scanner were pretty new to me). I also found coding really useful in a couple of instances where I didn't understand the answers to certain mock exam questions, being able to code the question and then debug through the code line by line caused me to unlearn a couple of my own mis-understandings which would have otherwise tripped me up in the exam.
- Use forums - Again when reviewing my mock exam question failures there were a few instances when, even after coding and debugging a question, I failed to understand WHY the JVM would demonstrate a certain behaviour. I found JavaRanch to be an invaluable resource here, particularly the Big Moose Saloon forums which have friendly and dedicated boards for SCJP questions and answers.
- Make revision a regular practise - Revise regularly and often, in a consistent manner each time. I gave myself 8 weeks to revise for the exam and changed my daily routine by doing the following:
- I stopped cycling to work and instead took the train.
- Each morning and evening on the train I revised by reading new material or re-covering old material or by reading flashcards
- During lunch each day I took 15-30 minutes to make detailed revision notes on what I had read that morning.
- Each evening I varied my revision by either coding, condensing my detailed notes to concise revision flashcards or doing mock questions (not whole exams though).
- On each of the last 3 weekends I sat a full length mock exam and went through my question failures and flash cards.
- The above is what worked for me and what suits each person is going to be highly subjective. My point here is that you should try and find something that works for you, whatever that may be.
- Make flash cards - Flash cards are a brilliant and very portable means of concisely documenting information. Keep them brief, use bullet points and mnemonics where possible, carry them with you and test yourself (or get others to test you) as often as possible.
I think that's about it, ultimately the SCJP does take a small chunk of time out of your life so it's worth making sure you can dedicate that time before you commit to booking the exam. However I think it's a useful certification to have and as someone who has been developing Java for several years I am pleased that taught me some new things that I didn't know and helped me un-learn a couple of things I thought I knew! Hopefully this will serve to make me a better software engineer!
I hope this is helpful to anyone considering/ already studying for the SCJP exam - good luck!