Tuesday, February 28, 2006

Passing of a Great Software Engineer and Architect

Today was a sad day for me. I just read in the latest Software Development Times (March 1, 2006) issue on page 5 that the creator of Symantec's Visual Cafe and founder of Java software company M7, Mansour Safai, died on 2/9/2006. He was 43. The cause of death was brain cancer.

Safai was a brilliant software engineer/architect. While working for Logitech he created the Multiscope debugger. At Symantec he was vice president and general manager of their Internet tools division. In 1997, he developed Visual Cafe which was a multiplatform RAD tool for writing, debugging and deploying Java applets and applications. I did get to research and evaluate Visual Cafe in the late 1990s. I thought that it was quite impressive. Java at the time was just not mature enough for a adoption at my organization.

If you are not familiar with these tools that Safai created, they are all highly capable and innovative. His later company, M7 developed NitroX which was a very nice tool for permitting real-time WYSIWYG development of Struts and JSF applications within the Eclipse environment. I had the opportunity of evaluating and trying out NitroX last year (2005). What NitroX does behind the scenes is quite impressive. M7 has a patent on the algrothims implemented for coordinating and managing all the XML files in Struts, JSF, Eclipse and Java development.

Mansour Safai played, guitar, and was an athlete. He played competetive tennis in high school and enjoyed skiiing according to the SDT article.

The passing of a great software engineer, architect, and human being at such an early age is a great loss to humanity. His soul has moved on to the next level of existence and I am sure that he will continue his work in another realm.

This morning I offered a moment of silence and prayer for the passing of this great software engineer and architect. This news will probably go unnoticed with all the events happening in our modern world. If you happen to read this blog, out of respect for Mansour Safai please reserve a brief moment today in your life to remember him.

Wednesday, February 22, 2006

The Octopiler

How do you get the current and future generation of computer scientists, software engineers and programmers productive on parallel programming techniques? The octopiler. The "Octopiler seeks to arm Cell programmers" was the first announcement that I have seen for simplifying the development of complex parallel programs for the new Cell chip. (See my Jan 2006 blog entry about the Cell chip, "The Cell Processor and the Future").

The complexity of the new Cell chip and the need to be able to write programs that take advantage of it was always known to be programming challenge. In most computer science curriculums, you just don't teach the current generation of students how to write 8-way parallel algorithms. IBM has come up with a solution to create a compiler called the Octopiler that uses some artificial intelligence to breakdown your program algorithms and optimize them for the Cell chip's eight special-purpose engines (SPE).

What is most interesting about this new technology is that in theory it will make programming for a parallel processing chip as simple as writing single threaded programs. At least that is the goal. Whether this is realized or not in research and practice is to be seen.

I predicted that the Cell chip would change many things in computer science in the near future. This new compiler technology is the first tangible proof that I have seen to date. IBM says that the octopiler technology is available today in limited form on a 64-bit machine running Fedora Linux and a specialized version of the GCC compiler. The migration towards 64-bit computing just got another reason if you are interested in developing future applications for the Cell processor.

If you are in the game programming industry and want to develop games for the Sony Playstation 3, then you really do not have a choice but to start learning about the octopiler and other emerging technologies surrounding the Cell processor. I have never worked in the game programming domain so my viewpoint may be entirely wrong since there are already games under development for the Playstation 3 for the past year or so.

Anyway, the Cell chip will keep our industry dynamic and interesting for years to come.

Saturday, February 18, 2006

The Softer Side of Product Design

There are many myths and misconceptions within (and especially outside of) the information technology (IT) /software engineering (SE) industry that this is a primarily a technical business. The tenents of software engineering is at most approximately one third technical. The remaining two thirds is the other 'grey' stuff or softer side.

What I mean by the softer side is the non-technical aspects of the business of SE. In my usual early Saturday morning ritual, drinking coffee, perusing my favorites sites and reading various articles, I stumbled upon "Software Development's Evolution towards Product Design". After reading this entertaining yet insightful article it made me think about the 2/3 non-technical side of SE. I really like all the "poo" depictions in the article's graphics.

The Lost Garden article describes the human and social side of software development that is coming into focus today. This is where technology and techniques have less impact on the success of a product. What comes to mind are modern concepts such as social engineering, social portals, human centered design and other terms used today to describe the new products and interactions that occur with software and technology in the modern world of 2006.

Given that we know where SE has been, the future is the great unexplored territory. Evolving towards 'product design' as the above article states is just one direction that we are heading. The continuous evolution towards product design is especially relevant in the consumer product development industries (gaming, multimedia, entertainment). Other problem spaces in IT are not quite yet as mature and have different SE dynamics.

One area where evolution towards 'product design' is not quite so significant is in 'grey business' of business intelligence, data mining, data warehousing, modeling/simulation and decision support. This is an SE problem space where designing products for the 'emotional needs' is not necessarily quite as beneficial yet. In this particular domain, 'practical needs' still far outweigh the 'emotional needs'. In this area the concentration is still primarily on information and knowledge creation vice a specific product that has a look, feel, and social behavior.

For the long-run I think the emotional needs will eventually catch up and surpass the practical needs in the 'grey business'. The continual evolution of information technology will permit this to occur. The evolutionary software development model toward product design described in the Lost Garden article will eventually be realized over time. However, I am sure there will be other evolutionary SE theories, techniques and models that we will observe, discover, analyze, and force a revisitation of 'softer side'. Maybe this will be dubbed 'knowledge design' since some of the 'grey business' focuses more on knowledge and information vice products.

Saturday, February 11, 2006

The Eclipse of Modern IDEs

