King Java’s dead – long live the King? Or: Do we need a next big thing at all?

The Java world seems to quite disappointed about the fact that the language will not evolve as fast any more as it used to. Java 7 will ship a whole lot later than expected, and most of the really “desired” features of it will now be part of a newly born Java 8 release that will not ship before mid-2012.

But I don’t think this is very surprising. Java today is regarded as THE platform for everybody. Oracle is trying to make it everybody’s darling by nailing feature over feature onto it. Since most of the newer features are aimed at overcoming the most painful restrictions of a static type system, some of the proposed syntax extensions turn Java sourcecode into a nightmare stuffed with braced constructs. The addition of closures will bring in a lot of power and expressiveness of sourcecode – at the cost of new syntactic constructs that bloat the language and make the code harder to read.

So Java projects will soon be faced with the same problems as C++ projects: in order to keep their code maintainable, they’ll have to set up rules on which language features not to use – even if they would be helpful.

More

The Rest of ESUG

I gave up on the idea of posting a summary of each day, because I simply had no time to do it. Lots of friends to talk to, a great city to at least give a short visit to, so I had to set priorities. At least I saw the Ramblas and the Sacrada Familia  and had some ice cream at the waterfront last night – thanks to Yuri who convinced me of how stupid it would be not to go downtown and work or sleep instead. You will be able to watch all sessions’ recordings over the coming weeks and Niall again took notes all day, so that there’s not much value I could possibly add to all of this.

So I can just talk about my personal highlights and thoughts, some of which I may currently have placed somewhere outside of my short-term-memory due to overflow.

ESUG was simply great. Lots of people, lots of ideas, lots of infos and inspiration. Citilab was a great venue, and everything was organized very well. You can possibly tell from the recordings or if you watched some sessions online.

So my personal favorites wednesday to friday were:

Martin McClure showed us all about current PEG parsing solutions for Smalltalk, which can help all kinds of problems with clean and comprehensive code.

Cincom and Instantiatipons as well as Gemstone have been busy improving their tools and are coming up with new versions and extensions. In case of Instantiations the announcement of a now definitely decided cooperation with HPI in Potsdam for a Bachelor’s project to look at options to plug VAST onto GTK+ on Linux as well as their search for new engineers (yes, plural!) were received pretty well.

The social event at the museum was really nice. We just managed to see the exihibistions on floor -5, but I got the impression my kids would really love the place. We’ve walked the jungle, learned some illusionary tricks and made a few physical experiments. I especially liked the turning tablle with the vortexes in it. You can watch the patterns emerge and collapse for hours.

We’ve had very good wine and a great dessert outside the museum, enjoying the warm weather and lots of Smalltalk.

Thursday morning started a bit slower after the social event, but getting up for Joseph Pelrine’s on Retrospective Coherence was well worth it. It’s always inspring to listen to Joseph’s talks on agile methods. He’ snot religious about them but tries to find out what works best in a situation and has very nice metaphors and examples, so that it’s fun listening

My personal takeaway from Lukas’ talk on Seaside and Agile Development is mainly a desire to download and look into Hudson as a build server. He made setup and configuration of that thing look easy enough to give up on the idea of reimplementing all that stuff that’s in there in Smalltalk and Seaside. I know Julian Fitzell wanted to tell me that at the VAST Forum in a comment to my talk, but I completely missed his point back then.  I know it will be beneficial for a few of my customers’ projects almost immediately, especially since we’ve already got all the building blocks for config management and automatic builds and deployment in place. Hudson will just make these much more than the sum of the individual parts.

The open source licenses panel was interesting and shocking at the same time. In short: no matter what you do, if someone wants to sue you, they can sue you and nobody will be able to tell you upfront in what direction this might go in court. But that might just be my impression. Lots of things to look at, lots of pitfalls for all contributors, users and vendors. Were you aware that if you write some code in your spare time, chances are your employer owns the rights to it? I wonder how any joint effort like Squeak or Pharo or whatever can be sure they even have the right to declare code as being theirs and grant any licenses if the authors themselves cannot be sure about it. This whole stuff simply is a bloody mess in my (now at least almost a little informed) opinion.

