Monday, August 31, 2009

Smalltalks 2009 guests

One would assume you are planning to attend Smalltalks 2009 (Buenos Aires, 19-21 November, website coming up shortly). In fact, we would like to urge your participation particularly because Stéphane Ducasse and Dan Ingalls will be at the conference. These are really exciting developments for the Organization Committee, and a huge step forward for the international Smalltalk community as a whole.

Stay tuned, and see you at the conference!

Sunday, August 30, 2009

Fundamentals books

Hello from ESUG's Camp Smalltalk! I am happy to report that the Fundamentals Volume I is about to become sold out, and the conference hasn't even started. Thank you everyone :).

Also, I started writing volume II already. The draft is sitting at 22 pages right now. I just have a skeleton of an introduction and a page of chapter 6 done at the moment. The rest is just chapter heading pages and empty sections that need to be filled out. I think I should be done in time for next year's ESUG. More to come!

PS: all the books I brought to ESUG are sold --- thank you!

Thursday, August 27, 2009

FTP server down...

The FTP server will be down until September 15th.

Saturday, August 22, 2009

Smalltalks 2009 --- Third Smalltalk Conference of Argentina

Argentina's third Smalltalk conference, Smalltalks 2009, will be held from November 19th through November 21rd at the Facultad de Ciencias Exactas y Naturales (FCEyN), Universidad de Buenos Aires (UBA).

All those connected with Smalltalk, be it faculty, students, researchers, developers or entrepreneurs, are invited to participate, free of cost, as presenters and members of the audience. The organization committee will announce the registration website shortly.

The conference's goal is to gather both the Argentine and International Smalltalk community to get connected sharing our work and experience with regards to Smalltalk or related topics. Smalltalks 2009 presentations will be divided between the "Industry and Development" and "Research and Education" categories. In addition, the event will host a Smalltalk programming contest. As in other editions, well known personalities from the international community will attend the conference.

The "Research and Education" category is the best match for research and education work done with Smalltalk in universities and public or private entities. The "Industry and Development" category is suitable for presentations related to Smalltalk software developed by companies or individuals, both public and private.

A list of suggested presentation topics, not exclusive, is below:

* Development tools.
* Development with prototypes.
* Model driven development.
* Agile practices (XP, TDD, etc).
* Web application development.
* Metamodeling / metaprogramming.
* New frameworks or models.
* Materials for education.
* Embedded systems and robotics.
* SOA and web services.
* Experience reports, both development and research.
* Commercial systems.
* Automation and best testing practices.
* Interoperability with other technologies.
* Best design and architecture practices.

Interested presenters should keep in mind the following deadline schedule.

1. You must present a summary of the proposed presentation no later than Monday, October 19th, 2009. The summary must fit on a single page, and must include a description, objective, and category of the work to be shown. The submission procedure will be announced shortly.

2. The conference's program committee will select the event's presentations from the proposals submitted according to the above procedure by Monday, October 26th. The proposals including dynamic examples as opposed to just static presentations will be given priority.

3. The conference schedule will be published in the conference's website on Wednesday, October 28th.

4. The conference's works and presentations will be published in the conference's website after the conference.

Those interested in the coding contest can become familiarized with it at the smalltalks-2009-coding-contest Google group:

The contest's goal is to have a good time solving a problem in Smalltalk, and win a prize while at it. We are working hard to ensure everyone can participate, and we will show examples and prototypes that can be improved by the participants.

For directions to FCEyN, you can go to the computer science department's web site:

Feel free to share this invitation with those who might be interested. If you have any questions, send us an email at

fundacion (dot) smalltalk (at) gmail (dot) com

See you at the conference!
Smalltalks 2009 Organization Committee.

Wednesday, August 19, 2009

Death panels, said the executor

Really, huh? A public health care option equates to death panels, right? Well, I have news for you.

A reasonable set of routine blood tests, which can easily save your life, costs about $800.

That's just the routine diagnostics. If you don't have insurance, then probably you can't afford $800 in utterly basic tests every year. And actually, the tests could cost you more because you may have to pay another $200 or so for a doctor to prescribe them for you.

