RealPlayer10 on Linux

August 30, 2004

I was recently having trouble with sound and RealPlayer10 on Linux. It turns out that RealPlayer10 (and Helix Player) only support the older OSS sound drivers (rather than the newer ALSA drivers). I was on 2.6.6. I downloaded 2.6.8.1 and this time only compiled the OSS drivers and not the ALSA ones. Be aware that you should not (perhaps cannot) load both OSS and ALSA drivers.

I finished the SISC videos last weekend (although I need to return to the last 4). I wanted to get back to finish watching a lecture webcast series for the subject Operating Systems and Systems Programming from Berkeley. I’ve seen a previous years lecture series but I’m pretty sure I didn’t finish. It’s all in Real media format so you need RealPlayer. It’s not so good on dialup – I hardly get a frame but the audio is ok.


Spring and Hibernate

August 30, 2004

We’re using Hibernate at work but not Spring yet. We are using WebLogic Web Services and Flash Remoting which potentially make Spring less useful. However, I’m been reading alot about Spring lately and related topics lately:

* Demonstrating Spring’s Finesse
* Persistence In Spring
* Better, Faster, Lighter Programming in .NET and Java
* “Better, Faster, Lighter Java” sample chapters ch00.pdf ch03.pdf ch10.pdf
* still struggling through Expert One-on-One J2EE Design and Development

Looks like “Better, Faster, Lighter Java” would be a good but small book. Probably not necessary if you just use Spring, Hibernate etc. Also, Rod Johnson’s newest book “Expert One-on-One J2EE Development without EJB” could be good but when you already believe it…


The Koan of Side Effects

August 29, 2004

I had a laugh at this (via comp.lang.functional).


Erlang the Movie

August 22, 2004

Just watched Erlang the Movie from 1990 (200M, via lambda-the-ultimate). Such a laugh I had to watch again :-). However, there was a serious demonstration of a “hot software upgrade” technology which allowed the system software to be patched while continuing uninterrupted in “24×7” style.

I downloaded the movie via BitTorrent using BitTornado. You can “apt-get install bittornado-gui” if you’re on Debian.

Erlang is a programming language that uses message passing concurrency rather than shared state concurrency (as in Java). Some other languages with message passing concurrency are Oz, E, Io and apparently MultiLisp (a Scheme dialect).


SwingWorker race condition

August 22, 2004

I was reading about the problems related to shared state concurrency (as opposed to message passing concurrency as in Erlang and Oz). I came across the following interesting bug described on the wiki discovered by Luke Gorrie. There is also a reference to a Sun article describing the bug and the solution. This is ancient history but probably a problem misunderstood by many Java programmers.


Pairs as lambdas

August 18, 2004

The SICP video lectures talk about how data is not intrinsic. That is, once you have lambda, you have enough to create all the data structures you want. Of course that is without caring for efficiency.

Here’s some code I was mucking around with the other night:

; Implement pairs (cons, car, cdr) in terms of lambda.

(define cons
  (lambda (a b)
    (lambda (x)
      (cond ((eq? x 'car) a)
            ((eq? x 'cdr) b)
            (else (error "bad dispatch"))))))

(define car
  (lambda (pair) (pair 'car)))

(define cdr
  (lambda (pair) (pair 'cdr)))

; Example to type into the scheme repl.
(define a (cons 3 4))
a                 ; => a procedure
(car a)           ; => 3
(cdr a)           ; => 4
(a 1)             ; error "bad dispatch"

; The following attempts to work out what "error" does. This example will
; probably display "1" and then exit to the repl with "bad dispatch" error.
; It may not as Scheme doesn't define the order of evaluation for arguments to
; a combination.
(+ (display "1\n") (a 99) (display "2\n"))

The Python Paradox

August 14, 2004

http://www.paulgraham.com/pypar.html

I learnt Python afew years ago. I’ve moved onto Ruby for day to day tasks and am studying Scheme and Common Lisp when I can spare a moment.

Today I was watching another couple of videos from the Abelson and Sussman collection. It’s about 9G of divx movies. I’m pretty dedicated to my lisp education – I’m only on 32k dialup connection. I watched 6a&b about streams (again) and then got onto the very amusing lectures on meta circular evaluation (7a&b). Very funny – a must see for any lisp enthusiast.

I was also reviewing multithreading issues in Common Lisp implementations via the slides from Roger Corman’s talk on the subject.