Emilio Suarez's WebLog

Thursday, September 11, 2008

JIRA personal license

I have used JIRA in the past and I consider it the best issue/bug tracking system... and now, they released the latest version 3.13 with the option to install it with a personal license.

I already have my personal license for Confluence and this is a great addition to my set of personal productivity tools... thanks Atlassian!

Wednesday, September 10, 2008

iPod Touch 2.1... thanks Apple!

Finally... the 2.1 firmware update for the iPod Touch fixes a number of "big" problems that the 2.0 version introduced:

  • Backup time in my iPod with about 40 applications went down from 8 hours to 1 minute... (something was really wrong before...)
  • Updating application is "a lot" faster
  • Updated applications retain their position instead of being repositioned to the end
  • Applications don't "hang" the iPod anymore (so far...)
and there are also a number of improvements including the Genius button while playing songs, and also a really good one: The podcasts list now displays how much time left you have on the ones you haven't finished hearing... this is great for the long podcasts I listen to (TWIT, BOL) which takes me several sessions to complete.

All in all, a very needed updated, specially for the backup issue... thanks Apple!

Tuesday, September 02, 2008

Google Chrome

What a surprise to find out over the Labor Day weekend that Google is finally releasing its long-rumored Web Browser: Chrome.

Google has many interesting projects... some make it and some fail... but in general one can see that most of their applications are designed to be run "in the cloud", and all those applications rely heavily in Javascript for the UI interactions... not Flash, not Flex, not Silverlight... so it was just a matter of time for Google to create the ultimate application that finally will tie all those applications and give them an extraordinary boost.

As they mention in the Comic book released for its launch, there are strong architecture differences between Chrome and the rest of the browsers:
  • it creates multiple processes instead of multiple pages/sites in one process
  • it provides a task manager for all its internal processes
  • it has a completely rewritten Javascript engine (V8)
  • it is built on top of the WebKit engine (the same that Safari uses)
  • a more streamlined UI with Tabs taking a primary role in the browser. Tabs become processes.
  • The "Omnibox" is the URL field for each tab and has more than "google suggest" and "auto-completions" features.
  • "Incognito" mode... browser without leaving a trail.
  • a better "sandbox" to improve security
  • Google Gears already built-in.
  • it is completely Open Source.
... still waiting for the Google Chrome download link to appear...

* Update * The link is live now... download Google Chrome here!

Wednesday, July 23, 2008

The Dojo Toolkit

It's been a few weeks now that I have started learning Dojo and building a prototype for a web app and I have to say that I am impressed with the toolkit and how well it is architected.
To get me started, I started reading the book "Dojo: The Definitive Guide" from O'Reilly on my Safari bookshelf, and also ordered the print copy of the brand new "Mastering Dojo" from the Pragmatic Programmers.

The O'Reilly book is good, and it explains the basics of the Dojo Core components and the Dijit library of widgets. It does not go into any of the Dojox components that are still being worked on and are in various stages of maturity. But in general is a very comprehensive guide to everything you need to get started with Dojo.

On the other hand, "Mastering Dojo" goes deeper into the architecture of Dojo and how things work together. It even has a good section at the end where you build a simple RIA using all the components, widgets, layouts and connectors that you would use for building a complete application.

In general there is a steep learning curve to understand how to use all the things that Dojo provides, but once you start learning all of them, you get the full power of Dojo, which mainly hides all the complexities inherent to dealing with multiple browsers, asynchronous communications, component manipulation and object oriented programming in Javascript.
Another big thing that Dojo contributes, I think, is the open and extensible architecture that takes in consideration advances and changes to browsers and standards in the future, so that applications built now, can make use of the new features of the next generation of browsers with minimal impact.

I am still working my way learning it and exploring it, but so far, I am fairly confident that choosing Dojo was the right decision for building the next generation of web applications in my current job. There has been an explosion of Ajax-related libraries and frameworks in the last few years and I think Dojo is leading the pack with a very strong foundation.

Friday, May 30, 2008

RIA Technologies

"Rich Internet Applications" (RIA) are the current standard when in comes to developing a highly interactive web application and usually when people mention RIA, they imply Ajax. I named this post "RIA Technologies" because not everything that implements a rich user experience is based in Ajax technologies... but here I'll explore which technologies make more sense for the project that I am working on now, which requires the development of a browser-based monitoring application, which we want it to be extremely user-friendly, interactive and intuitive.

