Friday, April 29, 2011

Cloud computing as the Next Big Thing (Part 2 of 2)

This blog has a new home:
http://selectioneffect.info/blog/programming/cloud-computing-as-the-next-big-thing-part-2-of-2/

The fastest growing market these days are tablet computers. Although there have been tablet-like devices for many years now, the iPad has really opened the way for other manufacturers. 

Consumers have seen first hand that a hand held device the size of an Ebook reader can also be a general purpose browsing, typing, dictation taking and network enabled computer.

There are thousands of Apple Store applications, which can work on the iPad, and they can do anything from entertain you with a puzzle game to planning your business schedules. This is an important fact to recognize: the applications available for tablets are both for personal entertainment, and for serious business use.

The iPhone is a device that is technically just as capable as the iPad; it just has a different form factor. Just as many apps are available for the iPhone as for the iPad, if not more.

The iPhone and iPad have paved the way for serious business use of the first really capable smart phones. Sure, there were the Blackberry devices, and they’re still around, but they didn’t have the amazing diversity of applications, nor did they have the force of thousands of software developers competing to deliver great applications to an eager, yet fussy, market.

A market with money.

Most iPhone and iPad applications are not free, and the low cost per application makes sure that sales figures remain high, even through a Global Financial Crisis.

The businessperson is spoilt for choice with a plethora of applications for every conceivable business need. And when the day is over, of waiting for the plane, commuting, or when the kids borrow the phone, there are games galore

Of course, Apple isn’t the only player in the game.

The Android platform specification has seen the smart mobile phone and the consumer tablet industries grow to competitive highs, and that means money for everyone.

The consumer benefits from the competition and the ease by which new features and applications can be acquired.

The software developer benefits from the high volume sales of low priced applications, and from a skills demand in mobile development like never before. The Apple Store, Android Market, or the Amazon Android App Store does all of the usual marketing and selling.

At this point, it seems that developing for the Android platform is a smarter choice, as it uses the Java platform, prospective software developers can leverage so existing skills, and any new skills learned are transportable to web development as well.

The marketplace providers profit from the efforts of developers by taking a share of the application sales. They provide a valuable marketing service, and a consumer transaction-processing platform, which is well worth the money to the developer.

The Android device manufacturers profit from consumer demand for devices that are compatible with the superbly empowering Android application ecosystem. Apple has monolithic control over their platform, but the same principles apply to them.

The power of today’s mobile devices, coupled with the immense choice of high applications, give the consumer a level of lifestyle comfort and sophistication unrivalled by any point in history.

Now connect that with the cloud.

Cloud computing programming skills, together with modern mobile development skills, are in extremely high demand, and that demand is only increasing.

The reason for that is clear: the cloud solves many computational and storage problems faced by start-up companies or even existing small to medium companies. The cloud will take care of security, database maintenance, storage capacity, processing power and network connectivity needs.

Today’s developer cannot go wrong with learning Java, UML fundamentals, and cloud computing programming concepts.

Wednesday, April 27, 2011

Cloud computing as the Next Big Thing (Part 1 of 2)


This blog has a new home:
http://selectioneffect.info/blog/programming/cloud-computing-as-the-next-big-thing-part-1-of-2/

Cloud computing provides many benefits to businesses with heavy computational needs. 


The public in general can also benefit from centralized computing, IaaS (Infrastructure as a Service) and the sheer power that heavy-weight computational power and massive redundant storage brings with it.

People always want to know what the "Next Big Thing" is. As it turns out, the Next Big Thing is already here, and it's been here for a while. The key is to make use of it, so that its potential as the Next Big Thing can be realised. Society in general will benefit from a new computing revolution. The potential impact of cloud computing cannot be overstated, and the benefits to daily life, as well as progress, is immense.

As is pointed out in this article about the cloud computing benefits for businesses, we've had something like cloud computing for many years now. A business should make use of the infrastructure that's available for rent. It just makes sense. Computing power is the most important asset that a business can have. Even a good list of contacts is unimportant, because you can actually just generate leads and marketing if you have enough computing power.

With the extant availability of Internet connectivity in most homes, the public can now use the cloud for storage, processing, and interacting. The cloud providers have met general computing needs with unexpected ease. For example: Gmail has become the email platform of choice for the individual user, and even corporate entities have switched to it. The old, outdated and singularly unfriendly methods of "Exchange-ing" emails and contacts are a thing of the past.

In the next article, I'll explore the connection that the cloud has with mobile devices, and why that really makes cloud computing the Next Big Thing.

In this article, the focus is on cloud computing itself. What is it? Where does it come from? Where can I get it?

All are valid questions, but all easy to answer.

Google, Amazon, Yahoo! and IBM are the leading providers of cloud computing services, which include IaaS (Infrastructure as a Service), PaaS (Platform) and SaaS (Software). Using this, the user of the cloud is effectively consuming computer resources on a rental basis. Of course, Gmail is free to the private consumer, as is Google Documents, which is the Word Processor/Spreadsheet/Database suite that's replaced all previous "Office" offerings.

The cloud, in essence, is a vast array of computers, with massive storage networks connected to it, which can execute tasks in parallel and store data across a distributed, fail-safe array of devices. It's like a supercomputer that consists of many, many computing nodes, spread out over a wide geographic area, connected in fail-proof ways, and accessed over the public Internet, which has its own fail-safe measures in place.

