This is part two in a list of articles in which I'm trying to detail the OWASP Top 10 vulnerabilities. (see intro)

What is Cross Site Scripting? Cross Site Scripting or XSS is an attack on a website in which an attacker sends text based attack scripts which are executed within the browser. Apparently about 80% of all security vulnerabilities were as of the result of XSS. link This means that they are a special form of a code injection attack.



Last month I got an horrendous bill for my Internet usage even though I use it very sparingly when connected via mobile. So, I decided that it was time to get a decent connection while on the road. Looking around, there's a fantastic special from Cell C in South Africa. It works out to be 5c/ MB. which is much cheaper than any of the current offerings. There are currently 2 options - the 7.2 and Mbps and 21.6 Mbps. I went for the 21 Mbps option with 5 Gigs/month at R3000 once off, which works out to be R250/ month.

I was a little unsure of how easy it would be to get working on my Kubuntu, but it turned out to be a breaze (as usual with most things Linux/ Ubuntu/ Kubuntu). I just plugged it in, created a new "Mobile Broadband" connection, entered "*99#" in the "Number" field and "internet" into the "APN" field, selected "Connect Automatically" and I was done. No need to install any Cell C software to use it... Just one more reason to love Linux!

For other non Cell C readers of this post - I found out the settings by running the Cell C software which comes on the modem in Crossover and could see the settings there. So hopefully, you can determine any required settings for other providers.

Edit: I've reinstalled Ubuntu 10.10 and when setting up the modem, was asked for a password. Took me a little while to work it out - turned out to be 0000 for what it's worth....

I've had quite a few questions as to the speed of the Cell C network. So here's a screen shot of a speed test. I've had better connections (up to 14 Mbs download), but this seems to be a good "normal" connection. The connection speed is very dependent on the location though, so check out coverage in your area first.



Once again for the thousandth time I've heard someone say "Linux is hard... bash, cron, scripts, emacs, python. bla...bla...bla ...". No matter how much I try, I can't seem to get people to believe me that Ubuntu Linux is easier to use than other OS's. In the recent Ubuntu releases, they've worked perfectly on my hardware - takes 10 minutes in install now and drivers are a non-issue. You don't have to install anything - it just works. 10 minutes and you're done.

I took the plunge... After working solely on Ubuntu for over a year, I decided to install the latest Kubuntu on my main laptop. I've never really worked with KDE much apart from trying it out briefly here and there but never ended up sticking with it as it was always installed on a secondary machine. So, why did I decide to swap? I've have had a few difficulties with KDE before and it seemed a little buggy, but I've become pretty comfortable with Linux, so I was confident that I can sort out anything thrown at me. Maybe I was just too comfortable with Gnome to bother swapping and readjusting to a new environment but I've always been envious of the visual look of KDE... It's probably a bit unfair to call KDE "buggy" - I've always run it in a VM or on an old laptop which hardly had enough power, so this time around, I'm doing it properly!

The one complaint that I've often heard about moving to another OS from Windows, is "If my games worked, I may change to xyz".

If games are one of the big barriers to change, then I wonder what the effect of many gamers moving to consoles will have on the PC OS market share. And with the netbooks/ iPads and Google Chrome OS, which can't really run
the hardcore games, maybe even more users will be moving to consoles.

This should surely have some sort of negative effect on the PC OS's that are "locking" users in based on games availability.


Important information on ASP.Net Forms Authentication:
http://visualstudiomagazine.com/articles/2010/09/14/aspnet-security-hack.aspx

This basically allows a user to determine the Machine Key used to encrypt the cookie on any site. This is apparently 100% reliable and can be used for any site within 30 - 50 minutes. This would allow a user to create spoofed authentication cookies to assign administrator privileges.

The solution? Use one of the other Encryption mechanisms eg. Triple DES.



Just an interesting observation:

Currently there are "normal" phones that can perform about 8 MFLOPS (Million Floating Point Operations per Second)
http://briefmobile.com/tag/cpu

To put this into perspective, Up till the time of the first moon landing in 1969, the fastest supercomputer in the world could run at 3 MFLOPS. http://en.wikipedia.org/wiki/Supercomputer

So, you probably have more power in your pocket than was used in launching Apollo 11...

The end is nigh! Just kidding... Windows 7 is to be released shortly and apparently it'll be the best release ever - only time will tell whether this release will "save" Windows mobile or whether Linux based phones take over the majority of the market as predicted. Either way - it'll probably be a bit of a shake-up in the mobile market.

"Today is the day that the Windows Phone team has been driving towards,
and we’re very excited to say that we’ve reached the biggest milestone
for our internal team – the release to manufacturing (RTM) of Windows
Phone 7!  While the final integration of Windows Phone 7 with our
partners’ hardware, software, and networks is underway, the work of our
internal engineering team is largely complete."

link to source

Awesome - Hopefully it'll be launched in other part of the world outside the United States.





