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.

Sunday, November 06, 2005

Microsoft Singularity

Singularity is the code name given to an internal Microsoft research project to build an operating system from scratch. This research project has no ties to Windows as per "Microsoft's Other OS" article states. Note, some of the links in the this article are not available. The interesting points about this proof of concept research project is that is built entirely using Microsoft languages. In particular, it uses a derivative of the managed code C# dubbed Sing#. Singularity even got attention at Slashdot, "The Microsoft Singularity".

The published technical status report (pdf) to date reports to having the micro kernel running. This sets the foundation for building modules or plugins to the operating system core. There is a team of approximately 35 researchers spanning many disciplines. The road to the future of this project currently is still purely for research purposes. I am sure there will be eventual commercial use or application of the research knowledge gained.

An interesting observation about this project is that only Microsoft technology is used to build it. Given the well known ambitions of this company, does this mean a 100% proprietary operating system in the future will be a successor to Windows? I can speculate quite extensively about the future possiblities (not all positive) for an operating system from this particular organization.

Another viewpoint is that 'reinventing the wheel' comes to mind when there are so many mature micro kernel alternative operating systems today based on Linux. There was another large corporation (IBM) that went down this same path in the 1980-1990s building a proprietary operating system (OS/2) that did not succeed in the marketplace. It looks to me that history may be repeating itself over the next 5-10 years with yet another big information technology corporation.

Friday, November 04, 2005

The Zend PHP Framework

PHP is known as the 'quick and dirty' language for building web applications. Well, it looks like Zend has been paying attention and recently released their Zend PHP Framework in mid-October. At the same time they also announced support for Eclipse. Now this would be a major boon to all PHP and Eclipse developers.

The PHP Framework, based on PHP 5, from what I understand implements a robust MVC paradigm analogous to Java Struts and Spring to the PHP world. This brings scalability to PHP solutions. With IBM and Yahoo being major PHP supporters, this ensures that Eclipse remains a universal IDE. With the Ruby RDT and soon PHP Eclipse integration, Eclipse is becoming the de facto open source IDE for the future.

I read a few books on PHP and always thought it was a good language. The only downside as a scripting language is that no really good frameworks exist. At least not any frameworks to which I know about or have been exposed.

As a PHP developer you are coding at the user interface, logic and database levels concurrently without the nice separation that exists in an MVC architecture. PHP's philosphy is to keep it simple. This simplicity and lack of decoupling is where the speed of development and dirty design labels are attached to PHP development. This can be interpretted positively and negatively depending on your viewpoint. I think Java purists tend to view this negatively and at the other extreme PHP purists try to keep everything quick and simple. There are issues with both viewpoints but this posting is not the place to argue about it.

Ok, back on track. Due to this simplified development style, PHP is being used and written about quite a bit this year because of the increasing complexity of web applications. "PHP succeeding where Java isn't" is a good article by Mark Andreesen that is straight to the point about PHP compared to Java. PHP is learning from Java and evolving. Java is also evolving but I don't think it is actually competing with PHP directly. Also see the related articles, "PHP is what Java was 10 years ago", "Innovation Is Humming". Yahoo would not be using PHP for most of its stuff it did not have confidence in the technology.

Based on the trends with Ruby on Rails, Java, .NET and PHP it looks like clean, robust and quick are where these web applications technologies are converging. This is a good thing for everyone involved for the foreseaable future for software engineering. I'm stoked about this. It means that sound computer science theories, principles and best practices are winning the intellectual battles of programming the next generation web applications.

Tuesday, November 01, 2005

Practicing Your Craft

With the rate of change in the software engineering field, practicing your craft will keep you relevant and in touch. Do you want to become a dinosaur as your career matures or do you want to continue to hone your skills and be a software engineering practitioner? Doctors and musicians must continue to practice in order to stay on top of their skills and continue to be relevant. I just read an excellent article concerning a technical career, "Avoiding Oblivion in Your Tech Career", that you should read if you want to stay relevant and effective as your career progresses.

