Showing posts with label smalltalk. Show all posts
Showing posts with label smalltalk. Show all posts

Thursday, September 19, 2019

Kronos - The beginning

After my stint working as a contractor on the IBM + Raytheon project, a friend of mine I knew from church who happened to know I specialized in Smalltalk reached out to me and got me an interview at Kronos, Inc. where they made time and attendance products.  They hired me as a contractor.

Kronos was the market leader in this space and their breakthrough product was the combination of digital punch clocks with a magnetic card strip reader and an application developed in C to process all the data of employees coming and going.

Before I went there they had created a new version of their system called TimeKeeper C/S which was developed in Smalltalk.  The C/S part stood for Client/Server, so Smalltalk application used a SQL Server database as its backend.

My task on this contracting job was to develop an extension to their TimeKeeper C/S application.  Because they didn't have a database resource to work with me, I developed a dynamic object persistence system that was file based, and I also created a dynamic user interface mechanism to present application windows based on metadata.

It was an interesting project and the work paid well.  Later on the contacts I made would help me again and again.

After the contract period was finished I went back to working on Liberty BASIC again.

Tuesday, November 20, 2018

The Java Propaganda Language

I recently posted the following reply to an article about how management failed when they made incompetent choices about an implementation technology simply because they wanted to use the popular tools instead of the right ones.

Back in the year 2000...
I worked for LingoMotors, a fantastic startup some years ago which had built an amazing AI system that would parse the English language. The whole thing was built using VisualWorks Smalltalk. We had more than a dozen doctorate level computational linguists, several of them famous in their community. The system was amazing, and it leveraged the strengths of Smalltalk in a great way. This was a way to tag information with real metadata about the meaning of the data, and our first customer was a large online bookseller.
When we needed another round of financing we kept on getting pressure from potential investors who agreed we had something great, but they wanted us to port the whole thing to Java before they would back us. They had no clue that doing this would have killed our competitive edge, and it was hard to secure more funding.
The choice of implementation technology had become an issue of political correctness, in a sense. A lot of really wonderful programming language products died when the Java juggernaut trampled the world with overhyped promises. Now it seems that Java is over the top of its S curve, and things are more relaxed. It could happen again.

Saturday, October 27, 2018

Jobs vs Woz - The Closed vs Open Hand

Most people know who Steve Jobs was.  He was the charismatic and visionary frontman for Apple for many years.  He even managed a friendly coup at Apple when he took back the company he was ousted from.  He was a controversial person.  He had his fans and his detractors.  I think he certainly had his good points, but I am really more of a fan of the other less well known Steve of Apple, Steve Wozniak affectionately known as Woz.

Woz was the designer of the original line of Apple II computers.  He had a vision of computers as computers, for everyone.  A hippy vision of computing?  ;-)

What appeals to me more about Woz is that he was generous and wanted to give people something great.  His ambition lay more in personal accomplishment and also in sharing his knowledge with others.  When he created the Apple II computer he wanted it to be open.  He provided a schematic so that users could understand the computer, and so that they could modify it.  People even wrote books about how to do this.  Another example of this is that Woz included expansion slots so that people could extent the computer in this way.

When you turn on an Apple II you can program it right away.  There is a built in machine language monitor.  Depending on the model you can either use Woz's Integer BASIC or you can run Applesoft BASIC.

This version of an Apple computer is a real computer, for computing, by programming.  A computer is a device for a computer user.

Enter the computer as appliance.  :-/

Steve Jobs had a vision of computer as appliance.  This is purely a business perspective.  Sell more computers by marketing to the fat middle of the bell curve.

Of course he is not the only one to think this way.  Somehow progress in computing tends towards reducing it down to a touchscreen and away from programming and true computer literacy.  The Macintosh was a step in this direction.  This has a certain irony because the form of the Mac user interface was inspired directly by the Smalltalk windowing user interface, a programming system.  In addition to the appliance-like format of the Mac software, the computer itself was meant to be closed unit.  You need a special screwdriver to open it, and there are no expansion slots.

So the Mac was a closed machine, and it pointed other systems in this direction (i.e. Microsoft Windows).  You could purchase programming software for the Mac, but unlike other computers on the market there was no direct path to programming when you turned on the machine.  Why was there no easy programming option on the desktop when you started the Mac OS?  For more on this issue see Why Johnny Can't Code which is a popularly referenced article on this topic.

HyperCard eventually was made available on the Mac as an easy and fun programming tool and it was included free of charge for some years, but now it is gone.

Microsoft followed suit with Windows and they too also did not include even a version of their famous BASIC as an icon on the desktop of their new system.  I wrote Liberty BASIC back in the early 1990s as a response to this.  Microsoft eventually provided Visual Basic, but I strongly suggest the this should have been included, for free, and an icon to start Visual Basic should have appeared on the Windows desktop on startup.

I'm not going to suggest that there is some sort of conspiracy to dumb down the computer.  What I will say is that this amounts to a stupid and harmful mistake.  The computer is so powerful and wonderful as a creative too.  These new computers as appliances are depriving people of so much by simply omitting an easy and friendly programming tool.  A desktop icon to entice the curious to try something simple enough for children and powerful enough for casual applications programming.

