Older blog entries for joolean (starting at number 56)

HOPE

Tabling at The Last HOPE was a blast, kind of unexpectedly. I didn't go to any of the talks (although I got to see Jello Biafra's lengthy, meandering keynote on the big projector), but the FSF raised, well, I don't know if it's appropriate to discuss... but it was a lot. And we got a surprising number of requests for ladies' t-shirts.

Shout-outs are due to Matt, Ringo, and Thomas. ...And, grudgingly to Club-Mate. Club-Mate: One Gets Used To It.

SCSS

After almost a year, SCSS 0.3.1 is out. This release features a full-scale code cleanup / reorganization, as well as major changes that improve portability and performance -- the lexer was rewritten by hand, and the pseudo-element handling no longer requires you to manager the style cache yourself. Huge!

Grab tarballs here

SRFI-89

With encouragement from Ludovic, I spent nearly a month (of evenings and weekends) trying to write a more efficient pure-Scheme implementation of SRFI-89, and... failed. In the process, though, I learned a fair amount about Guile's handling of macros and lexical environments. I'm confident Guile will wind up with an SRFI-89 implementation in the near future; it'll just look pretty familiar.

I'll be tabling with the FSF at the HOPE conference tomorrow afternoon between 2:30 and 5:30 and all of Sunday afternoon. Drop by and say hi!

ZaReason

Forgot to mention this earlier, but as a present to myself for making it through a crunch at work, I bought a new laptop. It wasn't just that, though -- the ol' StinkPad, while still probably the nicest machine I've ever owned, was showing its age (4+ years): Inexplicable random shutdowns, spontaneous WiFi disconnects, worn-out mouse button, I couldn't burn CDs any more, and then the backlight in the screen went out.

I'd seen someone at this year's FSF meeting who'd recommended ZaReason, so I headed over to their web site and bought the UltraLapSR. It's fantastic! Like they promised, all advertised features Just Work (suspend, hibernate, etc.), and the thing is fast as hell. I've finally got a laptop with a prettier UI than my girlfriend's MacBook Pro.

R.I.P. smokebottle, long live countyhell!

SRFI-18

It really was the last go-round! Neil checked in the Scheme side of my SRFI-18 implementation early this morning, capping off almost eight months of revisions (and a 75-message-long discussion thread on guile-devel). That duration is a comment not only on the complexity of the specification and the depth of the changes required, but also on how rough the original patch was: I didn't fully understand Guile's threading system at the time, much less the rhythm of interactions such as the ones between individual threads and the garbage collector. So thanks are due to Neil and Ludovic for being nice about things the whole time and helping me get the thing marginally polished. There are undoubtedly bugs -- including, apparently, some kind of deadlock that can show up during make check, but the majority of the work is done.

...Which means it's in, now, and if you're developing with the 1.9.0 series, you can start using it. Like I've said before, I think SRFI-18 is pretty important -- a development platform having a robust and standards-compliant threading implementation is crucial to being able to develop applications of any real complexity on it. Hopefully this will make Guile more attractive to developers and make it less difficult to port standards-dependent projects like Snow to it.

SRFI-89

I spent some time cooking up a translation layer to convert SRFI-89 optional/keyword argument specifications to the format already supported by Guile's (ice-9 optargs) module. Unfortunately, that module has some incompatibilities that I don't think are surmountable (e.g., all required arguments must be passed before any of the optional/keyword ones or the argument-binding system gets confused). Fortunately, Marc Feeley's spec includes a reference implementation that might be usable in a drop-in way. Disappointing that I can't use my convoluted (but more compact) approach, but maybe that's for the best.

SRFI-18

Sent the final patches in (including the Scheme implementation stuff and the test suite) on the 13th. Hopefully this'll be the last go-round -- well, the last go-round before it's done, you know, as a feature. There're certainly some bugs in there.

SRFI-88

Ludovic just committed a patch I made to Guile's reader a while back that lets you use postfix colons to signify keywords (e.g., foo:), and tacked on a trivial implementation of SRFI-88 that just sets the appropriate `(reader-options)' flag. Not having compatible keyword-parsing was standing in the way of some other cool stuff, notably SRFI-89 (Optional positional and named parameters) and SRFI-90 (Extensible hash table constructor). I'm working on a SRFI-89 implementation now in the form of a conversion layer for Guile's (ice-9 optargs) module.