I remember reading the book "Becoming A Technical Leader" by Gerald Weinberg in early 1990s when I was contemplating taking my first technical leadership/management job. This book and a few others like it helped me make a difficult career decision. I wanted to remain technical however, my boss was offering me the opportunity to get into the technical leadership and management ranks. The recent article posted at O'Reilly Net above reminded me of what I went through in that time period and the reading I did about remaining 'in touch' with technology.

The fundamental problem with making the transition from technical to management is staying in tune. It becomes more and more difficult to stay in touch due to your increasing non-technical responsibilities and eventually you lose touch with the fast paced technology world.

The following excerpt from the web article stands out:

"The reason technologists fade so quickly is that they stop practicing their craft. They stop writing source code, they stop modeling systems in detail, they miss the paradigm shifts and use dated jargon, they brag about the old days, and (I have observed) they break their ties with the young development community. They fly at 30,000 feet, as you will hear them say often, alongside executive stakeholders.

Technology is unique in this regard. The senior surgeon performs landmark surgeries, the conductor plays brilliant piano, and the building contractor runs out to grab the toolbox from the back of his truck. In medicine, music, and construction, senior contributors are practitioners, who never part with their instruments. And they aren't reluctant to use jargon. Surgeons, for example, never tone down their medical talk unless the patient asks them to."


Based on the research I did over 10-years ago, it was quite refreshing to see this same message reiterated in today's faster paced 21st century software engineering universe. It's good to know that I made some half way decent decisions in the early 1990s. Somehow I have managed to remain 'in tune' even though my non-technical responsibilities continued to increase over the past decade.

Monday, October 31, 2005

The Architect of C#

Anders Hejlsberg, the architect of C#, granted a rare interview (part 1), (part 2), that was posted at OnDotNet. C# is now roughly 5-years old and is the foundation for the Microsoft .NET framework. Hejlsberg makes some interesting points about the future of C#, Java and programming.

The significance of Anders Hejlsberg is that he is also the architect of Borland Delphi. He was instrumental in getting that project implemented while working for Borland. Given these credentials, C# as a language is well thought out for a complex framework. C# looks a lot like Java based on what I've seen.

I have to contemplate the evolution of languages where more complexity vs. simplicity seems to be the front-lines today. The advent of Ruby on Rails and AJAX will have a large impact on future directions of languages. The 'dynamic' languages appear to fit the need for faster, agile, and cleaner development.

Friday, October 28, 2005

Apache MyFaces 1.1.1

Java Server Faces (JSF) has been at its 1.0 state since 2004. I am surprised that the Apache Software Foundation (ASF) has made extremely quick progress with its MyFaces project. They just released MyFaces 1.1.1 yesterday, 10/27/2005.

I checked out JSF last year when Java Studio Creator (JSC) first came out and due to other reasons did not have the time to really do a lot of research with it. For some reason, today I was looking around the web and decided to do some reading about MyFaces. Well, I went to the "Getting Started" page and spent about an hour reading these documents. MyFaces 1.1.1 is quite impressive.

I think I am going to have to get into MyFaces technology in 2006 since it embraces the open source theory. Sun's JSF is great however, when they released Java Studio Creator (JSC), it was somewhat crippled and not quite as open as I would have liked. It did not have as much database connectivity to make it practical. Additionally, Sun started charging $99 to continue using JSC. At least that was the last I recall. I have not really used it much this year. I just sort of lost interest. I am sure it is evolving further.

Here are some reviews of JSC 2004Q2 release, "First Look: Sun Java Studio Creator (Early Access)", "Sun Java Studio Creator Early Access Release".

Now back to MyFaces. Is there an Eclipse plug-in for MyFaces? I haven't seen one yet. I am sure this is under heavy research in the open source community. Now that would be nice since I do most of my Java development within Eclipse. If someone builds a very nice integrated Eclipse plug-in for MyFaces, then I am quite sure it will take off as an MVC framework within the Java community. Struts is nice, however, it is not component-based development which JSF and MyFaces has been built to solve. I am still looking for the Delphi of web development.

In the summer of 2004, I predicted that JSF would be much farther ahead than it is today in Oct2005. I was definitely wrong on that one. What I did not anticipate was an ASF project, MyFaces, making as much progress as it has in such a short period of time.

