Archive | Technology RSS for this section

Over Engineering, and “Engineering is Over…”

I was already dealing with the Monday blues, to top it was going through a complex piece of code which I originally thought was one of the greatest scripts one has written. However, half an hour passed I realized it was doing way more than what was required and was the cause for a functionality failure at many places for the product. In the next 20 minutes, I was already feeling the need to have someone get me out of that seat and punch me in the face for originally liking that junkie!

I leaned back on my chair, hands behind my head and closed my eyes for a minute …

10 years back when I used to think of software, for me it was like something so cryptic and complex written that no one else could understand, other than me. In fact, sometime it was worse. Anyway, when I later started writing commercial code and fixing thing in others code, I realized code readability is so much important. My next myth busted when one of the customer said, “The functionality you have provided in the website is great add-on, but actually I wanted something else which woes my customers – definitely the stuff you have provided is great for the geeks, but actually my site is going to be viewed and used by no-brainers”. End of the story – my complete effort of 2 night outs have gone in vain, I will have to throw the code into “Recycle Bin” and my friends are going to “kick my”, for skipping the booze party.

I think this oxymoron of a concept has stemmed from various myths about how software needs to be authored.  I am no scientist to write a specification on that… but surely I feel User Experience is the ultimate thing. This UX and Usability are tied together, no matter how stable and sturdy your kernel (software that runs your laptop and computers) is, if you can’t reach to the consumer, you have just wasted enormous amount of time and efforts, which could have been used to add a usable functionality and have expanded your customer list.

location1

Most of the programmers write code without knowing about what is the actual business need. For them it’s more of completing an agile task in hand for the day and that’s it! This accumulates over time and the final product is completed with “hacks and wrecks”. When product is consumed by the customer, he knows his business better than anyone out there and then he starts finding flaws resulting in higher number of issue reporting and lower customer satisfaction.

So finally, what I have realized over the years is,

Business drives technology and it’s never upstream.  So understand the business.

Use technology like a hammer – it is not meant for learning and dumping a big fat code which would finally land in trash, you should just know how and where to use it effectively to nail customer needs.

Keep a holistic approach – Don’t write a single piece of code until you understand the business need. If possible start with business test cases.

DO NOT over engineer, it kills big time! Always code for User Experience, Performance and Scalability, and meet the need of the hour, max tomorrow, and not day after and henceforth!

 Okay enough of lecturing to my senses, time for a coffee break, after all  I still come back and need to cope up with the trauma of fiddling with that rocket science that has been put into, just to search a node in a directed graph. Damn it! I opened my eyes, leaned forward, picked up my dear mug and headed to the coffee corner.

coffeemachinemobile

By the way, I hate that coffee machine as well in office, though it does make all sorts of classy coffee but still can’t figure out which button to press to just get some milk, somebody just over engineered and forgot the UX! I overheard someone talking about plans to get a simple coffee machine installed :)

Do let me know what do you think of complex code and also share your similar experience.

PS: The comic images do not belong to me and may be copyrighted, in case they are, please feel free to drop me an email. 

Advertisements

Cloud Computing – The Buzz Word

In this article, I will be sharing my understanding and some information that I have gathered around from the world of clouds. The intended audience here is more or less those who are new to this buzz word and would like to know more on what exactly is it and why is it so important to know about it.

I will be keeping it as simple as possible and try not to introduce new terms until it’s an absolute need.

I have always been searching around pages over the internet on where to find the roots and what kind of liquid – definitly not water, actually evaporated to form these clouds. So lets take a joy ride into the clouds and find whats inside it.

Before we buy the tickets, lets first decide our route to our destination and understand if we would require any other life jackets in case we find turbulence in the way out. We may stop at certain stations to stretch a bit have a cup of “Cofee” is required and move on!

Okay, we are at the station (pre-requisite) called “Fundamentals of Networking and know what Operating System and Software are And what are the demands of todays end users ”.

Hey I just got the Journey Ticket from the “Window” though I could also see some “Penguins” heading on with me – am on my way! I am sure you guys would like to see that and so faxing it through:-