Five years after open source Eclipse was unveiled to the world as the future of IDEs by IBM, it appears that the future is imminent. Just this past week Borland has announced that it is getting out of the IDE business to focus on its ALM business. "Borland To Dump JBuilder". According to the InfoWorld article (02/08/2006), "Borland to exit IDE business, focus on ALM", this is due to declining sales, income and profitability in the IDE business.

Eclipse appears to be on track to become the future of IDEs. Recent surveys now put it at the top of the heap of Java IDEs. Things have changed drastically in the Software Engineering business as anticipated especially in the business of IDEs. I recall reading articles a few years ago about how tool vendors in the future will either become an Eclipse plugin or fade out of existence. Well with each passing year and corporate announcement like the one Borland just made, we see this happening right now.

This trend will continue as far as I can tell. At one point a few years ago, Borland JBuilder, IntelliJ, and a long since gone product by Symantec (I think it was called Visual Cafe) were the leaders. Today, each of these competing proprietary IDEs are either competing successfully for survival (IntelliJ), have since been 'sun setted' (Visual Cafe) or are being sold off to better opportunitues elsewhere (JBuilder). The Sun NetBeans products continues its evolution being heavily driven by the Eclipse phenomena.

Many of the reasons for this are identical to my personal scenario for choosing Eclipse as my preferred Java IDE a few years ago while evaluating JAVA IDEs. Eclipse was young and free, JBuilder and its peers were expensive and hard to get. The expensive tools were hard to get due to declining budgets and not due to accessibility on the web. I downloaded Eclipse, experimented and learned how to use it and become proficient with it. Prior to getting into Eclipse, I had used/evaluated VisualAge (yeah, remember that IBM tool which was the basis for Eclipse), Sun Forte, NetBeans, JBuilder and even Visual Cafe. I never did get to try IntelliJ although I have heard many good things about it. Using the free community edition or evaluation versions of the proprietary tools put quite a bias on my perception.

As Eclipse was evolving and improving (shining brighter) I was trying to justify the funds for the proprietary tools. Then Eclipse 2.1 rewrote the playing field in Java IDE performance and made the other tools appear to be very painful. I was able to get Eclipse 2.1 running acceptably on an archaic Pentium II 366mhz 384MB RAM notebook. Performance improved dramatically with Eclipse 3.x which is dominant today. As far as the IDE pain is concerned, Sun Forte and early versions of NetBeans were the worst. The sole reason why I never used the early versions of those tools was due to the painfully slow user interface performance.

At any rate, I could go on about my IDE experiences over the past few years but I this posting is about continuos change in modern IDEs. Eclipse has fully embraced the open source model and after 5-years has risen to the top by being agile, open, adaptable, reliable, and focusing on performance. I remember all the early debates about Swing vs. SWT and it appears that performance does matter. At least for the voting public (developers) it does. When it comes to IDEs regardless of the language/environment, I have always chosen performance over features. Well after being in this business since the late 1980s, looks like going with my instinct about IDEs has paid off again.

For the future, I would postulate that Eclipse will continue its ascent and start spreading its wings. This will provide more lift allowing it to fly higher and farther. IBM is already migrating much of what it does into becoming some type of Eclipse plug-in (Rational, Domino/Notes, etc..). Use of Eclipse in other languages like C/C++, Ruby, PHP, Python, Perl will mature. Microsoft, Sun and Oracle and whoever is left in the IDE business will all have to keep their eyes on Eclipse so they don't fall into the Borland scenario. This will keep the IDE business very interesting for years to come.

As for the modern IDE landscape, I think Eclipse has a bright future. That is where I put my vote for now.

Sunday, February 05, 2006

Frameworks

This is one of my favorite topics of late, especially in the web development and Java universe. If you are working with Java or any of the object-oriented dynamic scripting languages (Python, PHP, Ruby), then you are most likely working with a set of frameworks. If you are not using frameworks then I am not sure if you or I am in a better situation today.

I just read a blog posting "Why I Hate Frameworks" which pretty much sums of the state of frameworks today in the Java universe. What is ironic about this posting is that most of my experience with frameworks fits the hammer metaphor described in the article. I dub this 'framework hell' which is analogous to the the 'DLL hell' that exists in the Windows universe today.

If you are not currently working with a language/framework set or are just getting involved, then you will encounter the framework complexity and integration fiasco sooner or later. When you do, then all this will make sense to you. The general purpose framework days are over in modern software development. Frameworks are the trend for solving just about everything today and you can find at least a dozen framework to solve every single little part of your application in a highly granular fashion. Note, not all frameworks work or play well together. Most of them are designed independent of one another by teams of programmers that may or may not even be aware of each others' framework efforts or existence. This is the root of the problem.

The complexity and state of frameworks today is mind boggling. At least to me it is. Every few months, there is signficant progress made in the frameworks that I use or the frameworks I am researching to justify a possible change in technical direction. I don't mean just to following the technical winds of the day. Many of the these advances are significant enough to contemplate a disruption in forward technical progress.

Obsolescence of a framework is a real risk. In the last four years in the Java community I have seen some frameworks and APIs become obsolete as a newer better, faster, lighter technique picks up momentum and takes over. (i.e. Spring, AJAX). This continues today in 2006 as convergence of AJAX techniques takes shape. Recall that AJAX was a disruptive technique in 2005.

Maybe things will get better later this year or next, however for the foreseeable future, I think the state and complexity of frameworks will continue on course. What course that is up to the forward progress of the researchers, programmers, practitioners and companies that are driving this forward progress. Don't get me wrong, frameworks do work well when appropriately understood, applied, tested and proven. It is just the fact that your framework usage may become obsolete sooner than you think and you are left using deprecated technology.