Compare the $800 to the minimum wage, or to the median salary, or to the median rent, or to the median mortgage payment. Can you afford that? Do you have a family? How would you like to multiply that by 4? If you get all frisky when your taxes are raised by 1%, how should you react when you have to pay e.g.: 5% of your salary in health care? Bonus points if the AMT prevents you from deducting the medical expenses of a large family.

So, $800 a year, per person, and hopefully everybody is still healthy. What if you actually get sick? And what if, like ~50 million people in this country*, you do not have health insurance? Thus, $800 for basic tests is, effectively, a death sentence --- and never mind the insured who are denied the care they urgently need to avoid death. Of course, this situation is compoundedly sick because it is often presented as if it were the patient's fault to begin with.

A couple years ago, I had a bad case of barotrauma after a flight to Buenos Aires. I went to one of my favorite private hospital's ER in pain, semi deaf, and with fever. I had no insurance in Argentina. Before I was done paying for the ER visit, I had a specialist standing next to me, waiting to wisk me away into the examination room. Not even 3 minutes had gone by. How much did the whole hospital experience cost me? $20.

Death panels? Really? Come on, what planet do you come from? Public option or not, I do not think the average garbage we hear every day about health care has anything to do with reality.

* BTW, ~50 million is far more than the number of illegal aliens to whom we gladly and quite purposefully pay salaries we cannot legally offer, so knock it off with the xenophobia and muster the courage to look in the mirror already.

PS: see what I mean?

PS2: we can definitely do better...

Monday, August 17, 2009

Lulu shipping improvements

It seems that Lulu will improve shipping options and rates in the next couple weeks. Some people are reporting improvements already. Good news, fingers crossed while knocking on wood :).

Fundamentals volume 2, chapter 6

With some book chapters, I know I will have a good time writing them before I start. Writing about polymorphism was fantastic, and I already have a lot of really good material for the chapter on recursion. I have a feeling it will rival the chapter on optimization in size and scope.

Sometimes I don't click as quickly with chapters, though. I was sorting the material for chapter 6, which is about enumeration. And, at first, I thought it was going to be this skinny, unexciting 10 page thing. However, these guesses always end up being wrong. I started with an uninspiring list of things I wanted to talk about. But, as I began organizing them into clusters of similar items, and sorting the sequence of exposition, I realized how interesting the topic really is. The list is now double in length, and the exposition sequence that move from one cluster of subjects to the next has an enticing feeling to it. It's also fun to see which themes will persist through both volumes, and structure the text to give them room to shine.

This is going to be a fun, more like 50 page :) chapter.

Sunday, August 16, 2009

So far, it looks like e^x is king...

According to Epic Games' CEO,

  • An efficient single-thread algorithm for a CPU costs x to write.
  • Same as above but multi-threaded, costs 2x to write.
  • Same as above for the PS3 or Cell processor, costs 3x to write.
  • Same as above for a current generation GPGPU, costs 10x to write.
So, if this is a sample of things to come, what's the point of a 1000-core CPU? And note that these increases in complexity appear in a single machine. Undoubtedly, the costs have to grow even faster when multiple machines must collaborate to solve a problem. Other than that, maybe he's looking for a 3d graphics VM when he wishes it possible to just write 3d code irrespective of the target hardware and its proprietary APIs...

Programming videos

Because of the new book, I got a request to make videos. I have made videos of myself while implementing the Smalltalks 2008 Coding Contest. I just watched them again, and I think they exemplify the principles explained in the Fundamentals book. If you are interested, they are at the FTP server, (user smalltalk, password now).

Saturday, August 15, 2009

Did I mention this before?

There is no time. Really, it's not even nearly enough. Every so often, there are drastic reminders of this fact. Here is one I thought I'd share. The newspaper La Nación had an article the other day which stated that, among other things, the average person watches 1500 hours of TV a year.

One thousand five hundred hours in front of the TV.

Think about it. The average work month has about 173 work hours. Therefore, 1500 hours of TV represent 8.63 work months watching television. That's nuts. I don't care how great those TV programs are. There is no way I am spending 8.63 work months watching stuff designed (for the most part) to mess with my emotions, to prevent me from thinking, and to desensitize me so that I only care about myself. Why would I want to subject myself to that kind of abuse?

