These were not recorded, but at least the slides are now up for reference, which several people had asked about. The Amazon whitepaper should be updated shortly too, but still contains good information for reference purposes, even if it is lacking some of the newer features/options. Interestingly, my Sydney presentation coincided on the same day as the announcement of the availability of a Sydney EC2 instance – nice timing
The Rollback state of MongoDB can cause a lot of confusion when it occurs. While there are documents and posts that describe how to deal with the state, there is nothing that explains step by step how you might end up that way. I often find that figuring out how to simulate the event makes it a lot clearer what is going on, while at the same time allowing people to figure out how they should deal with the situation when it arises. Here is the basic outline:
- Create a replica set, load up some data, verify it is working as expected, start to insert data
- Break replication (artificially) on the set so that the secondary falls behind
- Stop the primary while the secondary is still lagging behind
- This will cause the lagging secondary to be promoted
I recently realised I had become a bit obsessed with increasing my StackOverflow reputation – hardly a surprise really given how close it is to the gaming concept of XP and leveling, which has caused large parts of my life to disappear into a black hole (Civ and WoW, I am looking at you).
I have been helping out on SO, mainly on the MongoDB side of things there since I joined 10gen and it has been a great learning experience as well as a great tool to use, the self moderation means that the questions (and I hope, my answers) are generally well formed and potentially useful to others. Nonsensical and lazy questions are often voted out of existence before they can cause the kind of flame war threads that are so common on normal support forums.
The obsession that the reputation and other gamification components engender though is quite intriguing, and it’s why I see things like Badgeville having a bright future. It works, it’s based on pretty well established psychological principles and it is somewhat painful to do properly if you have no experience with it. Being able to “gamify” your existing products more easily, given the success of this type of approach elsewhere, is something I think a lot of people and businesses will be looking at soon.
I do also want to note that the Office Space reference on StackOverflow, calling this picture/rating summary “flair” tickled me too
One of my recent Citrix KB articles was about creating a Netscaler user monitor (which are Perl based) to allow for a more intelligent type of monitoring for AJP based services than a standard TCP based socket open/close check. The AJP Protocol Reference is good enough to provide a method for doing a simple and lightweight PING/PONG request/response. Unfortunately, the format of the packets is such that they cannot (currently) be added as a TCP-ECV monitor, essentially because of restrictions on non-printable characters being inserted into those monitors (believe me, I tried multiple ways to insert the required characters).
So, I set off to write the Perl version of such a monitor, but before I did I needed a simple script outside the Netscaler for debugging purposes – having to rely on the monitor for testing is needlessly cumbersome, better to get it functioning first and then add it to the monitor code later. Also, because of that approach, the script is perfectly usable as a generic test and is written almost entirely as a self-contained sub-routine (anyone that has seen the user monitor structure on the Netscaler will instantly recognize that also). Hence, I think it would be very easy to add the subroutine to a syslog or other monitoring type script. Therefore I decided to share the more generic version here. The full code is after the jump, if you prefer a more compressed binary version you can find it here: ajp.pl.gz
I have the acknowledgements in the code also, but to get them in before the jump, they were invaluable:
- The hex values are based on the information from http://tomcat.apache.org/connectors-doc/ajp/ajpv13a.html#Packet%20Headers
- Actual pack code to create the hex packets is from http://it-nonwhizzos.blogspot.com/2009/05/ajp-ping-in-perl.html
UPDATE: 28/09/2011 – I have resolved the issues I was having with the Citrix blogging system and published an updated version of this post there:
I’ll hopefully be an actual Citrix blogger soon, but in order to try this out, I thought I would post here first and see how it goes…..
If you are using one of the SDKs (Java or C#) then creating a NITRO session on the Netscaler is as simple as creating a new “nitro_service” object, choosing your connection method and setting your credentials appropriately. If have supplied valid credentials and your Netscaler is correctly configured then you can continue on your merry way and remain ignorant of what has just happened in the background. However, if you are looking to use another language to make use of the RESTful interface that NITRO provides, then you will need to know more.
The NITRO API Documentation is available from the Netscaler GUI, of course, but that serves as more of a functional specification than a guide to building a successful REST client in your language of choice. So, what exactly is required to take that first step and log in to a Netscaler?
The short answer is: A properly formatted POST request using appropriate credentials – easy, right?
Creating that properly formatted request, from scratch, can be more tricky that it appears. The exact requirements, along with an example, are after the break.
I decided to move off my old hosting provider and onto a new one due to a recent degradation in performance and a very poor Ruby on Rails implementation. At the same time, my domain had come up for renewal and the registrar (ENom.cc, now owned by Demand Media) wanted a ridiculous $35 per year fee to renew. So, off to GoDaddy I went, and got the renewal for $20 a year plus a year free since I was transferring it in, so quite the reduction in cost.
I figured I would share some of the information gleaned from the experience, as it was less than well documented on the interwebs. The transfer process is an interesting one and my first tip is to make sure that if you are moving to a new hosting provider at the same time (as I was) that you update the DNS for the domain first – you’ll see why when I describe the rest of the process. Once you have that done the first step involves unlocking the domain – this is one of those things that gets mentioned a lot in guides but no one explicitly tells you what it means – for those that don’t know, that looks something like this when you do a whois lookup:
That is normally a good thing – prevents a transfer being kicked off without your knowledge by someone with nefarious intent. Changing it is a less than transparent task though and involves getting into the registrars admin tools and finding the correct option to un-tick (assuming they expose it at all). Once that is done you then have to initiate the transfer – the first stage of that is a confirmation request to the registered owner of the domain (hopefully an e-mail address you still have access to) by the registrar seeking the transfer, followed by another confirmation request to the same address by the registrar that currently holds the domain. This all takes several days, so you have to be sure you get this done long before the domain is due to expire and that any housekeeping on the domain is done in advance.
In terms of the hosting transfer, my new provider (Dreamhost) allows the use of free sub-domains (of the form name.dreamhosters.com) so that you can set up your site on their systems and test it before taking the plunge and moving everything over. They also have a Cpanel importer to help which partially worked and saved me some time – not perfect though. Their Rails hosting support is far better and my Redmine instance is up and running now without issue. So far, so good – let’s hope it continues
On the front page of the blog at least – it tended to just clutter up everything and was generally unusable. I didn’t delete them though, just moved them to a hidden category. Whether or not I resume a regular blog or not is still up in the air – we shall see. But at least if I do post something it won’t be drowned out by tweets……
I love this picture, so posting it properly – my little niece decided she wanted to take a nap right on my chest. This was our first visit, so she was about 2 weeks old at this point
I think that would put her at abut 7 pounds – felt light as a feather……
Sometimes you can’t fit your thoughts into a 140 character message, so time for an actual post for a change. Not being a majorly political animal, this might seem like a strange post to jump in on, but I’ve always found it easier to look at politics from the outside – my overwhelming dearth of faith in Irish politicians also makes the goings on elsewhere more attractive.
I just watched Eddie Izzard’s tweeted video over at http://www2.labour.org.uk/eddie-izzard – as an Irishman I won’t be voting in the UK elections, but this might just have swayed me if I did. I think though, that the current Labour leadership is the very same one (with a few minor changes) that conned the British people into the war in Iraq.
A vote for Labour now is a vote for that same leadership – I don’t buy the story that it was all Tony Blair anymore than I would believe it was all Dubya and Cheney on the US side. Dump that leadership, start fresh, and then Labour would likely get my vote (depending on the local candidate of course), otherwise you are condoning what they did and asking for more.
Do I think the Tories are any better? No – but a significant defeat might be needed to knock some sense into Labour and get them back on the right track. Nice try Eddie, but maybe next time.
Now, back to work and studying for exams :/
While this site may not be my main outlet for ranting and rambling or even status updates at this point, it used to have a semi-decent page rank, so I’ll use it to let people know about a worthy cause/quest undertaken by a friend of mine, Reed. Reed lives in Washington DC and after becoming unemployed for the first time in his life (something I will have to deal with myself soon enough), he decided to give away $10 a day every day for a year to people and record it all while he did it. I doubt my post-employment activities will be anywhere near as noble.
He’s been at it for 80+ days at this point and there are some great stories in there – keep up the good work Reed You can find it at: