Getting Started: Emacs & C++ (w/ cmake) (On the fly syntax highlighting)

I am a recent convert to emacs. My vast majority of development is in Java EE and I have not found an easy way to get the functionality in eclipse into emacs. So I still use eclipse for this.

However, I like to tinker with C++ and I wanted to get some of the CDT functionality into emacs. In truth, I have used very little CDT so my expectations from emacs will be set differently. Considering that emacs has been used for C/C++ development for decades, I am hopeful that it will be more feature-rich than eclipse or any of the other IDE’s like Anjuta, Code::Blocks etc (both I have tried to use).

First things first. In the world of Java, I am a massive fan of maven which makes build management so easy and simple. Having used it now for years, it is easy to forget how much of a learning curve it had to get started.

Autotools are a massive pain to use and has a very steep learning curve. I have used it in the past to set up build environments and it works fine. pkg-config is pretty awesome and in a lot of ways, maven does pale in comparison. i.e. instead of having maven pull in dependencies, you just use your systems package manager like apt-get or yum and it installs the libraries for you.

Continue reading

Gnome Desktop Inaccessible After Screensaver Kicks in [1103]

Yesterday, I mentioned a problem that I’ve been having with GNOME 3 on Ubuntu 11.10.

Essentially what happens is that when I leave my desktop for a while, under specific circumstances, and often, on returning and moving the mouse or using the keyboard, the pointer would come back  on screen. However, this only works on one of my two screens.

The unlock dialog does not show up and it seems that there is no way to get back in.

In the past, I would log into the terminal (Ctrl-Alt-F1 or any function key through to F5 or so) and

$ kill -9 -1

This would of course kill all processes owned by me and is therefore unpleasant at best and have you losing a bunch of work at worst.

After a brainwave yesterday (as detailed in the aforementioned post), I decided to check the status of the screensaver and killed just those processes. Happily, this gives me my desktop back. However, my gnome-shell had given up which I had to restart

$ gnome-shell --replace

Unfortunately, I did not get the windows into the original workspaces since everything just got dumped into the one workspace but it is better than having to kill everything off.

EDIT: I just realised that the screen saver of course no longer kicks in and I had to restart it

$ gnome-screensaver --no-daemon

First Love

The first phone I ever got was a Motorola Startac 70. This was back in 98 or so, a flip phone and I still remember it ever so clearly!

I’m pretty sure my next phone was an A1000, a pretty awesome phone. This was around the time that Motorola started releasing the razr which I was far from impressed with. I jumped ship to Sony Erricson and I went through a couple of those before heading over to the wonderful world of HTC. I wanted a smart phone to help with work and so on and I got the HTC HD (If I recall) which was a Windows phone.

While this make me uncomfortable, I was still more comfortable with this than a blackberry. I couldn’t get an iPhone for some reason that I cannot remember.

The phone was pretty laggy and I got pretty sick of it pretty quick. I then got myself my first android phone – an HTC Hero… Most people didn’t like the curvy bit at the bottom but I didn’t care. I was happy to be on the cutting edge. It was also a bit slow and laggy. but it was android and I loved it. It started a brand new love affair… Let me tell you more…

Continue reading

Perfect Linux

According to Brian Lunduke, Ubuntu 9.10 is almost perfect, and I concur.

Being a bit of a purist, I ran Debian for very many years but found their stable releases lagging behind far too much. This was largely due to their perfectly understandable view of it being ready only when it is right.

For a while, I ran their unstable distribution called Sid, based on the disturbed, hyperactive 10 year old boy in the film Toy Story. The idea being that Sid breaks things, and it certainly did. While it taught me a heck of a lot about linux (and the terminal), my computer was broken on a very regular basis.

Continue reading

Database Systems Compared

My first experiences of a computer started with DBase III+ which is now dBASE, then went on to Foxpro, now Microsoft Visual Foxpro. I have since used Filemaker Pro, Microsoft Access, Microsoft SQL Server, MySQL, PostgreSQL, SQLite and HSQLDB. I have not yet used IBM DB2, Oracle. Wikipedia has a list of database systems.

