Thursday, February 16, 2006

Yahoo! :: UI Library

Often linked to their new Design Patterns Library, Yahoo! Released a UI library under bsd licensing today. How does it compare to Prototype?

The Prototype examples win hands down and Rico is over the top. Thanks Sabre!

[Normally I'd post this type of stuff and my earlier post on the Yahoo! Design Patterns Library to Haystack, but I'm trying to illustrate something here: Sabre and Yahoo both think it is a good idea to give this stuff away. And this stuff is core Ajax functionality. Focus.

Design Patters :: Yahoo! 'Patterns'

Yahoo! delivered an a Design Pattern Library under a creative commons license. I have only inspected one 'pattern' so far, but it looks like a good start. Unfortunately, their notion of 'pattern' is shallow, there is no mention of pattern language (although that is sort of what they are providing), so the effect is at least as much a description of modules or components as patterns. This effect is accentuated by their simultaneous release of a code library under a bsd license. Still, overall, the effect will be positive for developers with short term objectives.

SiteMesh :: decorators and composites for site integration

Integration of pages from multiple sites is neither easy nor pretty. As the SiteMesh docs explain:
There are many web application platforms that are in common use, and even more frameworks. Typically, a web-application is built for a specific framework on a specific platform (e.g. using custom JSP tag-libraries on the J2EE platform, a custom Perl collaboration API using CGI, or a pre-written application using PHP). A web-site may usually consist of many web- applications built with a variety of technologies.
The SiteMesh Overview provides a clear visual example of their approach and solution.

Sounds great, looks like I might want to use it, but what are the Ajax issues?

I ran into SiteMesh because of its use on the Grails project, which is a Rails-inspired framework for Java/Groovy.

Friday, January 27, 2006

Windows Application Spying

Windows sports an interesting implementation of a Proxy.

This can be easily accomplished by creating a proxy DLL, which contains a stub for each of the functions exported from the Winsock library. If the proxy DLL is named exactly like the original Winsock library (i.e. wsock32.dll) and placed in the same directory where the target email application resides, then the interception occurs automatically. When the target application attempts to load the original Winsock library, the proxy DLL is loaded instead. All the calls made to Winsock's functions are routed to the exported stubs in the proxy. After performing the necessary processing, the proxy DLL simply routes the calls to Winsock and returns control back to its caller. --Yariv Kaplan

Thursday, January 19, 2006

Allegro CL 8.0 with AllegroCache Now Available

Here's the deal:

Here's the confusion:
  • Most computing problems are hard, but 80% of the money is being spend on computations that are inherently easy. An accounting system is inherently easy. Scaling it for enterprise use at WallMart is not easy. Oracle, IBM, SAP are good at scaling -- they have good tools for scaling.
Because of the heard mentality among VCs, CEOs, etc., most companies try to use the tools that scale easy problems to solve hard computationally problems.

[Gemstone and DB40 also have offerings which address (some of) the types of problems addressed by Allegro CL.]

For a conceptual overview of these issues, Franz has an excellent, if visually uninspiring, presentation. In all honesty, its the best summary of these issues I've encountered in 15 years of dealing with OODBs.

OK. The fact is some hard problems need to scale as well.

Allegro CL won't address every concievably problem, but it is designed to play well with others. This design has been honed over many years, many releases. [The 8.0 version number is an honest version number.] 8.0 includes important SOAP updates and their relational database integration is excellent.

Coders should check out their 24 minute demonstation.

I had the good luck to be exposed to some world class FORTH programmers at the beginning of my career. They placed a lot of emphasis on the notion that simple problems should be easy and hard problems should be possible.

Advanced Java and LAMP tools, such as Eclipse, Ruby on Rails, and OODBs like DB40, make solutions to a wide range of simple problems simple. They should be exploited because of their wide distribtion and adoption until they start to show their limitations. When they do, Allegro CL 8.0 may well provide a good next step. Because of the excellent SOAP and RDB support, advanced solutions can be part of enterprise work and a sudden, disruptive transition is not required.

Tuesday, January 17, 2006

Zeldman Considers 2.0 Hype

A List Apart's Zeldman has some unkind words. However enamored one might be with Ruby on Rails, Zeldman's view is worth considering -- especially if you are about to launch an RoR or Web 2.0 project.

One issue for me is the "...if all you have is a hammer..." thing.

Many of us need rich clients. Its well to consider where Ajax fits the bill and where something like eclipse RCP (eRCP) fits the bill. Speaking of eRCP, there is some cool stuff coming out in the eclipse GMF and eclipse Forms.

RoR and eRCP are radically different ways of approaching rich clients. Simple projects can (and should) use a simple bag of tricks. Are all projects simple?

Thursday, January 12, 2006

Mashup Camp

The Ward and Bjorn are headed for Mashup Camp.

Me too.

The loosely coupled systems made possible by adoption of web services and open APIs (the technology and especially the new business models) are taking off.

Google Earth + SketchUp

Check it out.

How could you find a better example of a platform based upon open APIs?
Is the platform Google Earth or SketchUp ?

I hear its especially amazing on the new Macs.

It is worth looking at the end user instructions for using the Google Earth and SketchUp together. They may seem a bit complex to non-developers, but even skimming over them, most people can probably see that integration of a SketchUp based building into google earth is not a multi-month project. It requires far less skill and knowledge than most power users possess.

Tuesday, January 03, 2006

POJOs

Plain Old Java Objects, a term coined by M. Fowler. He can explain the original inspiration best:
“I've come to the conclusion that people forget about regular Java objects because they haven't got a fancy name - so while preparing for a talk Rebecca Parsons, Josh Mackenzie and I gave them one: POJO (Plain Old Java Object). A POJO domain model is easier to put together, quick to build, can run and test outside of an EJB container, and isn't dependent on EJB (maybe that's why EJB vendors don't encourage you to use them.)” ~ Martin Fowler
On the plus side...
I'm not sure I use the term as he intended, so reader beware. Here are a few things I like:
  • I like to think of my domain as a graph of active objects. Think of the Actor model in a distributed system rather than a bunch of static schema which are populated by access to a relational data base.
  • I like to think I can pickel my graph and send it somewhere w/out losing the state of my computation.
  • I like to make sure all external (file, db, etc) access takes care of their own cleanup -- especially exception handling. If exception handling needs to percolate accross major system boundaries, it should be done logically, not physically.
  • Was the source of my object graph a web service? xml file? relational db? object db? word document? My clients should never know these deep, and often dark, secrets.
  • I claim that EJB thinking is hard to eradicate. We need to raise the concept of Objects which send each other messages and behave in real time to the top level of the system.
Concerns
Many systems need to be ugly in their implementation because they need to support efficient transactions, lots of information, too many objects, etc. At some point, the core design of many systems must take these things into account; they cannot always be left to 'implementation'.
However, in many systems and system components, these issues are not serious.
For example, 8 gigs of ram on commoditiy servers is cheap. 2 gigs on a laptop is cheap. That is a lot of information. If my application has more information than that, perhaps my real problem is getting relevent information.
Techniques for using AOP to separate the concerns mentioned above is an area of active research and development. If these concerns are not pressing today, someone may solve them for me tomorrow.
Search
Search is an issue which is not straightforward if POJOs are cleanly separated from underlying database connections.
  • RDBs do a lot of search well.
  • RDBs make a lot of search effectivly impossible.
A useful implementation of a domain will probably contain serious infrastructure for search, sort, filter. Of course there is no need to start from scratch. Prevaylor and db40 are both useful starting points. Extensions to Java (Groovy) or languages which support closures directly (Ruby, Smalltalk, Lisp) are worth considering.

Wednesday, December 14, 2005

Roll Your Own Search Engine

Use a human to mediate the resuls.
http://radar.oreilly.com/archives/2005/09/rollyo_roll_your_own_search_en.html

Tuesday, December 13, 2005

Ruby on Rails (RoR) :: The Unofficial FAQ

In honor of the release of Ruby on Rails 1.0, I have provided a brief FAQ.

Is RoR a transformation technology?

or Is RoR a social movement?

Yes.

RoR brings simplicity to the LAMP/XAMP stack.
RoR helps developers focuses on domain problems, not technology. [ If you are in business, your domain is your business. If you are a neuroscientist, neurons are your domain. If you are an architect, buildings, doors, and windows are your domain.]
RoR is a portable foundation (Windows/Linux/OS/X) for building internet applications significantly simpler than is common with conventional (Java, .Net, and even LAMP) tools. Its creeping into many projects and companies to augment or replace those tools.
At this point things are a bit weird, because not everyone is talking about how they are multiplying the productivity of their developers.
Can you think of any companies that might not want to brag about their progress to their competitors?

What is a Ruby and who needs one on a rail road track?
The Ruby we are talking about here is a programming language, a beautiful programming language, like its name sake is a beautiful piece of gravel. Ruby has characteristics [objects, closures/blocks, iterators] that make it easy to write short, clear, programs -- largely because they make it easy to write programs about programs, objects, and functions. The Rails parts comes in because all that power means it can be hard to do simple things in a simple way. RoR is a set of conventions, with supporting tools, that help programmers do simply things simply; even better, its easy for RoR programmers do things in the same simple way.

Wednesday, November 30, 2005

The Beauty of Simplicity :: Google and More

Linda Tischler has an interesting article on Fast Company's site :: The Beauty of Simplicity.
A significant portion covers work by Marissa Mayer, Google's director of consumer Web products, but there is much more -- interesting views from Royal Philips, MIT's Media Lab, Intuit, etc.
Business Models
Rather than simply focusing on technology of human interaction, Tischler reports on the connection between a companies business model, the simplicity of its UI design, and the ability of customers to understand the business. The report from Phillips is especially interesting.

Yellow Machine :: cheap terrabyte

Anthology's Yellow Machine looks like a nice solution for anyone with 400 - 1200 gigs of images. Cheap ($1,200) too!

Thursday, November 10, 2005

Crystal Reports for Eclipse

Crystal Reports for Eclipse will be released in Q4 2005.
In addition to an eclipse based application, an embded version will be available. This will allow tight integration with any application based upon the eclipse plug-in architecture.
Who cares?
Anyone who wants to place powerful reporting contol into the hands of a specific class of end users:
  • Physicians
  • Archiects
  • Building Contractors
  • Project Managers
  • etc.
Open Question:
Will Crystal Reports for Eclipse support reports based upon POJOs (Plain Old Java Objects) or just relational tables? The answer is probably no. For that BIRT or Jasper Reports is probably required.
Therefore, although Crystal Reports will probably be less powerful than BIRT or Jasper in terms of data it can report on, but it's raw reporting power is impressive and -- often more important -- its tools are familiar to a wide range of power users and desktop level developers.

Friday, November 04, 2005

eclipse collaboration in 2005

Check out Ward's map of eclipse committers.

[A 'committer' in open source projects is someone with the right to alter the code base without additional authorization. The committer rights are tied to the individual, not the company she/he works for. A developer gets committer rights from the existing committers, not from any company.
At eclipse.org, two committers are elected to the board of directors. They have voting rights equal to representatives from sponsoring organizations like Oracle, SAP, IBM, Borland, Sybase, etc. who put in up to $250,000 per year, depending upon their revenues.]

Tuesday, September 20, 2005

Wipe That Card

Don't loose your hotel room card. As this Computerworld story reports, they often contain name, address, and credit card information in readable form. Of course, if some one finds your card, they will have to spend $39 to read it.

Saturday, September 17, 2005

Lattix LDM for Eclipse :: Revit for Software

Neeraj Sangal was the brains behind StructureBuilder, an interesting tool from WebGain that did not ever get the attention it deserved. He has a new company and a new, for software, type of tool based on DSMs (Dependency Structure Matrix) and popularized by MIT's Sloan School during the 90s when they were applied at a number of large companies such as Intel and Boeing to analyze their complex work flows and organizations.

Lattix LDM is not the type of tool that normally interests me, but I liked so much about StructureBuilder that it will be hard to avoid taking a look at this.

Lattix LDM is, more or less, Revit structural for software.

XFORMS -- Then and Now

Micah Dubinko's Ten Favorite XForms Engines summarized the landscape two years ago. This spring he summarized his current favorites.

A more complete summary of current work is available from W3C.

XForms can help pretty much any application surrounding using html forms, but its value is much broader because for message and document centric applications, it provides a nice fit for many problem domains such as B2B and catalog workshop. It would probably be a nice foundation for a set of product (as in software product) configuration tools -- Spring, Cocoon/Leyna, JBoss, Tomcat, Hibernate, JLibrary, etc.

From an application developer's standpoint it allows a combination of workflow support with rich data -- including a persistent form of object graphs.

Form Faces
is an especially interesting implementation because it offers platform independent XForms and thereby avoids the standard Microsoft end run around standards -- Infopath.

Summary of a technical presentation of an XForms use:
The difficulty of developing and deploying commercial web applications increases as the number of technologies they use increases and as the interactions between these technologies become more complex. This paper describes a way to avoid this increasing complexity by re-examining the basic requirements of web applications. Our approach is to first separate client concerns from server concerns, and then to reduce the interaction between client and server to its most elemental: parameter passing. We define a simplified programming model for form-based web applications and we use XForms and a subset of J2EE as enabling technologies. We describe our implementation of an MVC-based application builder for this model, which automatically generates the code needed to marshal input and output data between clients and servers. This marshalling uses type checking and other forms of validation on both clients and servers. We also show how our programming model and application builder support the customization of web applications for different execution targets, including, for example, different client devices.
[Using XForms to Simplify Web Programming, by Richard Cardone, Danny Soroker, Alpana Tiwari of the IBM Watson Research Center. Available from the ACM Portal


A few implementations...
  • Form Faces is based upon pure JavaScript providing platform independent XForms and thereby avoids the standard Microsoft end run around standards -- Infopath.
  • Chiba is a java/xlst based server engine that works with existing browsers. Distributions exist for tight integration with Cocoon, . The Chiba Cookbook is especially interesting, because the designers intent and basic usage patterns are explained clearly.
  • Deng is an XForms browser implemented in Macromedia's Flash/ActionScript.
  • X-Smiles is an entire Java based browser supporting XForms and other emerging W3C technology. While it supports browsing on conventional devices, its orientation is toward exotic devices.
  • Manifest is an xml based content management system ,supporting XForms through a Chiba integration. It uses MS Office products to generate the content, transforming it to XML suitable for a Chiba-enabled Java application server. The balance between the familiarity of Office and the power of an open back end is appealing. Can CSS page designers do enough customization for great layout? Probably, especially if it is possible to capture the XML into a Cocoon style pipeline at some point.

Sunday, August 28, 2005

Usability and open source

Interesting intersection -- read about the birth of a movement