Archive for August, 2004

RealPlayer10 on Linux

August 30, 2004 Leave a comment

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 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.

Categories: Programming Tags:

Spring and Hibernate

August 30, 2004 Leave a comment

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…

Categories: Programming Tags: , , ,

Abelson and Sussman lectures

August 30, 2004 Leave a comment

I finished the SICP 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.

The Koan of Side Effects

August 29, 2004 Leave a comment

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

Erlang the Movie

August 22, 2004 Leave a comment

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).

Categories: Programming Tags:

SwingWorker race condition

August 22, 2004 Leave a comment

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.

Categories: Programming Tags: , , ,

Pairs as lambdas

August 18, 2004 Leave a comment

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"))
Categories: Programming Tags: