Thursday, August 25, 2011

FORTH Why isn't FORTH more popular?

The FORTH programming language (operating system??) was once a fairly popular tool for coding applications on 8-bit PCs like the Apple, PET, Atari.  It has also enjoyed a rather long life as a language for embedded applications. (did you know that Sun and Apple boot ROMs use FORTH?)

I used FORTH and really liked it.  So did everyone I knew who actually wrote a little FORTH code.  It was cool.

Some of the key benefits that I saw in FORTH:
  • It was cheap/free, pretty easy to port to a new system, and had a reasonable flavor of standardization.   
  • It could interface to hardware, BIOS, other libraries, etc.   Easily.
  • It was fast.  
  • Had a very small memory footprint.  Something like 3K on the PET & VIC20.
I wrote several applications for clients using FORTH, notable some games for EPYX and the underlying engine for Math Blaster (Davidson and Associates).  It was perhaps the most efficient development tool I ever used.

Developing code in FORTH was very simple, enforced a strictly bottom-up development style, and "limitations" in the editors & tools forced you to really factor your code well.   I recall that there was generally only forward progress on project - once you wrote the code and it worked, you generally did not go back and rework/refactor.

I also remember some negative things about FORTH.   The FORTH community (at least the one I tried to interact with) were kind of zealous.  FORTH was religion for too many of them, and they spent a lot of time debating FORTH and too little time actually just writing apps.  The few user group meeting I attended (I was like 20) was like a revival meeting, and there were "insiders" and everyone else.  I was part of everyone else.  I didn't drink the kook-aide, didn't get religion, and thus was sort of isolated.  Didn't matter - I probably wrote more production-quality code than most of them, and almost certainly worked on products that generated more revenue than all the copies of FORTH ever sold - Math Blaster & derivatives sold many millions of copies, and every DOS version ran on top of my FORTH clone of the original Mac toolbox.  [Davidson was a big fan of FORTH - see wikipedia for more on the Blaster_Learning_System ]

There was also a lot of discussion in the general computing community about the stack/RPN aspect of FORTH and why this was the wrong model.  I never got it - seemed just as natural or unnatural as using registers and such.

To summarize, I found FORTH easy to learn, easy to develop with, and highly productive.  I am sure others (like Louis S. and the folks at Davidson) had similar experiences. So...

Why isn't FORTH more popular?
I am not sure.  Here are some possibilities:

1) Platform Vendors Focused on C
For me, I stopped using FORTH when I went to a game company that was building products for the Philips CD-I platform.  This was a 32-bit platform - C worked great on it, so the fast, low-memory footprint of FORTH didn't matter as much.  There was no FORTH for the platform (only C and assembler), a lot of system libraries,  and there was a huge amount of new technology to understand.  The incumbent programmers at the company we somewhat junior and C as a big challenge.  So I didn't suggest FORTH, and we didn't use it.  Interestingly, I did build a tiny stack-based VM in our game engine that was a subset of FORTH.  But it was invisible, i.e. the code for it was generated by tools, not humans.
  
2) Colleges Taught C
In the early to mid-80s, PC's we really starting to take off and programming for PC-class systems was being taught in colleges.  C was the language of choice at the time.  So new grads knew C, not FORTH.   This is pre-Internet, so FORTH was not something you would stuble on or download and try.  So to programmer's who did NOT start in the 8-bit world, FORTH was invisible.

3) FORTH Vendors Failed to Engage Market
Most FORTH vendors - at the time, all language vendors - were pretty small operations.  I think many were focused on competing within the FORTH market, not in the PC market.  I recall that the ads from LMI, FORTH Inc., MMS, etc.  seemed to be focused on making their FORTH the choice IF you use FORTH.  I don't recall anything that said use FORTH because FORTH is better than C.

Perhaps if is that the FORTH "community" failed to engage the market.  There is an old article entitled 21st Century Forth.  Go read it.  I just re-read it and it seems to me it is focused mostly on the implementation of FORTH itself.  I don't seem much that speaks to the how to market FORTH so people will consider using it.  To me, this is the classic FORTH if we build it they will come.  Not.

Can FORTH become more popular?  Should it?  Do we need to resurrect a nearly dead language? 


Next: Does FORTH matter today?









Friday, May 20, 2011

Learning to weld

I have a car-related project with one of my sons that requires some welding.  We found a shop that would do the work for around $600.  Seemed like a lot, so I started to look at what it would take to buy and learn to use a welder.

After a lot of reading on blogs for people who build dune buggies, meat smokers, and BBQ grills, I decided that I could buy a good welder, learn how to use it, and do our project.  And I would then have a welder for future projects. [ as an aside, I have had dozens of projects around that house that welding would have really helped, but I did the project differently because of lack of a welder ]

To I did my research and decided on the equipment for me:


Hobart MIG Welder
Auto-darkening Welding Helmet
Portable CO2 canister

Total cost was less than the $600 the shop would have charged me for a one-time job.

The stuff is in-transit, I will update when it arrives and I have had a chance to actually do some welding

UPDATE:
Received welder, helmet and CO2 kit.   Setup was easy.   Got the CO2 canister filled at Sports Chalet for $3.50, and bought a second one there too.  Each 20 oz. cylinder is supposed to be good for 40+ minutes of welding.

Got a few welding books (they are ancient) from the Alameda County Library.   Sort of useful, but the best thing I found was videos on YouTube.   This one is good.  There are lots of useful ones too.  Really helps to see it being done.  BTW, most of the guys that do these are REALLY good, so don't expect to get the same results immediately.

Wednesday, May 4, 2011

(Almost) Free Development Environment Part 2

Some months ago I mentioned that it was now possible to build a development environment in the cloud using tools that are free for small number of users (like Fogbugz) or near free for reasonable number of users (like Beanstalk).

The cool development in this sort of model is a company named Atlassian. They have a collection of development tools and collaboration apps that they have been selling for some time. Some you have probably heard of - JIRA - and most you have not:
Here is the "cool" thing - you can purchase a license for all of these tools for $10 each, for up to 10 users.   And the annual support cost moving forward is $10.  This is a great model for startups.   For $70 I get bug tracking, wiki, code review, continuous integration, common user account management, and agile project management.  Running on my box, or on EC2 or whatever. 

The obvious question is why is Atlassian doing this?  Seems simple - startups generally have little cash and avoid costly software purchases.  Example: I love Perforce, but I don't see it early in any startups.  Too much up front cost.

But Atlassian gets this and is making it really cheap.  They know that if my startup is becoming successful and I have 10 people using all of their tools for development, it is highly unlikely that I will change.  And since I am being successful, I have a little money now, and I can buy licenses from Atlassian at "real" prices.  But the prices are competitive.  I figure the tools I use will cost me about $300/person for 25 users.  Effectively zero when weighing the cost vs. effectiveness of good tools for your dev team.

And kudos for Atlassian for donating all of the monies from the $10 product fees to Room to Read.  They have raised over $1 million dollars to help educate the children of the world.

I have purchased the seven apps for $70.  I am installing & configuring for my new venture.  I will chronicle the results. 

Tuesday, May 3, 2011

New Magic Books

I have a stack of new (and used) magic books to read.


The Last Greatest Magician in the World by Jim Steinmeyer
The Art of Astonishment by Paul Harris
Houdini by Brooke Kamin Rapaport
Milt Larsen's Castle Tour by Carole Marie
The Magic of Micah Lasher by Micah Lasher

I love reading about magic.  Some day maybe I will resurrect a few old tricks to entertain my friends.

Spreading the Ubuntu Gospel....

I have  been a serious user and fan of Ubuntu for some time now.  I have it on my personal laptop, my desktop, and even on a client's laptop - which BTW is used to develop and manage apps in a pure Windows environment.  Ubuntu just works,  have done a few major distro upgrades (just did 11.04 on all of my systems, and have no issue/complaints.