Journey from Networking Fundamentals to Cloud Computing
Halting Stations What are we entitled to buy in the Shops?
Softwares Hey I am alreadyusing this! Whats the big deal? Looking beyond Resolution
Traditional Hardwares I have seen this place before So why am I here? Limitations Demand and Supply problem
Virtualization Definition Market Demands Tools Going hand in hand!
Grid Computing Definition What is it? Looks familiar? Ended?
What is Cloud? Re-Defining Why is it required? Hmm… makes sense to me? Type of Clouds
Hurdles Leaders/Service Providers News What’s Next
Total cost: An Hour of interesting escalation. Happy Journey!

So what say, interested in coming along? Or, you may wait for another advance journey (Technical) in the next week. I am really going to tear the Clouds apart in my next trip.

My journey has started and I am too much excited. I was reading through a book when a fellow Penguin with a Red Hat asked “Hey, My name is Fedora … and you?” and a hell number of thoughts just flashed through my mind. “Hmm… I think I know this guy. Have met him before at a conference and these Red Hat guys are quite a traveller.” “Oh hi, I am Cloud Traveller.” So we started chatting on all the amazing things we would be going through and visiting a lot of places. Times flew like anything and we were at the first Stop – “Softwares”

Softwares (Wikipedia Says)– Computer software, or just software, is a collection of computer programs and related data that provide the instructions telling a computer what to do and how to do it. We can also say software refers to one or more computer programs and data held in the storage of the computer for some purposes. In other words software is a set of programs, procedures, algorithms and its documentation. Program software performs the function of the program it implements, either by directly providing instructions to the computer hardware or by serving as input to another piece of software.

Hey I am already using this!

Of course you are – every other application you are using on your personal computer is driven by a program at the back. Even when you are reading this, you are actually making use of a screen that is working for you and whose pixels are also showing characters and graphics with a use of programs.

Whats the big deal?

Have you ever thought, would not that have been a great thing if I did not have to buy my personal computer and what ever I wanted to read could have been in front of me always! May be on my TV or  appearing on the wall in front of me.. cool isn’t it.

What if you did not have to buy the operating system to run your Internet explorer just to check your mail. Or, did not have to even buy a PC altogether and could just asked someone for a PC and he delivers your machine at your door step with a nominal fee?

Looking beyond

Well yes, there are renting agencies which are doing this business for a while now, call them – Internet Café Owners. But if, you want your software to reach the world you will have to sell it out to all the Café owners and let them have it on their machines. Yes. That’s a good idea. But, hey wait a second – do you think your software is going to reach maximum people? Do you think the Café owners will advertize for you? – Well, no untill you give them a fat check to do so.

So what should I do then? Why not let your software float on the web – introduce your software through electronic media and let the people know about it. Reach out to the maximum people you can and help them understand why is it important to them. Great? Not yet. Didn’t I forgot to think about the cost factor. My software is no small software of few lines of code. It depends on a number of dependable items like Hardware, Plugins, infrastructure and to add to keep my software running I also need a dedicated team to work 24×7 to ensure the backbone of my software is never broken.

Now I am thinking of a place where all of my OS, Hardware, team requirements are well taken of and I am sure there will be other people like me would have the same problem – Customers come in various sizes and shapes!

And so I look in the sky to talk to God to help me with a brilliant idea. Yes, of course though I can’t see him, I see some “Clouds” hanging here and there.

Resolution

Software as a service referred to as “On demand software,” is software deployed over the internet and/or is deployed to run in DMZ. With SaaS, a provider licenses an application to customers either as a service on demand, through a subscription, in a “pay-as-you-go” model, or (increasingly) at no charge when there is opportunity to generate revenue from streams other than the user, such as from advertisement or user list sales. This approach to application delivery is part of the utility computing model where all of the technology is over the Internet as a service.

