Are You Thinking Of A Career Change?

If you’re thinking of a career change you’re probably wondering whether it can really be done?

I can tell you from personal experience, it can.

Where Do You Begin?

Well, the biggest question you’ll need to answer first is “What is it that I want to change to?”. This might not be as easy as it sounds. If you’re like me you’ll probably know that you don’t like what you’re doing now, but you won’t necessarily have any clue as to what it is you really want to do. Ironically though, if you search yourself hard enough you’ll probably discover that you’ve had niggling ideas all throughout your life which will be trying to tell you what it is you really want to do.

Even more ironically, if you’re like me, it’ll turn out to be the thing that, when asked 20 years ago whether you’d consider doing XYZ job for a living you’d have told the enquisitive quizzer that XYZ Job was the worst job on the planet and you’d never even think of doing THAT.

OK, but what if you REALLY REALLY don’t know what you want to do. Well, the thing that enabled me to find my passion was to volunteer for a while. There’s a million and one places that you can find volunteer work in all manner of different industries and job types. Volunteering for a while will enable you to determine if that industry sector is really where you want to go.

After being in the Kinglake CERT for a couple of years I had decided I wanted to become a paramedic. Funny, I can still remember when I was 18 or so, someone told me they wanted to become a paramedic and I told them I couldn’t think of anything worse than mopping up blood and fixing people’s heads after they’d collided with telegraph poles in cars. Yuck, what a job that would be. Back then though I wanted to be a Veterinary Surgeon. I could do it for animals but I really didn’t like people enough to want to care for them!

How times change… And it was only because I volunteered for the CERT. I later started volunteering for a local nursing home as well, and whilst I don’t think Aged Care is my thing, it helped me understand more about how Aged Care works, and really helped cement my desire to help people who are in medical strife.

My ultimate ambition is to become a Flight MICA Paramedic with Ambulance Victoria. This combines a very old passion of mine (flying) with the new passion of Paramedic.

So, to summarize, if you don’t know what you want to do – check out some volunteering for a while. If you don’t like it as a volunteer you won’t like it as a paid career.

OK, I figured out WHAT, but HOW do I make the switch?

Well, this will be different for everyone. In some cases you’ll need a degree qualification to move from your current field of expertise into your new field. In others you may just need a lesser qualification or possibly no qualification at all.

In almost all cases, you’ll be leaving one highly competitive industry and entering a new highly competitive industry, which leads you to the question of ‘Why should your new chosen employer, employ you when you have zero experience in this field?’. A tough one isn’t it? You can’t gain experience until you can get into the field, and you can’t get into the field without experience.

Well, I’m going to use that V word again. Volunteer. If they’re not paying you to do the work, places are a bit more happy to accept a lack of experience. Generally this will be because if you’re volunteering somewhere you’re doing so because you have (or feel you might have) a passion for the industry you’re volunteering in. If it doesn’t work out, they haven’t paid you and so the loss (and therefore the risk) is really all yours.

You almost certainly will not be able to volunteer in the actual role you want to aspire to. The key is to get into the industry first as a volunteer and then worry about the specific role. This is especially true if the new role you are wanting to move to requires qualifications. You won’t avoid those qualification requirements just because you’re a volunteer. So don’t expect to be able to start at the top – you’ll have to start at the bottom and train, study and work your way up.

Consider Part Time

If you’re considering a career change you’re probably fairly well up the ladder in your current career, or aged around 40ish with a mortgage, maybe some kids and hopefully a spouse. That means you have commitments and how on earth can you hope to go from your good wage/salary that you’ve built up over the years to starting again at the bottom of the ladder on a new career path? This is especially true if you need to study for your new path.

Part time work in your current career could work for you. It has for me. I am still a part time WordPress programmer. The wages from that are significantly better than what I’ve moved into but (and this is no reflection on WordPress, its just my state of mind) the pull of becoming a paramedic means I’ll take the lower wages for now while I get re-trained and re-skilled to do what really drives me.

There will be sacrifice though, almost certainly. Unless your mortgage is already paid off you’re going to struggle for the next few years while you study or make do on that lower end wage.

I can’t afford a University Course

Firstly, if you have a genuine case of hardship (and not just one of not wanting to work while you study) you may be able to receive a scholarship from either the University themselves or possibly from a potential new employer within the industry sector you’re looking to move into. It’s worth looking into before you write off your chances.

Depending on the industry you’re moving into, you may be able to enroll on the Open University and continue with your current job until you re-qualify. Open University courses are extremely popular with people re-skilling later in life and are highly recommended.

Many countries (well, ok, so I only know about the UK and Australia!) will offer government supported places and/or government student loans which you pay back when you start earning a specific amount of money in your new career. Take advantage of these if you need to – the interest rate is usually very low or even zero percent.

Finally, you could enter the new industry at a lower level and persuade your new employer after a time to sponsor you through university. In some instances that will work nicely, although it does seem quite hard these days to get employers to pay for anything except the hours you work. You’ll need to work hard to convince them you’re a good risk for their investment and the volunteer work you did up front will stand you in good stead for this.

Can I Do It?

YES YOU CAN! I did it, and I know a huge number of other people who’ve also done it. All you need is a passion for the new career you’re going into, and you’ll be able to move mountains to make it happen.

I hope this article has given some useful insights into moving into a new career, perhaps with some things you hadn’t thought of to be able to make it happen. Please leave a comment below if this has helped you, or if you have any questions.

Running A Small Business – Here’s Why You Should Consider Insurance

I’ve run a small business from home for the past 6 or 7 years, in various forms. I thought I had a good handle on the various risks that could be involved with running a business, such as IR35 legislation in the UK, through to Public Liability, Professional Indemnity and of course Safe Workplace risk reduction and things like that.

I also have in place Life Insurance and Permanent Total Disability Insurance along with Income Protection Insurance. All these are of course good things to have in an uncertain world, to ensure your income is at least somewhat maintained if something awful should happen that means you can no longer work.

But, one form of insurance I never considered was Business Continuity Insurance. I figured that since I was running a small business that consisted of myself and my wife and we were both had life cover, and TPD cover that we’d covered off every eventuality. Of course, hindsight suggests you can never cover off every eventuality and there was one consideration we certainly missed. Which is where, Business Continuity Insurance could have stepped in.

Now, I am NOT an insurance expert, and I have no affiliations with any either. If you read this article and decide you ought to look into Business Continuity Insurance or covering off the aspects of business interruption I’m about to talk about, then you MUST speak to your Financial Advisor or Legal Advisor or Insurance Broker to find the best cover that’s suitable for you.

February 7th 2009. Anyone reading from Australia will probably know where I am heading with this. At about 4pm that afternoon our world went black, sooty, and very very hot. We’d moved all our important data and documents into a safer place just in case the Victorian Bushfire that approached that day, and made the headlines for weeks and months afterwards, came to get us.

The bushfire itself passed by us. We were one of the lucky ones. We watched it burn all around us for the night, and we waited for it to come through, but somehow we were protected. It was the weeks and months afterwards that affected us more than the fire itself. Being self employed in a local community that is devastated by natural disaster means that even though you’re not physically affected there are a myriad of reasons why you’re emotionally and financially affected. And, being in business means you’re extremely unlikely to receive any Government help because they cannot be seen to be giving an advantage to a business in the natural disaster zone over one which is outside the zone.

That’s what we found. There was almost no assistance for business after the Victorian Bushfire. This isn’t in any way a criticism of the Victorian or Federal Government, I understand the reasons their hands are tied. They did help us out personally, and Business Mentors were provided to help us navigate a way through, but there was no assistance financially to help us get through. Why does this matter?

There was no power for the first week.
The police had closed the road for weeks after the fire, so they could control who had access to and from the area.
We were not mentally capable of concentrating on business aspects for MONTHS.
A number of our clients lost everything and no longer wanted what we offered.

So for months we had little to no income, and little interest due to the emotions of the event for generating an income. As a result, over a year later we’re still playing catch up. Credit cards are maxxed – mortgage is maxxed – a number of key assets have been sold in order to meet the commitments. It’s not pretty.

