Emacs haskell-mode Unicode Cuteness

Paul Brown @ 2007-09-15T18:21:00Z

With haskell-mode for Emacs, hidden away in haskell-font-lock.el, is the variable haskell-font-lock-symbols. Setting it to 'unicode' will make Emacs do pretty things for anonymous functions:

and composition:

among others. Nice. (N.B. it can interfere with alignment, but I have yet to run into any issues.)

(comment bubbles) 3 comments

A Little Life Support for Typo

Paul Brown @ 2007-09-13T04:31:00Z

I've been busy, but I haven't been so busy that I couldn't find a little time to blog. I have been busy enough that I couldn't find time to diagnose why Typo would give me an HTTP 500 after a very long pause whenever I tried to post. I finally found the time, and a little poking around was enough to suggest that 250k rows in the sessions table was a bit much for the way I have MySQL configured.

The bloated sessions table was the result of the default configuration that uses the database to manage sessions. Truncating the table plus a switch over to memcached for session management (as per Err) have me back to a usable configuration.

(comment bubbles) 0 comments

Personal Callbacks on Long Tasks

Paul Brown @ 2007-09-13T04:18:00Z

I have been running some relatively involved builds and computations from the command line, and I hate the attention-suck of coming back to the shell every so often to see if it's completed yet. A command line quicky with growlnotify comes in handy:

$ long-running command && \
  growlnotify -s -m 'long-running command completed.' Done.

Which gives me one of these when the initial command completes:

(comment bubbles) 0 comments

Apache ODE Article Up On InfoQ

Paul Brown @ 2007-09-04T19:38:35Z

To coincide with the 1.1 release of the Apache ODE BPEL engine, I wrote a short introductory article that's posted at InfoQ. In addition to resolving a bunch of issues, the 1.1 release is the first since ODE graduated to a top-level project.

As a teaser, if you've never seen a BPEL demo that doesn't involve SOAP, this one uses the HTTP binding support in AXIS2 to invoke a BPEL process using curl from the commandline. Have a read.

(comment bubbles) 0 comments

ElementTraversal == Pig Lipstick

Paul Brown @ 2007-08-28T16:10:00Z

Elliotte's right — the ElementTraversal spec is lipstick on a very ugly pig that's already wearing a good amount of makeup (serialization) and a ridiculous hat (XML namespaces "support"). (I've already given the DOM a few deserved kicks.)

So what does it take to deprecate the DOM? It takes a better API on equivalent licensing terms, as more liberal licenses will tend to trump better software and many of the customers of a better XML API are at the more liberal end of the licensing spectrum, i.e., Apache. I'll second Dan's call to get XOM — or something that sucks as little as XOM does — packaged as a DOM killer, and at least from my perspective, that does not include a JSR or the JCP.

Do I smell bacon? It is, after all, the Year of the Pig...

(comment bubbles) 0 comments

If only there was lint for XPath...

Paul Brown @ 2007-08-16T00:05:00Z

An alternate title might be why true is false.

I got some help from Matthieu debugging a BPEL process today, and it boiled down to this little construct:

<b:while>
  <b:condition>true</b:condition>
  [...]
</b:while>

A lint for XPath 1.0 would have caught this one. As written, true is a relative location path, and depending on the document and context node, if there isn't a node named true, it would evaluate to the boolean value false. (The expressions section of WS-BPEL 2.0 specification further states that the XPath function boolean(...) should be applied to any value not already a boolean.)

This is what the true() function is for. Kudos to Matthieu for spotting it after we'd explored a few rabbit holes looking for an explanation. (And, yes, I still write WS-BPEL by hand in Emacs. I'll get around to updating my Relax NG Compact schema for transitional BPEL to WS-BPEL 2.0 at some point.)

(comment bubbles) 0 comments

A Dirty G5 is a Sleepy G5

Paul Brown @ 2007-08-15T02:02:51Z

I use a venerable G5 quad for most of my work at home, and other than being noisy and producing a lot of heat, it's been a good machine. Then last night, after I tweaked some of the base options (with /usr/sbin/sysctl) to get more processes per user, it started going to sleep at random times. A look in the system log showed:

Aug 14 21:15:54 g5-2 kernel[0]: SMU_Neo2_PlatformPlugin core dump:
Aug 14 21:15:54 g5-2 kernel[0]: IOHWControls:
[...]
Aug 14 21:15:55 g5-2 kernel[0]: [11] "CPU A0 DIODE TEMP" Type:"temp" Id:11 CUR:79.40960 C
Aug 14 21:15:55 g5-2 kernel[0]: [12] "CPU A1 DIODE TEMP" Type:"temp" Id:21 CUR:78.49152 C
Aug 14 21:15:55 g5-2 kernel[0]: [13] "CPU B0 DIODE TEMP" Type:"temp" Id:31 CUR:89.51200 C
Aug 14 21:15:55 g5-2 kernel[0]: [14] "CPU B1 DIODE TEMP" Type:"temp" Id:41 CUR:100.7168 C
[...]

Ah. CPU B is too hot...

I popped the side panel off, pulled the air deflector and fans, cleaned a bunch of dust off of the air filter for the CPU module, put things back together, and all is well — and quieter.

(comment bubbles) 0 comments

All Posts contains 397 items in 57 pages of 7 items each:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57