I can do everything I need to with Ubuntu - and the list is extensive. I manage a Windows production environment, code for Windows, manage AWS resources, rip CD & DVDs, watch movies, word process, diagram, write Perl and C++ code, share files with Windows and Mac users in the house, etc.

But the real test was moving a non-technical user to Ubuntu.  My wife Debbie is a long-time Windows user who was frustrated with the long boot time and general sluggishness of her XP-based SONY VAIO.  She is mostly a web and email user, but does some word publishing & spreadsheets too.  And has a few favorite games.

I backed up here hard disk and we installed Ubuntu.  After installation and updates, we copied over here Thunderbird files from the Windows backup and had Thunderbird working quickly. Next we imported her bookmarks for Firefox - again, easy and no issues.  We then made a folder and copied all of here documents & files, and her desktop, from the Windows backup into this folder.  From here she is organizing and sorting through her old Windows files into her new Ubuntu environment.

Next we installed wine.  A quick run of the installer for a coupled of CD-ROM games and we had working launcher icons on the desktop for the few games Debbie enjoys.  They are working fine.

Debbie has had her new environment for a few weeks now.  She likes the speed/performance improvement, and has had no issues with using Thunderbird, Firefox and Open Office.  And occasionally running a Windows game.

Friday, January 14, 2011

Abandoning Windows XP - Update

OK, it has been almost one year since I abandoned Windows XP on my laptop and primary desktop systems.  Upon reflection, it was an excellent move.   I continue to learn more about Ubuntu and now feel I can pretty much do anything on Ubuntu.  I love it.  I have also installed on my desktop system at work.

For "office" applications, I use Open Office.  It sucked a few years ago - not now.  It is fast, has the features I want/use, and has good interchangeability with files from MS Office.   Presentations from MS PowerPoint are an issue sometimes, but I don't use it much anyway.  

VLC plays my movies and music.   k9copy manages my DVD backups.  pidgin for IM.  All my developer tools - Perforce, svn, Eclipse, perl - work perfectly (better?) on Ubuntu.

Thunderbird for email. Firefox for browsing.    Aardark works   Lightning works.  Integrated to Google Calendar and my droid.   All works really well.

Software updates & installs via apt-get and Synaptic Package Manager are smooth and easy.

What is really cool is that I am highly productive on old hardware that sucks running Windows.   My laptop is a Acer 3620 with a Celeron and 1G RAM.  Works great.   My desktop is a very ancient HP tower with a PIII and 512M RAM.  works great.

Ubuntu (and Linux in general) has come of age and I see no reason to use Windows again.  And many reasons NOT to.

Saturday, February 27, 2010

Free Development Environment

Today's development software development environments have a few basic needs: some sort of IDE, a version control system, and a bug-tracking/ticketing systems.  The cost of these tools range from free (as in beer) to thousands of dollars. But a common requirement for all of these tools was that you needed a system to run them on.  For a single developer, you could run everything on one box - even you r laptop.  Add another developer and you have to now be sharing things between systems.  As you add more developers, testers, etc.,  complexity and IT needs increase.

I recently have been helping a startup that has a "no IT department" philosophy.  They do not want the cost and overhead of an internal IT department.  Everyone uses laptops, and all servers are in the cloud.  Google Apps provides email, calendar, and shared documents.  And tools like version control and bug tracking are hosted services.

They are using the hosted version of Fogbugz for bug tracking, wiki, and project management.   They are using Beanstalk for subversion repositories. What is cool is that Beanstalk and Fogbugz - two products from two different companies - both integrated to each other.  It all works - really well.

$25 per month for Beanstalk.  This is good for something like 10 users/5 svn repositories/10G of storage - more than enough for a startup.  Fogbugz is more money - $25/user/month - but this is cheaper than buying the software and hosting it on your own system; particularly with small numbers of users.

Now what is really cool is if you and 2 of you buddies want to start a new software company, you can use Beanstalk and Fogbugz for free is you have 3 of less users.  So you can start with no costs and then slowly grow as your needs increase.  Very cool.