We NEVER considered that we’d be caught up in a natural disaster. And if you’re thinking ‘Its ok, even if we are in a natural disaster, the Government will look after us’ then think again if you’re in business. If you’re in business it’s YOUR responsibility to plan for the unplannable. Aid agencies and governments quite rightly focus on the citizens of their jurisdiction. Business will not be given a leg up because, at least in the Western Capitalist world, there is international trading legislation which forbids subsidies to most businesses – and that’s how the legal eagles see financial assistance such as this. And to be honest that’s only right and fair. If you take the bounty when times are good you have to take the pain when they’re not.

If you’re running a small business, whether it be from home or an office, you really do need to consider Business Continuity Insurance so that if the worst happens, you won’t end up falling (too far) behind. If we could do it again, we’d have had Business Continuity Insurance on Feb 7th.

I’d like to say a very public thank you to New Horizons Whittlesea church, The Salvation Army, Combined Churches of Whittlesea and Linfox and the Clayton Bushfire Relief Warehouse because without each of these, our family would be out on the street now with no home to live in.

Be Fire Ready, If You’re In a Bushfire Prone Area

Introduction – Who Should Be Fire Ready?

This article is a little odd for my blog perhaps, but there’s a reason. Actually there’s a couple of reasons.

I went through the Victorian bushfire last year, the worst natural disaster in Australian history where 173 people died and thousands were displaced from their homes. Many of those still aren’t able to return as they’ve not yet finalised the details of their rebuild for various reasons. Some of course choose not to come back to the bushfire prone areas and have instead moved to the suburbs.

But even in the suburbs you still need a bushfire plan. The Victorian bushfires of February 2009 that tore through Kinglake, Marysville and half of the Murrindindi Shire, were accompanied by other fires on the day, including one in Narre Warren. The fire in Bendigo on the same day was in a suburban area and destroyed a number of homes, partially I’m sure because people in that area believed they were safe because they were in a suburban area.

Fire-Ready is implemented in CS-Cart

This is where the latest site that I’ve been working on for a customer, fire-ready.com.au comes in. They supply everything you need to help ensure that on the day when bushfire threatens your property and family, you’ll be ready. Fire Ready. Why am I writing about this? Well because I think the site is also a showcase CS-Cart site. It took some doing and lots of blood sweat and tears, but I believe it proves the amazing flexibility of the CS-Cart engine.

How was it done?

The site originated from the original CS-Cart skin – the basic skin. It was then stripped bare, to remove some of the display items that were not needed, and it went through a few iterations while I figured out the best way to tinker with CS-Cart. It soon became clear that one should always try to work within the CS-Cart framework, so I had to learn how to design and code my own blocks, so that these could be added and moved around as the customer required. Although some of the design elements do not lend themselves to being moved around, the CS-Cart engine is strongly oriented towards blocks and rather than hack up the skins to a degree that would make them unsupportable I chose to do these likely unmovable elements as blocks as well.

The CS-Cart knowledgebase is a very handy resource, although unfortunately it is missing a considerable amount of information. But it’s a good place to start learning how to do your own addons and blocks.

I started to write a blog article about how to write CS-Cart blocks, but its quite a complex subject and the article requires some extra editing that I’ve since learned so I will release that shortly and come back here to link to it so others can share the love. But, once you get your head around the CS-Cart architecture it’s really very nice to work with.

One principle that I will share here and now however is that one should never, ever, alter the core CS-Cart files. This is something I’ve learned from the WordPress world, and in some ways programming a CS-Cart skin is a little like working with a WordPress theme. The actual building blocks are very different – CS-Cart uses the Smarty Template System for instance, which WordPress does not – but the architectural decisions are fairly similar. So, you can create your own AddOns (which you’ll just about need to if you want to create your own blocks), which can ‘hook’ into aspects of the CS-Cart functionality using either your own pre/post controller code, or using CS-Cart hooks. Each mechanism has its own pros and cons, which I’ll also try to go into in my next CS-Cart article.