Open source Java/XML content management systems

I have been researching open source Java Content Management Systems (CMS) for quite a while and this week just started dabbling with Apache Lenya which is based on Apache Cocoon. Initially I was primarily interested in Lenya which is a 100% Java software. The more I learned about the underlying Cocoon technology I was just blown away. Apache Cocoon is a web development framework built around the concepts of separation of concerns and component-based web development. It sort of acts like "web glue" based on XML, XSL, and XSLT. Cocoon concepts are not for the faint at heart as the Lenya developers mention in their documentation.

Lenya has some nice built-in WYSIWIG editors. The best ones that Lenya uses are Kupu, and BitFlux Editor (BXE). There are a few more editors built-in for editing raw HTML and forms.

Some other open source CMS software I was looking at was OpenCMS which is database driven designed for MySQL or Oracle. This one is another 100% Java software looks quite impressive. I have yet to evaluate OpenCMS. The documentation is decent. It is backed by a private company, Alkacon Software. There are some licensing concerns with OpenCMS.

Lenya is currently at version 1.2.4 and version 1.4 is under heavy development according to their website. There are still some rough edges in Lenya which are being addressed. Using Lenya 1.2.4 today requires that you are comfortable with XML and understand some of the Cocoon concepts.

I plan to continue evaluating and researching Apache Lenya and Cocoon. As all the other Apache Software Foundation projects have evolved, I have faith the ASF will get it right and make Lenya/Cocoon quite an impressive product in version 1.4 and beyond.

Thursday, October 20, 2005

OpenOffice 2.0 is released!

If you are not already a user of OpenOffice.org you should be. I have been using this open source software since the 1990s when it was owned by a German company, StarOffice, and developed for OS/2. Yeah, I was a serious OS/2 user in the 1990s also. OpenOffice.org 1.1 was the version that solved most of the compatibility problems with Microsoft Office file formats for me. I have been using OpenOffice 1.1 interchangeably with MS Office files with relatively few issues.

OpenOffice 2.0 now adds a desktop SQL database, HSQLDB, and which is a 100% Java database engine. I have used HSQLDB in Java projects and it is pretty decent. I have not tried OpenOffice 2.0 while it was in beta. Now that the official release it out, I intend to upgrade and start working with the new and improved software.

From what I understand, OASIS OpenDocument is now the XML file format that is used by OpenOffice. This is a move to an open format so that file format lock-in (i.e. MS-Office) does not continue to plague the computer world in the future.

Technologies To Watch, Beyond Java

This year has been full of change and new technologies in the Java universe. Here's a good article by Bruce Tate, "Technologies to Watch: A Look at Four That May Challenge Java’s Development Dominance", that mentions Ruby quite a bit. I've expressed my interest in Ruby in this weblog and it appears that many others within the Java community have similar viewpoints. Within the last few years I thought .NET would be taking off however, with the advent of Ruby on Rails and how 'clean and intuitive' it is as an object-oriented programming language, it looks like the currents may be changing in the next few years. I plan to get into Ruby this winter and most definitely in 2006.

Tuesday, October 18, 2005

Ruby plug-in for Eclipse, RDT

Looks like IBM is researching Ruby and Eclipse. At IBM developerWorks, I found this article (published 10/11/2005) about the Ruby Development Tools (RDT) plug-in for Eclipse, "Using the Ruby Development Tools plug-in for Eclipse". Looks like they are making a lot of progress with the RDT plug-in. The target audience for RDT is Java developers who are interested in what Ruby has to offer.

Saturday, October 08, 2005

Open Source Databases, Sun and PostgreSQL

These past few years I've been doing quite a bit of research with open source technologies. In the database arena, I've looked at MySQL, PostgreSQL, Firebird, HSQLDB, MaxDB, Cloudscape and a few others. After having researched, experimented, tested, reviewed licensing terms and implement proof of concept projects using various databases I have a decent viewpoint about which ones will work in our environment.