I guess this is the cost of rapid forward progress. I am not complaining about it, just stating that rapid innovation in and of itself can be like one huge experiment that can shift and change directions without any warning. One month, you are using the best of breed and the following month you are re-engineering, refactoring, or simply researching better techniques which may cause you to consider making changes soon. If you follow framework intergration best practices (I am not sure which ones there are so many and everyone has their own viewpoints), loosely couple, design for change, use agile techniques, and keep an open mind, you will probably be successful in your framework endeavors. Good luck.

Sunday, January 22, 2006

The Cell Processor and the Future

On the cover of the 30JAN2006 Forbes magazine is the new Cell processor jointly developed between Sony, IBM, and Toshiba. The new Cell chip or '64-bit 8-way supercomputer system on a chip' is what Sony is using for the Playstation 3 (PS3) scheduled to debut this year (2006). The Forbes article, "Holy Chip!" is a great case study into some history of the Cell processor development and reveals some of its possibilities for the future beyond the PS3.

This chip has been in development for the past 5-years and started as an engineering challenge from Sony to IBM back in 2000 just as the Playstation 2 (PS2) was being launched. Sony executives wanted a 1000x increase over what the PS2 could do. Apparently the IBM, Sony, Toshiba team managed to yield a 50x increase over PS2 which pushed the capabilities of all the computer engineers/scientists involved to the limit. I suspect that Cell chip version 2 or some future iteration is probably in development and will attain the original goal of 1000x improvement over PS2 chip, the Emotion Engine, within the next 2-3 years.

The design and architecture of the Cell processor required many years of design and has since pushed and shifted the envelope of chip technology. "IBM's CELL Processor: Preview to Greatness?" If all goes as planned, this chip will not only be the center piece of Sony and Toshiba's digital entertainment devices, it will drive future computers and sensors. In the Forbes article, Raytheon studied the chip for 15-months and made decisions to use it in future weapons systems. The primary reason for this decision is its magnitude of graphics performance over all existing technologies.

The Cell processor can render full 30 frames per second dynamic computer generated full motion images at high-definition resolution in real time! This is significant because photo realistic computer graphics imagery is possible in real-time using the Cell processor. This will open many new doors of innovation for previously unimaginable product possibilities. One of the Cell-based demos developed by Toshiba dubbed "Magic Mirrors" turns your LCD monitor into a virtual real-time mirror! The demo simulates a real-world mirror in a program. This is only possible due to the advances with the Cell processor. Gaming and entertainment will not be the same.

IBM has published reseach papers ("The Cell project at IBM Research") about the Cell Project which is normally not how IBM does business. I guess IBM is making changes for getting the word out on this one long before products exist. Given that Sony will soon have its PS3 on the market.

I'd like to see how the Cell processor will change the personal and supercomputing arenas. Given the fact that the Cell is designed for grids and massive parallel processing, the next few years will be quite interesting as we see new products.

At any rate, there has not been a huge architectural shift in chip design for the past 20-years. The new cell chip required a completely new architectural and design approach over past chip designs. It is definitely innovative and time will tell what type of impact it has on the computing industry.

Friday, January 20, 2006

Continuing Open Source Technology Inroads

Evidence is mounting that open source technology adoption is picking up steam. If you use Mozilla Firefox as your web browser or using OpenOffice.org for your word processing, spreadsheets, presentation and desktop database needs then you are using open source technology. As a matter of fact, open source is what is driving innovation in information technology today.

In Europe, a recent report stated that over 30% of users are now using Firefox and growing daily. The percentage is highest in the Scandinavian countries. That makes sense because that is the area where Linux originated. The percentages are much higher than I expected so early in 2006. Back in May 2005, 10% of business users were using Firefox. Eight months later in January 2006, I think this figure is now approaching the 20% mark and according to this site, that mark was attained in December 2005.

Not only is open source use expanding, realized cost savings for its use is now becoming more widely accepted. "Consultants report corporations embracing, saving with open source". This is not a panacea for reducing costs since there are inherent additional cost involved with open source technology adoption. If you have the skills with Linux and have a good intelligent team that can readily assimilate the technology and make good decisions then you will probably realize similar cost savings.

Another benefit to open source technology is innovation. With open source technology, you are only limited by your motivation, knowledge and ability to apply your skills to solve business problems or create new products. This cycle inspires the creativity required to innovate with information technology. With many proprietary technologies you are limited by concerns like

  • Do you have legal licenses?

  • Are the licenses expired?

  • Do you have enough licenses?

  • Do you have the funding to get licenses?

  • Do you have time to justify the cost for the licenses?

  • When will you acquire the technology so you can put it to use?



All the above just creates roadblocks to innovation in my opinion. Instead of focusing on innovative solutions you tend to focus on the licensing costs. This is discussed with respect to the weapons and defense industry in "Why open source works for weapons and defense".

I made the complete jump to using, integrating and researching open source technology a few years ago and can gladly report that all these facts, figures, percentages and postings are all real based on my experience. I can confidently state that running a business heavily utilizing open source technology is possible today in 2006. If this was not the case, Google, IBM, Yahoo!, and Amazon would not be succesful today. It is also well known that these companies spend millions on research and development of open source technology. As a matter of fact these are the types of companies that are primarily funding and driving the open source revolution.

There are scenarios where propietary technologies are much more mature and solve the business problem better. This is particularly true in the multimedia and groupware arena. However, in these areas of open source technology, I am seeing evolutionary improvements that I am sure in the near future rival the proprietary products. This viewpoint is also discussed in Open Source's Commercial Future.

