Writings

Technology, open source, personal essays, and everything that isn't climate.

Fluidity of Language

Having a toddler definitely makes you realize how fluid our brains are for mapping and adapting to language changes. And, how quickly those language changes can become a dialect that breaks up understanding.

Things I never considered before being a parent, what is the difficultly level of you child's name for them to say. Because it turns out that if you give you child a name with both a W and an R, those are pretty late on the sound acquisition timeline. So they are not going to use their name as a token for themselves during early speech development, because they physically can't pronounce it.

So, my daughter latched on to the other token that was constantly being used in her direction: "you". When I first saw that emerging it was completely confusing until I figured out the logic of how she got there. The first week I even tried to stamp it out. But, you know what, language is organic.

So, we're living with pronoun inversion for the moment. After two weeks of it, my brain rewired to make it normal, and I don't miss a beat any more. The only time I really realize it's a thing is when friends come over that haven't seen her in a while and she talks to them. And a "You have mama bear" is interpreted as gift giving instead of statement of fact. And the misinterpretation brings scowls.

A lot hinges on a single word some times, and the assumption that we are all using these tokens the same way. But even in normal adult interactions, we aren't. It gives me a finer appreciation of how even if you think you understand people, you need to double check.

Related: Stephen Fry on Language · Vacation and Books · They said it couldn’t be done, and he did it

Microsoft's Inclusive Design Manual

[ From Microsoft's Inclusive Design Manual.

Microsoft's Inclusive Design website is pretty amazing. There is an overview manual, as well as exercises to help train yourself in inclusive design situations. However, even just reading the short gave me a few aha moments. It's worth the 30 minutes to give it a read through.

Kudos to Microsoft for both doing this work, and making it publicly available.

Related: Microsoft and Linux · Microsoft 1-ups google on map detail · Clean Up Your Mess - A Guide to Visual Design for Everyone

Over communicating

I once had a college class where the instructor was in the process of writing a text book for the class. So we were being taught out of photocopies of the draft textbook. It wasn't a very good class.

It wasn't that he wasn't a good writer. He was. The previous semester I'd had a great class using one of his text books. But it was taught by a different professor. There were some places that the text made a lot of sense to me, and some places where the different approach of the non-author professor made far more sense. With two points of view it's about synthesizing an understanding. If something from the book didn't really stick, something from in class might. And each aha moment made everything you'd read or heard before make a bit more sense.

I was reminded of this this morning reading through some technical documentation that was light on content and heavy on references. It was written that way so as to not repeat itself (oh, this part is explained over her instead). And while that may make sense to the authors, it doesn't make for an easy on ramp for people trying to learn.

It's fine to over communicate. It's good to say the same thing a few different ways over the course of a document, and even be repetitive at times. Because human brains aren't disk drives, we don't fully load everything into working memory, and then we're there. We pick up small bits of understanding in every pass. We slowly build a mental approximation of what's there. And people have different experiences that resonate with them, and that make more sense to them.

There isn't one true way to explain topics. So, when in doubt, over communicate.

Related: Vacation and Books · Don't step in the Leadership.... · If only they had power...

In praise of systemd

There was definitely a lot of hate around systemd in the Linux community over the last few years as all the Linux distros moved over to it. Things change all the time, and I personally never understood this one. It wasn't like the random collection of just barely working shell scripts that may or may not have implemented "status" was really a technical superior solution.

Recently I've been plumbing more native systemd support into DevStack (OpenStack's development environment setup tool). Personally systemd is just another way to start services, it does a few things better at the cost of having to learn a new interface. But some huge wins in a developer context come from the new logging system with it, journald.

Systemd has its own internal journaling system, which can reflect out to syslog and friends. However, it's inherently much richer. Journal messages can include not only text, but arbitrary metadata. You can then query the journal with this arbitrary metadata.

A concrete example of this is the request-id in OpenStack. On any inbound REST API call a request-id is generated, then passed around between workers in that service. This lets you, theoretically, trace through multiple systems to see what is going on. In practice, you end up having to build some other system to collect and search these logs. But with some changes to OpenStack's logging subsystem to emit journal native messages, you can do the following:

