blarg?

August 13, 2018

Licensing Edgecases

Filed under: digital,documentation,interfaces,linux,mozilla,work — mhoye @ 4:37 pm

While I’m not a lawyer – and I’m definitely not your lawyer – licensing questions are on my plate these days. As I’ve been digging into one, I’ve come across what looks like a strange edge case in GPL licensing compliance that I’ve been trying to understand. Unfortunately it looks like it’s one of those Affero-style, unforeseen edge cases that (as far as I can find…) nobody’s tested legally yet.

I spent some time trying to understand how the definition of “linking” applies in projects where, say, different parts of the codebase use disparate, potentially conflicting open source licenses, but all the code is interpreted. I’m relatively new to this area, but generally speaking outside of copying and pasting, “linking” appears to be the critical threshold for whether or not the obligations imposed by the GPL kick in and I don’t understand what that means for, say, Javascript or Python.

I suppose I shouldn’t be surprised by this, but it’s strange to me how completely the GPL seems to be anchored in early Unix architectural conventions. Per the GPL FAQ, unless we’re talking about libraries “designed for the interpreter”, interpreted code is basically data. Using libraries counts as linking, but in the eyes of the GPL any amount of interpreted code is just a big, complicated config file that tells the interpreter how to run.

At a glance this seems reasonable but it seems like a pretty strange position for the FSF to take, particularly given how much code in the world is interpreted, at some level, by something. And honestly: what’s an interpreter?

The text of the license and the interpretation proposed in the FAQ both suggest that as long as all the information that a program relies on to run is contained in the input stream of an interpreter, the GPL – and if their argument sticks, other open source licenses – simply… doesn’t apply. And I can’t find any other major free or open-source licenses that address this question at all.

It just seems like such a weird place for an oversight. And given the often-adversarial nature of these discussions, given the stakes, there’s no way I’m the only person who’s ever noticed this. You have to suspect that somewhere in the world some jackass with a very expensive briefcase has an untested legal brief warmed up and ready to go arguing that a CPU’s microcode is an “interpreter” and therefore the GPL is functionally meaningless.

Whatever your preferred license of choice, that really doesn’t seem like a place we want to end up; while this interpretation may be technically correct it’s also very-obviously a bad-faith interpretation of both the intent of the GPL and that of the authors in choosing it.

The position I’ve taken at work is that “are we technically allowed to do this” is a much, much less important question than “are we acting, and seen to be acting, as good citizens of the larger Open Source community”. So while the strict legalities might be blurry, seeing the right thing to do is simple: we treat the integration of interpreted code and codebases the same way we’d treat C/C++ linking, respecting the author’s intent and the spirit of the license.

Still, it seems like something the next generation of free and open-source software licenses should explicitly address.

June 8, 2017

A Security Question

To my shame, I don’t have a certificate for my blog yet, but as I was flipping through some referer logs I realized that I don’t understand something about HTTPS.

I was looking into the fact that I sometimes – about 1% of the time – I see non-S HTTP referers from Twitter’s t.co URL shortener, which I assume means that somebody’s getting man-in-the-middled somehow, and there’s not much I can do about it. But then I realized the implications of my not having a cert.

My understanding of how this works, per RFC7231 is that:

A user agent MUST NOT send a Referer header field in an unsecured HTTP request if the referring page was received with a secure protocol.

Per the W3C as well:

Requests from TLS-protected clients to non- potentially trustworthy URLs, on the other hand, will contain no referrer information. A Referer HTTP header will not be sent.

So, if that’s true and I have no certificate on my site, then in theory I should never see any HTTPS entries in my referer logs? Right?

Except: I do. All the time, from every browser vendor, feed reader or type of device, and if my logs are full of this then I bet yours are too.

What am I not understanding here? It’s not possible, there is just no way for me to believe that it’s two thousand and seventeen and I’m the only person who’s ever noticed this. I have to be missing something.

What is it?

FAST UPDATE: My colleagues refer me to this piece of the puzzle I hadn’t been aware of, and Francois Marier’s longer post on the subject. Thanks, everyone! That explains it.

SECOND UPDATE: Well, it turns out it doesn’t completely explain it. Digging into the data and filtering out anything referred via Twitter, Google or Facebook, I’m left with two broad buckets. The first is is almost entirely made of feed readers; it turns out that most and maybe almost all feed aggregators do the wrong thing here. I’m going to have to look into that, because it’s possible I can solve this problem at the root.

The second is one really persistent person using Firefox 15. Who are you, guy? Why don’t you upgrade? Can I help? Email me if I can help.

November 14, 2016

Switching Sides

Filed under: a/b,digital,documentation,interfaces,linux,mozilla,toys,work — mhoye @ 4:48 pm

Toronto Skyline

I’ve been holding off on a laptop refresh at work for a while, but it’s time. The recent Apple events have been less than compelling; I’ve been saying for a long time that Mozilla needs more people in-house living day to day on Windows machines and talk is cheaper than ever these days, so.

I’m taking notes here of my general impressions as I migrate from a Macbook Pro to a Surface Book and Windows 10.