Open source technology does have its own types of associated hidden costs and requires much more skill than proprietary solutions. However, mitigating these costs requires doing your homework, assembling a skilled team and making sure you know your business requirements. Having the skilled open source personnel on staff is a must. Acquiring these skills takes a different breed of knowledge worker. Open source technology is definitely not Windows and it requires good multi-dimensional people to make it work.

Friday, January 13, 2006

Security in 2005 and Linux

Information security in 2005 was really bad. Actually, it was the worst year on record as anticipated. Leading the insecure perception pack is Microsoft Windows. The monthly 'patch Tuesday' has become a beacon and target for hackers. We saw the realization of zero-day exploits and Microsoft's slow response to well known vulnerabilities.

There were a few bright spots, "Linux Security: A Good Thing Keeps Getting Better". If you happen to be using Linux then 2005 was not a bad year and actually was somewhat predictable. If you are using Windows, then 2005 was a really bad year.

If you can anticipate, predict and adapt to vulnerabilities then you have a better chance at defending your systems. Comparing Linux to Windows I would have to say that Linux is the environment where anticipating threats is easier.

I am involved in securing both Windows and Linux systems at work and at home. From my viewpoint over the past year, I would have to say I was more concerned about the Windows machines than I am about my Linux machines. One of the nice things with Linux is that I don't have to continually worry about mail bomb viruses, macros and various scripts invading my network. The recent WMF flaw is a recent example of what is lurking inside of Windows.

The permissions model in Linux/Unix and especially in SELinux is much more robust than what Windows provides. So for the next year, I still feel that running Linux systems is a much safer way to compute than Windows. We are in January 2006 now so all that can change with another exploit to Linux or Windows. If I was a betting person, I would place my bets on Linux being more secure. I am not a gambler so I prefer to remain adaptable and flexible to address any potential scenario.

Maybe it's time to get a Mac in addition to my Linux and Windows machines! Now that would round out the platform scenario to include another architecture and make my computing networks highly diversified.

I guess that's the type of computing world we live in today. Change is rapid and constant. At any time or even overnight a security issue can manifest itself thus requiring some type of remediation. At least this stuff is not going to bore anyone anytime soon.

Data Warehouses (2006) Growth Keeps Going and Going

Databases and more specifically data warehouses are growing at an ever faster rate. "Data, Data, Everywhere" provides some metrics on the largest known data warehouses. The size of these complexes are roughly doubling every 12-18 months. We have seen this and even greater where I work. Wal-mart is approaching 600 terabytes today (Jan2006) and they project to be above the petabyte mark later this year.

I remember in the late 1990s when a terabyte was milestone. Well, today most of the larger data warehouse complexes are approaching the petabyte mark. EBay and Yahoo have over 100 terabyte today. Google is not mentioned and as usual they are relatively quiet about their metrics. I would expect that Google is in the Yahoo range or larger. The same goes for Amazon. Yahoo is mentioned as the largest commerical data warehouse based on the Winter Corp. survey conducted in mid-2005.

One common architectural characteristic with all these large data warehouses is the use of massive parallel clustering. The Wal-Mart complex has a massively parallel 1000-processor system. There are no details about how many server machines are used. Rumors about Google are that they have a 100k server machine massively parallel system based on open source technology. The power consumption of a system like this is mind boggling alone.

The growth rates mentioned are staggering. Wal-Mart adds over a billion rows of new data a day. EBay adds approximately 750k rows a day. "Database Lessons, Petabyte Style" mentions a Stanford University research database (Stanford Linear Accelerator Center) that was adding 500GB, yes that is gigabyte, of data a day in 2004. That meant every 29-days they were accumulating data tha is equal to all the books in the Library Of Congress! Whoa!

What do all these data warehouse complexes have in common? They all require massive clusters of servers and all have issues with managing their storage capacity. As Inmon put it, 'volume, volume, volume'. That is and always will be the #1 problem with data warehousing.

Monday, January 09, 2006

Organizational Culture and Environment

I was just reading Fortune 100 Best Places To Work 2006 this morning read about the best company, Genentech. They are one of the low-key Bay Area (as in San Fransicso) companies that has risen to the top through it's unique culture and environment. Genentech is a company for people who are smart, work for the greater cause, and are not necessarily pro-business. It's secret to success is its culture.

"Genentech: The best place to work now" This company has a very flat hierarchy, no titles, no special parking spaces, no dress code, has many onsite services (day care, Friday parties, etc.), spends a large percentage of its profits on research (the article states approx 40-50%), and has a culture and philosophy that prospective employees are carefully screened before hired. What is interesting is that Genentech's culture is compared to Apple and Google who are also low-key and high visibility companies. As a matter of fact, Apple does not even participate in the Fortune annual survey and Google is too young as a public to participate.

The Genentech CEO has an office that is 9x12 and has low-end steel furniture. For a multi billion dollar major biotech company, this reminds me of a Wal-Mart like mentality. If get a chance, read the book about Sam Walton "Made in America" and you will see the similarities in corporate mentality. Which has a very similar unique corporate culture.

Genentech stays laser focused on its roots which is research, innovation and the drive to a greater cause than the individual. Everything environment related appears to be centered around collaboration, progress, innovation, and value-added products.

So what does this have to do with software engineering? Everything. The culture and environment of an organization is critical to its long term success. This is something that organizations like Genentech, Apple, Google understand. If you are in a highly competetive field like IT services, internet, or biotech, you have to continue being innovative in order to survive. You must be able to atract the talent that shares your values, vision, remain focused, and passionate about that which you are doing. In Genentech's case it is research looking for cures to tough problems like cancer.