journalctl REQUEST_ID=req-3e4fa169-80ec-4635-8a7e-b60c16eddbcb

And get the following:

-- Logs begin at Wed 2017-03-29 08:23:23 EDT, end at Wed 2017-03-29 16:19:46 EDT. --
Mar 29 16:16:05 os4 nova-api[14042]: DEBUG nova.api.openstack.wsgi [req-3e4fa169-80ec-4635-8a7e-b60c16eddbcb demo demo] Action: 'create', calling method: <bound method ServersController.create of <nova.api.openstack.compute.servers.ServersController object at 0x7fa7c93584d0>>, body: {"server": {"min_count": 1, "flavorRef": "d2", "name": "test1", "imageRef": "f69a1669-34b6-4a2a-9f98-6c4ae0a9d21a", "max_count": 1}} from (pid=14042) _process_stack /opt/stack/nova/nova/api/openstack/wsgi.py:621
Mar 29 16:16:05 os4 nova-api[14042]: DEBUG nova.api.openstack.compute.servers [req-3e4fa169-80ec-4635-8a7e-b60c16eddbcb demo demo] Running _create_extension_point for <Extension: name=MultipleCreate, alias=os-multiple-create, version=1> from (pid=14042) _create_extension_point /opt/stack/nova/nova/api/openstack/compute/servers.py:740
Mar 29 16:16:05 os4 nova-api[14042]: DEBUG nova.network.neutronv2.api [req-3e4fa169-80ec-4635-8a7e-b60c16eddbcb demo demo] validate_networks() for None from (pid=14042) validate_networks /opt/stack/nova/nova/network/neutronv2/api.py:1622
Mar 29 16:16:05 os4 nova-api[14042]: DEBUG nova.quota [req-3e4fa169-80ec-4635-8a7e-b60c16eddbcb demo demo] Reserving resources using context.project_id: 70162ab521a5455faff0680e923dd091 from (pid=14042) reserve /opt/stack/nova/nova/quota.py:500
Mar 29 16:16:05 os4 nova-api[14042]: INFO nova.osapi_compute.wsgi.server [req-3e4fa169-80ec-4635-8a7e-b60c16eddbcb demo demo] 10.42.0.53 "POST /v2.1/servers HTTP/1.1" status: 202 len: 795 time: 0.8296130
Mar 29 16:16:05 os4 nova-conductor[14326]: WARNING oslo_config.cfg [req-3e4fa169-80ec-4635-8a7e-b60c16eddbcb demo demo] Option "scheduler_default_filters" from group "DEFAULT" is deprecated.
Mar 29 16:16:06 os4 nova-scheduler[14269]: DEBUG nova.filters [req-3e4fa169-80ec-4635-8a7e-b60c16eddbcb demo demo] Starting with 1 host(s) from (pid=14269) get_filtered_objects /opt/stack/nova/nova/filters.py:70
Mar 29 16:16:06 os4 nova-scheduler[14269]: DEBUG nova.scheduler.filter_scheduler [req-3e4fa169-80ec-4635-8a7e-b60c16eddbcb demo demo] Selected host: WeighedHost [host: (os4, os4) ram: 15435MB disk: 199680MB io_ops: 0 instances: 0, weight: 0.0] from (pid=14269) _schedule /opt/stack/nova/nova/scheduler/filter_scheduler.py:126
Mar 29 16:16:06 os4 nova-compute[14334]: INFO nova.compute.claims [req-3e4fa169-80ec-4635-8a7e-b60c16eddbcb demo demo] [instance: a70f2d77-f140-4edf-bf38-8b07076be37a] Attempting claim on node os4: memory 1024 MB, disk 10 GB, vcpus 1 CPU
Mar 29 16:16:06 os4 nova-compute[14334]: INFO nova.compute.claims [req-3e4fa169-80ec-4635-8a7e-b60c16eddbcb demo demo] [instance: a70f2d77-f140-4edf-bf38-8b07076be37a] Claim successful on node os4
Mar 29 16:16:06 os4 nova-compute[14334]: DEBUG nova.compute.manager [req-3e4fa169-80ec-4635-8a7e-b60c16eddbcb demo demo] [instance: a70f2d77-f140-4edf-bf38-8b07076be37a] Starting instance... from (pid=14334) _do_build_and_run_instance /opt/stack/nova/nova/compute/manager.py:1747
Mar 29 16:16:07 os4 nova-compute[14334]: INFO nova.virt.libvirt.driver [req-3e4fa169-80ec-4635-8a7e-b60c16eddbcb demo demo] [instance: a70f2d77-f140-4edf-bf38-8b07076be37a] Creating image
Mar 29 16:16:08 os4 nova-compute[14334]: DEBUG nova.network.neutronv2.api [req-3e4fa169-80ec-4635-8a7e-b60c16eddbcb demo demo] [instance: a70f2d77-f140-4edf-bf38-8b07076be37a] Successfully created port: 0c051449-cc3a-4745-b0c7-ff65c445b798
Mar 29 16:16:08 os4 nova-compute[14334]: DEBUG nova.compute.manager [req-3e4fa169-80ec-4635-8a7e-b60c16eddbcb demo demo] [instance: a70f2d77-f140-4edf-bf38-8b07076be37a] Start spawning the instance on the hypervisor.
Mar 29 16:16:09 os4 nova-compute[14334]: DEBUG nova.network.neutronv2.api [req-3e4fa169-80ec-4635-8a7e-b60c16eddbcb demo demo] [instance: a70f2d77-f140-4edf-bf38-8b07076be37a] _get_instance_nw_info()