Sun's announcements ("Sun Eyes PostgreSQL", "Sun's software chief eyes databases") concerning the costs of Oracle, SQL Server, etc... discusses that they are looking at open source database PostgreSQL because of its performance, features and its BSD license. MySQL with its dual-license has a few cost issues as an open source database for use in a in-house or customer proprietary applications. If your project funds allow it, then MySQL is an excellent choice. If you have a constrained financial IT budget, then MySQL may not be the right open source database choice due to licensing costs.

As a side note, while talking to my doctor earlier this year I was asked about open source databases. He said his medical group was researching new software solutions and asked me how MySQL compared to Microsoft SQL Server and why it was so much cheaper. In a nutshell, I explained to him that you have to pay for the 'brand name' when getting Microsoft and will probably have to cough up even more money paying someone to support it. He confirmed that with the MySQL solution, the support and everything from the solution provider was included. Without getting into details, he said the MySQL solution amounted to somthing like one tenth (1/10) the cost of the Microsoft solution which did not include any type of support. A large part of the costs for the Microsoft SQL Server solution was for licensing. Just recently, I found out that they decided to go with the MySQL solution. I hope that my opinion influenced his medical group's decision to go with the open source solution. This in the long-run I hope keeps my medical costs lower.

Friday, October 07, 2005

Local.google.com is latest AJAX stuff

I just read this post on Slashdot about how "Google Maps Graduates". You've got to see this for yourself. I just tried it at local.google.com and typed in 'pizza ' and it displays all locations in a Google map and addresses of all local Pizza shops within seconds. Pretty impressive stuff. This is one of those "no way it could be that fast of web application" that just blows you away the first time you see it with your own eyes.

Open Source Security Tools Going Closed Source

This buzz is all over the net, Nessus 3.0 to abandon GPL license and "Nessus security tool closes its source". CheckPoint is acquiring SourceFire (developer of Snort). Is this a trend ofr open source software or is it just the dizzying pace of acquisitions in the past few years. Anyway, read about it for yourself in these articles.

Sunday, October 02, 2005

Asymmetrical warfare, Google vs. Microsoft

Google and Microsoft are in each other's sites competively today. Google's approach is asymmetrical while Microsoft style has always been defining a linear battlefield. Here's a decent article, "Tech Giants Square Off", referring to these tech giants eventually competing head to head. In the coming years we'll see this unfold as the PC vs. the Web where Microsoft represents the PC and Google represents the Web. I put my vote in for Google. Time will tell.

Saturday, October 01, 2005

Ruby on Rails and future Web 2.0 development

While researching emerging web development technologies this past few years, Ruby on Rails, is one of those technologies that just rose to the top. From what I've read, it's proponents say it delivers on a RAD for the web. Where PHP/Perl/Phython represent 'quick and dirty', Java represents 'slow and clean', Ruby on Rails is touted as the 'quick and clean' method of web development. I haven't had the time to devote to Ruby yet, however, I plan to get involved in this emerging technology within the next year.

Ruby was inspired by Eiffel and Ada and designed as a simplified object-oriented scripting language. The creator of Ruby is Yukihiro Matsumoto, a.k.a Matz matz@netlab.jp who developed the Ruby because everything else available was getting more and more complex. Matz has created a new object-oriented scripting language based on a Japanese 'pursuit of simplicity' cultural influence. In that sense, Ruby is sort of a Zen like technology.

Rails is a full-stack, open-source web framework in Ruby for writing real-world applications with joy and less code than most frameworks spend doing XML sit-ups. Rails was developed evangelized by David Heinemeier Hansson of 37signals. A Ruby on Rails example of their products is Backpack which is an extremely intuitive web applications based on Ruby on Rails.

For the Web 2.0, Ruby's philosophy of simplicity and Ruby on Rails matches the characteristics of future web software development, simpler, faster, richer and more robust.

Friday, September 30, 2005

Web 2.0

I've been reading about the Web 2.0 for the past year and finally found a decent article that sums up what this means, What is the Web 2.0. This article is well written and summarizes the how the web as platform the 2nd time around is much different than the Web 1.0 (which in many accounts ended during the dot-com crash in early 2001). For me personally, the Web 2.0 is much closer to reality than the Web 1.0 was just due to how mature the companies, technologies and attitudes are today compared to how things were in the late 1990s thru 2001.