One small thing to note here, if you’re starting to look into writing your own blocks and require access in PHP code to the template variables, you may be tempted to use the Smarty method ‘get_template_vars‘. Don’t. CS-Cart overrides the Smarty object and provides a number of its own methods – most of which are very good and make life a lot easier for you. But there’s also this gotcha – when you use $view->assign, the code internally uses the PHP htmlspecialchars() function to escape any data that may be contained in your template data. However, CS-Cart rather curiously have not overridden the get_template_vars method, instead choosing to create a new method call get_var(). This means that if you use get_template_vars() to get something from the template data it will not be unescaped. If you then re-assign it after you manipulate it, it’ll be DOUBLE ESCAPED. This took me a while to find. Instead, use the CS-Cart provided get_var() function which will unescape your template object for you so that when you manipulate it and put it back it won’t be double escaped.

Anyway, that’s enough for this article for now, please do visit the fire-ready.com.au website, particularly if you’re in Australia and in a bushfire prone area because I believe the website is definitely worth a look.

CS-Cart, A Very Excellent E-Commerce Engine

I’ve been in the Web Development Business now for more years than I care to remember. In that time I’ve worked with plenty of E-Commerce engines, some of which were entirely bespoke before ‘off the shelf’ solutions such as osCommerce or Magento existed.

In more recent years I’ve been using osCommerce. I took a look at Magento but reviews of its fairly serious need for horsepower and to be honest I found it quite difficult to get around. Before any Magento fans flame me I’m quite prepared to admit that is probably much more down to me than it is to Magento. So I stuck with osCommerce. I’ve released a number of E-Commerce sites based on osCommerce and in general I had been fairly happy with it. But, it’s very old technology now – my first shop was released back in 2005, on osCommerce 2.2 and today the platform is still the same, 4.5 years later. And I’m sure I wasn’t on the bleeding edge back then. I don’t want to bash osCommerce here either – that’s not the purpose of this article. But it is my basis for comparison and as such I have to point out the shortfalls it has when compared to CS-Cart.

I took the plunge and started looking at CS-Cart. It was a brave (and potentially stupid) move because I chose to investigate it’s use for a large client site. Sometimes when taking on a large project it can be better the devil you know. In this case though, I was pleasantly surprised. It was better the devil I didn’t know.

CS-Cart is based on the Smarty Template Engine and I have good experience with Smarty, having developed the more recent parts of DearDiary.Net in Smarty, along with the original version of Kabarty Collector, plus the playing around with WHMCS (which also uses Smarty) and a couple of other smaller projects. CS-Cart is also structured into a Model – View – Controller paradigm, which with my commercial background with Java Server Faces, Struts and CodeIgniter appealed to me from the outset. Perhaps having experience in both these technologies helped me to understand CS-Cart quicker than others might was an advantage but I soon found I could get around the software quickly and easily.

CS-Cart is written in PHP using the Smarty Template Engine, and although it is commercial software (which I might add is very reasonably priced at $265US) it does come with full source code so you can find your way around it. Just like the WordPress world though it is highly recommended that you do not make any edits to the core code. Doing so will make your upgrade path much harder – and it’s just about never necessary (although I did have to for one of my customers as it was a bug in the core).

CS-Cart uses a skin architecture (made simple by the use of MVC) so you can make it look exactly how you want – and I’ve applied a pretty radical design to one of my new sites. I’ll update the URL later once it’s been made public. But you can hook in jQuery effects and just totally radically alter the way the site looks whilst not having to stress at all about how the engine works. The engine is totally seperate from the display – which is how a modern system should be designed.

The engine also supports the concept of Add-Ons which means you can plugin extra functionality. In the case of CS-Cart these are quite literally ‘plug ins’. You don’t have to get your editor out and search for line Y in file blah.php and modify this query to show Z. You place the addon into the addons directory – possibly add the addon skin additions to the skins directory, and then activate the addon in the Administration screen. You may need to configure the addon and that’s all done through the Admin screen.

CS-Cart, straight out of the box, comes with dozens of Payment Gateways, including Paypal, eWay, WestPac (sadly, no Commonwealth Bank of Australia or ANZ (yet)), noChex and too many more to mention. Along with those payment gateways, it also comes with a bunch of pre-installed Postage Handlers, including live postage rate calculations from Australia Post and others. It supports multiple taxation models for sales tax, so if you’re a multi-national you can apply VAT to British Addresses, GST to Australian addresses and whatever other sales taxes you might need, all at different taxation rates as defined by you.