Google has recently added a function to Gmail to allow a user to make calls to "normal" telephones right from Gmail. All you have to do is click the phone button in the chat window, select your country, enter the telephone number and click "Call". This allows you to call internationally at very reduced rates and apparently it's free to the United States. It seems that each user has a token $0.10 credit by default to give it a try. so... why not? I've tried to call my cellphone and... well, it works!

YAY! Eventually Google has added video call support for Linux. This allows a user with a web cam to initiate a video call with another user from within their browser. This feature has been around for a while in the Windows though, but can finally be installed from within the browser by clicking on a button in the chat window. So far, apparently, only Ubuntu/Debian based systems are supported with RPM's to follow.

Cloud computing in the extreme - Is this really the "future"? I'm doubting it a bit in spite of this being the big buzz word in IT at the moment. I've come accross eyeOS (http://eyeos.org/) and the excellent OOS (http://oos.cc), which is a complete "OS" running in the could. In the eyeOS case,  you can run it in your cloud. WHAT? Basically, it's a complete operating system which runs on a server somewhere on the Internet, or it can be deployed on servers within a company's network and is accessed via a standard web browser. What are the advantages of this? There are numerous theoretical advantages from security (fewer viruses and better document security hopefully), low hardware requirements for end users and associated cost benefits, instant upgrades to universal accessiblity from numerous devices. So for all the advantages, it seems an obvious direction.

Well, back in the day, this was largely what the IT world looked like - There were servers and dumb terminals which had a network connection and little else. Everything was executed, stored and processed on the server. So what happened? PC became more powerful and useful as standalone devices and so we ended up with disconnected home computers, being able to play video games movies etc.  So, it seems as though we're moving back to the "old way"... OK, this time round is a little different as many devices have a 24/7 internet connection and therefore network connectivity is less of an issue, but there are still many applications that don't lend themselves to fully online operating system such as 3D graphical games. Ok, once again, there are exceptions to this rule as I've seen Quake running over the net. But just because it can be done, it doesn't mean that it's ideal. There are plenty of other classes of software that doesn't lend itself to this either.

There wouldn't be the huge amounts of money pumped into this if it wasn't a possibility... Well, I believe it's going to be a mixed world. There will be numerous online apps which we will (and already do) use, but there will always be a need for the "normal" desktop computer. So... will the online operating system become the defacto standard...? I doubt it.



Hmmmm.... Gave Gnome Shell a try recently to try get a peak at what the new upcoming Gnome 3 may look like.
Apparently Gnome shell won't be compatible with Compiz. I.E. you can't run both at the same time - So it's a question of which one? I've used it for a while now and not sure i like it... It's better than the "standard" interface (minus compiz), but all in all, I'd rather use Compiz. Not considering any technical reasons such as speed, memory use etc. the reason is because a few of my favourite features wont be available, "Wobbly windows", Desktop Cube, Expo, Ring Switcher etc. So... If the new Ubuntu/ Gnome does ship with it, for now I'd rather change back to Compiz. Fortunately it's should be easy enough. though. And once again... the beauty of Linux - use whatever you like.


According to ABI research, Linux will be the dominating operating system on Mobile devices by 2015:

"The number of recent Linux-oriented initiatives in the mobile industry attests to the fact that Linux will be a key technology in the next-generation of netbooks, media tablets, and mobile Internet devices (MIDs). Led by both Google’s Chrome OS and Google’s Android, the growth of Linux-enabled mobile devices will outstrip the growth of total mobile devices, and will comprise 62% of the operating systems shipping in all mobile devices by 2015." http://www.abiresearch.com/research/1005531-Linux+for+Mobile+Devices

This is a very interesting forecast which has spin-off effects for the rest of the Linux world. If a  user is running "Linux" on their cellphone, there's firstly a lot more awareness of Linux based desktop operating systems and secondly, a greater chance that they'd be prepared to try a Linux flavour on their desktop. Finally, if Linux desktop usage achieves the required critical mass, there will be a much larger availibility of applications for Linux (both open source as well as proprietary). With the widespread adoption of the Linux kernel on various devices, contributions to the kernel are coming from many different sources. It's no longer only work done by a few "hackers" sitting at home - it's now really big corporates. With many mobile operating systems including Google Android running on a slight modification of the standard Linux kernels, I'm sure there will upstream contributions, ensuring an even better OS for mobile, desktop and server Linux OS's. With so many role players (and big ones at that), I can't fail to see how this wont end up being the dominant operating system over all spheres.

The future I see for the IT world of the future is one of a Linux kernel for most devices and a mix of open source and proprietary software running on top. Standards are becoming more and more important in every area which must be "owned" by everyone. Until now many standards have been defined in terms of protocols, but I see the actual operating system kernel as a potential "standard". The writing is pretty much on the wall for the Microsoft Mobile OS, unless Windows Phone 7 can change this. In the same way that Mac's were one of the leading players, their market share has dropped off significantly over the past 20 years to somewhere between 5% and 6%. The long time use of the PowerPC processor has been eventually dropped for the more widely used Intel based processors. One advantage for Microsoft at this point, is the interoperability of their software and devices which they have leveraged very effectively in the past (see the history of Word/Office, Internet Explorer etc.). Users are probably less likely to want to change devices unless it is supported by their laptop, XBox, tablet PC and coffee machine. Unless Windows Phone 7 is out of this world, I feel that it will just be a matter of time before Microsoft will have to concede the mobile market, however I doubt that it would be a sudden switch over - change takes time.

As a wild question, would Microsoft ever move over to Linux kernel if they realised that they were in a loosing battle???

Ok, so I said that I was going to give the latest Ubuntu a go and that I did a while ago. Coming from a MS Windows point of view, I've always been accustomed to the next version being a big "upgrade" on the previous version. (Ok, this is a very controversial view seeing that it's not always true.) But, what I mean is that there were always pretty big changes. When it comes to Ubuntu, 6 months doesn't give a huge amount of time to introduce changes. So, it's a double edged sword - on the one hand it's the latest and greatest, but on the other, it's kinda more of the same. But in all fairness, I think their release cycle strategy gives the best of both worlds - those that want the absolute latest can have it and those that don't want to be upgrading every 6 months can stick to the LTS (Long Term Support) version. So, Ubuntu 10.04 Lucid Lynx is the LTS version and therefore is quite an important milestone as Canonical will be supporting it for the next 3 years on the desktop and 5 years on the server. But, does it live up the the hype?

