Wednesday, 15 December 2010

Cloud Computing 2. Ground level

‘Cloud computing is a type of computing that provides simple, on-demand access to pools of highly elastic computing resources. These resources are provided as a service over a network (often the Internet), and are now possible due to a series of innovations across computing technologies, operations, and business models. Cloud enables the consumers of the technology to think of computing as effectively limitless, of minimal cost, and reliable, as well as not be concerned about how it is constructed, how it works, who operates it, or where it is located’.

This did not help much though when it came to a complete non-tech person. So, I again use an example that was used in the seminar I attended. Consider your work place in an IT company, you may be availing a lot of services such as email and intranet sitting at your computer. If you are accessing a leave management system like I did some time ago, you could look at the back of your computer and see a network cable. Following the cable you end up on the socket on the wall and then you plough out the lines and still follow them to a switch then to a router and you finally find yourself in the server room of your company. Then, you follow the cables to the server that, was hosting the leave application software for everyone in that location. So you have pin pointed the fixed server/hardware, the room, the air conditioning, the people who maintain that (by this time you should have met them), saw the power supply, back-up and the like. Now you get the general idea. You, the user, located it feeling.
Now, if you ended up in huge warehouse with containers upon containers (holding the cable of course), and you see that, there is a lot of hardware with thousands of network connections going to as many stacks and you simply cannot pin point which one is your application server by yourself then, you are dealing with a cloud. Basically, you may have ended up with something like this.

There is a video of the Google Datacenter too.

Notice/see the mentioning of network, storage, cooling, power supply etc which you might have located in your server room too but, in a minute scale compared to this. So your data, application are on some server that is in this huge software + hardware infrastructure. There might be someone else’s data, application residing there too.
So did this explain the concept? It does not seem to be so very new outright but, the approach as we will see to utilizing such hardware software infrastructure and deriving advantages from it is new.

Cloud Computing - 1 The beginning

I have been reading up on a number of stuff the past couple of months and have consolidated stuff to put on my blog. One of the topics is cloud computing. This was rather vague in the sense that, if, I referred to any material couple of years back I used to get different ideas. But, a seminar I attended recently helped me to get some basic ideas to build upon.

What is there so much to understand about cloud computing? You may ask. Rather than being able to work with it in all its glory, you would be better off if, you can explain simply and clearly to an executive, preferably from a non-IT background, about the what is, how, why of cloud computing. Not agreeing to this? A lot of literatures just do this and only this. Why? Because as long as the execs don’t see the up-side, no computing is going to take off. So explaining the whole idea, selling cloud seems to be challenge I am facing now. So who started all this? A colleague some time ago asked how I would explain cloud computing to my grandma and expect her to figure out some advantage on her own. I am never going be able to explain to my grandma because, she is not around. But, the idea was still hanging around. After this, I just continued with my reading to understand cloud more and pursue some development too.

The rest of the stuff such as developing something to run on the cloud for an example, using the Google App Engine etc is left to books and technology literature directed at the tech people. I am going through these too and will put on some stuff as I progress. These will be totally technical and nothing in the direction of the para above.

The next few blogs would focus on specific aspects/points that, I got from my literature review which I did not come across in general.

Wednesday, 27 October 2010

Fun Fun Fun with Robotics

This is yet another part of a new interest I developed. Its Robotics Again. I was building the walking mechanism for the alpha rex on Mindstorms.

It took me a while to build it manually, and the VPL program was larger than most other examples.
It was all worth the effort. Why? There are a lot of reasons for a software engineer to be happy with this.

- First, not a single line of code has been written!! All the instructions are using the VPL that comes with the mindstorms studio. Yes, it does compile and all that stuff but, hey I did not have to type in the code. I was dragging 'logic blocks' to get the job done.

- Second, with this a software engineer can imagine something and he has to imagine not only the logic but, also dream something that is mechanically feasible.

- Third, you have to build it mechanically!!. Finally, something tangible compared to the programs and processes.

The walking mechanism is here in this video

The touch sensors usage is very very impressive so is the technique used to walk. Stuff written on the package is true. 'Only three motors, 2 touch sensors, ultra sonic sensor, color sensor but a lot of possibilities'

Monday, 25 October 2010

Visual Programming Language - Lego Nxt2.0 Robotics Kit

In 2008 I attended a career exhibition at Cardiff City Hall. There were a lot of companies who had put up a booth to guide to-be-grads in the room . One particular company Texas Instruments got my attention with their equipments (looked more circuit like) on the desk. I gave them a visit and the guy there eagerly explained to me how their equipment measures my temperature, heartbeat ... while I was holding a metal wire!! Then, we struck a techie cord and he started talking about other stuff like Visual Programming Language and then about Lego Mindstorms Robotics kit. After listening to all that, I thought that, I should get to know this VPL thing and Mindstorms Nxt.

I had a copy of MS Robotics Studio and played around with the studio. Missing was the sensors and motors i.e a robot kit.

Recently, I got a Nxt2.0 Kit and started doing some VPL programs and running it on the servo motors, sensors in the kit.

1) It is really nice to see and use the VPL studio that comes with the kit.
2) Even though there are only a limited number of sensors and motors, there is a lot of things that can be imagined and programmed.
3) Not to mention that, MSRS is compatible with this kit and we can code specifics in addition to the VPL capabilities.

When you read a books on Robotics, you see terms like actuators, sensors, services, concurrent execution etc and it was upto imagination to piece them together. But, with a kit like this it makes understanding things a lot more easier.

I tried out a few of the vehicles and really enjoyed building and programming with VPL. One of the sensors I really like is the Ultrasonic sensor that can be used to measure distance. The shooter robot was really interesting. The technique to shoot the colored balls is really impressive. (old pool game idea). My bot was ready and I gave it a try.

The video is here --->

It senses when some thing comes closer than one foot and fires. Simple. The villain was the only thing I can get my hands on before the batteries ran dry, a rolled up carpet.

Next would be Finishing the alpha rex humanoid and then moving to using custom code with this.

And yes, there are a lot of other robots and kits you can get your hands on these days. But, this is definitely a good place to start.

Wednesday, 22 September 2010

Comments on Two books.

Here are my thoughts on two books that, I have been through.

1) Code: The Hidden Language of Computer Hardware and Software. From Charles Petzold.

After hearing a lot of praise for this book, I decided to give it a go myself. During my bachelors, I had gone through books in basic computer science, operating systems, computer networks etc. As an eager-to-learn reader, I felt, this book from Charles Petzold is different in the following ways

- It does not start with a chapter 1 scare about computers, digital world taking over your life.

- Enjoyed the progress from Chapter 1 - 15. Things like Braille, Morse code, Telegraph, relays
are described from a different perspective. Without having the end result/objective defined,
the chapters build on what is simple and available to expand concepts. This is absent in all
other books I have been through.

- Earlier attempts at code / represent data are interesting.

- The book is a progressive sequence of thoughts leading to understanding computers, from oh! to ah!. If you already had taken subjects like digital logic/electronics during study, you might find this a replay. Only that, in semester study you get air-dropped right in the middle of details and learn from there.

Only downside is, I felt that,

- the fine-grained description of what each company / corporate / individual did could have been avoided. It was enough for me to know that, XYZ inc came up with yet another approach/processor. If I wanted to dig into that, I would read another specific book. Just that, such descriptions are out of the scope of this book. Not to mention that, it is enough to kill the spirit of reading the rest of the book and put you to sleep.

- This book should have come out 10yrs ago as the author says. I wish it had.
This is must have for High-schools', colleges' libraries or anyone who is interested in understanding how computers work and see through the layers of abstraction.

2) Practices of an Agile Developer by Venkat and Andy.

What can I say? At least, the authors don't guarantee success with agile.

- This book is for people who don't understand that, software engineering involves great people/teams empowered by good enough process/methodology. Even agile can't help if this is not understood.

- If you are a developer with discipline, skip this book. You are already way ahead.

- A plus side, you can finish it in hours!!

Wednesday, 25 August 2010

