November 8th, 2016 11:47 PM

I’m devastated and heartbroken. I’m worried about the people in my life who would not have health insurance if not for Obamacare. I’m worried for Muslims, immigrants, the disabled, women, and anyone else who will be on the receiving end of the harassment and intolerance that has been normalized by our President-elect. I’m worried that we will dangerously backtrack on progress made in fighting climate change, and waste time obstinately defending fossil fuels and opposing green alternatives. I’m worried about living in a world where truth and facts don’t seem to carry any weight, where science is viewed with skepticism, and experts are dismissed out of hand.

I’m worried, but resolved. Turns out, there’s a lot of work to do.

Election Day

November 8th, 2016 6:46 AM

President Obama:

We are not as divided as our politics suggests

I’m drawing inspiration from this. Regardless of what happens today, there will be a lot of work to do. I hope we can come together, with the understanding that we all want to make this country better. That will require listening to others, and trying to understand their concerns. And it will require being open to facts and evidence, even when they contradict beliefs. It’s election day. Let’s do this.


December 31st, 2015 7:56 PM

At the airport for the last flight of 2015.

2015 Travel Map

Happy New Year!

ISWC 2014

October 28th, 2014 6:44 PM

Last week I attended ISWC 2014 in Riva del Garda and had a very nice time.

Riva del Garda

I presented a paper at the Developers Workshop about designing the new PerlRDF and SPARQLKit systems using trait-based programming. Covering more PerlRDF work, Kjetil presented his work on RDF::LinkedData.

Answering SPARQL Queries over Databases under OWL 2 QL Entailment Regime by Kontchakov, et al. caught my attention during the main conference. The authors show a technique to map query answering under OWL QL entailment to pure SPARQL 1.1 queries under simple entailment, allowing OWL QL reasoning to be used with SPARQL 1.1 systems that do not otherwise support OWL. An important challenge highlighted by the work (and echoed by the audience after the presentation) was the limited performance of existing property path implementations. It seems as if there might be a subset of SPARQL 1.1 property paths (e.g. with limited nesting of path operators) that could be implemented more efficiently while providing enough expressivity to allow things like OWL reasoning.

There seemed to be a lot of interest in more flexible solutions to SPARQL query answering. Ruben’s Linked Data Fragments work addresses one part of this issue (though I remain somewhat skeptical about it as a general-purpose solution). That work was received very well at the conference, winning the Best Demo award. In conversations I had, there was also a lot of interest in the development of SPARQL systems that could handle capacity and scalability issues more gracefully (being smart enough to use appropriate HTTP error codes when a query cannot be answered due to system load or the complexity of the query, allowing a fallback to linked data fragments, for example).

A Year of Travel

December 19th, 2013 8:57 PM

I flew 52 flights in 2013, totaling 68,266 miles.

Air Tahiti Nui Wing

45 flights, and 60,817 of those miles were a part of our around-the-world trip.

2013 Travel Map

Upon returning to the US we moved to California, driving across the country in October.

You're not in Kansas anymore! foursquare badge

I expect there’ll be quite a bit less traveling in 2014, but hopefully just as much adventure.

IRI Encoding Troubles

July 10th, 2013 1:57 PM

Recently, I was tracking down a bug in RDF::Trine submitted by Jonas Smedegaard relating to the handling of unicode in IRIs. The bug involved the decoding of a punycode URI (which was an inadvertent “feature” that snuck in to RDF::Trine due to a feature in URI):


Strangely, this URI was being treated differently than other punycode URIs (e.g. http://xn--df-oiy.ws/), causing encoding errors in a completely different part of the code.

Upon investigating the problem, I determined that the punycode decoding code in the URI package treats punycode URIs differently depending on if they contain any unicode codepoints that cannot be represented in the Latin-1 encoding. For IRIs with all low-codepoint characters such as http://www.hestebedgård.dk/, the perl value returned by the URI->as_iri method is a Latin-1 encoded string. High-codepoint IRIs such as http://✪df.ws/ are returned as UTF-8 encoded values. This difference caused problems when the values were subsequently passed into Redland’s C code that expected UTF-8 values.

As Gisle Aas, the author of URI, noted in the bug report I submitted on this issue, the simple fix is to call utf8::upgrade on values returned by URI->as_iri. While I believe this should be done in the as_iri method (as it is documented to return “a Unicode string”), until that is the case I hope this post might save some time and trouble for the next person to come across this issue.


April 19th, 2013 7:07 AM

So, I’ve finished my Ph.D work at RPI, and am going to try to re-emerge on this weblog. Which is something I’ve attempted before (several times!) with mixed success, so we’ll see how it goes.

Bora Bora
Bora Bora

Kat and I (mostly Kat so far) are also posting updates to a travel weblog as we spend six months going around the world. I’ve been putting photos from our trip on Flickr, and highlights will be included in our weblog posts.

Cherry Blossoms
Cherry Blossoms

So far, we’ve been to Alaska, Hawaii, French Polynesia, New Zealand, Australia, and Japan. It’s been pretty fast-paced, but we’ve seen and done some great stuff. If you’re interested, you can follow along from the beginning.

Moving perlrdf to Moose

August 30th, 2012 10:20 PM

Earlier this week I spent a few days at the Preikestolen Mountain Lodge at the Moving to Moose hackathon. I got to meet some great people from the perl5 and perl6 communities, hack on the perlrdf toolkit, and see a couple of great talks.

Lysefjord Cairn || Panasonic DMC-GF1 | Lumix G 20/F1.7 | 1/50s | f13 | ISO100
Lysefjord Cairn

Along with other members of the perlrdf community, I worked on updating our RDF toolkit (RDF::Trine) to use the Moose object system. Chris Prather helped us settle on a design that will simplify code, allow for easy implementation of new parsers, serializers, and stores, and provide a way for implementors to greatly improve the quality of SPARQL query plans produced by RDF::Query.

Ruben Verborgh did some amazing optimization work (with help from Shawn Moore and dtrace) on the pure-perl Turtle and N-Triples parser that yielded two orders of magnitude improvement in parsing speed on some large inputs.

Toby Inkster started converted the classes for nodes and statements to use Moose. Konstantin Baierer worked on modeling the type system in Moose allowing coercion of common objects and unboxed types to their RDF object equivalents. Together they went on to improve the extensibility of the parsing and serializing code, which will make it easier to support custom file formats in the future.

Kjetil Kjernsmo refactored several modules meant to manage XML namespaces into the new URI::NamespaceMap package.

Overall I’m thrilled with the progress we made, and think the new design will allow us to keep improving our code and growing as a community. If you’re interested in more information, join us on irc or the mailing list.


June 4th, 2012 11:52 AM

I cannot believe it’s been over 10 years since Pekka Himanen wrote:

As it stands now, watching television characteristically elicits a feeling that what is being seen must be meant as some kind of absurd parody of what television could be at its worst.

The Hacker Ethic

Case in point.