Catching a Wave

Posted by F Mon, 01 Jun 2009 01:38:00 GMT

I think Google Wave is a big thing.

The idea of replacing emails with feeds of conversations is not a new one. I remember brainstorming about this with friends, and here is an old article around this idea from an ex coworker.

But the guys behind Wave not only turned this idea into reality, they are pushing it very far, with great ambition and with the power of Google. Wave might not only replace email and instant messaging: it may easily become the main user interface for many software systems.

One good thing is that the Wave protocol is open and designed to be federated, much like today's email (where you can send emails to users on different domains) and unlike popular instant messaging systems and social networks (which are centralized proprietary silos).

The key for Wave adoption seems to me a good Waves-email bridge. Imagine Google's GMail being replaced by Google Wave, but having good support for legacy emailing.

Online Mind Mapping

Posted by F Thu, 06 Sep 2007 02:06:00 GMT

A couple of smart friends of mine are strong advocates of mind maps, so much in fact that they had nothing better to do than develop http://wisemapping.com. It’s a pretty impressive online mind-mapping tool with everything you’d expect these days from a web two-oh application: rich UI, collaboration, tagging, sharing.

Here’s my first try, presenting the basic ideas behind DITA:

It’s still a private beta, with many more features coming.

I'm sold to Beryl

Posted by F Thu, 01 Feb 2007 00:27:00 GMT

I’ve been trying Beryl (a 3D Window Manager for X) and I’m pretty impressed.

True, it’s full of useless graphical effects and pure eye-candy. But it also provides practical features and is very configurable.

Among the actually useful things: fast and practical ways to change windows, desktops, to expose the desktop area, scale and pick a window (ala Mac OS X’s “exposé”), visual notifications, desktop zoom, screen annotations.

Unfortunately, most demo videos concentrate on the graphical effects instead of the useful features, but they still give you an idea of what it can do.

I really like the idea of using a “water-ripple” effect as an unobtrusive -but impossible to miss- way of receiving notifications.

It integrates nicely with KDE, Gnome and pretty much any desktop environment. And you can easily switch back to your previous window manager at any time on-the-fly.

I have it running on my work laptop, with Fedora 6, KDE and AIGLX.

Very nice.

Variable Severity Logging 1

Posted by F Sun, 24 Sep 2006 23:21:00 GMT

Most software products and logging frameworks produce entries in their log files with different severity levels (say, from Debug to Severe). Then, you can configure which level of messages you want the application to log.

At development time, you may want all messages to be logged. But once in production, you normally configure things so that only Warning and higher messages get logged (for performance, space and other reasons).

The problem is that when a Severe message arises you may need more detailed (Debug level) information in order to understand the actual cause of the problem. So, a common practice is to increase the logging level at that point, and wait for the problem to happen again –not very effective.

This is one of the problems that motivated the guys behind LogBag. The idea they propose is nice and simple:

Make the system write only Warning (and higher) messages to the log, but when such a message is logged, it should also include some lower-severity messages that occurred right before and after this one.

It’s one of those good ideas that might seem obvious, but for some reason nobody thought (or did anything) about before.

To implement this, the logging system could keep a buffer of the last N messages generated by the application, and when a Warning (or above) message comes in, the whole buffer is flushed to disk. This should not be too hard to implement, since most logging frameworks already use some kind of buffering, in a producer-consumer pattern, to improve concurrency and performance.

From the LogBag site:

You keep on putting things in a Log bag. Then whether the entire log bag gets written or not depends on the highest severity level in the entire bag. So either you write everything or you write nothing.

I think it’s a nice idea. I bet the technical support guys would like it too :-).

BEA Systems acquires Fuego

Posted by F Thu, 09 Mar 2006 04:31:00 GMT

Old news: BEA Systems acquired Fuego Inc..

Starting March 1st, virtually all Fuego employees (including myself) became BEA employees. There are few organizational changes, which helps minimize disruptions on our productivity and service.

I’ve been with Fuego since its early days. I started working for Fuego’s ancestor company, InterSoft, as a Java/C++ developer in 1997.