Finally, suppose that you can write a book page every 4 hours. With practice, it's possible to go much faster than that. But, nevertheless, assume just one page every 4 hours. Where are the books? Or, where are the new ideas we should be able to figure out if, all of a sudden, we had 8.63 work months' worth of time at our disposal every year?

So, I challenge you: watch zero TV for 6 months. And I mean absolutely nothing, without cheating on the web. After that time, I further challenge you to watch the typical TV programs again without feeling disgusted and nauseated. You won't be able to tell what planet they are broadcasting from.

And then... do you have goals you haven't accomplished because you "don't have time"? Well, what are you going to do about those goals once you do have the time? I don't know about you, but I will not get to my death bed, think back and realize I had more than a part time job watching TV for decades when I could have, I should have, I ought to have...

Needless to say, I am beginning the second volume of the Fundamentals book right now. Also, where's that sax?...

Update: in fact, the first ever draft of the second Fundamentals volume is 20 pages. It's all empty sections and things right now. Soon, that will change...

Friday, August 14, 2009

Fundamentals volume 1 published!

I just published the 400 page book Fundamentals of Smalltalk Programming Technique, volume 1. To some extent it's fitting that I am publishing another book this time of the year. I started writing the Mentoring Course book (of which the Hash book was chapter 7) almost 4 years ago. The three books total about 1200 pages.

Something I realized with the Mentoring Course book is that I could take advantage of mentoring myself because I had already sharpened several Smalltalk skills. The Fundamentals book talks about these abilities. As with the Mentoring Course book, there is too much material for a single book. Thus, the first volume just published talks about the controlled manipulation of boolean expressions, inheritance, and polymorphism. In fact, there is a continuum of points of view on the subjects, ranging from the goal of producing very little yet highly maintainable code, to the architecture of highly optimized implementations, as well as valuable compromises in between. In fact, at times, it is possible to avoid sacrificing flexibility for speed, or viceversa.

The second volume will talk about enumeration, recursion, weakness, and optimization. I am sure it will be a fun book to write. In the mean time, enjoy volume 1!

Wednesday, August 12, 2009

Smoking, eh?

How do you like this quote by Campbell-Johnson consulting?

[...] we need something so that people die [...t]obacco has the social function of limiting the number of [elderly / dependent] people the economy has to provide for.

And now, how do you feel about other similar things? Source (and English translation). Corporations, pfft!

Monday, August 10, 2009

Assessments 1.11

I just released Assessments 1.11, which includes a very large number of improvements. Enjoy!

Sunday, August 09, 2009

Super size that software!

Could anybody explain to me why shortcut icons for things like c:\program files\whatever\executable.exe are set by referencing c:\windows\installer\{e7e8eb0e90e-fidvihbd-jdsgvdsjhs}blah.exe, as opposed to something more reasonable such as c:\program files\whatever\executable.exe? Why would you want to keep the installer for today's huge programs around? If you delete them, then your shortcuts are damaged and need fixing, even though the icons are perfectly available at the shortcut's target. Skype does it one better and provides read only short cuts so it's not clear how you can fix them. This seems nonsensical to me. What's the point of all this "protection"?

Uninstalling Acrobat 6 left about 60mb worth of .bak files in Program Files (copies of executables, dlls, etc). Uninstalling Acrobat 7 left numerous empty folders around. And the latest incarnation of Acrobat 9 is 244mb. At the same time, there are standalone PDF viewers that require on the order of 10mb and conveniently ignore Acrobat's irritating limitation that the PDF reader will only annotate PDF files created by Acrobat.

With this kind of software, of course we need a 1TB laptop hard drive and 8 execution cores just to keep up with the mess. But note that memory speeds have not been upgraded accordingly. So, when you look at performance charts, adding a 4th core does not give you 33% more performance but rather 25% at best, and that's only when more complicated software has been written to make use of all the computation capacity.

And even then, the improvements in software do not necessarily matter much. After about 8 cores, memory intensive applications actually suffer performance degradation because the memory subsystem cannot cope with the demand for bandwidth coming from the CPUs. With today's data sets and application sizes, essentially every app is memory intensive. For example, why do Apple's dashboard applets need to reserve on the order of 370mb worth of memory?

