UptoData, Inc.

TextMate icon

jMatter is Here

Posted by Eitan Fri, 17 Feb 2006 13:59:00 GMT

It's no secret that I have for a while now been a great fan of the NakedObjects framework.

Here are a few blog entries where I express opinions on software and software development that are congruent with its philosophy:

All the while I was slowly thinking about, slowly developing a system of my own, one that would embody my shaped, personal opinions on software development. I have built myself a chainsaw. A system with a user interface that is consistent.

This system now has a name: jMatter. It has a url, with documentation, screenshots, and more.

Rather than flaunt all of the goodies and features I put into this chainsaw, I would instead like to invite you to take a look. Follow the above link, read Chapter 1 (a total of four pages), and let me know what you think.

Sincerely,
  Eitan Suez

Posted in ,  | no comments

Proposed Annotations Enhancements

Posted by Eitan Wed, 15 Feb 2006 21:22:00 GMT

I think these should make for a nice extension to the existing Java 5 Annotation API:

  1. From an Annotation, one should be able to navigate back to the programming element that it annotates.

    For example, a method annotation clearly marked with a Target of ElementType.METHOD cannot say getAnnotatedElement().getName(),

    There are two problems here. The first is the lack of the getAnnotatedElement() method The second is the fact that an AnnotatedElement is too primitive of an interface. You cannot actually invoke getName() on an annotated element. I feel that there should exist a basic ProgrammingElement implemented by or extended by all annotated elements.

  2. The default value for an annotated element should not be restricted to a constant expression. Instead, the value should be a code block.

    For example, let's assume that I want to annotate methods to give them a caption. By default, the caption should be some kind of derivation from the method name it is bound to.

    That is,

    class MyClass
    {
      @MyMethodAt(caption="The X Method")
      public void method x()
      {
        // ..
      }
    }
    
    
    and
    
    
    @Retention(RetentionPolicy.RUNTIME)
    @Target(ElementType.METHOD)
    public @interface MyMethodAt
    {
      public String caption() 
         default
         {
           return getAnnotatedElement().name();  // see [1]
         }
    }
    

    As far as I know, this is currently not possible.

no comments

QtRuby

Posted by Eitan Wed, 15 Feb 2006 15:57:00 GMT

I just read the Pragmatic Friday on QtRuby: coding Qt client applications with Ruby.

On the good side:

I believe toolkits such as KDE to be much richer in terms of numbers and variety of widgets when compared to Swing. This could save a developer a terrific amount of time.

It's also terrific to see that one doesn't have to code in C++ to actually employ this library. So, a real Kudos for QtRuby.

Two observations:

  1. the signal/slot mechanism really does not utilize the strengths of the ruby language.

    in rails, you can say:

    before_filter :method_name
    

    and in ruby in general, one can do all kinds of neat things with code blocks besides.

    in javascript, one connects a signal to a slot like this:

    button.onclick = method_name
    

    then why on earth should i choose to do this instead:

    connect(button, SIGNAL("onclick()"), 
      some_other_obj_ref, SLOT("method_name()"))
    

    ???

    on the other hand, i do really like the choice of metaphor used in qt: the metaphor of a signal. maybe it's because i have some kind of background in electrical engineering, but probably not. anyhow, i like it.

  2. my initial feeling about qtruby is that the divide between the c++ world of qt and the ruby language is not transparent; one notices it. i wonder to what extent this might be an issue when developing a full-fledged system.

    so what i'm trying to say is that i'm not certain if qt and ruby are exactly a *marriage made in heaven). i'm not sure what the "best" solution is.

    I qualify these comments with 'initial feelings,' and what I mean to imply is that I could [very well indeed] be completely wrong about this.

    full-featured, cross platform widget libraries are not exactly a dime a dozen, i understand. so yes, there's gtk and there's qt, and there's swing, and there's swt. but one can't magically say tomorrow, there'll be a ruby-native widget library. i know some swing, and now just a little tiny bit of qt. i don't know swt or gtk/glade at the moment.

    so far, my scale gives more weight to java + swing over ruby + qt, even if ruby holds a few language gems that are absent in the java language. it's also nice to see that java has been narrowing the gap with its language improvements in v5; specifically: annotations and enumerations. i still believe that java needs:

    1. a stronger, richer, cleaner, simpler metamodel (reflection), and
    2. facilities in its syntax for making the use of that metamodel completely transparent, like it is in smalltalk

