<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Benlog &#187; personal</title>
	<atom:link href="http://benlog.com/articles/category/personal/feed/" rel="self" type="application/rss+xml" />
	<link>http://benlog.com</link>
	<description>security, privacy, transparency.</description>
	<lastBuildDate>Thu, 22 Dec 2011 22:46:51 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>BrowserID and me</title>
		<link>http://benlog.com/articles/2011/09/21/browserid-and-me/</link>
		<comments>http://benlog.com/articles/2011/09/21/browserid-and-me/#comments</comments>
		<pubDate>Wed, 21 Sep 2011 22:27:54 +0000</pubDate>
		<dc:creator>ben</dc:creator>
				<category><![CDATA[identity]]></category>
		<category><![CDATA[personal]]></category>
		<category><![CDATA[web]]></category>

		<guid isPermaLink="false">http://benlog.com/?p=1769</guid>
		<description><![CDATA[A few weeks ago, I became Tech Lead on Identity and User Data at Mozilla. This is an awesome and challenging responsibility, and I&#8217;ve been busy. When I took on this new responsibility, BrowserID was already well under way, so we were able to launch it in my second week on the project (early July). [...]]]></description>
			<content:encoded><![CDATA[<p>A few weeks ago, I became Tech Lead on Identity and User Data at Mozilla. This is an awesome and challenging responsibility, and I&#8217;ve been busy. When I took on this new responsibility, <a href="https://browserid.org">BrowserID</a> was already well under way, so we were able to launch it in my second week on the project (early July). It&#8217;s been a very fun ride.</p>
<p>Here&#8217;s the BrowserID demo at the Mozilla All-Hands last week:</p>
<p><iframe width="640" height="360" src="http://www.youtube-nocookie.com/embed/6x45Nt1fOMM" frameborder="0" allowfullscreen></iframe></p>
<p>Given my prior work on email-based authentication (<a href="http://assets.adida.net/research/w2sp2008-emid.pdf">EmID</a>, <a href="http://assets.adida.net/research/lightweight-signatures-for-email.pdf">Lightweight Email Signatures</a>, <a href="http://assets.adida.net/research/beamauth-ccs2007.pdf">BeamAuth</a>), you might think BrowserID was my brainchild. In fact, it really wasn&#8217;t. And, in a testament to the shrinking impact of academic publication venues, none of the BrowserID team had ever heard of my work on email-based authentication before I arrived at Mozila, even though Mozilla folks are quite well versed in the state of the art. But who cares: when I found out about the ongoing work and how we agreed on just about every design principle, I was incredibly excited. And when I realized the fantastic work the team had already done on defining a scaffolding and adoption path for the technology, I was super impressed.</p>
<p>BrowserID started with the <a href="https://wiki.mozilla.org/Identity/Verified_Email_Protocol">Verified Email Protocol</a>, designed by <a href="http://www.open-mike.org/">Mike Hanson</a> and <a href="http://twitter.com/thunder">Dan Mills</a>, who came up with the approach after extensive exploration of web-based identity approaches over the last two years. It&#8217;s a simple idea: users can prove to web sites that they own a particular email address. That&#8217;s how they register, and that&#8217;s how they log back in the next time they visit the site. BrowserID, the code and site, was initially bootstrapped by <a href="http://lloyd.io/">Lloyd Hilaiel</a> and Mike Hanson. <a href="http://www.shanetomlinson.com/">Shane Tomlinson</a> and I joined the team in June. We now also have an awesome UX design team (Bryan and Andy) and the team continues to grow (yay Austin!)</p>
<p>So, that&#8217;s what I&#8217;m working on these days: BrowserID and other Identity+UserData efforts at Mozilla. I&#8217;m excited to be leading this technical effort. The team is amazing, and we&#8217;ve got big aggressive plans to help you control your identity and data on the Web.</p>
]]></content:encoded>
			<wfw:commentRss>http://benlog.com/articles/2011/09/21/browserid-and-me/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>my 9.11</title>
		<link>http://benlog.com/articles/2011/09/11/my-9-11/</link>
		<comments>http://benlog.com/articles/2011/09/11/my-9-11/#comments</comments>
		<pubDate>Sun, 11 Sep 2011 15:07:53 +0000</pubDate>
		<dc:creator>ben</dc:creator>
				<category><![CDATA[personal]]></category>

		<guid isPermaLink="false">http://benlog.com/?p=1784</guid>
		<description><![CDATA[Maybe it&#8217;s silly to add yet another story to the list of &#8220;where I was on 9/11.&#8221; I suffered no direct loss, while some people I know did. Many other world events were far, far more awful. But as I did experience 9/11 in person, I feel the need to write down some thoughts, some [...]]]></description>
			<content:encoded><![CDATA[<p>Maybe it&#8217;s silly to add yet another story to the list of &#8220;where I was on 9/11.&#8221; I suffered no direct loss, while some people I know did. Many other world events were far, far more awful. But as I did experience 9/11 in person, I feel the need to write down some thoughts, some memories.</p>
<p>On the night of September 10th, 2001, I was having drinks with an old friend (I&#8217;m having trouble remembering which friend!) in Chelsea, about 3 miles north of the World Trade Center. We stayed up late. We talked about world politics, terrorism, the Middle East. So when the alarm clock radio came on a bit before 9am (hey, I&#8217;m a software guy), with talk of a plane hitting a building, I thought I was having some messed-up dream based on the night&#8217;s conversation. By the time I turned on the TV, the second plane had hit. My mom called. &#8220;Mom, that&#8217;s a second plane, it&#8217;s not an accident.&#8221; I got a call from my sister who lived a few miles uptown, she was fine, too. I noticed a voicemail from my friend and coworker Josh. His wife, who worked in the WTC, was fine, as she was away on a trip. Then the cell phones went dead.</p>
<p>I threw on clothes and comfortable clothes. I watched the first tower collapse on TV. I grabbed a backpack, put on jogging shoes, and ran out of my apartment on 21st street, between 7th and 8th avenues. From my street I couldn&#8217;t see the towers, so I headed to 7th avenue. By the time I got there, all I could see was smoke. I had to ask someone on the street: &#8220;where&#8217;s the second tower?&#8221;</p>
<p>I started walking downtown, towards my office in TriBeCa, about a mile north of the WTC. I panicked for a moment: what if this was just the beginning and more was underway? I stepped into a convenience store, bought 3 candybars and 2 bottles of water. As I walked downtown, I passed cars stopped in the street, doors open, people standing with their radios turned on, straight out of some apocalypse movie. Then I started seeing people covered in dust. I made it to my office just south of Canal St, walked in, and logged on. I think I spent an hour clicking &#8220;respond&#8221;, writing &#8220;yes, I&#8217;m fine, more later.&#8221;</p>
<p>I found an unused IP address on one of our servers and set up a page to list &#8220;I&#8217;m ok&#8221; messages. Looks like the Internet Archive <a href="http://web.archive.org/web/20020802064830/http://adida.net/SEPT11/">has a copy</a>. I remember thinking I might be aggregating thousands of messages from around the city, though in the end it was obviously limited to my circle of friends. I guess I wanted to help, in any way I could.</p>
<p>Somewhere in there I chatted with co-workers, emailed our clients and partners, told them we were alright, asked how they were doing. One of our clients was on Wall Street and lost a number of friends.</p>
<p>In the mid afternoon, my friend Greg and I went up on the roof of our office building and talked, looking down Greenwich St towards WTC 7 surrounded by smoke of the collapsed towers. We went downstairs, heard on the radio that WTC 7 had collapsed, ran back up, and sure enough, it was gone. That night, Amanda, Greg, my sister and I crowded into my little apartment, ate frozen pizza and watched the news until we couldn&#8217;t anymore.</p>
<p>One of my best friends was stuck in Pennsylvania on a business trip. He wanted to be home in NYC, but couldn&#8217;t.</p>
<p>I gave my team the week off.</p>
<p>The next few days were odd.</p>
<p>I wasn&#8217;t able to fly out to the West Coast that Friday to see my friend Rodrigo&#8217;s new baby.</p>
<p>I stayed up nights listening to fighter jets flying overhead. I participated in far too many email arguments about &#8220;how to respond.&#8221; I was crazy and emotional. I made stupid, childish arguments. Within a few weeks, I would be calmer and, I think, more reasonable. I wish our leaders had also taken a moment to breathe.</p>
<p>People started going about their business again. There was the smell of burn in the air, but people tried not to talk about it. People were nice. Very nice. I went out a lot. I followed my friend Arjun to see indie bands on the lower east side. I didn&#8217;t want to stay in, ever, I needed to go out and be with people. I remember a faux-french band we saw, the guitarist wore an &#8220;I [heart] NYC&#8221; t-shirt he&#8217;d modified to say &#8220;J&#8217;[aime] NYC&#8221;. They didn&#8217;t mention the burning buildings. No one talked about it. Instead people went out of their way to be friendly, to reach out, to help.</p>
<p>That was, in some way, the saddest part of that experience. Everyone wanted to help. Doctors waited for the wounded, but none came. People lined up to give blood, but none was needed. People lined up to help downtown but there wasn&#8217;t room for everyone. So we tried to help each other, in small ways, every day.</p>
]]></content:encoded>
			<wfw:commentRss>http://benlog.com/articles/2011/09/11/my-9-11/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>with freedom comes responsibility: open publishing</title>
		<link>http://benlog.com/articles/2011/09/05/with-freedom-comes-responsibility-open-publishing/</link>
		<comments>http://benlog.com/articles/2011/09/05/with-freedom-comes-responsibility-open-publishing/#comments</comments>
		<pubDate>Mon, 05 Sep 2011 17:02:53 +0000</pubDate>
		<dc:creator>ben</dc:creator>
				<category><![CDATA[personal]]></category>

		<guid isPermaLink="false">http://benlog.com/?p=1780</guid>
		<description><![CDATA[As of a few months ago, I&#8217;m no longer on a publish-or-perish academic track. Mozilla gives me the freedom to publish, but no pressure. Coincidentally, the publishing world is at a bit of a crossroads. Some organizations, like USENIX, are increasingly open: all papers are published for the world to see, many talks are videotaped [...]]]></description>
			<content:encoded><![CDATA[<p>As of a few months ago, I&#8217;m no longer on a publish-or-perish academic track. Mozilla gives me the freedom to publish, but no pressure. Coincidentally, the publishing world is at a bit of a crossroads. Some organizations, like USENIX, are increasingly open: all papers are published for the world to see, many talks are videotaped and available openly. Others, like IEEE, are increasingly closed, with tighter and tighter constraints on authors, more paywalls and obstacles to the dissemination of knowledge.</p>
<p>I&#8217;ve got increased freedom, so I intend to use it. Starting today, I will not publish nor review papers destined for closed venues. Academic publications should be available for the world to read, to learn from, to build upon. If you&#8217;d like me on your program committee, if you&#8217;d like me to review a journal publication, if you&#8217;d like me to help with a paper, please understand that I will refuse if the conference/journal isn&#8217;t truly open. In the short term, this probably means I&#8217;ll only work with USENIX, and maybe IACR which appears to be moving towards true open-access.</p>
<p>My move isn&#8217;t exactly courageous. I have the luxury to make this decision, while many of my colleagues do not. I hope a few tenured professors make this move, though, as they have both the luxury and a good bit more influence than I do. Matt Blaze is starting down this path. Dan Wallach is helping tweak the IEEE approach. All of these efforts are incredibly important.</p>
<p>This is about free dissemination of knowledge. This is the point of the Internet. Academics who stand for discovery and learning should be outraged by the direction most publishers are taking today, and should at the very least encourage those publishers who are doing it well. Hesitating between ACM and USENIX? Go with USENIX. IACR holding a vote on open-access publishing? Make your voice heard.</p>
]]></content:encoded>
			<wfw:commentRss>http://benlog.com/articles/2011/09/05/with-freedom-comes-responsibility-open-publishing/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>2 months in at Mozilla</title>
		<link>http://benlog.com/articles/2011/05/31/2-months-in-at-mozilla/</link>
		<comments>http://benlog.com/articles/2011/05/31/2-months-in-at-mozilla/#comments</comments>
		<pubDate>Wed, 01 Jun 2011 02:54:30 +0000</pubDate>
		<dc:creator>ben</dc:creator>
				<category><![CDATA[personal]]></category>

		<guid isPermaLink="false">http://benlog.com/?p=1691</guid>
		<description><![CDATA[It&#8217;s been 2 months since I started at Mozilla. I&#8217;m working with fantastically talented and friendly people. I&#8217;m enjoying myself tremendously and I&#8217;m starting to get a sense of what makes Mozilla different from my previous experiences. Put simply, it&#8217;s teamwork. In his speech to Harvard Med School graduates last week (stick with me here, [...]]]></description>
			<content:encoded><![CDATA[<p>It&#8217;s been 2 months since I started at <a href="http://mozilla.com">Mozilla</a>. I&#8217;m working with fantastically talented and friendly people. I&#8217;m enjoying myself tremendously and I&#8217;m starting to get a sense of what makes Mozilla different from my previous experiences. Put simply, it&#8217;s <b>teamwork</b>.</p>
<p>In his speech to Harvard Med School graduates last week (stick with me here, this is relevant), Atul Gawande (author of the Checklist Manifesto), laid out, in his clearest and most convincing argument yet, <a href="http://www.newyorker.com/online/blogs/newsdesk/2011/05/atul-gawande-harvard-medical-school-commencement-address.html">how the practice of medicine needs to change</a>:</p>
<blockquote><p>
The core structure of medicine emerged in an era when doctors could hold all the key information patients needed in their heads and manage everything required themselves. One needed only an ethic of hard work, a prescription pad, a secretary, and a hospital willing to serve as one’s workshop, loaning a bed and nurses for a patient’s convalescence, maybe an operating room with a few basic tools. We were craftsmen. We could set the fracture, spin the blood, plate the cultures, administer the antiserum. The nature of the knowledge lent itself to prizing autonomy, independence, and self-sufficiency among our highest values, and to designing medicine accordingly. But you can’t hold all the information in your head any longer, and you can’t master all the skills. No one person can work up a patient’s back pain, run the immunoassay, do the physical therapy, protocol the MRI, and direct the treatment of the unexpected cancer found growing in the spine. I don’t even know what it means to “protocol” the MRI.
</p></blockquote>
<p>Gawande tells colleagues they need to work as well-oiled teams. No heros, no cowboys. I believe, and surely I&#8217;m not the first, that the same path lies ahead for software engineers.</p>
<p>The open-source and free software movements caught on to this a long time ago. Sure, there are leaders (Richard Stallman, Linus Torvalds, Mitchell Baker.) But more importantly there are teams, incredibly agile teams of developers who rise to the occasion of the software itch that needs scratching. The coordination requirement on most software is usually not that of a medical team treating an emergency patient&#8230; except when it comes to releasing Firefox 4 to 100,000,000 users in 84 languages in a matter of days. You need a well-oiled open-source software machine run by a top-notch team, and that&#8217;s what Mozilla is.</p>
<p>There are no rock stars, or rather, everyone&#8217;s super impressive in their own way but no one is <em>treated</em> like a rock star. Because what matters is the team. This is incredibly refreshing for me, especially coming from academia where, though individual academics are highly collaborative by nature, there is a strong incentive to specialize, find a niche, and be the single rockstar in that niche, because that&#8217;s how you get promoted.</p>
<p>So I&#8217;m really enjoying Mozilla. And, we&#8217;re hiring, so if you want to work on one of the world&#8217;s most important pieces of digital infrastructure, drop me a line.</p>
]]></content:encoded>
			<wfw:commentRss>http://benlog.com/articles/2011/05/31/2-months-in-at-mozilla/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>benadida@mozilla</title>
		<link>http://benlog.com/articles/2011/03/07/benadidamozilla/</link>
		<comments>http://benlog.com/articles/2011/03/07/benadidamozilla/#comments</comments>
		<pubDate>Mon, 07 Mar 2011 23:44:47 +0000</pubDate>
		<dc:creator>ben</dc:creator>
				<category><![CDATA[personal]]></category>

		<guid isPermaLink="false">http://benlog.com/?p=1571</guid>
		<description><![CDATA[In a few days, I&#8217;ll be joining Mozilla. What started as a fun lunch with Sid and Alex quickly turned into passionate brainstorming with Mike, Pascal, and Lloyd on the Mozilla Labs team. I told them I wanted to deeply explore a few ideas I&#8217;ve written about and prototyped (here and here, for example) and [...]]]></description>
			<content:encoded><![CDATA[<p>In a few days, I&#8217;ll be joining Mozilla.</p>
<p>What started as a fun lunch with <a href="http://www.sidstamm.com/">Sid</a> and <a href="http://firstpersoncookie.wordpress.com/">Alex</a> quickly turned into passionate brainstorming with <a href="http://open-mike.org">Mike</a>, <a href="http://www.finette.com/">Pascal</a>, and <a href="http://trickyco.de/">Lloyd</a> on the Mozilla Labs team. I told them I wanted to deeply explore a few ideas I&#8217;ve written about and prototyped (<a href="http://benlog.com/articles/2010/06/05/browser-extensions-user-freedom/">here</a> and <a href="http://w2spconf.com/2007/slides/Adida-loosely-coupled-mashups.pdf">here</a>, for example) and more importantly to work on making the browser a <em>true user agent working on behalf of the user</em>. Mozilla folks are not only strongly aligned with that point of view, they&#8217;ve already done quite a bit to make it happen. Check out <a href="http://www.open-mike.org/entry/using-web-applications-for-service-discovery">Mike Hanson&#8217;s post just a few days ago</a> on using Web Applications for Service Discovery. And check out what the entire team just released: <a href="http://mozillalabs.com/blog/2011/03/first-developer-release-of-web-apps-project/">Open Web Apps</a>. Not to mention the less closely related but still totally awesome work Sid and Alex are doing with <a href="http://blog.sidstamm.com/2011/01/try-out-do-not-track-http-header.html">Do Not Track</a>. This is the first effort I know of that is successfully using technology to declare a preference (&#8220;please don&#8217;t track me&#8221;), which can then be leveraged by policy makers to ensure that it is respected. As a long-time student of the interplay between tech and policy, I <em>love</em> this hack.</p>
<p>My job will be to join this fantastic team and see what I can contribute. I suspect that will involve some privacy, some crypto, some data portability, and a lot of web hacking. I&#8217;ll continue to blog here at <a href="http://benlog.com">benlog.com</a>, though when I speak here I&#8217;m speaking for myself only, not on behalf of my soon-to-be employer. And I&#8217;ll continue to hack a bit on <a href="http://heliosvoting.org">Helios</a>, my voting system, especially as it continues to inform how one might do advanced crypto in a web browser.</p>
<p>I&#8217;m super excited.</p>
]]></content:encoded>
			<wfw:commentRss>http://benlog.com/articles/2011/03/07/benadidamozilla/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>a personal update</title>
		<link>http://benlog.com/articles/2011/01/30/a-personal-update/</link>
		<comments>http://benlog.com/articles/2011/01/30/a-personal-update/#comments</comments>
		<pubDate>Mon, 31 Jan 2011 04:02:02 +0000</pubDate>
		<dc:creator>ben</dc:creator>
				<category><![CDATA[personal]]></category>

		<guid isPermaLink="false">http://benlog.com/?p=1514</guid>
		<description><![CDATA[Tomorrow (Jan 31st) is my last day on the Research Faculty at Harvard Medical School and Children&#8217;s Hospital Boston. It&#8217;s been a fantastic ride thanks entirely to the folks with whom I had the pleasure of working, in particular Zak Kohane and Ken Mandl. Ultimately, I finally noticed what was staring me in the face: [...]]]></description>
			<content:encoded><![CDATA[<p>Tomorrow (Jan 31st) is my last day on the Research Faculty at Harvard Medical School and Children&#8217;s Hospital Boston. It&#8217;s been a fantastic ride thanks entirely to the folks with whom I had the pleasure of working, in particular Zak Kohane and Ken Mandl. Ultimately, I finally noticed what was staring me in the face: I love building software systems, and the right place for me to do that now is industry. I&#8217;m no stranger to it, and I&#8217;m excited to be back.</p>
<p>I&#8217;m taking two weeks off. I won&#8217;t be blogging or tweeting (much). I&#8217;ll be digging into a very thoughtful gift just received (what timing!): the <a href="http://flourbakery.com/">Flour Bakery</a> recipe book. If you live in Boston and you haven&#8217;t been to Flour, you&#8217;re simply missing out (or you don&#8217;t like baked goods, which is just too sad to think about.) This week&#8217;s goal, currant scones. Should be at least interesting, maybe delicious.</p>
<p>As to what I&#8217;m doing next&#8230; that&#8217;s for a blog post to be written 2 weeks from now. I&#8217;ve had some fantastic discussions with amazing people these last few weeks, and there are a few more conversations to be had before the picture is truly filled in. See you on the flip side of a few days spent with family and friends.</p>
]]></content:encoded>
			<wfw:commentRss>http://benlog.com/articles/2011/01/30/a-personal-update/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>The Accidental Tinkerer, Unexpected Lock-in, and Fatherhood</title>
		<link>http://benlog.com/articles/2010/04/02/the-accidental-tinkerer-unexpected-lock-in-and-fatherhood/</link>
		<comments>http://benlog.com/articles/2010/04/02/the-accidental-tinkerer-unexpected-lock-in-and-fatherhood/#comments</comments>
		<pubDate>Fri, 02 Apr 2010 19:04:54 +0000</pubDate>
		<dc:creator>ben</dc:creator>
				<category><![CDATA[autonomy]]></category>
		<category><![CDATA[personal]]></category>
		<category><![CDATA[policy]]></category>

		<guid isPermaLink="false">http://benlog.com/?p=1136</guid>
		<description><![CDATA[Ben Fry recently explained his concerns about the iPad: I want to build software for this thing. I’m really excited about the idea of a touch-screen computing platform that’s available for general use from a known brand who has successfully marketed unfamiliar devices to a wide audience. [..] It represents an incredible opportunity, but I [...]]]></description>
			<content:encoded><![CDATA[<p>Ben Fry recently explained his <a href="">concerns about the iPad</a>:</p>
<blockquote><p>
I want to build software for this thing. I’m really excited about the idea of a touch-screen computing platform that’s available for general use from a known brand who has successfully marketed unfamiliar devices to a wide audience.<br />
[..]<br />
It represents an incredible opportunity, but I can’t get excited about it because of Apple’s attempt to control who creates for it, and what they can create for it. Their policy of being the sole distributor of applications, and even worse, requiring approval on all applications, is insulting to developers.<br />
[..]<br />
I find it offensive on a very basic level, because I know that if such restrictions were in place when I was first learning to write software — mostly on Apple machines, no less — I would not have a career in the field.
</p></blockquote>
<p>John Lilly <a href="http://john.jubjubs.net/2010/03/23/kit/">followed up brilliantly</a>:</p>
<blockquote><p>
In a nutshell, what worries me about the trajectory of computing is not so much the emergence of tightly-controlled, non-tinkerable boxes, but the presumption that “normal people” don’t ever want to tinker, don’t want to be bothered with understanding how things work. I think it’s not true, really — certainly not for everyone — but I even think that this distinction between “normal people” and “tinkerers” or “techies” or “makers” is bogus at best, and really dangerously corrosive at worst.<br />
[..]<br />
It’s not like I was born an engineer — the instinct to fiddle with things isn’t something we’re born with. I became a tinkerer because I was exposed to surfaces that allowed — that invited — it. I figured out that I liked tweaking and building and creating because I got a bunch of chances to do that stuff, from hardware to software and everything in between. I knew I could do it because Dad modeled that behavior, but also because the stuff we had around the house was inspectable and malleable.<br />
[..]<br />
We all have the potential inside us to make things. But we’re not born into the world as makers — the world around us — the people in it and the artifacts in it — help us to discover what we can be.
</p></blockquote>
<p>I don&#8217;t know that I agree 100% with John: not everyone is a tinkerer. But, for sure, we need &#8220;surfaces that invite tinkering,&#8221; otherwise those who would be tinkerers might never discover it.</p>
<p>I was a tinkerer from an early age, but most of my tinkering in the physical world sucked, because, well, I don&#8217;t have good instincts about physics or analog things: I&#8217;m a digital kind of guy. So my egg-drop competition entries were overly complicated, my solar ovens were a perfect fit for a raw diet, my matchstick suspension bridges were unsafe at any speed, and my analog-circuit-based room-alarm systems would go off at random times in the middle of the night, or not at all, but at least would consistently end up blowing out the LED indicator (what do you mean you can&#8217;t connect the power source straight to the LED?)</p>
<p>I might have given up on tinkering, were it not for software&#8230; that was something else.</p>
<p>When my father brought home our first computer, a <a href="http://en.wikipedia.org/wiki/Thomson_MO5">Thomson MO5</a>, I was hooked. I spent hours transcribing BASIC programs from the 3 magazines I could find on the topic (this was Paris, France, not exactly Silicon Valley.) My dad took me to the office so I could talk to some Thomson engineers and debug my floppy disk drive. Later came the TO7, and eventually the Apple IIGS, my first &#8220;major&#8221; Pascal program to help my mother schedule carpooling (and my first taste of how hard it is to write a scheduling algorithm), my second &#8220;major&#8221; Pascal program to manage the Prom guest list. I wrote my final Geography report using a page-layout program on the Apple IIGS that probably cost me hours of extra time because of its bugs and the work-arounds I had to find, and got a worse grade for it because &#8220;not everyone can afford such fancy software, so we took off a couple of points&#8221; (for those of you still confused, THAT is socialism.) Not long after that I was applying to MIT and tinkering with one of the first e-commerce web sites. I love what I do, but would I have discovered this love without those first few lines of BASIC on that MO5 computer, written without anyone&#8217;s permission or knowledge?</p>
<p>Over time, though, I have become a little bit complacent about openness. I own an iPhone, and I&#8217;ve bought a few apps. I bought music on iTunes, and figured the DRM was not so problematic. I got a Kindle and bought some books. And then one day Apple&#8217;s DRM server went down and I couldn&#8217;t play music for a few hours. And Amazon decided to recall the book &#8220;1984&#8243;. And Apple decided to retroactively remove a bunch of apps they considered &#8220;not useful enough.&#8221; So I started thinking, maybe it&#8217;s time to get a different phone.</p>
<p>But I can&#8217;t. See, in the interim, I got unexpectedly locked in. I sync my calendar via MobileMe. I sync my music/TV shows via iTunes. Moving to something like a Palm Pre is going to take a significant effort. So how much worse will it be if I get an iPad, get some apps, and Apple decides to change the rules in a way that I don&#8217;t like? How locked in will I be then?</p>
<p>This change is happening gradually. At no point are you going to be shocked by an unfortunate Apple decision. You&#8217;ll enjoy your iPad, you&#8217;ll buy more apps, you&#8217;ll enjoy it even more. Apple will make a few decisions that inconvenience you, but you&#8217;ll deal. Until one day you&#8217;re inconvenienced enough that you might begin to look elsewhere. But you won&#8217;t be able to, because your data will be locked in. 3 years ago, we didn&#8217;t even have 3rd-party apps on the iPhone. Today, we have more than 100,000, and they&#8217;re all rushing to the iPad at warp speed. Change is happening.</p>
<p>One last point. A few months ago, I became a father. My wonderful little boy has an incredible appetite for life. Will he be a tinkerer? I don&#8217;t know, but if I had to bet I&#8217;d say yes. Will I be able to do for him what my father did for me? What will he tinker with, if everything in the house is a polished, professional, touch-but-don&#8217;t-tinker device? If he is to be a maker, a tinkerer, will he be able to fully explore his ideas if the rules of his digital universe are decided by the whims of Apple, Facebook, and Google?</p>
<p>I&#8217;m not sure. Maybe he will find a way, the way that kids do. Or maybe we, the generation that is witnessing this change, need to make sure that the rules of computing do not become a permanent, universal, inescapable sandbox.</p>
]]></content:encoded>
			<wfw:commentRss>http://benlog.com/articles/2010/04/02/the-accidental-tinkerer-unexpected-lock-in-and-fatherhood/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>Owning Genes</title>
		<link>http://benlog.com/articles/2009/05/13/owning-genes/</link>
		<comments>http://benlog.com/articles/2009/05/13/owning-genes/#comments</comments>
		<pubDate>Wed, 13 May 2009 16:31:28 +0000</pubDate>
		<dc:creator>ben</dc:creator>
				<category><![CDATA[genomic]]></category>
		<category><![CDATA[personal]]></category>
		<category><![CDATA[policy]]></category>

		<guid isPermaLink="false">http://benlog.com/?p=550</guid>
		<description><![CDATA[At some point in the history of patents, something went a little nutty: it became possible to patent genes themselves. Not &#8220;a method for extracting&#8221; a gene. Not &#8220;a method for synthesizing&#8221; a gene. But the gene itself. As a result, a number of biotech companies own human genes. If you want to find out [...]]]></description>
			<content:encoded><![CDATA[<p>At some point in the history of patents, something went a little nutty: it became possible to patent genes themselves. Not &#8220;a method for extracting&#8221; a gene. Not &#8220;a method for synthesizing&#8221; a gene. But the gene itself. As a result, a number of biotech companies own human genes. If you want to find out if you have a dangerous mutation that predisposes you to breast cancer, no matter which lab you choose, no matter which technology they use to test you, they have to pay a royalty fee to the gene patent holder.</p>
<p>One can have a number of arguments as to whether this is an efficient way to do research. Hint, it&#8217;s not, it&#8217;s terrible, it makes research fantastically expensive and slow. But I&#8217;m actually less concerned about that than I am about the principle: how is it okay for a naturally occurring substance that is <b>part of me</b> to be controlled by someone else? It&#8217;s ludicrous, and it violates a basic sense of personal freedom. Might a patent holder eventually have the right to charge me because my body is naturally producing a beneficial chemical derived from &#8220;their&#8221; gene?</p>
<p>So the ACLU is <a href="http://www.cnn.com/2009/HEALTH/05/12/us.genes.lawsuit/index.html">taking on this fight</a>, and I commend them for it. This is a big deal. And the opposition to their action is going to be fierce, because the short-term financial interests in gene patenting are enormous. But this is the fight that matters for personal genomic freedom, efficient biomedical research, and generally finding a sane balance between necessary commercial incentives and basic freedoms. Patent a novel genome sequencing technique? Yes, by all means. Patent a gene itself so that no matter what other sequencing technique is invented, it can&#8217;t be used to sequence the &#8220;owned&#8221; gene? Insane, and wrong.</p>
]]></content:encoded>
			<wfw:commentRss>http://benlog.com/articles/2009/05/13/owning-genes/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Does CVS provide a CSV?</title>
		<link>http://benlog.com/articles/2009/04/07/does-cvs-provide-a-csv/</link>
		<comments>http://benlog.com/articles/2009/04/07/does-cvs-provide-a-csv/#comments</comments>
		<pubDate>Tue, 07 Apr 2009 19:11:34 +0000</pubDate>
		<dc:creator>ben</dc:creator>
				<category><![CDATA[health]]></category>
		<category><![CDATA[personal]]></category>
		<category><![CDATA[policy]]></category>

		<guid isPermaLink="false">http://benlog.com/?p=490</guid>
		<description><![CDATA[Over the last two years, I&#8217;ve spent most of my time on&#8230; not elections believe it or not, but rather the personal control of health data over at Children&#8217;s Hospital, Boston, with a fantastic crew. And so now it turns out that health data is super cool, what with the Obama recovery plan and the [...]]]></description>
			<content:encoded><![CDATA[<p>Over the last two years, I&#8217;ve spent most of my time on&#8230; not elections believe it or not, but rather the personal control of health data over at <a href="http://childrenshospital.org">Children&#8217;s Hospital, Boston</a>, with a <a href="http://chip.org">fantastic crew</a>. And so now it turns out that health data is super cool, what with the Obama recovery plan and the significant funding towards NIH / electronic medical records. I didn&#8217;t see it coming, but I can&#8217;t say I&#8217;m unhappy, of course.</p>
<p>Over at CHIP (Children&#8217;s Hospital Informatics Program), we&#8217;re a bunch of folks who feverishly believe that Personally Controlled Health Records (PCHRs), records <em>you</em> get to share, protect, augment as you see fit, are going to be the IT platform of a new, more efficient health care system. You don&#8217;t have to believe me, you can just ask <a href="http://innovatorsprescription.com/">Clayton Christensen</a>, the Harvard Business School professor who wrote the book(s) on disruptive technology. And Microsoft HealthVault and Google Health certainly seem to agree with that concept. My group&#8217;s project, <a href="http://indivohealth.org">Indivo</a>, was the original PCHR that inspired the Google and Microsoft efforts (long before I arrived on the scene, so I take no credit.)</p>
<p>Recently, Google Health announced a deal where you can get your CVS pharmacy data into Google Health. That&#8217;s great&#8230; but can I get the data without involving Google Health if I want to? In other words, will CVS offer me a CSV (comma-separated values) file of my data so I can put it in my own spreadsheet or upload it to a competing PCHR?</p>
<p>I don&#8217;t know for sure, but from their web site it looks like they do not support that machine-readable data export. In other words, it&#8217;s your data, as long as you use Google Health. (Oh sure, you can export from Google Health, but what if you don&#8217;t like Google&#8217;s privacy policy?)</p>
<p>Adam Bosworth recently wrote about <a href="http://adambosworth.net/2009/03/31/data-liquidity-or-how-we-can-use-arras-19-billion-wisely/">data liquidity in health records</a>, and he&#8217;s right on. Data liquidity means that we <em>stop with these one-off integrations</em>, and <em>start building common APIs and open data formats</em>. Only then will we gain the efficiencies we seek from letting individuals truly control their personal health record.</p>
]]></content:encoded>
			<wfw:commentRss>http://benlog.com/articles/2009/04/07/does-cvs-provide-a-csv/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Don&#8217;t Hash Secrets</title>
		<link>http://benlog.com/articles/2008/06/19/dont-hash-secrets/</link>
		<comments>http://benlog.com/articles/2008/06/19/dont-hash-secrets/#comments</comments>
		<pubDate>Fri, 20 Jun 2008 01:34:16 +0000</pubDate>
		<dc:creator>ben</dc:creator>
				<category><![CDATA[crypto]]></category>
		<category><![CDATA[identity]]></category>
		<category><![CDATA[personal]]></category>
		<category><![CDATA[security]]></category>
		<category><![CDATA[web]]></category>

		<guid isPermaLink="false">http://benlog.com/?p=168</guid>
		<description><![CDATA[Building secure systems is difficult. It would be nice if we had a bunch of well-designed crypto building blocks that we could assemble in all sorts of ways and be certain that they would, no matter what, yield a secure system overall. There are, in fact, folks working on such things at a theoretical level [...]]]></description>
			<content:encoded><![CDATA[<p>Building secure systems is difficult. It would be nice if we had a bunch of well-designed crypto building blocks that we could assemble in all sorts of ways and be certain that they would, no matter what, yield a secure system overall. There are, in fact, folks working on such things at a theoretical level [<a href="http://en.wikipedia.org/wiki/Universal_composability">Universal Composability</a>].</p>
<p>But even if you had these building blocks, you would still have to use them in their intended way. A component can only be secure <em>under certain well-defined circumstances</em>, not for <em>any</em> use that happens to look similar.</p>
<p>One area of secure protocol development that seems to consistently yield poor design choices is the use of hash functions. What I&#8217;m going to say is not 100% correct, but it is on the conservative side of correct, so if you follow the rule, you (probably) can&#8217;t go wrong. You might be considered overly paranoid, but as they say, just because you&#8217;re paranoid doesn&#8217;t mean they&#8217;re not after you.</p>
<p>So here it is: Don&#8217;t hash secrets. Never. No, sorry, I know you think your case is special but it&#8217;s not. No. Stop it. Just don&#8217;t do it. You&#8217;re making the cryptographers cry.</p>
<p>What the heck am I talking about, you say? I&#8217;ll explain. But before we get lost in the details, just remember. Don&#8217;t hash secrets. Ever. Kapish?</p>
<h4>What exactly do you mean by &#8220;Hash&#8221;?</h4>
<p>A hash function takes any document, big or small, and creates a short fingerprint. That gigabyte movie of your newborn baby? Hash it with SHA1, and you&#8217;ve got yourself a 160 bit (~30 alphanumeric characters) fingerprint. Now, hold on, you say, 30 characters? You&#8217;ve hashed my baby to pieces and all that&#8217;s left is a measly 30 characters? No, no, don&#8217;t worry, your baby is still a unique snowflake. You can&#8217;t take those 30 characters and, from them, recover your gigabyte video. This is not uber-data-compression.</p>
<p>But it&#8217;s going to be darn hard for you to find any other document, big or small, that hashes to the same 30 characters. In fact, it&#8217;s so hard, even the most powerful computer in the world dedicated to this one task for hundreds of years won&#8217;t succeed at finding that doppelganger document. You&#8217;ve got lots of computers you say? You&#8217;re Google and you have hundreds of thousands of computers? Yeah, well&#8230;. tough. You still won&#8217;t succeed.</p>
<p>In fact, you can try something that should be easier: rather than find another document that hashes specifically to those 30 characters that represent your baby, you can go looking for <em>any two</em> documents that happen to hash to the same thing (collide). And you won&#8217;t find any such pair. Promised. We call that &#8220;collision resistance&#8221;. That thing about how you can&#8217;t find another document that hashes to the same value as your baby video? We call that &#8220;second pre-image resistance.&#8221;</p>
<p>Oh, and I forgot to mention that this magical function, SHA1, is public. Anyone can see the code. There are no secrets. Even if you see the code, you can&#8217;t find a collision. No, really, I&#8217;m not screwing with you.</p>
<h4>I want to hash <u>everything</u>!</h4>
<p>That&#8217;s usually the reaction after discovering the amazing power of hash functions. There are all sorts of nails just waiting for this magical hammer, so let&#8217;s start hashing everything in sight. De-duplicating large documents? Hash and compare! Passwords in a database? Hash and store! Anonymizing names in a database? Hash and pseudonymize!</p>
<p>After all, the magical power of a hash function is that you can&#8217;t &#8220;go back,&#8221; right? Given a hash, it&#8217;s impossible to get that pre-image, so hash away, my magical crypto friends!</p>
<h4>Wrong.</h4>
<p>Yeah, so it&#8217;s not quite that magical.</p>
<p>Let&#8217;s say I give you a SHA1 hash value <tt>29b0d7c86b88565b78efffeea634cee81a209c92</tt>. From that hash alone, you can&#8217;t tell what I hashed. But if I tell you that I hashed a password, then all you need to do is try a bunch of common passwords and see which one matches. In this case, I hashed &#8220;love&#8221;, one of the most common passwords there is.</p>
<p>Now you start to see how this &#8220;you can&#8217;t go back&#8221; reasoning fails: if you know the domain of possible pre-images, and that domain is not too large, then you can just try them all and see which one matches. That&#8217;s a big strike against the &#8220;hash everything&#8221; approach.</p>
<h4>Sprinkle in some Salt</h4>
<p>It gets more interesting with the complete password use-case. Many web developers already know that they shouldn&#8217;t store user passwords in the clear in the database, just in case a break-in reveals every user&#8217;s password. So, instead of storing passwords in the clear, let&#8217;s store a SHA1 hash of the password, against which a candidate password can be easily checked: hash it and compare.</p>
<p>Now the web developers who have been around the block a few times know that, if you just apply SHA1 blindly, you&#8217;ve got the &#8220;small domain&#8221; problem I just mentioned. An attacker can build up a huge dictionary of hashed passwords just once, and, when he breaks into your web site, check the hashes against this pre-built dictionary.</p>
<p>To prevent these &#8220;dictionary attacks&#8221;, we add salt to the hashing process, so that each user&#8217;s password is hashed differently, and generic attacks don&#8217;t work: you have to rebuild the dictionary for <em>each</em> user you choose to attack. Sprinkling in salt is easy: just concatenate the password with a random string:</p>
<pre>
SHA1("TheAnswerIs42" || "love") = ce75a1c90ed564a231de85d93520f1e47726df64
</pre>
<p>Then, when a user types in a password, e.g. &#8220;lvoe&#8221; (a typo), the system checks:</p>
<pre>
SHA1("TheAnswerIs42" || "lvoe") = f832b210d62251c19a374a175bff760935c540d4
                               != ce75a1c90ed564a231de85d93520f1e47726df64
</pre>
<p>and sure enough, that doesn&#8217;t match, so the password is rejected.</p>
<p>Of course, the system has to keep the salt &#8220;TheAnswerIs42&#8243; around to check the password, otherwise, it can&#8217;t re-perform the hash. So, if an attacker breaks in, he&#8217;ll find the salts, of course. This means that salting won&#8217;t protect a user with a weak password. But it will provide better protection for users with reasonable passwords, since, even with the salt in hand, the attacker will have to re-compute the dictionary for each salt, and thus each user.</p>
<p>So the moral of the story is that hashing the secret password directly is a bad idea.</p>
<p>And this is typically where most developers stand. They understand that hashing is good, they vaguely understand the notion of salting, and they figure that salt+hash is all they need to know. Except it&#8217;s not.</p>
<h4>When hashing is really a signature</h4>
<p>One interesting application of hash functions that has spread like wildfire in the last few years is in the realm of cheap signatures. Consider an application, <b>SuperAnnoyingPoke</b> that wants to send an authenticated message to <b>MyFace</b>. It could apply a full digital signature, using say RSA, so that MyFace can be sure that the message really came from SuperAnnoyingPoke. But that actually takes milliseconds on an average computer, and milliseconds are a lot. Plus, there&#8217;s all sorts of weird padding issues and size limitations that might require hybrid encryption, so it&#8217;s messy.</p>
<p>But hey, let&#8217;s take out our trusty cryptographic Swiss Army Knife, the hash function! Let&#8217;s salt+hash! We&#8217;ll just make sure that SuperAnnoyingPoke and MyFace share a secret string that&#8217;s a good 20 characters long or so, and when SuperAnnoyingPoke wants to send a message to MyFace, it will also send along a &#8220;Message Authentication Code&#8221; (MAC) that is computed as:</p>
<pre>
MAC = SHA1(secret_string || message)
</pre>
<p>MyFace can easily look at the message that is sent, recompute the MAC given the secret string it shares with SuperAnnoyingPoke, and compare it to the MAC sent along with the message. Heck, you can even put a timestamp in there to make sure the message can&#8217;t be re-played by an attacker at a later date. After all, since the hash function makes it hard to &#8220;go back&#8221; when you&#8217;re using a salt (the secret string), this should be a secure and cheap way to sign messages! Super!</p>
<p>Except this is where things really fall apart.</p>
<p>The security property we want here is that, if the attacker sees a message and its corresponding MAC, then it should not be able to figure out the MAC for a different message. That&#8217;s the whole point of a signature. And, unfortunately, there&#8217;s a property of SHA1 and lots of other hash functions like it that make it a fast hash function, but a terrible way to compute a MAC.</p>
<p>Here&#8217;s the deal: if I tell you that <tt>SHA1(foo)</tt> is X, then it turns out, in a lot of cases, to be quite easy for you to determine what <tt>SHA1(foo || bar)</tt> is. You don&#8217;t need to know what <tt>foo</tt> is. It&#8217;s just that, because SHA1 is iterative and works block by block, if you know the hash of <tt>foo</tt>, then you can <em>extend</em> the computation to determine the hash of <tt>foo || bar</tt>.</p>
<p>Oh crap.</p>
<p>That means that if you know <tt>SHA1(secret || message)</tt>, then you can compute <tt>SHA1(secret || message || ANYTHING)</tt>, which is a valid signature for <tt>message || ANYTHING</tt>. So to break this system, you just need to see one signature from SuperAnnoyingPoke, and then you can impersonate SuperAnnoyingPoke for lots of other messages.</p>
<p>Why? How??? But&#8230;. I thought hash functions didn&#8217;t let me &#8220;go back!&#8221; Well, note how I didn&#8217;t say the attacker would recover the secret. It&#8217;s just that, given one hash, they can compute others for related pre-images. That&#8217;s why you have to be careful about using hash functions when you&#8217;re hashing secrets. Another strike against using hash functions willy-nilly.</p>
<p>(If you&#8217;re keeping up, your next suggestion is &#8220;well, put the secret AFTER the message, not before&#8221;. And yeah, that&#8217;s a reasonable suggestion, but it points out how you&#8217;re now assuming some extra properties of the SHA1 hash function in your design, and that&#8217;s bad. What if you upgrade to a different hash function in 5 years, do you then have to update your protocol to match? The point is that you shouldn&#8217;t be using a hash function for this, that&#8217;s not its purpose!)</p>
<h4>HMAC</h4>
<p>What you should be using is HMAC: Hash-function Message Authentication Code. You don&#8217;t need to know exactly how it works, just like you don&#8217;t need to know exactly how SHA1 works. You just need to know that HMAC is <em>specifically built</em> for message authentication codes and the use case of SuperAnnoyingPoke/MyFace. Under the hood, what&#8217;s approximately going on is two hashes, one after the other, with the secret combined after the first hash&#8230; but don&#8217;t worry about it! That&#8217;s the whole point! HMAC is built for this feature.</p>
<p>HMAC has two inputs and one output: in go a message, and a secret, and out comes a message authentication code (i.e. a signature). The security of HMAC is such that, you can see as many messages and corresponding signatures as your heart desires, and you <em>still</em> won&#8217;t be able to determine the signature on a message you haven&#8217;t seen yet. That&#8217;s the security property you&#8217;re looking for. And HMAC is built on top of a hash function, so more specifically you should be using HMAC-SHA1.</p>
<p>So, again, don&#8217;t hash secrets. HMAC them.</p>
<h4>In Conclusion</h4>
<p>There&#8217;s plenty more to read if you&#8217;re interested in this topic, but chances are, you&#8217;re not and you just want a recommendation. &#8220;Don&#8217;t Hash Secrets&#8221; is not <em>always</em> entirely necessary. In the password example, you <em>can</em> hash a password as long as you salt it correctly. But do you really want to have to worry about that? I don&#8217;t. In fact, I use HMAC for my password databases, too. It&#8217;s overkill, but it lets me use a standard library that likely makes me safer in the long run.</p>
<p>So the next time you&#8217;re using a hash function on <em>anything</em>, ask yourself: is any of the stuff I&#8217;m hashing supposed to stay secret? If so, don&#8217;t hash. Instead, use HMAC.</p>
]]></content:encoded>
			<wfw:commentRss>http://benlog.com/articles/2008/06/19/dont-hash-secrets/feed/</wfw:commentRss>
		<slash:comments>24</slash:comments>
		</item>
	</channel>
</rss>