CS-Cart is also very user friendly for the customer. It contains its own Content Management System which allows the customer to add additional pages that aren’t product specific (for example, Terms and Conditions, Returns Information, Privacy Policy). The user does not have to understand any PHP to do this, CS-Cart provides an editor built into the Administration Screens.

Positively THE most powerful part of CS-Cart is found in its ‘Blocks Management’. This allows a designer of the site and/or addons to create blocks of content which can be placed on certain (or all) pages and the intuitive interface allows the cart administrator to move these blocks all around to fit how they want it to look. No need to edit HTML – the administrator simply drags the block from (for example) the left sidebar over to the right sidebar, or even to the top. The blocks manager seems to be almost infinitely flexible and even allows certain blocks to be only shown on specific product or category pages.

The only strange part I’ve found to CS-Cart at this stage is the business model that CS-Cart employs when a specific add on is required. You can write to CS-Cart and request a particular addon be coded, which they will quote you a price for. If you agree, and pay the price, they will code the addon. All good there. But that addon could then appear in a later version of the CS-Cart product – even though you just paid for it to be developed. It’s not a huge deal, and I think it’s just something that will happen more in the bespoke software world.

All in all, I’ve been really very pleased with the easy way CS-Cart can be extended and the intuitive and very powerful customer administration interface that makes it a great system to deploy to customers and not have to continually go back and make changes for them.

Why You Shouldn’t Just Rely On Subversion For ‘Backups’

If you’re developing a software solution, whether it’s for yourself or for a larger project, there’s plenty of source control products out there from CVS, Subversion or more modern solutions like git and Mercurial that distribute the load. Regardless of whichever you might be using, if you’re just developing personal projects, you’re probably using the source control so that if you make a mistake somewhere down the track you know you can always get back to what you’re working on today by looking at an earlier revision.

There’s some flaws to this when you’re working in a less structured environment;

  1. You probably simply won’t commit your changes often enough to be able to get back to a sensible status if you mess something up.
  2. If you’re using SVN and move a tree structure in place – particularly if you overwrite an existing tree structure – you just hosed all the SVN metadata. That leads to a whole heap of trouble when you try to commit.
  3. If you’re developing using WordPress you may get part way through your development cycle when WordPress issues an update. Or you may have tweaked a WordPress plugin that gets updated. If you mistakenly click the ‘auto update’ button you just lost all your local changes. Coupled with Point #1 above, you lost your work.

Enter TIME MACHINE (if you’re on a Mac – you’re on your own if you’re using Windows ;-)). It sits in the background and backs up hourly. So at least when you inevitably do make that mistake you only have to go back an hour.

Time Machine can be a pain in the butt when it slows your machine down while it does its backup – but that inconvenience will be priceless when you realise you really goofed up and mistakenly overwrote an entire directory that you were working in…

Trust me – I did exactly that last night with WordPress MU – developing a new ‘home’ theme for MU when I updated to 2.9.1 release and that overwrote all my changes. Yeah, it’s my own fault, I should have realised an update would include the ‘home’ theme – but knowing whose fault it is doesn’t comfort you all that much! Time Machine comforted me. If you’re on a Mac and doing dev work, I really highly recommend getting an external disk and backing up hourly with Time Machine. It WILL save your bacon on more than one occasion.

MacBook Pro Performance running Parallels

Or VirtualBox, and probably VMWare too.

Its been some months now since I made the switch from PC to Mac, using OSX Snow Leopard. Initially I was really pleased with the performance of the MBP, it was considerably quicker on lesser hardware than Vista had ever been. But there was a niggling slowdown on occasions.

It’s fair to say that I am a pretty heavy power user, I run Eclipse for web development work, and Firefox with various plugins, along with the real power hungry VirtualBox (and lately Parallels) for checking websites in Internet Explorer. The MBP runs quite nicely until I fire up VirtualBox. Then it gets dragged down and just generally feels like syrup on a cold morning, which can be frustrating because if you’re running a bunch of programs and suddenly want to find o2 Mobile Phones via Google or just run an antivirus check, watching the machine tank is pretty irritating. The odd thing is, the CPU was definitely not the problem because it never ran below about 85% idle, unless I was doing something heavy in the virtual machine but then it didn’t really matter because you’d expect that. I thought that perhaps having the 5400RPM drive in the machine might have been a mistake.

It certainly seemed that it was generally disk based activity that was really grinding the machine down. Safari was an oddball in the mix. It would often SBBOD and occasionally I saw weird graphical artifacts, particularly when first opening a new tab. Checking the disk usage I could see that it was getting used quite heavily, but that was mostly because the machine had nearly 2Gigs of RAM swapped out. On a 4Gig machine that means that I’m effectively using nearly 6 Gigs of RAM, which seems unlikely. It is of course OSX not Vista, so it shouldn’t really use that much! I’ve set the virtual machine to use 1Gig of RAM so that leaves 5G for the rest. Eclipse can be a beast, but it’s not that big of a beast.

Then I went to the Energy Preferences panel of Snow Leopard and made a tweak. I changed the graphics settings from ‘Better Battery Life’ to ‘Higher Performance’, which basically boils down to switching out the on board 9400M for the more powerful 9600GT big brother.

I’d expect graphics intensive applications to respond better with the 9600GT in place – but I don’t use all that many (occasionally PhotoShop comes out to play, but not often). Eve Online of course responds significantly better on the 9600GT, I’d already tried that some months ago. But what I didn’t bank on was how much better the whole system responds when you’re running Parallels or VirtualBox. It seems that the 9600GT allows much better virtualisation for some reason.

But the whole other issue that is totally obscure, and I really don’t understand why – so if you have an idea please leave a comment below – is that now, with all the same apps open, I have 300Meg of swap used. Not the 2Gigs I previously had. Needless to say, since there’s nowhere near as much swapped out, the whole system is responding much better. By a very long way. It’s like I’ve turned the MBP into a desktop machine.

The only downer is that the battery doesn’t seem to last as long – but that’s expected too. Having said that if the machine is more useable for the time it is alive then you can probably be more productive and get just as much done ­čÖé

Telstra iPhone Tethering ‘Call Telstra on 125 111 to enable tethering’

iphoneIf you’re an iPhone user on Telstra’s NextG network you may have been disappointed when iPhone tethering suddenly stopped working back in July or sometime there about, when a new set of ‘Carrier Settings’ were downloaded from iTunes onto your iPhone. The good news is that this weekend just gone, Telstra issued a new set of Carrier Settings through iTunes which re-enables tethering – and this time properly and officially.

I installed the new Carrier Settings after reading of everyone’s success around the net. I was rapt. The Optus coverage at mother-in-laws is pants and I often need to work from there while my wife and mother-in-law do other things.

Except that it didn’t work. Every time I went into Settings -> General -> Network and tried to enable tethering I just got a popup message that said to enable tethering I must contact Telstra on 125 111 or visit http://www.telstra.com. It gives you three buttons, Call, Go to Website, or Cancel. Nothing about switching it on anyway. I spent an hour on the phone with Telstra, who eventually handed me off to Apple.

After an iPhone reset, a Network Settings Reset followed by an iPhone reset, and then a full Restore of my iPhone I was still no better off.

And then I found this thread which explained that my Telstra account probably wasn’t set up right. It was highly likely since I’d actually bought my iPhone from Optus and then transferred to Telstra after the Kinglake bushfires rendered Optus unusable for weeks. My APN was set to telstra.internet because telstra.iph didn’t work. As is indicated in the thread previously mentioned, you DO need to have the ability to use telstra.iph to use tethering.

The trouble is that most people on the Telstra helpdesk don’t know about this. So you have to ring 1800 IPHONE and ask them clearly to add the iPhone codes to your account. You’ll need to be specific and possibly need to justify why you want it. But if you’re not specific they’ll go through hours of trying to diagnose why your iPhone consistently tells you to call them on 125 111.

I hope that helps someone. Please leave a comment if it does!

Eclipse hangs on SVN commit

eclipseIf you have a big project you try to check in to a subversion repository, eclipse can get part of the way through and then just hang. The only solution is to end task (or force quit on OSX).

But there is a solution!

This one eluded me (and google) for some time, but I am pleased to say that with the help of the Eclipse mailing list I have found the answer.