In other exciting(-ish) news, it looks like Ludovic and Andy Wingo are going to revive Guile-VM, possibly for inclusion in 1.10. Rock!

Cambridge

Who's coming to the FSF Associate Members meeting tomorrow? Come on, Advogatters, let's see a show of hands. (I'll only be staying 'til 4:00, though, 'cuz I have to hop the Acela back to NYC to catch The Pogues!)

SRFI-18

Whee -- the second of the three SRFI-18 patches has just been committed to Guile HEAD. This one was a doozy, and included a bunch of additions to the core threading API. Specifically, the following functions are now available for use: scm_join_thread_timed, scm_thread_p, scm_make_mutex_with_flags, scm_lock_mutex_timed, scm_unlock_mutex_timed, scm_mutex_p, and scm_condition_variable_p. In addition to providing the groundwork for a full Scheme implementation of SRFI-18, I think these functions bring Guile's threading API comparably up to date with most other modern, you know, commodity language platforms.

One of the neat things that came out of this round of discussion and debugging is that, as kind of pointed out by Marc Feeley's SRFI-18 spec, waiting on a condition variable is actually a special case of mutex unlocking.

Next up: The Scheme parts of SRFI-18. This should come fairly quickly, given that it's already written -- and that Scheme's far less brittle than C when it comes to refactoring.

The big blue (server) room

I spent yesterday (Saturday) in the office, helping my boss build a rack for our servers, something neither of us had ever done before. The process involved completely dismantling the network used by our company (and the two other companies we share space with); dismantling the existing rack; building our new rack; hastily purchasing underpowered power tools to drill holes into the hardwood floors to brace the thing; painstakingly hooking everything back up according to the notes I'd taken; having nothing work right; panicking; finally realizing at midnight that there was a bad Ethernet cable between the T1 and the switch; celebrating.

Woke up at 2:00 PM today, still groggy, all the muscles in my back cramped to hell.

SRFI-18

Because this is still novel for me: Neil just committed the first of the trifecta of patches necessary to add SRFI-18 support to Guile. This one includes fixes for a couple of deadlocks related to thread creation and cleanup. We discussed the inclusion of a fix for another deadlock related to waiting a condition variable using an inconsistent set of mutexes, but I think that one's going to have to wait. Next on the docket: The enhancements that provide the C foundation for the pure Scheme SRFI-18 implementation.

Hey-O! It's been a real long time. I got a new job, and now I am busy all the time. Happy New Year, software hippies!

SRFI-18

A lot of work, but not a whole lot of progress on this front. Submitted an implementation, which involved a lot of changes to Guile C and Scheme; Neil Jerram wisely pointed out that it really belonged in several separate patches. What ought to go in each of them has been a subject of discussion on guile-devel for the past month or so. I think we are making some headway -- I will keep the 'gato informed.

Scheme

Over the past few weeks I've done a lot of work in Guile. Highlights:

  • SRFI-18: Rewrote the fat mutex system and added timeouts for a number of the blocking thread calls in C -- this provided the necessary support for the full Scheme implementation of SRFI-18 I wrote. Also did a test suite. An exhausting experience!
  • SRFI-88: I came up with a small patch that lets Guile's reader understand the colon-postfix format for self-quoting keywords.
  • Snowflake: A small, buggy Guile module for converting and loading snowballs "natively" -- that is, as if they were Guile modules.
These projects have given me a newfound appreciation for how robust Guile's codebase actually is. But I'd like to get back to my other projects now, specifically libRUIN, which I was on the verge of releasing a few months ago when I made one of my periodic decisions that SCSS was too slow to server as its CSS system... which led me to want to seriously profile it... which meant I wanted to use MzScheme's profiling tools instead of statprof... which meant I had to port it to PLT... which got me interested in all of these cross-interpreter compatibility issues in the first place. It's funny how attention works.

47 older entries...

New Advogato Features

New HTML Parser: The long-awaited libxml2 based HTML parser code is live. It needs further work but already handles most markup better than the original parser.

Keep up with the latest Advogato features by reading the Advogato status blog.

If you're a C programmer with some spare time, take a look at the mod_virgule project page and help us with one of the tasks on the ToDo list!