There are a several software engineering related books published that spend a great deal of time talking about the how the environment affects producitivity of the workers. Specifically in the Software Engineering field, "Peopleware" (Demarco, Lister) comes to mind. Others spend time discussing the impact of software engineering cultures and environments such as the quintessential "The Mythical Man-Month" (Brooks). The timeless classic by Brooks talks a great deal about mentalities, culture and environment back in the 70s.

It seems as though those companies who are extremely successful (i.e. Apple, Genentech, Google) have applied all the lessons learned from the past and make it happen today in 2006. As the saying goes, those that forget history are doomed to repeat it. Conversely, those that study history will learn from its lessons and will have the insight for steering the course to the future.

Tuesday, January 03, 2006

Forecasts for 2006

Good you made it through to the new year like I did. Like everyone else, this is the time to look out to the horizon and predict what may happen in the next 12-months. Notice I did not say crystal ball because that creates an imagery of mysticism for which the technology field is not. At least not in my viewpoint.

In 2005, AJAX was not even on the radar and it became the hottest topic of the year for web development. So what is on the radar this year? I'd put my bets on dynamic web development (i.e. Ruby on Rails, PHP Framework, and probably something like Trails for Java). Web platforms like Amazon.com, Saleforce.com and others will emerge and become dominant. Google and Yahoo are not sitting still opening their services and APIs for building applications on their platforms. Microsoft with it's aging .NET and emerging Windows Live initiatives will follow this wind.

The dynamic OO languages will continue to make strides and gain mind share. Especially Ruby on Rails and frameworks that are like this.

Java will continue to get more complex with its frameworks and technologies. Hopefully, Ruby has an influence on the course Java is charting and steer it towards simplicity and ease of use. This is definitely where Java is not today. The maturing of an open source Java VM and component based framework like Apache MyFaces could make this happen. For enterprise development, Java will continue to remain significant.

The web platforms (Amazon, EBay, Google, SalesForce, Yahoo) will make the operating system irrelevant. This may be the year that Windows looses its monopolistic grip. The desktop is becoming less relevant. At least I like to dream well. The Mac using Intel processors will have a huge impact if Apple does it right.

The web platforms use web services, APIs and widgets to provide you with all the tools you need to build applications. What about all the hype surrounding web services? Web services are the interim building parts for the web platforms. They will continue to exist and will evolve into building blocks for the web platforms.

In the browser space, Firefox will continue to inch away market share from IE. It is already used in high as 25% of computers in Europe and approximately 10% in USA. This is unconfirmed since the metrics on this is not easily gathered. I suspect that it will do the same in the rest of the world. In Europe, the penetration may even go as high as 35% by the end of 2006. Overall I wil predict a 20% market share for Firefox by December 2006.

Virtualization will continue its ascent. VMWare and Xen will be emerge as leaders in this field. This is where 64-bit and 128-bit computing make sense. It's time to get 64-bit processors. AMD is releasing this stuff and is relatively inexpensive. The next machine I purchase will be 64-bit.

Security issues will continue to plague the IT industry. 2005 was the worst on record. 2006 is going to be a lot worse. Zero day exploits and the continuing evolution of organized cyber crime makes this a profitable business for the 'dark side'.

Google will do some amazing things in the next year. Most of it will be unexpected yet sweeping as they have done in 2005. It is only 1/3/2006 and there are already rumors about a low-end non-Windows Google PC to be sold at Wal-Mart. What else is next? Maybe an AOL/Google web platform. Google remains secretive and only it knows where it is going.

Blu-Ray and the Sony PS3 will land this year. This is going to be the start of the mass migration to high-definition everything not just HDTV.

That's my first shot at forecasting the next year. This is a dynamic industry and I am sure there will a lot of unexpected events and technologies that are waiting to be unleashed on the world. Happy New Year!

Wednesday, December 21, 2005

What has become of Artificial Intelligence (AI) lately?

I remember back in the 1980s when I was growing up holding onto this vision that by the 21st century artifical intelligence and robotics would be as common as jets flying around the world. Well in 2005, that apparently never occurred. I remember that Japan's MITI (Ministry of International Trade and Industry) had a national initiative and 10-year plan started in 1985 for making artificial intelligence and knowledge processing the foundation of its 21st century technology initiative. I read a book about this (can't remmber the title right now so will update this posting later, something like "Fifth Generation"). It's 2005, what happened?

Maybe all the Japanese robots we see from Honda, Toyota, Sony, NEC are the results of the MITI initiative. What got me thinking about AI recently is an article I read in Application Development Trends "I, Smartapp", about applying AI techniques to future development tools and adapative applications.

In the article was a side note about "The Singularity". "The Singularity" is a phrase borrowed from the astrophysics of black holes. The phrase has varied meanings; as used by Vernor Vinge and Raymond Kurzweil, it refers to the idea that accelerating technology will lead to superhuman machine intelligence that will soon exceed human intelligence, probably by the year 2030. Then what?

Well, Ray recently published his book, "The Singularity Is Near". I haven't read it yet however, it looks interesting enough to get and read in 2006. It is a science book about AI and the technological singularity so is definitely worth an inspection. There's even a website http://www.singularity.com that is a good resource for AI from Kurzweil's perspective. For additional info see this link.

Is this just more visionary double-speak? Ray Kurzwel is a very intelligent and impressive man. I am pretty much an optimist when it comes to these types of things so I think around the 2030s or 2040s "The Singularity" will occur. I am not sure what will become of our world as we know it when the machines are significantly smarter than us. Hopefully, we will have designed, programmed and raised them (the machines) well to be good, honest, benevolent beings.

Friday, December 16, 2005

Amazon.com as a Web Development Platform?!

Talk about your rapid changes in the tech industry, today is quite a day. Google may be investing $1B in AOL and there are rumors of Google purchasing Opera. This totally makes sense from Google's perspective. Then there is the Amazon.com bomb, they are opening up their Alexa or A9 Search Engine as a service that developers can use to build on as a new type of platform. "What's in Jeff Bezos's bag?".