Firstly, I'll concerntrate on the changes between 9.10 and then later for those upgrading from the previous LTS.

Pressing the power button had me booting into Ubuntu on an "average" machine in a timed 16 seconds. (with the obligatory disclaimer, "actual results may vary.") So far so good, very impressive... Once booted, There's no longer an Orange/brown theme - it's now a purple kinda hue. Not my favourite as mentioned before, but not a big deal. Three clicks and it's gone.

At some point there had been rumors of Gnome 3 possibly being in 10.04. Not so - It's currently still using the Gnome 2.30 interface. In other words, it doesn't look massively different from before. It's just slightly more refined. There are two more themes introduced called Ambiance and Radiance. They're OK, but I normally end up setting my own anyway. Interestingly, the close/ minimise/ maximise buttons have moved to the left hand side of the title bar à la Mac style. If that doesn't suite you (and personally, I'm used to it on the right) it can be changed however.

One of the bigger changes in terms of applications/functions is the social networking side. The "Me Menu" integrates with Google Talk, AIM, Yahoo Messenger and ICQ, and allows users to broadcast to services like Facebook and Twitter via the built-in Empathy chat client and Gwibber microblogging client. A one stop shop for all social accounts could come in handy for many users and it's probably a big plus. There are also a few changes to applications - some added and Gimp removed. Interesting...

On the technical side, there have been improvements to hardware support, kernel etc, but overall it's not a massive change from 9.10. But as mentioned before, this being an LTS version, canonical probably doesn't want to introduce massive changes as they'd have to support it for a while.

So... The million $$$ question is... is it worth changing to the new 10.04? About two month's after giving it a go on another machine, I still haven't swapped from 9.10 to 10.04 on my primary work machine as yet. I found one or two small problems with it and the additional social functionality wasn't quite enough to warrant an upgrade to the new version. That said however, if you're new to Ubuntu/ Linux, it's definitely a brilliant operating system.

I heard about the Cooliris plugin for Firefox browser which allows you to "fly" through either online or local photos in 3D. It's easiest said in a video, so check it out below.
 

On my first attemp to install it, it looked like it wasn't supported on Linux. After a little looking around, I realised that it was just the latest version which wasn't supported, which is what the Firefox "Add-ons" wizard finds. (Windows works via the normal plugin download/install method)

If you're running Linux (or Mac), use the following link to install the last supported version of the plugin for your OS:

https://addons.mozilla.org/en-US/firefox/addons/versions/5579


It worked pretty well as an image viewer for my local images, except that I had to start my browser, click on the Cooliris button and then change to a full screen view - about 2 clicks more that I should have to. Ok... I know, I'm being a bit difficult here, but I was wondering if I could use this plugin without it being obvious that it's running in a browser.

So... The following "hack" should be possible on any platform which will turn your plugin into an impressive image viewer. Firstly create new Firefox profile for this plugin to use.

On Windows, create a shortcut to Firefox (or execute in command prompt) and add the -P switch. IE. Execute "~/firefox installation path/ firefox.exe -P"
On Linux, simply type "firefox -P" in a Terminal.

This will launch a profile selection dialogue box. Create a new profile and name it something E.g. "Cooliris". Launch Firefox with the new profile created. You'll see that none of your bookmarks, installed plugins etc. are listed and that's because it's as if it's a "fresh" install and totally separate from your default profile.

Using the Tools>>Add Ons wizard download and install the "Full Screen 3.4" plugin which will allow us to start up in full screen mode, without any tool bars or tabs showing. Once that is finished install the Cooliris plugin for your respective machine as described above. You should be able to click on the Icon to the right of the Google search bar to give it a go. Now, Set the "Full Screen 3.4" preferences to open full screen and hide tabs by clicking on Tools>>Add Ons, selecting, "Extensions" tab, "Full Screen 3.4" and then "Preferences". Click on the Cooliris button to launch it and set the URL to your homepage in Firefox preferences/properties.      

