Why you might want to learn FORTH

You may or may have not heard about the programming language Forth, but if you have heard about it, you are very likely to have heard about it from some very happy, passionate Forth developers!

The best advocacy/introduction/tutorial I’ve ever read about Forth is located in the beginning of source code for this Forth interpreter!

After reading this, it is hard not to get excited about the programming language Forth.

Edwin: The Movie

MIT Scheme is a fine Scheme distribution. Their editor, Edwin, however, has always been sort of a mystery to me. I can’t find anyone that uses it, documentation that “speaks to me”, or even a user guide on how to get the most out of it. Aaron Hsu, psychically detecting another Schemer in need, recorded an introduction to Edwin that provides a nice peek into some of its features.

Unlock Forth on the OLPC XO

A week or so ago I ended up on “Luke’s Weblog” reading an article about Forth on the OLPC XO.

The OLCP Wiki has got Forth Lessons for everyone to enjoy. Forth is a pretty neat language!

You may have noticed that although access to the Forth shell is explained on this page, it doesn’t work. The reason can be two-fold. First, you can only access the Forth shell if the firmware security is disabled. Second, on newer machines you access the Forth shell by hitting the escape key at boot time.

This page explains how to gain access to the Forth shell on machines that have got the firmware security enabled (G1G1 owners, that means you). You need a developer key to unlock your firmware, the request takes less than 24 hours to be fulfilled. Please read the page closely (disable-security twice!) and heed their advice of disabling firmware security (you can always enable it later).

CUFP 07 Write-Up now available

A write-up on the Commercial Users of Functional Programming 07 conference is now available here.

It is definitely worth a read for folks who wonder about the “real world” problems that are solved using functional programming. There is a nice mix of both languages and problem domains, and the tone is pretty laid back.

Fun read on the evolution of C++

Last June I read “The Evolution of C++”. I was pleasantly surprised by just how fun it was to read. If you’ve ever read Bjarne Stroustrup before you know that he has got a sense of humor and frankness that makes his work quite accessible and informative.

The article covers the origins, the process and evolution, critics, users, researchers, big changes, strengths, and weaknesses of C++. On top of that, there are interesting historical bits that really let you put things in perspective. Unless you were there when it happened, you will definitely be surprised about the world surrounding C++ back when it got started.

For someone pretty unfamiliar with C++, it was a lot of fun to read about its goals, what it does well, and even what it does not so well. In the examples presented in the paper, you get to see the elegance of generic programming and the STL. There is even an overview of exploring functional programming with C++.

The article is quite long, 57 dense pages fill it out quite well. It is so well written and entertaining, though, that it is well worth the read.

For any of you long time C++ developers out there, I would be interested to hear your take on it.

What is “real code”?

One common complaint about non-mainstream programming languages is that there hasn’t been any “real code” written in that particular language. One response to this is the Practical Common Lisp book.

Whether or not a MP3 database or a spam filter is “real code” is up for debate. Nonetheless, based on the success of the book, people clearly want to see “real code”.

In your mind, what is “real code”? What is it that you need to see in order to believe that a language can do “real work”?

Move and resize windows on MS Windows

ms-window-move-resize-info is a project to provide both the libraries and helper programs to do three things:

  1. Get information about the windows on your MS Windows desktop.
  2. Move windows on your MS Windows desktop.
  3. Resize windows on your MS Windows desktop.

I wanted to do these three things for two reasons: to lay out windows precisely on large monitors and to force windows to a suitable size for use in screencasts. Surprisingly, no programs exist (as yet) in a “ready to use” form to quickly and easily do these three things. (To be specific, no programs that weren’t “fishy”, “unfinished”, or incomplete. Believe you me, I like coding, but I would rather play guitar!)

Here is the link

Update: 12/17/07 I just uploaded a new release that only displays information on windows that appear in the taskbar. Also the window text is no longer tweaked, it appears just as it does in the taskbar.

Interesting note: when you maximize a window, you are really setting its location to (-4, -4) and adjusting the width and height by adding 8 to your screen width and screen height to “shave” off the (default) window borders.