So I took a quick look at what are the current technologies leading the pack in the RIA world:
  • Dojo - a very powerful framework built
  • prototype - a low-level and very powerful Javascript foundation
  • scriptaculous - provides very slick animation, drag and drop and other features
  • Google Web Toolkit GWT - a Java-to-Javascript compiler that has the backing and support of Google
  • Google Gears - the offline engine for web applications that powers Google Reader and more
  • Flex and Air - Adobe's answer to RIA = Flash applications, with a powerful offline engine
  • OpenLaszlo - competitor to Flex which has a strong following
  • Yahoo User Interface YUI Library - set of utilities and controls for building UI widgets
  • JavaFX - Sun's and Java's response to Ajax: neither Javascript nor Flash...
  • Silverlight - Microsoft's RIA platform
  • and many more...
There are also a number of books, blogs and conferences that are talking Ajax and Web 2.0 which seems to be very popular lately.

Blogs:
Books:
Conferences:
In the last few years, the explosion on things related to Ajax, Web 2.0 and RIAs has been phenomenal... as AjaxWorld Magazine predicts... 2008 is the decision year for RIAs.

As with any other technology, you'll have to use the right tool for the job. Some applications will benefit from a Flash-based UI, where charts and animation are more important (marketing sites), where other applications that need more user interaction and data entry may benefit more from using an Ajax-based framework.

What will I end up using? that's the question... but Dojo is at the top of my list for a reason ;-)

Saturday, April 12, 2008

Structure101

As a recent winner of a Productivity Jolt Award, Structure101 gained my attention, and I was also drawn to it by listening to an interview with Juergen Holler one of the co-founders of the Spring framework on Software Engineering Radio.

I played with the trial version and within minutes I was able to create diagrams that displayed graphically the architecture of the application, but most importantly, violations to the the architecture. How does it find violations? These are merely upstream dependencies that basically assumed from the way packages are structure in Java and how Classes call each other. So when classes in two packages reference each other, you have circular dependencies, which are bad for your architecture.

I loaded our application code and in a matter of minutes I was blown away by the simplicity and the power of Structure101 to analyze the organization and design of your code. Structure101 performed the analysis and created the different perspectives where I could see problems in the design. There are 4 perspectives:

  • Overview perspective - where it displays a summary of issues and findings on the code (tangles, architecture violations, metrics, etc.)
  • Composition perspective - where it displays dependency graphs of packages
  • Slice perspective - where it displays the violations, complexity and tangles at different abstraction levels of design
  • Architecture perspective - where it shows a diagram of the architecture and the violations, and makes it very easy to rearrange or create your ideal architecture and see what you need to do to get there.
  • XS perspective - basically shows the relationship of two metrics: size and excessive complexity (XS)
  • Collaboration perspective - this is basically the visualization of afferent and efferent dependencies between the different packages and classes.

Structure 101 is a desktop application and is available for Mac, Windows and Linux and supports Java, C/C++ and Ada and it also has a Web Application component, that allows for publishing diagrams and allowing external users navigate through the different perspectives in a read-only fashion. There are also plugins for the major Java IDEs, IntelliJ and Eclipse that connect with the remote repository and can provide instant feedback to developers when they are breaking the architecture. This is great specially for big teams, where Architects don't have the bandwidth to be policing all the code all the time.

Kudos to Headway Software for a great application, and you can get some more insight information on Chris Chedgey's blog.

Monday, December 10, 2007

Crappy Java?

Well, it's been out since October, but I recently came across it and looks like another tool that should go into our build process. Crap4J. This is the latest offering from Agitar, and graciously it comes in the form of Open Source... great!
As someone who is greatly interested in producing quality code, I see this addition to my arsenal of open source tools as a very good one. Along with PMD, Findbugs and others (in particular the code inspections on IntelliJ IDEA), Crap4J will now be part of the continuous build process.
Now, I am not comparing it to Clover, which is also in use at our project, since Clover is commercial and Crap4J isn't. The great thing about Clover is that it finally correlates complexity with code coverage, giving you very nice indicators of what code is at risk and where you should spend your 80/20 time increasing test coverage.

Crap4J is the realization of an idea that Alberto started in his blog a few months ago... "Pardon my French but this Code is C.R.A.P." and we can finally see the new CRAP metric out in the development community and materialized in a tool. Even though it will be criticized and challenged, I think it is a welcome addition to the arsenal of metrics, and specially because it comes with a catchy name ;-)