Advantages

  • Accessible from anywhere with an internet connection
  • No local server installation
  • Pay per use or subscription based payment methods
  • Rapid scalability
  • System maintenance (backup, updates, security, etc) often included in service
    • Possible security improvements, although users with high security requirements (e.g., large corporations) may find SaaS a security concern
  • Reliability
  • Reduced time to market

I was just wondering about all these things and then suddenly an announcement grabbed my attention – “We will now be heading to our next stop – Traditional Harwares“. Mr. Penguin was very happy than was I to the next station. He told me how he used to be part of this hill station from long back. He also told me how he used to party with the other x86 neighbours and famous intel microprocessors at the new station we were going to visit. It was his favourite place to be and the stories were interesting. “Hey did you hear that”, Mr. Penguin said.

I have seen this place before
And I peeked out of the Window to see large Mainframe industries all arround the place with millions of people staring into the “Green Screen Terminals” to mange them. I think we have just reached  – “Traditional Hardwares”.

So why am I here?

While Mr. penguin was looking for someone from his neighbourhood, I decided to take a walk into this whole set of people maintaining large infrastructure of machines. I could also see some people bringing in thousands of machines and memory sticks to support a new company that had recently entered into the software arena and was requiring theinfrastructure from this town.

For each and every Company they were maintaining, large computing power houses and found a lot of people trying to fix and load required softwares replicas on them.

I wondered when every one was needing the same softwares to work on why don’t they share it, like I share my car with my neighbour to same office and share on the fuel price. Well, though I do understand its just not that simple as said. Why did I had to take this route to clouds? I think I got a fair answer here – existence of clouds have a reason and so I am happened to see all these people hard wiring for their own cause even for running something small of their own.

Demand and Supply problem

To meet the ever-changing and growing market of demand for better hosting, software and hardware platforms and continued competition to lower down the cost of maintaining them, we need to think of some supply management which is effective, green, saves cost, save energy, and save the hassle of maintaining such a large infrastructure with so many skilled labours who are ready to ask for more every 6 months ;) .

God save IT! Looked up and this time again, there were only small patch of cloud over my head. I was about to say hello to those small creature however… a voice broke from the crowd – “Mr. Traveller, we are leaving for the next metro station. Hurry up!”. This was Mr. penguin, waving his hand to me and standing on the door.

Okay. The next moment I was discussing traditional hardware issue over tea with Mr. Penguin in his compartment when he told me, from the next Station – Virtualization, we will be travelling by Air, as the it’s a bit Cloudy ahead.

Time flew like anything and before we could have finished out our second cup, we were at Virtualization.

We decided to take our quick discussion through a walk way, which was near by. Mr. penguin, showed me a new world there. I was quite amazed to see a lot of Virtualized things in this new town. Virtual Servers, Virtual LANs people getting multiple platforms to work on while using the shared hardware. Hey, its is really cool, so doesn’t that means people may get new platforms on demand on the hardware which is compatible enough and can scale easily. So the cost of installing your own hardware decreases tremendously. Imagine a large IT Park having a number of incubation centers within it and helping small companies to rent out as many Development Machines, Area, Parking Lots they want for their employ, and just paying the nominal fee for using that place, instead of owning it – could be really great for start ups.

Definition – Virtualization (Wikipedia Says)

Hardware virtualization or platform virtualization refers to the creation of a virtual machines that acts like a real computer with an operating system. Software executed on these virtual machines are separated from the underlying hardware resources. For example, a computer that is running Microsoft Windows may host a virtual machine that looks like a computer with Mac OS X operating system. Subsequently, Mac OS X-based software can be run on that virtual machine.

Types: Hardware, Software, Network, Storage, Data and Memory

Market Demands

With Virtualization it is also possible to provide more machines as on demand within minutes and provision them to run as required. You may be able to let the client (user) set up his development bed within minutes which involved multiple machines and LAN connectivity. It becomes transparent to the client as far as functionality is concerned that if he is running his software on concrete or virtualized hardware.