Amazon.com is calling this Amazon Web Services or AWS. Check out their AWS reference applications listing. This reminds me of Salesforce.com which is another software as a service provider that is relatively successful in this emerging area of software. If you haven't yet seen SalesForce.com, then you are in for quite an amazing adventure. They publish their entire product as a service for CRM solution. The documentation on their online services is quite impressive. I have had the chance to read the Java documentation for SalesForce.com and it is qutie in-depth and impressive.

Now back to Amazon.com, if they can do what SalesForce.com has done then Jeff Bezos may have some success with continuing the innovative spirit that he has always had leading Amazon.com. It looks like 2006 may be quite a year for software as a service .

Reporting In Java (Dec 2005), disappoints?

Lately I have been writing from a realistic viewpoint of the Java world. I am glad that I am not the only person with this viewpiont. Over at SDTimes, Allen Holub has written in his column "JasperReports Disappoints" about the state of JasperReports, the leading Java reporting framework. I think he has hit it on the money. Have you ever worked with JasperReports? If not, then you are in for a ride. It appears that is what Allen Holub has been on the past week.

Reporting should not be as complicated as it is when using JasperReports. I've worked with many reporting tools over the years and in most cases they are not very overly complicated to use and learn. At least in the universe outside of Java.

The JasperReports framework is yet another XML intense, finely grained, but robust (from an OO perspective) Java implementation. Don't get me wrong, it does work as designed. However, I am glad I did not spend the US$50 on the documentation ("The JasperReports Ultimate Guide"). According to what Allen Holub has seen, it is not worth it.

He goes into describing the usual state of open-source development that requires you spend a lot of time researching, coding, testing, trying, failing, until you get it working method. I would have to agree. Over the past few years, I have been living in the open source Java world and it is pretty much exactly as Holub describes. At least that is my experience. I have purchased many books on Java and some are good and some are bad. They are all relevant. It all just depends on what you are looking for and whether or not you have the time to make it work.

Well, I am glad that at least I got involved in JasperReports and am not the only Java developer encountering issues with it. Maybe someone else will do it better but for now it looks like JasperReports represents the best of reporting in Java for 2005. You get what you pay for and being open source, I can't complain too much.

Wednesday, December 14, 2005

Critical Skills for Modern Software Engineering (2005)

I have always believed in multidimensionality in skills as a requirement to be proficient at architecting and building software and systems. What I mean by multidimensionality is being relatively proficient in many areas. Instead of specializing and doing one thing good, I mean doing many things well. This is not exactly a mainstream concept. Actually, I think it is a viewpoint that is anti-mainstream based on what I read in daily/weekly journals.

So what is multidimensionality for modern software engineering you ask? It is having a wide understanding and proficiency of many technical areas. For instance being skilled at programming (Java, Delphi, C/C++, PHP, REXX, Basic), modeling (SA/SD, UML), networking (Windows, TCP/IP, Unix), data communications, distributed databases, user-interface design, graphics, operating systems (DOS, OS/2, Linux/Unix, Windows) , technical writing, non-technical writing, and everything else computer science without resigning yourself to being at a beginner or novice level. The proficiency is being at the intermediate to advanced level in all these areas. The most critical of all the skills is the ability to communicate verbally and in writing.

Over the years, I have seen this trend towards specialization in an area of business information technology. You hear this over and over again from all angles. These angles are the press, career recommendations, instructors, professors, and even from professionals within the field. I've even seen software development teams built around specializations. These specializations include user-interface (HTML, Javascript, JSP, GUI), business-tier (rules, logic, subsystem integration), and integration-tier (database, systems integration). These teams of specialists are not a bad thing. For large projects or projects under a particular time constraint for which you have no control, a team of specialists may be your best route. These types of teams have their place and can actually be the best solution given a particular set of constraints.

What I have not seen much of is software teams composed of multidimensional people. This probably occurs in the R&D environment more often but not so much in the business solutions arena where most of us exist. I have been fortunate in my career to have been given the opportunity to exist in both the business solutions and R&D environments. When working in the R&D environment, multidimensional teams are better in my opinion. When working in the business solutions world, I would like to have a team of exceptional multidimensional people however, this has not been possible due to many management variables that are usually outside of my control.

Ok, now let's get back on track. In 2005, there is this new wave of web development evolving that is leaning towards multidimensional skills. These are the small and agile teams of one, two or a handful of people who are accomplishing things at unheard levels of productivity. As I get more into researching, designing and building newer software systems (client/server, java, web/AJAX, networking systems), the more I see the need for extremely high skilled or multidimensional team members.

Another really important perspective is how this applies to the modern business world. With all the outsourcing and globalization, the need to be even better is crucial to remaining competetive in the future.

I can't tell you how many experiencies I have had when many points of technical discussion I'd like to make that I cannot even have with specialized persons because they do not have the 'other' skills, knowledge or experience required to even understand what I need to discuss. This is where the multidimensional skills matters. The multidimensional person may not have all the skills yet, however, has the right mindset towards learning and assimilating knowledge and knowing when to do this. This is the multidimenstionality trait. These are the good technical people that everyone talks about but can never find. I agree. These individuals are rare or very difficult to find.

So what are the critical skills for modern software engineering again? Multidimensionality, excellent verbal and writing skills, open mindedness, confidence, and willingness to assimilate knowledge.

Tuesday, December 13, 2005

State of Java Development Productivity in 2005

There must be something in the air pertaining to software development productivity, web technologies and perceptions about Java. I just read yet another excellent article in the 01DEC2005 SDTimes, p30, "Where are the Rich Internet Applications Written in Java?" by Alex Handy. It touches some of the perceptions of Java not meeting all it was hyped to be in the last five years. In 2005 alone, AJAX, Ruby On Rails, PHP and other dynamic object-oriented scripting languages appear to be gaining mindshare.

The lighter more nimble tools (i.e. Ruby On Rails) are gaining traction within the web software development community and most notably among some Java heavyweights. Back in early 2004, I thought JSF would evolve to a point in 2005 where it would become the mainstream technique for building Java web applications. Here we are in the last month of 2005 and this has not happened.

The final sentence in the article is interesting. "Our view is that Java development takes way too long, and it's being usurped by smaller nimbler languages.". I have to mention that this article is not entirely negative. It could be that Java is going through a few cyclical technology innovation spikes as it did five years ago. There was a mention of another Ruby On Rails like framework for Java called, Trails. I've seen and used a few AJAX frameworks for Java that work quite well.

It would be nice if the Java community starts focusing on productivity instead of complexity for 2006 and beyond.

Friday, November 25, 2005

Developer Productivity and Web Development

Programmer productivity or developer productivity is a concern for everyone in web development projects regardless if you believe it or not. You have to take productivity into consideration in the modern software engineering world. Significant productivity gains were made in the 1980s (i.e. Turbo Pascal, SmallTalk) and in the 1990s (i.e. Delphi, Visual Basic) that permitted developers to produce decent applications faster without compromising quality too much. In most cases, there is a trade off between speed and quality. The faster you develop the lower your code quality becomes. This can mitigated by employing refactoring techniques as part of your development process. The speed and quality of development was greatly reduced when the internet and web development turned the world upside down in the late 1990s.

I remember when web development meant getting things done as quickly as you could with the trade off in design, reuse, and quality. Basically quality suffered. I have seen enough disasterous code in ASP, VBScript, JavaScript, PHP, JSPs, and all the flavors of web development where reuse, separation of concerns, encapsulation and good design were not even considered as long as the code worked. Well this has gotten a lot of products and projects in trouble. A lot of this code is now considered legacy code and it quite a mess from a quality perspective.

In the past few years, there is a movement to get back to quality without sacrificing speed of web development. You can see this with the newer Java frameworks (i.e. Spring) and dynamic object-oriented scripting languages (i.e. Ruby on Rails, PHP Framework). I think the complexity and depth of web services implementations has necessitated this resurgence.

The Java web stack in my opinion can be productive as long as you properly choose the right frameworks and tools. As a Java developer and comparing my experiences in other languages, Java requires that you make framework good decisions all the time. You have to become skilled at adaptable design and framework integration to be a good Java developer. This requires quite a bit of research time and places a high premium on the skills of the developer. You have to be a Java practitioner and technologist to become "productive" in Java. It is attainable but requires a higher level developer to realize this goal. Java solutions tend to be verbose coding and XML configuration intensive so many of the frameworks and tools address the automation of the coding and configuration process.

Comparing Java developer productivity to a developer using Borland Delphi is like comparing apples to oranges. In Delphi, an average to mediocre developer can become productive in a relatively short period of time due to the Delphi RAD component-based development paradigm, "The Delphi Way". The downside to the Delphi paradigm is that upfront skills required to become productive are not as high thus limiting the skills growth of the developer over the long run. In other words, this style of developer never really needs to assimilate object-orientation or other higher level design and refactoring skills if this is not deemed important by the developer. This can create a developer skills plateau which is can dangerous to your software engineering team in the long run.

A similar scenario has occured with web development where loose scripting solutions (i.e. ASP, PHP) are as pervasive as good sold robust designs (i.e. Java). Well now that web development is at a point where both the clean/robust approach (Java) and quick (PHP,ASP) have been explored, a clean/robust and quick methodology is ready for prime time. This is where I believe Ruby on Rails has the advantage. I know it has been getting a lot of hype lately, however, from what I have seen I think it represents the future of web development.

At RootPrompt.org, I found yet another excellent review of migrating from Java to Ruby that is well written. "Evaluation: Migrating from Java to Ruby on Rails". The actual evaluation describes from a web development perspective how Ruby On Rails compares to Java web application development. These are the same web development issues I am dealing with in a similar software engineering research & development environment.

Many of the key points in the evaluation addressed all relate to Java productivity compared to Ruby on Rails productivity. Areas of concern for my research work is the increasing complexity of the Java web stack (frameworks integration; Velocity, Struts, Spring, Hibernate, DWR, Axis, etc..) involved in creating Java web applications using AJAX, web services against very large datasets. This appears to be the exact problem domain that Ruby On Rails tends to address. Based on the evaluation article, a productivity ratio of 10-20x is possible. If this is the case, then it makes web development on par with the developer productivity gains attained in the 1990s (ala Delphi) using RAD client/server tools. Kind of a "RAD for the Web" toolset.

I understand that reading an evaluation, researching a new technology like Ruby On Rails will not automatically make you more productive. However, it does address a personal sore issue of web developer productivity without sacrificing quality and robustness. Given the recent hype, maybe there will be a "Java on Rails" in the near future. That would be nice however, from what I have seen, it may not quite possible using Java due to the loosely typed dynamic nature of Ruby compared to Java.

Web development needs to become more productive without sacrificing the quality. The best of both worlds seems to be pointing towards a Ruby On Rails paradigm. I've said this in prevous postings to this blog. Ruby On Rails is definitely on the agenda in the near future for me. Sometime in 2006 with success, I should be able to have a much better perspective on this topic. Your mileage may vary.

Wednesday, November 23, 2005