Now that we've created a new profile specifically for using Cooliris, now you have to create a shortcut to use that specific profile. 

In Linux, create a shortcut to execute "firefox -P Cooliris". (Cooliris being the name of your profile created.)
In windows, create a shortcut to "~/firefox installation path/ firefox.exe -P Cooliris".

Clicking on this link should directly open the plugin in full screen mode, while using your standard Firefox shortcut will work as normal. 

As a sidenote, unfortunately, there is no exit button, so you either have to press "F11" and then click on exit or "Alt+F4", but it's not really a big deal.
Note, it seems as though you can't run two different instances of Firefox at the same time with different profiles. That is, you'll have to close one and open the other view.


Well... It's almost here - Ubuntu 10.04 aka Lucid Lynx. Tomorrow is the final launch and at a quick glance, it seems that they've changed more than I thought they would. Firstly, there's no more brown theme... it's now purple by default... Hmmmmm... not a fan of purple but we'll see what the community says.

But, forget the theme - that can easily be changed. By far the most important things happen under the skin. There's some interesting new apps and background improvements such as faster boot times, which is already very impressive and improved support for video drivers. A very interesting development is the inclusion of an online music store which integrates with the free 2Gb Ubuntu One online storage which all Ubuntu users already have. Then there is the online social networking integration into the OS which sounds very interesting. E.g. Twitter, identi.ca, Facebook, and others via the new "MeMenu".

I haven't installed it as yet on a machine as yet, but can't wait to get hold of it and try it out. This is one of my biggest problems with Ubuntu - As soon as a new release comes out, I have to get it immediately! I'll report back sometime soon.

Found a very cool Windows 8 mock-up done in Flash called the "Copenhagen Concept". Hopefully MS can incorporate some of these ideas into the next Windows 8.