From a programmer's perspective, cloud programming is a dream come true. Every cloud provider has an API that is reasonably similar, so that adapting from one cloud to the other doesn't involve a big retraining exercise. 


The point of the cloud is to provide computing needs, and that necessitates providing an infrastructure that a programmer can access and utilise effectively. As such, a cloud platform will include scheduling, computing, communication and storage APIs as standard. None of the normal boilerplate code that normal applications need is relevant on a cloud, and many of the design decisions, which typically make of break a program from the start, need not be made. 


Clouds are stable and secure. Application security is virtually guaranteed by design. A lot more programming time can be spent on what the application is supposed to do, and less time on how it does it. Alternatively, less time have to be spent on a cloud application to get the same or better functionality, usability and functionality than on a legacy application.

All of these things make for a much better experience as far as the end consumer is concerned.

Wednesday, April 13, 2011

Is programming a worthwhile occupation?

This blog has a new home:
http://selectioneffect.info/blog/programming/is-programming-a-worthwhile-occupation/

There's an old hacker adage that goes: "After three days without programming, life becomes meaningless". 


This pretty much sums up why people become programmers in the first place, and why most of them stay programmers.  There's a significant anti-management mentality among programmers, and really among IT engineers/technicians in general. 

It's felt that doing is more important, because it actually achieves something, and you can make a visible difference in the world around you. Management is just an obstacle to getting things done, because they never understand the technological concepts involved, and always choose a shortsighted economically driven path, instead of doing things "the right way".

Some people become managers, and others stay programmers. Is the one better than the other?

From a financial point of view, the manager will always have a higher salary. The programmer, while perceiving himself as being smarter and more educated than the manager, will always get paid less.

The only way for a programmer to overcome this is to become a businessperson as well, like Bill Gates, Mark Zuckerberg, or on a smaller scale like any of the successful iPhone game developers.

Doing this will mean that you don't have to work for anyone, and everything you do will be directly beneficial to your own well-being.

So programming can lead to financial and personal freedom, if coupled with some business sense.

The act of programming, meaning the actual process and the problem solving aspect creates a sense of satisfaction for the programmer. This is no different from the satisfaction a World of Warcraft player gets when killing a difficult enemy, however. The reward you gain from programming as an occupation is the same immaterial reward that you will get from playing a good computer game or even reading a nice book or watching a good movie.

Realising this, many programmers say that it's good to also get paid for doing what you love. 

Sure, this is true, but what's the point? Programming becomes a major drag if that's what you do for a living, because now other people and their viewpoints of life, money and their level of understanding of a problem can dictate how you have to program, how you have to solve a problem, and even if you should actually even work on a problem in the first place.

Programming as an occupation is just like anything else: if that's what you want to do to pay the bills, then do so. If you can find a way to make that enjoyable for yourself, and dull the pain of having to go to work every day - and freelance contracting is not significantly different - then, by all means, do it.

One day you will have a lot of experience in programming and with people, and you can then decide to expand your horizons into business ventures, and become free from the daily grind. Free from the machine, if you will.

In this respect at least, programming is ahead of the curve.

Wednesday, April 6, 2011

Programming as a Science

This blog has a new home:
http://selectioneffect.info/blog/programming/programming-as-a-science/

Programmers often present programming as an art to newcomers. Donald Knuth’s voluminous tomes are called “The Art of Programming, Vol. n”. Some programmers believe they’re writing a sort of poem, a thing of beauty. 

Others believe that, while it requires intelligence to program well, the great programmers produce works of sublime elegance, works of art.

Science is not an art form, and programming is a science. You may appreciate beauty in an elegant solution to a problem, and you may experience a sense of wonder at the simplicity of a solution to a very complicated problem, but those emotions are a by-product of the final result. It is something that can only be experienced after the fact. To actually bring about the reality of a well-written program requires something more than the free mindset of an artist.

It requires science.

No-one is going to trust a bridge built by hippies, dear reader.

Only an engineer can design and build a structurally sound, defect free, fault-tolerant, effective and secure structure such as a bridge, or a high rise building.

What kind of programmer would you trust?

If you think: a good programmer is one who can see beyond the cold, technical aspects of math, logic, and sound engineering principles, then you’re dead wrong. A good programmer is not one of the “pragmatic programming” breed, in which disastrous short-cuts and penny-wise-but-pount-foolishness are the prime results, but those are all done under the façade of “customer satisfaction”, “quick turnaround” and, most insidious of all, “business realities”.

Utter hogwash!

Nothing is so important that a two hour job to implement a proper, potentially extensible design should be avoided in favor of a rush job of splicing a solution into an existing system, creating internal and external dependencies in otherwise modular code.

All programming must result in extensible code. By following some basic best practice rules, a programmer can promote loose coupling and tight cohesion, thereby ensuring a future of easy and predictable modification to the code that is written today.

Add some automated integration and regression testing to this philosophy, and you will be able to handle most client requirements with ease.

There is an entire branch of science called “computer science”, which is a growing field of engineering studies that uses mathematics, rigorous testing, the scientific method, information theory, physics, even quantum mechanics.

Please, don’t write a poem, or a jarring catchphrase in the middle of a mathematically sound equation.

Use the knowledge and tools available to you, and grow out of the notion that programming is an art.

You can start by learning the UML. For a good overview of UML, see http://umlbase.com/overview-of-uml over at UMLBase.