Posted in  | no comments

Java SE 6 and MacOSX

Posted by Eitan Wed, 15 Feb 2006 13:37:00 GMT

Today we're beginning to smell the coming of Java se 1.6 (Mustang). Feels like Spring's upon us.

Don't ask me why. Although it's been about eight months since I've moved to Ubuntu Linux, the first thought that came to my mind mind was the question: is MacOSX doomed to remain 1 to 1.5 versions behind with respect to Java SE?

My understanding is that Java 5 on the mac at the moment is in some kind of pseudo-beta mode with no promises being made as to when a final, "blessed" release will appear. Years ago (in the late ninetees, I believe it was) I went through the experience of working on a web ecommerce project implemented using Apple's WebObjects framework. I recall too clearly this nauseating feeling of desperation one has when they know there's a problem or a bug in the framework that directly affects their project, combined with knowing that the resolution of the problem or bug is totally beyond their control.

To those of you out there who've chosen to run MacOSX, I'll say this once: I don't want to hear you complaining. If you want Java SE 6, and on time, it'll be there waiting for you on The People's OS.

no comments

Rails Book

Posted by Eitan Wed, 08 Feb 2006 13:52:00 GMT

As I review and reference the Pragmatic Programmers' Agile Development with Rails book, I am increasingly convinced that any developer, group of developers, or publisher would be hard-pressed to produce a better book on the topic.

My wager is that the only book that will supplant Agile Development with Rails will be the second edition of Agile Development with Rails.

no comments

Finally, a new release..Ashkelon v0.9

Posted by Eitan Sat, 04 Feb 2006 17:16:00 GMT

Over the last year, here and there when I've had an idea or a little time I've changed something or added a feature to ashkelon. Much time has passed and I hadn't cut a release. For a while I really wanted to finish idea x or feature y "before making another release."

That was a bad idea. Yesterday I decided that was enough. It'd been way too long since I'd last published a release. I spent a few hours updating the documentation, testing the release, updating the documentation again, testing the release again until I was satisfied.

Finally, version 0.9 is out. Sure, a number of features are only half finished, but at least others can play with them. I mean they've been in CVS for a while. But few bother to get that close to a project, I admit.

Just because I'm not spending much time developing ashkelon does not mean that I'm not using it. For my purposes, ashkelon has been feature complete since 2001, since before I even considered open-sourcing it.

I use it on a regular basis when I code and have been doing so for five years now. That's an awful long time. People should know when to give up. I think this five-year mark is a sign that if this tool has not gotten any traction by now, it probably never will.

What saddens me the most is that even the idea itself has met failure. As far as I know people are ignorant of the idea, the notion that a better system for api documentation is a database application. In the ruby world we've yet to see rdoc implemented as a rails app. Maybe some day someone will write one.

no comments

My Three Year Old, the Linux user

Posted by Eitan Sat, 04 Feb 2006 16:53:00 GMT

Who said Linux was too hard? My 3-yr old son, Arik, has been running Ubuntu on his laptop since December. He's a very happy user. Every once in a while he'll ask me to help him figure out why something's not working right, but most of the time, he works alone.

He sits at his ubuntu desktop, and can launch a variety of games, including GCompris, SuperTux, Tux Racer, Tux Kart, Slune, and many others.

Arik at his Computer