Protect Shred Throw away

2 softwares that are useful if you are protecting information on your machine.
1 Software for storing passwords for users.

1) True Crypt.
This software allows you to protect information with encrypted container files, hidden volumes and hidden operating systems. Simply you follow the instructions to protect your data files with encryption.

2) PGP
I was under the impression that, the software turns features off after 30 days. But, the pgp author mentions that, it would simply continue to work. So, I am trying this especially the shredding part. This software can shred empty spaces in the disk or files.

Both these softwares can be used when you a throwing away your hard disk. Cryptographically erase data.

3) Password Safe from Bruce Schneier
This is an extremely useful piece of software for people who have loads of ids and passwords.
Instead of using a commercial application that drags your system down, this can be easily used with little or no performance hit. It allows you to create a username, password, tag to describe where this is used, credential groups. Simply drag the name / password to the corresponding edit boxes in other windows. The password data base is itself encrypted and just remember the master password.

Extremely useful software.
Google it. Download it. Try it

Wednesday, 21 July 2010

Development environment

If you are embarking on software development or programming seriously then you need a environment, as George Carlin would say, to "put your stuff".

My requirements for a development environment are.

1) It must be reasonably fast. Windows Xp? not a chance. Have tried.

2) As I progressed over the years, doing coding projects as learning and now after 4 months tops, the file system is confusing to even myself. tons of versions of jre, shell scripts add to the confusion. On a short notice I want a clean system. i.e No installation of any sorts allowed. I don't want to worry if my previous pet project is gnawing at the current one.

3) Backup ! If something goes wrong on a monday morning, I want to just revert back and continue breaking things.

4) I should be able to make things tick with scripts when ever necessary. I hate windows scripting.

5) Need a strong, flexible shell.

6) Make private networks without the physical machines.

I have used linux in the past and found it to be the best. I was not going to install a development environment on my Xp laptop. Definitely not for Java development. If it was for visual studio then, ok. But then, linux as a VM seems to be my choice for quite a long time now. The reason is that,

I found a number of ways to make this OS fast from other blogs. Search for it on the web!. Some things to do are

- change swappiness
- services. Used Yast to disable unwanted ones.
- Look and feel for best performance
- on Vmware server settings make sure that the entire vm memory is on physical memory.
- visit inittab and strike off unwanted stuff.
- Allocate all the disk space. Some blogs say this is unnecessary but, I found it to be otherwise.
- list all processes and continue filtering.
- Disable CD drive.
- Disable USB.
One way to see the changes is to list the number of processes running on your vm. Mine has 56 processes and without X windows 38. The vm is more responsive with heavy IDEs like RAD. Well, faster than my friend's Ubuntu on physical machine!. (My VM has only 1.3 GB RAM)

So to be precise

1) Use a Virtual Machine.
2) Use Linux.
3) Use Xming or Similar tool and avoid UI on your VM.

Sunday, 6 June 2010

Elevate thinking on Software Development Models.

If you have been to presentations on Software development models then, you have been exposed to this.

a) Someone is talking about a new model.
b) The benefits list is longer than your shopping list.
c) There are also convincing Wow! Wow! examples.
d) It is some thing very different from all the models you have ever seen, heard or used.
especially that mean Waterfall model.

Then, the all time champion false claim

e) The model is promised to deliver you success at all times !!.

Here is what I think.

1) The Waterfall model gave us the basic stages of software development. That's the truth. Face it. It is NOT a guaranteed to fail. It might fail.

2) Every Software model has all the stages laid out by the waterfall model. Rarely do you see a new phase in the new models.

3) It is how you string these phases together, how much effort you spend in these stages, that makes the difference and the different models.

The questions to answer before adopting a new model.

1) What is the process you are following now?

2) What precisely is wrong with that process?
- Look for answers in Cost, Effort, Schedule.
- Get the numbers straight for the above three.

3) How much is the new process profitable in the above three?
4) Is this worth the shift?
5) Above all, Is your business process, team process compatible with the new model??
i.e can you map it to your processes?

These basic questions can set things really straight.