A decade flies when your having fun!

10 Years of Wave2While completing this years company return I happened to notice that the date of incorporation for Wave2 Limited was exactly 10 years ago last month, has it really been that long I thought to myself?

Well, no, it’s actually a lot longer than 10 years as the name Wave2 came to life for a particular reason…(insert time machine here)

A name born out of necessity

Rewind 14 years and you’d have found me soaking up every page of the TechNet library while developing ActiveX components with Visual Basic and Delphi. Those were the days eh!

Back then if you wanted to embed an ActiveX control in a webpage without the hassle of scary looking popups, you had to sign your OCX/DLL using a technology called Authenticode. The most reputable (if not only) company that offered code signing certificates was VeriSign, however the service was originally targeted at businesses not individuals and cost around £300, a lot of money for a part time coder!

Being the security conscious developer that I am, I did not want my end users getting into the habit of accepting self signed certificates. I was also aware that people were more likely to trust an application published by XYZ Limited than Joe Bloggs bedroom coder (how naive). First things first, I needed a name.

During the run up to Y2K there was much talk of a second wave of the Internet, one built upon distinct services that communicate using COM and CORBA (a bit like the web 2.0 hype today). As an early adopter of new technology, I was, and still am a big believer in making your mistakes with the first release and fixing them in the second release, the second wave (aka build one to throw away). Can see where I’m going with this? ;)

With all that in mind I somehow managed to piece together a name that would survive the test of time, Wave2 was born.

It was 4 years later in 2000 while reading After the Gold Rush that I was persuaded to take the plunge and form the company Wave2 Limited. The book covered every aspect of software engineering and inspired me to start taking my code seriously, in fact it had such an impact on me that I felt obliged to donate it (along with a few other classics) to the local library in the hope that it might inspire others the same way it did me. I wonder if it’s still there…

Open Source Solutions

It was about the time Wave2 was born that I became hooked on Open Source Software. Linux had been making waves (hehe) in the news for quite some time, and as I followed the trail to it’s roots I stumbled across FreeBSD – I was hooked.

After years of working with closed source/shrink wrapped software it was like discovering TechNet all over again, only this time there were no limits. The complete stack, OS to application could be taken apart and it’s inner workings explored, admired and built upon with no fear of financial recompense. There really are no boundaries with Open Source, so the only thing that stood in the way of my next solution was often simply my imagination, or lack of as my parents used to say. :twisted:

It wasn’t long before Open Source began to have an impact on my day to day employment, from the Python/GTK/MySQL application developed in-house, to the enterprise-grade issue tracker downloaded from Best Practical. As I watched organisations benefit from the solutions I developed/implemented, I realised that small businesses could gain a distinct advantage over mid to large businesses through the use of free software. This had to be the future for Wave2.

To infinity and beyond!

Since Wave2 was born I have been fortunate enough to enjoy the security of full-time employment, nevertheless the companies that I worked for were happy to embrace Open Source and encourage innovation, allowing me to keep this site alive with new ideas and insight.

The concept and meaning behind the name Wave2 is still the same as it was all those years ago, to be the second wave, a creative, innovative and yet progressively stable wave, built upon lessons learned and knowledge gained. I once thought that after Wave2 comes Wave3, Wave4 etc but I realise now that they are all just continuations of the same theme, more second waves.

I can only hope that the code shared on this site and many others provide the same inspiration I managed to gain throughout the last 10 years working in the Open Source space, I still enjoy every minute, and look forward to making waves for many years to come. :)

A massive thank you to all who have helped me out over the years! Here’s to another decade of innovation, knowledge sharing and above all – Fun! :grin:

Have a Very Merry Christmas and an Open Source 2010!

Merry Christmas 2009The year is finally drawing to a close, a year that has seen doom and gloom for many, what with the recession shaking things up in every possible way imaginable.

For the world of Open Source (and closed source for that matter), innovation seems to have slowed a little, with many a project focusing on monetization and enterprise penetration (think stability, minor improvements and paid support). This is all good of course and has had the result of positioning Open Source directly in the crosshairs of the CIO’s 2010 budget.

I personally took a step back from Open Source this year (a tiny step) and instead delved into the worlds of IBM, Microsoft (Big thanks for the assistance!) and Oracle (all embracing Open Source in one way or another – click the links), with a view to supporting more platforms with existing / future projects and at the same time feeding my ever hungry brain with fresh ideas. :idea:

