|Home » Learning Curve » Developers Workshop
All About the Eve
Apple's WWDC is right around the corner.
Karin told me first. Then Staffan mentioned it. So I contacted Jocke.
'Oh yeah, it's a big IT training factory, right downtown. I can get you in.'
I met Elisabeth. She took one look at my CV and sent me to meet Lillemor at the factory, a huge imposing structure right on the water.
Lillemor was a handsome woman not quite middle-aged. 'When can you start?' she asked me. 'Tomorrow?' I suggested. 'No, let's say Monday.' It was a Wednesday. Lillemor sent out a circular to all the other teachers, telling them of my imminent arrival. 'We've never had someone here with this level of competence', I was to read later when one of the teachers showed me the letter.
I was to spend the first two weeks in the office acquainting myself with their DOS-based office automation package. That fortnight lasted all of ten minutes when one of the teachers came in.
'We've got a question in the lab that no one can answer. Can you help?'
It was a simple system, based on MS Word. Function key array at the bottom of the screen, hit an F key to go up a level, hit Esc to go back down.
I never went back to the office to study again. It was so intuitive. 'Keep in mind that these systems are written by humans', I told the students. 'Don't try to think like a program - try to think like the programmer who wrote it.'
Evidently we had a formal curriculum, but I never saw it. I was in charge of the actual 'IT' part of it. Lennart handled Excel. Micke handled public speaking or some such. A little blonde girl, who turned up first two days later, was in charge of something else. She and I were a couple already that night.
'What do I teach them today?' I'd ask Lennart. 'Oh, maybe something about the history of computing', he'd suggest. Said and done.
Hasse rang. 'Borland's got a new compiler out. They got it in a shop window downtown.' I scooted over to see it. It was big like a suitcase. 'This is nothing', the clerk told me. 'Microsoft's will arrive soon. It weighs forty kilograms.'
'You mean it takes 40 MB disk space?'
'No, it weighs forty kilograms.'
And indeed it did. It was a box that stood some three feet tall. I needed a cab to get it crosstown to the GF Mia.
People at work asked me what I was doing.
'It's a compiler', I told them.
'What are you going to do with that?'
'What kind of programs?'
Half a year later, when I'd written a course in C and brought in half a dozen programmers from the national telco, we invited our fellow teachers to attend as well. One of them, struggling with a Celsius-Fahrenheit lab, commented:
'I don't understand why anyone would need to write more programs. Don't we already have all the programs we need?'
Things were primitive back then. Microsoft's 'IDE' was a mess.
'Finish writing your program, then exit Windows and invoke the compiler from the command line', it instructed.
Borland was better. It ran in Windows and you stayed in Windows. And it observed the important 'user in control' principle: when building your app, it had a big dialog onscreen with lots of tasty statistics whizzing by.
But it was a bit wasteful. Too much bulk in the final product.
Either way, getting to a finished Windows application took a lot of time and effort, and there was always the nagging thought that 'there has to be a better way'.
Windows programs are self-contained in a single file. There you have the reentry table, the data, the code, and the resources. The resources are compiled first, then tacked onto the executable when that's ready.
Resource source is in the form of dialog templates, accelerator tables, and the like. Accelerator tables define what keyboard shortcuts the application will accept. Dialog templates define the appearance of dialogs in the application: their x, y, cx, cy values, their class, their fonts, their labels, the layout of controls such as pushbuttons, and so forth.
One of the most fun things about Windows programming (and most never go down to bare metal level) is a structure known as OPENFILENAME. OPENFILENAME is used to both open and save files. Microsoft sample code shows how you lugubriously fill in each and every one of the fields. This takes a lot of time and code. Obviously it's smarter to fill it in beforehand in global memory and then just invoke it when you want it.
Setting up the main window class. Instantiating it. Then creating your first window. Then the message pump code. Then your window procedure. It works, but... And there are no shortcuts: there's no way to take things to a higher level of abstraction. I likened Microsoft to an auto repair shop where the mechanic tells you 'OK your car is ready to go, and if you want to roll down this window, we put a screwdriver in the glovebox, and I can show you how do use it'.
By now I'd found out why Elisabeth hired me. It wasn't to teach secretaries how to use an MS Word knockoff. Predictions were we'd have 20,000 unemployed COBOL programmers by year's end. I devised a 20-week curriculum with marketing and we started selling it. The word got around, and soon I got a call from Andreas.
'Hello. I'm with NeXT Software.'
Everyone had heard of NeXT; few had seen it; but everyone talked about it.
'They have 48x48 icons', said Conny, our head admin.
'In 4096 colours', said another.
'They call it near-photographic quality', said a third.
Andreas wanted me to arrange for a permanent NeXT exhibit in our IT factory. He gave me the complete NeXTSTEP press kit. It came with NeXTSTEP The Movie on VHS, all the manuals, a few books, and the setup itself for x86.
The code editor was pure genius. You could collapse and expand methods. So your source might look like this:
Until you clicked on a method, whereupon the code for that method would appear.
But the real brilliance was in Interface Builder. This was the missing link, the piece of the puzzle missing in Windows application development. Suddenly Deckerd came into the sunlight for the first time, with Rachael at his side. So bleating obvious too.
Don Yachtman said that NIBs were 'freeze-dried': effectively they contain code when they're unarchived. It got even better.
Tomorrow is the keynote for Apple's 2019 WWDC. There's of course a lot of speculation about what they'll reveal. There's also a lot of water under the bridge since Redwood City came to Cupertino.
Red Hat Diaries: Locked in the Garden