Planet Smalltalk

July 02, 2008

Giuseppe Luigi Punzi Ruiz - Squeak 4 se construirá sobre Spoon

Según puedo leer en los últimos mails de Squeak-Dev, al parecer, el Squeak Board, ha decidido que Squeak 4 estará basado en Spoon, para conseguir un entorno totalmente modular.

Spoon, según la definición que dá Craig Latta en su web (ya que no he encontrado nada en el Swiki oficial),

“Spoon, es un sistema de programación mínimo de Objetos, con nuevos enfoques a la organización, colaboración y despliegue”.

Supongo, pues todavía no han dado muchas más noticias, éste sistema, junto a los DeltaStreams, o ChangeSets, o Installer scripts, o/y mezcla de todos y demás parafernalias, nos montaríamos, partiendo de una imágen mínima, nuestro entorno.

A ver que se va cociendo en los próximos días.

ShareThis

Antony Blakey - VW Class - NameSpace structure

More diagrams produced for MirrorImage documentation. These two show the Class/Namespace model in VW. In addition to the PNGs embedded below, you can grab them as PDF. I think that's more immediately useful than SVG, and the OmniGraffle sources aren't relevant.

I've also added a PDF form of the Class - Metaclass diagram.

.

.

July 01, 2008

James Robertson - [Smalltalk Tidbits, Industry Rants] Porting from VW 5i to VW7: Thomas Hawker at StS 2008 (Audio)

Thomas Hawker's porting experience report from StS 2008

Frank Mueller - Day 20 to 23 - No photos, no work?

Four days no photos. So dour days no work? No, we've still done some painting and finishing, the tools and the material of the craftsmen is removed, some cleaning is done, and the first flowers are on the windowsills again. So why no photos? Because tomorrow the new kitchen will be delivered and on Thursday the new furniture. So I'll wait until then with my next photos. And then I can write about other topics. *phew*

The Weekly Squeak - Smalltalk Solutions 2008 - slides now available


Most of the slides from the presentations at this year’s Smalltalk Solutions conference are now on line.

The material available includes Gilad Bracha’s talk on Newspeak, James Foster’s guide to building a Seaside application using GemStone/S, Michael Rueger’s introduction to Sophie, Arden Thomas demonstrating WebVelocity in action, and Randal Schwartz’s double-header keynote: Seaside - Your Next Web Framework and an introduction to persistency solutions for use with Seaside.  

There are also slides from a couple of sessions looking at the reasons for the recent resurgence of interest in Smalltalk: Arden Thomas looks at the features of Smalltalk that other languages lack, and Rob Rothwell explains how Smalltalk helps with the development of healthcare applications.

There are many more slide-packs available, and still more to be added, so please check out the conference page for more information.

James Robertson - [Smalltalk Tidbits, Industry Rants] Smalltalk Daily 7/1/08: Announcements

On today's Smalltalk Daily, we take a look at Announcements, which are a replacement for Trigger Events

Technorati Tags: ,

James Robertson - [Smalltalk Tidbits, Industry Rants] Squeak Take 2?

The Pharo project has launched:

Pharo wants to take a fresh look at the Smalltalk philosophy and current implementations. The idea is to produce high quality open-source packages that will be loadable on a micro kernel.

I wonder what pickup will be like from the general body of Squeak developers?

Technorati Tags: ,

Andres Valloud - Anatolii Karatsuba meets Leonardo de Pisa

In the posts regarding Fibonacci, it came up that the VisualWorks' large integer multiplication primitive isn't the most suitable to calculate products of truly huge numbers. In this case, the term "truly huge" refers to numbers which can easily have one million bits, so they are way beyond what would be considered normal usage. And nevertheless...

I looked around and found Karatsuba's algorithm for multiplication. While it would be nice to put it in the VM, it is also possible to implement it in the image by letting it use the existing primitive when the number sizes are suitable for it.

After a bit of massaging the implementation, which is not the most efficient one because again this should be in the VM or otherwise in C, I got Karatsuba to tie the VM's performance at about 2k bits. Here are some measurements after that.
  • 3k bits: Karatsuba 12% faster than the VM.
  • 4k bits: Karatsuba 6% faster than the VM.
  • 8k bits: Karatsuba 33% faster than the VM.
  • 16k bits: Karatsuba 31% faster than the VM.
  • 64k bits: Karatsuba 2.51x faster than the VM.
  • 256k bits: Karatsuba 3.96x faster than the VM.
  • 1m bits: Karatsuba 8.85x faster than the VM.
