
My name is
David Robins:
Christian, lead developer (resume), writer, photographer, runner,
libertarian (voluntaryist),
and student.
This is also my son David Geoffrey Robins' site.
Honey's appendectomy
News ·Saturday June 16, 2007 @ 15:48 EDT (link)
Honey had pain in her lower left side all day Thursday, so I took her to Evergreen Hospital emergency room after work around 1900; they eventually got her into a room and took blood and urine samples and then did a CT scan and determined that it could be her appendix. The CT scan came back around 0100. They decided the surgery could wait until morning, so I went home to get some sleep, and came back Friday morning after the appendectomy, which they did around 0700; it went well. They kept her for observation overnight; I stopped in Friday night too, and then took her home Saturday just after noon. She can walk but isn't supposed to exert herself, or lift very much or drive.
We'll make random things happen to your document
News ·Monday June 11, 2007 @ 20:16 EDT (link)
A collection of random things (heading refers to Word co-authoring "slogan"; I forget who said it originally but I printed out copies for the feature crew).
First, some rants:
I'm annoyed at the state of Linux NES emulators: most are about 5 years abandoned and horribly documented. (I suppose the closed source crowd will crow something about free lunches.) FCE Ultra is supposed to be one of the best, but it looks like it died and then an attempted revival in 2006 also died. In its current state, very few games work; most fail with a gray screen. I'll try one of the better-supported Windows versions (perhaps Nesticle), but that of course means I can't play using the TV, just my laptop, my only Windows box (actually dual).
Windows is an intolerably lousy piece of software for requiring a reboot after changing the domain/workgroup. True, it has gotten much better in that it requires a reboot for far fewer things than, say, NT 3.51, but that's faint praise. Changing the domain should be a minor change to the system. It's personally annoying since I have to switch between my work domain to work remotely and my local workgroup to share files over my internal network.
Speaking of working remotely, IT Connection Manager, the software I use to connect to my work VPN, is also intolerably lousy: it frequently gets "wedged" into a state where it can't connect any more (even after being restarted), and (this I've mentioned before) the "smart" access card needs to be removed somewhere between 2 and 4 seconds into the "checking password" phase, or the password check will count to infinity.
Here's a fun story about personal responsibility (from July 2005, because I dredged through my 'to log' email archive):
Recently a woman called me and said she had no idea who I was but she had been told by someone—she couldn't remember who—that I give money to people like her. The woman said that she and her husband had nine kids and had moved to a desert in the Middle East. Now they were having difficulty supporting themselves because, well, they had nine kids and had moved to a desert. She figured the best solution was to call me and ask if I would support the entire family indefinitely. If you have nine children and think it's a good idea to move to the desert it is fair to say that you are not a good decision maker. So the question I had to ask myself was this: If I gave her money, would she be more likely to a) use it to feed and educate her children, or b) grunt out nine more children and move to a dislodged glacier floating in the Arctic Ocean?
The interesting part of the conversation came after I politely declined her invitation to fund the nonstop production of doomed babies. She got mad at me. Apparently she analyzed her situation and came to the conclusion that the root cause of her problem was the unwillingness of total strangers in other countries to give her money. And her solution to that problem was to get angry.
(Yes, of course it's probably a scam, but if it is it's a particularly stupid one.)
And finally something I only wanted to jot down here so I wouldn't lose it again (from December 2005), about fixing the NTLM authentication on Apache. Also remember: only \ ("\\") works in domain\user (not /; the LWP::Authen::Ntlm module doesn't like it); use keep_alive => 1; the proxy messages in the log mean nothing; LWP::UserAgent needs to be fixed to have $realm set to '' if it's undef in get_basic_credentials; credentials() must be called with 'server:port(not optional)', '', 'domain\user', 'password'; the "Negotiate" protocol warning can be ignored. Term::ReadPassword is nice for password input.
House is done, grass is mown
News ·Sunday May 13, 2007 @ 17:02 EDT (link)
Our home repairs were finished last Saturday, May 6, 2007. Our contractor, Jim Cameron (Cameron Construction), with whom we have been very happy, stopped by to touch up some paint and remove some planks his people had left in our back yard. We're still re-purchasing some interior items (e.g. bedroom furniture, which we've ordered), and will not be completely whole until we submit receipts and get our depreciation back from the insurance company, but the house repairs are done. I was demotivated to mow the lawn while our garage was full of carpet and furniture, and had to make up for the hiatus by mowing it twice afterwards, but it's short again now and should stay that way for, oh, two or three days at least.
Office 14 vision meeting was last week; long boring PowerPoint presentation at the Meydenbauer Center in Bellevue; afterwards I wished I'd stayed at my desk and read the deck, but at least I brought two magazines (latest Spectrum and Communications of the ACM). Despite the lackluster gathering, the new work is interesting and I'm glad to be working on two major Word components and administering a third smaller one which my intern will be working on. Yes: I'll be mentoring a Word SDE intern this summer, should be fun. BH who is now full-time was an intern last summer; we definitely want good interns to become full-time.
I heard that Scott Meyers, author of well-known (in our circle) books Effective C++, Effective STL, and More Effective C++, was giving a presentation for the Northwest C++ Users Group on the 25th, which was being hosted on campus, so server group headed over after eating at Quizno's (visiting ex-Word-dev JB's office on the way out, and, in his absence, drawing liberally on his whiteboard). He was entertaining and interesting, although it's not likely we'll incorporate his abuse of C++ into live code any time soon.
I picked up Honey from the airport on Saturday the 28th.
Abide With Me
News ·Saturday May 12, 2007 @ 22:07 EDT (link)
Hold Thou Thy cross before my closing eyes;
Shine through the gloom and point me to the skies.
HeavenÂs morning breaks, and earthÂs vain shadows flee;
In life, in death, O Lord, abide with me.
I'm still playing piano, semi-daily. The hymn To You Who Believe He Is Precious is pretty tough (three-note chords for the left hand, which are probably trivial for real piano players, but most of the book is only two notes each hand, and being self-taught, mainly with this book and memories of grade-school music, I haven't seen them much); it also has the bass line out of sync with the treble, again probably real piano players are used to playing with a metronome; I'm not. But I can play many simpler songs, such as Abide With Me fairly well and am improving.
Speaking of Abide With Me, a long-time favorite hymn: it was featured at the end of Doctor Who S03E03 (season 3 episode 3), which I downloaded and watched early on the morning of 24th, as the Doctor recalls his fallen sky. The episode also featured the hymn The Old Rugged Cross. At time of writing, we've finished episode 6 (BitTorrent rocks, thanks to someone in #mythtv-users who suggested it).
And to continue with the segues, someone from #mythtv-users made me aware that LinuxFest Northwest was taking place at Bellingham Technical College on the 28th and 29th. I volunteered to be a room monitor, which got me a red volunteer polo shirt with the LinuxFest logo for about an hour's work: I set up the projector for Tim Maher's Perl One-Liners presentation, counted heads, and kicked people out once the room was full (the organizers didn't want more people in the room than there were chairs, probably because of fire regulations).
I've started reading Moby-Dick, and am almost finished Ivanhoe and Death March.
Waiting for carpet
News ·Monday April 23, 2007 @ 19:41 EDT (link)
Horrible driver of the day: WA 465 NFF, black Toyota Paseo, very dirty. Cut me off on WA-520E not far from Avondale Road. You'd think by that time a person would have made up their mind which way they wanted to go—but apparently not this twit.
Good recommended book list. Speaking of books, I'm still reading Ivanhoe but I've also started Moby-Dick, to read it with WB from work (the remnants of the Word book club).
Played some ping-pong today, doubles, with the server group before a meeting; lots of fun, mostly just trying to keep the ball going. I'd forgotten how much fun it was, and that I'd like to get a table, if we can find a place to put it.
The painting is complete (including a little extra on an outside window and the kitchen floor); now we're waiting on carpet. At our contractor's request I packed up our bedroom closet into garbage bags so it'd be clear for carpeting.
Once more into the interface compiler
News ·Thursday April 19, 2007 @ 20:19 EDT (link)
This got so long that I've given it its own entry, separate from the original.
As I've mentioned, I recently did a major rewrite of Word's object model dispatch, which included some gnarly templated (declspec) naked assembly functions. Unfortunately, those are going away now, because x86 assembly doesn't compile in x64 builds (apparently the x64 compiler doesn't do inline assembly at all). The price was an extra level of indirection for C function dispatch (as opposed to C++ or generic handler dispatch). I'm also thinking of changing our (Word-specific) interface compiler to allow inserting small chunks of code directly, so that people don't need to build hundreds of stub functions that just vary one or two parameters to a real handler (this might also obviate the existing handlers, which are pretty limited). So, currently we have something like:interface IDBorders
{
...
properties
{
VT_I4 DistanceFromRight
dispid 22
undo_auto
get proc HrOamBordersGetFromTextRight
put proc HrOamBordersPutFromTextRight
}
}
and the C++ implementation:/* H R O A M B O R D E R S G E T F R O M T E X T R I G H T */
/*----------------------------------------------------------------------------
%%Function: HrOamBordersGetFromTextRight
%%Owner: NoBody
%%Id: 00000000-0000-0000-0000-000000000000
----------------------------------------------------------------------------*/
STDMETHODIMPC HrOamBordersGetFromTextRight(IDBorders* pidBorders, long* plFromText) throw0
{
return HrOaFormatBorder(pidBorders, wpropFromTextRight, plFromText, fTrue/*fGet*/);
}
/* H R O A M B O R D E R S P U T F R O M T E X T R I G H T */
/*----------------------------------------------------------------------------
%%Function: HrOamBordersPutFromTextRight
%%Owner: NoBody
%%Id: 00000000-0000-0000-0000-000000000000
----------------------------------------------------------------------------*/
STDMETHODIMPC HrOamBordersPutFromTextRight(IDBorders* pidBorders, long lFromText) throw0
{
return HrOaFormatBorder(pidBorders, wpropFromTextRight, &lFromText, fFalse/*fGet*/);
}
(names and GUIDs removed) repeated over and over with few minor variations; it's be nicer if it was possible to write:interface IDBorders
{
...
properties
{
VT_I4 DistanceFromRight
dispid 22
undo_auto
get { return HrOaFormatBorder(pid, wpropFromTextRight, plProp, fTrue/*fGet*/); }
put { return HrOaFormatBorder(pid, wpropFromTextRight, &lProp, fFalse/*fGet*/); }
}
}
(where pid and lProp/plProp are filled in by our compiler tool, to be the IDispatch interface pointer and the property value respectively). To help prevent abuse, code blocks with more than three statements will result in an error. This win (11 lines + 2 blank per function x 2 = 26 lines saved, which is code developers don't ever need to read) is made possible by the aforementioned removal of assembly: now that we need to generate thunks for C functions, we might as well be flexible with what we put in them, only defaulting to calling the expected implementing function (in this example HrOamBorders(Get|Put)FromRight). The braces make the block unambiguous to our compiler and are a standard sign of a code block in C and C tools.
There are probably downsides to this idea; I hope AT reads this and helps me think this through (hi Ali!). One is that changes to the interface file require (with the new build rules) 111 files to be build in current debug builds, but we can try to cut down those dependencies: really only a handful of source files should depend on object model generated files.
The advantages are clear: remove formulaic code (it could also be moved to a new file, obthunk.cpp, but why write it at all?), making it easier to read source files, and easier to understand how object model calls are implemented (you can go from the property to the actual implementing method, skipping the middleman, and if you really do want to put a breakpoint on a particular method, put a conditional one on the gatekeeper, HrOaDispatch, or put one on the generated thunk function, which has a predictable name).
Muhahaha... I love to delete code. Although I may hold off on this until Office 15 (if I'm still around) - I'll write in the capability, but not do sweeping refactoring yet.
Looking back, looking forward
News ·Thursday April 19, 2007 @ 19:11 EDT (link)
New window
The first entry (hubris much?) in this system is dated November 11, 2000, and I've been keeping an online journal since 1996, then using a static projects.html page on my University of Waterloo math undergrad account; that's over ten years of being on the web. In 1996 I was 18, and the world my oyster; I wouldn't mind being back in school again, although working with smart people to design new things at Microsoft is comparable.
If I may segue: the features we're designing for Word 14 are so new that I probably shouldn't write about them in detail here, but I do want to commit some thoughts about them. Enter private entries: I can now set a private flag on these entries and only view them myself; after all, the main point of this journal was record-keeping, and if nobody ever looked at it I'd still write in it. There are also topics I want to wrestle with without publicizing them, and since converting an entry to public is easy, it makes a good place to save drafts (against accidental tab closure or Firefox dying). The new entries show up locally only and have a different colored heading, and no, they won't show up even if you fish for them by index.
Get Rich Slowly, a site I've been reading, advises having a long-range financial plan, which sounds like a good idea. Right now they're highlighting a series of videos on investing—what are stocks, what are mutual funds, why diversify—which are interesting albeit basic.
Much progress has been made on the house: at the end of March when I wrote last they were finished structure, roofing, and siding, and mostly done drywalling. Now the drywalling is complete, they've replaced the broken windows (left of the front door, garage, bathroom, and one bedroom), and painting is nearly complete. There are some dents in the (new) siding that need to be resolved, and the new bathroom door seems slightly crooked, but aside from that it all looks good. Also, they painted our spare bedroom the same as the rest of the house, rather than the bright yellow it was before, which is great and I am sure will make Honey very happy.
Packed garage
The mortgage company has been very slow at returning our checks (they come from the insurance, who also won't win any speed awards, in our name and the lienholder, so we need to pass them through the mortgage company first, and slice off bits and pieces and send them to us randomly as thanks for the interest-free loan we're giving them). They're sending another 30% today, and then want an "affidavit of completion" to send the rest.
It's been an interesting time here; it's very quiet: I haven't been yelled or fussed at in ages, and I can go to sleep without anyone needing to make sure the covers are perfectly aligned. It reminds me of when I was single, when my pockets did jingle. Ha ha! Honey's been gone since the 6th and will be returning in just over a week (if I pick her up at the airport. I kill myself, I really do).
I started writing about code here, but it got so long that I moved it to its own entry. Enjoy. Next thing on my plate at work is to write some design documents for the new features I'm working on: collaboration and (to a lesser extent, at least in milestone one) server.
I picked up some implements of mass bamboo destruction at the hardware store, using the $250 Home Depot card our insurance gave us: a shovel and a hatchet, as well as some topsoil and bark to cover bare spots and holes (especially those caused by the windstorm; I have three trees tied up now, all of which need more earth), a rake to remove moss, and some grass seed and weed killer. Now I just need a sunny day and a clean garage.
MDM gives away my address
News ·Wednesday March 28, 2007 @ 19:59 EDT (link)
WA plate UNS 457 (light brown Saturn) wins the twit of the week, for driving down the left lane of 51st to pass everyone and then butting in at the end. It's a heinous practice that I see all too frequently, and I wish people wouldn't let them in.
New drywall
Our Internet access was cut for a few days (since Sunday around 2100, back this afternoon), because MDM gave away our Internet (IP) address.
Most MDM customers have a dynamic address, which means it can change at any time (but usually stays the same for extended periods, sometimes for months), and this address is assigned automatically from a pool of addresses using a protocol called DHCP (Dynamic Host Configuration Protocol), which also provides other information to tell a computer how to connect to the Internet.
Having a dynamic address is unsuitable* for running a server (such as the web server that served up the web page you're reading this on) since it's important that the location of the server be known. Furthermore, many ISPs block people from running servers without a static IP, purely out of meanspiritedness (I used to run a server in Waterloo, Toronto, and Fonthill from a regular consumer account with, technically, a dynamic IP, although it didn't change much). Static IPs are usually only available in a "business class" plan; this is the case with MDM (but not with Speakeasy, which is the greatest ISP ever, although they just got bought by Best Buy; I hope for their customers' sakes that quality doesn't degrade).
However, someone at MDM made a mistake and put my static address into the DHCP pool, and naturally enough a computer on the dynamic network got it when it asked their DHCP server for an address to use. Two computers on the same network can't use the same address; it creates conflicts (who gets their packets?) They fixed that today, removing the address from the DHCP pool, and it's working again. They also were able to set up reverse DNS, which will help immensely with getting removed from various mail server blacklists set up by self-appointed net policeweenies (I've just requested removal from Spamhaus's PBL, which was a fairly painless process, especially compared to some).
* There are workarounds, e.g. sites that provide DNS for dynamic addresses, such as dyndns.com, or it's possible to run a script to update DNS whenever one's assigned address changes, but it's inconvenient (for one thing, DNS values are cached and changes take a while to propagate, even with low TTL values).
New roof
In other news, there's no longer a hole in our house: since I last wrote, the trusses have been replaced (some sistered in beside the old ones), the new roof has been installed (it's a nice medium gray), the framing, exterior siding, and drywall has been completed (including Honey's bathroom skylight, although they had to redo one side when we noticed it had been made too small); yesterday they did taping and mudding; I believe painting is next, and after that probably carpet, or perhaps fixtures. They also have some windows sitting around to replace some that were damaged: the master bedroom, the front door, garage (it's on the side that was hit), and downstairs bathroom. I'll post pictures.
REOIV of Fark, commenting on the article Most illegal immigrants crossing into Texas have to be arrested at least six times before federal authorities will prosecute them (a deplorable state of affairs) did me the kindness of coming up with a truly comprehensive plan for illegal immigration (my comments in italics):
- Make it a felony to be an illegal immigrant. (Instead of a civil misdemeanor as it is now.)
- Punishment options are deportation or jail time billed to your country in the form of tariffs etc. (We'd soon own Mexico and everything in it.)
- Arrest illegals any time they are discovered, be it school, hospitals, traffic violations etc. (No more crap like "sanctuary cities" or not being able to ask about legality during traffic stops.)
- Anyone helping hide illegals is charged with aiding a felon. (This means you, Roman Catholic church of Satan.)
- Any company found to have funny tax information (i.e. their employees are using stolen SSNs etc) or employing illegal immigrants repeatedly loses their right to do business inside the US until the issue is taken care of along with the people in charge of the company are not allowed to run any other companies or businesses. (Punish the enablers, too.)
- Any time your Social security number is found being used with another name or in another town every person listed with that number is sent a letter instead of nothing happening. (It's my identity you're stealing; you haveno privacy rights.
- All credit reports pull everything based on your social security number on its own even if the names don't match up.
- Make English the official language of the United States. Any and all government documents and paperwork are only in English. If you require a translation it is on your dime.
- You are only an American Citizen by birth if your parents are American Citizens or were legally in the United States when you were born. If you cannot prove they were here legally when you were born you are not an American citizen. (I can see relaxing this to require only one parent to be a citizen, and only requiring the other to be a legal resident, and not merely for my own sake; it's just reasonable.)
Do those nine things and the problem will clear up quite a bit.
I'd add:
- Also fine business employing illegals, say $10k the first time, $100k for the second and subsequent times; raise it for larger companies.
- Build the wall; regularly check for tunnels, let agents use them for explosives exercises.
- Mine the border, posting appropriate signage (see the Fark link for examples).
- Let anyone patrolling the border shoot invaders on sight.
In a similar vein, the Seattle Times has an article stating that low-paid illegal work force has little impact on prices; we frequently hear that getting rid of illegals will cause prices to skyrocket in pro-illegal propaganda.
I got my trophy copy of Office 2007, and my Ship It! plaque last month, with the Office 2007 sticker; very nice. At work we're still planning for M1 (Milestone 1); this release is to only have two milestones (plus M0/MQ/MI: Milestone 0, Quality?, or Innovation, an initial milestone where there's space to do work like my object model rework); Office 2007 had three, but it was a long cycle. We're getting down to scheduling developers; I'm divided between collaboration and server work, which is what I wanted. It should be an interesting journey.
A radio commercial recently caught my attention, because in it they speak about "Nassau scientists" and later about astronauts; I think they want people to think they're saying "NASA scientists", but they're somehow prohibited from actually claiming that (because we know advertisers are scum enough to claim anything if it'll make them richer).
Last, a couple words about country music. I'm fairly fond of old country music—songs about cowboys and lonesome roads and wide prairies and jukeboxen and so on, but I find new country is generally fairly tacky, focusing more on trailer parks and unwed mothers. I suppose it tries to follow reality, so perhaps I'm more upset at reality than music. I've only been inside one doublewide trailer, and it was pretty nice, on a good piece of land, and probably a tenth of the price it'd cost in a bigger city.
We now return to our original problem
News ·Tuesday March 13, 2007 @ 22:06 EDT (link)
A few weeks back I had some trouble RASing (remotely connecting) into work; when it started, I could connect to the VPN but not login to my machines. When I got to IT support, though (escalated to tier 2, eventually), the problem was worse: I couldn't even connect to the VPN: the client, IT Connection Manager (CM), just kept counting. No logs or diagnoses, or course; it's a Windows program, written by incompetents. Naturally I mess around with tcpdump on the Gentoo Linux NAT server (and windump on the Windows XP client), determine it's using PPTP, read the RFC, but don't see anything wrong to start with. It doesn't help that CM keeps on requiring reboots (not obviously, but it gets wedged so that it stops working even if directly connected to the Internet). Eventually I figure out that the NAT box is translating the incoming CLIENT_ID but not the outgoing one, so I switch off translation (it's really only required for multiple clients inside the firewall) and it now connects again.
My second problem was that OWA kept giving me 500 Internal Server Error whenever I tried to login, but eventually I figured out that I needed to use a different server. Entirely non-obvious from a one-line error; such cases should be caught.
So now we're back to the third problem, that I can't terminal serve to my machines. I suspect it's a certificates issue, but who knows; Windows is severely opaque. I'll tell y'all what the problem was if and when IT manages to fix it.
I was home today since both roads to Redmond (124th Street and Woodinville-Duvall) had flooded, which gave me the time to do the aforementioned diagnosis work.
After the "adds/cuts" meeting Friday/Monday, both Word 14 features that I'm interested in are still alive: server and collaboration. I'm still not sure which I'm most interested in, especially as politics enters into it too (e.g. perhaps one group is friendlier, or has less senior people in it which means a better chance to do interesting work). Ah, yes, politics: when features make the world go around (and the employees move up), it's a barroom brawl behind polite smiles.
Construction is scheduled to begin on the trusses and roof this week, starting Thursday. We've contacted our mortgage company and they've received our paperwork and should be sending back the check in a few days.
We'll be flying in to visit the family in August, thanks to my Uncle Murray (he's paying for us to fly up for his daughter's wedding), probably staying for a couple of weeks, perhaps going on a camping trip with the family for a few days.
That's so gay
News ·Wednesday February 28, 2007 @ 22:44 EST (link)
Silver Mazda MPV, WA 803 MDN, cuts me off driving down 163rd Avenue to 40th Street, honked my horn at him; almost got himself run right off the road, idiot.
A teenager gets harrassed, fires back with "That's so gay." Clearly, this is a matter that must be discussed in court. Rebeka, the teenager in question, is Mormon, and was asked questions such as, "Do you have 10 moms?"; she was sent to the principal and given a warning and a notation in her file (whatever that means). Her parents are suing to get it removed, which they shouldn't have to do; it never should have gone that far, and, what, it's fine to insult Mormons, but homosexuals are special (sort of like it's fine to insult Christians, but Muslims are special)? Equal punishment would have been nice; no punishment, better. Kids are kids, and they're pathological, but let's focus on educating them and save discipline for real personal harassment.
One of the Fark comments about it ended withAnyhoos... of all those groups, the mormons singled themselves out... I mean seriously, they literally pulled their religion out of a hat! I mean, between them and the Scientologists, it's like some kind of functionally retarded race to see who can come up with the most implausible wacky ideas.
Which I think sums things up nicely.
Talk about recidivism: the Mexican drug smuggler that was given immunity in return for helping jail two Border Patrol agents is back at it; then again, I suppose if I had immunity for a crime that profitable I would be too. Here's hoping the full story about the Border Patrol agents comes out (no, I don't know what it is); there are a lot of murky edges. But if it's as simple as them taking potshots at a suspicious illegal alien that was trying to evade them, I hope they're set free and each given medals.
On the house: we have the big check from the insurance, but it has to go through the mortgage company, but we have all the forms so we'll mail that tomorrow and they'll send back part of it with the rest being contingent on their inspection of the work when it nears completion. The contractor and his crew are set to start removing broken trusses and putting in new ones next Thursday and will work over the weekend.
On Word: I'm finally finished the 11 sp3 OACR fixes, which is celebration-level great; we're still planning 14 (major features to be server and collaboration, I'd like to own a major portion of the server work); I've synced and built from the 14 depot but we won't be able to check in until mid-March (because the test team has screwed up all the tests and now needs to fix them).
I sent my N-400 (U.S. citizenship application) last week; current processing times are 8-9 months, so I expect to hear back then for fingerprinting, a civics exam (What are the branches of government?; How many senators are there? Why does the U.S. flag have 13 stripes? and other questions that Americans usually can't answer), and then if all goes well, to be given an oath ceremony date. I told some guys at work, they say they'll crash the ceremony, that should be fun.
And on the Perl front: I released HTTP::Parser 0.03 and Net::SSH2 0.10, fixing all the bugs for those modules; for the legacy Net::SSH::Perl and Net::SFTP modules, most of the bugs were bogus, but there are a few I plan to fix eventually. Regarding the (Microsoft) Office OpenXML modules, I decided against using the Relax NG schemas, since there are no good parsers for them and they're not easily LR(1) (James Clark's reference parser, written in Java, uses the LL(k) lookahead features of JavaCC), so I went with XSD, which is straight XML and can easily be converted to a tree of nodes which will convert between XML and perl objects.
<Previous 10 entries>