Posted by Eitan
Fri, 07 Apr 2006 13:26:00 GMT
Yesterday I stumbled across a most excellent utility: vnc2swf. It uses vnc to record desktop sessions as a swf movie. Pretty nifty.
So I played around with this a little and put together a really rough cut of a session with a jMatter demo application that I built a year ago in 3-4 hours' time: the NFJS Manager.
Check it out!
Posted in jMatter, Java | no comments
Posted by Eitan
Fri, 07 Apr 2006 13:19:00 GMT
I strongly believe that the shear amount of features I have put in to jMatter is impressive. That sounds really corny coming from me.
But think about it. Take the naked objects framework as a comparison. They do a monumental thing by providing a user interface for your model objects. jMatter adds polymorphic support, search support, wizards, hibernate persistence, calendaring, validation, more data types, commands on value objects, persisted queries (smart lists), and more.
What I find interesting is that the number of ideas for features that I have is still as abundant today as it was a year ago.
Most recently, I added the ability to perform associations in place, via a new little widget that dynamically searches for objects of the matching type. Say, you're building a little flight planning application and you're defining a new trip from LAX to DEN. As you type the airport id, jMatter will perform a dynamic lookup. You just type "LA" and the handful of matching results are there for you to pick from. Press 'enter' and the association is made.
I also went ahead and made all listings' searches dynamic. I also recently licensed and integrated JExplose, a wonderful little expose-like utility for Swing.
I am discovering that changing one's mindset to embrace what is now termed "the naked objects architectural pattern" unleashes a new wave of ideas and creativity. Will the world catch on to this?
Anyhow, that's the update. Things are looking really good.
Posted in jMatter, Java | no comments
Posted by Eitan
Tue, 04 Apr 2006 14:49:00 GMT
Approximately a month ago, I contracted to perform a small software project using the jMatter framework.
I completed the project in a little under two weeks. The original estimate for doing this project without jMatter was in the order of two months. More specifically, the original estimate was 350 hours of development time, whereas I took 70 hours, using jMatter.
So, regarding the value proposition of jMatter: the license fee is $500 per year, and that's per developer. i.e. there are no deployment or royalty fees.
On a single project of the type I completed, the savings of 280 hours of development time, even at a modest rate of $65 per hour represent close to $20,000. That's 40 times the licensing fee, recouped in two weeks' time. Not bad.
Assuming you do twelve such projects in a work year, you're cashing in 500 times the licensing fee per year.
So, is jMatter a good value proposition?
Posted in Java, jMatter | no comments
Posted by Eitan
Fri, 31 Mar 2006 13:35:00 GMT
I recently read a wired.com article titled "Steve Jobs' Best
Quotes Ever".
One of the quotes cited in this article answers the question: Why not Apple. That is, why you
should opt for Linux in favor of MacOSX.
Here is the quote:
I've always wanted to own and control the primary technology in everything we do.
-- BusinessWeek Online, Oct. 12, 2004
I really think this says it all. He's got you by the balls (pardon my French).
no comments
Posted by Eitan
Thu, 16 Mar 2006 04:10:00 GMT
Like many others, I recently read Graham Hamilton's AOP: Madness and Sanity
For some reason though, the rebuttal won't leave my mind. Maybe I can get this off my chest with a small blog entry.
OOP has inheritance. Inheritance I'm coming to think is a form of AOP. You can subclass an existing class, override a method, and voila, you can have around() advice for free:
public void overriden()
{
before();
super.overridden();
after();
}
Also, inheritance has already done to OOP what Graham fears will happen to programs when people start using AOP: make them confused. Many times as we read OO code, we wonder why our application is behaving in a certain way. Oftentimes we discover that we overlooked the fact that an inherited class overrode the behaviour we expected to be invoked. Or sometimes we expect to find a method or field in a class, and then say "ah, of course; it's not here because it must be declared in a superclass."
IDEs and Javadocs help us with our confusion by telling us: "this is the list of classes that extend this one," or "here is the inheritance hierarchy for this class," and so on.
So with AOP things need not be any more confusing or any different. Soon we'll be able to easily ask similar questions: "show me a list of all classes that advise this method or class," for example.
I guess what I'm trying to say is that AOP need not be looked at as something so foreign to the way we already program. Instead I like to think of it as a fairly natural extension of something we already do. We just have more flexibility in terms of how we go about solving problems, modeling things, keeping things more refactored. That's what AOP gives us. No code duplication: going from somewhat DRY to really DRY.
Posted in Java | no comments
Posted by Eitan
Thu, 16 Mar 2006 04:05:00 GMT
I admit it. I must be a geek because this stuff really excites me. I've been reading the Dapper Drake updates recently and all the new and cool stuff coming down the pipeline, including GNOME 2.14.
I like the momentum. Xgl looks to have a very bright future and it's nice to know it's already available (in some kind of alpha or beta mode) on Dapper. Lots of things seem to slowly be coming together, cairo for smoother graphics, gstreamer for better audio, better power management, wifi support.
I'm thinking by the end of 2006, the Linux Desktop will be better than ever.
no comments
Posted by Eitan
Wed, 08 Mar 2006 02:27:00 GMT
I'm not sure where to begin on this one as too many thoughts are flooding me at the same time.
I recall doing web intensely in the mid 90's and being way ahead of the curve with things such as javascript. In the last couple of years, I have essentially dropped out of working the web, so to speak, focusing instead on the world of Java Swing.
Does anyone remember Netscape's effort to create the perfect platform for developing web applications? It was based on client-side javascript + server-side javascript. Of course, it went nowhere and I doubt many will remember this technology. Marketing-wise, everything they did was called live-something-or-other, as in livescript, liveconnect, and what not.
In hindsight, they were sooo close! Today javascript on the client side is more popular than mickey mouse. And on the server side, we're seeing ruby fulfill what netscape was trying to do with server-side javascript. In fact, when I think of it, that would have been even sweeter: a single language for doing both client and server side stuff. That would have made things a little less confusing.
Who would have thought it would take ten years?
Another 'who would have thought' moment: consider how slowly standards development efforts in the area of css has been. Over a year ago I was asking for the abilitiy to utilize css selectors in code, like we do in stylesheets. We were asking for missing features such as getElementsByClassName. Today, ajax and prototype.js give us all of that stuff, totally short-circuiting standards; a testament to the fact that with highly dynamic languages, you don't have to wait on the language makers any longer.
Focus pays off. I have always been too curious for my own good. Had I only stuck to the stupid javascript coding I was doing ten years ago, I could have been defining this ajax wave, instead of watching it go by. There you have it, a public confession.
Posted in Programming | no comments
Posted by Eitan
Wed, 01 Mar 2006 14:38:00 GMT
Mozilla did us a favor to introduce tabbed browsing. Since then, every time I open gnumeric or abiword, I curse that opening a second document creates a second window. It's become obvious that the tabbed-documenting should be a generic UI feature in every program that manipulates documents. We know that the time it should take to implement such a feature in gnumeric or abiword should be fairly trivial. I wonder how long it will take for this tabbed-documenting to appear in every major type of desktop application.
no comments
Posted by Eitan
Wed, 01 Mar 2006 14:33:00 GMT
I mark a milestone today: my six year old daughter Maia wrote me her first email message. So far she's using webmail. I think she's ready to step up to Evolution.
I need to do some thinking before introducing the next thing. I was thinking the shell is something everyone should know. But I'm increasingly convinced that our current situation of heterogeneous everything is kind of crazy. I want a homogeneous everything. Like my good friend Sam says: I have a lisp machine.
We have one language for talking to the computer in the shell. Yet we have another language for talking to the computer when we write programs. I don't want to be in a situation where today I tell her: this is how you get a directory listing: ls. And tomorrow I'll say: I lied, the way to do it in ruby is Dir.entries("/home/maia")..
Anyhow it wouldn't hurt for her to know the shell.
Posted in Computers | no comments
Posted by Eitan
Wed, 01 Mar 2006 14:21:00 GMT
Since I switched to Linux maybe eight months ago, I've had the pleasure of getting to know a new environment. It's interesting to see the major linux desktop environments, Gnome and KDE, living side by side, in relative harmony. I also discovered how one can write Java applications that use the GTK GUI toolkit, for example.
It's interesting to see how GNOME is based on GTK, KDE is based on Trolltech's Qt library. Each library has a harness, so to speak, in its respective desktop environment. The existence of that harness not only exercises the codebase, but also puts demands on it to provide the building blocks for constructing a complete, rich desktop environment. Each desktop environment in fact has additional widgets that go beyond the basic libraries to fill the gaps. For example, it is standard for graphical file managers (such as Nautilus and Konqueror) to provide multiple views fo a directory listing: 'view as icons', a simple list view, a detailed, tabular view, etc.. You'll find such widgets in KDE and GNOME libraries but not in Qt or GTK proper. Slowly these higher-level widgets get incorporated back to the underlying toolkit library.
I sometimes wish that Swing had a similar harness. That there existed a Java desktop system written entirely in Swing; one that exercised the Swing framework and ensured that it was complete and robust enough to support a heavily used, rich desktop environment. I have to admit this wish is very selfish. In the last couple of years I have been working on building a GUI environment for business applications in Swing, and have had to build my own primitive implementations of widgets which are commonplace in KDE and GNOME. I don't think I picked the wrong framework. I'm sure that using GTK or KDE has its own issues. You'd have to worry about language bindings, type matching issues, and other headaches.
Anyhow, I thought I'd bring this thought to the surface and share it with the community: a java desktop environment written in Swing.
Anyone know of any such projects going on? JDistro appears to be the most active. And it's really cool.
no comments