So I subclassed the F(a+b) Fibonacci calculator so that it uses Karatsuba instead of regular multiplication. Result?
  • 1953152 fibonacci: Karatsuba F(a+b) 4.38x faster than the regular F(a+b) calculator.
How about that...

    SmallInteger>>karatsubaTimes: anInteger

      ^anInteger * self


    LargeInteger>>karatsubaTimes: aLargeInteger

      | splitThreshold
        selfHigh selfLow aLargeIntegerHigh aLargeIntegerLow
        highProduct lowProduct mixedProduct lowTerm |
      self digitLength + aLargeInteger digitLength > 768
        ifFalse: [^self * aLargeInteger].
      splitThreshold := self digitLength
        + aLargeInteger digitLength
        * 2.
      selfHigh := self bitShift: splitThreshold negated.
      selfLow := self - (selfHigh bitShift: splitThreshold).
      aLargeIntegerHigh := aLargeInteger
        bitShift: splitThreshold negated.
      aLargeIntegerLow := aLargeInteger
        - (aLargeIntegerHigh bitShift: splitThreshold).
      highProduct := selfHigh karatsubaTimes: aLargeIntegerHigh.
      lowProduct := selfLow karatsubaTimes: aLargeIntegerLow.
      mixedProduct := selfLow + selfHigh karatsubaTimes:
        aLargeIntegerLow + aLargeIntegerHigh.
      lowTerm := mixedProduct - (lowProduct + highProduct).
      ^((highProduct bitShift: splitThreshold)
        + lowTerm bitShift: splitThreshold)
          + lowProduct

Torsten Bergmann - Pharo - a new implementation of Smalltalk based on Squeak

The Pharo project wants to take a fresh look at the Smalltalk philosophy and current implementations. It wants to produce a clean and lean open-source Smalltalk.
It will start from Squeak but pharo is a fork. An important test for pharo is that Seaside should run on it.



Project site: http://pharo.gforge.inria.fr/
Mailing list: http://lists.gforge.inria.fr/pipermail/pharo-project/
Source: http://www.squeaksource.com/Pharo/
Inbox:  http://www.squeaksource.com/PharoInbox/

As far as I know the project is named after the famous lighthouse of Alexandria, but this was called "Pharos" not "Pharo". Time for a bug report?

June 30, 2008

Troy Brumley - Re: the problem with generated code

UPDATE 26 June 2007: Tom found a "fix" for this. See the end of this post.

Earlier this week I mentioned a bug in Visual Studio 2008:

That's all well and good when the code spitter works correctly. When it doesn't, you get to deal with weird problems. Lately I've had two rounds of a problem with a large project converted from VB.NET in VS 2003 to VB.NET in VS 2008. Microsoft provides conversion utilities built into VS 2008 and they seemed to run OK, but I and another coworker have hit the same problem in our UIs.

