Wednesday, October 12, 2011

Open Source - amorphous and very cool...

Imagine you go out and buy a car; you look around a bit and make a few decisions. You decide whether you’re going top of the range or affordable or second hand scrap heap. Which ever you decide, you pay your cash, you get in and drive away. When you drive out of the dealership parking lot you expect the car to go, there’s nothing else you have to add (apart from petrol maybe) to get from there to your house. Everything you need to get the professed use out of the car that you paid for is included.

BUT - when you buy a computer, you get the hardware. That’s it... and if you listen carefully you can hear a pimply faced computer salesperson snickering in the back room. You can switch it on, but all it does is sit there using up electricity and costing you money - it might look nice, but without software it’s as useful as a steering wheel without the car attached. “This was supposed to revolutionise my life?” you say to the salesperson when you return to the shop. That’s when he snickers again. “You need an operating system (OS).”

So, you open your wallet, max a few credit cards and buy an operating system - and a few minutes later you hear the Zen chimes of happiness as your OS boots into it’s default user interface mode. You take a closer look, and to your surprise, apart from Solitaire and some basic text composition, there is not a lot you can do. You traipse back to the pimply faced computer salesperson, max another credit card and buy an office suite, or a drawing package, or development tools. In a moment of horrible clarity, you realise that every bit of extra functionality that you’d like to squeeze out of your computer is tied to the software that you can install, and subsequently, how much you have to pay for it.

It is here that the ethos of the open source movement is felt.
Why should you have to pay money in order to use a computer? Computing freedom, especially in a modern age, is a right, not a privilege reserved for few that can afford it.

Computers are everywhere - in your pocket, on your wrist, plugged into you in a hospital and largely, in front of you as you slog your way through making a living. Most people go though life without knowing or caring about software.This mindset is changing though - as people of all ages worry about the virus checks, the latest version of angry birds or those pesky windows updates, we begin to realise the extent of how much we use, see and rely on software all the time.

What is open source software?

As the name suggests it’s software, the source code of which is open to the public - in other words, the code on which it is built is open to anyone to use and also to develop the software further. For instance Google used Linux when they developed Android and they didn’t have to buy the rights to use it, because it’s open source and anyone has access to it, they could use it to develop their software. There are few caveats because open source software is generally released under one or more open source license. For instance, in the case of Linux, the license was the Gnu General Public License (GPL), and the caveat attached to that license is that you can use the source code, as long as the code that YOU write is also released as open source under the GPL.

Open source is also a way of making sure that there aren’t any Gadaffi-type software dictators. If you browse around open source web sites, you will often see the term ‘Vendor Lock in’. This term refers to software vendors that sell you product A, which will only work with software from the same vendor. This guarantees that they have a steady source of income from you, and the more you invest in their products, the less likely you are to ever move to another vendor (or software product). This removes choice from the client - and essentially handcuffs you to the vendor forever. If you’ve ever tried to open a .doc file in a product that wasn’t written by Microsoft, you have experienced Vendor Lock In.

So where does this leave us? At the end of the day we need software to operate our hardware, the same way our bodies need a brain to operate it. If your brain was open source, you would want choice in what you thought and how you went about thinking it, and just as importantly, there shouldn’t be a running cost against every bright idea that flashes your mind. At the center of the Ethos is the fact that open source software is available to all.

The social spin off to this is that open source software brings about equality, parity and a sense of working together. Because the source code is freely available for anyone to use, software developers all over the world are able to dream up an idea and use open source code to develop it. Pooling ideas and sharing knowledge in a team that is essentially unlimited has led to very successful opens source projects like KDE or Gnome. Developers all over the world collaborate to revolutionise the user desktop experience every few years. On the flip side of this, closed software has to rely on the small pool of developers being paid to churn out a limited set of ideas.

This begs the question: “Why isn’t all software open source?” Clearly open source is the way of the future, if we pool all the combined ideas and brain power of anybody with a computer and a bit of programming know-how, surely that’s better than putting our computing needs into the hands of a few highly paid people at major software corporations? In terms of what’s best for the community as a whole, that’s right, but for money making corporations, that’s the worst idea in the world.

This is where the rubber hits the road - In the end it comes down to money. Big software corporations and developers can only control the flow of money if their programming is done in-house, by their programmers and all the rights and patents can be accredited to the corporation. Open source is the antithesis of this model and so is often rejected by corporates and corporations.

That being said though, open source software is bigger than you might think…

You’re probably already using it without even knowing it...
Some good examples of open source software and where they touch your life:

Android
Dave Burke, Google’s Android engineering director says “[The Android Operating System was developed so] that there would always be an open platform available for carriers, OEMs, and developers to use to make their innovative ideas a reality. We wanted to make sure that no one industry player could restrict or control the innovations of another. The solution we chose was an open and open-source platform. The openness of the Android platform has been key to driving innovation and adaption. Android is available for everyone to use and is an engine of economic opportunity for both hardware manufacturers and developers because it gives them a free platform to build on.”

Essentially that’s the heart behind all open source software, the desire to have a decentralised structure of development and organic, needs driven software development, by the people who need and use it for the benefit of everyone.

Linux
Linux was started in the early 90’s by a man name Linus Torvalds and forms the base of many embedded devices and servers. The Android operating system has Linux at it’s core, and many businesses and Internet service providers around the world use Linux because it is cheaper (sometimes free) than any other offerings on the market and offers enterprise level stability.

Unix
If you follow the history of Unix back to the 70’s where it all began, you would need a law degree, lots of coffee and several weeks. The grandchildren of the original Unix operating system can be seen today in MacOSX (the version of Unix that runs MacOSX is called Darwin), Oracle’s flagship database operating system, Solaris, and many more. Unix could almost be called the grandfather of open source, even Linux is technically a derivative of the original Unix. From an open source perspective, BSD systems (Berkely Software Distribution - so called after the labs where Unix was first developed) can be found in their open source incarnations as OpenBSD, FreeBSD, NetBSD and many others. They are secure and reliable and make great options for web server hosting and other such functions.

Apache Web server
If you’ve ever surfed the web, you’ve used Apache web server. 65% of the Internet is Apache based which means two in every three times you click a link, you’re being served up a web page from the open source goodness that is Apache web server.

Continue the revolution!

Open source is at the heart of the IT world, there is a sense that there is something bigger than just making money out of software development – a sense that anything is possible if we work together. Put your voice in as a supporter.

Friday, August 19, 2011

Easy Tablet to Swallow

Convenience is King when it comes to computing, making Tablet PC’s Kings (or at least pedagogues) in the process. These little devices took the world by storm as the Jesters of computing - what else could you call a device that most people use almost exclusively to play Angry Birds? But recently the Tablet has turned serious.

Gone are the days where Tablets were just cool little devices for playing flash games and almost but not quite checking your email; look around, everyone from teachers to civil servants and even Presidents have them and use them on a daily basis. Steve Jobs has called the Apple’s version of the Tablet, the iPad, ‘a magical device’, and although he’s paid to say so, add to this that these ‘magical’ devices are being used to do everything from controlling the lights in your house to helping children with autistic spectrum disorders deal and interact with the world, it’s hard to say he’s wrong.

One of the most magical and exciting things about Tablets is that they are leaving the realm of ‘specialised hardware’ and moving into the realm of everyday devices. The ease of developing of apps also means that the specialised software is only a few swipes of the finger away.

An old ‘Trekkie’ vision
The idea of a Tablet PC (a mobile computer with a touch screen) has been around for a long time. In the 1960’s tablets made an appearance in a Star Trek episode in the form of a wedge shaped electronic clip board. Since then, we’ve had pocket PCs, palm pilots and net books. Only now, however, are we getting close to the realisation of the electronic computer-clip-board that captured people’s imaginations 50 years ago.

But if the idea has been there for fifty years, why have we had to wait so long for it to become a reality? The answer is becasue only in recent years have a few key factors slotted into place which make such a device possible (and actually use-able without being cumbersome). Some of these factors are:
  • The Cloud (The Internet) and the plethora of services now available on it means that the requirements for useful computing (CPU power, ram, storage) are moved from being located on the device to a server on the other end of an Internet connection. This has enabled portable devices like Tablets to have relatively low hardware requirements and still be as useful and flashy as their desktop counterparts.
  • Mobile network technology - fast, mobile Internet connection (particularly 3G and up) appeared about 5 years ago and the speed and low cost of this network enables cloud services to be used on a Tablet quickly and without hassle.
  • Unified platforms - There are now 3 or 4 major platforms that a Tablet could run on (iPhone, Android, Blackberry, MS Mobile, Palm Web OS), each accompanied by freely available development tools which make it easy for developers to extend the platform and for users to customise. This leads to all tablets having the same ‘look and feel’ and a similar user experience. There is now an expectation in the world of Tablets of how it should function and the availability of development tools to develop it.
  • The evolution of input methods - from a keyboard and a mouse, Tablets have gone to capacity touch screens, tilting and rotating, microphones.
  • Connectivity - GPS, Bluetooth, wi-fi, mobile networks and now Near Field Technology let you interact securely with other devices, allowing you to pay for your groceries or give you access to a venue to watch your favourite rock star.
All these technologies have been around for ages, but have always been too expensive to combine into one device. Luckily for the consumer, demand and technological innovation have driven the price of these technologies down from the level of specialised wizardry to consumer widgetry.

With this infrastructure in place (and growing), things have come together in the past few years to create the Tablet as we know it at an affordable price; with it’s vast capabilities, slick interface, and ultimately the user experience one gets from it. The folks at Apple (and to some extent Google and Microsoft) have crystallised and made real the idea that was born on the USS Enterprise so many years ago (that’s a Star Trek reference for those who missed it).

The Next Generation... of computing?
Charles Arthur and Killian Fox say this: “We have lived with the PC paradigm for around 30 years now, since IBM introduced its first personal computers and pushed them into businesses in the early 80s. Until the launch of the iPad last year the only comparable change in the market had been the laptop, which led to the emergence of an army of travelling salespeople whose most urgent need was always to find a power point where they could charge their machine's fading battery.”

Horace Dediu, formerly an analyst at Nokia suggests that iPads (and therefore Tablets in general) are a shift away from this old paradigm towards a new paradigm in what some are calling a ‘Third Stage in computing’ or a ‘New Generation of computers’. Dediu defines a new generation of computer as one where “the new products rely on new input and output methods, and allow a new population of non-expert users to use the product more cheaply and simply". Tablets fit this bill from start to finish.


Up in the Cloud(s)
This ‘New Generation’ of Tablet computers is not only a product of years of technologies coming together and the existence (or realisation of its potential) of The Cloud, but is also a driver of the same process and development of The Cloud and Tablets from which they come. As Tablets (and to an extent small notebooks, laptops and netbooks) have become more prevalent on the market, the need for more easily accessible resource on The Cloud has become necessary [for further details on The Cloud, see post dated July 25, 2011 on this Blog], this supply and demand chain has created a self-fulfilling prophecy as more apps and capabilities are developed for Tablets thereby making Tablets more desired and user friendly, thereby prompting the need for more apps and capabilities.

The Good, The Bad and the Tablet?
Tablets are not being received with open arms in all spheres however, with this change in generation and paradigm comes yet another sensory stimuli into our world. Technically the stimuli isn’t new, just more portable - in the 60’s you would have needed an eighteen wheeler truck and an army of techs to carry your computer around, now with Tablets a ten year old can carry one around in her school bag (and probably use it better than the techs from the 60’s). But there are some who suggest all this tech is actually changing the way our brains work - although there’s no clear agreement if this is a good or a bad thing. Neuroscientist Susan Greenfield says this “At a microcellular level, the infinitely complex network of nerve cells that make up the constituent parts of the brain actually change in response to certain experiences and stimuli.” Greenfield suggests the continued use of technology and gadgets like Tablets are part of those ‘experience and stimuli’ that are changing our brains. She goes as far as to say that our notions of who we are, what we do, how we behave, how we interact with each other and what makes us happy - our basic human identity - are changing and will continue to change because of these kinds of technology.

On the flip side however, this very same technology is being used to improve, and even enhance the lives of many. Speech therapists use ‘Tablet like’ devices to assist people in relearning language after strokes and as communication aids. Special needs schools around the globe are finding that the use of tablets (particularly the iPad) in teaching children with autistic spectrum disorders is having a huge impact in helping them concentrate and interact with the world. Because the input and output areas of the tablet are the same, it helps these children to focus their attention on one place as many children with this disorder struggle with concentrating on more than one area at a time.

Whatever the outcome, Tablets are here and they are set to become more entrenched in our lives as the technology advances and their uses become more varied and helpful on a day to day level. From their beginnings in a Star Trek dream to their reality and use in hospitals and class rooms around the world, people everywhere are embracing them.

Monday, July 25, 2011

Cloud computing - Pie in the sky or real time solutions?

Up until a few weeks ago I thought Cloud Computing was just virtualisation with a marketing spin. The Irish economy, in the depths of despair, is touting Cloud Computing as the answer to many of it’s financial problems. If I, a fairly up to date member of the tech community, struggle to get my head around it, what hope do a bunch of Guinness drinking politicians in Dublin have? And is it really that easy? Can Cloud Computing help not only the ailing Irish economy, but also turn a profit for others? and if it can, what’s it all about and how do we get on board?

The Cloud and Virtualisation

Virtualisation is a term used in tech circles to describe the technology that allows computers to run within computers - essentially a program within a program, or more technically, a host operating system to run different guest operating systems on the same hardware.Virtualisation is useful because, for instance, it allows you to fire up the latest and greatest linux distribution in a sandbox without disrupting your everyday activities, and then when you’re tired of it, you can just delete it. Essentially then, Cloud Computing is running a virtual computer on hardware somewhere else in the country (or world) that you access via the Internet.


So how do you get from virtualisation and Linux distributions to solving the Irish economy’s woes? With cloud computing apparently.

What is Cloud Computing?
Wikipedia says the following about Cloud Computing: it is “the practice of using a network of remote servers hosted on the Internet to store, manage, and process data, rather than a local server or personal computer.”


Essentially they’re saying Cloud Computing is accessing programmes on computers through the Internet instead of accessing programmes on the physical computer you have direct access to. Not really amazing or ground breaking is it? For years we’ve been checking our email on Gmail and Hotmail, translating swear words with Babel fish, and storing photos and files with Dropbox and Picasa.

However, while it’s not ground breaking, it is the next logical step in the progress of computing. In the past a computer or server has only been as useful as the software on it, in other words a user could only do things based on what software was installed on the physical computer in front of them, if you wanted to manipulate images you would have to use a programme like Coral Draw or PhotoShop, if you didn’t have these programmes on your computer there was no way to decently manipulate images. This left you with two options: 1. Don’t manipulate images or 2. Go out and buy (or some people pirate) the software, which is a problem if you live on a desert island.

And this, essentially, is how programmers made money - develop a program, keep as much of the code as possible top secret so no-one can copy it and then sell it to thousands of people at high prices. Over the years this led to a certain amount of stratification in the computing world with some users swearing by Mac or Linux or Microsoft and none of them were really compatible with each other unless you had infinite amounts of time on your hands.

Caution: Change ahead

This is where Cloud Computing is beginning to change things. My realization is this: Cloud Computing is beginning to create a more broad spectrum uniformity in terms of what you can do on the hardware you have at hand. Cloud Computing helps us become less and less dependent on the actual software we have on the computer in front of us. As long as you have a decent Web Browser on your machine, you don’t really need the fancy software because someone else has it somewhere else, and you have access to it.


Cloud Computing also expands the concept of ‘programmes’ from only web pages to a wide spectrum of things that include services (like embedding maps and location data with Google Maps), a hosted runtime environment that will run software customised programmes, and virtualised computers that require a lot less capital outlay than a real computer (because you’re not paying for the hardware, just the sandbox).

A real time example

Let’s say that you have an idea for a smart phone app: the Lotto Number Predictor. This app implements an algorithm that uses past lotto winning numbers to try and predict the next one. Seeing as it’s going to have to store every lotto number in history, it needs to have a place to store data, a place to do some chunky searches and calculations : it would need to have access to services on the Internet.