Show us your project sessions were neat. Everybody who wanted to show something had exactly 10 minutes to do so, and we’ve seen so many completely different things that I can hardly remember all of them.

I especially liked both the idea and software for getitmade.com, which is going to be a platform for getting inventors, manufacturers and buyers together. Say you have this idea of a cool laptop stand made of cork and hanging from the ceiling and want to get it to the market, but have no idea how to make them and how to market them. Getitmade.com will be the platform for you.

Jan van de Sandt’s demo of his ready-made, pharo based Seaside-Image on Amazon EC2 literally showed how you can be up and running with a Seaside Server on EC2 within 10 minutes. Cool stuff.

We also saw a bit of the Google Summer Of Code projects in Scratch and portable namespaces, both of which seem to have come quite far.

Friday for me mostly was about Gemstone and MARS, both of which I’ve covered before. Still. Mars looks very promising, and I can hardly wait until I get the code and time to use it.

Let me finish with a few comments on the overall event:

The Museum was great, but I would rather see a bit of the region or city I am at. Just like the boat ride in Brest last year. I am sure Barcelona has so much that’s worth visiting.

The ESUG tech awards presentations again were in one single, crowded, loud room, so that you could hardly understand anything unles you sat next to the person. I got tired of that and thus didn’t take a look at all of them. This way, I completely missed Torch, which would have gotten my vote for sure. My only idea about this is that I’d probably like to see the “show us your project” and the tech awards presentations merged into one. Maybe one session of projects that want to take part in the competition, ad one open session that’s not related to  the competition would work out better.

Having the lunch as a buffet would allow for shorter lunch breaks, but on the other hand, we had a lot of time for networking.

Seaside still is the one framework that somehow unites the community, attracts new developers into Smalltalk and this year we’ve seen more Seaside-related projects and talks than ever before, even though it starts being not particularly new in terms of IT buzzword life cycles 😉

It is cool to see that people are joining the community and almost immediately contribute to some open source project. Many new faces joined our community, coming from Ruby, or iPhone development and bringing in their fresh ideas.

A big thank you to the local organizers and to ESUG for setting this up. And a big thank you to our fellow sponsors who made this possible. But the biggest thank you goes to the people who came and made it the great event it was!

The former Instantiations Java tools are back – for free!

Google has finally announced what they will do with WindowBuilder, WindowTester and CodePro:

We’re happy to announce today that we’re relaunching the following former Instantiations products under the Google name and making them available to all developers at no charge

So this means that these great tools are now free for commercial and non-commercial use. I can hear a few people take a deep breath and frolick 😉

On the other hand, we’ll have to see what some of the announcement may actually mean mid-term:

…we hope you’ll start using them within your GWT projects…

because a fair amount of tools that were relaunched have nothing to do with the GWT at all. But at least they available and will help a lot of Java developers make their GUI design  and testing a lot easier.

I guess we’ll know in a few months if I am just too picky about the way GWT is mentioned in the announcement…

ESUG Day 2

ESUG is really the place to be. There’s so much to learn about what people do in Smalltalk and it’s good to see the energy being put into Smalltalk by young people. Tuesday started off with Colin Putney’s talk on Monticello 2, from which I was a bit distracted by some production problems back home (greetings from sunny Barcelona, btw!), followed by Thomas Stalzers System Integration talk. Nice to see his Smalltalk-based home automation stuff is taking off. Seems he’s found a niche which is both fun and a place where nobody cares about what technology that stuff is written in, as long as it’s just good.

