tag:blogger.com,1999:blog-13546596326075998542024-03-14T06:11:46.629+00:00Luke W. FaraoneLuke Faraonehttp://www.blogger.com/profile/11679092740238566479noreply@blogger.comBlogger27125tag:blogger.com,1999:blog-1354659632607599854.post-15412192284743787212016-07-30T16:56:00.000+00:002016-07-30T16:56:43.704+00:00Snappy Sprint HeidelbergI recently attended Snappy Sprint Heidelberg, the first <a href="http://snapcraft.io/">Snappy</a> sprint focused on upstream and cross-distribution collaboration.<br />
<br />
Snappy is a technology with an interesting history: initially started to provide App Store-like semantics (atomicity, declarative security) for the Ubuntu Phone project, it has since expanded to be a platform for desktop application deployment (e.g. <a href="https://uappexplorer.com/app/vlc.videolan">VLC</a>), as well as server applications and the <a href="https://developer.ubuntu.com/en/snappy/">IoT space</a>.<br />
<br />
There were a number of productive discussions with people working on Snappy itself, as well as folks from <a href="https://lists.fedoraproject.org/archives/list/devel@lists.fedoraproject.org/thread/IMI5TP2K6A6R7PSIOUBLOE62ENIZDXOA/">Fedora</a>, <a href="http://blog.elementary.io/post/148100271141/were-back-from-the-snappy-sprint">elementary OS</a>, <a href="https://marc.info/?l=kde-core-devel&m=146953137314992&w=2">KDE</a>, and elsewhere.<br />
<br />
At the start of the week, Snappy was <i>technically usable</i> in several different distributions, but only shipped fully-featured<i> </i>(in the main distribution repositories, with confinement, etc) in Ubuntu. Some great progress was made on <a href="http://blog.yaps.it/2016/07/using-snap-with-confinement-on-arch.html">AppArmor confinement in Arch Linux</a>, and there is currently beta support for confinement via SELinux.<br />
<br />
Providing a full-featured Snappy experience in Debian has its challenges, mostly relating to the lack of a default LSM. While <a href="https://wiki.debian.org/AppArmor">AppArmor in Debian</a> is supported and there's desire to <a href="https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=830501">have it be the default in "buster"</a>, Ubuntu carries a number of patches that add additional functionality not yet present upstream. I'm not sure whether pursuing getting those patches merged is more viable than waiting for SELinux support in snapd, however.<br />
<br />
I've agreed to co-maintain the <a href="https://tracker.debian.org/pkg/snapd"><span style="font-family: Courier New, Courier, monospace;">snapd</span></a> package in Debian, and am excited to see intentions to support <a href="https://bugs.launchpad.net/snapcraft/+bug/1602258">building snaps on a variety of distribution bases</a>. While I do not expect Snappy (or <a href="http://flatpak.org/">Flatpak</a>, or <a href="http://appimage.org/">AppImage</a>) to replace distribution-maintained software in the foreseeable future, nor do I feel that's a desirable outcome, I do think offering users freedom to choose to use software via these systems in a safe manner is critical.Luke Faraonehttp://www.blogger.com/profile/11679092740238566479noreply@blogger.com0tag:blogger.com,1999:blog-1354659632607599854.post-35459263441186530192015-03-28T19:55:00.000+00:002015-03-28T19:55:22.425+00:00Key transitionI'm migrating PGP keys from 0xF9FDD506 to 0x0C14A470. If you signed my old key, I would appreciate you signing my new key as well. Feel free to ping me with questions.<br /><div>
<br /></div>
<div>
Accordingly, I've published a <a href="https://luke.wf/pgp-transition-2015.txt">transition statement</a> signed by both keys.</div>
Luke Faraonehttp://www.blogger.com/profile/11679092740238566479noreply@blogger.comtag:blogger.com,1999:blog-1354659632607599854.post-18312165197230100022014-04-01T07:00:00.000+00:002015-03-28T19:52:32.929+00:00Now at Dropbox!Dropbox has acquired Zulip, the business instant messaging startup I've worked at since August 2012. Its been a great ride the past one and a half years — I definitely have loved working with this amazing team. We're incredibly excited about working with an awesome group of people on a problem with huge scale, at a company that's as passionate as we are about helping people work together efficiently.<br />
<div>
<br /></div>
<div>
Here's looking forward to the future at Dropbox!</div>
Luke Faraonehttp://www.blogger.com/profile/11679092740238566479noreply@blogger.com0tag:blogger.com,1999:blog-1354659632607599854.post-38442303990354093272014-01-02T05:25:00.000+00:002014-01-02T05:25:01.868+00:00Unstandardized standards are the worst: sendmailImplementing software to replace legacy systems is always a challenge, especially when you're dealing with a system with as much legacy as <tt>sendmail</tt>, which was first introduced as <tt>delivermail</tt> in 1979.<sup><a href="http://www.redhat.com/support/resources/howto/RH-sendmail-HOWTO/x29.html">ref</a></sup><br />
<br />
Each UNIX vendor, it seems, rewrote or heavily customized <tt>sendmail</tt>. This has lead to sometimes conflicting implementations.<br />
<h2>
Case in point: <tt>-t</tt></h2>
Normally, you invoke <tt><a href="http://www.freebsd.org/cgi/man.cgi?query=sendmail&sektion=8">sendmail(8)</a></tt> with a series of arguments indicating the subject of a message, the recipients, etc. When invoked this way, the command expects a message on standard input, waits for EOF, and then sends your message along.<br />
<br />
However, sometimes you don't want to have to fiddle with command-line parameters; you've already written a perfectly fine message with headers. <br />
<br />
<tt>-t</tt> is generally passed to <tt>sendmail</tt> when you want to build a message envelope from an already-formatted message, with headers, etc. For example, if you had a file <tt>foo.txt</tt> with a body like this:<br />
<pre style="margin-left: 1em;">From: Luke Faraone <lfaraone example.org="">
To: John Smith <jsmith example.net="">
Subject: Hello, world!
Hi there.</jsmith></lfaraone></pre>
<br />
you could send the message with a simple invocation of <tt>cat foo.txt | sendmail -t</tt>. The system would take care of ensuring a <tt>Message-id</tt> was appended if appropriate, and queue the message to be sent. However, it is when you do slightly more complex invocations of <tt>sendmail</tt> that things get ambiguous.<br />
<br />
It turns out that implementations differ on what exactly it means when you use <tt>-t</tt> in combination with naming destination addresses after the arguments to <tt>sendmail</tt>. <a href="http://www.exim.org/exim-html-current/doc/html/spec_html/ch-main_configuration.html">exim4's documentation describes the situation in greater detail</a>:<br />
<div style="margin-left: 1em;">
<table style="background-color: white; border: 0px; color: black; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12px; line-height: 18.375px; margin: 1em 0px; padding: 0px; vertical-align: baseline;"><tbody style="border: 0px; font-family: inherit; font-style: inherit; font-weight: inherit; margin: 0px; padding: 0px; vertical-align: baseline;">
<tr style="border: 0px; font-family: inherit; font-style: inherit; font-weight: inherit; margin: 0px; padding: 0px; vertical-align: baseline;"><td style="background-color: #eaeaea; border: thin solid white; font-family: inherit; font-size: 10px; font-style: inherit; font-weight: inherit; margin: 0px; padding: 0px 1em; vertical-align: baseline;"><span class="docbook_option" style="border: 0px; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: bold; margin: 0px; padding: 0px; vertical-align: baseline;">extract_addresses_remove_ arguments</span></td><td style="background-color: #eaeaea; border: thin solid white; font-family: inherit; font-size: 10px; font-style: inherit; font-weight: inherit; margin: 0px; padding: 0px 1em; vertical-align: baseline;">Use: <span class="docbook_emphasis" style="border: 0px; font-family: inherit; font-size: 12px; font-style: italic; font-weight: inherit; margin: 0px; padding: 0px; vertical-align: baseline;">main</span></td><td style="background-color: #eaeaea; border: thin solid white; font-family: inherit; font-size: 10px; font-style: inherit; font-weight: inherit; margin: 0px; padding: 0px 1em; vertical-align: baseline;">Type: <span class="docbook_emphasis" style="border: 0px; font-family: inherit; font-size: 12px; font-style: italic; font-weight: inherit; margin: 0px; padding: 0px; vertical-align: baseline;">boolean</span></td><td style="background-color: #eaeaea; border: thin solid white; font-family: inherit; font-size: 10px; font-style: inherit; font-weight: inherit; margin: 0px; padding: 0px 1em; vertical-align: baseline;">Default: <span class="docbook_emphasis" style="border: 0px; font-family: inherit; font-size: 12px; font-style: italic; font-weight: inherit; margin: 0px; padding: 0px; vertical-align: baseline;">true</span></td></tr>
</tbody></table>
<span style="background-color: white; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12px; line-height: 18.375px;">According to some Sendmail documentation (Sun, IRIX, HP-UX), if any addresses are present on the command line when the </span><span class="docbook_option" style="background-color: white; border: 0px; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12px; font-style: inherit; font-weight: bold; line-height: 18.375px; margin: 0px; padding: 0px; vertical-align: baseline;">-t</span><span style="background-color: white; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12px; line-height: 18.375px;"> option is used to build an envelope from a message’s </span><span class="docbook_emphasis" style="background-color: white; border: 0px; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12px; font-style: italic; font-weight: inherit; line-height: 18.375px; margin: 0px; padding: 0px; vertical-align: baseline;">To:</span><span style="background-color: white; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12px; line-height: 18.375px;">, </span><span class="docbook_emphasis" style="background-color: white; border: 0px; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12px; font-style: italic; font-weight: inherit; line-height: 18.375px; margin: 0px; padding: 0px; vertical-align: baseline;">Cc:</span><span style="background-color: white; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12px; line-height: 18.375px;"> and </span><span class="docbook_emphasis" style="background-color: white; border: 0px; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12px; font-style: italic; font-weight: inherit; line-height: 18.375px; margin: 0px; padding: 0px; vertical-align: baseline;">Bcc:</span><span style="background-color: white; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12px; line-height: 18.375px;"> headers, the command line addresses are removed from the recipients list. This is also how Smail behaves. However, other Sendmail documentation (the O’Reilly book) states that command line addresses are added to those obtained from the header lines. When </span><span class="docbook_option" style="background-color: white; border: 0px; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12px; font-style: inherit; font-weight: bold; line-height: 18.375px; margin: 0px; padding: 0px; vertical-align: baseline;">extract_addresses_remove_arguments</span><span style="background-color: white; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12px; line-height: 18.375px;"> is true (the default), Exim subtracts argument headers. If it is set false, Exim adds rather than removes argument addresses.</span></div>
<br />
Thus, there's basically no mechanism for a program to know which behaviour to expect. God forbid two programs are installed on a system that expect different behaviours! <br />
<br />
It appears that the default behaviour of Ruby is the opposite of what <tt>exim4</tt> (Debian's default mail client) expects. This has resulted in <a href="https://github.com/mikel/mail/issues/70">numerous</a> <a href="https://github.com/gitlabhq/gitlabhq/issues/4866">bug</a> <a href="http://stackoverflow.com/questions/7457871/rails-3-actionmailer-no-recipent-address">reports</a>. Some replies suggest changing <span style="font-family: monospace;">exim4</span>'s defaults, while others advocate overriding ActionMailer and friends to use <span style="font-family: monospace;">sendmail -i</span> instead, without <span style="font-family: monospace;">-t</span>.<br />
<br />
That said, its not really clear who's wrong here; at no point does there appear to have been a definitive specification for <span style="font-family: monospace;">sendmail</span>, and as such we can hope for defined behaviour by common custom at best, and a sea of incompatibility bugs at worst. Amusingly, <a href="http://www.opengroup.org/austin/">POSIX standards</a> have nothing to say on this subject of <span style="font-family: monospace;">sendmail</span> at all; it <a href="http://pubs.opengroup.org/onlinepubs/9699919799/utilities/mailx.html">defines</a> that a <span style="font-family: monospace;">mailx</span> command must exist, but says that its sending mode may be implementation-specific.<br />
<br />
As <a href="http://mjg59.dreamwidth.org/8705.html">Matthew Garrett writes</a>, there's not enough gin in the world.Luke Faraonehttp://www.blogger.com/profile/11679092740238566479noreply@blogger.com1tag:blogger.com,1999:blog-1354659632607599854.post-85190309979014664102013-11-10T00:23:00.000+00:002013-11-10T00:26:43.030+00:00Why I use my bank's mobile site on my desktop(or, cutting out bloat by using a platform where bloat won't fly)<br />
<br />
Let me start off by saying I'm generally a huge fan of my bank, <a href="https://www.usaa.com/">USAA</a>. Their offerings are free of hidden fees, their phone support excellent, and the perks they provide are competitive. They don't have the best savings interest rates, but <a href="http://www.forbes.com/sites/moneybuilder/2013/01/11/online-banks-offer-best-savings-account-rates-for-2013/">you can always find a better deal online</a> to park money not actively in your checking account.<br />
<br />
However, USAA's website is a behemoth. My account page took about 8 seconds to fully load, downloading 1.4MiB of content.<br />
<br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh0N9dWLX0ZjOxPA9woVvcP4VB8-bQN3NlWhikRI_ZICoL4PJixZuwode7wu4klwRlgtbyvaKujj3V49Dy-Wda_4U0Kfi8LUkJTtD6geaVQkICvrKFgLuK_AJiy8cbJ5b8j2psH9dAa2hod/s1600/Selection_007.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="283" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh0N9dWLX0ZjOxPA9woVvcP4VB8-bQN3NlWhikRI_ZICoL4PJixZuwode7wu4klwRlgtbyvaKujj3V49Dy-Wda_4U0Kfi8LUkJTtD6geaVQkICvrKFgLuK_AJiy8cbJ5b8j2psH9dAa2hod/s320/Selection_007.png" width="320" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">The "My Accounts" page you're redirected to after logging in.</td></tr>
</tbody></table>
It is frequently buggy; whenever I log in via Google Chrome on Ubuntu 12.04 I land on a page with a URL beginning with "<a href="https://www.usaa.com/inet/gas_bank/AccountBannerAjax">https://www.usaa.com/inet/gas_bank/AccountBannerAjax</a>" and a bunch of GET parameters like "<span style="font-family: Courier New, Courier, monospace; font-size: x-small;">currentaccountkey</span>" and "<span style="font-family: Courier New, Courier, monospace; font-size: x-small;">accnumber</span>" with values like "<span style="font-family: Courier New, Courier, monospace; font-size: x-small;">encrypted12a1f4dd1[…]</span>". The server returns a 200 OK, promises a <span style="font-family: Courier New, Courier, monospace; font-size: x-small;">Content-Length</span> of 20, but then actually returns zero bytes. After navigating to the homepage and clicking a button, I end up getting logged in, but I wonder what percentage of their userbase are experiencing this problem?<br />
<div>
<br /></div>
<div>
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjIeCHcvwKuvEzALQ1hHRlTjtSFX8RxI_S3uAYoEhfDRZc_sK2UaM8uvCkWm4S2dwKzGex20dMwV_QpdW6czsKzMhN-TtX9zTTSQQW9hY-wdFFJ5e3uZMMQpgQvCAWhrx8gn8NgUpth2oZb/s1600/Security+Warning_008.png" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"><img border="0" height="140" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjIeCHcvwKuvEzALQ1hHRlTjtSFX8RxI_S3uAYoEhfDRZc_sK2UaM8uvCkWm4S2dwKzGex20dMwV_QpdW6czsKzMhN-TtX9zTTSQQW9hY-wdFFJ5e3uZMMQpgQvCAWhrx8gn8NgUpth2oZb/s200/Security+Warning_008.png" width="200" /></a>For some strange reason, I get a lot of checks. It appears that nobody else informed the banking system that it's 2013, and the easiest mechanism for people to send money without paying fees is still on paper. To its credit, USAA made <a href="https://en.wikipedia.org/wiki/Remote_deposit">remote deposit</a> of checks available to all customers in 2006, when it was mostly an offering <a href="http://www.finextra.com/News/Announcement.aspx?pressreleaseid=11632">limited</a> <a href="http://www.bizjournals.com/eastbay/stories/2005/06/06/story1.html?page=all">to</a> <a href="http://www.sddt.com/News/article.cfm?SourceCode=20070130crc">businesses</a>. However, it seems like they haven't updated their web workflow since then. </div>
<div>
<br />
<br /></div>
<div>
Using it on the web still requires using a signed Java applet (itself <a href="https://www.cert.org/blogs/certcc/2013/04/dont_sign_that_applet.html">discouraged</a> by CMU's CERT) that does the incredibly complex task of… letting you select a file from your computer and upload it to their servers. At least, that's what I think it does, because any time I chose "Run", my browser complained a few minutes later that the tab had stopped responding. Regardless of functionality, you can accomplish almost anything their site could currently be doing with HTML5 and <a href="http://www.aviary.com/web/documentation">a third party service</a> if they want to crop images locally.<br />
<br />
<table cellpadding="0" cellspacing="0" class="tr-caption-container" style="float: left; margin-right: 1em; text-align: left;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhJ9aKIqJpLzTr8-hHl0o2V9MsiFMhHt41Dtr7O4xhJXp8ohb0ESZB4kklTR0qWI0hHQ5KJ7Y520UylOG4jpLjIBpniojwfIiX9B71RIXrsFjHlgeCRHjT82tL1tQuS4UoUWD4iODlZs_k5/s1600/QvBX2zg.png" imageanchor="1" style="clear: left; margin-bottom: 1em; margin-left: auto; margin-right: auto;"><img border="0" height="200" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhJ9aKIqJpLzTr8-hHl0o2V9MsiFMhHt41Dtr7O4xhJXp8ohb0ESZB4kklTR0qWI0hHQ5KJ7Y520UylOG4jpLjIBpniojwfIiX9B71RIXrsFjHlgeCRHjT82tL1tQuS4UoUWD4iODlZs_k5/s200/QvBX2zg.png" width="111" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Spinning after logging<br />
in on Android</td></tr>
</tbody></table>
USAA's mobile app for Android has another host of problems; I haven't been able to log into it for 2 weeks, and when I chatted with someone today I was told they were "doing some maintenance this weekend", so I should try again in a few hours once that's finished.<br />
<br />
I googled around a bit for some way to perhaps make the applet work in Ubuntu (which admittedly is not a <i>supported platform</i>), and came upon a <a href="https://www.facebook.com/USAA/posts/10151478825159664">Facebook thread</a> where a rep suggested using the mobile web site.<br />
<br />
<table cellpadding="0" cellspacing="0" class="tr-caption-container" style="clear: right; float: right; margin-bottom: 1em; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgBRHPKHyykWmUkD-L0mc13k3yt24EFriSziOlgDEul1sP3K2tuRe5S8I-MTvgQv4Riugo3OrT-NMJCEBby4h1GQOOszBiiTfjVW63EphQrJewI0YVa35Je8pQzpqx147uBOufpf7sxtbDO/s1600/Selection_009.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="166" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgBRHPKHyykWmUkD-L0mc13k3yt24EFriSziOlgDEul1sP3K2tuRe5S8I-MTvgQv4Riugo3OrT-NMJCEBby4h1GQOOszBiiTfjVW63EphQrJewI0YVa35Je8pQzpqx147uBOufpf7sxtbDO/s200/Selection_009.png" width="200" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">A breath of fresh air</td></tr>
</tbody></table>
I loaded it in my browser, and was amazed at how well it functioned. Obviously designed for higher-end devices (It didn't even load in one WAP emulator I tried), the mobile web interface was a refreshing breath of fresh air. It scaled well to a full-screen device (see below), loaded quickly, and gave me all the information I would have wanted out of the normal web interface.<br />
<br />
Most notably: remember the whole "upload a check" workflow that required a buggy Java applet on the main website? We get bog-standard HTML form fields, no additional magic. There goes any theories about the Java client doing some magic validation or prep of the image; here, all they're getting is the images and my session cookie.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjcOjqT_Ah1qtotkOVBhrHywTK6g4sJAXkWtwHUawNo4gHdek1etpnZvm95zWWJ1t3GNYBgcUaDh9hFPy-0J07VOJ5yh_A_svgxtHwTfcKjgoeEQ1375XkFJieX_FSin-oQiKrFeWmOIj3B/s1600/Selection_010.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="204" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjcOjqT_Ah1qtotkOVBhrHywTK6g4sJAXkWtwHUawNo4gHdek1etpnZvm95zWWJ1t3GNYBgcUaDh9hFPy-0J07VOJ5yh_A_svgxtHwTfcKjgoeEQ1375XkFJieX_FSin-oQiKrFeWmOIj3B/s320/Selection_010.png" width="320" /></a></div>
<br />
I'm still shocked at whoever thought a <a href="http://my.yahoo.com/">My Yahoo!</a>-style homepage was the best layout for a bank, but props to the web developers who managed to make a mobile interface that was both pretty and allowed me to work around broken functionality in their implementations on every other platform I had access to.<br />
<br />
But why was the mobile web interface the least bloated? Easy. On the desktop, you generally have a nice pipe, or if not, the user knows it and won't be <i>too</i> upset if your site is just as slow as other sites similarly situated. On mobile, the user downloaded all the code already, so the only latency should be the API requests against the server, right?<br />
<br />
On the mobile web users have come to expect relatively speedy mobile-optimised sites and there's less screen real estate to do fancy things that get in the way of content. For many sites, that's a huge improvement. Of course, it would be <i>really</i> nice if more banks supported <a href="https://en.wikipedia.org/wiki/FinTS">open protocols</a> for interactions (USAA has a read-only, limited-duration <a href="http://wiki.gnucash.org/wiki/OFX_Direct_Connect_Bank_Settings#USAA">OFX feed</a>), but I would settle for a better web interface.<br />
<br />
So <b>tl;dr:</b> USAA, please make <a href="http://www.usaa.com/">www.usaa.com</a> redirect to <a href="http://m.usaa.com/">m.usaa.com</a>, kthxbai.<br />
<span id="goog_187135919"></span><span id="goog_187135920"></span><br /></div>
Luke Faraonehttp://www.blogger.com/profile/11679092740238566479noreply@blogger.com0tag:blogger.com,1999:blog-1354659632607599854.post-10344116288150516062013-07-20T15:08:00.002+00:002013-07-20T23:44:05.880+00:00Joining the Debian FTPTeamI'm pleased to say that I have joined the Debian <a href="http://ftp-master.debian.org/">FTPTeam</a> as of the Friday before last. See Joerg Jaspert's <a href="https://lists.debian.org/debian-devel-announce/2013/07/msg00003.html">announcement</a> on debian-devel-announce.<br />
<br />
The FTPTeam is responsible for maintaining the Debian software archive, and ensures that new software in Debian is high-quality and compliant with our policies.<br />
<br />
As an "ftpassistant", I (along with <a href="http://blog.pault.ag/">Paul</a>, <a href="http://skitterman.wordpress.com/">Scott</a>, <a href="http://asylum.madhouse-project.org/">Gergely</a>, and <a href="https://ftp-master.debian.org/#ftpteam">others</a>) will be helping to process the NEW queue, which is currently at a whopping 297 packages. Here's hoping we'll be able to get that number down over the coming weeks!Luke Faraonehttp://www.blogger.com/profile/11679092740238566479noreply@blogger.com0tag:blogger.com,1999:blog-1354659632607599854.post-65607099138465220462013-04-03T22:16:00.000+00:002013-04-03T22:16:21.009+00:00Teaching free/open source to high school studentsA few weeks ago I taught a class on <i>Open Source: Contributing to free culture</i> (<a href="https://esp.mit.edu/teach/Spark/2013/catalogpreview/7183">catalog entry</a>) for <a href="http://esp.mit.edu/learn/Spark/index.html">Spark</a>, a one-day program put on by the student-run MIT <a href="http://esp.mit.edu/">Educational Studies Program</a>. I was fortunate to have two helpful co-teachers, <a href="http://hallada.net/">Tyler Hallada</a> and <a href="http://mit.edu/jhurwitz/www/">Jacob Hurwitz</a>, who assisted with the lesson plan and the in class lecture.<br />
<br />
We ended up teaching 3 sessions of the 1hr 50min class that Saturday, with about 10 students in each session.<br />
<br />
I was pretty impressed by the quality of the students; a number of them had used <a href="https://www.gnu.org/gnu/linux-and-gnu.html">GNU/Linux</a> before, but even those who hadn't were able to gain something from the experience. The class was broken up into three segments:<br />
<br />
<ol>
<li>Lecture on a brief history of open source and the free software movement</li>
<li>Small research project on an open source project</li>
<li>Lab where students could work through <a href="https://openhatch.org/missions/">OpenHatch's training missions</a></li>
</ol>
<div>
The point was to mix up what could otherwise be a very boring lecture.<br />
<br />
I think we might have missed the mark on the last bit, as I get the feeling that we didn't end up giving the students good actionables. While the quality of OpenHatch is high and the organization's <a href="http://campus.openhatch.org/">campus outreach</a> programs are amazing, skills practice only goes so far without clear direction to apply said skills. I'll be following up with the class participants to see how they're progressing on their own open source contributor journey, and will post updates if I have any.<br />
<br />
While not an OpenHatch event, if this sort of thing interests you, OpenHatch runs <a href="http://openhatch.org/events/">a series of events</a> like this one and has a <a href="http://lists.openhatch.org/mailman/listinfo/events">mailing list</a> for discussing planning and sharing best practices. Subscribe and say hi!<br />
<br />
The presentation is enclosed below, and of course is licensed under <a href="https://creativecommons.org/licenses/by-sa/3.0/us/">CreativeCommons Attribution-ShareAlike 3.0</a>. [<a href="http://web.mit.edu/lfaraone/www/spark13-freeculture.pdf">PDF</a>]</div>
<div>
<br /></div>
<div style="text-align: center;">
<iframe allowfullscreen="true" frameborder="0" height="389" mozallowfullscreen="true" src="https://docs.google.com/presentation/d/14R1o_5rOfjCw19mFtxZj29HQOhlJWK0F53MNj5tL8iU/embed?start=false&loop=false&delayms=3000" webkitallowfullscreen="true" width="480"></iframe>
</div>
<div>
<br /></div>
Luke Faraonehttp://www.blogger.com/profile/11679092740238566479noreply@blogger.com0Massachusetts Institute of Technology, 77 Massachusetts Avenue, Cambridge, MA 02139, USA42.3588656 -71.09382269999997642.335399100000004 -71.134163199999975 42.3823321 -71.053482199999976tag:blogger.com,1999:blog-1354659632607599854.post-75884686886376837712012-10-08T14:00:00.000+00:002012-10-08T15:57:39.648+00:00Where I've gone off toFor those of you back at <a href="http://gmu.edu/">my university</a>, you may have noticed I'm not there this semester.<br />
<br />
<table cellpadding="0" cellspacing="0" class="tr-caption-container" style="float: right; margin-left: 1em; text-align: right;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiAOVI4No6S3N5YLsPUpDfhva5lI4EN9sPgRFB54KloUtOAk8SUl6uutBMJqiC5Kw1kEfz4DkTiB8QjdSEcXAgqzBEMaIrKoSBq34_pmhkZhyLFCdDpFkUsTyUejL0dRtoXeL8nk5d_TVDK/s1600/549578_10150940826751091_1545592186_n.jpg" imageanchor="1" style="clear: right; margin-bottom: 1em; margin-left: auto; margin-right: auto;"><img border="0" height="133" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiAOVI4No6S3N5YLsPUpDfhva5lI4EN9sPgRFB54KloUtOAk8SUl6uutBMJqiC5Kw1kEfz4DkTiB8QjdSEcXAgqzBEMaIrKoSBq34_pmhkZhyLFCdDpFkUsTyUejL0dRtoXeL8nk5d_TVDK/s200/549578_10150940826751091_1545592186_n.jpg" width="200" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Google's 2012 FEP team</td></tr>
</tbody></table>
<br />
I spent this past summer at <a href="http://google.com/">Google, Inc</a>, developing internal tools for the AdSense team, specifically Google Programmable Ads. Being at Google was great; I loved my team and my intern cohort, the rest of the interns in the <a href="https://sites.google.com/site/12freshmanengineeringpracticum/agenda">Freshman Engineering Practicum</a>.<br />
<br />
I'm not currently at Google; my internship ended at the beginning of August. Although it was a blast, all good things must come to an end.<br />
<br />
I'm not at <a href="http://gmu.edu/">Mason</a>, either. I was super excited to return to university, and was just about to buy my books and get ready to move in when I got an email from a former coworker at <a href="http://ksplice.com/">Ksplice</a>, a startup <a href="http://oracle.com/">Oracle</a> acquired while I interned there last year. He was starting a new company which would focus on business communications. I'd be working with a bunch of my former coworkers, and based on what I had heard of the company's plans I was confident in their ability to make an awesome product.<br />
<br />
Needless to say, when they decided to offer me a position working there full time, I jumped on it.<br />
<br />
From an academic point of view, Mason didn't really have much of a mechanism to support this. Co-ops are uncommon there, and not really supported for more than one semester; a full year away had never been done, according to our <a href="http://careers.gmu.edu/">career services</a>. My department was fully supportive, however, so we managed to find a way to make it work. This involved filling out some oddly-named forms, such as <i><a href="http://registrar.gmu.edu/graduation/forms/SRFGR.pdf">Special Registration for Graduation Request</a></i>, which the registrar asserted was the right form, trust us on this one.<br />
<br />
<table cellpadding="0" cellspacing="0" class="tr-caption-container" style="float: left; margin-right: 1em; text-align: left;"><tbody>
<tr><td style="text-align: center;"><a href="https://sphotos-a.xx.fbcdn.net/hphotos-ash4/322851_2348092775739_1718285504_o.jpg?dl=1" imageanchor="1" style="clear: left; margin-bottom: 1em; margin-left: auto; margin-right: auto;"><img border="0" height="133" src="https://sphotos-a.xx.fbcdn.net/hphotos-ash4/322851_2348092775739_1718285504_o.jpg?dl=1" width="200" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Myself and <a href="http://www.milliways.fr/">Obey Arthur Liu</a><br />
at a SIPB hackathon</td></tr>
</tbody></table>
But that's all neither here nor there. I'm now up in Cambridge, MA, working with awesome people (including but not limited to <a href="http://web.mit.edu/tabbott/www/">tabbott</a>, <a href="http://wdaher.com/">wdaher</a>, <a href="http://jesstess.com/">jesstess</a>, and <a href="http://mainisusuallyafunction.blogspot.com/">keegan</a>), and exploring the city. I'm hanging out with <a href="http://sipb.mit.edu/">MIT SIPB</a>, helping with the maintenance of <a href="http://sugarlabs.org/">Sugar Labs</a>' servers in <a href="http://whereis.mit.edu/?q=E15">E15</a> and spending more time working on various open source projects.<br />
<br />
To my friends at Mason: I miss you all. I know regardless of how the next year+ turns out, it'll be one one hell of a ride.Luke Faraonehttp://www.blogger.com/profile/11679092740238566479noreply@blogger.com0tag:blogger.com,1999:blog-1354659632607599854.post-1882273643343642612012-04-16T02:29:00.000+00:002012-07-28T00:05:06.320+00:00AMPED Status Update<a href="https://luke.faraone.cc/blog/?attachment_id=480" rel="attachment wp-att-480" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"><br /><img alt="" class="size-medium wp-image-480" height="300" src="https://luke.faraone.cc/wp-uploads/2012/04/demo-180x300.png" title="Android User Interface" width="180" /></a><br />
<br />
This semester, I created an Android application which processes approval of transactions on the internet in conjunction with a web interface. I walked through the AMPED web interface and server code with my faculty mentor, and we conducted a security analysis of the protocol used in the project. The end result is an application which can be used to handle arbitrary authentication requests, as generated by a server. It performs secure authentication of these requests, and cryptographically signs approved transactions as per the initial proposal. I also produced a reusable Java library which can be incorporated in other projects.<br />
<div>
Source code for all parts of the project are available on the web. The code has been released under the GNU General Public License, which allows for free use, modification, and redistribution under certain terms.</div>
<br />
<ul><br />
<li>Server + Python client software:<tt> <a href="http://github.com/lfaraone/mtnas">http://github.com/lfaraone/mtnas</a></tt></li>
<br />
<li>Java library and client:<tt> <a href="http://github.com/lfaraone/mtnac-java">http://github.com/lfaraone/mtnac-java</a></tt></li>
<br />
<li>Android application:<tt> <a href="http://github.com/lfaraone/mtnac-android">http://github.com/lfaraone/mtnac-android</a> </tt>(<em>not available yet</em>)</li>
</ul>
<br />
<div>
The application is static, and programmatic provisioning for, say, wide deployment, isn’t possible at the present time. In future research I would like to investigate mechanisms for securely provisioning new devices so that we could limit dependence on a secure channel for initial communication, while maintaining the non-repudiation capabilities of AMPED. For example, some combination of a <a href="http://en.wikipedia.org/wiki/QR_code">QR code</a> (for an initial shared secret) and a device’s cellular radio could be used to ensure a secure key exchange. After receiving a shared secret, the device would then generate a secret key and transfer the public portion to the server, using the shared secret as an ephemeral key for this purpose. This is similar to what’s used in <a href="https://code.google.com/p/google-authenticator/">Google Authenticator</a>, but GA requires both the server and the client be able to generate valid authentication tokens, preventing non-repudiation.</div>
<br />
<div>
<br />
<br />
<a href="http://www.blogger.com/blogger.g?blogID=1354659632607599854" name="fig:Google-Authenticator-provisionin"></a><br />
<div>
<br />
<br />
<a href="https://luke.faraone.cc/blog/?attachment_id=481" rel="attachment wp-att-481" style="background-color: white; clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img alt="" class="size-medium wp-image-481" height="300" src="https://luke.faraone.cc/wp-uploads/2012/04/2factor_screenshot_1-293x300.png" title="2factor_screenshot_1" width="293" /></a></div>
<br /></div>
<br />
<div>
Integrating AMPED into existing software systems would also be potentially fruitful, as this would allow us to see how the project would function under normal usage conditions. To this end, Dr. Simon has expressed interest in the possibility of using a future iteration of AMPED in the administration of wireless sensor networks.</div>
<br />
<div>
</div>
<br />
<div>
<small><em>AMPED was developed with funding from the <a href="http://gmu.edu/">George Mason University</a> <a href="http://oscar.gmu.edu/">Office of Student Scholarship</a>’s Spring 2012 research grant programme, <a href="http://oscar.gmu.edu/students/ursp.cfm">URSP</a>.</em></small></div>Luke Faraonehttp://www.blogger.com/profile/11679092740238566479noreply@blogger.com0tag:blogger.com,1999:blog-1354659632607599854.post-9064749667942475842011-12-16T17:44:00.000+00:002012-07-28T00:07:21.249+00:00Semester in review<div class="separator" style="clear: both; text-align: center;">
<a href="https://luke.faraone.cc/blog/2011/12/semester-in-review/student-network-access-protection-chromium_508/" rel="attachment wp-att-447" style="background-color: white; clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"><img alt="You have successfully logged in. Please do NOT close this page, or you will lose access. Open a new tab or window to connect to Internet sites. Please notice that you will only have LIMITED network access until you upgrade your system. " class="size-medium wp-image-447" height="208" src="https://luke.faraone.cc/wp-uploads/2011/12/Student-Network-Access-Protection-Chromium_508-300x208.png" title="Student Network Access Protection" width="300" /></a></div>
I've been pretty quiet online these past few months. My first term at <a href="http://gmu.edu/">George Mason</a> has been a blast; but I've been super busy.<br />
<br />
<br />
In that time I've joined <a href="http://sg.gmu.edu/">Student Government</a> as the Undersecretary for Information Technology, where I've worked on improving our <a href="http://snap.gmu.edu/">campus residential and wireless</a> network along with the really awesome people at <a href="http://tsd.gmu.edu/">ITU TSD</a>.<br />
<br />
I became a <acronym title="undergraduate teacher's assistant">UTA</acronym> for the <em><a href="http://cs.gmu.edu/syllabus/syllabi-fall11/CS112SnyderM.html">Computer Science I</a></em> class at my university, and helped organise several late-night extended tutoring sessions in the days before project deadlines.<br />
<br />
I also took over part of the maintenance responsibilities for the Computer Science department's <a href="http://www.cs.gmu.edu/wiki/pmwiki.php/ComputerAccounts/CSAccounts">faculty supercomputing cluster</a>, and began work on developing a cluster for student use.<br />
<br />
During this winter break it looks like I'll be in Cambridge for a couple weeks during <a href="http://web.mit.edu/iap">IAP</a>. Among other things, I'm running <a href="http://sipb.mit.edu/iap/#25">an event</a> with <a href="http://sipb.mit.edu/">SIPB</a>.<br />
<br />
Next semester, I'll be participating in the <a href="http://uap.gmu.edu/">Undergraduate Research Scholars Program</a> extending my work on <a href="https://luke.faraone.cc/blog/2010/12/simple-two-factor-authentication/">mobile device approval-based authentication</a> with <a href="http://cs.gmu.edu/~simon/">Dr. Robert Simon</a>. Here's to the future!Luke Faraonehttp://www.blogger.com/profile/11679092740238566479noreply@blogger.com1tag:blogger.com,1999:blog-1354659632607599854.post-72608875484801824322011-12-14T18:33:00.000+00:002012-07-08T02:54:39.972+00:00Making Message-ID useful in ThunderbirdIn Thunderbird, if you read a message on a mailing list and want to reference a post in a blog or elsewhere, you may often want to access a copy of the mailing list posting on the web. While you can often accomplish this by searching for the subject or manually finding it in the specific archives of that list, if you're using <a href="http://spamvertized.org/index.php?/archives/14-Finding-Full-Headers-in-Thunderbird.html">full mail headers</a>, there's a built-in way to find a message on the web.<br/><br/>Each email or Usenet message has a unique Message-ID. These are indexed at various providers which archive mailing lists, with <a href="http://gmane.org/">Gmane</a> being the most notable in the Free Software community.<br/><br/>If you right-click on the <a href="http://en.wikipedia.org/wiki/Message-ID">Message-ID</a> of a message in Thunderbird, you can choose to "Open Browser with Message-ID". By default this menu item opens sensible-browser with a Google Groups page, which, while indexing of Usenet, remains ignorant about most mailing lists. Most people reading this will probably find that Gmane carries their favourite mailing lists, while Google does not.<br/><br/>This is configurable, but sadly you have to choose one or another. In Thunderbird, go to <em>Edit → Preferences → Advanced → Config Editor</em>, and set the "<code>mailnews.messageid_browser.url</code>" property to <code>http://mid.gmane.org/%mid</code>. (default of <code>http://groups.google.com/groups?selm=%mid&rnum=1</code>)Luke Faraonehttp://www.blogger.com/profile/11679092740238566479noreply@blogger.com0tag:blogger.com,1999:blog-1354659632607599854.post-1887052900784691632011-06-28T19:12:00.000+00:002013-10-03T18:46:34.162+00:00Last night in Arlington<a href="http://www.flickr.com/photos/arlingtonva/4538274724/in/photostream/"><img alt="(photo credit Arlington County)" class="alignnone" height="266" src="https://luke.faraone.cc/wp-uploads/2011/06/4538274724_588b34251e_b.jpg" title="Ballston Skyline" width="400" /></a><br />
<br />
This is my last night in Arlington for two months. I'm leaving for a brief vacation, and next week I'm off to Cambridge for my summer job with <a href="http://ksplice.com/">Ksplice, Inc</a>.<br />
<br />
After that, I'll be here for 3 days packing for college, and then I'll be off again.<br />
<br />
Its been a fun 12 years. To all the friends I've made here, stay in touch.Luke Faraonehttp://www.blogger.com/profile/11679092740238566479noreply@blogger.com2tag:blogger.com,1999:blog-1354659632607599854.post-80762336433916648492011-05-02T20:54:00.000+00:002014-09-13T20:43:37.019+00:00"Your release sucks."I look forward to Ubuntu's semiannual release day, because it's the completion of 6ish months of work by Ubuntu (and by extension Debian) developers.<br />
<br />
I also loathe it, because <strong>every single time</strong> we get people saying "This Ubuntu release is the worst release ever!".<br />
<br />
Ubuntu releases are always rocky around release time, because the first time Ubuntu gets widespread testing is on or after release day.<br />
<br />
We ship software to <a href="http://ostatic.com/blog/canonical-announces-12-million-ubuntu-users-google-makes-a-comeback"><strong>12 Million</strong> Ubuntu Users</a> with only <a href="https://launchpad.net/~motu/+members">150 MOTUs</a> who work directly on the platform. That's a little less than 1 developer with upload rights to the archive for every 60,000 users. ((This number, like all other usage data, is dated, and probably wasn't even accurate when it was first calculated)) Compared to Debian, which (at last estimate in 2010) had <a href="http://www.debian.org/News/project/2010/01/#users">1.5 million uniques on security.debian.org</a>, yet has around 1000 Debian Developers.<br />
<br />
Debian has a strong testing culture; someone once estimated that around ¾ of Debian users are running <code>unstable</code> or <code>testing</code>. In Ubuntu, we don't have good metrics on how many people are using the development release that I'm aware of (pointers welcome), but I'd guess that it's a very very small percentage. A common thread in bug reports, if we get a response at all, goes on as follows:<br />
<div style="padding-left: 30px;">
<strong>Triager</strong>: ((Developer, bugcontrol member, etc. Somebody who is not experiencing the problem but wants to help.)) "Is this a problem in $devel?"</div>
<div style="padding-left: 30px;">
<strong>User</strong>: "I'll let you know when it hits final"</div>
<div style="padding-left: 30px;">
<strong>Triager</strong>: "It's too late then. Then we'll want you to test in the next release. We have to fix it BEFORE its final"</div>
<div style="padding-left: 30px;">
<strong>User</strong>: "Ok, I'll test at beta."</div>
<div style="padding-left: 30px;">
<strong>Triager</strong>: "That's 2 weeks before release, which will be too late. Please test ASAP if you want us to have time to fix it"</div>
<br />
Of course, there are really important bugs with hardware support which keep on cropping up. But if they're just getting reported on or around release day, there are limits to what can be done about them this cycle.<br />
<br />
We need to make it easier for people to run early development versions, and encourage more people to use them (as long as they're willing to deal with breakage). I'm not sure whether unstable/testing is appropriate for Ubuntu, and I'm fairly confident that we don't want to move to a <a href="https://secure.wikimedia.org/wikipedia/en/wiki/Rolling_release">rolling release</a> (currently being discussed in Debian, <a href="http://lists.debian.org/debian-devel/2011/05/msg00111.html">summary</a>). But we badly need more developers, and equally importantly, more testers to try it out earlier in the release process.<br />
<br />
To users: please, please<a href="https://wiki.ubuntu.com/Testing"> try out the development versions</a>. Download a LiveCD and run a smoketest, or check if bugs you reported are in fact fixed in the later versions. And do it early and often.Luke Faraonehttp://www.blogger.com/profile/11679092740238566479noreply@blogger.com17tag:blogger.com,1999:blog-1354659632607599854.post-50435054311379409812011-03-27T14:59:00.000+00:002012-07-08T02:54:39.969+00:00Comodo "SSL certificate" incident and what it means for youFor those of you who missed <a href="http://bits.blogs.nytimes.com/2011/03/24/iranian-hackers-suspected-in-recent-security-breach/">all</a> <a href="http://newsinfo.iu.edu/news/page/normal/17864.html">the</a> <a href="http://www.pcworld.com/businesscenter/article/223262/digital_certificate_theft_shows_safari_limitation.html">news</a> <a href="http://www.computerworld.com/s/article/9215092/In_Iran_new_attack_escalates_ongoing_cyberconflict?taxonomyId=13">coverage</a>, here's a quick (and hopefully straightforward) explanation of the issue.<br/><h2>What is this?</h2><br/><em>Executive summary: The way secure communications is handled on the internet is broken, and a recent attack higlighted that. People running the latest version of their browsers are protected. </em><br/><br/>Whenever you visit a web site, your're either accessing that site through HTTP, the <strong>H</strong>yper<strong>t</strong>ext <strong>T</strong>ransfer <strong>P</strong>rotocol, or via HTTP inside TLS (<strong>T</strong>ransport <strong>L</strong>ayer<strong> S</strong>ecurity), aka <a href="http://en.wikipedia.org/wiki/HTTPS">HTTPS</a>.<br/><br/>With HTTP, anything you do can be watched, recorded, etc by any entity between you and the site you are trying to visit. These entities include your ISP, various internet providers your ISP has <a href="http://en.wikipedia.org/wiki/Peering">peering</a> agreements with, or anybody who is on the same Wifi (or sometimes wired) connection as you.<br/><br/>HTTPS encrypts your traffic to prevent such "man in the middle" attacks. Because the entire connection is private, it can be harder for organizations to filter out specific HTTPS sites.<br/><br/><a href="https://luke.faraone.cc/">My personal website</a> is available via HTTPS, and your browser accepts that it is connecting to me and not an impostor because <a href="http://www.geotrust.com/">GeoTrust</a> / <a href="http://www.rapidssl.com/">RapidSSL</a> checked the domain records to find my contact information, and called me up to make sure I am who I say I am.<br/><br/>To ensure that when you connect to a site, you are actually connecting to that site and not a malicious attacker, your web browser relies on <a href="http://en.wikipedia.org/wiki/Certificate_authority">Certificate Authorities</a>, which vouch for a site's identity. Any CA can vouch for any domain, and there are almost 50 such entities which Mozilla Firefox <a href="http://www.mozilla.org/projects/security/certs/included/">fully trusts</a>. Microsoft <a href="http://social.technet.microsoft.com/wiki/contents/articles/windows-root-certificate-program-members-list-all-cas.aspx">trusts hundreds</a>, including a variety of governments ranging from France to South Korea to Hong Kong.<br/><h2>What happened?</h2><br/>Recently one of these CAs, <a href="http://www.comodo.com/">Comodo</a>, was compromised, insofar as somebody was able to get a signed certificate for a domain they did not own. From what I understand, the attacker gained control of a reseller account at Comodo, and there were inadequate checks to prevent the now compromised account from issuing fraudulent certificates.<br/><br/>In this case, they were able to obtain certificates for the log in pages of Google, Yahoo, Windows Live, and Skype, as well as the Mozilla Addons site. Full details are in their <a href="http://www.comodo.com/Comodo-Fraud-Incident-2011-03-23.html">incident report</a>. Based on their initial analysis, the attack appears to be sourced from within <strong>Iran</strong>, and Comodo has concluded that the breach was orchestrated by the state.<br/><br/>Since Comodo's certificates are trusted by all major browsers, these sites can be impersonated by others, even though none of the targeted sites used Comodo.<br/><h2>Why should I care?</h2><br/>The Iranian government or another organization controlling those certificates can intercept usernames and passwords, and access private information. This is of primary concern to Iranian dissidents, but could be used by the government there to target anybody they don't like, given the right circumstances.<br/><h2>What can I do about it?</h2><br/>Well, this breach has shown that the process for <a href="http://en.wikipedia.org/wiki/Revocation_list">revoking a certificate</a> is <a href="http://www.infoworld.com/t/authentication/weaknesses-in-ssl-certification-exposed-comodo-security-breach-593">horribly broken</a>, since most browsers do not check to see if a certificate is still valid. Fortunately, the major browser vendors (Mozilla, Google, and Microsoft) have all issued updates, so if you are running the most updated version of your browser (which you should be doing anyway!) then you are protected against this<em> specific</em> attack. ((Well, Apple hasn't as of this writing, but you can work around it via <a href="http://www.securitygeneration.com/security/safari-mac-os-x-and-fraudulent-ssl-certificates-comodo/">this method</a>))<br/><br/>However, the incident shines light on the wider issue of the way our internet trust model works: allowing hundreds of unrelated organizations to vouch authoritatively that somebody else is who they say they are. This is a hard problem in information security to solve, and most of the proposed alternatives (<em>cough</em> <a href="http://en.wikipedia.org/wiki/Domain_Name_System_Security_Extensions">DNSSEC</a>) also suffer from having a trusted issuer. It will be interesting to see if any decentralized alternatives to CAs gain traction because of the Comodo affair.Luke Faraonehttp://www.blogger.com/profile/11679092740238566479noreply@blogger.com0tag:blogger.com,1999:blog-1354659632607599854.post-85366828456668158302011-03-01T21:59:00.000+00:002014-09-13T20:44:15.915+00:00Trip to SCOTUS, Camreta v. Greene (09-1454) or: "Justices just want tohave fun"I usually write about technical topics in this space, so pardon my digression. </metablogging><br />
<br />
Today my <a href="http://www.apsva.us/15722093173644393/site/default.asp">AP Gov't class</a> took a trip to the <a href="http://www.supremecourt.gov/">Supreme Court of the United States</a> (SCOTUS). We were fortunate to get reserved seating thanks to <a href="http://twitter.com/loubear1214">one of my classmates</a>, so we skipped the line and were able to sit for an entire argument. We didn't get to choose which of the two arguments we saw, since half our group was randomly sent to each. I didn't get the one I had hoped for. <a href="http://www.scotusblog.com/case-files/cases/camreta-v-greene" style="font-style: italic;">Camreta v. Greene</a> (the one I attended), however, proved to be much more entertaining than <a href="http://www.scotusblog.com/case-files/cases/schindler-elevator-corporation-v-united-states-ex-rel-kirk">Schindler Elevator v. US ex rel. Kirk</a>, at least based on the people I talked to. A quick search of the transcripts for each confirms this:<br />
<pre>
<table border="2" cellpadding="2" style="text-align: center;"><tbody>
<tr><td>Argument</td><td> # of instances of <em>"(Laughter)"</em></td></tr>
<tr><td><em>Camreta</em></td><td>12</td></tr>
<tr><td><em>Schindler</em></td><td>0</td></tr>
</tbody></table>
</pre>
<h1>
Facts of the case</h1>
The <em>Huffington Post</em> has a detailed overview of the <a href="http://www.huffingtonpost.com/sheree-moratto/post_1777_b_828325.html">circumstances surrounding the case</a>, which didn't gloss over any details or strike me as overly biased; they certainly did a better job than I did. The whole story is rather sad, but what came before the court was this: whether a child can be questioned by the police, Child Protective Services, or other governmental agencies without parental consent, probable cause, or "extingent circumstances". If so, on what grounds can such questioning occur?<br />
<br />
<a name='more'></a><br />
<h1>
The Court enjoys itself</h1>
<br />
Even with the rather solumn subject matter facing the Court, the justices managed to point out some of the absurdities in arguments made by the defense (attorneys representing the girl). Looking into the <a href="http://www.supremecourt.gov/oral_arguments/argument_transcripts/09-1454.pdf">transcript for Camreta</a>, here are some specific examples of hilarity:<br />
<h2>
On the lack of legal interest</h2>
<br />
From pp. 27, 28:<br />
<div style="padding-left: 30px;">
ORAL ARGUMENT OF CAROLYN A. KUBITSCHEK ON BEHALF OF THE RESPONDENTS</div>
<br />
<div style="padding-left: 30px;">
MS. KUBITSCHEK: Thank you. Mr. Chief Justice, and may it please the Court: There is no case or controversy between S.G. and the Petitioners. That ended when -</div>
<br />
<div style="padding-left: 30px;">
CHIEF JUSTICE ROBERTS: Then why are you -why are you here?</div>
<br />
<div style="padding-left: 30px;">
(Laughter.)</div>
<br />
<div style="padding-left: 30px;">
CHIEF JUSTICE ROBERTS: You're not challenging the qualified immunity ruling?</div>
<br />
<div style="padding-left: 30px;">
MS. KUBITSCHEK: Precisely.</div>
<br />
<div style="padding-left: 30px;">
CHIEF JUSTICE ROBERTS: Yet, you have - yet, you have -- why didn't you just go away?</div>
<br />
<div style="padding-left: 30px;">
(Laughter.)</div>
<br />
<div style="padding-left: 30px;">
MS. KUBITSCHEK: Mr. Chief Justice, we are not here voluntarily.</div>
<br />
<div style="padding-left: 30px;">
(Laughter.)</div>
<br />
<div style="padding-left: 30px;">
MS. KUBITSCHEK: She won a moral victory when she obtained a ruling in her favor on the Fourth Amendment claim in the Ninth Circuit…</div>
<br />
<br />
<h2>
On the definition of a seizure</h2>
<br />
Here, the lawyer for the defense cannot seem to clearly articulate what exactly she's proposing be the new standard for a "seizure" in a school context. From pp. 40 thru 43<br />
<div style="padding-left: 30px;">
</div>
<br />
<div style="padding-left: 30px;">
JUSTICE ALITO: But what is your answer to Justice Ginsburg's question, suppose it was just Mr. Camreta or suppose it was the school nurse, would the answer be the same?</div>
<br />
<div style="padding-left: 30px;">
MS. KUBITSCHEK: No, it would not be the same if it was the school nurse or Mr. Camreta. And the -- the reason is that the school nurse is part of the school administration, and the school has an obligation and the authority under T.L.O. act and in Earls to make rules and carry out procedures that will protect the children of the school and promote learning, and if the child comes -</div>
<br />
<div style="padding-left: 30px;">
JUSTICE ALITO: So if it was just Mr. Camreta and he -</div>
<br />
<div style="padding-left: 30px;">
MS. KUBITSCHEK: If Mr. -</div>
<br />
<div style="padding-left: 30px;">
JUSTICE ALITO: -- and he taped the conversation and then later turned it over to the -- to the police if he discovered evidence of child abuse, there would be no problem? Right?</div>
<br />
<div style="padding-left: 30px;">
MS. KUBITSCHEK: If Mr. Camreta came in from the outside, he would not fall within the T.L.O. rule, […snip…]</div>
<br />
<div style="padding-left: 30px;">
JUSTICE BREYER: Same circumstance. Was there a seizure? No -- no professor -- no policeman?</div>
<br />
<div style="padding-left: 30px;">
MS. KUBITSCHEK: If -- if -</div>
<br />
<div style="padding-left: 30px;">
JUSTICE BREYER: School nurse?</div>
<br />
<div style="padding-left: 30px;">
MS. KUBITSCHEK: The school nurse?</div>
<br />
<div style="padding-left: 30px;">
JUSTICE BREYER: Seizure?</div>
<br />
<div style="padding-left: 30px;">
MS. KUBITSCHEK: Probably not a seizure.</div>
<br />
<div style="padding-left: 30px;">
JUSTICE BREYER: And so, it's not a seizure if exactly the same thing happens but there is no outside person there, but it is a seizure if there's an outside person?</div>
<br />
<div style="padding-left: 30px;">
MS. KUBITSCHEK: If the outside person comes into the school -</div>
<br />
<div style="padding-left: 30px;">
JUSTICE BREYER: That's the rule as to whether there's a seizure?</div>
<br />
<div style="padding-left: 30px;">
MS. KUBITSCHEK: That's one of the factors to look at.</div>
<br />
<div style="padding-left: 30px;">
[…snip…]</div>
<br />
<div style="padding-left: 30px;">
JUSTICE SCALIA: If you send her to the school nurse, it's not a seizure, but if the school doesn't have a nurse and it brings in a nurse from the outside and say, you know, we think you have some contagious disease, we would like you to speak to this -- then it becomes a seizure?</div>
<br />
<div style="padding-left: 30px;">
MS. KUBITSCHEK: Well, Your Honor, the T.L.O. framework would certainly apply in that situation, where you have a child who has a potentially contagious disease, then the analysis you follow -</div>
<br />
<div style="padding-left: 30px;">
JUSTICE SCALIA: Contagious, it's just a disease that's going to kill this child and nobody else, okay?</div>
<br />
<div style="padding-left: 30px;">
(Laughter.)</div>
<br />
There were others, which I'll not include (psst: pp. 44 - 46) because this post is long enough already, but on whole it made for interesting oral arguments.<br />
<h1>
Thoughts on the case</h1>
<br />
<em>Warning: my entire blog is my opinion, which may differ from that of my <a href="http://laptop.org/">current</a>, <a href="http://activitycentral.com/">past</a>, or <a href="http://ksplice.com/">future</a> employers, but this is even more so. Oh, and IANAL.</em><br />
<br />
Students can be seized without parental consent with relation to school discipline, as established in <a href="http://en.wikipedia.org/wiki/New_Jersey_v._T._L._O."><em>New Jersey v. T.L.O.</em></a> (referenced above). In T.L.O., the court specifically didn't discuss school cooperation with <a href="http://en.wikipedia.org/wiki/Law_enforcement_officer" title="Law enforcement officers">LEOs</a>. It is considered in almost every other instance valuable for a parent to give consent for a seizure or interrogation. I can understand waiving the requirements for consent if there is probable cause to suspect the parent has molested the child in question. If, as in this case, it was another child, and the only such inference drawn between the parent and his child was that of hearsay, then I don't think it would be considered "reasonable".<br />
<br />
I'm not sure where the line should be drawn, be it "reasonable suspicion" or "probable cause".Luke Faraonehttp://www.blogger.com/profile/11679092740238566479noreply@blogger.com1tag:blogger.com,1999:blog-1354659632607599854.post-49784122387618061512011-01-04T09:37:00.000+00:002012-07-28T00:07:53.171+00:00Google Cr-48 first impressionsOn a lark, I <a href="https://services.google.com/fb/forms/cr48advanced/">signed up</a> for the pilot program of the <a href="http://www.google.com/chromeos/pilot-program-cr48.html">Google Cr-48</a> about a week ago. To my surprise, I found the distinctive box on my doorstep a week later. After initially mistaking it for an overpacked, late-model <em>OLPC XO-1</em> I would <a href="http://wiki.laptop.org/go/OLPC_DC_Repair">have to repair</a>, I sort of did a double-take as I realized what I had received.<br />
<h1>
Using Chrome OS</h1>
<br />
<br />
<br />
<a href="https://luke.faraone.cc/blog/2011/01/google-cr-48-first-impressions/img_2200_modified/" rel="attachment wp-att-290" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img alt="" class="size-thumbnail wp-image-290" height="150" src="https://luke.faraone.cc/wp-uploads/2011/01/IMG_2200_modified-150x150.jpg" title="Cr-48 with a kindle" width="150" /></a>Wow, they weren't kidding about the boot time. Chrome OS responds (to suspend / resume and boot / power-off) very quickly. Responsiveness elsewhere in the OS of course varies on system load and other factors. On the "terms" page, there is a "system security setting" which tells me I have a <a href="http://en.wikipedia.org/wiki/Trusted_Platform_Module">Trusted Platform Module</a>, and that my TPM has a randomly generated password. The dialog could use some rewording; I'm pretty familiar with the idea of a TPM, but I'm still not sure what I'm to do with that information.<br />
<br />
Cloud print is really a problem for me, right now. I use school printers for the majority of my work, which I was previously able to use by adding them by IP address. Unless there's some magic I'm missing here, I can't do that with Chrome OS, and such a feature will not be supported. (except by "connectors" on Windows and Mac computers)<br />
<h1>
General thoughts</h1>
<br />
I can't imagine using a system running Chrome OS as a primary computer. The biggest missing feature is <acronym title="Pretty Good Privacy">PGP</acronym> (or any sort of encryption) support for email. This is probably not terribly difficult to implement as an extension, but the idea of my cryptographic software being automatically updated is rather unsettling. I think I'll have to agree with Paul Buchheit that <a href="http://techcrunch.com/2010/12/14/gmail-creator-paul-buchheit-chrome-os-will-perish-or-merge-with-android/">ChromeOS will have to merge with Android</a>; there is a utility for local apps, even if they're becoming less and less critical.Luke Faraonehttp://www.blogger.com/profile/11679092740238566479noreply@blogger.com2tag:blogger.com,1999:blog-1354659632607599854.post-41298066983967967942010-12-08T09:43:00.000+00:002012-07-28T00:08:03.603+00:00Simple two-factor authentication<br />
<br />
<a href="https://luke.faraone.cc/blog/2010/12/simple-two-factor-authentication/specific/" rel="attachment wp-att-200" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"><img alt="Do you want to allow "Rebooting of Cluster 19" as Jane Doe, Foo Corp? Yes/No" class="size-medium wp-image-200" height="300" src="https://luke.faraone.cc/wp-uploads/2010/12/specific-156x300.png" title="Authentication Notice Mockup" width="156" /></a>I've been thinking a lot recently about information security and passwords. It's widely agreed that two-factor authentication, which combines something-you-know (a password) with something you have (eg. a <a href="http://en.wikipedia.org/wiki/Smart_card">smart card</a> or some <a href="https://secure.wikimedia.org/wikipedia/en/wiki/One-time_password">one-time-password</a>) is superior to using a password by itself. Most solutions I've seen, short of client-side certificates, both require a trusted third party and provide little auditability.<br />
<br />
I'm working on a project which attempts to address those problems. Basically, the idea is that you attempt to perform an action on a website, like logging in, moving some money between accounts, or restarting a cluster. Then, your mobile device ((iPhone used in the graphic to the right because a SVG was handy. Image adapted from work by Virgile Pypaert [CC-BY-SA-3.0], via Wikimedia Commons)) (<a href="http://android.com/">Android</a>, <a href="http://apple.com/iphone">iPhone</a>, or some custom hardware) starts buzzing, displaying the text of the action. When you approve or deny the action, your device uses a locally stored private key to sign the text of the approval and send it back to the server. The server checks that you approved the same transaction number and text, then allows the action. The server can store the approval notice to allow auditors later to determine that somebody in possession of the private key signed the action request.<br />
<br />
So far, I've written a small Django server application, and a Python CLI device and client. They're not yet ready for a public release; I need to write up installation instructions and test it a bit more, but I'll publish them soon on Launchpad. On the usability side of things, I plan to conduct some trials in January comparing it to things like <a href="https://www.google.com/support/a/bin/answer.py?hl=en&answer=1037451">Google Authenticator</a>.<br />
<br />
This should be less susceptible to <acronym title="Man In The Middle">MITM</acronym> attacks than one-time-passwords, since you can authenticate specific transactions, rather than entire sessions.<br />
<br />
On the other hand, I'm no security researcher. Dear lazyweb, are there any problems with the above approach? Also, if I'm going to release this (as I plan to once I get something working), I need a name. Ideas?Luke Faraonehttp://www.blogger.com/profile/11679092740238566479noreply@blogger.com9tag:blogger.com,1999:blog-1354659632607599854.post-64762803610925311772010-10-11T19:23:00.000+00:002012-07-08T02:54:39.970+00:00Key transitionAs Christian <a href="http://www.perrier.eu.org/weblog/2010/10/10#new-gpg-key">mentioned</a>, the Debian Keyring Maintainers did a "promote" this weekend of the new <a href="http://keyring.debian.org">keyring</a>. I figure it's an opportune time to perform a public key transition, since this had the effect of replacing my key on the keyring.<br/><br/>For my new key, <a href="http://pgp.cs.uu.nl/stats/F9FDD506.html">0xF9FDD506</a>, I decided to opt for a <strong>4096-bit RSA</strong>, which is stronger than I should have to worry about for the foreseeable future. The key is much better connected than my previous one, <a href="http://pgp.cs.uu.nl/stats/0AC70206.html">0x0AC70206</a>. I also have a <a href="http://luke.faraone.cc/files/transition-2010">transition document</a>, ripped almost word-for-word from <a href="http://www.perrier.eu.org/~bubulle/gpg-transition.txt">Christian's</a>.<br/><br/>If you signed my previous key, you should sign the new one unless you're feeling extra paranoid today.Luke Faraonehttp://www.blogger.com/profile/11679092740238566479noreply@blogger.com1tag:blogger.com,1999:blog-1354659632607599854.post-41216484431152350262010-08-31T13:14:00.000+00:002012-07-08T02:54:39.961+00:00Generating manpages with help2manTo quote the ftp-masters <a class="http" href="http://ftp-master.debian.org/REJECT-FAQ.html">REJECT-FAQ</a> :<br/><ul><br/> <li style="list-style-type: none;">Write manpages. Yes. Really. Write them. Well. It's basically: If your program/tool has a help and version commandline option you can simply run <a class="interwiki" title="DebianPkg" href="http://packages.debian.org/help2man">help2man</a> and have a working start.</li><br/></ul><br/><p class="line862">What may not be obvious to the recently <tt class="backtick">REJECT</tt>ed developer is actually <strong>how</strong> to use <tt class="backtick">help2man</tt>. To try t0 explain the process a bit more verbosely, I took the liberty of writing a <a href="http://wiki.debian.org/ManPage/help2man">tutorial</a> on the <a href="http://wiki.debian.org">Debian wiki</a>. Comments and corrections are welcome.</p><br/><p class="line862">Of course, help2man-generated manpages are no substitute for <strong>real</strong>, hand-written manpages made of sweat, blood, and the Maintainer's tears, and it won't work for all packages. This is just a start, and is much better than no manpages at all.</p><br/><p class="line862">There was a discussion on #debian-devel a couple of days ago when I brought up my creation of the above, and some wondered if it wouldn't be better to add hooks to man-db to allow package maintainers to enable manpage generation at runtime. I'm not sure if that idea will ever make it into a proposal, but, if the details of the implementation were worked out, would be much better than the above, manually generated method.</p>Luke Faraonehttp://www.blogger.com/profile/11679092740238566479noreply@blogger.com7tag:blogger.com,1999:blog-1354659632607599854.post-49567418235142582782010-06-25T10:13:00.000+00:002012-07-08T02:54:39.966+00:00Hello, (Planet Debian readers of the) world!I'm a Debian Maintainer currently <a href="https://nm.debian.org/nmstatus.php?email=luke%40faraone.cc">undergoing</a> the New Maintainer process. I'm also an <a href="https://launchpad.net/~lfaraone">Ubuntu MOTU</a> as of <a href="https://wiki.ubuntu.com/UbuntuWeeklyNewsletter/Issue196#Luke Faraone MOTU Application">recently</a>. I have <a href="http://qa.debian.org/developer.php?login=luke@faraone.cc">several packages</a> in a variety of categories, but I specialize in Python-based software.<br/><br/>I'm interested in exploring more ways to improve cross-distribution coordination, specifically as it relates to the Debian <a href="http://sugarlabs.org">Sugar</a> packages. I'm working to get all of the <a href="http://qa.ubuntuwire.com/multidistrotools/sugar.html">Ubuntu-specific</a> Sugar packages included in Debian, which will probably be a summer-long effort.Luke Faraonehttp://www.blogger.com/profile/11679092740238566479noreply@blogger.com2tag:blogger.com,1999:blog-1354659632607599854.post-75269645893000472392010-06-22T11:11:00.000+00:002012-07-08T02:54:39.973+00:00Post-mortem on WMF Server DonationOf the 12 servers sent to Sugar Labs, 6 arrived at the Arlington Career Center. Three of them stayed there, whereas I brought three home to attempt to salvage what I could from them. The three that arrived are described below.<br/><h2>wmf-01 "le premier"</h2><br/>2x Dual Core AMD Opteron(tm) Processor 285 @ 2606.342 MHz<br/>2x 250 GB HDDs, 2x slots empty<br/>2 Gigabit Ethernet NICs<br/><br/>This machine worked swimmingly.<br/><h2>wmf-02 "something witty"</h2><br/>2x Dual Core AMD Opteron(tm) Processor 265 @ 1800.000 MHz<br/>2x 250 GB HDDs, 2x slots empty<br/>2 Gigabit Ethernet NICs<br/><br/>This machine was incredibly noisy when turned on.<br/><h2>wmf-03 "lemon"</h2><br/>2x Dual Core AMD Opteron(tm) Processor 265 @ 1800.000 MHz<br/>2x 250 GB HDDs, 2x slots empty<br/>2 Gigabit Ethernet NICs<br/><br/>This machine did not fully POST, and was incredibly noisy when turned on.<br/><br/>Between them, only one of them had working fans. The other two made ungodly noises. We managed to salvage enough fans from the machine that didn't post so that we now have two working machines cooling-wise.<br/><br/>We hope to install these machines at a Virginia co-lo center after we finish getting all the parts for <a href="http://radian.org/">Ivan Krstić</a>'s blackrock.<br/><br/><strong>NB</strong>: This post has been sitting around in my drafts for a while, and I just got around to posting it now. We're still waiting on some last-minute parts before putting these servers into production.Luke Faraonehttp://www.blogger.com/profile/11679092740238566479noreply@blogger.com0tag:blogger.com,1999:blog-1354659632607599854.post-44014101680854431732010-06-16T07:41:00.000+00:002012-07-08T02:54:39.964+00:00If I had a dollar for every idea...On suspendable computers retaining network services with conditional wakeup...<br/><br/><span style="color: #204a87;"><span style="font-size: x-small;">(11:28:29 AM) </span></span><a href="http://luke.faraone.cc/">Luke Faraone</a>: don't you hate it when you think of something cool, only to find that someone else already thought of it?<br/><span style="font-size: x-small;"><span style="color: #cc0000;">(11:28:47 AM) </span></span><a href="http://push.cx">Peter Harkins</a>: Depends. Sometimes I then think "Awesome, now I don't have to spend all that time building it."<br/><span style="color: #204a87;"><span style="font-size: x-small;">(11:29:34 AM) </span></span>Luke Faraone: I recently was thinking "it'd be cool to be able to have a smaller 'little computer' with a NIC, some RAM, and a low-powered CPU to maintain presence on IRC etc when my computer's sleeping." Then I saw <a href="http://it.slashdot.org/story/10/06/13/0641228/Microsofts-Sleep-Proxy-Lowers-PC-Energy-Use">http://it.slashdot.org/story/10/06/13/0641228/Microsofts-Sleep-Proxy-Lowers-PC-Energy-Use</a><br/><span style="color: #204a87;"><span style="font-size: x-small;">(11:29:39 AM) </span></span>Luke Faraone: ... and it's from MSFT.<br/><span style="font-size: x-small;"><span style="color: #cc0000;">(11:30:12 AM) </span></span>Peter Harkins: cute<br/><span style="font-size: x-small;"><span style="color: #cc0000;">(11:30:25 AM) </span></span>Peter Harkins: There are lots of tiny Linux pc's out there, though.<br/><span style="font-size: x-small;"><span style="color: #cc0000;">(11:30:45 AM) </span></span>Peter Harkins: I've seen a couple the size of a power brick - you plug them in, add ethernet, done.<br/><span style="color: #204a87;"><span style="font-size: x-small;">(11:31:14 AM) </span></span>Luke Faraone: what'd be really cool is if one could author an API that would allow for desktop applications to request access to run services on the device, and have state magically transfer across them.<br/><span style="font-size: x-small;"><span style="color: #cc0000;">(11:31:40 AM) </span></span>Peter Harkins: I've seen people talking about doing that - I wouldn't be surprised to see it commonly in 5y.<br/><span style="font-size: x-small;"><span style="color: #cc0000;">(11:31:49 AM) </span></span>Peter Harkins: It's sort of the logical extension of GNU screen.<br/><span style="color: #204a87;"><span style="font-size: x-small;">(11:32:10 AM) </span></span>Luke Faraone: we have live migration of VMs in the enterprise market.<span style="color: #cc0000;"><span style="font-size: xx-small;"><br/></span></span> <span style="color: #204a87;"><span style="font-size: x-small;">(11:32:34 AM) </span></span>Luke Faraone: if the wall wart had hypervisor support, you could just operate each service in a sort of sandbox.<br/><br/>I know that in order to make it work in reality, we'd need support from app developers, but are there any technical reasons this won't work?Luke Faraonehttp://www.blogger.com/profile/11679092740238566479noreply@blogger.com1tag:blogger.com,1999:blog-1354659632607599854.post-78732320995037270982010-02-25T23:26:00.000+00:002012-07-08T02:54:39.974+00:00Low-tech anti-surveillance tool for the OLPC XO-1<div style="float: right; margin-left: 10px; margin-bottom: 10px;"><br/><br/><a title="photo sharing" href="http://www.flickr.com/photos/lfaraone/4386519014/"><img style="border: solid 2px #000000;" src="http://farm5.static.flickr.com/4052/4386519014_55ed834441_m.jpg" alt="" /></a><br/><br/></div><br/>After reading <a href="http://www.washingtonpost.com/wp-dyn/content/article/2010/02/25/AR2010022502339.html">several</a> <a href="http://www.washingtonpost.com/wp-dyn/content/article/2010/02/19/AR2010021902004.html">articles</a> about the alleged spying that was enabled by a Pennsylvania school district via its one-to-one <a href="http://www.apple.com/macbook/">MacBook</a>, and seeing discussion on a variety of mailing lists, I've decided to implement my own zero-cost, no-hassle solution to the problem for the <a href="http://en.wikipedia.org/wiki/OLPC_XO-1">OLPC XO-1</a>'s camera.<br/><br/>This should be able to be adopted in <a href="http://wiki.laptop.org/go/Deployments">deployments</a> everywhere, by anyone with a piece of paper, or anything else they can slide through the plastic faceplate.<br/><br/>Just say no to fancy addons and factory-added "shutters" or "covers", make your own!Luke Faraonehttp://www.blogger.com/profile/11679092740238566479noreply@blogger.com2tag:blogger.com,1999:blog-1354659632607599854.post-15767859373396174602010-01-14T22:36:00.000+00:002012-07-08T02:54:39.952+00:00Sometimes things get complicated... (Handling upgrades from Karmic)I'm the <a href="http://packages.debian.org/unstable/kde/autokey">package maintainer</a> for <a href="http://autokey.googlecode.com">Autokey</a> in Debian. Upstream recently changed from using GTK+ to Qt4, which caused <a href="http://bugs.debian.org/cgi-bin/bugreport.cgi?msg=5;bug=545868">more</a> than <a href="http://bugs.debian.org/cgi-bin/bugreport.cgi?msg=15;bug=545868">one</a> complaint from users of <a href="http://www.debian.org/releases/testing/">testing</a>.<br/><br/>The<a href="http://autokey.googlecode.com/files/autokey-gtk_0.61.2.tar.gz"> GTK+ version</a> of the package is published in <a href="https://edge.launchpad.net/ubuntu/karmic">Ubuntu 9.10 Karmic</a>. While upstream is continuing to do regular releases of the GTK version, they are focusing on the <a href="http://autokey.googlecode.com/files/autokey_0.61.2.tar.gz">KDE version</a> and have changed <code>autokey</code> to refer to the KDE version, while renaming the GTK version (formally <code>autokey</code>) to <code>autokey-gtk</code>. To make matters worse, upstream releases both as separate tarballs, and the packages conflict with one another. (due to technical limitations)<br/><br/>What's the proper proceedure for handling this in Ubuntu? Should <code>-gtk </code><strong>conflict</strong> with <code>autokey</code>, <strong>replace</strong> it, with <code>autokey-qt </code>being available as an option, or should I just keep things as they are and have the package "change out from under" users when they upgrade?<code></code>Luke Faraonehttp://www.blogger.com/profile/11679092740238566479noreply@blogger.com1tag:blogger.com,1999:blog-1354659632607599854.post-82682000701147677262009-11-30T09:25:00.000+00:002012-07-08T02:54:39.977+00:00Fix bricked XOs automaticallyI've been getting increasing numbers of requests from donors in the first <a href="http://laptop.org">OLPC</a> <a href="http://en.wikipedia.org/wiki/G1G1">Give 1 Get 1</a>, many of whom are just getting around to opening their XOs, to have their laptops repaired. As is now widely known, due to a manufacturing glitch the first few batches of <a href="http://en.wikipedia.org/wiki/OLPC_XO-1">OLPC XO-1</a>s that were shipped to consumers had a faulty motherboard battery holder. This alone wouldn't be a problem, if only two other things hadn't happened at the same time:<br/><ul><br/> <li>The XO-1s were shipped with <a href="http://wiki.laptop.org/go/Open_Firmware">Open Firmware</a>'s <a href="http://wiki.laptop.org/go/Firmware_security">security</a> enabled. This caused them to have the same anti-theft protection as laptops deployed in the third world, without any of the benefits of a remote killswitch or tracking</li><br/> <li>The XO-1s had a version of OFW which would fail to boot when the clock was below a certain value</li><br/></ul><br/>The above two issues combined with the manufacturing fault was a recipe for disaster. Owners who discovered this in the first 30 days were able to get a <a href="http://en.wikipedia.org/wiki/Return_merchandise_authorization">RMA</a> and a working laptop, but OLPC lacked the resources to support those outside of this minimal warranty. <span class="author-p-470">I've been running an OLPC repair center, <a href="http://wiki.laptop.org/go/OLPC_DC_Repair">OLPC DC Repair</a>, (charging only minimal fees for labor and shipping) since mid-2008, and have handled dozens of these "unbricking" problems.</span><br/><br/>The <a href="http://wiki.laptop.org/go/Fix_clock">procedure</a> for repairing the above is straightforward and well documented. However, it can be tedious, especially for those who are unfamiliar with the tools involved. Since I needed the programming practice anyway, I decided to write a rudimentary <a href="http://python.org">Python</a> script to automate the process. <span class="author-p-470"><br/></span><br/><br/><strong>Thus enters d6.py</strong>. d6.py makes it (hopefully) amazingly simple to unbrick your XO, so that you can get up and running as soon as possible. You can clone the <a href="http://dev.laptop.org/git/activities/olpc-contrib/">git repo</a>, or download it <a href="http://dev.laptop.org/git/activities/olpc-contrib/tree/d6.py">directly</a> (<a href="http://dev.laptop.org/git/activities/olpc-contrib/tree/d6.py?id=ba0a7fd55cfdd9e93d879cf390e5e1f53bca09b2">permalink</a>). <span>To download and run in a single command</span>:<br/><pre>python -c "import urllib2; exec urllib2.urlopen('http://dev.laptop.org/git/activities/olpc-contrib/tree/d6.py').read();</pre><br/>Plug in your <a href="http://wiki.laptop.org/go/Serial_adapters#">OLPC Serial Adapter</a> (or one of the <a href="http://wiki.laptop.org/go/Serial_adapters#Third_Party_Adapters">compatible alternatives</a>), and run the script as a user which has access to <em>/dev/ttyUSB0</em> (or as root, not recommended) or change the path inside the script to something suitable to your system. This script is in the alpha state, is poorly documented, and may not handle all edge cases (read: other people's systems) well. I'm not responsible if it kills your cat, lights your XO on fire, or makes your wife leave you, but hopefully it'll be of some use. Expect a GUI shortly.<br/><br/>Limitations:<br/><ul><br/> <li>Does not handle all error conditions</li><br/> <li>No command line params</li><br/> <li>Hard-coded path to serial adapter</li><br/></ul><br/>Therefore, the code does not run on other platforms other than Linux. You might also encounter problems if you're running it on a system with <em>brltty</em> installed, removing it should fix the conflict.<br/><br/>Feedback is more than welcome in the comments.<br/><div id="_mcePaste" style="overflow: hidden; position: absolute; left: -10000px; top: 267px; width: 1px; height: 1px;"><span class="author-p-470">I've been running an OLPC repair center<br/></span></div>Luke Faraonehttp://www.blogger.com/profile/11679092740238566479noreply@blogger.com7