Profile cover photo
Profile photo
Matt Austern
Matt's posts

Post has attachment
If you're interested in building large scale systems and you haven't read Site Reliability Engineering yet, the ebook edition is on sale today for 50% off.

Jim Blandy and Jason Orendorff, Programming Rust: Fast Safe Systems Deployment.

Wait, didn't I read this book before? Well, sort of. It's still an O'Reilly Early Release book, so it's still minimally edited and incomplete, just a little less incomplete than it was before. This time I read the Seventh Early Release, dated 2016-11-21. There have been a number of changes since the draft I read earlier this year, partly as the book is getting more complete and more polished, partly as the Rust language itself has evolved.

One of the new parts: chapter 13, on iterators, is now written. Rust iterators are basically in the Java/Python style of iterators (i.e. objects that produce values when you repeatedly call next), as opposed to STL-style iterators. In STL terms they're the moral equivalent of input iterators. And since the Rust library doesn't have STL-style iterators, it also doesn't have the STL notion of decoupling algorithms from data structures with iterators as mediation. The Rust standard library does have some of the basic algorithms I'm used to, but scattered in a number of places: some of them appear as methods in the iterator trait (which makes them more generic than that sounds: it means they're defined for arbitrary iterators, including user-defined ones), some, like ones related to sorting and binary search, appear as methods on ranges, which gives them a very different feel, and some, like intersection and difference, appear as methods of more specialized traits or types. I don't know where something like merge would go if the Rust standard library had it.

Pretty obviously the STL itself couldn't be written in Rust without some big changes, since the whole point of STL-style iterators (at least forward iterators and above) is that they're a generalization of pointers, that they're handles pointing into some range and that two iterators can point into the same range; one of the main points of Rust is to do away with that notion, and make it impossible to have two mutable pointers that point to the same thing. That's a pretty fundamental incompatibility. I still wonder, though, if something in the same spirit as the STL could be written, something that makes it possible to write algorithms abstracted from the data structures they operate on.

I continue to find Rust interesting, and I plan to follow its evolution. I'm glad someone is attempting to design a language that supports abstraction and and safety without loss of efficiency. I'm also thinking more about Rust's (deliberate) limitations, though. The chapter on containers makes the observation that none of the containers in Rust's standard library can be written in safe Rust; they all require the “unsafe” escape hatch, which this book doesn't even cover. And again, that makes sense. How can you write a doubly linked list unless you have nodes with references to each other? That, too, is something that Rust's strict lifetime system deliberately prevents. If I were trying to write something real in Rust, would I find that I only needed to use the escape hatch once in a blue moon, or would I constantly find myself struggling to see how to express myself in safe Rust, failing, and constantly reaching for the escape hatch? No way to tell without trying, but I'm worried if you need to use esoteric and discouraged language features for something as pedestrian as a doubly linked list.

Sir Arthur Conan Doyle, A Study in Scarlet, The Sign of Four, The Adventures of Sherlock Holmes, and The Memoirs of Sherlock Holmes.

The first two Sherlock Holmes novels (short novels), and the first two short story collections.

The Memoirs of Sherlock Holmes ends with “The Final Problem.” If you watch Sherlock you might think of Moriarty as Holmes's constant arch-nemesis, but in fact Moriarty was introduced and killed off in the course of a single short story.

Post has attachment
Eben Weiss (a.k.a. Bike Snob), Bike Snob: Systematically & Mercilessly Realigning the World of Cycling

I think it's basically the sort of thing you'd find on his blog. Not a how-to guide, not particularly snobbish, mostly pretty funny. It's partly about the author's own enthusiasm for cycling and his own very subjective take on various cycling subcultures, partly about encouraging the reader to share his enthusiasm or at least to check it out.

I did learn one fun fact: the era of the penny-farthing was surprisingly brief. The penny-farthing bike was invented in the late 1870s and became obsolete by the late 80s with the invention of basically the modern bike, the “safety bicycle” with equal sized wheels, a chain drive, and pneumatic tires.

Ryan North (writer) and Erica Henderson (artist), The Unbeatable Squirrel Girl vol. 4: I Kissed a Squirrel and I Liked It

In which Squirrel Girl (secret identity: Doreen Green, second year CS undergrad) attempts Internet dating. The best date was with Sentinel #X-42903-22, a giant purple robot programmed to hate and fear mutants, and that one was pretty bad. The others were worse, even before Mole Man showed up.

Post has attachment
Hope Jahren, Lab Girl

A memoir of the author's career as a geo-biologist. (I would have guessed a botanist from the book, but her PhD is in “Soil Science” and her web site says that her lab “focuses on living and fossil organisms, and how they are chemically linked to the global environment … both in the Human environment, and through Geologic Time”, and a lot of what she does sounds to me more like chemistry than anything else.) It's a very personal story, partly about the author's life as a scientist (and specifically as a female scientist), including the grubby parts, and partly about the science itself. I did learn something about plants from it.

I overlapped with Jahren at UC Berkeley. We were grad students in different departments, and I don't think we ever met, but we probably had friends in common.

Cynthia Dwork and Aaron Roth, The Algorithmic Foundations of Differential Privacy.

A monograph summarizing the state of the field of differential privacy, written by the originator of the field and one of her frequent collaborators. It's fairly technical, but it doesn't assume any prior expertise with differential privacy specifically.

The most important thing to realize about differential privacy is that it's a definition, not a mechanism or an algorithm or a technique. We assume we have some dataset and want to compute something about it — the number of users in some category, for example. The intuition is that if a computation respects privacy then the result shouldn't change enough to notice if we add or remove a single record, hence the “differential” part. Or more formally: we restrict ourselves to randomized computations, since exact answers always let us learn something about individuals, and we define a computation M to be ε-differentially private if, for any possible set of results S, P[M(x) ∈ S] ≤ exp(ε) P[M(x') ∈ S] whenever x and x' are datasets that differ by a single row. There's also a related notion of (ε,δ)-differential privacy; I don't yet have a good intuition for how to think about the differences betwen (ε,δ)-differential privacy and (ε,0)-differential privacy.

The reason this definition is important is that it captures at least some of our intuitions about what it means to realease a value computed from a dataset that doesn't compromise the privacy of anyone whose data is included, and it has the important property that postprocessing a differentially private computation or combining the result with auxiliary information doesn't change the fact that it's differentially private, and it turns out that at least some of the questions we would like to ask about datasets can be answered in ways that satisfy differential privacy without giving up too much accuracy, for example by adding an appropriate amount of Laplacian or Gaussian noise.

Differential privacy is an active research field, and it's connected to a lot of other research areas. There's a chapter on differentially private machine learning, but even in other chapters there are similarities between some of the techniques of differential privacy and machine learning. Perhaps this shouldn't be surprising; if you squint appropriately, both machine learning and privacy are about generalization. One of the sections I found most interesting, which unfortunately was brief, was the definition of ε-computationally differential privacy, which weakens differential privacy to allow (roughly) a computation where the presence or absence of a single record doesn't change the result in a way that can be exploited in polynomial time. I have the impression that there hasn't been much work on that concept yet.

Ryan North (writer) and Erica Henderson (artist), The Unbeatable Squirrel Girl vol. 3: Squirrel, You Really Got Me Now.

Collecting issue 1–5 of The Unbeatable Squirrel Girl (2015B), plus Howard the Duck #5 for the crossover story. In this run we learn, among other things, that Squirrel Girl (a.k.a. Doreen Green) knows how to program in C++ and Doctor Doom doesn't.

Ryan North (writer) and Erica Henderson (artist), The Unbeatable Squirrel Girl (vol. 1)

This book collects the eight issues of The Unbeatable Squirrel Girl (2015) plus a few of the older comics that she appears in, including the 1991 Marvel Super-Heroes vol. 2 #8 where she first appears, where she teams up with Iron Man and defeats Doctor Doom.

Winston S. Churchill, The World Crisis: 1915

The year 1915 was fated to be disastrous to the cause of the Allies and to the whole world. By the mistakes of this year the opportunity was lost of confining the conflagration within limits which though enormous were not uncontrolled. Thereafter the fire roared on till it burnt itself out. Thereafter events passed very largely outside the scope of conscious choice. Governments and individuals conformed to the rhythm of the tragedy, and swayed and staggered forward in helpless violence, slaughtering and squandering on ever-increasing scales, till injuries were wrought to the structure of human society which a century will not efface, and which may conceivably prove fatal to the present civilization.

Arguably overblown, and certainly self-serving. (This is the second volume of Churchill's War memoirs, and the one that focuses on Gallipoli.) Also largely correct.
Wait while more posts are being loaded