That is the flow of creating a server across all the Nova processes.

That's the kind of analysis that most people were adding Elastic Search into their environments to get. And while this clearly doesn't actually replicate all the very cool things you can do with Elastic Search, it does really give you a bunch of new tools as a developer.

Note: the enablement for everything above is still very much work in progress. The DevStack patches have landed, but are off by default. The oslo.log patch is in the proof of concept phase for review.

This idea of programs being able to send not just log messages, but other metadata around them, is really powerful. It means, for instance, you can always send the code function / line number where a message was emitted. It's not clogging up the log message itself, but if you want it later you can go ask for it. Or even if it is in the log message, by extracting in advance what the critical metadata is, you can give your consumers structured fields instead of relying on things like grok to parse the logs. Which simplifies ingest by things like Elastic Search.

There is a lot to explore here to provide a better developer and operator experience, which is only possible because we have systemd. I for one look forward to exploring the space.

Related: The Nova API in Kilo and Beyond · IBM Watson on NOVA · OpenStack as Layers

Universal Design Problems

Credit: Amy Nguyen

A great slide came across twitter the other day, which rang really true after having a heated conversation with someone at the OpenStack PTG. They were convinced certain API behavior would not be confusing because the users would have carefully read all the API documentation and understood a set of caveats buried in there. They were also astonished by the idea that people (including those in the room) write software against APIs by skimming, smashing bits into a thing, getting one successful response, and shipping it.

The theme of the slide is really Empathy. You have to have empathy for your users. They know much less about your software then you do. And they have a different lived experience so even the way they would approach whatever you put out there might be radically different from what you expected.

Related: Why you need an API · Notes from API Strat · The Nova API in Kilo and Beyond

Why Do Americans Refrigerate Their Eggs?

Americans love refrigeration, and eggs are high on the list of items we rush to get into the refrigerator after a trip to grocery store. Meanwhile, our culinary compatriots in Europe, Asia and other parts of world happily leave beautiful bowls of eggs on their kitchen counters.

So what gives?

Mostly, it’s about washing. In the U.S., egg producers with 3,000 or more laying hens must wash their eggs. Methods include using soap, enzymes or chlorine.

...

But — and here is the big piece of the puzzle — washing the eggs also cleans off a thin, protective cuticle devised by nature to protect bacteria from getting inside the egg in the first place. (The cuticle also helps keep moisture in the egg.)

