Entries : Category [ Tools ]
[Systems]  [Software]  [Tools]  [Ideas]  [Nomadics]  [Earth]  [Sky]  [Community]  [Books]  [Movies]  [Hardware] 

06 November


My main computer is now a BlackPearl from Emperor Linux. It's a Linux powered Sony Vaio with 2 GHz P-4M and 512 MB RAM, CD-RW/DVD, and WiFi. You pay a slight premium to get Linux preinstalled, but it's nice to have everything just work. The main improvement I'd like to see is better battery life.

Posted by Steve at 21:11 | Comments (0) | Trackbacks (0)
08 November

Jet Lag and Numarray

Number cruncing in the middle of the night.

My sleep patterns are still mixed up from my trip to Singapore, but I should be back to normal soon. Since I couldn't sleep I read an article about Numeric and Numarray by David Mertz at IBM developerWorks. These two Python packages provide provide computations on large numeric arrays with the ease, clarity, and elegance of Python and the speed of highly optimized C.

I'd played with NumPy a little and David's article inspired me to download and install Numarray 0.7. The documentation indicates that it had been tested with Python 2.2.2, but I found that it also works with Python 2.3.2.

Posted by Steve at 04:07 | Comments (0) | Trackbacks (0)
02 December

Revisiting Quixote

I'm looking at Quixote again. It's a nice web application framework for Python. It's more focused than other frameworks like Zope and Twisted, concentrating on web interfaces for applications. It leverages existing Python skills and emphasises easy integration with other Python packages.

Posted by Steve at 21:04 | Comments (0) | Trackbacks (0)
09 February


I keep coming back to Lisp. I just finished Mark Watson's Loving Lisp - The Savvy Programmers Secret Weapon. While still a work in progress, it's a practical tutorial which provides enough Lisp to get you started. I've downloaded Steel Bank Common Lisp and begun to play with it.

Posted by Steve at 12:56 | Comments (0) | Trackbacks (0)
23 February

Beautiful Code

Over on the Erlang mailing list, Joe Armstrong is campaigning for a minimalist Erlang distribution. Such a distribution would be useful in mobile and embedded devices. He remarks:

It must be small and beautiful because I might have to change it in the future. Beauty is not in the eye of the beholder - it is in the eye of the maintainer.
The standard distribution tends toward being large and complex to support speed and large scale systems. With ever faster processors, perhaps some speed could be sacrificed for simplicity.

Posted by Steve at 05:01 | Comments (0) | Trackbacks (0)
26 February

SBCL 0.8.8

Steel Bank Common Lisp version 0.8.8 is out.

Posted by Steve at 21:02 | Comments (0) | Trackbacks (0)
28 February

Lisp Productivity

I enjoy reading Joel on Software and appreciate Joel's insight into managing software projects. He writes well and has a lot of good ideas. However, in this discussion thread on about Lisp, he confidently pontificates about something that he doesn't know much about. In part he says: "I don't see any reason why a lisp programmer today would have a productivity advantage over a C# or Java programmer (and yes, I know lisp.)" As Paul Graham describes in Beating the Averages, Lisp has advantages in interactivity, control, and expressiveness.

Joel may have a casual acquaintance with Lisp, but he obviously moved on without mastering it. There are a lot of smart programmers like Joel who dismiss Lisp. They may have tried it in some manner like Joel, and think they know it. They probably do know the syntax, but then Lisp's syntax is about as simple as you can get. The semantics, on the other hand, is very rich. Lisp is rather like the game of Go, where a small set of simple rules leads to very subtle and complex play.

Though Lisp syntax is simple, it bothers a lot of programmers coming to it from languages with Algol or C style syntax. Of course you get used to it, but many don't want to bother. Python syntax has has a similar effect on many programmers, though most adapt quickly and find that Python "fits your brain". Python is superb at making simple things simple and difficult things possible. Lisp has a steeper learning curve and isn't as easy for the simplest things, but excels at solving complex problems. Perhaps Lisp's mathematical elegance only appeals to those with a stronger than average math gene.

Posted by Steve at 15:06 | Comments (0) | Trackbacks (0)
06 March

Vector Weblog

Vector, the journal of the British APL Association, now has a weblog. Other array oriented languages are like J and K are covered in addition to APL, as well as array processing extensions to scalar languages like C++ and Python.

Posted by Steve at 09:10 | Comments (0) | Trackbacks (0)

J 5.03 Beta

I haven't been using J lately and had let my license lapse. I downloaded J 5.03 beta for Linux and am quite pleased with it. The Java based GUI works well and there have been some performance tweaks. This is a valuable tool for anyone doing numerical work. I've renewed my J User License.

Posted by Steve at 11:07 | Comments (0) | Trackbacks (0)
14 March

K = APL + Lisp + C

The programming language K from Kx Systems applies APL style single character array programming primitives to Lispish lists and lambdas with a C like emphasis on efficiency. It offers high performance processing of large data sets in an incredibly small executable. I makes for productive programming as, like APL, a one liner can often do what it would take a page of C++ or Java to accomplish.

A limited version of K is available that is "free as in beer" for noncommercial use, though it seems that an unlimited commercial license is in the six figure range. I'm sure it's worth it for some applications, but I don't have one right now.

Posted by Steve at 18:00 | Comments (0) | Trackbacks (0)
20 March

J on Linux

A Tool for Thought

The J programming language has long been best supported on Windows, largely because of the VC++ based GUI. Recent versions also have a Java based GUI for portability. I've successfully completed the J Primer exercises with J 5.03c beta on Red Hat Linux 9.0 with Java 1.4.2. Now that Linux doesn't feel like a second class citizen in J, I expect that I'll use it more. J is a very compact and powerful data processing tool, but you need to use it regularly if it's conciseness isn't to become cryptic.

Core J functions are one or two characters and operate on arrays of data, and like Lisp programs are data. J is actually an executable mathematical notation with facilities for general purpose programming. Functions may be easily composed of other functions. As a simple example, the mean of a list of numbers may be defined:

  mean=: +/%#

which can be read "mean is plus over (or sum) of the list divided by the count" and

mean 8 7 6 5 4 3

evaluates to 5.5

Posted by Steve at 09:18 | Comments (0) | Trackbacks (0)
21 March


CTO is a good starting place for learning about Collection Oriented and Functional programming languages. The site also has information on operating systems and algorithms.

Posted by Steve at 08:34 | Comments (0) | Trackbacks (0)
27 March

PyCon D.C. 2004

I'd like to have been able to attend PyCon D.C. 2004, but the timing didn't work for me. Some of the papers are on line however. There's a lot of interesting stuff, particularly the PyPy , SimPy , and Python and Math talks. The latter lead me to Jiving in J which discusses using J to teach high school mathematics.

Posted by Steve at 07:01 | Comments (0) | Trackbacks (0)
04 April

J5.03 Released

Jsoftware has released version 5.03a of their array programing language J for general use on Windows, Mac, and Linux. To use J 5.03 you must sign up for a free J User License. Previously one had to pay US$100 for a personal use license and US$600 for a commercial license.

Though J has a fairly steep learning curve, its power makes the effort worth while. Ample documentation, numerous tutorials, and various demos can help you get started. One of the demos is a Solitaire game contributed by a high school student.

J is particularly well suited to performing complicated calculations on larges arrays of data. Spreadsheets meet the computational needs of many, but if you have problems that exceed the size and/or complexity that spreadsheets such as Excel or Gnumeric can handle, you should take a look at J. New in J 5.03 is enhanced support for client server applications. This could be used to distribute a large problem across multiple processors in an SMP or clustered environment.

Posted by Steve at 19:38 | Comments (0) | Trackbacks (0)
06 April

J as the Essence of APL