Open up the Eclipse preferences, choose Team -> SVN -> Console and uncheck the box that says ‘Limit Console Output’. With this option checked it seems that once Eclipse reaches the limit of the console output, it just freezes. I’m now able to check in a project with a lot of files and it’s all working excellently.

Regular OSX SBBOD (Spinning Beachball of Death) :: FIXED

sbbod-221 Over the past few days I had begun to think that my MacBook Pro was developing a problem. Every so often – and I can’t put my finger on how long, but possibly every 10 minutes or so – no matter what application I was using I would get a Spinning Beachball of Death, or SBBOD. The image to the left is familiar to any Mac OSX user on occasions – sometimes things just do take longer than 5 seconds to achieve and thats when OSX will present you with the beachball in all its glory.

But, you shouldn’t really see it when you’re just browsing web pages. And I was. So I went on the hunt, I googled for causes of the SBBOD, and found lots of great answers, many of which I thought had fixed things and then discovered 9 minutes later that nope, no they hadn’t.

There’s a number of things that can cause a SBBOD, including 3rd party Safari plugins (and it seemed as if Safari was usually what I was running when it occurred, although Mail was exhibiting the issue too, along with other things). One site I discovered advised me to remove the file Database.sqlite3 from ~/Library/PubSub/Database. This tip did seem to improve the startup speed of Safari – though I’m not entirely sure why.

However, the actual fix turned out to be entirely off the MacBook Pro and in fact was on a different machine on the network.

I run a DHCP server (most home users probably just use the broadband router for assigning addresses) as I have a number of virtual machines, along with printers and such like that I prefer to be able to set a fixed address.

The DHCP server had not started up after a restart and as such was not issuing IP addresses. The MacBook Pro was trying to start the networking components, waiting for a response from the DHCP server and when it didn’t receive one in a timely fashion it went ahead and used the previous address that it had been assigned. That’s fair and good, it meant I could get online – part of the ‘It Just Works’ plan I suspect.

But unfortunately it seems that because the IP address hadn’t been properly assigned by the DHCP server, OSX was on occasion attempting to re-validate the settings and that was causing anything that used the network to have to wait until the DHCP request timed out.

Once I restarted the DHCP server, my OSX has been back to it’s awesome self and I’ve seen not even one SBBOD! Wahoo!

The moral of the story: Make sure your DHCP server is running, or manually configure your IP address!

Centos 5 in VirtualBox – High CPU Usage FIXED

CentOS LogoLet me give some background to the problem. You’re running CentOS 5 under VirtualBox, perhaps on OSX Leopard Server or indeed possibly another host operating system. You’ve noticed that even when the guest is utterly idle, the processor on the host is hovering at 50% or above. Or maybe only 20% but really, when the guest is idle, why is VirtualBox using ANY host processor.

I noticed that I don’t have this issue with Ubuntu (can’t remember which version) so I figured it had to be a Linux kernel issue rather than a VirtualBox issue.

After much scouring of Google, and receiving some excellent, but highly convoluted answers such as recompile the guest kernel with CONFIG_NO_HZ=y and CONFIG_HIGH_RES_TIMERS=y (neither of which the kernel with Centos 5 understands) and so I went down the path of recompiling my own CentOS kernel.

But now I have found a very simple answer. Forget about recompiling your own CentOS kernel, you don’t need to. You can simply pass a boot time parameter into the kernel using the grub menu.lst

divider=10

The problem comes because the CentOS kernel is compiled with the┬áCONFIG_HZ_1000=y and┬áCONFIG_HZ=1000 options. This (I’m told) basically means the kernel is trying to service interrupts at a rate of 1000 per second – which is fair and reasonable on normal hardware. But it makes a lot of extra work for a VM which is virtualising those interrupts. Setting the divider to 10 means you drop the amount of time spent generating interrupts and so the VM has less work to do – hence less processor use on the host.

The full line in /boot/grub/menu.lst for my running kernel now looks like this;

kernel /vmlinuz-2.6.18-164.el5 ro root=/dev/VolGroup00/LogVol00 rhgb quiet divider=10

I’ve also found since making this change that the guest seems a LOT more responsive and snappy. Odd really since the 1000Hz kernels are meant to be snappier. Oh well, Virtualization is a strange art of its own rulemaking and I’m just a user!

Hope that helps someone else.