I think the best example would be like you are in absolute need of a server m/c for an hour but by the time you will go through the process of companies supply chain management, raising tickets and ordering. Your dedicated hour would have been over. And to add to the irony, you paid the complete price of the hardware which is of no use after an hour. So virtual servers are of help here, create Virtual servers within minutes use them for an hour, and discard them – and to follow, you paid almost 80% less in comparison.

Tools

So how can I implement virtualization? There are so many tools available in the market today:

  1. VMWare
  2. Virtual Box
  3. Hyper-V
  4. Citrix – ESXi (Though more inclined to clouds) and many more.

Say install Virtual box on your Windows7 m/c and load a Linux mage into the Virtual Box. Once done, you will be able to start your Virtual Machine VM (Linux) in Windows. More or less, it’s the similar stuff for other vendors as in case of this oracle product.

Going Hand in Hand!

So is it something that is cloud composed of primarily – Virtualization? Is that the master key to shared services all over the globe both in terms of hardware and software? Are we there? – I am just so excited to know all these answers now. However, there is more to it. Let’s not jump to the last chapter of the novel to spoil our journey. For now lets say “Yes” to all the answers for the moment but I would still say there have always been some differences and may be Cloud is not about the hardware and software but about the end user who uses it. So, in simple terms, its user centric and not hardware or software centric. We will later discuss more on type of Cloud categories which will clear the mist further. To name a few, Infrastructure As A Service (IaaS), Platform As A Service (PaaS) and Software As A Service(SaaS).

The announcement – “This is the last and final Boarding Call for Mr. Traveller for flight to Grid Computing…”, just caught my ears and I was found running to the boarding counter to show my boarding pass – “Wooh, I was just about to miss this flight”. I had just grabbed the window seat and bucked up the belt to hear a familiar voice from the back, “Welcome aboard, I thought you would miss this fun!”. “Oh geat! Mr. Penguin, good to see you again. I had almost lost this informative company of yours.” – Said I.

I was surprised to see that the new stations were not traditional stations, but were simply few altitudes through which we could see the same old towns from way high and could also look at the bigger picture.

When we reached arround 10000 Feet above Virtualization, I could see multiple Virtualization Towns  and many Traditional Hardware and Networking Towns below. These towns were connected to each other and were actually working together to be look as a grids of machines both Concrete and Virtualized for a common cause of providing large infrastructure and scalable environments to those who needed it. But yes, they were centric enough to target multiple cause for multiple clients and delivering powerful computing. The Myst was still there but was getting dispersed. Collective Computing to give more computing power was a great idea in networking.

Grid Computing (Wikipedia Says…)

Grid computing is a term referring to the combination of computer resources from multiple administrative domains to reach a common goal. The grid can be thought of as a distributed system with non-interactive workloads that involve a large number of files. What distinguishes grid computing from conventional high performance computing systems such as cluster computing is that grids tend to be more loosely coupled, heterogeneous, and geographically dispersed. Although a grid can be dedicated to a specialized application, it is more common that a single grid will be used for a variety of different purposes. Grids are often constructed with the aid of general-purpose grid software libraries known as middleware

Remember it is easier to write programs can run on parallel computers (Grid Systems) than to write a program for a supercomputer having dependency on a specialized Operating system and hardware (if any). Grid Computing or Parallel Processing Computer on the other hand, have different hardware resources like CPU, disks, warehouses,  Ethernet cards etc. and connected to one another via LANs or MANs to deliver high computing power.

“Please stick to your seats and keep your belts fastened as we are expecting some turbulence soon…” – Well I was kind of expecting it because we were entering the Clouds of large capacities. I could co-relate this turbulence to the one in my mind since I had started the journey to know what is cloud computing and why do I need this? – I was getting answers to my questions one after another and the turbulence too was decreasing both in and out!

As soon as we were arround 25000 feet, I could see the sunlight passing through a bunch of clouds and reminded me of the time I was looking at the sky from the town named “Softwares”. This was beautiful and at the same time quite informative. I was at my last stopage and was looking though the clouds, I was now not able to see any towns below, all I could see was large set of vaporised content floating in the sky ready to sprinkle rain in different parts of the country – probably who needed it (as per ecology).