Thursday, September 29, 2005

The web-based office (thru AJAX and other webapps)

AJAX is still in it's infancy however, the number of AJAX web-applications is increasing rapidly. Check out this ZDNet article containing a listing of AJAX applications available today. I found this while perusing Slashdot this morning and saw the article "Early AJAX Office Applications".

I primarily spend most of my computing time on notebook computers and recently handheld computers that are Wifi capable (my Sony PSP). Even at work I prefer to work on notebook computers over desktops due to the mobility.

Wednesday, September 28, 2005

Open source technology goes mainstream

The most recent Information Week has an article "Open Source Goes Corporate" which makes Open Source mainstream in the corporate world. Open source technologies (i.e. Linux, Apache, MySQL, etc..) have been used for years, however, in the corporate world was eyed by managers with suspicion. Now that Information Week has a major article about it, it is now politically correct to talk about open source technologies. That is my dab at those clueless managers who make decisions based on reading the first page of an article in a weekly trade magazine primarily geared towards pushing technology. The biggest factors mentioned in the article is lower costs, greater performance, adaptable and extensible technology that removes the single vendor dependence.

I was surprised at how many well known big companies are planning to migrate to Linux. The article mentions E-Trade, Fidelity, UPS, Continental Airlines, Walt Disney, Yahoo, just to name a few.

Tuesday, September 27, 2005

Know your audience (5-year olds and managers)

I've done quite a bit of technical writing over the years and have recently noticed parallels between how managers and 5-year old Kindergartners think. When you are writing a document for justification or a technical specification you have two distinct audiences. In most companies, a justification document is written to get something or approved or funded. A technical specification (i.e. design spec, use-case, test-case) is written for a completely different audience (Normally with specialized details about a specific topic).

Most 5-year olds do not read yet. Most managers do not read what you write. 5-year olds must talk to you and try to get you to believe what they want is OK by any means possible. Getting some candy or buying something at the store comes to mind. Managers must get their jobs done by talking to you and having you do most of the work. See tha parallels.

What point am I trying to discuss? When you talk to a manager, you should know your audience and always keep a background thought process of "who am I talking to and what do they want me to do for this". The same applies to 5-year olds.

By the way, my son just started Kindergarten this fall. I'm sure there will be more interesting observations related to this topic.

Friday, September 23, 2005

IBM, Java, and AJAX research

Like everyone else, IBM has been doing some really heavy research into AJAX. Here's and excellent article "Build Dynamic Applications with AJAX at IBM DeveloperWorks with UML diagrams and all. It provides yet another high level overview of AJAX and with some design challenges related to AJAX technology. I've recently been picking up the research time spent with AJAX and have been able to implement some pretty neat stuff.

Thursday, September 22, 2005

Developing AJAX applications with Java

I was perusing one of my favorite Java sites (OnJava) and found a few interesting articles about developing AJAX applications in Java, "Developing AJAX Application the Easy Way" and "Introduction to AJAX". DWR looks to be interesting and plan to do some research about with it. The rate of change with AJAX in the past few months has been very fast paced. The Java community is jumping on the AJAX wave just like everyone else this summer.

Wednesday, September 21, 2005

More about our intelligence and the internet

Here's a followup to the intelligence and the internet topic, Are we getting smarter or dumber?. There are some good points about our future where brain fitness excercises will become more important and possibly highly recommended as the technology we use in the future will get smarter and more intuitive.

Tuesday, September 20, 2005

Evolution. Homo-digitas vs. Homo sapien

The evolution of human intelligence and the 'new skills' of using the internet is under heavy research. Here are a few recent articles of interest ("From ape to homo-digitas?", "Intelligence in the Internet Age" ). These 'new skills' are knowing how to effectively search on the web, heavy multitasking, compiling and organized vast amounts of information in a structured manner, and perform analysis/evaluation on retrieved information to derive an reasonably intelligent conclusion in a timely manner are important modern survival skills. All this while reading a newspaper, watching a DVD or cable TV (or both simultaneously, while also possibly listening to music) without compromising any of these tasks.