Having worked with this range of database systems and having done copious amounts of research into DB2, Oracle and other DB systems I have not mentioned, I like answering the age old questions. Which is the best database system?

Ah! if only it was that simple. There is no database system that is appropriate for any given requirement. But then, if you have been in the technology sector long enough, you would already know that. It’s all about using the right tool for the job.

I separate these systems into two broad categories and Oracle. There are the Desktop based database systems:

  • DBase
  • Foxpro
  • SQLite
  • Filemaker Pro
  • Microsoft Access
  • MySQL

DBase, FoxPro, Filemaker Pro and Microsoft Access are essentially a GUI frontend that has a database backing.

Access is the best choice for this purpose under the majority of circumstances. Filemaker Pro is relevant in some. The usual reason to use DBase or FoxPro is simply that the developer is used to it. This is not a good enough reason.

I have used DBase III+ for developing an office management suite back in 1994. I have since used Filemaker Pro to develop a simple contact management database in 1998, Microsoft Access to develop a patient management system for a clinic.

SQLite, HSQLDB and MySQL are database engines that are to be utilised by popping a frontend on top; sometimes the frontend is Microsoft Access. Microsoft Access can also be used for its database engine.

Access is usually the worst choice for this except as a stopgap. There are exceptions to this. One is for a web frontend if the site is not too busy and its running on a microsoft platform. You don’t have to go to the hassle of installing anything on the server. The drivers will take care of it all.

HSQLDB becomes an obvious choice for a light java based application and SQLite for any other lightweight applications.

MySQL is substantially more powerful and scales a lot better. I include it in this section because it is a server grade database system that can also work well in a desktop environment.

I have used Access for several web based systems and I have used HSQLDB for unit testing hibernate and for a quick and dirty MP3 library that linked into musicBrainz. I have used SQLite in passing to be utilised by open source products.

I have used MySQL with an Access frontend as a management suite for a website as well.

And we have the server based database systems:

  • MySQL
  • Microsoft SQL Server
  • IBM DB2
  • PostgreSQL

MySQL was used as the backed database system for the website. This was the perfect choice since the most important requirement was speed. Particuarly with the Query Cache and Master Slave replication, MySQL was the best choice.

SQL Server was used as the backend system for an online course for the Scottish Enterprise around 1999/2000. While MySQL would have been a good choice this, it was not of production quality at the time.

We have also used Ms SQL Server for an insurance company since all the infrastructure was based on Windows and PostgreSQL did not have a viable Windows version at the time.

We use PostgreSQL for megabus. While speed is absolutely critical, it is a ticketing system which means that transactionality is absolutely critical.

While MySQL now has transactionality with innodb, it is still nowhere near as good as the transactionality provided by PostgreSQL through MVCC (Multi-version Concurrency Control). We could have used Ms SQL Server but the cost savings are dramatic.

To summarise, each system has a specific use, specific strengths and weaknesses and which should be used is highly dependent on what it is to be used for. I am hopeful that the summary of what we have used each of these systems for us useful in determining which one is best placed to solve any specific problem 😀

We have not yet used Oracle and it was a strong contender for megabus but the serious heavyweight functionality provided by Oracle comes at a price and it is not yet a cost effective option.


Being an avid Linux user for users, I am seriously spoilt in terms of being able to customise everything / anything to be more the way I want it to be…

Two main reasons for this is that most software that comes on Linux is highly customisable to start off with. The second reason is that if you don’t like something, you can change it.

There is also the nice thing that most things that you think would be cool or useful in software is already available in some form since someone else thought so too, but before you did and has had the chance to spend some time building it.

I love this so much so that I have often put together a quick linux box for doing things that one could easily replace with an embedded device like a router. I have swayed between the two options based on how much I want simplicity vs flexibility.

One of my favourite responses to someone telling me that we need something that we don’t have is – “we’ll build one”… The software customisation / writing has turned into a metaphor that I apply across more and more things. You need a new table with custom bits – let’s build it. You need a classic car with all the modern gizmos – you know what – let’s just build it.