I have different feelings about the acquisition. On the one side I feel a bit nostalgic: the company I somehow helped build is no more. But on the other side I’m proud to say Fuego was no “bubble”, and I’m very positive that BEA’s infrastructure and steering will provide the power to support the crazy growth we are experiencing, and bring the product to the next level.

All analysts are talking about BPM systems these days. BPM became a buzzword in the Enterprise software market. This is nothing but a proof of how far ahead the founders of Fuego were (and probably how clueless some analysts are?): the product itself was started in 1997, and it was called jBPM (yes, the same name later taken by the now JBoss-sponsored jBPM project).

I left Fuego for a job at a dot com in 1999. I returned a year later, after an invitation to join the new Fuego headquarters in Dallas.

I arrived in Dallas in Jan 2001, together with 2 other members of the FuegoBPM development team. Our objective was kinda the reverse to that of an off-shoring endeavor: instead of outsourcing software development and building an off-shore team to lower costs, we had to bring the technical knowledge to the US operation and build a good team of technical people to support and implement solutions with the FuegoBPM product for the US market.

Here we are five years later. Profitable, with a solid market position, and busier than ever.

FuegoBPM is now BEA’s AquaLogic BPM Suite, a component of the AquaLogic Business Service Interaction product line.

Again, I must congratulate founders Felix and Emilio for such an impressive vision and execution, and everyone who worked at Fuego and helped it got this far.

Version Control Systems and Open Source 2

Posted by F Sun, 11 Dec 2005 20:07:00 GMT

If you haven’t looked at the available Version Control Systems lately, you’d better look again.

About 5 years ago, CVS was pretty much the only open source Version Control System in use, and it’s still very popular.

But in the last few years, a surprising number of new and really good open source version control systems came to life. Like most open source projects, their authors started them to scratch a personal itch. In this case, the itch was caused by some important limitations in CVS:

  • The directory structure is not versioned (it only keeps history of files)
  • Impossibility to rename, move or copy files (without loosing history)
  • Operations (like commits) are not atomic
  • No concept of “change sets”
  • Very expensive (inefficient) branching mechanism
  • Limited merging capabilities
  • No support for decentralized repositories (distributed development).

Don’t get it wrong though: CVS is a very respectable piece of software: it’s been first released more than 20 years ago!

Among the new open source alternatives I found these to be quite popular:

  • Subversion – Explicitly designed as a replacement for CVS. I would say it’s achieving it’s goal. Many big projects moved from CVS to Subversion, like KDE, GCC, Apache.

  • SVK – Built on top Subversion’s libraries. It offers additional functionality, like distributed repositories and better merging. It integrates with existing Subversion repositories, so it’s more an extension than an alternative to Subversion.

  • Arch – Very powerful and decentralized. The current version 1 received many complains around usability, which spawned new projects like Bazaar. But version 2 promises many improvements, including ideas from Bazaar and other systems.

  • Git – Developed by Linus Torvalds and other Linux Kernel hackers when they were forced to stop using the commercial BitKeeper because of licensing issues.

  • Darcs – Written is Haskell.

  • Codeville – Apparently has an advanced merging algorithm without the problems of 3-way-merge.

  • Monotone

Subversion, like CVS, is designed around the concept of a centralized repository: all developers work against one single repository. All the other systems mentioned above are decentralized, allowing for more distributed development: several repositories may exist (say, one per developer) and they are synchronized in a peer-to-peer way.

If you never used a decentralized system, it may sound like a crazy idea. But for some project teams, like the Linux kernel hackers, a decentralized system is a requirement. They cannot rely on a centralized repository (even the Subversion team understands this).

Some projects use decentralized systems but still define a main repository against which all developers synchronize often. Then only a few maintainers (main developers) have write permissions to the main repository, but anyone who wants to contribute is free to create a local (personal) branch off the main repository, without even notifying the maintainers. When a contributor is ready to share his new code, he/she sends a patch to the maintainers.