While I let a few of my projects slip and failed to post as often as I wanted, I managed to gain insight into the feature sets and API’s of some of the leading closed source platforms (Open up folks – it won’t hurt!). It really pays to diversify, you never know where or how your code will be used, but honestly, I have no intention of changing the name of this site to Closed Source Consultancy any time soon! :twisted:

So after all the ups and downs of 2009 we finally find ourselves slap bang in the festive season, and with 2010 just around the corner, can we finally see the light at the end of the tunnel?

For starters 2010 should see the UK exit the recession (I’m optimistic) and the future of the MySQL database may eventually become clear, but is it too late? Think PostgreSQL 8.5. :roll:

We have Perl 6 to look forward to (has it really been that long!), followed closely by OpenJDK 7 (will Modularization make this a no brainer) and with Google looking to take over the Netbook / Mobile markets (along with every other market you can think of), 2010 is definitely warming up to be an interesting year!

I’m hoping that a decent e-reader device arrives (Google/Apple?). The Kindle etc look impressive but they still feel first generation and I prefer to wait for the second Wave before diving in. ;) .

New years resolutions

I didn’t do too bad with my resolutions for 2009, what with my knowledge upgrade of Microsoft SQL 2008 and Oracle 11G, making a start on the FreeBSD package for AuthStor, and upgrading all my local servers to FreeBSD 7.1+ (FreeBSD 8 rocks!). The only 2 resolutions I failed to achieve were non-techie (Guitar and Ableton) so that’s ok right?

Here’s my attempt at a list for 2010!

1. Redesign this site (and post frequently)
2. Code more (AuthStor, BinaryStor, dbRecorder, Informeer etc) and innovate
3. Upgrade to Perl 6 and Java 7 – not at the same time of course!
4. Play the guitar (maybe once or twice a month this time)
5. Row at least a million meters

Exciting times ahead!

Right I’m off to enjoy Santa Clause The Movie, so without further ado, I wish you all a Very Merry Christmas and a Prosperous Open Source 2010!!

EuroBSDCon 2009 – Tutorial Day

EuroBSDCon2009When they announced the venue for EuroBSDCon 2009 I was pretty excited to hear that it was going to be held in Cambridge, just a few minutes down the road from where I work. I was even more excited however when I heard that Dr. Marshall Kirk McKusick was going to be giving a 1 day tutorial on the inner workings of the FreeBSD kernel!

I have been working with FreeBSD for well over 12 years now and have read many a book on the subject, including a few written by Kirk McKusick, one of which was the subject of this tutorial ‘The Design and Implementation of the FreeBSD Operating System’. It’s been a while since I last read the book and as FreeBSD is so reliable I have yet to find an itch within the Kernel that has not been scratched by some other developer.
That does not mean that I am not curious about the inner workings, after all if you do not fully understand something how can you maximise it’s potential.

Justifying the spend in the current economic climate was difficult, but there was no way I was going to miss the tutorial even at the expense of missing the weekend talks which I later found out contained another session by Kirk on SuperPages in FreeBSD 8.0. :(

The tutorial and conference were being held at Robinson College, not too far from the centre and a peaceful walk past the playing fields. Upon arriving I was surprised to see so many beastie T-shirts and many famous faces from the world of Unix!

MusicRoomPaintingSmall

The tutorial was one of 3 being given that day and saw around 20 delegates squeeze into the Music Room, a small yet comfortable room with brick walls and a couple of oil paintings, one of which had what looked like a tiny Beastie painted in a field (check out the photo)….weird huh….

The tutorial began with an explanation that the course had been condensed over time due to the request of conference organisers and was usually taught over several 1hr 30 sessions. This was the first attempt at squeezing the content into a 1 day tutorial and so might be a little unpredictable.

Having read the book previously I could immediately relate to the slides, and as Kirk continued to enlighten us with his graphical view into the Kernel, many areas of the book that I had read but not necessarily understood, slowly began to make sense. In fact after the first session it became apparent that I had a better idea of how the Kernel worked than I first imagined.

The first section flew by real fast and I got the impression that Kirk might have been regretting the decision to allow questions to be thrown throughout the tutorial. For the delegates however this freeflow questioning was priceless as it was clear that there were a few who had come into the tutorial with no prior knowledge of how Unix/Linux Kernels operate. Even for the initiated, just being able to ask a question and get a detailed response was worth the tutorial fee.

RandallandKirkSmall

After a brief coffee break it was full speed ahead for next hour or so until lunch, which was surprisingly tasty, and managed to curb the headache I was feeling, along with other cold-like symptoms I had been fighting. Back at the Music Room Randall Stewart popped in to say hello and joke about his session on SCTP where he was having to throw questions out to the delegates to keep them awake (I’m sure it was a joke!) :)