Another highlight for me was Esteban’s presentation of Reef. To me it seems most adopters of Smalltalk are currently working on the same problems: server side object representation of their widgets. Everybody needs a way to add validation to fields and display error messages as well as conversion logic and such. The next step then is Ajax/Javascript integration, which then brings up the problem that rendering a piece of Javascript code means transporting HTML-IDs back and forth between the server and the browser. So what we all typically do is look for a clever way to produce our widget objects ahead of rendering, and then make them carry their html-ID and make these available fro rendering Ajax callbacks later. Every now and then I thought: well, that’s about the same thing I did in my application, or: I had the very same problem here. And we all have the same problem in our design of this widgetry: we concentrate too much on the form input elements, but for the javascript stuff, everything on a page (and by that I mean every single html node in the DOM tree) we also need a div’s or span’s ID to feed it into the js render machinery. Then there’s the problem of how to render a comonent with its surrounding DIV at “normal” rendering time and just the DIV’s contents when replacing it in an AJAX callback. So there is a pattern here in what I’ve seen in the Seaside related presentations at this year’s ESUG.

The next talk gave us an overview of what Esteban is doing with Reef in their ibizlog application, which was also very interesting.

Eli Green’s talk on platform integration was just plain cool: he’s building a tool in Objective-C that allows for easy integration of a Gemstone server with native Cocoa Aplications on a Mac. He built a little Cocoa Application in the XCode Interface Builder that allowed displaying and managing data of the Seaside Sushi store on a Mac natively. What I mean by that is that he used an Array controller in IB to display the contents of a Smalltalk Collection from Gemstone. There was no ObjC-code to write in order to add new sushis to the inventoryl, just the usual drag&drop and wiring stuff in IB. Just to prove the date was really being stored in the Gem, he instantly refreshed the sushi store in his web browser and the added sushi was there. Very cool stuff, and open source. Not to mention that Eli had a very nice way of presenting. It was fun listening and watching!

The last talk for the day was Veronicy Uquillaz Gomez showing Torch, a tool for visualizing changes in code. The idea behind all that was to make integrating changes committed by several code maintainers easier. She’s come up with a very understandable way of visualizing changes in packages, classes and methods and presents them in a so-called dashboard. After a short introduction of what the several boxes and lines mean, we had a little quiz: what has changed in a body of code, just seeing the dashboard (no code changes). I must admit that the first one or two were really hard for me, but once you get the pattern, you can really see what the changes to a package was about, like: well, this must have been a message rename, because in all methods calling this method, there was a little removal right before an insert. Amazing.

The talk on what we can learn from Ruby was cancelled, unfortunately.

We’ve had a glimpse at a few projects in the “Show us your project” session, and instead of trying to remember specifically interesting things I just say: wow, amazing what people are coming up with or working on!

Seaside 3 and my first day at ESUG

I may be the last blogger in the Smalltalk arena to mention it, but Seaside 3 has finally been published here at Camp Smalltalk in Barcelona. You can read the full announcement on the Seaside home page.

So what can I say about my first day at ESUG? It was great, and it’s good to meet old and new friends and see the faces behind names you’ve read on the internet so many times.

My highlights yesterday were:

Andreas Tönne talked about his vision of what we as a community could do to make Smalltalk an acceptable solution in the context of Enterprise systems, especially in JEE landscapes. He started off by showing how easy it is to write a stateless bean in JEE today, using Annotations and writing only the business code. Today’s EJB containers provide all the infrastructure services around that: persistence, transactions, failover, life cycle etc. His vision is a vendor-neutral standard centered around Smalltalk acting as another bean container. He showed a few architecture sketches and ideas of how and where to start. His message was: Like it or not, EJB has won the market, and if another technology wants to get a chance in this market, it better plays well with the “standard”.

Gemstone announced that their 7000USD/Year version of Gemstone/S is going to be free for commercial use.

Bert Freudenberg talked about Squeak and EToys and gave an overview of their roadmap. My special highlight here was that they are working on getting Squeak accepted by the open source Linux distributions by providing the VM in the form of build packages and isolated source code.

Unfortunately, I missed the Wolfpack Programming workshop, but there will be another one at the XPdays in Hamburg in late November. From what I’ve heard, it’s well worth a visit.

Johann Brichau’s demo of his Seaside based Event planning system was both impressive and interesting. To me his finding about database options (Magma/Goods/Gemstone) were almost more interesting than his Seaside application, even though I got quite a few inspirational ideas from it.