I was discussing, OK, maybe arguing, with my Windows/MS centric colleague the merits of Ubuntu v.s. Windows the other day. I know... it's an age old debate, but fun nonetheless. He made the statement that Windows is easy to use and that's what users want, they don't want to struggle with Linux. And I don't disagree with him, at least on the point that an OS must be easy to use, but where I don't, is that Ubuntu isn't user friendly. (I won't comment on other distros as they admittedly can be very difficult.) The one point that I will generally concede is that the standard look and feel of Windows beats Ubuntu hands down. OK, maybe this is an unfair comparison as Ubuntu is intended to run on a very wide spectrum of hardware and therefore they deliberately excluded the eye candy. But, it's relatively easy to transform Ubuntu to pretty much anything you want. Ubuntu is pretty easy to use, but because it looks different from Windows, this can lead to resistance to change.

This got me thinking a little... Well, what if the system looked and for the most part, functioned exactly the same as some given version of windows? This would negate the argument of which OS looked better as they would both be virtually exactly the same and to some degree which is "easier" to use. The look of the OS to some people is important. Admittedly, I do care that it looks "right" even though this isn't the only reason for my use of Ubuntu. Up to now, I'd been pretty much of the "Linux isn't Windows and therefore shouldn't look like it" opinion, but I started looking at how to transform my OS into a Windows clone, just to see how close I could get it. With a quick search, I found a set of scripts that made Ubuntu look virtually exactly the same. I even ran a "test" against some chosen subjects, showing them my new "Windows 7"... As they all know me as being a total Linux convert, they looked a little suspiciously at my screen and took a few moments to realise that it wasn't Windows 7. The give-away was generally the application names in the menu. But, nonetheless it was kinda hard to tell. Ok, I admit there are still differences that a user would have to get used to, but nothing rocket science.

So, if my Ubuntu looks virtually exactly the same as Windows 7, is Windows "easier" to use?


I'm finally beginning to describe myself as being OS agnostic. Some of my colleagues may scoff at that listening to the way I've gone on about Windows vs. Linux, but I really don't "hate" Windows or Microsoft. I've used their products for many years and admit that they have some without an equally good (or better) alternative. I just choose to use Ubuntu instead in most instances.

Ok, so now that that has been established, I believe that the world is going to be moving in the "OS agnostic" direction over the next few years. What I find it interesting is the need for companies to reposition themselves over the next few years in order to remain current. One of the "hallmarks" of the 70's computing era was that most computers were "dumb terminals"; all the processing happened server-side. And today, we are slowly moving back to that in certain instances. For many people, much of their computer-based work happens through the browser and they don't really need that many client-side applications. Even the office suite which has been the staple of most computer needs over the past two decades has started moving online. There are a number of options available including Feng Office, Google docs and even Microsoft is half way there with Office-live. With regards to Microsoft, They've got a distinct advantage in that they are so dominant in the "Office market" that all other "Office" applications have to pretty much conform to their standards or they wouldn't easily be even considered. And that includes me! I hate receiving an emailed document from someone (or sending one), only to find out that the formatting looks weird or has some compatibility issues. Therefore, I've ended up installing Microsoft Office on my Ubuntu. OK, I digress... For many people this is the killer, but as standards are being defined for most areas of I.T., including the open document standard and Office Open XML standard, it will matter less and less in terms of what you use to get the job done.

The adoption of cloud computing/ "Software as a Service"/web applications is going to reduce the importance of which OS you use over the next few years. So where is MS going? They're going to have to focus their attention on applications instead. I don't think that they can really avoid reduced importance in terms of OS choice if most apps are online. They're going to have to come up with some pretty inventive strategies in order to keep their users "locked" to Windows.




OK... Great. You I've watched a million YouTube videos on how great Ubuntu (or rather Gnome) can look with a million funky effects. But I was always left wondering how they did it. Sometimes you'd read through the comment section on the site and somebody would mention what was used. So, this time around I'm going to explain in as much detail as I can from a new users perspective on how to get all those funky effects. I know not everyone is going to like my theme, background etc, but once you understand how to do it, you can apply the concepts to your own instalation.


Default Ubuntu install


Let's get started. Firstly, I've installed Ubuntu 9.10 Karmick Koala but these instructions should generally work for other versions of Ubuntu and probably other Debian or Ubuntu based distributions. I'm running a Dell Latitude E6500 Laptop with 4 Gigs of RAM and a 2.4Ghz Core 2 Duo CPU. I then checked that my wireless Internet connection was working as well as ensuring that the Graphics card was ok. I didn't install any additional Graphics drivers for this machine - All I did to check that things were kinda working was to Right click on the desktop >>"Change Desktop Background">> Visual Effects Tab and enabled the "Extra" radio button. This Enables some 3D graphical effects, but I think that more importantly, checks to see that the graphics drivers are working. If you get an error, while enabling anything but "None", then you may need to install your graphics drivers first. Firstly, try click on Start >> System >> Administration >> Hardware Drivers. Assuming that you've got a working Internet connection, it will search for proprietary hardware drivers and hopefully find some that will work for you. Failing that, you'll have to Google for an answer to installing your graphics drivers. Without these you won't be able to enable the graphical effects that I'm showing here.

Compiz Fusion:

Ok, now that we're sure that your graphics card should work, the next step is to get "Compiz Fusion" working. Well, my first question when I heard about this "Compiz" thing, was what the @#$ is that? Well... hmmm.... Google it and you'll probably get an answer like "Compiz is a compositing window manager for the X Window System". OK, so that didn't help much to me trying to set up Linux for the first time - It basically replaces the basic window manager which renders the windows on the screen. As long as you're using a relatively recent version of Ubuntu, Compiz should already be installed by default. But just as a check you can click on Start >> Add/Remove Software or Start >> Ubuntu Software Center (depending on your version of Ubuntu).

In order to really get much use out of Compiz, you have to install the Settings Manager component. Once again, click Start << "Add/Remove Software" or "Ubuntu Software center". In the search bar, type compizconfig-settings-manager or ccsm for short and install the tool. Once it has been installed, you should be able to launch it by clicking on Start >> System >> Preferences >> CompizConfig Settings Manager. This is where the fun really starts!

I'll leave you to explore all the settings for yourself as it really comes down to personal preference, but the following plugins are those that I've enabled:

Desktop Cube - This is an absolute must :-) It allows the extension of your desktop onto the four (or more) faces of a cube. Explore the settings which allow you to set the transparency of the cube while rotating (on the "Transparency" tab) and setting a background image while rotating (under the "Skydome" section on "Appearance" tab).
Rotate Cube - In order to see the effects set above, ensure that the "Rotate Cube" plugin is enabled. Now, you can test that everything is working 100% - Assuming that you haven't changed any of the keyboard shortcuts, you can hold your middle mouse button down on the desktop (not on an open window) and move the mouse sideways which should start rotating the desktop. Alternatively, you can press , and or to rotate the cube.

Note: I've enabled the "Cube Reflection and Deformation" plugin as well in order to achieve the reflection below the cube. Just ensure that you switch "Deformation" to "none", otherwise your desktop will probably look like a cylinder.

"Expo" plugin - This unfolds your cubed desktop and allows you to drag windows across all the faces. The standard effect I think is a straight horizontal alignment of the workspaces as apposed to the curved ones that I have (You'll see what I mean once you do it). In order to get it curved, you can set the "Deformation" on the "Appearance" tab to "Curve". On the same tab, you can set the reflection as well which also looks great. Once all this is enabled, press "Super + e " to activate the view below. (Hu... What's "Super"? Well... Linux talk for the "Windows button".)