I’ll add to them as things progress, but for now let’s get started.

  • I don’t think highly of unboxing fetishism, but it’s hard to argue against the basic idea that your very tactile first contact with a product should be a good one. The Surface Book unboxing is a bit rough, but not hugely so; there’s the rare odd mis-step like boxes that are harder than necessary to open or tape that tears the paper off the box.
  • I’ve got the Performance Base on the Surface Pro here; the very slight elevation of the keyboard makes a surprisingly  pleasant difference, and the first-run experience is pretty good too. You can tell Microsoft really, really wants you to accept the defaults, particularly around data being sent back to Microsoft, but you can reasonably navigate that to your comfort level it looks like. Hard to say, obvs.
  • I’m trying to figure out what is a fair assessment of this platform vs. what is me fighting muscle memory. Maybe there’s not a useful distinction to be made there but considering my notable idiosyncrasies I figure I should make the effort. If I’m going to pretend this is going to be useful for anyone but some alternate-universe me, I might as well. This came up in the context of multiple desktops – I use the hell out of OSX multiple desktops, and getting Windows set up to do something similar requires a bit of config twiddling and some relearning.The thing I can’t figure out here is the organizational metaphor. Apple has managed to make four-fingered swiping around multiple desktop feel like I’m pushing stuff around a physical space, but Windows feels like I’m using a set of memorized gestures to navigate a phone tree. This is a preliminary impression, but it feels like I’m going to need to just memorize this stuff.
  • In a multiple desktops setting, the taskbar will only show you the things running in your current desktop, not all of them? So crazymaking. [UPDATE: Josh Turnath in the comments turns out that you can set this right in the “multitasking” settings menu, where you can also turn off the “When I move one window, move other windows” settings which are also crazymaking. Thanks, Josh!]
  • If you’re coming off a Mac trackpad and used to tap-to-click, be sure to set the delay setting to “Short delay” or it feels weird and laggy. Long delay is tap, beat, beat, response; if you move the cursor the action vanishes. That, combined with the fact that it’s not super-great at rejecting unintentional input makes it mostly tolerable but occasionally infuriating, particularly if you’ve got significant muscle memory built up around “put cursor here then move it aside so you can see where you’re typing”, which makes it start selecting text seemingly at random. It’s way  better than any other trackpad I’ve ever used on a PC for sure, so I’ll take it, but still occasionally: aaaaaaargh. You’re probably better just turning tap-to-click off. UPDATE: I had to turn off tap to click, because omgwtf.
  • In this year of our lord two thousand and sixteen you still need to merge in quasi-magic registry keys to remap capslock . If you want mousewheel scrolling to work in the same directions as two-finger scrolling, you need to fire up RegEdit.exe and know the magic incantations. What the hell.
  • It’s surprising how seemingly shallow the Win10 redesign is. The moment you go into the “advanced options” you’re looking at the the same dialogs you’ve known and loved since WinXP. It’s weird how unfinished it feels in places. Taskbar icons fire off on a single click, but you need to flip a checkbox five layers deep in one of those antiquated menus to make desktop icons do the same.  The smorgasbords you get for right-clicking things look like a room full of mismanaged PMs screaming at each other.
  • You also have to do a bunch of antiquated checkbox clickery to install the Unix subsystem too, but complaining about a dated UI when you’re standing up an ersatz Linux box seems like the chocolate-and-peanut-butter of neckbearded hypocrisy, so let’s just agree to not go there. You can get a Linux subsystem on Windows now, which basically means you can have Linux and modern hardware with working power management and graphics drivers at the same time, which is pretty nice.
  • Pairing Apple’s multitouch trackpads with Windows only gets you one- and two-fingered gestures. C’mon. Really?
  • This is a common consensus here, after asking around a bit. Perplexity that Microsoft would put an enormous (and ultimately successful) effort into re-pinning and hardening the foundations underneath the house, recladding it and putting in an amazing kitchen, but on the 2nd floor the hinges are on the wrong side of the doors and there’s a stair missing on the way to the basement.
  • I’m not surprised the Windows Store isn’t the go-to installer mechanism yet – that’s true on Macs, too – but my goodness pickings there are pretty slim. Somehow I have to go visit all these dodgy-looking websites to get the basic-utilities stuff sorted out, and it feels like an outreach failure of some kind. This is vaguely related to my next point, that:
  • The selection of what does vs. doesn’t come preinstalled is… strange. I feel like Microsoft has space to do something really interesting here that they’re not capitalizing on for some reason. Antitrust fears? I dunno. I just feel like they could have shipped this with, say, Notepad++ and a few other common utilities preinstalled and made a lot of friends.
  • The breakaway power cables are fantastic. A power brick with fast-charge USB built in and freeing up slots on the machine proper is extremely civilized. You can be sitting with your legs crossed and have the power plugged in, which I sincerely miss being able to do with underpowered 1st-gen Macbook Air chargers back in the mists of prehistory.
  • The Surface Dock is basically perfect. Power, Ethernet, two DisplayPorts and four USB ports over that same breakaway cable is excellent. If you’ve ever used a vintage IBM Thinkpad docking station, this is something you’ve been wishing Apple would make for the better part of a decade.
  • I assumed “Skype Preview” was a preview version of Skype. I wanted (and pay for) the whole thing, so I immediately uninstalled that and installed normal Skype, which it turns out is really outdated-looking and ugly on Win10. I was bewildered about why a premiere Microsoft-owned thing like Skype would look ugly on their flagship OS, so I did some research and discovered that “Skype Preview” isn’t a preview version of Skype. It’s the prettified modern Win10 version. So I reinstalled it and uninstalled Skype. I’m sure this is somehow my fault for not understanding this but in my defense: words mean things.
  • This hardware is really nice. The hinge works great, eject to tablet is crisp and works well, reversing it to the easel setup is both surprisingly good and for-real useful.

Anyway, this is where I am so far. More notes as I think of them.

Update:

  • Definitely turn off the two-finger-tap-to-right-click option – if you don’t and you’ve got fat hands like mine, sometimes it will get into a state where everything is a right-click, which is inexplicable and upsetting.
  • I saw my first tripped-over USB-C cable send a Macbook crashing to the floor today. I suspect it will not be the last.

Further updates:

  • It turns out there’s a (baffling!) option to turn a click on the lower right corner of the trackpad into a right-click, which is just super-weird and infuriating if you don’t know it’s there and (apparently?) turned on by default.
  • The trick to reversing mousewheel scrolling only is here, and involves RegEdit, finding all the instances of FlipFlopWheel in the registry under HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\HID\ and changing them from 0 to 1. Very user friendly.
  • A lot of network-related stuff in the Unix subsystem doesn’t work right or at all yet, but my understanding is that this is fixed in the Insider builds.
  • A nice as having the Unix subsystem is, the terminal thing you use to get to it is infuriating retro-bizarro DOS-window garbage.  [UPDATE: bwinton has introduced me to Cmder, a console emulator for Windows that is vastly better than the Ubuntu default in every observable respect. Use that instead.]
  • Unexpected but pleasant: CPU in the lid instead of the base means your lap doesn’t overheat.

Further-er updates:

  • A nice touch: searching for common OSX utility names with the taskbar brings you directly to their Windows counterparts, like “grab” brings you to the snippets tool.
  • It’s surprising how often the “how do I do [something]?” links in the Settings dialog box take you to the same undifferentiated and completely un-navigable Windows 10 support page. Really rookie stuff, like they fired the intern responsible three weeks into their placement and just forgot about it.
  • It’s really frustrating how both of those experiences coexist basically everywhere in this OS. Nice, elegantly-deployed and useful touches in some places, arbitrarily broken or ill-considered jank in others.

Further Updates 4: The Furthening;

  • There’s now a Surface Book User Guide, and it’s got some good information in it. For example, fn-del and fn-backspace adjust screen brightness, something I’ve missed from my Macbook. Also, fn-space for screenshots is nice enough, though the provided snipping tool is better (better than OSX Grab, too.)
  • You can use AutoHotKey scripts to remap what pen-clicking does, turning it into a passable presenter’s tool. Which is kind of neat.

Finally, one of the most upsetting things about Windows 10 is how power management just doesn’t reliably work at all. There’s no safe-sleep; running out of battery means state loss, potentially data loss, and a cold reboot. I’ve had to set it to hibernate on a lid closed because sometimes suspend just… doesn’t. Before I did that, I’d put it into my bag with the lid closed and it would mysteriously wake in my backpack, once hot enough that it was uncomfortable to touch. Despite the fact that my unmodified default settings say “critical power level is 6% and the action to take here is hibernate”, I routinely see 4%-power-remaining warnings and then hard shutdowns, and if I’m not careful hard reboots afterwards. Honestly, what the hell.

Last update: Well, this is unfortunate:

IMG_20170207_172319

Postmortem: Still like Windows 10, but after putting up with that screen yellowing and an increasing number of baffling hangs (and the discovery that the backup software had been silently failing for weeks), this machine got RMA’ed. I’ll have another one soon; hopefully it was an isolated hardware problem, but I guess we’ll see.

August 29, 2016

Free As In Health Care

This is to some extent a thought experiment.

