archives

Backwards debugging

I just came accross UndoDB, which allows stepping backwards through a program. It reminds me of the Objective Caml debugger.

Outside of these more complex tools, I find it easy to look back in program execution when I use recursion rather than mutation and a stack trace is available.

What other languages or language tools allow looking backwards in program execution?

"New story" template

How easy it is (and whether it makes sence) to pre-fill the body of the newly created story with a template mentioned by Ehud?
That will make it easier to present stories in the same format.
I mean the text of the template can literally contain recommendations - like, describe the main point here, quote here, but no more than 200 words, provide links here, list authors here, etc. and HTML formatting, too.

Linspire chooses Haskell as preferred language

This is a couple of weeks old, but significant enough that I think many on LtU will be interested. From the Debian Haskell mailing list:
The OS team at Linspire, Inc. would like to announce that we are standardizing on Haskell as our preferred language for core OS development.

We are redoing a bunch of our infrastructure using Haskell as our common standard language. Our first task is redoing our Debian package builder (aka autobuilder) in Haskell.  Other tools such as ISO builders, package dependency checkers are in progress. The goal is to make a really tight simple set of tools that will let developers contribute to Freespire, based on Debian tools whenever possible. Our hardware detector, currently in OCaml, is on the block to be rewritten as well.

There are four of us using Haskell, all CCed on this message.  All of us have been using functional languages for quite some time.  At Linspire, our choices have been OCaml and Haskell. David Fox wrote the hardware detector in OCaml and is now porting it to Haskell.  Jeremy Shaw has been doing various utilities in Haskell for several years.  Sean Meiners recently wrote an application for managing his recipe collection and is now hooked.  I am porting our CD build procedure from OCaml to Haskell.

We are interested in many other uses of Haskell.  The recent discussion about Haskell as a shell interests greatly, for example, as we have all suffered through years of bash code.  We'd also like to make some Haskell bindings for Qt and KDE, though at the moment we don't have a good plan to tackle that problem efficiently.

To date, Linspire (formerly Lindows) has focused on polishing Linux for the consumer market.  I mentioned Freespire, above.  We announced Freespire recently (www.freespire.org).  Essentially it is a more open, developer friendly version of Linspire.  http://freespire.org/about/vision and http://freespire.org/support/faqs have good overviews.  Access through apt, open-source CNR client and many other good things.

I mention Freespire because some of our colleagues were concerned that using Haskell would isolate us from the larger community of developers and make it hard to find new employees skilled in Haskell, should we need to.  From our perspective, functional programming makes us more effective and we think that getting even a few people who know Haskell hacking with us is a better combination than lots of Perl and bash.  I'm not sure I expect anyone on this list to disagree, but still I'd love to hear your thoughts on the subject.

Also, Linspire is based on Debian. We've talked a little with John Goerzen who announced his missingH library here a while back.  We've imported it and expect to pass updates back to him as well as any other libraries and tools that he would be interested in includng in the Debian archive.  Also, it seems there are quite a few other libraries out there which are either not debianized or stale, but perhaps that is because I haven't fully caught up with what people on this list have done.  If there isn't a cron job running somewhere that updates an archive with Cabalized libraries and apps, we would like to help set one up.

I will be at Debconf from Sunday, May 14 through Tuesday evening.  If anyone on this list is there, I would love to chat and see how we can help each other.

Clifford Beshers <clifford.beshers at linspire.com>
OS Team Lead
Linspire, Inc.

Linspire chooses Haskell as preferred language

This just came up in the discussion group,

The OS team at Linspire, Inc. (formerly Lindows) would like to announce that we are standardizing on Haskell as our preferred language for core OS development

Interesting!

Constraint Programming

I have been reading a bit of late on Constraint Programming and thought I'd dump some of the links that have helped me along the way. One problem I find with learning Constraint Programming is that I easily get bogged down in the details of implementation and theory. In basic terms, CP consists of a three stage process: (1) Declare the domain (range) of the variables; (2) Declare the constraints on those variables; and (3) Search for solutions. The 1st and 2nd stages can be combined without too much loss, but there seems to be a general consensus that search should be kept separate as much as possible, since it usually is the most expensive and the least declarative. Most of the resources concentrate on the details about how to go about defining programs in these three stages, as well as giving hints about limiting the combinatorial explosion of the search.

The best tutorial I've found is Finite Domain Constraint Programming in Oz which gives a pretty good practical introduction to the subject. Constraint Programming in Alice is a related work in progress that follows the same general outline. For those who like slide presentations, the lecture notes of Christian Schulte and Guido Tack are good resources. Both Christian and Guido are working on the implementation of Gecode, which is a set of libraries (in C++) that seek to take the model of computation spaces, as first realized in Oz, and extend their reach into other programming languages (Christian uses Java, while Guido uses Alice). For a more detailed look, Christian Schulte's PhD thesis on Programming Constraint Services is an in depth treatise on the use of computation spaces for CP.

One book I've been eyeing is Constraint Based Local Search which uses COMET as the PL. My only hesitation is that I don't quite grok the concept of Local Search - a search method that is supposed to be quite efficient but not guaranteed to find a solution. Anyone care to hit me with a clue-by-four on Local Search?

Stealing language features for fun and profit in Ruby

Hi all, I haven't used Ruby much yet, but I was happy to see this entertaining article about how to enable some language features common in Haskell, ML, Lisp and others (Pattern-matching, S-expressions).

If It's not Nailed Down, Steal it

BlackBox Component Builder has been open sourced

BlackBox is a RAD IDE for the Component Pascal language (not really Pascal, it is a superset of Oberon).
Personally, I don´t like much the language, but the framework and
environment are really interesting. It is very light and as integrated as Smalltalk. It is also nice for literate programming.
The sources are included in the installer.

Ravenscar Profile?

The Ravenscar Profile for SPARK/ADA supposedly makes concurrency safe in that static tools can analyze the program. Might any LTU readers have real-world Ravenscar experience to share with us? It appears to be shared-state concurrency, which I think is considered less than ideal on LTU, but if it can be statically checked perhaps that ameliorates some of the evil?