Fading Windows plugin: Fading windows in and out when maximizing and minimizing - Pretty self explanatory.
Window Decoration: Well... mine is enabled, but I've changed my window decorations to be managed by "Emerald". Google it for more info on what is is, if you're interested.
Wobbly
Windows: These are pretty interesting effects you'll see when moving your windows around.
Window Previews: These add previews when hovering over the application listed on the taskbar, similar to Windows 7.
Application Switcher: This allows you between different windows on the current workspace with previews of the windows.
Group and Tab Windows: This is an interesting one that allows you to take two windows and kinda glue them together as if they were on either sides of a piece of paper and flip them over. This took me a little while to figure out though, as you've got to first group two (or more) windows, tab them and then you can flip them. Play around and have a look at the default key bindings.
Ring Switcher: This is a nice alternative to the function on the "Application Switcher" plugin.
Shift Switcher: This is another alternative effect similar to the function, which I demonstrated in the above video.

Ok, that's pretty much a rundown of most of the plugins that I've enabled for Compiz, but it really takes some exploring to get it working the way you want. Just a note that it is possible to install additional plugins from the Compiz site, but I'm not going to cover any of that here.

Cairo Dock:


If you've ever seen a Mac and thought that thing at the bottom of the screen that they use to launch applications was pretty cool, well... you can have your own for Linux/ Ubuntu as well. It's pretty simple to install - click on start << Add/Remove Software or Ubuntu Software Center. Then type in "Cairo" in the search box and install Cairo Dock. Done! Now... like everything else, the next step is to customize it. Custom themes can be downloaded from the Internet by Googling for Cairo Dock themes. There are tons of themes on http://gnome-look.org/. For a more in-depth tutorial on installing and configuring Cairo dock see http://linuxbsdos.com/2009/11/12/sex-up-ubuntu-9-10-desktop-with-cairo-dock/

Backgounds, GTK themes, icons and cursors:

Ok, this is probably one of the first things that most people do and really easy, but for completeness, I'll add it. You can either double click on any image and once opened in "Eye of GNOME" (The image viewing program) you can click on Image << Set as Background Image. Done~! Another way to to set it by right clicking on the desktop and then Change Desktop Background. Images can be dragged onto the application to add them. GTK 2.0 themes, icons and cursors can also be downloaded from gnomelook.org and added in the same way. This will probably the staple of your customization tasks so get used to it.

Finally, different fonts can be installed by copying true type font files to /usr/share/fonts/truetype/. Once you've copied them there, they should be available to select from the
Font selection in Appearance Settings. As a side note, I think that Windows uses Segoe UI font, which can be downloaded somewhere - just check the legality, as it may belong to Microsoft and therefore be illegal.

There are a number of other software tools that I've used in the screencast that I'll detail in upcomming posts. As I've gone along, I've learned some lessons the hard way, but refined things as I progressed. Hopefully, this is a gives you an idea customizing your new Ubuntu. After every install, I've gone through a similar process outlined above and am currently busy building a live CD which has all the above customizations set by default, saving me the time and effort customizing Ubuntu each time. Plus, I'll be able to give a friend a "complete", themed Ubuntu with a number of very useful programs and codecs -Will come one of these days!


Where is Google going?

Google started off as a search engine as everyone knows. Over the years, it has branched out into many different avenues including cell phones, advertising, hosting, email etc. If I think of the information that Google has of me... My name, surname, address, telephone number, all my emails, my source code etc, they have a lot of power. Why provide services and products like App Engine, Gmail, Voice, Android, Chrome, Health, Finance etc for free?

Information is power. Looking at Chrome browser, Android OS, Gmail, these are a really powerful combination... Not only for the end user, but for Google in terms of information they have of you! There seems to be two sides to Google - One side which is aimed at the home user and the other at businesses. There is no doubt that Google has many offerings aimed at businesses which are easily understandable. There is the free Google App Engine service for the home user or small company, but a paid for service for larger corporations (Or businesses that expand into those requirements). And then there are the multitudes of applications that are aimed mainly at the home user such as calendar, Finance etc. These on the surface make less sense from a profit point of view - Where are they going to make their money from? This really has been a question of Google’s business model since the earliest days.

One of the richest men in the UK is Bernie Ecclestone, who made his fortunes by owning exclusive rights to advertising in Formula 1 racing. And in the same way, I believe that Google is positioning themselves in becoming the number one choice of direct marketing information. In the F1 case, no one has a choice, but if Google has the most reliable data regarding individuals needs and interests, then why would advertisers go anywhere else? As I’ve mentioned before, online advertising has already surpassed that of television in the U.K.

Lets look at a potential case assuming the use of the following tools by an individual:

Google voice,
Google Talk,
Gmail,
Google Appengine for hosting a business application,
Google Health,
Google Finance,
Google Adsense,
Google Android

Together, these products and services can offer a massive amount of information - from physical location, personal preferences in purchasing, contacts/ friends, interests based on search criteria, "owning" your business(in that it "controls" source code), knowing the details of your financial portfolio, health information and your day to day schedules. This is a lot of trust and a lot of power!

Google is becoming part of the fabric of modern society - in our personal and business space. Even though I “trust” Google with my personal information, I think that they should be carefully watched. Imagine the possibilities of data mining across all the data they have.