Martin’s intro to Xtreams was also very interesting. Especially the idea of using Blocks as a Terminal for Streams is fascinating. We’ve talked a bit about it in the evening and found some interesting use cases for this.

We enjoyed some beer, food and Smalltalk sponsored by Instantiations. Mike Taylor, CEO of Instantiations said a few words about the Google transition and their plans for VA Smalltalk. His basic message was that VAST has been and will continue to be profitable and they are currently working on a detailed strategy for the next releases.

This year’s ESUG tech award nominees presented their stuff and I especially liked Esteban’s Mars Project. It is really good to see how far he’s gotten already. It’s great to see a Smalltalk environment with Native Widgets on the Mac.

Since I flew in in the morning, I missed the introduction, but from what I was told, we’re around 140 attendees this year, and about 30% of them are here for the first time. This is the third year that had more than 100 attendees, which is interesting in the context of the current economic situation. The venue (citilab) is great, as well as the food 😉

GLORP on VAST 8.03

VA Smalltalk ships with GLORP (a relational database mapping framework with lots of ideas and concepts from TOPLInk)  since the latest VAST version 8.02. Since the port of GLORP shipped with VAST is based on an older version of GLORP and also is not really well integrated with VAST, its use in production code is not really recommended. Instantiations’ recommendation here is to use GLORP as it is right now more to learn GLORP and start porting efforts.

Things will hopefully be much better with VAST 8.03 or the release after that. And John will be working on this with one of the (if not THE) GLORP porting experts:

Niall Ross and I will be doing some work on GLORP at Camp Smalltalk this weekend in Barcelona — the platform-specific code (such as the code you referenced) is high on the list of things to address.

Smalltalk on iOS – again an option?

It seems like the growing demand in Android gadgets and the noise of App developers have finally made Apple rethink their rules (Press Release):

In particular, we are relaxing all restrictions on the development tools used to create iOS apps, as long as the resulting apps do not download any code. This should give developers the flexibility they want, while preserving the security we need.

So it seems like it will be allowed to put packaged Smalltalk applications onto the iPhone, iPad (and maybe soon Apple TV???).

We would never say that Steve lost a battle or had to give in to the Mob, would we 😉

Did I mention that both Squeak and Pharo run on the iPhone? Maybe this change may even motivate some Smalltalk Vendors to work in that direction.  This is surely good news for Esteban and his Mars/Deimos project and for John’s iSqueak work… But not only for Smalltalkers, but also Rubyists, Flash developers and so on…

[UPDATE] Daring fireball has some more details on what exactly changed. The whole “Objective-C,C, C++ or JavaScript only!” nonsense seems to be gone. Downloading code is still forbidden (which was to be expected and is no obstacle for many Applications). There are also some comments about the now publicly available guidelines for app approval.

The VSE and Cincom discussion – part 2

A few days ago I posted about a discussion group mail about the state of Visual Smalltalk Enterprise. Since the original posting, a few comments showed up on squeak-dev, but nothing really new as compared to the last few times when VSE users tried to convince Cincom and other companies to open source the product.

Now Henrik, who started the discussion, also posted two comments on this blog, which I would like to respond to.

But before I do so, let me say that I neither have any information on what Cincom owns or not, nor do I know anything about Seagull or Rocket Software. I even have no idea how much Cincom charges for VSE support, nor have I ever needed their support and therefore have no idea if their support is good or not.

So let’s take a look at Henrik’s comments:

More

ESUG 2010: Only one week to go!

If you haven’t registered for this year’s conforence organized by the European Smalltalk User’s Group (ESUG), it’s probably time to finally do so: today in one week the party starts in beautiful Barcelona (Okay, I have to admit I’ve never been to Barcelona, but the weather forecast is great and there will be many Smalltalkers around, so it will surely be wonderful).

Registering is easy: go to the ESUG conference website and register. You can fly to Barcelona at quite low prices from all over Europe, and getting in touch with other Smalltalkers will surely amortize very soon. If you don’t believe me that it’s going to be worth it, check out the conference schedule.