Monday, December 22, 2008

CMMI or Agile

I currently work in a CMMI Level 3 environment, have worked in Agile environments, and continuously experiment and apply agile techniques that work.  I was happy to see that SEI has published an initial document last month, "CMMI or Agile: Why Not Embrace Both!", that addresses the diverging software engineering viewpoints that has festered in the past 5-years.  This article draws a line in the sand and makes the first step towards legitimizing  the pros/cons and benefits of both approaches.  This is a must read article for any serious CMMI or Agile manager, practitioner, architects, developers, software engineer, coder, programmer, or anyone that is affected by CMMI and Agile techniques.

There are elements of CMMI which I think are necessary for software projects and there are approaches in Agile that solve real world software engineering problems.  This initial SEI published article calls on both the CMMI zealots and Agile practitioners (agilistas) to unite and resolve their differences in order to maintain a healthy software engineering discipline.

I exist in the middle of this software engineering culture clash.  Now, is the time for unity, change, and forward progress in both the CMMI and Agile camps to create something better for the future of software engineering.  It is time to roll up the sleeves and have a meeting of the minds.  We are all on the same team, it is just a matter of accepting this fact and improving everything we do.

Saturday, November 29, 2008

Netbooks and portability

I purchased my first Netbook. After reviewing the various types, I settled on the Acer Aspire One Linux version which has no moving parts. Hard drives are SSD and flash memory based. Based on my initial first day of using it, I will have to say that it lives up to all that is promised for this new form factor.

I like the portability, features, and performance. It boots up in about 5 seconds, and takes about another 10 seconds to initialize my WiFi connection. Carrying around my netbook is like carrying around one of those DayTimer organizers. Remember those days?

For the portability factor, Netbooks are definitely useful. Carrying around a 2 pound Netbook vice a 5 pound notebook computer (MacBook or PC) is a significant usability enhancement. We will see how it holds up. Initially though, having Linux, Firefox, and OpenOffice in a very portable form factor is actually pretty cool.

I am impressed with the Acer Aspire One's looks, esthetics, fit, finish, and usability. The keyboard is almost full size which is surprising and feels good. I am using it now to write this blog entry. My first impression is that this is a very high quality product that just works. Reminds me of my MacBook.

Saturday, October 25, 2008

Visualization of the 2009 U.S. National Budget

Given that it is an election year, our economy is not doing well, and the federal budget is in the red, this visualization, WallStats Death and Taxes 2009, that summarizes the entire U.S. Federal budget is really impressive. It is an example of a great visualization for a very complex set of information. WallStats.com provides this visualzation and you can buy a poster of it. I really like the online Flash interactive visualization.

Sunday, October 19, 2008

Software Tools for a Third Grader

My son is in third grade. He started getting into building virtual models in the Sims game on the Wii and RollerCoaster Tycoon on the PC in first and second grade. I wish I had this stuff when I was a kid. I got into building models (the old fashion way with plastic and epoxy glue) around the same age. Times have certainly changed.

Now back to the virtual modeling. These virtual simulation games are a creative, entertainment, and learning outlet for him. I noticed that he is starting to get to a point in his young developing mind where creating more complex models, learning about science, math, and other things in life is consuming his curiosity. So I thought to myself, why not get him interested in beginning software development and see if he would be interested in that. I found this really good beginning programming language, Scratch, that was developed out of MIT and is targeted for kids that are at least 8-years old.

Scratch is a programming language that makes it easy to create your own interactive stories, animations, games, music, and art -- and share your creations on the web. Scratch is designed to help young people (ages 8 and up) develop 21st century learning skills. As they create Scratch projects, young people learn important mathematical and computational ideas, while also gaining a deeper understanding of the process of design

I test drove Scratch and then introduced my son to Scratch. It is like building software by using a Lego building blocks metaphor. Visually, you actually put pieces of software building blocks together that have shapes and colors. The shapes and colors represent a specific type of software component. (i.e., a looping construct is shaped similar to the letter 'C' where you place the loop's internal logic within the bounds of the 'C' shape.).

The Scratch tool is available for free and the associated web site allows you to publish your creations so they can be shared with anyone that has web access. Anyway, for any kid or young person that is interested in building models (physical or virtual), Scratch is another tool that may be of use. It works on Windows and the Mac. The most interesting aspect of Scratch is that it supports and encourages development of 21st century skills. It is not just for kids but for anyone that is interested in a new paradigm for developing software. It must be great to be a kid today. The best I can do is think like a kid and always keep that child-like curiosity. Everyone wants to be a kid at heart.

Monday, September 01, 2008

Google Chrome

I get the feeling that the gravity around Google is increasing in 2008. With everything Google has done in 2008, it just announced Chrome, A fresh take on the browser. There is a comic that provides an explanation of what Google Chrome is and why it was developed.

Google Chrome has the potential to be extremely disruptive to the web browser and web application space. It is not based on Mozilla and is a unique fresh start for a web browser that is optimized for Javascript. It uses a Javascript virtual machine engine called V8, is multi-process/multithreaded, implements virtualization internally, optimized with Gears, and uses the WebKit rendering engine. The comic explains it all. For best level of detail, reading the comic is highly recommended.

They are releasing the new browser to the world tomorrow as open source. Tomorrow will be interesting. I plan to download Chrome and give it's Javascript V8 rendering engine a test drive.

Thursday, August 21, 2008

Google Protocol Buffers - Kind of Like the Glue for Data Streams in the Cloud

This is something new and interesting from Google, Protocol Buffers. Here is the overview of what this technology is:

Protocol buffers are Google's language-neutral, platform-neutral, extensible mechanism for serializing structured data – think XML, but smaller, faster, and simpler. You define how you want your data to be structured once, then you can use special generated source code to easily write and read your structured data to and from a variety of data streams and using a variety of languages – Java, C++, or Python.

For more information read the Protocol Buffers Overview page. Why not just use XML? Here are some compelling reasons to consider Protocol Buffers instead of XML:

Protocol buffers have many advantages over XML for serializing structured data. Protocol buffers:

  • are simpler
  • are 3 to 10 times smaller
  • are 20 to 100 times faster
  • are less ambiguous
  • generate data access classes that are easier to use programmatically
The features I like are simpler, smaller, faster, less ambigous and easier to use. I am sold. Now the real question is, does this stuff work in the real world and can it be applied in a proof of concept or experiment? That is something that is to be determined.

This stuff does look interesting. For alternative viewpoints here is one from InfoQ, Google Introduces Binary Encoding Format: Protocol Buffers, which has a lot of good links to various blogs and responses to Google's PBs. Facebook's Thrift is a competing technology.

Persistent Cloud Storage from Amazon

Amazon has just raised the bar by creating Amazon Elastic Block Store or EBS service. This basically is persistent storage for Amazon's EC2. The cloud computing landscape is getting better every month.

Amazon Elastic Block Store (EBS) provides block level storage volumes for use with Amazon EC2 instances. Amazon EBS volumes are off-instance storage that persists independently from the life of an instance. This opens up a new frontier for low-cost and scalable cloud computing storage services.

Saturday, July 05, 2008

The Cloud

If you have been under a rock for the past few years than you probably have not heard of Cloud Computing. I have had the opportunity to live in the cloud for the past few years as an experiment while in graduate school. I started using Google Docs when it was in its infancy back in 2006 and have watched it mature nicely into a very capable software-as-a-service with offline capabilities. I have seen it grow up and become a toddler that now knows how to walk on the verge of learning to run.

In this same timeframe, Amazon Web Services has evolved into Elastic Compute Cloud (EC2), Apple announced its MobileMe service which is replacing its popular .Mac service, and Google launched Sites and AppEngine this year. What all these new services have in common is that they are taking advantage of the cloud. All the while this was all happening, virtualization the foundation on which a lot of the cloud utilizes and leverages, has evolved significantly and virtual private server (VPS) services (i.e., Tektonic.net) have evolved into very capable offerings.

The most interesting aspect of cloud computing is that it has evolved very rapidly as a disruptive force. This type of computing has opened up the market for the current generation of smartphones, cloud devices (i.e., internet tablets, ultra-mobile PCs using Linux, and more).

Cloud computing innovation in 2008 has made me rethink my own personal computing architecture at home. I have several Linux servers and devices providing my server requirements for the past ten years. Now, it is gotten to the point where maintaining my home infrastructure is becoming a burden as the number of devices proliferates. There are HD set top boxes, streaming video servers (Sony Location Free, NetFlix, iTunes, YouTube), PSP, PlayStation3, iPods, Wii, GameCube, etc... and the future will only bring more internet capable devices into the household.

The Cloud is looking better and better as the future architecture.

Friday, June 20, 2008

Firefox 3.0

Ok, if you are not already using Firefox 3.0, you should. I downloaded it on 'download day' and have installed over my previous Firefox 2.0 installation on Windows and Mac OS X. Performance on both OSs is noticeably faster than 2.0 and all my Add-Ons work. All I can say is wow! Especially the noticeable improvements in performance of Google Docs and other web sites that make extensive use of AJAX.

Tuesday, April 22, 2008

Google Docs now with Gears!

Ok, this is what I have really been waiting for in the past few years. I started Using Google Docs as soon as it was released back in 2006. Google has just updated it and I can now take my documents offline with the integrated Gears technology. From what I understand, Google is working on the spreadsheets and presentations.

I tested the offline documents capability a few days ago and it works as advertised. I am entirely impressed. I can now work on my Google Docs documents within Firefox offline. When I reconnect, my changes are now automatically resychronized with Google Docs servers.

Sunday, April 20, 2008

Search Engine Optimization (SEO)

This is a topic that I had to research recently for a class I am taking in graduate school. Search Engine Optimization (SEO) is a technique for increasing the traffic to a web site from search engines. (e.g., Google, Yahoo!) In a nutshell, SEO involves tagging, designing web site content using keywords and metadata (information about data), and designing web site structure for efficient accessibility by search engines algorithms and web crawlers to find information more effectively.

The desired goal of SEO is to attain a higher ranking for a specific web site that results in the site showing up in the first page or initial few pages where most users tend to click on a resulting link before moving onto another search or simply abandoning the result set. This in effect makes the web site appear to be more relevant to the user in the search result listing. The reason why search result set relevance and position is critical is because of the observed behavior where most web users tend to use the first page of a search result listing most of the time. Subsequent pages in the search result listing are used by a much lower percent of web users as the search engines become more efficient due to SEO techniques and continual improvements to search engine algorithms.

Search engine optimization means ensuring that your Web pages or site is accessible to search engines and are designed in ways that help improve the chances they will be found. ("Intro to SEO")

Some decent simple SEO Examples are described here. There are many techniques that make your web site "SEO Friendly". One simple technique is to choose a SEO Friendly Domain name. Let' say you have a web site that contains SEO information. If your site is located at mysite.com, it is not a very good "SEO friendly" domain since it is difficult for a search engine to figure out that your site contains SEO information.

On the other hand, if you named your site search-engine-optimization-info.com it would be considered more "SEO friendly" by its name alone. Using this domain name any search engine can figure out from the domain name alone that your site probably has SEO related content. (e.g., cars.com, salesforce.com)

According to Google, SEO is an abbreviation for "search engine optimizer." Many SEOs and other agencies and consultants provide useful services for website owners, from writing copy to giving advice on site architecture and helping to find relevant directories to which a site can be submitted. What is an SEO? Google's definition. Google does not have any relationships iwth SEO organizations and does not make recommendations. However, they do provide tips on choosing an SEO and information on what will make a search engine drop your site from their search results entirely

Additionally, Google provides a wealth of information about its search results, improving site rankings, and tips that help Google's crawlers find your web information more efficiently and effectively. With Google representing the majority of web search today, approximately 67% as of March 2008 and growing, it is wise to know how to optimize your web sites for Google web crawlers.

I also found some really decent material on SEO techniques here.

Sunday, April 06, 2008

The Unexpected for 2008

As anticipated, Google released the unexpected a few weeks ago. It is called Google Sites. If you need to create a web portal for sharing information amongst a team, classmates, workmates, social mates, friend, or family, then Google Sites may be for you. Here is the overview of Sites:

"Google Sites is the easiest way to make information accessible to people who need quick, up-to-date access. People can work together on a Site to add file attachments, information from other Google applications (like Google Docs, Google Calendar, YouTube and Picasa), and new free-form content. Creating a site together is as easy as editing a document, and you always control who has access, whether it's just yourself, your team, or your whole organization. You can even publish Sites to the world. The Google Sites web application is accessible from any internet connected computer."

I have had a chance to play with Sites and it will brings "online everything" and cloud computing even closer to reality today. This is another disruptive event initiated by Google and will give everyone something to think about when it comes to collaborative sites and portals. If they can make this work with Gears and be taken off-line, then I think IBM, Microsoft, and Java based portals will have to re-think their respective strategic agendas.

Saturday, March 22, 2008

caGrid and caBIG uses open source Java technology

While working on a research project for graduate school, I serendipitously stumbled upon the cancer Biomedical Informatics Grid (caBIG). This is a massive bioinformatics initiative to connect the entire cancer community leveraging modern information technology (IT) to save precious time toward news discoveries in cancer research. The caBIG Essentials tutorial is a must. It is available as a an online interactive tutorial or presentation download.

caBIG uses open source technology to bring cancer research into the 21st century. It is intertwined into a grid middleware infrastructure, caGrid, which is an information grid for biomedical research. (Bioinformatics Journal article abot caGrid) The really interesting aspect of caBIG and caGrid is that it uses open source Java technology and UML to make this all work. It is a service oriented architecture (SOA) using Apache Tomcat, Axis, UML, BPEL, Hibernate, etc. providing open specifications to allow organizations to adopt or adapt its IT systems to be caBIG Compatible.

The caGrid concept initiative originated December 2003. (caGrid wiki with timeline graphic) The initial prototype was brought online in July 2004. The following two and half years of work resulting in the caGrid 1.0 officially going live in December 2006. caGrid 1.1 was released in September 2007. This cutting edge work is in progress and will change the way biomedical informatics research is peformed in the future.

caBIG is model driven. That means you must have object models UML in order to transform your IT resources into compatible caBIG applications and services. caBIG provides/maintains the specifications, tookits, and SDKs. The possibilities for biomedical research breakthroughs leveraging the emerging bioinformatics field are endless.

Javascript 2.0 goes OO

This is good news for the future. The emerging Javascript 2.0 specification brings object-orientation to Javascript. See this article, Web 2.0 Meet Javascript 2.0.

This is a welcome advancement in the continuing evolution of Web 2.0 capabilities and bringing rich "online everything" to reality.

Sunday, February 10, 2008

Non-existent Object Oriented User Interfaces in 2008

The state of object-oriented user-interface (OOUI) technology today is quite depressing. I bet that you can not name one that is useful and in production. After all the years since I stopped using OS/2 and its innovative WorkPlace Shell (WPS) OOUI, there is yet to be anything like it in Linux, Mac, Unix or any other mainstream operating system. The closest we have today is the Mac OS X which is really an intuitive graphical user-interface (GUI).

The heart of the IBM OS/2's WPS is the System Object Model or SOM. SOM is an object-oriented system level object model that is similar to Microsoft' Common Object Model (COM). The key difference is that SOM supports inheritance while COM does not. So, in esseence, COM is really an API with object-oriented like features. SOM is truly object-oriented.

Back to the OOUI discussion. WPS objects had the capability to inherit from parent classes or other base classes. One clear feature of WPS that I miss in the modern GUI/OS world of today are Shadows. There currently is not similar analogy to this in KDE/GNOME, Mac OS X, or Windows.

In WPS, Shadows objects that point to other objects. They are like shortcuts in Windows except that they inherited all their properties from SOM. The one thing that is still a major annoyance with shortcuts is when you move the file or directory to which your shortcuts is pointing. The shortcut is really a static pointer to some file, directory or application. When you do this you get the invalid shortcut problem in Windows. The same scenario occurs in KDE/GNOME and Mac OS X. You would figure that this problem would be resolved by now. But that is not the case. Instead there are tools, utilities, tips, workarounds, scripts or whatever to fix this very trivial issue.

In an OOUI like WPS, Shadows inherit from SOM the File, Directory, or Application object. So when the underlying File, Directory, or Application changes, your Shadow automatically knows this through inheritance. This is very simple, intuitive, and just works.

I recently read that the motions by the OS/2 community (yeah, it still exists) to request that IBM open source OS/2 has been denied by IBM due to several licensing and intellectual property reasons. OS/2 source was developed collaboratively by IBM and Microsoft. On the other hand, SOM is an IBM technology that was developed after IBM and Microsoft split in the early 1990s. I just read a new suggestion ("Should IBM' SOM/DSOM be open sourced?") that IBM explore open sourcing SOM which would give to the world an object model that is proven and can be a foundation for future OOUIs developed using a modern open source methodology.

A move by IBM that makes SOM available would inject a stimulus into the state of user-interface innovation which appears to have stagnated in the past 10-years. In general when you look at KDE/GNOME, Mac OS X, Windows, and any of the variants used in Unix, they all pretty much do the same thing. They are some form of implementation of the WIMP (window-icon-menu-pointer) paradigm that Xerox PARC created in the 1970s.

I think it is time that we focus on the OOUI again. It seems to have lost its lustre so far this decade. Maybe then things will get exciting in the UI space again. If a way to tie the OOUI to the web and make it some form of OOUI that is browser based, an object-oriented web interface (OOWI) if you will, that would allow it to work on any platform! Now that would be real progress. Then we can start talking about OOWIs! Oooh weee! Wishful thinking.

Sunday, February 03, 2008

Is This Disruptive Thinking?

The just announced Microsoft unsolicited offer to acquire Yahoo! for $44.6 billion is all over the news. Analysis of it cover the spectrum. One question I have is, "Is this disruptive thinking on Microsoft's part?". One thing is certain, the fear that Microsoft has of Google appears to be reaching a paranoia state. This is almost an admission from Microsoft that they did not get the software as a service (SaaS) right. SaaS appears to be outside of its 'core competencies' even though they have invested billions in the Internet.

This take over offer appears to be an admission by Microsoft that they have failed in their efforts to transform itself from a desktop Windows applications centric company to a software as a service company that leverages the web. This evolution has been an ongoing objective for the past 7-years with nothing but a 44% drop in stock value.

Google's revenues and influence on the web keep climbing while Microsoft and Yahoo keep declining. The combination of Microsoft and Yahoo will only yield about 20-30% of the web search market. Google currently owns about 60-65% of that market and keeps increasing its share.

Microsoft's achiles heel appears to be its goal to tie everything (software applications) to Windows. Yahoo and Google on the other hand are internet service based companies whose goals are to make all their services available to anyone, anywhere, using any operating system or web browser. "Is Microsft Saving Yahoo! Or is Yahoo! the Savior".

I think that a merged Microsoft and Yahoo! will encounter several cultural issues. They have vastly different cultures. The cultural intertia of both companies will be difficult to grasp and refocus into a convergence. It will be a daunting task.

There is a significant technology overlap that would cause a lot of internal disruption and team dynamics issues that are not evident on the surface. Look at how the TimeWarner-AOL deal turned out. These two distinct cultures clashed and resulted in the decline of AOL. Orchestrating a successful merger of Microsoft and Yahoo! will take some extremely well calculated and organic management decisions in a timely manner.

Google is not sitting still. It appears that the Microsoft merger's strategic goals are addressing the services for which Google is already successful. Knowing Google, they are moving on to the next thing whatever that is. We will find out sometime this year in the typical Google fashion, they will just drop it onto the world.

Basically, Microsoft is playing follow the leader. If Microsoft has failed so far in competing with Google, the merger will only complicate things for them because of all the internal reorganization that is required to make it successful. Overcoming the structural interia in Microsoft and Yahoo! is a complex strategic management undertaking. These internal tasks will be a distraction for the new combined Microsoft-Yahoo corporation. This distraction if not resolved quickly will give Google more time to innovate and pull further ahead. "Fitting the Pieces Together in an Internt Mega-Merger".

One thing is certain, 2008 is already full of suprises and it is only February!

Sunday, January 06, 2008

Happy New Year 2008

Happy New Year 2008!. Ok, it's early in the 2008 and it is always interesting to attempt to forecast out what may occur this year. Last year, I predicted that Google would do something unexpected and they did. Android was something entirely unexpected. Google Presentations was inevitable.

So what does 2008 bring? I think we will see Blu Ray become the HD standard as HD-DVD starts fading away. The reason for this is the Sony PS3. Additionally, just last week Warner Brothers announced that they will no longer support HD-DVD.

Apple Mac OS X will attain a 10-15% or greater market share of personal computers and start making headway in the business sector. This is based on the trend that has been 2007 for Apple.

Linux will become more significant as new devices like the Asus Eee PC, Nokia 810, and alternative ultra portable internet devices based on Linux start being used as the replacement of notebook computers. The mobility, power, inexpensive portable storage, solid state disks (SSDs), ubiqutous WiFi, and rich web applications are making this possible. These new devices have been disruptive in nature and are rapidly becoming the preferred devices.

Mozilla Firefox has attained a 35% market share globally according to Browser Statistics as of Nov 2007. The increase in Firefox usage will continue throughout 2008 and move in the 40% range at a minimum.

New phones using Google Android will redefine smartphones and the ultra portable internet devices market. This will be disruptive to the status quo wireless industry. It will be nice to be able to develop in Java for the Android based devices. What will be nicer is eventually a Firefox browser running on Android. If the services are right, 2008 will be the time for me to get into the smart phone market as user. Up to this point, the Apple iPhone is a step in the right direction. Based on all this, I think Microsoft's Windows Mobile will be the loser.

As they have done in the last few years, I think Google will do something unexpected again in 2008. Apple will refine its products and continue to make cool stuff that everyone wants. Sony will finally get its online 3-d immersive virtual reality business established and leverage the PSP and PS3. Microsoft's market share will continually take hits from all fronts. Java will continue to get larger because of Android, Apple, PS3, Blu-Ray, and just because there has been so much innovation and revival within the Java community in the past year.

Other than that, 2008 will be yet another exciting year of information technology innovation!