As everyone returned from lunch, Kirk explained that we had only managed to cover 1 out of 4 of the sessions and asked if we would like to vote for which of the remaining 3 sessions to focus on. All 3 sessions got equal votes, so it was decided that questions be kept to a minimum and Kirk would talk less but still cover all the topics.
By the time we got around to the next coffee break we were back on track and ready for a sprint through Networking and IPC. Speaking of networking, Eric Allman (Sendmail – get it ;) ) dropped in, just in time for the tutorial to finish, and with only 1 minute left for questions!

After the tutorial we were all invited to join the developers for a punt along the river cam joined by food and beer in town, but as I my head was throbbing, I decided to give that a miss on this occasion and head home in search of a dark room to browse the FreeBSD source – or just some sleep. :)

The tutorial was excellent and if you happen to be curious about the inner workings of FreeBSD, or like me had read the book but needed some more clarity, you should try to catch the next one or buy the course on DVD and learn at your own leisure!

A big shout out to Kirk and all those who made EuroBSDCon happen! Thanks folks!!

Flex – It’s like Flash for Coders

Concept2 Flex WidgetAfter a well needed break, spent mostly on a sun lounger reading Masterminds of Programming (Fantastic book if you truly enjoy your code!), The Art of Lean Software Development (A real eye opener and highly recommended) and The Productive Programmer (Common sense for experienced developers, but an easy enough read to help refresh your memory), I arrived home a few pounds heavier than when I left, eager to release the creativity from my well rested brain. ;)

While on holiday I managed to pay a visit to the gym (one day it rained :twisted: ), where I stumbled across an ergometer that is quite simply an impressive piece of engineering!. At first glance the rower looks solid and unobtrusive, however the minute you start to row, you can tell that a lot of work had gone into designing this machine. From the super smooth whir of the flywheel, to the instant gratification from the console, I was hooked and just had to have one!.

It took me a while to finally track down the model (I couldn’t find it in the high street), but after trawling Google images for rowers, I finally found myself at the Concept2 website. It came as no surprise that the Concept2 is regarded as the world’s best rowing machine, and after buying mine from their site I have to agree with that statement.

So what’s rowing got to do with Open Source anyway?, well one of the cool things about owning a Concept2 rower is the ability to log and validate your rowing time online. Doing so allows you to take part in the many challenges offered (I’m looking forward to Skeleton Crew) and compare your ranking with other rowers around the world – rewards help motivate you and keep you rowing!.

It was while I was updating my Online Logbook that I began to think about adding my current progress to this site and wondering what the best method of presenting that information would be. Concept2 are working toward a web based API to access stats, so if I wanted to embed my progress in the meantime I would need to parse the current ranking page.

I started off looking at Javascript, as I knew that most browsers support the language and it would not require any server side code. Finding a decent progressbar that had a nice API and worked well in most browsers, however, proved to be tricky.
I remembered that the Open Source Adobe® Flex® Framework has an easy to use progressbar, and with Adobe Air targeting the desktop I could run the widget on the desktop if needed.

It’s been a while since I last played with Flex, but I am still impressed with the simplicity of MXML and how easy it is to get an working app in no time. Within minutes I had a working widget, my only issue was that when I uploaded to the website, the actionscript that parsed the logbook page failed due to a sandbox violation. A common issue that is easily fixed by uploading a cross-domain policy file to the website you want to access. :( Not something I wanted to request, so I just resorted to mirroring the page on my own site for now – good old Wget and Cron. :)

Adding the app to the site was no trouble either, with the help of SWFObject only a few lines of html are required to embed the app and handle any cross browser Flash issues. If you want to see just how easy Flex is to work with, check out the tutorial on the wiki for details on how the widget was built.

Of course that’s just a start, there’s loads more features that could be added to the widget and if parameterised / themed it could also be shared with other sites – watch this space!.

While working with Flex / Flash I also stumbled across Zero Clipboard, a cool library that allows you to access the clipboard via Javascript – AuthStor now has 1 click copy, a feature that cut out several steps required to copy a password and ensures that nobody can snoop over your shoulder.

Right back to rowing, I have 976433 meters to go before I make it into the Million Meter Club!. :)

PostgreSQL – Rock Solid in the face of forking MySQL

PostgreSQLEver since Sun Microsystems agreed to acquire MySQL back in 2008, there has been a fair bit of uncertainty and chaos surrounding the world’s most popular Open Source database. With many big names in the MySQL community pulling in different directions and the recent Oracle / Sun acquisition, the choice of which Open Source database to use is now easier than ever – PostgreSQL. :twisted:

One of MySQL’s key strengths has always been its simplicity to both install, manage and code against, resulting in mass adoption over time, which in turn forced the once web bound database to evolve into a near fully fledged enterprise RDBMS.

PostgreSQL on the other hand was born an RDBMS and instead worked silently in the background improving the performance, reliability and feature list of the world’s most advanced Open Source database, and all under the lesser restrictive BSD license – nice work!.

Getting up to speed with PostgreSQL can take a little longer for MySQL veterans, mostly due to the many subtle differences, but more importantly the extensive feature set (one of the reasons it is taking longer to add PostgreSQL support to dbRecorder ;) ) but the rewards are worth it, as companies such as Skype can attest to.

It was installing OpenNMS several years ago that convinced me to get to grips with PostgreSQL, and although there is a distinct lack of new reading material out there the manual covers everything you need to start building your next web app.

The GUI tool pgAdmin has also come a long way and provides a great interface to PostgreSQL, with excellent instructional prompts and support for all major platforms, there really is no better tool to help you work with PostgreSQL while getting to grips with the vast feature set. Check out the latest beta over at the pgAdmin site.

If you’re not yet excited about PostgreSQL, maybe you should check out the feature list planned for release 8.4 (currently at beta2), with cool features such as Column Level Permissions and SSL Connections you can feel less stressed about the security of your data, oh and the performance improvements won’t hurt either!.

While keeping with the BSD license, another notable release last month was FreeBSD 7.2, a great platform to complement the reliability of PostgreSQL and another way to gain some performance improvements.
Speaking of performance I was pleased to read that Jails are much improved in the latest release, and that it seems I am not the only one that prefers Jails / Zones over VM solutions!.

I’m off to make some progress with PostgreSQLDump.java, the worker class that will allow me to add PostgreSQL support to dbRecorder.
Watch this space…..

One eDirectory to rule them all

Novell SUSE Enterprise Linux 11There was a time when Novell ruled the server…a time when CNE was a mark of technical excellence and server uptime was measured in years not weeks…a time and when Novell Directory Services (NDS) provided a single point of administration for every aspect of the enterprise environment, including the then evolving Active Directory!.

Yet just when everything was coming together for Novell the attraction of owning the desktop led them to acquire Ximian, the coolest Linux desktop on the block, before joining forces with IBM and acquiring SuSE – possibly the biggest competitor to RedHat at the time.

It was not long after the SuSE acquisition that Novell announced their intention to phase out NetWare, a move that saw many IT Managers faced with the decision of migrating their servers to the then largely untested OES (Open Enterprise Server) or crumbling under the ever increasing pressure of Active Directory and Exchange. Needless to say not many survived to log in via the Novell Client

I personally focused my energy on FreeBSD and other OpenSource solutions, occasionally rolling out OES to companies that required enterprise support, secure file synchronisation (iFolder) or a rock solid collaboration platform (GroupWise). Novell have always had sensible license fees that were often based on the user model and not server providing massive cost savings.

It was cost savings that I was looking for recently while searching for a cross platform LDAP solution that was easy to manage, secure, reliable and had enterprise support to boot. It was exactly those requirements that led me back to Novell, back to eDirectory, which after all this time continue to offer the Full Service Directory promise that ruled the enterprise several years ago.

Installation of eDirectory on SuSE is seamless, RedHat however required a few dependencies (yum install) but still took under 10 minutes, and that included bolting on iManager the secure web interface to many Novell products (think Console One). Configuring the RedHat clients was just as easy, in fact using the authconfig tool you can configure the client to talk to eDirectory with a single command:

authconfig --enableldap --enableldapauth --enableldaptls --ldapserver=myserver --ldapbasedn=o=myorganisation --enablemkhomedir --updateall

As for adding a replica for resilience, well you only need to install eDirectory onto another server on your network (yes it runs on Windows too!), and as long as you select your existing tree during the install process you have a secure read/write replica – simple eh!.

So it seems Novell never gave up. They focused their energy into migrating all the great tools we took for granted with NetWare while combining the best of breed Linux tools into SUSE Linux Enterprise 11 – Novell’s latest enterprise server platform.

With features such as .NET support for System z mainframes, OCFS2 / cLVM2 and new fine-grained management of CPU, memory, storage and networking resources, it looks like Novell have a worthy contender to the enterprise Linux throne!.
Could Novell be ready to pick up where they left off with NetWare?, only time will tell….now if only eDirectory ran on FreeBSD. ;)

Happy New Year!

Happy New Year 2009!I know it’s a little late but the usual drive of new year innovation and releases within the Open Source world have been keeping me busy recently.

New years resolutions

1. Package AuthStor
2. Learn another RDBMS – Oracle / MSSQL?
3. Upgrade my local servers to FreeBSD 7.1
4. Pick up the guitar at least once a week
5. Lay down my first audio track in Ableton Live

The year started with my attempt at some resolutions (you know the ones you never keep) of which I am already making good progress on.

First on my list was AuthStor which is working on a basic level at the moment but there is so much more that can be done to make it easier to use. Why has it taken so long you may ask?

Well apart from being the only developer last year, I made several attempts to re-write the app in something like JSP or Zend Framework, partly because there is a lot of activity in those communities but mostly due to the complications faced with packaging around 50 Perl modules that each have their own compile time dependencies – some of which change frequently often breaking the application (no strict API/Interfaces to adhere to).

So after several prototypes why did I decide to stick with Perl?
Well for starters the changes that did break the application often forced me to change the app in a way that was more logical or introduced a more structured design. I also found that JSP and Zend although cool frameworks tended to feel incomplete and introduced complexities elsewhere e.g. containers / authentication / roles. Catalyst is simple and extremely powerful providing both a development environment and production framework that takes little effort to introduce new features quickly. I can start 2009 in the knowledge that Perl and Catalyst are the right language / framework for the job. I just need to work on the packaging now!

The next item on my list is to learn yet another RDBMS. Why? Enlightenment first and foremost, plus I am a big believer in gaining as much knowledge as possible in my chosen field. You’ll never complete the jigsaw if you have several pieces missing, and seeing as I spent a good part of last year getting to know DB2 I decided this year that my focus would by Oracle and MSSQL, thus completing the picture.

With the release of FreeBSD 7.1 there are now so many cool features that I decided to upgrade some of my older servers that have been sitting in the corner running nicely on FreeBSD 6 (they never fail). DTrace and ZFS put a stop to FreeBSD slipping behind OpenSolaris and the ULE scheduler helps improve performance over your average Linux distro, and with ULE 3 due for release in FreeBSD 8.0 (June) you can expect to see further dramatic performance improvements. :twisted:

Last on my list will be to pick the Les Paul at least once a week!. One of my prezzies in 2008 was a new orange amp! If that does not encourage me to pick up the guitar I don’t know what will!. You never know I might even mix something up with the copy of Live I got for Christmas ;)

Merry Christmas!

Christmas2008I spent the last month taking a break from Open Source, partly due to FreeBSD 7.1 failing to hit the FTP servers as scheduled (any excuse), but mostly due to Santa’s early delivery of Ableton Live. Not really Open Source I may add but extremely cool nonetheless and a much needed break from coding!.

I find that staring too much at code can hamper the creative process (hehe), and as you know Creativity and Innovation go hand in hand with Open Source Software!.

Speaking of which, while I have been busy playing with waveforms and elastic audio, the Open Source world has been all guns blazing with cool releases like MySQL 5.1 GA, Open Solaris 2008.11, VirtualBox 2.1 and WordPress 2.7 to name a few.
You really cannot take a break these days without something big in the world of Open Source happening in your absence. :)

So the year is nearly at an end which got me thinking, what was the highlight of 2008 in the world of Open Source?.
I have to confess to spending more time than I would have liked this year working with proprietary software, always in combination with Open Source tools of course!. So if I had to highlight anything from 2008 it would be that Open Source is now more pervasive than ever. From your OSX laptop at home to the Linux servers at work, right the way up to the Internet’s biggest sites and services (running FreeBSD ;) ), you’ll find Open Source Software behind every successful venture. In fact it is now so popular even Microsoft could not resist the urge to get in on the game!.

In fact there are so many Companies using Open Source now that proprietary software may actually be the minority! We all know everyone loves an underdog, so maybe propreitary software will be the hit in 2009? Then again with the state of the economy maybe not! ;)

The biggest influence for me this year (both good and bad) had to be Sun Microsystems who played a large part in Open Source adoption in the enterprise and continue to lead the way with their open business model (GlassFish, MySQL, Netbeans, OpenJDK, OpenSolaris and VirtualBox to name just a few of their many contributions).

Although most of the time it seems like they cannot do anything right, one thing is for sure, without the corporate weight of Sun behind the Open Source ethos we may not have made it here so quickly. So while your saving big bucks with your ZFS storage and processing millions of transactions with MySQL, don’t forget to say thank you to Sun next time you are complaining about JavaFX or MySQL 5.1.
You may even want to swap those complaints for contributions (I know complaining is often easier). :twisted: Thanks Sun!

So if you are one of the few companies yet to Open your code to the world, what are you waiting for? This Christmas give the gift of knowledge and share your achievements instead of fearing the competition and wrapping your code in a black box (don’t worry we won’t laugh at it). You’ll feel much better knowing you helped make the world a better place!

Until next year I wish you all a Very Open Source Christmas!! and as always Happy Coding!

If only Guy Fawkes had a G1…

Google AndroidHappy Halloween! – well by the time you read this it will be more – Remember, remember the 5th of November!. So what’s been happening?

Well I spent the last month getting to grips with DB2 – why I hear you ask?.
You shouldn’t keep all your eggs in one basket, and there were rumors that DB2 might become Open Source at some point (or not). Anyway even if that never happens there is a lot to learn from the original DBMS and with DB2 Express-C available for free there’s nothing to stop your Open Source app taking advantage of that fact. Besides competition is a good thing.

Anyway not forgetting my favorite DBMS, I managed to find time to spend a morning at the 4th MySQL Conference in London where the keynote opened to – here comes the sun – cute. There was a lot of emphasis on the fact that MySQL was not being written to run faster on Solaris (even though I got the impression that it does, with features like ZFS and snappy 64bit libraries outlined during the second session).

It was a relief to hear that MySQL 5.1 will finally go GA during the first week in December along with the new query analyzer (aka proxy). I couldn’t help get the feeling of déjà vu out of my head, after all it was only last October that I remember seeing some very similar slides – anyway fingers crossed for a December release!.

My only disappointment at the conference was hearing that the auditing / security features would not make an appearance until after 2010? (TBD), frustrating especially with items like PCI compliance high on everyones agenda. Still with a little ingenuity and help from the MySQL Proxy Server you can roll your own auditing solution and customise it to your own needs (is there anything proxy can’t do :) ).

Speaking of which it looks like the Proxy Server will finally hit GA early next year in the form of the MySQL Load Balancer. In fact it is planned to make an appearance in December in the form of the Query Analyzer – yes that’s based on the Proxy too!. Time to brush up on your Lua and check out the samples over at the Forge.

The big news this October/November goes to the G1, the first phone to take advantage of Android: a complete, open, and free mobile platform.

My own G1 adventure started last Thursday with a call to T-Mobile who were keen to dispatch my phone next day, but not so keen to deliver it to my workplace. Not a problem, I could wait till the weekend even if it meant paying £6 for delivery.

Saturday morning came and went with no sign of a Royal Mail van and after a 20 minute call to T-Mobile it seemed I would not be getting my G1 anytime soon. I listened to several explanations ranging from the order not going through to high demand exhausting stock. No offer of apology or even a discount of any kind!.

Not one to accept lame excuses I asked for the order to be cancelled and fought for another 15 minutes with a customer service rep who claimed the order could not be cancelled over the phone. His manager however had no problem canceling the order – funny that eh. A quick Google search confirmed my thoughts!.