So, what is really better?  How do you define progress?  What of the early 6502 and Z80 computers when compared to what we have today?  The new computers dwarf these charming old timers, but they are less powerful in terms of the concepts they omit from the user.

Thursday, December 31, 2015

Liberty BASIC at IBM!

While working on our prototype for the Defense Nuclear Agency I discovered that we needed to reset some files repeatedly whenever we tested and demonstrated the functionality of our system.

I was eager to put Liberty BASIC to good use, and since we were running on OS/2 this gave me an opportunity to create a utility that would make things easy.  Liberty BASIC to the rescue!

It was actually easier to create this utility in BASIC than it would have been in Smalltalk.  Smalltalk is very powerful and really is one of the best languages, but BASIC is stronger for banging out small and simple programs.

I took great pride that when were were demonstrating our system to the customer that they also got a demo of Liberty BASIC in action!

Wednesday, April 21, 2010

Our First Laser Printer

We decided to purchase a laser printer so we could print bill of materials sheets for each job. I managed to find a used HP LaserJet cheap. This was the original LaserJet printer model and had only 128K of RAM. This was fine, except if you wanted to print graphics. You could not even draw a half page of black and white graphics with 128K. This also meant that there was very little room to load fonts into the printer. The saving grace was that there was a font cartridge slot. I bought one of those super font cartridges that had lots of fonts. It turns out that we really only needed one font. I don't remember which one we used, but it was a small monospaced font.

The printer had a serial port, not a Centronics printer port. Normally this would have been considered a limitation, but this was perfect for our shop floor control system which I was building around Arnet multiport RS-232 cards.

I needed to learn just a little bit of Hewlett Packard's PCL (printer control language) to make the LaserJet do its thing. I wrote some code in Smalltalk to drive the printer. Depending on how complex the board design was, these bills of materials sometimes had a lot of information on them. It was somehow very satisfying to produce software that would drive a printer elsewhere in the building. I had never done that before.

The printer was located up in the engineering department, and after they designed a circuitboard for an order they would fill in some fields into the shop floor control system and print out the bill of materials on the LaserJet.

Saturday, April 3, 2010

Christmas Vacation

I didn't take the plunge into Smalltalk right away. I wasn't completely sure it was the right choice. I was at the SoftPro store in Burlington in late 1988 and I noticed that they had a copy of the Smalltalk/V software from Digitalk. I asked them if they had any brochures, and they did. Three different full color, double sided marketing sheets. Very nicely done. Everything I saw about the language reminded me of Forth, but it had this idea of objects.

I wasn't about to ask my boss to buy yet another programming tool, so in December I bought it myself. I took the Tandy 1000SX home from work over Christmas vacation and dove into the Smalltalk/V manual, following the tutorial.

I was not disappointed. What an amazing language! I had never used anything so dynamic, or so graphical. Almost all the source code for each and every thing in Smalltalk is there. You can see it and you can modify it if you like. This was very compatible with my observation that Smalltalk and Forth were conceptually similar. The one surprise that really topped off this sundae with a cherry? Smalltalk has built-in multiprocessing. This was the ingredient that I sorely needed to produce the multiuser shop floor control system! What luck!

From Actor to the Real Thing

I decided that I needed more information about the Actor programming language. While at The Bit Bucket one day I asked Laird if he could get me some literature about Actor, figuring the store could place an order for me. He gladly accepted my request.

A few weeks later Laird had the materials in hand and he presented them to me. Then he said something that would completely change everything. He asked me, "Why don't you have a look at Smalltalk?" He told me that Smalltalk was the real deal.

This was not the first time I had heard of Smalltalk. At the New England Mobile Book Fair I had seen a book about it. I ran back to my office and started digging through issues of BYTE until I found an ad for something called Smalltalk/V.

I had seen this sort of ad before, but I just skimmed over it thinking it was a kind of communications program of the sort used with modems. There was at this time a very popular application of this kind named Crosstalk XVI, and this was the source of my confusion.

The ad seemed very interesting. I began to research Smalltalk. I learned that there was an August 1981 issue of BYTE dedicated to exploring Smalltalk. I went to the Boston Public Library and xeroxed all the articles from that issue. It cost me about $40 to do this. So I began to educate myself about Smalltalk.

Tuesday, October 13, 2009

Going Forth

I came across a surprising book in the Needham Public Library when I was 15. It was called Starting Forth, and it was about a programming language called Forth.

The author Leo Brodie had written a charming and fun book about a very interesting language. Forth is a stack based language, and it has a postfix notation in its syntax. So instead of writing 3 + 4 you wrote 3 4 +. Seems strange, but to me it was very familiar because I got my start using HP calculators where you did exactly the same thing.

Forth is interactive, like BASIC. It has a very small core of functions called words, and you create an application by adding new words which have the same syntax as the ones that come built-in. Essentially you extend the language to solve your problem. Smalltalk is also like this.

Forth is the language used to program NASA's space shuttle, so it has some clout. I discovered that there are quite a few Forth fans out there, and I even managed to buy a Forth language cartridge for my VIC-20. Awesome.