This has its pro’s and cons. For one, it feels like anything is possible. It also becomes very frustrating to work with limited, limiting, or closed source software (esp when you just want to fix a quick bug that really irks you). It also eats up all your time as you try and do all the things you want… just because you can…

Striking a balance is hard especially when a client asks if it is possible to do something very specific. The answer is of course yes and there is a question that goes with that response. At what value does it become cost effective and provide a good Return On Investment(ROI)


We have never been shy about voicing our opinions or being controversial. While discussing some PR requirements recently with a potential agency, the question was asked about whether we would be willing to be controversial.

We are not necessarily controversial, just that we hold a view that is usually a little different from the mainstream views. It could be said that we bring the alternative to the mainstream.

But then, so did some world governments, bringing open source software into their work places, successfully or unsuccessfully in the last few years instead of Microsoft.

Someone recently suggested that we were anti-microsoft. I don’t think that is case. Microsoft has its place in a technology infrastructure. It is simply that its position is usually overrated or misplaced. As far as desktops for technically shy users are concerned, there is really no alternative but Microsoft Windows. I can hear the Mac users scream that Macs are also an alternative. Theoretically, yes but the fact is that they are too expensive for someone to dabble with it. This is precisely the reason that Microsoft Windows dominates the desktop market.

We support and use Linux. In fact, the majority of the desktops in the office run Linux (Ubuntu as it happens) but people who have a non-technical role use Windows. They could use Linux but Windows is better suited to their role.

This is not necessarily a cost-saving decision. Sure, we have saved thousands of pounds by sticking to Linux instead of using Windows but that is a co-incidence more than anything. In some ways, it is a testament to the skillset of the people who work at Kraya that they are comfortable with Linux. The mindset of Linux is in alignment with the mindset of a developer.

I used to develop in Windows and I often found myself fighting with Windows, whereas with Linux, it just fits. There are several reasons for this. One being that Linux forces you to understand what you (trying to ) do to a bit more depth instead of pretending its magically taken care of.

I am not, for one moment implying that developers who use or develop on the Windows platform is inferior or not as skilled. Simply that my experience was that the Windows platform made it easier to do things badly and more difficult to do things well.

Microsoft has done wonders in bringing technology to the masses and making it more accessible. However, there is still a massive barrier, even for people specifically in the technology sector to appreciate and use technologies which require a bit more experience or knowledge to use appropriately.

There are a couple of really good examples. PostgreSQL is a powerful outstanding database server that can easily compete with Microsoft SQL Server and Oracle. However, very few people know about it and even fewer use it.

MySQL on the other hand is also an open source database server but is much more widely used and accepted.

It surprises me when MySQL is used when PostgreSQL is, from a technical perspective better suited. MySQL is faster than PostgreSQL at the cost of poor transaction managment (at best). For any system where data integrity is even remotely important, PostgreSQL is a better choice. However, since there are better GUI tools for MySQL and since it is easier to get the hang of, it gets chosen.

This give technology and people in that sector a bad name. Every tool or software has its place, and should be used in an environment where its strengths are displayed, not its weaknesses. We have instances where we use multiple database servers within one project. PostgreSQL for all the data integrity sensitive areas and MySQL for the speed sensitive areas. Sometimes you want integrity and speed. In these cases, you have to make a choice based on which is more important or layer the databases to use the strengths of both.

Metaphorically speaking, MySQL is a hammer, and PostgreSQL is a sledgehammer. Would you use a sledgehammer to crack a nut, or a hammer to crack a slab of concrete?

Before someone jumps down my throat, I am not suggesting that PostgreSQL is better than MySQL or vice versa – just that they both have different goals, different strengths and weaknesses. They have spent a lot of effort to converge and strengthen their weaknesses but not matter the amount of convergence, their core goals are still different that they will never truly be able to remove their weaknesses without giving up some of their strengths as well. One tool cannot be both a hammer and a sledgehammer…