My local T-Mobile shop was not much help either claiming that the plan I had accepted on Thursday no longer existed on Saturday due to it now being November. They did however have the G1 in stock, well they did until I decided to purchase it, then it seemed Monday was the earliest I could get one. I picked mine up on Sunday from Bluewater and even got the plan that no longer existed this month… :)

The fun didn’t end there though as it was about 5 minutes after opening the phone that I managed to lock the SIM while trying to set-up the password protection – PUK locked please contact customer services – do I have to I thought!. 30 minutes later the customer services rep had no idea how we could unlock the phone and instead decided to give me my PUK code along with the phone number for HTC‘s customer services (it’s their problem not T-Mobile’s) – which as you may have guessed already happened to be closed at the weekend. Maybe Google could help!.

Another quick search and it seemed I was not the only one with this problem and the only answer so far was to place the sim in another phone to enter the PUK code and unlock the SIM. Simple when you know how! (and you have a spare mobile to hand). Anyway my phone is now unlocked and I’m ready to start exploring Android. I did try logging into the My T-Mobile site to register my phone etc however the link failed – no surprises there.

As with most Open Source projects it is the community that provides the support and with the G1 / Android this is no exception. If you want to learn more about Android on the G1 don’t waste your time contacting T-Mobile, instead head on over to the website or forum and marvel at what is no doubt going to be THE mobile platform of 2009. All I need to do now is think up an idea for an app…..

Code Me In!

Code Me In
If you are security conscious and nowadays who isn’t?, you may have pondered over ways to make your external SSH connection safer.
Of course there’s always One-time Passwords and Public Keys, but if like me you watch the daily barrage of brute force attacks you may be thinking it’s only a matter of time…

That’s what I was thinking at about the same time an SMS arrived on my mobile….then it hit me….I take my mobile everywhere, if only my server could call me and ask if it is really me trying to log in.

My first instinct was to try and insert a Perl or Python script into the login process. After all Clickatell have several libraries that you can use to send SMS messages. How hard could it be? ;)
Well for starters it didn’t feel right relying on a script that runs within an interpreter that is running within a shell, but how else could it be done? Pluggable Authentication sprang to mind but that’s hard right? Wrong!.

Hitting the FreeBSD handbook I was able to gain a decent understanding of PAM functionality and even managed to find some sample code. Shame the programming section had not yet been written. O’Reilly to the rescue. After reading a few articles on PAM it wasn’t long before I had a working prototype, in fact most of my time was spent deciding upon the right library/s to use.
The end result is a pam module that can be dropped into the authentication chain for any PAM aware application/service – think SSH, FTP, POP3 etc.

Upon successfully entering your Username/Password the pam_codemein module uses libcurl to send an HTTPS request via Clickatell, my preferred SMS gateway, which then forwards the random Code to your mobile before prompting you to enter the same Code at the prompt to gain access. Of course there are issues with using SMS, such as mobile reception and timeouts, but in testing I didn’t notice any.

If you are concerned over the cost of SMS messages, Clickatell are a bulk SMS provider so rates are good, and if you prefer to be contacted via some other method the code can be adapted to any other service e.g. XMPP via TLS, you could even GPG encrypt the Code in an email if you prefer.

It was only after I had the fun of writing this module that I stumbled across this blog post. Shame as it may have saved me a lot of time, but hey where’s the fun in that? I’ll just have to get cracking on the XMPP method – either that or search deeper within Google. ;)

Have you seen RT 3.8!

It’s been a long time coming but after 2 years in the making the enterprise-grade ticketing system that is RT has had a well earned facelift, and what a difference!!.

Upgrading from 3.6.3 would have been straightforward if it was not for the fact that I also decided to upgrade to MySQL 5.1 at the same time. The final product made the pitfalls worthwhile however and RT is now slicker than ever. Plus I got know RT better along the way – bonus!.

If your thinking of upgrading to RT 3.8 / MySQL 5.1 just remember to use the MyISAM engine for the Attachments table (It’s worked so far for me with around 84k tickets). Failing to do so will result in slow response from the UI on certain actions due to MySQL failing to select the correct index on certain queries:

ALTER TABLE Attachments ENGINE=MyISAM;

It looks like the optimiser is broken for the InnoDB plugin, however if you check out this bug it may have been fixed by now (I was using FreeBSD port: mysql-server-5.1.26).