More Web Services Standards

The buzz word Web Services just got more buzzy recently. That is with a 'b' not 'f'. OASIS just released the specifications for three, count them, more services. WS-Coordination, WS-AtomicTransaction and WS-BusinessActivity. In the article, "OASIS Introduces Three More Web Services Specs" at SDTimes, they discusses the new services.

I've been getting into the web services arena recently and find that the maze of complexity with all the Web Services specifications can be mind boggling. Go to the OASIS site and peruse the maze yourself, here. I like Yahoo's approach. They use REST because it works and is simpler. They do not do SOAP. They do not intend to support SOAP. I think Amazon.com has a similar philosophy towards web services.

The new services require that all vendors build their own support for the new services. The article discusses how iTunes, Amazon.com have heterogeneous services for e-commerce purposes that are not necessarily standards based. You have to work within the context of their services infrastructure.

Ok, so what problem are the new services solving if iTunes, Amazon.com, Google, Yahoo and others are doing so well today? Your answer or guess is as good as mine. One key note about the SDTimes article, the new specs are part of the Windows Communications Foundation that will part of the forthcoming Windows Vista release.

Thursday, November 17, 2005

The Need for Multilinguality

I grew up in a multicultural and multilingual environment. This has both pros and cons but from what I have seen in the computer science field, I think it has more pros than cons. The general tone that I have seen with technologists, programmers, and computer scientists in the past few years is to become proficient in multiple languages. What I mean by proficient is not to just know or be exposed to a language but to be fluent in it.

In the "Ruby the Rival" article, there are several comments about learning a new language or technology every year. I have always subscribed to this idea however, it has only been more recently that I have seen it being pushed in the mainstream by the writers and leaders in the information technology field.

I think there is a distinct advantage to being fluent in multiple programming languages, paradigms, and techniques. Knowing how to do client/server programming, web development, GUI development, low-level I/O, scripting, and networking and communications programming are all skills that competent developers all know how to do. Constantly learning new languages, skills, and technologies is another trait that keeps your skills relevant and current. Another advantage is that when you step outside of the box of one language you start to see patterns of differences or similarities between them. This helps you understand both languages better. It even provides insights into the mechanics and techniques of the languages.

Looking at the emerging relationship between Java and Ruby is a good example. There are many heavy weight Java technologists that are leaning towards Ruby on Rails. The reasons do not appear to be to replace Java but to complement it with a different paradigm and technology. Ruby on Rails is primarily a web development technology. Java covers everything but the kitchen sink. (web development, GUI, client/server, networking, communications, etc.) Ruby may even drive innovation within Java technology that would otherwise not be possible if you stay inside the Java sandbox.

Learning a new language or technology a year or every few years is something that I would recommend to anyone who is in the computer science or software engineering field today. You may not use the new language for anything outside of research and experimental programming but it is a good habit to have. I think it has many advantages for which I cannot even explain based on my life experirence of being raised in a multilingual family.

Tuesday, November 08, 2005

Operating System Virtualization

Operating System Virtualization is capturing quite a bit of buzz lately. VMWare recently released VMWare Player as free software. VMWare Player Showcases New Virtual Realities describes the new product's features. There have been several case studies about how virtualization has saved many large companies millions in hardware costs. IBM is using virtualization in its workstation and server blades technology to put multiple virtual machines into each individual blade slot. Prior to using virtualization, each blade slot represented a single machine.

In the news lately is quite a bit of buzz about virtualzation. "The Rise of the Virtual Machines" discusses various products and strategy of implementing virtualization. This is a great article covering the state of virtualization today and provides good insights into issues to keep in mind when researching this technology. IBM is doing heavy research in virtualization. See Secure Hypervisor. (What is a hypervisor?)

Just last week Red Hat said it wants Xen, the leading open source virtualization technology, to be in the next release of Red Hat Enterprise Linux (RHEL). Here's the RedHat 11/1/2005 news release discussing their virtualization strategy for 2006/2007. Fedora Core 4 already includes Xen in it. (Fedora Virtualization) Red Hat is even devoting programmers to speed up the process of getting Xen integrated into the Red Hat distribution. Here are some screenshots of Xen in action.

Sun OpenSolaris is even getting into this game in order to compete with Linux. "OpenSolaris Has Virtual-Machine Edge Over Linux" describes their virtualization technology. They call their virtual machines 'Solaris Containers'.

If you have not used a virtualized machine then you have got to check out this stuff. I spent some time working with VMWare last winter and was quite impressed. I learned quite a bit about this technology during that timeframe. VMWare is pretty incredible when setup correctly.

From the research I have done with open source Xen, this looks to be even better since is designed for the Unix/Linux world. Xen implements a paravirtualization approach. Based on reports I've read, Xen performance is above and beyond what VMWare does due to implementation of paravirtualization technology. Getting Xen working is not quite that easy yet. Currently, the kernel of the guest operating system must be modified to run with Xen. However, with Xen 3.0 which is currently in alpha it will be a viable competitor to VMWare in 2006. XenSource has even gotten Windows guest operating systems working on their Xen 3.0 alpha release.

Hopefully, with Red Hat and IBM investing heavily in the open source virtualization technology, sometime next year this will become mainstream technology. Heck even Microsoft is jumping aboard on this technology. They are promising virtualization as a part of Vista, the next release of Windows. With VMWare already doing so well on Windows, I wonder how good the built-in virtualization in Vista will be? Given past history of Microsoft, I suspect it will be somewhat mediocre.

Back to the virtualization topic. If you haven't gotten into this technology yet, you will in the next few years. Within Microsoft, IBM, VMWare and the open source community this technology will only continue to grow and become mainstream in the near future.