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.