I'm particularly proud of these facts:

  • over a few weeks, he's gotten as good as me (actually in some ways better than me) at SuperTux. that's no mean feat.

  • he recently figured out Frozen-Bubble

  • he recently figured out SolarWolf, a most addictive and wonderful games, though difficult for really young people.

  • he's a whiz with the arrow keys

  • he doesn't know how to read but he's got the entire SuperTux menu hierarchy figured out. He can start a game, pick levels, pause a game, exit out of one level and go to another, picking out the correctly indexed option in the menu hierarchy

  • he can launch and quit apps all on his own

  • he loves Tux!

Arik with Tux

All this he's achieved by himself, with no help from me, and in a pretty short time.

Finally, when I ask him to practice his letters, he'll be considerate of me and launch GCompris's letter-identification game.

Posted in  | no comments

The Java+XML Conundrum

Posted by Eitan Tue, 31 Jan 2006 13:43:00 GMT

One must applaud Bob Lee for saying what many of us never dared to: I don't get Spring. I think many of us for a long time did not grok Spring either but were afraid to say it. Everything has a reason to exist and Spring is no exception.

I believe today I grok Spring a little better than before, but I'm not sure. Below is a snapshot of my continously morphing hypothesis, as it stands today, on January 31 2006.

  1. Spring solves a number of issues that derive from a not-as-natively-implemented feature of the Java language: closures. In smalltalk, ruby, and JavaScript, treating a method as an object is a much more common thing. And thus using a method as an object is much more commonplace. So things such as Spring's *Template classes are altogether unnecessary unless you're working in Java.

  2. One of the end results of applying Spring to a project is a combination of Java and XML. You inevitably end up with two languages instead of one. Interestingly, this aspect of Spring is directly related to a blog I wrote recently (two weeks ago, to be exact): Skip the Compile.

    There are concerns in Java that don't exist in other languages. One of them is the compile step. Removing that issue leads to Internal Domain Specific Languages, the very solution to the Java+XML conundrum.

So by attempting to grok Spring, I am coming to the conclusion that Spring is an artifact that attempts to make some of the pain of working with Java go away. It does a pretty good job in some respects (I consider the fact that we still have a bunch of XML a down-side). But when we look at other languages, specifically at Smalltalk, we see a much more elegant solution: these problems simply don't exist. Everything is written in-band. I advocate that it should be.

Posted in ,  | no comments

markdown firefox plugin?

Posted by Eitan Mon, 30 Jan 2006 14:36:00 GMT

i think this would be cool:

  <html xmlns="http://www.w3.org/1999/xhtml">
        xmlns:md="somekindofmarkdownnamespace">
  <body>

  <div>
  blah
  </div>

  <md:markdown-block>
  markdown text here.

  what firefox would do (assuming plugin is installed
  , of course) is filter all text inside 
  md:markdown-block tags through a markdown
  processor, producing html that would then be further
  processed by the firefox rendering mechanism 
  to render the page.
  </md:markdown-block>

  </body></html>

A second point: define a .markdown mimetype that such a plugin could similarly process.

no comments

If Apple was really a friend of Open Source..

Posted by Eitan Mon, 30 Jan 2006 14:20:00 GMT

  • the quicktime player would be available for linux
  • ditto for itunes

i believe apple has benefited much from open source. safari for example is a derivative of konqueror. there are many other examples.

of course, from a business perspective, apple leverages these assets to draw people to the mac platform. and there's nothing wrong with that. it makes perfect business sense. if its jewel apps were available on linux, there'd be less of a reason to give apple money..err i mean, to switch. that's why itunes on windows makes perfect sense: apple had a large market for ipods to gain in return. i suppose the size of the linux market is too small to make a difference in the case of itunes.

i guess my gripe is with this whole wolf in sheep's clothing thing: saying "we're a friend of open source, we're the good guys" is pure rubbish of course. the good guys are the people that forge open source: gnu, linux, the people behind the projects on sourceforge.

anyhow, it'd be nice some day to run quicktime, itunes, and keynote on gnome or kde. i'd pay $100 for a copy of keynote for linux... assuming the copy was at par with its apple counterversion.

no comments

Older posts: 1 2 3 4 5


Powered