All the above must be done while being able to sort through all the junk information that constantly bombards us daily from all directions. This is creating a new 'skeptical analysis' skill when reading and absorbing information. In other words, don't believe everything you read, be skeptical and know what is good information. Our kids are acquiring this skill through their natural modern digital environment. We must learn this skill or acquire it through self habitual change.

How many times have you read a document or specification where you detected a 'copy & paste' for the most important parts. This used to be called plagiarism, however, today, it takes quite a bit more skill to detect this scenario due to the ease of acquiring digital information. Like my Dad always told me, 'read the newspaper everyday, it will make you smarter.' To this day, I still live by his advise with a few slight modifications. I still subscribe and read the physical newspaper daily however, I also read articles, websites, mags, etc. on a daily basis.

Monday, September 19, 2005

Extreme Programming and Agile Development

I have to mention the sites that have provided me with the best information about Extreme Programming (XP), Agile Software Development, and Refactoring. Researching and applying these techniques have yielded very positive results in the past few years.

Hiring the best people, effectively

This article was a decent discussion about the complexity of hiring discplined and competent developers in the modern IT world. I've always had a problem with this just as anyone else in IT and it provides some decent recommendations for making this process more objective.

This reminds me of auditions or try outs (i.e. sports). In other discplines where your performance is more critical than anything else (i.e. music, dance, theatre), the audition weeds out the candidates who 'just don't have it'. The same can be said for trying out for a sports team. Many people just don't make the cut even with their good intentions. They may have the right credentials, experience and references however, they just could not deliver when required. This is the same problem that exists with hiring good knowledge workers and software developers. It takes too long to find out if the candidate can perform.

The team and chemistry aspect of hiring is not discussed here.. that is a whole other set of management topics.

Art and Programming

Here's a relatively recent article (06/30/2005) about a topic that I revisit frequently. It discusses the relationship of art with respect to programmers, computer science, IT workers, and software engineering in general. During the boom years of the 1990s, as a computer scientist and software engineering manager I had a tremendous problem with hiring the 'right person' for the job. When jobs were plentiful, there were too many people who 'did not have what it takes' to be a disciplined and competent developer. Well, this article goes into detail about how creativity and art may relate to programming and provide excellent references about this topic.

Sunday, September 18, 2005

Domino web applications and AJAX

This past weekend, Linda (my significant other, her blog), handed me the Oct2005 issue of Lotus Advisor which has my favorite topic of late, AJAX, on the cover. Looks like AJAX has found its way into the powerful world of Lotus Domino/Notes which I have always liked since I got involved using Lotus Notes in the early 90s. In the late 90s, I lost interest in Notes/Domino development when IBM did not appear to have a web or Linux client in the works. I was side tracked with Delphi, Linux, Citrix, Java, and the web in general during this timeframe. Don't get me wrong, I continue to use Domino daily, however, just lost interest in development anything in it. After reading Oct2005 Lotus Advisor article "Developing Domino Web Applications The AJAX Way" by Richard Schwarz, the combination of AJAX and Domino has reinvigorated my interest in Domino development.

IBM released Domino7 and made a clear statement about the future Lotus Domino 8, IBM Workplace and their planned Linux/Eclipse integration. (InfoWorld article, PCWorld article) I found some great resources for Domino and AJAX. I just might get back into doing more Domino development with AJAX since it now appears that the future Domino 8 release code named Hannover will be the full integration of Domino and the java-based IBM Workplace. IBM even mentioned full browser and Linux client support. This would have really been nice in 1997. Better later than never.

AJAX

Like the rest of the web development world, I've been inspired with AJAX after seeing Google Maps reading a few articles and getting my feet wet with AJAX this summer. I think AJAX is the single most disruptive force to shake up the status quo of software development in the past 10-years since the web became critical. At least that is my initial reaction. In the next 12-months, we'll see how well this technology integrates itself into the IT world. My vote is that it will become significant. It may even force all various browsers to come to some type of Javascript behavioral common ground.