With the cuticle gone, it is essential — and, in the United States, the law — that eggs stay chilled from the moment they are washed until you are ready to cook them. Japan also standardized a system of egg washing and refrigeration after a serious salmonella outbreak in the 1990s.

In Europe and Britain, the opposite is true. European Union regulations prohibit the washing of eggs. The idea is that preserving the protective cuticle is more important than washing the gunk off.

Source: ‘Why Do Americans Refrigerate Their Eggs?’ - The New York Time

Related: House Toys · Why soap cleans · Migration by Sea

Gameplan for the next 4 years

Thing is: There is no someone else. No one is coming to save us from Trump and his merry band of egregious nincompoops. If there is saving to be done, it comes from us, or not at all. Be the “someone else” you want to see in this world. Because otherwise you’re leaving it to the horde of racists and bigots following in Trump’s wake. And that’s not acceptable.

At the very least, if you can’t get out of oh shit oh shit oh shit mode, then make goddamn sure you’re not making things harder for the people who are stepping up. I think it’s time to realize that we’re in a “perfect is the enemy of good” situation.

Source: The Beginning of the Trump Years – Whatever

Of all the post mortem writing of the election, I think that the science fiction authors seem to have the most sane grounding. Scalzi, Brin, Stross have all been far more interesting and insightful reads over the last 2 months than any of the punditry of what happened and what's next. You could do worse than follow those folks.

Scalzi's post today boiled down to a couple of pieces of solid advice for the next 4 years.

Stand up for one thing you believe in, and push on that. But remember not to overextend yourself. This is a marathon. There is just as much danger in getting overwhelmed in all the crazy and throwing your hands up and giving up.

Support others that are doing the same. No friendly fire that their cause isn't as important as yours. We make this world a better place by working in parallel.

The perfect is the enemy of the good. The point is to make progress, which you do one wandering and labored step at time.

Related: The Long View · Where do you see yourself in 5 years? · From the Archive: When will then be now? Soon.

What really causes cyber outages?

WASHINGTON, DC—For years, the government and security experts have warned of the looming threat of "cyberwar" against critical infrastructure in the US and elsewhere. Predictions of cyber attacks wreaking havoc on power grids, financial systems, and other fundamental parts of nations' fabric have been foretold repeatedly over the past two decades, and each round has become more dire. The US Department of Energy declared in its Quadrennial Energy Review, just released this month, that the electrical grid in the US "faces imminent danger from a cyber attack."