And then I turned to Mr. Penguin, and saw him smiling. I got close to him and asked him, tell me about what you see from here … and then he explained me Clouds like a charm.

What is Cloud? – (Wikipedia Says)

Cloud computing is computation, software, data access, and storage services that do not require end-user knowledge of the physical location and configuration of the system that delivers the services. Parallels to this concept can be drawn with the electricity grid where end-users consume power resources without any necessary understanding of the component devices in the grid required to provide the service.

Cloud computing is a natural evolution of the widespread adoption of virtualization, service-oriented architecture, autonomic and utility computing. Details are abstracted from end-users, who no longer have need for expertise in, or control over, the technology infrastructure “in the cloud” that supports them.

Re-Defining it my way!

Cloud Computing or more specific clouds, are just a mechanism to delivering services to the end user as required with or without the use of actual virtualization of hardware/software/storage resource. In fact,  virtualization can be delivered via mechanisms other than cloud computing as well and users can still benefit from it.

So for me it’s a technological advancement in the field of computing which is service-based, scalable and elastic, shared, metered by use, and uses internet technologies.

Why is it required?

I remember I read a great example somewhere – Just imagine a simple use case where you wanted to deploy a web application which you have no idea what kinds of loads will be facing at any given time say facebook or orkut. Today you’d want to write it in a manner that will leverage the most of the hardware and then deploy your solution in a horizontally scalable manner – Server clustering may be. To save cost and to be able to handle a surge (or multiple surges) you’d want to put it on something like Amazon’s EC2 and set up automatic scaling.

The benefit you get is the service is mature enough, cost effective and helpful and then you can consider dedicated hardware to handle most of the load. Then when you experience spikes, you can offload to the cloud for expansion.

“Hmm… makes sense to me”, Said I.

Type of clouds

“So do you see those different clouds in there?”, said Mr. Penguin. “ Yes I see them, what do they tell you ?” – They are smaller, and may be specific to a town or may be specific to the street itself.

Yes, there could be different cloud implementations:

Public cloud – resources are dynamically provisioned on a fine-grained, self-service basis over the Internet, via web applications or may be via web services, from an off-site third-party provider who bills on a fine-grained utility computing basis.

Private Clouds – that emulate cloud computing on private network

Hybrid Clouds – Private and Public mix clouds. With the proliferation of cloud computing (both private and public) and the fact that IT departments must also deliver services via traditional, in-house methods, the newest catch-phrase has become hybrid cloud computing.

Combined Clouds – Two clouds that have been joined together are more correctly called a “combined cloud”. A combined cloud environment consisting of multiple internal and/or external providers”will be typical for most enterprises.

Hurdles

Some of the Hurdles in implementing Clouds are as follows which are usually taken into consideration:

  1. Service Availability
  2. Data Deadlocks
  3. Confidentiality of Data and Auditing
  4. Data Transfer Issues
  5. Performance unpredictability
  6. Scalable Storage
  7. Large Scale distributed System Issues (Code issues/bugs)
  8. Licensing.

What’s Next

Next prime area to focus are Legal and Compliance issues for now. But one thing for sure – the Cloud Computing is yet to be leveraged and will be the technology of the future.

Hope you enjoyed the journey with me. Next time I will take you to another place, another thought, another technology and just another complex buzz words made easy to a layman.

Little Secret Agents

We spun new ideas!

Nothing By The Book

because, life.

Resonner's Blog

~●I walk on the sand washed by the waves,guided by no footsteps. Whether I leave any footprints or not, I am content that, I had the courage to tread the path I set my heart on.●~

A Wilderness of Words

a good place to get lost

Karen Alma

What I think about. Things that happen to me. Stuff I like. And other things.

Steve Blank

Entrepreneurship and Innovation

Matt on Not-WordPress

Stuff and things.

Coco J. Ginger Says

Poems and stories of love & heartbreak.

David Cummings on Startups

Over 2,500 posts on entrepreneurship and startups

%d bloggers like this: