June 9th, 2014


On Good Royalty

(Not a comment on any particular Royals: this just occurred to me in passing.)

This morning, I happened to be thinking about a few past Monarchs who I think of as "Good Royalty". And it occurred to me to think about what I mean by that phrase.

It isn't about anything as simple as whether they give the best Court: it's a fine thing to have Monarchs with a sense of theater, but I've known some who I deeply respected despite being very shy up in front. It isn't about whether they spend a lot of effort on Law and Curia, or stay away from it (I find that the ideal is somewhere in the middle, making tweaks when necessary but not gratuitously). It certainly doesn't mean doing the job perfectly -- I don't think I know any Royals who haven't made at least *some* mistakes.

I think it mostly comes down to attitude, and specifically *why* someone fights in Crown Tourney. The best Monarchs, by and large, are the ones who are looking to serve the Kingdom in a big way. It's a subtle thing, distinguishing self-aggrandizement from that sort of service, but the ones who are really looking to serve show it in many ways: they pay more attention to the little details, they *listen* more than they talk, they find out what everyone else's priorities are and try to take them into account.

In short, the best Royal Peers, the ones who I seriously consider top-notch role models, are every bit as service-focused as any Pelican. It makes me happy to consider that I do know quite a number of examples of such...

For those who want to walk on the wild side of programming...

I'm starting to dig more seriously into Scala's Shapeless library, and it occurs to me that some of my more intrepid readers might find this interesting.

One of the most powerful and scary websites you will ever find in programming is typelevel.org. This is a collection of the most fascinating and brain-breaking libraries you will find out there today. AFAIK, they all derive at some level from the old observation that Scala's type system is sufficiently complex, it is actually Turing-complex unto itself. And that means you can do remarkable, powerful, slightly insane things with it.

The best-known of the bunch is scalaz (pronounced "ScalaZed", I gather). While it is oversimplifying to say that scalaz is Haskell implemented in Scala, I believe that's a decent first-order approximation.

There is Shapeless, linked above, which implements "polytypic" generic programming. The part that everyone gets swept up by is the HList data structure -- basically a meta-type which is a "list" of arbitrary other types, combining the best aspects of lists and tuples in a type-safe way -- but I gather that that is basically an implementation detail. The real goal is being able to abstract over algorithms at a higher-kinded level: for example, abstracting out the concept of "tree traversal" without needing to depend upon any specific implementation of "tree". (I think: Shapeless was the topic of the latest episode of The Scalawags, which inspired today's surfing.)

Those are the best-known parts of typelevel, but I find that there is a lot more there now. There is ScalaCheck, which lets you describe the "properties" of your methods, and then generates randomized data to hammer at those methods and make sure your invariants are actually invariant. There's scodec, a functional library for working with binary protocols. There is Spire, a numeric library that is designed to let you write efficient numeric code that works for any implementation of "number".

Etc -- the typelevel page itself is a bit thin, but provides pointers for what to look for online. I expect to spend a number of months wrapping my head around the more-interesting bits and pieces here...

New frontiers in self-incrimination

Just read a recent brief in Scientific American, which serves as another reminder of how powerful Big Data is getting:

Apparently, a characteristic of digital cameras (not anything intentionally built-in, just how they are built) is that each one winds up with subtle "noise" in the images it generates. That is, if your camera and mine both shoot the exact same picture, they might *look* the same, but at the fine-grained digital level there are slight differences. Those differences amount to a "fingerprint" for that camera, and can be extracted as essentially a fairly accurate identifier.

The implication? In principle, at least, this means that your photographs are all digitally signed to your camera. On the positive side, this may prove lovely for law-enforcement: if you have used your camera for nefarious purposes (eg, child porn, terrorist activities, etc), and also use the same camera to take innocuous pictures to post on Facebook, those pictures can be correlated at least well enough to make you a suspect. (The brief says that the accuracy rate is about 90%, with 2% false-positive: not enough to hold up in court, but enough to define an initial suspect pool, especially if correlated with other data.)

The downside, of course, is that this is yet another difficulty in trying to maintain distinct and private identities online. You might have very well-separated Facebook identities for your work life and your private life, but if you are posting pictures on both using the same camera, that may someday wind up giving away your identity. Take due notice thereof...