J was named by its implementor Roger Hui, who says that he picked it because it's easy to type. J is the essence of APL in a more modern and extensible form. Given Roger's fluency in APL and J, perhaps he subconsciously performed the following J computation:

(<. 0.5+(+/%#)I. 'APL'=/a.){a.
This reads: "Select the rounded average of the indexes of APL over the vector of ASCII characters from the vector of ASCII characters." and evaluates to J.

Posted by Steve at 05:03 | Comments (0) | Trackbacks (0)
17 April


A High Performance Free APL

While I'm happy that J is now free as in beer, A+ is still free as in speech, and I'm more comfortable with that. Consequently, I have the binary 4.18 release running on my Red Hat 9.0 laptop for evaluation. Like J, A+ is a modern dialect of APL, the Array Programming Language.

Unlike J, A+ uses the APL character set, which is both good and bad. The good is that the APL symbols are a bit more mnemonic that ASCII character set. The bad is that you need a special font installed to display or print the symbols properly. It also makes it harder to include source code in email.

Also unlike J, A+ is designed to work in a Unix environment and has very limited support for Windows. J is more cross platform, but supports Windows best.

Posted by Steve at 19:30 | Comments (0) | Trackbacks (0)
01 May

J Labs

J is a very concise, yet full featured language and requires regular use if one's code isn't to be "write only". Since the J shell is a powerful calculator, I often keep a J window open for quick calculations. Like the language itself, much of the documentation is concise and emphasizes the more unusual or difficult aspects of J features.

Perhaps the best way to learn J is by playing with J labs. These labs are a form of literate programming with explanatory text displayed within a J session interspersed with executable j code. The reader may interactively explore variations of the sample code to facilitate understanding. The labs cover topics from circuit theory to linear algebra to data visualization. The J IDE also has facilities for authoring your own labs.

Posted by shrogers at 09:49 | Comments (0) | Trackbacks (0)
20 May

Zope X3

Zope X3 has been released for the adventurous. As the first alpha, the feature set may change, and the X3 designation emphasizes that it is an experimental release. It is not backwardly compatible with Zope 2.X, though the production version of Zope 3 will be. Zope 3 is intended to be more "programmer friendly", with a shallower learning curve than Zope 2. It's been refactored to reduce the amount of "global" Zope knowledge required to generate a Zope product.

Posted by Steve at 05:13 | Comments (0) | Trackbacks (0)
11 June

SBCL 0.8.11

Steel Bank Common Lisp 0.8.11 is out. It's mostly written in Lisp and compiled with the SBCL 0.8.8 I had on my laptop. It's mostly bug fixes with a modest performance improvement.

Posted by Steve at 04:48 | Comments (0) | Trackbacks (0)
15 June

Hackers and Painters

Big Ideas From the Computer Age

Paul Graham's Hackers and Painters is a collection of essays about writing software, business, and computer languages. Drafts of most of the essays are available on his web site, so you can sample them before buying the book. Paul has a lot of interesting ideas and these essays are loosely related to his current project, Arc.

Having made his fortune selling his Lisp based on-line store Viaweb to Yahoo, he's on a mission to create a better programming language. He makes a good case for Lisp as the basis for a new language for the next century. He discounts explicit support for parallel programming as being too low level, though this wouldn't preclude implicit parallelism as in APL and J.

Posted by Steve at 16:36 | Comments (0) | Trackbacks (0)
18 June

Tool for Thought

I think I'm about to settle on J as my chosen tool for thought. What kind of thoughts do I want a tool for? I want something to help with data mining, systems modeling and simulation, machine intelligence, and just thinking about computing, physics, and the universe.

I like it's conciseness, loopless code, generality, and liberal license. It can make good use of parallelism in current and future commodity hardware. It integrates fairly easily with Java and C, or indeed any language with a socket library. It has decent graphics via Java and OpenGL, and an extensive body of documentation.

Posted by Steve at 04:59 | Comments (0) | Trackbacks (0)