I discovered last year sometime that Google started support of Java on Google App Engine (GAE). Very excited about this news, I immediately signed up, downloaded the plug-in for Eclipse and started porting my web application that I was busy with to the GAE platform. I had previously started building a web application for a group I run which I was going to be hosted at home. The application was written based on JSP's, servlets and a MySQL back end hosted on Apache and Linux. This was all good, except I was paying for the bandwidth, electricity and was obviously responsible for maintaining the server. Not having a UPS, I sometimes ran into problems where the server would go down, and wasn't able to restart by itself - not an ideal situation.

This is where GAE, comes in... It's a free service, has a large amount of bandwidth /CPU time available and can scale almost infinitely. For a small/medium website, the free service will suit perfectly and if the free limits are exceeded, there is a paid for option as well. To give an idea of the free quotas, it's kinda like Gmail - You can buy more space if needed, but who really needs more than 7 Gigs?

There are a few restrictions due to the nature of distributed servers which makes up the cloud service. One of the most important is that GAE doesn't use a traditional relational database. They use what is called "Big Table", which for the most part, works fine except that JOINS and SELECT statements aren't supported in the same way as other RDBMS's. Another significant restriction is that there is no write access to the file system.

The significance of this is that all dynamically uploaded content, has to be stored in the "database". Fortunately, Big Table allows storing of a Blob, which is an infinite byte stream. A further problem that is caused by some of the restrictions, is that there are only a few frameworks that can be used. I think that the struts framework is partially supported, but probably needs a bit of modification.

I also did a search for Java based content management systems that can be used on GAE - Found... 0. Hmmm... Seems like an opportunity to me. Having built an application on the framework should give me a bit of a head start in developing a Java CMS for GAE. I'm currently working on Microsoft SharePoint development and think that some of the ideas could be built into the CMS. (Ok, I know that SharePoint is a lot more than just a CMS but there are a few similar functions.) Some of the features that I'd propose are:

•    Dynamically built menu structures
•    Security management (I.e. permissions for pages/ content/ lists/ data etc.)
•    User and role management
•    Master pages for styling and layout.
•    Dynamically added pages
•    Email from website to registered users re updated news and postings.
•    Email to website, to update news.
•    "Web parts/ widgets" for extended functionality. I don’t think that it would be possible to upload these dynamically as you wouldn’t be able to upload compiled code and write it to the file system.
•    Generic libraries to store content. These libraries will be able to store any content types.
  • Documents
  • Images/ photos
  • Style sheets, js files etc.
By allowing uploading of any content types to be stored in virtual folders, this will allow dynamically styling of the site without redeployment by simply, removing a style sheet and applying a new one. However, due to JSP's being compiled, it may not be possible upload a new master page from the web interface.

When building my web application, it was like taking a step back a couple of years in that I had to start coding at a pretty “low level”. I think that an open source framework will definitely make Java development on GAE much easier than it currently is.



Microsoft Dynamics CRM is a great platform which has numerous powerful features, but there seem to be a few shortcomings as well. At first glance it looks very much like a relational database with a powerful form engine. With this in mind, it is often used as a data store in the same way as a relational database would be. One limitation is that transactions are not supported within CRM 4.0 through the Web Service.

This has serious implications when building interfacing systems with forms which effect multiple CRM entities. In my opinion there seem to be a few strategies in dealing with this:

1) Logging the exception - Well, this should be done in any case but in effect nothing is done to avoid inconsistent transactions. This is the simplest strategy, but could have some very serious associated risks.

2) Designing forms which avoid updating multiple entities at once and thereby avoiding the need for transactions. Eg. If a form which was intended to update a contact entity and a related address entity, 2 separate forms with “save” buttons on each page would enable updating each entity separately. From a usability perspective it would be understood that the two actions are separate. This is not always possible, and could make for a more cumbersome interface though. Eg. In a Parent-child relationship, the parent record, and by implication, the GUID, may not be available when wanting to insert a related entity.

3) Develop custom code to manage the transaction state. This is far from simple though. Code would have to ensure the ACID properties - Atomicity, Consistency, Isolation and Durability.

Each operation in the transaction would have to be firstly stored in a list. Therefore, if an insert operation succeeds with a subsequent operation failing, the record can be deleted. Once an insert is successfully achieved, the GUID would be stored with the record in the list.

There are some serious failings with this approach though. Firstly, there are often CRM workflows associated with insert/update operations. If a workflow is started upon creation and then the record is deleted, problems may occur with the delete. Records of partially complete transactions may still be modified or read by other processes before completion of the transaction. This could be partially rectified by means of using a singleton class which provides lock mechanism on a record. But this can only be from the perspective of interfacing systems. Nothing would prevent a CRM user from reading dirty data. If an delete operation has to be rolled back, an insert would be performed with the original data - The record would get a different GUID, which could have other implications. These scenarios are fairly simple though - It gets much more complex when trying to restore the state of entities with multiple relationships, as changes would have to cascade.