The video below shows what’s called a “frontal offset crash test” – your garden variety driver-side head-on collision – between a 2009 Chevrolet Malibu and a 1959 Chevrolet Bel Air. I’m about to use this video to make a protracted argument about software licenses, standards organizations, and the definition of freedom. It may not interest you all that much but if it’s ever crossed your mind that older cars are safer because they’re heavier or “solid” or had “real” bumpers or something you should watch this video. In particular, pay attention to what they consider a “fortunate outcome” for everyone involved. Lucky, for the driver in the Malibu, is avoiding a broken ankle. A Bel Air driver would be lucky if all the parts of him make it into the same casket.

 [ https://www.youtube.com/watch?v=joMK1WZjP7g ]

Like most thought experiments this started with a question: what is freedom?

The author of the eighteenth-century tract “Cato’s Letters” expressed the point succinctly: “Liberty is to live upon one’s own Term; Slavery is to live at the mere Mercy of another.” The refrain was taken up with particular emphasis later in the eighteenth century, when it was echoed by the leaders and champions of the American Revolution.’ The antonym of liberty has ceased to be subjugation or domination – has ceased to be defenseless susceptibility to interference by another – and has come to be actual interference, instead. There is no loss of liberty without actual interference, according to most contemporary thought: no loss of liberty in just being susceptible to interference. And there is no actual interference – no interference, even, by a non-subjugating rule of law – without some loss of liberty; “All restraint, qua restraint, is evil,” as John Stuart Mill expressed the emerging orthodoxy.

– Philip Pettit, Freedom As Anti-Power, 1996

Most of our debates define freedom in terms of “freedom to” now, and the arguments are about the limitations placed on those freedoms. If you’re really lucky, like Malibu-driver lucky, the discussions you’re involved in are nuanced enough to involve “freedom from”, but even that’s pretty rare.

I’d like you to consider the possibility that that’s not enough.

What if we agreed to expand what freedom could mean, and what it could be. Not just “freedom to” but a positive defense of opportunities to; not just “freedom from”, but freedom from the possibility of.

Indulge me for a bit but keep that in mind while you exercise one of those freedoms, get in a car and go for a drive. Freedom of movement, right? Get in and go.

Before you can do that a few things have to happen first. For example: your car needs to have been manufactured.

Put aside everything that needs to have happened for the plant making your car to operate safely and correctly. That’s a lot, I know, but consider only the end product.

Here is a chart of the set of legislated standards that vehicle must meet in order to be considered roadworthy in Canada – the full text of CRC c.1038, the Motor Vehicle Safety Regulations section of the Consolidated Regulations of Canada runs a full megabyte, and contains passages such as:

H-point means the mechanically hinged hip point of a manikin that simulates the actual pivot centre of the human torso and thigh, described in SAE Standard J826, Devices for Use in Defining and Measuring Vehicle Seating Accommodation (July 1995); (point H)

H-V axis means the characteristic axis of the light pattern of a lamp, passing through the centre of the light source, used as the direction of reference (H = 0°, V = 0°) for photometric measurements and for the design of the installation of a lamp on a vehicle; (axe H-V)

… and

Windshield Wiping and Washing System

104 (1) In this section,

areas A, B and C means the areas referred to in Column I of Tables I, II, III and IV to this section when established as shown in Figures 1 and 2 of SAE Recommended Practice J903a Passenger Car Windshield Wiper Systems, (May 1966), using the angles specified in Columns III to VI of the above Tables; (zones A, B et C)

daylight opening means the maximum unobstructed opening through the glazing surface as defined in paragraph 2.3.12 of Section E, Ground Vehicle Practice, SAE Aerospace-Automotive Drawing Standards, (September 1963); (ouverture de jour)

glazing surface reference line means the intersection of the glazing surface and a horizontal plane 635 mm above the seating reference point, as shown in Figure 1 of SAE Recommended Practice J903a (May 1966); (ligne de référence de la surface vitrée)

… and that mind-numbing tedium you’re experiencing right now is just barely a taste; a different set of regulations exists for crash safety testing, another for emissions testing, the list goes very far on. This 23 page PDF of Canada’s Motor Vehicle Tire Safety Regulations – that’s just the tires, not the brakes or axles or rims, just the rubber that meets the road – should give you a sense of it.

That’s the car. Next you need roads.

The Ontario Provincial Standards for Roads & Public Works consists of eight volumes. The first of them, General And Construction Specifications, is 1358 pages long. Collectively they detail how roads you’ll be driving on must be built, illuminated, made safe and maintained.

You can read them over if you like, but you can see where I’m going with this. Cars and roads built to these standards don’t so much enable freedom of motion and freedom from harm as they delimit in excruciating detail the space – on what road, at what speeds, under what circumstances – where people must be free from the possibility of specific kinds of harm, where their motion must be free from the possibility of specific kinds of restriction or risk.

But suppose we move away from the opposition to bare interference in terms of which contemporary thinkers tend to understand freedom. Suppose we take up the older opposition to servitude, subjugation, or domination as the key to construing liberty. Suppose we understand liberty not as noninterference but as antipower. What happens then?

– Philip Pettit, ibid.

Let me give away the punchline here: if your definition of freedom includes not just freedom from harassment and subjugation but from the possibility of harassment and subjugation, then software licenses and cryptography have as much to do with real digital rights and freedoms as your driver’s license has to do with your freedom of mobility. Which is to say, almost nothing.

We should be well past talking about the minutia of licenses and the comparative strengths of cryptographic algorithms at this point. The fact that we’re not is a clear sign that privacy, safety and security on the internet are not “real rights” in any meaningful sense. Not only because the state does not meaningfully defend them but because it does not mandate in protracted detail how they should be secured, fund institutions to secure that mandate and give the force of law to the consequences of failure.

The conversation we should be having at this point is not about is not what a license permits, it’s about the set of standards and practices that constitutes a minimum bar to clear in not being professionally negligent.

The challenge here is that dollar sign. Right now the tech sector is roughly where the automotive sector was in the late fifties. You almost certainly know or know of somebody on Twitter having a very 1959 Bel-Air Frontal-Offset Collision experience right now, and the time for us to stop blaming the driver for that is long past. But if there’s a single grain of good news here’s it’s how far off your diminishing returns are. We don’t need detailed standards about the glazing surface reference line of automotive glass, we need standard seatbelts and gas tanks that reliably don’t explode.

But that dollars sign, and those standards, are why I think free software is facing an existential crisis right now.

[ https://www.youtube.com/watch?v=obSOaKTMLIc ]

I think it’s fair to say that the only way that standards have teeth is if there’s liability associated with them. We know from the automotive industry that the invisible hand of the free market is no substitute for liability in driving improvement; when the costs of failure are externalized, diffuse or hidden, those costs can easily be ignored.

According to the FSF, the “Four Freedoms” that define what constitutes Free Software are:

  • The freedom to run the program as you wish, for any purpose (freedom 0).
  • The freedom to study how the program works, and change it so it does your computing as you wish (freedom 1). Access to the source code is a precondition for this.
  • The freedom to redistribute copies so you can help your neighbor (freedom 2).
  • The freedom to distribute copies of your modified versions to others (freedom 3). By doing this you can give the whole community a chance to benefit from your changes. Access to the source code is a precondition for this.

The cannier among you will already have noted – and scarred Linux veterans can definitely attest to the fact – that there’s no mention at all of freedom-from in there. The FSF’s unstated position has always been that anyone who wants to be free from indignities like an opaque contraption of a user experience, buggy drivers and nonexistent vendor support in their software, not to mention the casual sexism and racism of the free software movement itself, well. Those people can go pound sand all the way to the Apple store. (Which is what everyone did, but let’s put that aside for the moment.)

Let’s go back to that car analogy for a moment:

Toyota Motor Corp has recalled 3.37 million cars worldwide over possible defects involving air bags and emissions control units.

The automaker on Wednesday said it was recalling 2.87 million cars over a possible fault in emissions control units. That followed an announcement late on Tuesday that 1.43 million cars needed repairs over a separate issue involving air bag inflators.

About 930,000 cars are affected by both potential defects, Toyota said. Because of that overlap, it said the total number of vehicles recalled was 3.37 million.

No injuries have been linked to either issue.

Potential defects.

I think the critical insight here is that Stallman’s vision of software freedom dates to a time when software was contained. You could walk away from that PDP-11 and the choices you made there didn’t follow you home in your pocket or give a world full of bored assholes an attack surface for your entire life. Software wasn’t everywhere, not just pushing text around a screen but everywhere and in everything from mediating our social lives and credit ratings to pumping our drinking water, insulin and anti-lock brakes.

Another way to say that is: software existed in a well-understood context. And it was that context that made it, for the most part, free from the possibility of causing real human damage, and consequently liability for that damage was a non-question. But that context matters: Toyota doesn’t issue that recall because the brakes failed on the chopped-up fifteen year old Corolla you’ve welded to a bathtub and used as rally car, it’s for the safety of day to day drivers doing day to day driving.

I should quit dancing around the point here and just lay it out:  If your definition of freedom includes freedom from the possibility of interference, it follows that “free as in beer” and “free as in freedom” can only coexist in the absence of liability.

This is only going to get more important as the Internet ends up in more and more Things, and your right – and totally reasonable expectation – to live a life free from arbitrary harassment enabled by the software around you becomes a life-or-death issue.

If we believe in an expansive definition of human freedom and agency in a world full of software making decisions then I think we have three problems, two practical and one fundamental.

The practical ones are straightforward. The first is that the underpinnings of the free-as-in-beer economic model that lets Google, Twitter and Facebook exist are fighting a two-ocean war against failing ad services and liability avoidance. The notion that a click-through non-contract can absolve any organization of their responsibility is not long for this world, and the nasty habit advertising and social networks have of periodically turning into semi-autonomous, weaponized misery-delivery platforms makes it harder to justify letting their outputs talk to your inputs every day.

The second one is the industry prisoner’s dilemma around, if not liability, then at a bare minimum responsibility. There’s a battery of high-caliber first-mover-disadvantages pointed at the first open source developer willing to say “if these tools are used under the following conditions, by users with the following user stories, then we can and should be held responsible for their failures”.

Neither of these problems are insoluble – alternative financial models exist, coalitions can be built, and so forth. It’ll be an upheaval, but not a catastrophic or even sudden one. But anyone whose business model relies on ads should be thinking about transitions five to ten years out, and your cannier nation-states are likely to start sneaking phrases like “auditable and replaceable firmware” in their trade agreements in the next three to five.

The fundamental problem is harder: we need a definition of freedom that encompasses the notion of software freedom and human agency, in which the software itself is just an implementation detail.

We don’t have a definition of freedom that’s both expansive in its understanding of what freedom and agency are, and that speaks to a world where the line between data security and bodily autonomy is very blurry, where people can delegate their agency to and gain agency from a construct that’s both an idea and a machine. A freedom for which a positive defense of the scope of the possible isn’t some weird semitangible idea, but a moral imperative and a hill worth dying on.

I don’t know what that looks like yet; I can see the rough outlines of the place it should be but isn’t. I can see the seeds of it in the quantified-self stuff, copyleft pushback and the idea that crypto is a munition. It’s crystal clear that a programmer clinging to the idea that algorithms are apolitical or that software is divorced from human bias or personal responsibility is a physicist holding to the aetheric model or phlogiston when other people are fuelling their rockets. The line between software freedom and personal freedom is meaningless now, and the way we’ve defined “software freedom” just about guarantees its irrelevancy. It’s just freedom now, and at the very least if our definition of what freedom is – and our debate about what freedom could be –  isn’t as vast and wide-ranging and weird and wonderful and diverse and inclusive and scary as it could possibly be, then the freedom we end up with won’t be either.

And I feel like a world full of the possible would be a hell of a thing to lose.

November 9, 2015

The Devil And Strong Crypto

Filed under: digital,documentation,doom,future,interfaces,linux,vendetta — mhoye @ 1:23 pm

Period scenery-chewing aside, this is largely how I feel about strong, backdoorless cryptography.

When the last wires were tapped, your last passwords broken and the State finally turns on you, how would you hide, with all your secrets exposed? The internet is a forest of crypto from coast to coast – the user’s crypto, not the State’s – and if you cut that down, and you’re just the man to do it, do you really think you could stand upright in the winds that would blow then? Yes, I’d give the internet’s worst users the benefit of strong crypto, for my own safety’s sake.

September 20, 2015

The Bourne Aesthetic

“The difference between something that can go wrong and something that can’t possibly go wrong is that when something that can’t possibly go wrong goes wrong it usually turns out to be impossible to get at or repair.”

–Douglas Adams

I’ve been trying to get this from draft to published for almost six months now. I might edit it later but for now, what the hell. It’s about James Bond, Jason Bourne, old laptops, economies of scale, design innovation, pragmatism at the margins and an endless supply of breadsticks.

You’re in, right?

Bond was a character that people in his era could identify with:

Think about how that works in the post war era. The office dwelling accountant/lawyer/ad man/salesman has an expense account. This covers some lunches at counters with clients, or maybe a few nice dinners. He flirts with the secretaries and receptionists and sometimes sleeps with them. He travels on business, perhaps from his suburb into Chicago, or from Chicago to Cleveland, or San Francisco to LA. His office issues him a dictaphone (he can’t type) or perhaps a rolling display case for his wares. He has a work car, maybe an Oldsmobile 88 if he’s lucky, or a Ford Falcon if he’s not. He’s working his way up to the top, but isn’t quite ready for a management slot. He wears a suit, tie and hat every day to the office. If he’s doing well he buys this downtown at a specialty men’s store. If he’s merely average, he picks this up at Macy’s, or Sears if he’s really just a regular joe. If he gets sick his employer has a nice PPO insurance plan for him.

Now look at Bond. He has an expense account, which covers extravagant dinners and breakfasts at the finest 4 star hotels and restaurants. He travels on business, to exotic places like Istanbul, Tokyo and Paris. He takes advantage of the sexual revolution (while continuing to serve his imperialist/nationalist masters) by sleeping with random women in foreign locations. He gets issued cool stuff by the office– instead of a big dictaphone that he keeps on his desk, Bond has a tiny dictaphone that he carries around with him in his pocket! He has a work car — but it’s an Aston Martin with machine guns! He’s a star, with a license to kill, but not management. Management would be boring anyways, they stay in London while Bond gets to go abroad and sleep with beautiful women. Bond always wears a suit, but they’re custom tailored of the finest materials. If he gets hurt, he has some Royal Navy doctors to fix him right up.

In today’s world, that organization man who looked up to James Bond as a kind of avatar of his hopes and dreams, no longer exists.

Who is our generations James Bond? Jason Bourne. He can’t trust his employer, who demanded ultimate loyalty and gave nothing in return. In fact, his employer is outsourcing his work to a bunch of foreign contractors who presumably work for less and ask fewer questions. He’s given up his defined benefit pension (Bourne had a military one) for an individual retirement account (safe deposit box with gold/leeching off the gf in a country with a depressed currency). In fact his employer is going to use him up until he’s useless. He can’t trust anyone, other than a few friends he’s made on the way while backpacking around. Medical care? Well that’s DIY with stolen stuff, or he gets his friends to hook him up. What kinds of cars does he have? Well no more company car for sure, he’s on his own on that, probably some kind of import job. What about work tools? Bourne is on is own there too. Sure, work initially issued him a weapon, but after that he’s got to scrounge up whatever discount stuff he can find, even when it’s an antique. He has to do more with less. And finally, Bourne survives as a result of his high priced, specialized education. He can do things few people can do – fight multiple opponents, hotwire a car, tell which guy in a restaurant can handle himself, hotwire cars, speak multiple languages and duck a surveillance tail. Oh, and like the modern, (sub)urban professional, Bourne had to mortgage his entire future to get that education. They took everything he had, and promised that if he gave himself up to the System, in return the System would take care of him.

It turned out to be a lie.

We’re all Jason Bourne now.

posted by wuwei at 1:27 AM on July 7, 2010

I think about design a lot these days, and I realize that’s about as fatuous an opener as you’re likely to read this week so I’m going to ask you to bear with me.

If you’re already rolling out your “resigned disappointment” face: believe me, I totally understand. I suspect we’ve both dealt with That Guy Who Calls Himself A Designer at some point, that particular strain of self-aggrandizing flake who’s parlayed a youth full of disdain for people who just don’t understand them into a career full of evidence they don’t understand anyone else. My current job’s many bright spots are definitely brighter for his absence, and I wish the same for you. But if it helps you get past this oddly-shaped lump of a lede, feel free to imagine me setting a pair of Raybans down next to an ornamental scarf of some kind, sipping a coffee with organic soy ingredients and a meaningless but vaguely European name, writing “Helvetica?” in a Moleskine notebook and staring pensively into the middle distance. Does my carefully manicured stubble convey the precise measure of my insouciance? Perhaps it does; perhaps I’m gazing at some everyday object nearby, pausing to sigh before employing a small gesture to convey that no, no, it’s really nothing. Insouciance is a french word, by the way. Like café. You should look it up. I know you’ve never been to Europe, I can tell.

You see? You can really let your imagination run wild here. Take the time you need to work through it. Once you’ve shaken that image off – one of my colleagues delightfully calls those guys “dribble designers” – let’s get rolling.

I think about design a lot these days, and I realize that’s about as fatuous an opener as you’re likely to read this week so I’m going to ask you to bear with me.

Very slightly more specifically I’ve been thinking about Apple’s latest Macbook, some recent retrospeculation from Lenovo, “timeless” design, spy movies and the fact that the Olive Garden at one point had a culinary institute. I promise this all makes sense in my head. If you get all the way through this and it makes sense to you too then something on the inside of your head resembles something on the inside of mine, and you’ll have to come to your own terms with that. Namasté, though. For real.

There’s an idea called “gray man” in the security business that I find interesting. They teach people to dress unobtrusively. Chinos instead of combat pants, and if you really need the extra pockets, a better design conceals them. They assume, actually, that the bad guys will shoot all the guys wearing combat pants first, just to be sure. I don’t have that as a concern, but there’s something appealingly “low-drag” about gray man theory: reduced friction with one’s environment.

– William Gibson, being interviewed at Rawr Denim

At first glance the idea that an Olive Garden Culinary Institute should exist at all squats on the line between bewildering and ridiculous. They use maybe six ingredients, and those ingredients need to be sourced at industrial scale and reliably assembled by a 22-year-old with most of a high-school education and all of a vicious hangover. How much of a culinary institute can that possibly take? In fact, at some remove the Olive Garden looks less like a restaurant chain than a supply chain that produces endless breadsticks; there doesn’t seem to be a ton of innovation here. Sure, supply chains are hard. But pouring prefab pomodoro over premade pasta, probably not.

Even so, for a few years the Tuscan Culinary Institute was a real thing, one of the many farming estates in Tuscany that have been resurrected to the service of regional gastrotourism booked by the company for a few weeks a year. Successful managers of the Garden’s ersatz-italian assembly lines could enjoy Tuscany on a corporate reward junket, and at a first glance amused disdain for the whole idea would seem to be on point.

There’s another way to look at the Tuscan Culinary Institute, though, that makes it seem valuable and maybe even inspired.

One trite but underappreciated part of the modern mid-tier supply-chain-and-franchise engine is how widely accessible serviceable and even good (if not great or world-beating) stuff has become. Coffee snobs will sneer at Starbucks, but the truck-stop tar you could get before their ascendance was dramatically worse. If you’ve already tried both restaurants in a town too remote to to be worth their while, a decent bowl of pasta, a bottle of inoffensive red and a steady supply of garlic bread starts to look like a pretty good deal.

This is one of the rare bright lights of the otherwise dismal grind of the capitalist exercise, this democratization of “good enough”. The real role of the Tuscan Culinary institute was to give chefs and managers a look at an authentic, three-star Tuscan dining experience and then ask them: with what we have to hand at the tail end of this supply chain, the pasta, the pomodoro, the breadsticks and wine, how can we give our customers 75% of that experience for 15% the cost?

It would be easy to characterize this as some sort of corporate-capitalist co-option of a hacker’s pragmatism – a lot of people have – but I don’t think that’s the right thing, or at least not the whole picture. This is a kind of design, and like any design exercise – like any tangible expression of what design is – we’re really talking about the expression and codification of values.

I don’t think it’s an accident that all the computers I bought between about 1998 about 2008 are either still in service or will still turn on if I flip the switch, but everything I’ve bought since lasts two or three years before falling over. There’s nothing magic about old tech, to be sure: in fact, the understanding that stuff breaks is baked right into their design. That’s why they’re still running: because they can be fixed. And thanks to the unfettered joys of standard interfaces some them are better today, with faster drives and better screens, than any computer I could have bought then.

The Macbook is the antithesis of this, of course. That’s what happened in 2008; the Macbook Pro started shipping with a non-removable battery.

If you haven’t played with one Apple’s flagship Macbooks, they are incredible pieces of engineering. They weigh approximately nothing. Every part of them seems like some fundamental advance in engineering and materials science. The seams are perfect; everything that can be removed, everything you can carve off a laptop and still have a laptop left, is gone.

As a result, it’s completely atomic, almost totally unrepairable. If any part of it breaks you’re hosed.

“Most people make the mistake of thinking design is what it looks like. People think it’s this veneer – that the designers are handed this box and told, ‘Make it look good!’ That’s not what we think design is. It’s not just what it looks like and feels like. Design is how it works.” – Steve Jobs

This is true, kind of; it depends on what you believe your scope of responsibility is as a designer. The question of “how a device works” is a step removed from the question of “how does a person engage with this device”; our aforementioned designer-caricature aside, most of us get that. But far more important than that is the question of how the device helps that person engage the world. And that’s where this awful contradiction comes in, because whatever that device might be, the person will never be some static object, and the world is seven billion people swimming in a boiling froth of water, oil, guns, steel, race, sex, language, wisdom, secrets, hate, love, pain and TCP/IP.

Our time is finite, and entropy is relentless: knowing that, how long should somebody be responsible for their designs? Are you responsible for what becomes of what you’ve built, over the long term? Because if you have a better way to play the long game here than “be a huge pile of rocks” you should chisel it into something. Every other thing of any complexity, anything with two moving parts to rub together that’s still usable or exists at all today has these two qualities:

  1. It can be fixed, and
  2. When it breaks, somebody cares enough about it to fix it.

And that’s where minimalism that denies the complexity of the world, that lies to itself about entropy, starts feeling like willful blindness; design that’s a thin coat of paint over that device’s relationship with the world.

More to the point, this is why the soi-disant-designer snob we were (justly and correctly) ragging on at the beginning of this seemingly-interminable-but-it-finally-feels-like-we’re-getting-somewhere blog post comes across as such a douchebag. It’s not “minimalist” if you buy a new one every two years; it’s conspicuous consumption with chamfered edges. Strip away that veneer, that coat of paint, and there are the real values designer-guy and his venti decaf soy wankaccino hold dear.

Every day I feel a tiny bit more like I can’t really rely on something I can’t repair. Not just for environmentalism’s sake, not only for the peace of mind that standard screwdrivers and available source offers, but because tools designed by people who understand something might fall over are so much more likely to have built a way to stand them back up. This is why I got unreasonably excited by Lenovo’s retro-Thinkpad surveys, despite their recent experiments in throwing user security overboard wearing factory-installed cement boots. The prospect of a laptop with modern components that you can actually maintain, much less upgrade, has become a weird niche crank-hobbyist novelty somehow.

But if your long game is longer than your workweek or your support contract, this is what a total-cost-accounting of “reduced friction with your environment” looks like. It looks like not relying on the OEM, like DIY and scrounged parts and above all knowing that you’re not paralyzed if the rules change. It’s reduced friction with an uncertain future.

I have an enormous admiration for the work Apple does, I really do. But I spend a lot of time thinking about design now, not in terms of shapes and materials but in terms of the values and principles it embodies, and it’s painfully obvious when those values are either deeply compromised or (more typically) just not visible at all. I’ve often said that I wish that I could buy hardware fractionally as good from anyone else for any amount of money, but that’s not really true. As my own priorities make participating in Apple’s vision more and more uncomfortable, what I really want is for some other manufacturer to to show that kind of commitment to their own values and building hardware that expresses them. Even if I could get to (say) 75% of those values, if one of them was maintainability – if it could be fixed a bit at a time – I bet over the long term, it would come out to (say) 15% of the cost.

Late footnote: This post at War Is Boring is on point, talking about the effects of design at the operational and logistical levels.

October 29, 2014

Social Engineering

I gave this talk at FSOSS last week, in which I try to reclaim the term “Social Engineering”, so that it stops meaning “get the receptionist to give you their password” and starts meaning “Measuring community growth and turning that into processes and practices that work.”

I thought it went well, though listening to it I can see I’ve got a couple of verbal tics to work on. Gotta stop using ‘um’ and ‘right’ as punctuation.

February 18, 2013

That’s Too Much Machine For You

Filed under: awesome,documentation,future,interfaces,irc,linux,science,toys — mhoye @ 11:10 am

Keep This Area Clear

Man, how awful is it to see people broken by the realization that they are no longer young. Why are you being cantankerous, newly-old person? It’s totally OK not to be 17 or 23, things are still amazing! Kids are having fun! You may not really understand it, but just roll with it! The stuff you liked when you were 17 isn’t diminished by your creeping up on 40!

This has been making the rounds, a lazy, disappointing article from Wired about the things we supposedly “learned about hacking” from the 1995 almost-classic, Hackers. It’s a pretty unoriginal softball of an article, going for a few easy smirks by cherrypicking some characters’ sillier idiosyncrasies while making the author sound like his birthday landed on him like a cartoon piano.

We need a word for this whole genre of writing, where the author tries far too hard to convince you of his respectable-grownup-hood by burning down his youth. It’s hard to believe that in fifteen years the cycle won’t repeat itself, with this article being the one on the pyre; you can almost smell the smoke already, the odor of burning Brut and secret regrets.

The saddest part of the article, really, is how much it ignores. Which is to say: just about everything else. There’s plenty of meat to chew on there, so I don’t really understand why; presumably it has something to do with deadlines or clickthroughs or word-counts or column inches or something, whatever magic words the writers at Wired burble as they pantomime their editor’s demands and sob into their dwindling Zima stockpile.

I’ve got quite a soft spot in my heart and possibly also my brain for this movie, in part because it is flat-out amazing how many things Hackers got exactly right:

  • Most of the work involves sitting in immobile concentration, staring at a screen for hours trying to understand what’s going on? Check.
  • It’s usually an inside job from a disgruntled employee? Check.
  • A bunch of kids who don’t really understand how severe the consequences of what they’re up to can be, in it for kicks? Check.
  • Grepping otherwise-garbage swapfiles for security-sensitive information? Almost 20 years later most people still don’t get why that one’s a check, but my goodness: check.
  • Social-engineering for that one piece of information you can’t get otherwise, it works like a charm? Check.
  • Using your computer to watch a TV show you wouldn’t otherwise be able to? Golly, that sounds familiar.
  • Dumpster-diving for source printouts? I suspect that for most of my audience “line printers” fit in the same mental bucket as “coelecanth”, and printing anything at all, much less code, seems kind of silly and weird by now, so you’ll just have to take my word for it when I say: very much so, check.
  • A computer virus that can affect industrial control systems, causing a critical malfunction? I wonder where I’ve heard that recently.
  • Abusive prosecutorial overreach, right from the opening scene? You’d better believe, check.

So if you haven’t seen it, Hackers is a remarkable artefact of its time. It’s hardly perfect; the dialog is uneven, the invented slang aged as well as invented-slang always does. Moore’s Law has made anything with a number on the side look kind of quaint, and there’s plenty of that horrible neon-cars-on-neon-highways that directors seem to fall back on when they need to show you what the inside of a computer is doing. But really: Look at that list. Look at it.

For all its flaws, sure, Hackers may not be something you’d hold aloft as a classic. But it’s good fun and it gets an awful lot more right than wrong, and that’s not nothing.

December 14, 2012

Reading Glasses

Filed under: digital,documentation,interfaces,linux,toys,weird,work — mhoye @ 12:22 am

I’ll level with you: I’m not very good at reading code.

I had an interview the other day that featured the dreaded read-this-code segment that’s inevitable in modernity, and reading somebody else’s Python without context, with a regex or two thrown in for kicks… I know there are people who can do that really well, but man, I’m not one of them.

To try and atone for how that went, I’ve written a thing I’ve been meaning to get done for a while, a kind of high-level analysis tool for Git repositories that will be able to give you some suggestions based on historical commit information. It’s called gitcoach, and it’s over on github if you’re interested.

The idea is that it takes look at a project’s whole commit history to see what files tend to get modified at the same time and then looks at what you’re working on now; if you’re working on some file Foo, gitcoach can tell that hey, historically anyone who’s had to change Foo has also changed Bar 92% of the time, and Baz 80% of the time. So, no guarantees, but I suggest you look at those too.

There’s more you can do with that data, perhaps obviously – the nice thing about the general idea is that whenever I mention it to somebody, they think of some other thing you can do with that data that I hadn’t even considered.

So that’s something.

It’s not a finished product – there’s some known bugs and missing features listed in the README, and some others I’m sure that I don’t see yet. But there it is, and hopefully it will be useful for people trying to find their way around a big or new projects.

Sorry about the regex question, dude.

October 2, 2012

Hypothetical Laptop notes

Filed under: business,digital,interfaces,linux,want — mhoye @ 11:57 am

Let’s say you wanted to design a laptop, preinstalled with Linux and for a linux-user audience. This is mostly my own notes about what I’d like, but I wouldn’t mind some feedback.

  • Pixel Qi screen 14″ inches if possible, for power and daylight readability.
  • Arm SOC (Tegra?)
  • User-replaceable battery and RAM.
  • Ideally, off-the-shelf batteries. Are cellphone batteries now good enough that you could line up four of them to power a laptop? Could be, could be…
  • Casing that was meant to be disassembled, insofar as possible. Not junk, but not triwing-five-point-torx screws, either.
  • Built-in software-defined-radio-usable chips, two of them, and significant antenna.
  • Bluetooth 4, usb3. Wifi, obviously.
  • HDMI out. It’d be nice to know if a chip existed that could support HDMI-out and the Pixel Qi screens, that sounds like the best of both worlds.
  • Nonjunk touchpad.

What am I missing? Anything else?

« Newer PostsOlder Posts »

Powered by WordPress