At times it seems weird to me that we refuse to make good use of our free, massively parallel computation device called a brain to avoid inventing technologies that just need a problem to solve. In the same vein, I got anecdotal evidence that a major corporation funds software projects only when they can be completed in 3 months and pay for themselves in 6 months, after which it is perfectly fine to throw the shiny new app away because it's no longer an investment loss. Consequently, a non-trivial amount of code is periodically rewritten from scratch. So much for the actual value of software these days...

On a more positive note, this situation should not last forever. Eventually, we'll hit the on CPU cache limit past which CPUs need too much electricity. Eventually, we'll hit the miniaturization limit (we're about 10 years away at Moore Law speeds). Eventually, we'll hit the aereal density limit for hard drives (did you know the hard drive industry wanted a duplication every year or so?). Eventually, we will find out that Facebook consumes too much electricity for the valuable(?) service it provides. Eventually, it all comes down to the costs of managing unnecessary complexity. Sooner or later it will be cheaper to think, which is what we should have been doing all along.

Saturday, August 08, 2009

Another proof copy is needed

Just to make sure the latest modifications are printed correctly, I will have to get another proof copy. Thus, the book is delayed by about 10 days. I think it's worth the wait... I wouldn't want a repeat of last year's margin snafus.

Friday, August 07, 2009

Fundamentals proof copy...

I got the proof copy, and printing seems ok. I found that I made the cover at 72.27 dpi, doh. That's simple enough to take care of. Now, I just have to read the book from cover to cover. I should be done in a couple days. It looks like Sunday is the day...

Tuesday, August 04, 2009

FTP server back up...


Saturday, August 01, 2009

Some quotes by Dijkstra

The required techniques of effective reasoning are pretty formal, but as long as programming is done by people that don't master them, the software crisis will remain with us and will be considered an incurable disease. And you know what incurable diseases do: they invite the quacks and charlatans in, who in this case take the form of Software Engineering gurus.

Some of you doubt that aforementioned "techniques of effective reasoning", nice as they are for small programs, will scale up, I quote "given the daunting size and sheer complexity of most programs". Well, they will be powerless if you try to use them to disentangle the horrendous mess produced by a group of incompetent, unorganized programmers. Their power manifests itself in the construction phase where (i) they tend to lead to much shorter texts than would be produced otherwise and (ii) lengths of program derivations tend to grow not much more than linearly with the lengths of the programs derived. Finally the programs thus produced are infinitely better than the usual junk.

Gadgets are not necessarily an improvement, vide the succession Blackboard -> Overhead Projector -> Power Point.

It is not the business of computing science to promote "computerization", say by developing demanding applications so as to create a market for the next generation of hardware.

A programmer has to be able to demonstrate that his program has the required properties. If this comes as an afterthought, it is all but certain that he won't be able to meet this obligation: only if he allows this obligation to influence his design, there is hope he can meet it. Pure a posteriori verification denies you that whole-some influence and is therefore putting the cart before the horse, but that is exactly what happens in the software houses where "programming" and "quality assurance" are done by different groups.

Machine capacities now give us room galore for making a mess of it. Opportunities unlimited for fouling things up! Developing the austere intellectual discipline of keeping things sufficiently simple is in this environment a formidable challenge, both technically and educationally.

No, I'm afraid that computer science has suffered from the popularity of the Internet. It has attracted an increasing —not to say: overwhelming!— number of students with very little scientific inclination and in research it has only strengthened the prevailing (and somewhat vulgar) obsession with speed and capacity.

When computers became a commercial product it was essential for industry that its sales force presented these machines as non-mathematical machines that could be used by any one. As a result of these commercial campaigns, research in computing science has been paralyzed by the "rule" that nothing you ever tried should be too difficult for "the average programmer". Slowly —at least at the better universities— computing science research is digging itself out of that hole. But we should all be aware that publication practice has a greater inertia. We should make a conscious effort to stop writing for morons. As a science, computing cannot be expected to mature as long as its practitioners don't take each other seriously.