Tom and I had each seen this a few more times by the end of the week and we could not find a way around it. Our most recent hope was that rebuilding the forms from scratch (gawd that'll be a lot of work) would stop this from happening.

It didn't.

We've narrowed our understanding of the symptom down to the point where we know that as soon as we do anything that allows the IDE to update the designer information for a form, any RichTextBox on the form has its Text property assigned to an expression that does not exist. Here's an example I just reproduced. First, the correct code:

	Me.tbIdentity.DetectUrls = False
	resources.ApplyResources(Me.tbIdentity, "tbIdentity")
	Me.tbIdentity.Name = "tbIdentity"
	Me.tbIdentity.Text = ""
 

And the error code, note that tbIdentity.Text is changed:

	Me.tbIdentity.DetectUrls = False 
	resources.ApplyResources(Me.tbIdentity, "tbIdentity") 
	Me.tbIdentity.Name = "tbIdentity"
	Me.tbIdentity.Text = Global.Cincom.KnowledgeMaster.EventMasterFull.c_KMDisplayTextBox.rtfText_Text  
 

Too weird. I keep changing the value assigned to Me.tbIdentity.Text to an empty string when I check the code in, and Tom deletes the line. Touch the form in a later editing session and it breaks again. Googling has been unproductive, the base error message "blah is not a member of blah" is too common, and words like member really throw off the search results when it comes to programming forums where the Google crawler bot is "not a member of this forum".

This only seems to happen to stock RichTextBoxes, so maybe when we convert our apps to use DevExpress widgets, this will go away. I hope so. It's a huge pain.

UPDATE: A circumvention has been found.

Tom noticed that this was only happening with Rich Text Boxes where the initial text is an empty string. He experimented and found that setting any other value for the initial text will prevent Visual Studio from damaging the generated code. Of course, we really want these fields to be initialized to String.Empty, so we're adding explicit updates in the Form's constructor or (my preference) in the Form Load event.

Technorati Tags: , , , , , , ,

Troy Brumley - More on software company culture

Jim spotted a blog post by Sergey Solyanik regarding his leaving Google to return to Microsoft. Of course, Jim had something to say about the post (and it is a blogworth post) but he took it in a very anti-Microsoft direction. I think this missed some key aspects of Sergey's decision making process.

U finally made time this afternoon to read Sergey's whole post and found some things that were particularly interesting.

First, Sergey feels that Google gets the whole management/employee relationship thing right. Managers should support and enable and direct, but most of them should not be involved in decision making in certain areas. For example:

[P]eer-based review model where one's performance is determined largely based on peer comments, and much less so based on the observations of the manager. The idea that a manager is far easier to fool than the co-workers are is sound and largely works. A very important side-effect that this model produces is an increased amount of cooperation between the people, and generally better relationships within the team.

I know a lot of managers and team leads who would be very uncomfortable with this, but they need to learn to trust their people more.

Second, Sergey hits on something that some agile/xp books have mentioned:

Free food. More than just a benefit, it is a tool for increasing communications within the team, because it's so much easier to have team lunches. I don't think making Redmond cafeterias suddenly free would work (maybe I am wrong), but giving out free lunch coupons for teams of more than 3 people from more than one discipline to have lunch together - and at the same time have an opportunity to communicate ...

Food means more than convenience. Eating together is a social activity and helps people in groups develop an understanding of each other outside of the white board interactions of meetings. A company that feeds its employees says "we care about you" in a very personal way. I've heard a lot of anger over bogus cost cutting measures such as "no more free coffee" in my career. Small cash savings versus good will, sounds like a no brainer to me, but I'm not an accountant.

One food related change that I think hurt Cincom many years ago came about when the Clifton Engineering office was shut down. There was a cafeteria there and while the food wasn't free, the big lunch room was a gathering place where Cincomers could gather, break bread together, and interact with people outside their teams. We had several good card games going on, and some interesting non-computer discussions. When we moved to our new office, we lost that. No big lunch room, and while some teams eat together, I don't see a lot of mingling of people from different areas. There is a small cafe on the second floor of our building, but we sublet out part of a couple of floors and the cafe is not a "Cincomers only" venue.

Sergey left one company that felt developers were important and returned to another company that felt developers were important. I think there's some good information in his post that managers and developers should think about. His whole post is worth a read.

Technorati Tags: , , , ,

GNU Smalltalk Blogs - Pardus

Did you tried Pardus? It is a GNU/Linux distribution not as well known as Ubuntu or Fedora but a really serious 3 year project developed by Turkish National Research Institute of Electronics and Cryptology (UEKAE), which is under the Scientific and Technological Research Council of Turkey (TÜBİTAK).

They just released their third major version, Pardus 2008, so I thought, it might be good to mention about Pardus for people who does not know it.

read more

James Robertson - [Smalltalk Tidbits, Industry Rants] Smalltalk Daily 6/30/08: Handling the Command Line

On today's Smalltalk Daily, we look at ImageConfigurationSystem, which makes handling the command line a snap.

Technorati Tags: , ,

Summer of Squeak - Week 5 of GSOC - FreeCAD/Croquet

1) What did you do in the past week?
- I have done detection of planes and points on the plane. I can now select a Cube, click a point on it and add another solid on that point.
- Corrected all problems of rendering and picking objects. Had problems rendering and picking objects earlier because of the different coordinate systems used by FreeCAD and Croquet. It took me a while to figure everything out but its all fixed now.
-Completed a window UI to place a solid precisely on a specified point.

2) What do plan to do this week?
-Create more UI windows to manipulate solids
-Enable markers to be referenced by Joints for animation/simulation purposes

3) What can possibly stand in the way of your work?
Nothing much except that my internet connection is no set up yet due to very very slow services by my ISP. Doing online research and replying mails in a cyber cafe nearby at the moment.

Bill Kerr - our government

Imagine if we had an (Australian) government that said to us that due to globalisation of the economy, international economic downturn and the climate change problem our government is impotent and the political process is ineffectual

We do
  • lower expectations
  • petrol prices are beyond our control
  • climate change requires extensive international co-operation
  • even though our PM expects everyone around him to be workaholics it is still all too hard
  • we will all have to sacrifice to stop global warming

The Piping Shrike blog is worth a close look:
Rats all at sea
Rudd's agenda
Rats problem with rudd