I think the big Open Source projects are the most demanding users of Version Control Systems. And companies can learn a lot from them.

May be, most in-house software development teams do not have such strong requirements on source control because they don’t face all the obstacles found in distributed Open Source projects: people working on and off, at different times with no clear schedules, from different time-zones, little (if any) face-to-face communication, hard to have “all-hands” meetings.

But, with the increasing number of companies outsourcing part of their development teams, many of these same problems arise. So I bet many companies would benefit from a more decentralized approach.

I only have experience with Subversion and SVK. That’s what I’m currently using. The good thing about SVK is that it provides a decentralized system that is compatible with Subversion repositories. This allows you to create your own local branches off any Subversion repository you have access to.

So, if your are still using CVS, you should take a serious look at the new alternatives. If you think a decentralized approach is not for your team, then go with Subversion.

I like SVK because I need to interact with Subversion repositories. But if you are defining a new project and want it to be decentralized, you should probably look into some of the naturally decentralized systems.

For more information:

AT&T Text to Speech 1

Posted by F Tue, 22 Nov 2005 18:25:00 GMT

A co-worker pointed me to AT&T Natural Voices, a Text-to-Speech research project from AT&T. I tried the online demo and I’m really impressed.

It’s been a long while since I last tried a TTS system, so may be I’m just late to the party… but this one produces very natural speech. I tried a couple of English and Spanish voices, and all seem very real.

I knew about the Festival project, which provides a free speech synthesis system, but if you check the online voice demos you will probably agree that it’s not on par with AT&T’s.

Oracle DB Express 1

Posted by F Tue, 01 Nov 2005 21:45:00 GMT

I just realized about an interesting move from Oracle. They released a Beta version of their new Oracle Database 10g Express Edition.

This Express edition is free of charge. It is free not only for production use, but also for distribution.

These are the limitations it has:

  • It restricts itself to use only one CPU
  • Only one server and database instance (SID) per installation
  • Database size limit of 4GB

Looks like a good deal for ISVs, developers and small shops. It’s a good way for getting more mind-share among small software companies and younger/future developers.

I tried it on my Linux laptop and got it up and running in a couple of minutes. The Express name does not make it any lighter though: it still consumes a good chunk of RAM, and the database instance allocates 1GB of disk. So I’ll stick to PostgreSQL for powering this blog :-).

The only installer for Linux is an RPM archive. I’m using Fedora 4 and it worked just fine.

The pre-installation script checks for at least 1.5GB of swap space:

[root@sequoia local]# rpm -Uvh oracle-xe-10.2.0.1-0.1.i386.rpm
Preparing...                ########################################### [100%]
This system does not meet the minimum requirements for swap space.  Based on
the amount of physical memory available on the system, Oracle Database 10g
Express Edition requires 1515.0 MB of swap space. This system has 493 MB
of swap space.  Configure more swap space on the system and retry the
installation.
error: %pre(oracle-xe-10.2.0.1-0.1.i386) scriptlet failed, exit status 1
error:   install: %pre scriptlet failed (2), skipping oracle-xe-10.2.0.1-0.1

Since I don’t (and won’t) have that much space on my swap partition, I cheated by forcing RPM to skip the pre-condition script using the “–nopre” option ;-) :

[root@sequoia local]# rpm -Uvh --nopre oracle-xe-10.2.0.1-0.1.i386.rpm
Preparing...                ########################################### [100%]
   1:oracle-xe              ########################################### [100%]
Executing Post-install steps..........
You must run '/etc/init.d/oracle-xe configure' as root user to
configure the database.

After running the /etc/init.d/oracle-xe configure script, it was up. The SID of the database it creates is “XE”.

It did NOT create any application icons on my KDE 3.4.2 desktop as the documentation suggests. No big deal for me and it’s a Beta anyway.

It also comes with htmldb, which is a handy web-based tool for administering Oracle and building simple DB apps. Go to http://hostname:port/htmldb to access it. The port, and the system user password are the ones specified when running the above oracle-xe configure script.