Summer of Code 2007: Squeak is in!

Posted by Damien Pollet Thu, 15 Mar 2007 15:05:00 GMT

Giovanni Corriga has announced that Squeak was accepted as a mentoring organization for this year’s Summer of Code:

I’d like to thank all the people who helped preparing Squeak’s submission form, and all the mentors and students that have made themselves available for this effort.

Indeed, thanks to you too, Giovanni!

If you are motivated to have fun hacking with Squeak and getting paid for it, there is a list of project ideas on the Squeak.org wiki, and of course you can propose your own.

James Robertson and Serge Stinckwich also relayed the announce. And GNUstep is in too.

Posted in  | Tags ,  | no comments

A new Ruby/Objective-C bridge

Posted by Damien Pollet Fri, 05 Jan 2007 17:51:40 GMT

Tim Burks recently announced RubyObjC, a new binding between the Ruby and Objective-C programming languages. Tim previously documented the other Ruby/Objective-C binding, RubyCocoa, through the rubycocoa.com website.

To get started with RubyObjC:

  1. install the gem: sudo gem install rubyobjc --source http://www.rubyobjc.com
  2. generate an application: rubyapp myapp
  3. build it: cd myapp; rake
  4. run it: rake run

Then follow the tutorial.

On the implementation side, the docs mention that RubyObjC directly inserts handlers for Ruby methods in Objective-C method tables and adds handlers for Objective-C methods to the Ruby method tables, so the bridging overhead should be minimal.

I would really like to have such a bridge for Squeak

Update: RubyCocoa 0.10.0 was just released too (via lrz).

Posted in  | Tags ,  | 4 comments

Bad assumptions

Posted by Damien Pollet Wed, 13 Dec 2006 02:15:54 GMT

James Robertson already nicely answered this guy about Cees’ comments on Java, so I…must…not…troll…further…phew.

But I couldn’t ignore this:

6 months isn’t really enough to get properly comfortable with all aspects of a language.

OK, so let’s make my timeline of things with Smalltalk:

  • getting over the, hmm, aesthetics of Squeak… not sure I’m done with that :-)
  • learning the whole syntax, 30min.
  • starting to get my way using the tools and write simple stuff, 1 day.
  • knowing the basic stuff in the library, like iterations, conditionals, understanding that the debugger is really my best friend: 1 week
  • getting used to the image, exploring the system, reading the source, and starting to get what object-orientation really was about: 1-2 months. At this point, reading code really becomes an opportunity to learn interesting new stuff from others.

It’s been a little bit more than six months now and think I can say I’m properly comfortable with all aspects of the language. In fact I’ve also looked into all this machinery that looked like a mysterious black monolith before: the metaclass hierarchy, what exactly is a virtual machine doing, how are exceptions and continuations implemented, at the runtime objects like CompiledMethod, the bytecodes, etc.

Even with Python or Ruby I wasn’t drawn in the language like with Smalltalk. Both have really weird design decisions, like meaningful spaces, and the general procedural-with-OO-afterthought feeling for Python, or the inheritance and interpreter kludges in Ruby. Smalltalk and in particular Squeak does have ugly code (Morphic anyone?), but it’s just library code. The language itself has a beautiful ideal and it’s so light and fast while being so dynamic, you just have to go and look how that miracle happens.

Posted in  | Tags , , ,  | no comments

Smalltalk trick: dynamic variables

Posted by Damien Pollet Wed, 01 Nov 2006 23:42:57 GMT

Here is a cool hack with the exceptions of Smalltalk that Lukas Renggli just explained to me.

Sometimes the code needs access to an object that is well-known but whose actual identity depends on the context. A global variable or a Singleton pattern would be justified because the role is global, but that can’t work directly if the actual object playing this well-known role changes in some parts of the control flow.

Read more…

Posted in  | Tags ,  | no comments

What to do when the debugger sucks?

Posted by Damien Pollet Fri, 29 Sep 2006 18:53:34 GMT

…well, you extend it, of course :-)

This afternoon Stéphane showed me the Object haltIf: method in Squeak. The boring part of the code goes like this:

haltIf: condition 
    "... here be fun stuff (see below) ..."
    (condition isBlock
            ifTrue: [condition valueWithPossibleArgument: self]
            ifFalse: [condition])
        ifTrue: [Halt signal]

When the condition argument is a block, haltIf: will spawn the debugger only if condition evaluates to true. So instead of adding a self halt. in your code, you can put self haltIf: [ "hmm do I really want to halt here?" ].

The funnier part goes like this:

Read more…

Posted in  | Tags ,  | 1 comment

Contagious smalltalkers

Posted by Damien Pollet Thu, 07 Sep 2006 21:09:00 GMT

Besides getting more faces to put on mailing-lists posts, meeting Squeak and VisualWorks hackers during this whole week has been very motivating:

  • While Stef wrote tests for Regex, Oscar Nierstrasz and I started porting some good ideas from the string manipulation methods of Ruby to Squeak: and here is RubyShards.

  • I contributed my share of bugs to Damien Cassou’s ImageForDevelopers that will install a bunch of stuff from SqueakMap and SqueakSource and make a nicer base image.

  • Philippe Marschall from the Berne group spent quite some time with me trying to add static URLs for the main menu of SqueakSource, but it uses an ancient release of Seaside, so the patch would end up duplicating functionality (better help upgrading SqS to the latest Seaside I guess).

  • We also saw also some quite interesting talks during the research session, in particular from the team at ULB which is planning to record object histories (yes, execution traces with full state) or Romain Robbes from Lugano who wants to spy all actions the developer makes to make meaningful versioning systems.

Finally I think anyone will remember Plopp developed by the team at Impara, and winner of this year’s ESUG Awards ;-)

Posted in  | Tags , , ,  | no comments

Fosdem 2006

Posted by Damien Pollet Thu, 23 Feb 2006 22:49:00 GMT

This weekend I’ll be attending the Fosdem in Bruxelles.

Between two beers, I’ll most probably spend most of my time with the Étoilé guys, getting started with GNUstep, hacking on the Nokia 770 or doing Smalltalk stuff.

See you there!

Posted in  | Tags , , , , , ,  | no comments

Diff hack for DarwinPorts conventions

Posted by Damien Pollet Sun, 18 Sep 2005 00:49:00 GMT

I’ve put together a small script to help creating the patches when packaging software for DarwinPorts. Nothing really clever but it’s all in shiny red Ruby code, so I thought it would be pretty on my green blog :-)

DarwinPorts’ packaging conventions for the patch phase are to make one patch named patch-<filename>.diff for each modified file in the upstream sources. Also, those patches will be applied with patch -p0, so either you have to call diff from the modified sources tree, or you have to go in each patch file and tweak stuff and it’s really tedious and I’m too lazy to do that by hand repeatedly.

Read more…

Posted in  | Tags , , ,  | no comments

DarwinPorts files for Aqsis

Posted by Damien Pollet Sun, 14 Aug 2005 01:53:58 GMT

Aqsis is a powerful open-source 3D renderer that implements Pixar’s Renderman specification and Reyes algorithm (remember BMRT?).

I’ve written a Portfile for it but it’s based on a CVS snapshot so I can’t submit it to DarwinPorts yet. In the meantime, those of you curious enough to try will find the necessary files and instructions here.

Posted in ,  | Tags , ,  | 4 comments

Typo 2.5 is out!

Posted by Damien Pollet Fri, 05 Aug 2005 20:22:51 GMT

Tobias just released Typo 2.5! You can get it from the wiki or on rubyforge. If you want to see what it looks like, Justin wrote a review of the changes with many screenshots of the new admin interface.

I’m quite proud of this because that’s the first time I contribute real stuff to an open-source project — parts of the static caching system — but Scott is probably the one to blame for more than doubling the number of changesets since the last release :-)

Posted in  | Tags ,  | 1 comment

Older posts: 1 2