So far, however, the damage done by cyber attacks, both real (Stuxnet's destruction of Iranian uranium enrichment centrifuges and a few brief power outages alleged to have been caused by Russian hackers using BlackEnergy malware) and imagined or exaggerated (the Iranian "attack" on a broken flood control dam in Rye, New York), cannot begin to measure up to an even more significant cyber-threat—squirrels.

Source: Who’s winning the cyber war? The squirrels, of course | Ars Technica

The ultimate fuzz testers.

Related: Hacking Windmills · Climate Infrastructure · The Daily Show: ending the war on science, the only war we were winning

You aren't going to get turned into a paperclip

AI alarmists believe in something called the Orthogonality Thesis. This says that even very complex beings can have simple motivations, like the paper-clip maximizer. You can have rewarding, intelligent conversations with it about Shakespeare, but it will still turn your body into paper clips, because you are rich in iron.

There's no way to persuade it to step "outside" its value system, any more than I can persuade you that pain feels good.

I don't buy this argument at all. Complex minds are likely to have complex motivations; that may be part of what it even means to be intelligent.

It's very likely that the scary "paper clip maximizer" would spend all of its time writing poems about paper clips, or getting into flame wars on reddit/r/paperclip, rather than trying to destroy the universe. If AdSense became sentient, it would upload itself into a self-driving car and go drive off a cliff.

Source: Superintelligence: The Idea That Eats Smart People

This is pretty much the best round up of AI myths that I've seen so far, presented in a really funny way. It's long, but it's so worth reading.

I'm pretty much exactly with the Author on his point of view. There are lots of actual ethical questions around AI, but these are mostly about how much data we're collecting (and keeping) to train these Neural networks, and not really about hyper intelligent beings that will turn us all into paperclips.

Related: The future of scientific papers · Stop the Presses · Volunteer Motivations

Podcast Roundup 2016

As we round up 2016, I figured it's useful to share what's in my podcast rotation, and why you might want to add them to yours.

Skeptics Guide to the Universe

This is a weekly science and critical thinking podcast that's really good at keeping you up on the latest science coming out, as well as building your critical thinking skills. You both get information on latest scientific discoveries, deconstruction of sometimes very poor science reporting, and a weekly Science or Fiction quiz that both is lots of fun, and helps figure out where all your odd biases are.

No particular episode jumps out for the year, this is more about getting a steady diet of facts, critical thinking, and reality every week.

More information: http://www.theskepticsguide.org/

99 Percent Invisible

A weekly podcast about the Built World (architecture and design). I find incredibly useful to understand how the world is shaped (literally). The subject matter goes all over the place, and the production quality is amazing. Who knew that in 1970s Chili there was a cyber command center to help govern the country? Now you do - http://99percentinvisible.org/episode/project-cybersyn/.

More information: http://99percentinvisible.org/

The Long Now

The Long Now foundation is based on the idea that we are in the middle of the arc of Human History, so with 10,000 years behind us, we've got another 10,000 years in our run. What kind of thinking, values, and information do we need to promote for the next 10,000 years. Part of this is a monthly lecture series which you can get as a podcast (you can get video if you are a member).

In 2016 the 2 episodes I learned the most from were:

Radical Ag: C4 Rice and Beyond - http://longnow.org/seminars/02016/mar/14/radical-ag-c4-rice-and-beyond/ - which has an incredible primer on the state of food production in the world, and what is needed to feed the planet in 2050. I also learned a ton about how plants actually make sugars, as the team described the grand goal of upgrading Rice's sugar production to meet world demand.

1177 BC: When Civilization Collapsed - http://longnow.org/seminars/02016/jan/11/1177-bc-when-civilization-collapsed/. Which was part of a book tour about a time in history where we had a very global world, and it collapsed rather quickly. It's a part of history I knew little about, and also helps remember how long the arc of human history really is.

More information: http://longnow.org/

The Common Wealth Club of California

The common wealth club is now producing over 300 events a year, much of it gets dumped into the podcast. It's useful in being such a wide spectrum of things ending up in it. Lots of people on book tours, but also there is the Inforum and Climate One programs that specifically look at technology issues and climate issues. Because of the volume I freely skip past things that don't turn out to be interesting, but I've also gotten surprised by some things I didn't think I would.

The panel discussion on sustainability in the fashion industry was one of those - https://www.commonwealthclub.org/events/2016-05-17/you-are-what-you-wear-fashion-matters.

More information: https://www.commonwealthclub.org/

The Allusionist

A quirky podcast about language and the origin of words. It only runs every other week, but it's always a fun dose of something different.

More information: http://www.theallusionist.org/

Imaginary Worlds

A podcast about scifi and fantasy worlds, and why we create them. In 2016 there were some great bits on the economics in fanstasy and scifi universes, how do you pay for that invasion? An exploration of the year without summer in 1816, which gave us Frankenstein. And a look at the role of maps in Fantasy epics.

More information: http://www.imaginaryworldspodcast.org/home.html

Radio Lab

Always a favorite, though you have to get used to their editing style. In 2016 Radio Lab also did a spin off about the Supreme Court called More Perfect - http://www.wnyc.org/shows/radiolabmoreperfect.

The story that stuck with me the most in 2016 was Debatable - http://www.radiolab.org/story/debatable/ - it's about Debate Club, but it's meta enough that you just have to listen to understand.

More information: http://www.radiolab.org/   There are a few more that come and go, but this was really the most notable during the year. If you are looking for more quality content, anything from the list above will fit that bill.

Related: A Year in Podcasts · What I'm listening to · What I'm listening to