As can be seen, there doesn't seem to be a simple solution to the transaction problem, and it should be carefully considered before using CRM as data store for interfacing systems, assuming that just because it uses SQL server as an underlying database, it supports all database like functions.


I've realised over the past while that while "freedom" is Linux's biggest advantage, yet it's also it's biggest downside. Everybody hit's an issue at some point (regardless of OS) where we have to turn to the Oracle that is Google to solve. And this is where standardisation comes in very handy. At least when you're running Windows or Mac, there are a few million people out there with pretty much the same hardware/software as you who may have experienced the same problem. This alone increases the chances of finding a solution on blogs forums etc. that suits you.

As I said with Linux, firstly you've got largly 3 different interface's - Gnome, KDE and Xfce. Then you've got the different package managers - APT,
YUM etc. And that aside, there are literally hundreds of different flavors of Linux. So, the permutations are endless. And with Linux making up approximately 1% of the total market share, it means that sometimes there aren't thousands of people who've got the exact same issue that you do.

Sure, people will argue that "Linux is Linux" regardless of distribution, but it does mean that there are sometimes subtle differences that to a new user, some advice on a Mandriva forum will not necessarily work on OpenSuse machine. To a new user, Terminal sessions are probably totally foreign and they simply copy and paste commands from forums and see what happens - sometimes with "disastrous effects". I know... I've been there. Today I managed to mess up my OpenOffice while trying to force it to use a theme different from the rest of the Gnome interface. It took quite a while to fix the issue finally and get it to work as it should.

And there is the advantage as well... You can do those sorts of things in Linux - You can make it jump through hoops if you wanted. For the most part it's an obidiant dog that you can train to do anything you want to, but once in a while when trying to get it to jump through a flaming hoop - it's turns around and bites you in the ass. But then again, what would you expect?

So, I'm totally for Ubuntu who've standardised things a bit. It makes it so much easier looking for a solution - at least in the Linux world you're not totally alone.




When I logged into Gmail today, I was greeted by some weird "Welcome to Buzz" screen. Having no clue what it was (and it coming from Google, who's stuff I generally like), I was a little intrigued. Once clicking through the "I agree" nonsense, trying to get to see what it was about, my usual Gmail screen finally loaded. This time, just below my inbox was a link to "Buzz".

So, what is it all about? well, basically, it integrates some of Google's Social networking tools into one place, ie. Gmail. Currently it integrates Picasa, Flickr, Google Reader, Twitter, Blogger, YouTube and all the Google chat statuses. so, basically everything you post in these places, will appear to your followers. Hmmm... Intersting. It's obviously an attempt to take on Facebook on the social networking side. Apparently Facebook has about 400 million users whereas Gmail has about 170 million if stats are to believed. But, I guess given a few months, this will all change again. The problem is that with networks, value is proportional to the number of members. This is sort of a reverse supply and demand rule. Usually, the more people that have an item, the lower the value of the item, whereas there isn't much point to a network if you're the only one on it. So... Google has quite a bit of catching up, but it may just do it... As it's got a great base to start with.

It is quite scary though how Google is holding all the chips in the IT world - Data in this case and is in the process of consolidating and adding to it - they're no longer just in the search business. They haven't been for a long time... 



Google Buzz

Wow, only one about percent! That's the total linux market share according to browser stats. It all depends on which stats you refer to, but I'm not going to argue about a fraction of a percent. I've totally moved over to Linux on all my machines - both my laptops and my desktops are running some version of Ubuntu.

What really astounds me is that Linux, but more specifically Ubuntu, doesn't have a larger market share. It's free and except for time, costs nothing to install. However, Microsoft would argue that the cost incurred in terms of time and support outweighs the initial purchase, but for a home user - I doubt it. I reformatted my laptop with the latest Ubuntu 9.10 a few days ago, and the most time consuming activity by far was the copying of data to another location. Once I was set up to go and had my USB startup disk plugged in, it took a timed 10 minutes to install and working with everything. Even my Windows colleagues were impressed. After the installing Ubuntu 9.10 on my Dell Latitude E6500, there was nothing extra to do. Everything worked - Sound, Video, Wireless, 3G mobile, web cam etc. There is no ways that you could ever install any version of Windows that fast (Including Office).

Both have their place and I actually still work on Windows every day, but for anything personal, I definitely prefer Ubuntu. I just can't understand why Ubuntu doesn't have a larger market share. I think that some of the reasons include lack of marketing, the legacy perception that Linux is difficult to use and Windows entrenchment in terms of applications. Granted, this is why I still use Windows on a daily basis, but as a software developer, I'm not exactly the average user.

As I work for a Microsoft Gold Partner company, we get previews of Microsoft's products before launch with many free licenses. For example, I could have started using Windows 7, more than a year ago already. So with that in mind, I was once asked whether I prefer Windows or Linux - if both were free. It's a very simplified question but it suddenly becomes a whole lot more difficult... But I suppose, by now it should be obvious what my decision was... Ubuntu!







Twitter Delicious Facebook Digg Stumbleupon Favorites More