Before cloud computing you would have had to approach a company hosting servers on the Internet and rent an actual server in a rack, and pay for it every month. You would probably have a bandwidth allowance, that you would probably exceed, so your monthly bill would be for rental, and whatever bandwidth you used. If the app was popular, and your server started slowing down because it was unable to handle the load, you would have to buy another server, set it up, and then figure out a way to make both servers balance load from clients. These things take lots of time, and the process provides lots of opportunities to make mistakes.

You would also have to worry about my data - what happens if the hard drive in my server crashes? It’s probably all lost. So all your your code and all your work has to be repeated, and, more importantly, you customers who paid for the phone app won’t be happy. An alternative would be to outsource all of this, but you’re probably barely breaking even with all the costs so far.


It’s all in the name

This is where these new Cloud concepts come in. Cloud pundits throw around terms like PaaS, SaaS and IaaS, but what do they mean and do? With Platform as a service (PaaS), a company, like Google with Google App Engine or Amazon with Beanstalk, writes a platform that runs the code you have written for your lotto calculator. They set up the servers, they worry about hard drives failing. If the app is popular, the platform ‘grows’ to accommodate it without having to physically rent more server space. The only thing the programmer does is deploy the code, and pay for resources that are consumed (hard drive space, network bandwidth, memory, etc).


Software as a service (SaaS) allows you to add functionality to the your programs without re-inventing that functionality from scratch. You might decide that you need to show a map of lotto winners - hey presto, with a SaaS product like Google maps, it’s as simple as calling the service (and paying for it).


Lastly, if you decide that you can’t find someone out there that provides the platform that you need, you can get a virtual server for a fraction of the cost of a real server. You have some pain in setting it up, but companies that offer virtual servers solutions provide pre-built server templates: e.g. with a data base or web server that you might need. The company providing the instance takes care of hardware breakages, load balancing and even spawning a new instance when one is needed. This is generally referred to Infrastructure as a service (IaaS) - think of it as getting a server in the same way that you’d get an email: you can’t touch it, but exists on the hard drive and in the memory of a server.


Back at Home

For the person wishing to generate a winning set of Lotto numbers, the exposure and options for hooking into the cloud are just as many and varied. A ‘cloud client device’ is generally accepted to be an end user product that, without the cloud, is otherwise useless. I suppose, generally, a mobile phone is the typical cloud client device - without a mobile network it’s a hunk of plastic pushing electromagnetic radiation into your body. Certain mobile phone apps - like the lotto app - are also cloud clients, as without the service working away to gather and collate information for you, the app is useless.


But more recently, there have been some even more specialized devices put on the market. Google has released it’s ‘Chrome book’ which essentially appears to be a browser with a computer attached. The by line “Nothing but the web” is a dead give away. In fact, I would go so far as to say that most smart phones and tables are cloud client devices - yes, you can do things on them when you’re away from the internet, but it’s a very frustrating and limited set of things.


The Cloud Economy

What has become clear is that Cloud computing isn’t any one technology or practice; it’s an entire economy. It’s analogous to the production process: the raw materials are extracted from a mine and through various process are enriched until they’re the shiny ring on your finger or the bling on your handbag. Server hardware is the raw materials, and many layers of infrastructure enable the services that enable the apps on your I-phone or the tablet. And given the rate at which these services are growing, it’s not surprising that an eager Irish government would like to hop onto the bandwagon!


One such Irish company is Digital Mines, who recently made a few waves by securing €750,000 for funding in a very depressed economic setting. Digital Mines is a company that is offering an easy way of spawning virtual servers off Amazon’s Elastic Cloud infrastructure. They are brokering IaaS services without actually owning a server - a very clever idea.


Clouds are here to stay

It’s safe to say that cloud computing is well and truly here: it’s in our pockets and in our homes, and is shaping the way that developers and IT professionals work. It’s enabling the evolution of data into knowledge and doing so at a compound rate: 5 years ago just pulling up a map on your computer screen was a big deal. Now, it’s a map with with your location, coffee shops, pubs, stationers and tourist attractions all marked out and easy to see, all rendered down to a 5 inch screen that travels around with you. Cloud computing is putting the world in the palm of your hand.