<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/atom10full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><feed xmlns="http://www.w3.org/2005/Atom" xmlns:openSearch="http://a9.com/-/spec/opensearch/1.1/" xmlns:blogger="http://schemas.google.com/blogger/2008" xmlns:georss="http://www.georss.org/georss" xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr="http://purl.org/syndication/thread/1.0" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" gd:etag="W/&quot;CkANSHw_fSp7ImA9WhBVGEg.&quot;"><id>tag:blogger.com,1999:blog-4771631636333583067</id><updated>2013-04-24T17:46:39.245-07:00</updated><category term="corporation" /><category term="idea" /><category term="software construction" /><category term="gear6" /><category term="mysql" /><category term="collaboration" /><category term="IT" /><category term="okcupid" /><category term="open source" /><category term="Security" /><category term="conference" /><category term="lca2013" /><category term="OpenStack" /><category term="AWS" /><category term="patents" /><category term="hp cloud services" /><category term="gpl" /><category term="drizzle" /><category term="travel" /><category term="android" /><category term="Canonical" /><category term="memcached" /><category term="nosql" /><category term="mysqlconf" /><category term="Ubuntu" /><category term="meetings" /><category term="stories" /><category term="data" /><category term="BOFH" /><category term="work" /><category term="sociology" /><category term="Cloud" /><category term="lca2012" /><title>Machines Plus Minds</title><subtitle type="html">Public musings about the technologies and implications of cloud computing, open source software, open standards, and any other stuff that I find interesting.</subtitle><link rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml" href="http://machinesplusminds.blogspot.com/feeds/posts/default" /><link rel="alternate" type="text/html" href="http://machinesplusminds.blogspot.com/" /><link rel="next" type="application/atom+xml" href="http://www.blogger.com/feeds/4771631636333583067/posts/default?start-index=26&amp;max-results=25&amp;redirect=false&amp;v=2" /><author><name>Mark Atwood</name><uri>https://plus.google.com/115686903235135444192</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh4.googleusercontent.com/-rX0CBo2seeo/AAAAAAAAAAI/AAAAAAAAFIc/f1MHjPV_0BA/s512-c/photo.jpg" /></author><generator version="7.00" uri="http://www.blogger.com">Blogger</generator><openSearch:totalResults>88</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/atom+xml" href="http://feeds.feedburner.com/MachinesPlusMinds" /><feedburner:info uri="machinesplusminds" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><entry gd:etag="W/&quot;CkIGQHk6fip7ImA9WhBSGU8.&quot;"><id>tag:blogger.com,1999:blog-4771631636333583067.post-6333298994015443516</id><published>2013-02-26T15:15:00.000-08:00</published><updated>2013-02-26T15:15:21.716-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2013-02-26T15:15:21.716-08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="open source" /><category scheme="http://www.blogger.com/atom/ns#" term="OpenStack" /><category scheme="http://www.blogger.com/atom/ns#" term="collaboration" /><category scheme="http://www.blogger.com/atom/ns#" term="meetings" /><category scheme="http://www.blogger.com/atom/ns#" term="Canonical" /><category scheme="http://www.blogger.com/atom/ns#" term="Ubuntu" /><title>On big technical meetings, or why the end of the UDS is a bad idea</title><content type="html">&lt;div&gt;
&lt;p&gt;
Canonical has just announced that the Ubuntu Developer Summit will no longer be face to face and every six months. Instead it will be entirely online and virtual, using Google Hangouts. (Here is the &lt;a href="http://fridge.ubuntu.com/2013/02/26/ubuntu-developer-summits-now-online-and-every-three-months/"&gt;announcement&lt;/a&gt;.)&lt;/p&gt;
&lt;p&gt;
On the surface, this seems like a good idea: It's cheaper monetarily, it appears to open things up to people who are unable to travel, and it makes it easier to make complete records.&lt;br /&gt;
&lt;/p&gt;
&lt;p&gt;
However, I think it's a bad idea, for several interrelated reasons.&lt;br /&gt;
&lt;/p&gt;
&lt;p&gt;
Some decision making needs face-time to happen.  For whatever reasons, internet-only communication is not enough for a good enough "meeting of the minds" for sticky or subtle engineering and design decisionmaking.
&lt;/p&gt;
&lt;p&gt;
The IETF, who probably have the longest history of any organization ever of online internet-enabled collaboration, worked out long ago that while day to day collaboration can be done over email and text chat, some technical decison-making HAS to be done face to face. Thus, the IETF meets every 6 months.
&lt;/p&gt;
&lt;p&gt;
Likewise, at the old MySQL AB, even though the entire company was famously completely distributed, we also figured out that despite being on email and IRC with each other every day, we had to meet ever 6 months, for face-time decision making. Thus, the whole company met every year, and then each team or group met together at least one other time over the year.
&lt;/p&gt;
&lt;p&gt;
And then, most anyone who actually does a working attendance (as opposed to just helicoptering in to give an executive keynote, or being whisked off to a secured conference room to have a private upper executive meeting) at a technical conference knows, most of the ACTUAL work at a conference or at a technical design summit happens in the hallways, over dinner, in serendipitious meetings, in people introducing people to each other, and in impromptu engineering meetings.&lt;/p&gt;
&lt;p&gt;
These are the reasons that the OpenStack community meets together every 6 months, for our own design summit.  The keynotes, the vendor booths with their signboards and handouts, the standard podium-and-rows-of-seats are, at best, a sideshow, from where the real work is getting done, the reason for the summit: the circles (not rows) of seats for the design summit meetings, and for the hallways, informal dinners, and social mixers, where all the individual meetings and necessary social processing happens.
&lt;/p&gt;
&lt;p&gt;
I started to make a list of all the times I personally was part of such unstructured un-"planned" events at conferences that had significant impact, and the list grew too long, so I cut it from this post.
&lt;/p&gt;
&lt;p&gt;
Email and IRC and etherpad are awesome tools, and I commend Ubuntu, as well as most other large &amp;nbsp;collaborative open source projects, such as OpenStack, for using them. &amp;nbsp;Likewise, Google Hangouts seem to be pretty awesome, and I'm glad that Canonical is trying them.
&lt;/p&gt;
&lt;p&gt;
However, they do not replace face to face large group meetings, and cannot solve the problems that such gatherings can.
&lt;/p&gt;
&lt;p&gt;
I wish Canonical and Ubuntu well, but this is a mistake that I hope does not damage them too much.
/p
&lt;/div&gt;
&lt;img src="http://feeds.feedburner.com/~r/MachinesPlusMinds/~4/MM5E6XwjXqI" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://machinesplusminds.blogspot.com/feeds/6333298994015443516/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://machinesplusminds.blogspot.com/2013/02/on-big-technical-meetings-or-why-end-of.html#comment-form" title="1 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/4771631636333583067/posts/default/6333298994015443516?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/4771631636333583067/posts/default/6333298994015443516?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/MachinesPlusMinds/~3/MM5E6XwjXqI/on-big-technical-meetings-or-why-end-of.html" title="On big technical meetings, or why the end of the UDS is a bad idea" /><author><name>Mark Atwood</name><uri>https://plus.google.com/115686903235135444192</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh4.googleusercontent.com/-rX0CBo2seeo/AAAAAAAAAAI/AAAAAAAAFIc/f1MHjPV_0BA/s512-c/photo.jpg" /></author><thr:total>1</thr:total><feedburner:origLink>http://machinesplusminds.blogspot.com/2013/02/on-big-technical-meetings-or-why-end-of.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CkMGSXw6eCp7ImA9WhBTF0g.&quot;"><id>tag:blogger.com,1999:blog-4771631636333583067.post-591644690820405181</id><published>2013-02-13T02:13:00.004-08:00</published><updated>2013-02-13T02:13:48.210-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2013-02-13T02:13:48.210-08:00</app:edited><title>Maven's role...</title><content type="html">&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;
&lt;span&gt;"Maven is a great tool to make sure that your expensive and critical application servers are running an independent copy of every single version of every single 2nd and 3rd party Java library ever written."&lt;/span&gt;&lt;/div&gt;
&lt;img src="http://feeds.feedburner.com/~r/MachinesPlusMinds/~4/z6Zk8GfceMg" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://machinesplusminds.blogspot.com/feeds/591644690820405181/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://machinesplusminds.blogspot.com/2013/02/mavens-role.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/4771631636333583067/posts/default/591644690820405181?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/4771631636333583067/posts/default/591644690820405181?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/MachinesPlusMinds/~3/z6Zk8GfceMg/mavens-role.html" title="Maven's role..." /><author><name>Mark Atwood</name><uri>https://plus.google.com/115686903235135444192</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh4.googleusercontent.com/-rX0CBo2seeo/AAAAAAAAAAI/AAAAAAAAFIc/f1MHjPV_0BA/s512-c/photo.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://machinesplusminds.blogspot.com/2013/02/mavens-role.html</feedburner:origLink></entry><entry gd:etag="W/&quot;C0IASH45eip7ImA9WhNaFkU.&quot;"><id>tag:blogger.com,1999:blog-4771631636333583067.post-6272514009230897241</id><published>2013-01-31T17:15:00.000-08:00</published><updated>2013-01-31T17:19:09.022-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2013-01-31T17:19:09.022-08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="conference" /><category scheme="http://www.blogger.com/atom/ns#" term="OpenStack" /><category scheme="http://www.blogger.com/atom/ns#" term="lca2013" /><category scheme="http://www.blogger.com/atom/ns#" term="hp cloud services" /><title>Why I love the Hallway Track, or instigating a junk OpenStack cloud</title><content type="html">&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;
I just had an experience that reminds me why I find physically going to open source conferences valuable and rewarding.&lt;br /&gt;
&lt;br /&gt;
I am here at the last day of Linux.conf.au 2013 in Canberra.&amp;nbsp; Earlier today, Tim Berners-Lee delivered his keynote.&amp;nbsp; Afterwards, we all moved over to the main public hall for afternoon tea.&lt;br /&gt;
&lt;br /&gt;
I happened to overhear a trio of young university students talking about the huge presence of the OpenStack project at this LCA, and expressing some misconceptions about the project.&amp;nbsp; Two of them had never even heard of OpenStack before seeing it presented here at the conference.&lt;br /&gt;
&lt;br /&gt;
As one may do in the "hallway track" of conferences like this, I jumped in, and introduced myself, and gave them a better overview of what OpenStack is and what it tries to do, while handing out business cards&lt;br /&gt;
&lt;br /&gt;
"You mean with this OpenStack, I can run my own cloud?"&lt;br /&gt;
&lt;br /&gt;
"Yes.&amp;nbsp; You do have to supply the hardware."&lt;br /&gt;
&lt;br /&gt;
"Well, our department is throwing out heaps of old PCs.&amp;nbsp; We could gather them up, haul them down to our student computer club, and install it on them..."&lt;br /&gt;
&lt;br /&gt;
I encouraged this line of thought, and pointed out that having ops experience and dev experience with OpenStack is right now really good for getting a job.&lt;br /&gt;
&lt;br /&gt;
THAT got their attention.&lt;br /&gt;
&lt;br /&gt;
"I could get a job with HP if I do this?"&lt;br /&gt;
&lt;br /&gt;
"You could get a job at lots of places.&amp;nbsp; Lots of companies are getting into OpenStack, and they are hiring."&lt;br /&gt;
&lt;br /&gt;
When I left them for the next talk, they were talking about getting in touch with all the other Australian university computer student clubs, each club installing OpenStack on recovered junked PCs, and joining them all together as availability zones.&lt;br /&gt;
&lt;br /&gt;
I like to hope I've instigated something fun here.&amp;nbsp; Or at least made some people's lives more interesting.&lt;/div&gt;
&lt;img src="http://feeds.feedburner.com/~r/MachinesPlusMinds/~4/aSLt8aEZA8Q" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://machinesplusminds.blogspot.com/feeds/6272514009230897241/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://machinesplusminds.blogspot.com/2013/01/why-i-love-hallway-track-or-instigating.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/4771631636333583067/posts/default/6272514009230897241?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/4771631636333583067/posts/default/6272514009230897241?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/MachinesPlusMinds/~3/aSLt8aEZA8Q/why-i-love-hallway-track-or-instigating.html" title="Why I love the Hallway Track, or instigating a junk OpenStack cloud" /><author><name>Mark Atwood</name><uri>https://plus.google.com/115686903235135444192</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh4.googleusercontent.com/-rX0CBo2seeo/AAAAAAAAAAI/AAAAAAAAFIc/f1MHjPV_0BA/s512-c/photo.jpg" /></author><thr:total>0</thr:total><georss:featurename>Australian National University, Barry Dr, Acton ACT 0200, Australia</georss:featurename><georss:point>-35.2776999 149.11852699999997</georss:point><georss:box>-35.3036234 149.07818649999996 -35.251776400000004 149.15886749999999</georss:box><feedburner:origLink>http://machinesplusminds.blogspot.com/2013/01/why-i-love-hallway-track-or-instigating.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CEMBSXc7fCp7ImA9WhNbFUg.&quot;"><id>tag:blogger.com,1999:blog-4771631636333583067.post-2459669276480151885</id><published>2013-01-18T15:40:00.001-08:00</published><updated>2013-01-18T15:40:58.904-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2013-01-18T15:40:58.904-08:00</app:edited><title>Thoughts on Google, YubiCo, and "The War on Passwords"</title><content type="html">&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;
&lt;br /&gt;
There are a lot of articles going around the blogosphere today about Google "&lt;a href="http://www.wired.com/wiredenterprise/2013/01/google-password/"&gt;Declaring War on the Password&lt;/a&gt;", and showing picturers of a &lt;a http="https://www.yubico.com/"&gt;YubiKey&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
While I am a fan and proponent of improved trustworthyness of authentication, especially with using 2 factor protocols like &lt;a href="http://www.openauthentication.org/"&gt;HOTP and TOTP&lt;/a&gt; and devices like the YubiKey, I am curious as to what all the hubub is about today.&lt;br /&gt;
&lt;br /&gt;
What keeps Google Authenticator and YubiKey from easily working together right now is the fact that Google uses TOTP and YubiKey implements HOTP. &amp;nbsp;They are almost the same protocol, with one important difference. &amp;nbsp;TOTP is time based. &amp;nbsp;That's what the T stands for. &amp;nbsp;Every fixed internal (usually 30 seconds) a TOTP token generates a new password, which means that token needs to know what time it is, which means it needs a clock. &amp;nbsp;While a HOTP device like a YubiKey just needs to keep a counter, and generates a new password every time it's button is pressed.&lt;br /&gt;
&lt;br /&gt;
So the Google and Yubi partnership means one of three things. &lt;br /&gt;
&lt;br /&gt;
&lt;ol&gt;
&lt;li&gt;Google is going to support HOTP on the Google Two Factor Login service, or&lt;br /&gt;
&lt;li&gt;Google and YubiCo have figured how to to put an extremely low power clock and extremely small battery into a new version of the YubiKey, or&lt;br /&gt;
&lt;li&gt;Google and YubiCo have written a USB device driver that speaks to the YubiKey when it's plugged in and tells it what time it is to generate the correct password (which means that driver needs to be installed on every Windows/Linux/MacOS/ChromeOS device you want to use the token on)&lt;br /&gt;
&lt;/ol&gt;
I look forward to seeing which one it is. &amp;nbsp;My money is on option #3, with the added guess that it will probably only be supported, at least initially, only on machines running Chrome or ChromeOS.&lt;br /&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/MachinesPlusMinds/~4/4NxO-0mqYt4" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://machinesplusminds.blogspot.com/feeds/2459669276480151885/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://machinesplusminds.blogspot.com/2013/01/thoughts-on-google-yubico-and-war-on.html#comment-form" title="3 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/4771631636333583067/posts/default/2459669276480151885?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/4771631636333583067/posts/default/2459669276480151885?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/MachinesPlusMinds/~3/4NxO-0mqYt4/thoughts-on-google-yubico-and-war-on.html" title="Thoughts on Google, YubiCo, and &quot;The War on Passwords&quot;" /><author><name>Mark Atwood</name><uri>https://plus.google.com/115686903235135444192</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh4.googleusercontent.com/-rX0CBo2seeo/AAAAAAAAAAI/AAAAAAAAFIc/f1MHjPV_0BA/s512-c/photo.jpg" /></author><thr:total>3</thr:total><feedburner:origLink>http://machinesplusminds.blogspot.com/2013/01/thoughts-on-google-yubico-and-war-on.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DEQMQHw4fSp7ImA9WhJXEko.&quot;"><id>tag:blogger.com,1999:blog-4771631636333583067.post-3193876779510267284</id><published>2012-08-04T07:25:00.001-07:00</published><updated>2012-08-06T11:06:21.235-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-08-06T11:06:21.235-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="BOFH" /><category scheme="http://www.blogger.com/atom/ns#" term="IT" /><category scheme="http://www.blogger.com/atom/ns#" term="stories" /><category scheme="http://www.blogger.com/atom/ns#" term="corporation" /><title>Mark's Stories: "The carpets are so clean, we don't need janitors!"</title><content type="html">&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;
(edit: Hello to the folks who are coming here from &lt;a href="http://news.ycombinator.com/item?id=4339262"&gt;YCombinator Hacker News&lt;/a&gt;. &amp;nbsp;Feel free to comment here as well as on YCHN. &amp;nbsp;I've posted a few more details about this story at YCHN.)&lt;br /&gt;
&lt;br /&gt;
At one company I worked at, one of the problems it didn't have was IT.&lt;br /&gt;
&lt;br /&gt;
When someone was hired, by the time they got to their new desk, there was a computer on it with the correct image on it, their desk phone worked, their email worked, the calendaring and scheduling worked, and all necessary passwords and ACLs were configured. &amp;nbsp;The internal ethernet networks all worked, were fast, and were properly isolated from each other. &amp;nbsp;The wall ports were all correctly labeled, and there where the right kinds of wall ports in each cubical and conference room. The presentation projectors and conference room speaker phones all worked. The printers all worked, printed cleanly, were kept stocked, and were consistently named. The internet connections were fast and well managed. &amp;nbsp;Internal and external security incidents were quickly recognized and dealt with. Broken machines were immediately replaced with working and newly imaged replacements. If someone accidentally deleted a file, getting it back from backup typically took less than an hour. Software updates were announced ahead of time, and usually happened without issue.&lt;br /&gt;
&lt;br /&gt;
The IT staff did not seem noticeably bitter, angry, harried, or otherwise suffering from the emotional costs traditionally endemic to that job role. &amp;nbsp;In fact, they were almost invisible in their skill and competence.&lt;br /&gt;
&lt;br /&gt;
So, of course, came the day when the senior executives said "the carpets are just naturally clean all the time, we don't need all these janitors!". IT was "reorganized" into a smaller staff of younger and much less experienced (and probably cheaper) people.&lt;br /&gt;
&lt;br /&gt;
Of course, it all went to shit. &amp;nbsp;New employees would go a week before they had machines, phones, passwords, and ACLs. &amp;nbsp;Printers ran out of paper, projectors ran out of lightbulbs, servers ran out of storage, networks got misconfigured, and so forth. &amp;nbsp;The total time lost and wasted across the whole company was most certainly greater than the savings of laying off the expensive and skilled IT staff.&lt;br /&gt;
&lt;br /&gt;
This is not to say that the reorganized IT staff were stupid or lazy. &amp;nbsp;They worked very hard and ran themselves ragged trying to keep up with the cycle of operations, while trying to skill themselves up in their "spare time" and with a slashed training budget.&lt;br /&gt;
&lt;br /&gt;
The lessons I learned from this experience speak for themselves.&lt;br /&gt;
&lt;br /&gt;
What lessons that may have been learned by any of the other people involved, especially the executives who made these decisions, I cannot say.&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/MachinesPlusMinds/~4/Vm_zBSiYk3A" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://machinesplusminds.blogspot.com/feeds/3193876779510267284/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://machinesplusminds.blogspot.com/2012/08/the-carpets-are-so-clean-we-dont-need.html#comment-form" title="13 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/4771631636333583067/posts/default/3193876779510267284?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/4771631636333583067/posts/default/3193876779510267284?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/MachinesPlusMinds/~3/Vm_zBSiYk3A/the-carpets-are-so-clean-we-dont-need.html" title="Mark's Stories: &quot;The carpets are so clean, we don't need janitors!&quot;" /><author><name>Mark Atwood</name><uri>https://plus.google.com/115686903235135444192</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh4.googleusercontent.com/-rX0CBo2seeo/AAAAAAAAAAI/AAAAAAAAFIc/f1MHjPV_0BA/s512-c/photo.jpg" /></author><thr:total>13</thr:total><feedburner:origLink>http://machinesplusminds.blogspot.com/2012/08/the-carpets-are-so-clean-we-dont-need.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DUYGRnc-eSp7ImA9WhJXEko.&quot;"><id>tag:blogger.com,1999:blog-4771631636333583067.post-2512150328775228619</id><published>2012-08-03T13:38:00.002-07:00</published><updated>2012-08-06T11:18:47.951-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-08-06T11:18:47.951-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="open source" /><category scheme="http://www.blogger.com/atom/ns#" term="work" /><category scheme="http://www.blogger.com/atom/ns#" term="stories" /><title>Mark's Stories: The Closed Source Drivers</title><content type="html">&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;
&lt;br /&gt;
I was working on a highly constrained consumer electronics device, a little "satellite device" that spoke to the main device over a CATV RF coax cable and also received commands from an IR remote control. &amp;nbsp;My code was failing in bizarre ways. &amp;nbsp;I adopted an extremely paranoid defensive programming stance, filling my code with asserts and doing paranoid cross checking of all inputs. &amp;nbsp;This didn't make the device work. &amp;nbsp;Instead it now consistently did not work, instead of inconsistently, because the cross checks and asserts would usually (but not always) trip before it would crash. It also started to run out of memory because of the all the paranoia code I had added.&lt;br /&gt;
&lt;br /&gt;
I asked for the source code for the driver for the IR receiver, and for the driver for the &amp;nbsp;CATV RF digital transceiver, and for the peer code that was driving the cable digital that ran on the main device.&lt;br /&gt;
&lt;br /&gt;
The driver for the CATF RF digital transceiver was handed to me the first time I asked. &amp;nbsp;And by "handed to me" I mean that I was pointed to where it was sitting in the source repo.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The business partner / hardware supplier who was supplying the IR glue and drivers, after giving me a runaround, finally just flat out refused, citing trade secrets, confidentiality, secret sauce, and similar bullshit.&lt;br /&gt;
&lt;br /&gt;
So, I finally "stole" the source code with a disassembler. &amp;nbsp;And found the sources of many of my problems. &amp;nbsp;It was complete shit. &amp;nbsp;"Unexpected" input from the silicon would cause wild random pointer writes. &amp;nbsp;And random sunlight on the receiver optics would cause it. &amp;nbsp;"Expected" input of undefined remote commands wasn't much better, generating and handing back blocks of garbage with incorrect block length headers.&lt;br /&gt;
&lt;br /&gt;
I ended up writing, nearly from scratch, a replacement IR receiver driver.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The peer device driver code was written by a developer in a different group in my same company. &amp;nbsp;I finally got the P4 ACLs to read it after loudly escalating, over the objections of it's developer and his group manager. &amp;nbsp;It was also complete shit. &amp;nbsp;I cannot even begin to remember everything that was wrong with it, but I not only figured out may of the sources of my own pain, I also found a significant source of crash and lockup bugs that afflicted the main device.&lt;br /&gt;
&lt;br /&gt;
I was not allowed to rewrite the peer code, as it was not in my remit. &amp;nbsp;However, I was able to sneak in and check in a large number of asserts using the excuse that they were "inline documentation".&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
On, and the device driver for the CATF RF digital transceiver? &amp;nbsp;The source code I got for the asking, without a fight? &amp;nbsp;When I reviewed it, it was easy to understand, efficient, elegant, and as far as I could tell, bug free.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
In the end, I made my part work. &amp;nbsp;It just took over two months instead of the original guesstimate of less than two weeks. &amp;nbsp;This caused a schedule slip in the release of the satellite box. &amp;nbsp;Which would have been a more serious problem, except…&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Except there was also major schedule slip for the main box. &amp;nbsp;A significant reason for that slip was because the peer code that I had filled with asserts was now itself crashing with assertion failures instead of emitting garbage to crash my code.) &amp;nbsp;I was lucky that I was not more officially "blamed" for that. &amp;nbsp;The reason why I wasn't, was mainly because the people who understood what I did understood the problem, and the executives who didn't understand what the problem was were also too clueless to blame anyone, let alone me.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
My lesson learned from this experience is: if someone is refusing to show the source to suspect driver code, citing trade secrets, confidentiality, secret sauce, partnership agreements, or similar excuses, it's not because they are protecting their magic. &amp;nbsp;It's because they have screwed up, and they are trying to hide it.&lt;br /&gt;
&lt;br /&gt;
A second rule of thumb I have is: source control systems that have complex read ACLs, e.g. don't allow any arbitrary developer to check out and review any arbitrary source code file, are expressions of moral failure.&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/MachinesPlusMinds/~4/HDFrmPkneiA" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://machinesplusminds.blogspot.com/feeds/2512150328775228619/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://machinesplusminds.blogspot.com/2012/08/marks-stories-closed-source-drivers.html#comment-form" title="1 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/4771631636333583067/posts/default/2512150328775228619?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/4771631636333583067/posts/default/2512150328775228619?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/MachinesPlusMinds/~3/HDFrmPkneiA/marks-stories-closed-source-drivers.html" title="Mark's Stories: The Closed Source Drivers" /><author><name>Mark Atwood</name><uri>https://plus.google.com/115686903235135444192</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh4.googleusercontent.com/-rX0CBo2seeo/AAAAAAAAAAI/AAAAAAAAFIc/f1MHjPV_0BA/s512-c/photo.jpg" /></author><thr:total>1</thr:total><feedburner:origLink>http://machinesplusminds.blogspot.com/2012/08/marks-stories-closed-source-drivers.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CE4DRHo6fip7ImA9WhVaFkg.&quot;"><id>tag:blogger.com,1999:blog-4771631636333583067.post-4383956216702614920</id><published>2012-06-13T22:49:00.001-07:00</published><updated>2012-06-13T22:49:35.416-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-06-13T22:49:35.416-07:00</app:edited><title>On LinkedIn's claim of salting passwords</title><content type="html">&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;
&lt;p&gt;
In the wake of the leak of their password database, LinkedIn issued a blog post: &lt;a href="http://blog.linkedin.com/2012/06/09/an-update-on-taking-steps-to-protect-our-members/"&gt;An Update On Taking Steps To Protect Our Members&lt;/a&gt;, wherein they claim they had an existing project to salt the passwords, and that that "transition was completed prior to news of the password theft".&lt;/p&gt;
&lt;p&gt;
That cannot be true. The transition could not have been "completed". One cannot "transition" a bashed password to a salted properly hashed password. The original plaintext password is required to generate the salted and properly hashed data.&lt;/p&gt;
&lt;p&gt;
Best case, LinkedIn was in the process of slowly migrating accounts over, like so: When a user logs in, look in the new salted hash database. If there is no entry, then use the old unsalted hash to verify the user, then compute the new salted hash, store that, then delete the old unsalted one.&lt;/p&gt;
&lt;p&gt;
Doing it this way has the disadvantage that it doesn't protect the people who haven't yet logged in, and there are a LOT of LinkedIn users who log in to update their profile only occasionally, such as when they change jobs.&lt;/p&gt;
&lt;p&gt;
It does have the "advantage" that it's invisible, allowing a slow migration "on the down low".&lt;/p&gt;
&lt;p&gt;
However, I'm not hugely impressed.&lt;/p&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/MachinesPlusMinds/~4/x8J4HQSfT9c" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://machinesplusminds.blogspot.com/feeds/4383956216702614920/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://machinesplusminds.blogspot.com/2012/06/on-linkedins-claim-of-salting-passwords.html#comment-form" title="3 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/4771631636333583067/posts/default/4383956216702614920?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/4771631636333583067/posts/default/4383956216702614920?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/MachinesPlusMinds/~3/x8J4HQSfT9c/on-linkedins-claim-of-salting-passwords.html" title="On LinkedIn's claim of salting passwords" /><author><name>Mark Atwood</name><uri>https://plus.google.com/115686903235135444192</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh4.googleusercontent.com/-rX0CBo2seeo/AAAAAAAAAAI/AAAAAAAAFIc/f1MHjPV_0BA/s512-c/photo.jpg" /></author><thr:total>3</thr:total><feedburner:origLink>http://machinesplusminds.blogspot.com/2012/06/on-linkedins-claim-of-salting-passwords.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DUYMSXk7eyp7ImA9WhJXEko.&quot;"><id>tag:blogger.com,1999:blog-4771631636333583067.post-382925394680400488</id><published>2012-05-16T16:37:00.003-07:00</published><updated>2012-08-06T11:19:48.703-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-08-06T11:19:48.703-07:00</app:edited><title>Go get your whooping cough shot</title><content type="html">&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;
I just went on a half-hour binge reading about &lt;a href="http://en.wikipedia.org/wiki/Pertussis"&gt;pertussis&lt;/a&gt;, as a result of reading that WA state has an epidemic outbreak that the public health agencies are struggling to stop.&lt;br /&gt;
Reading people's first hand accounts of having it will cross your eyes in empathized pain. One person described that she has given birth, has suffered a compound fracture of a leg, has passed a kidney stone, and has had whooping cough. Only one of them made her wish for death. It's been described as feeling like an asthma attack while someone is punching you in the ribs. Oh, and most all cough medicines do pretty much nothing for it.&lt;br /&gt;
You, reading this. You. Right now, pick up your phone, and call your doctor's clinic. Ask them if you're up to date, and if you're not, go get your freaking &lt;a href="http://en.wikipedia.org/wiki/DPT_vaccine"&gt;DTaP&lt;/a&gt; shot. You can get one at Walgreen's for less than the cost of a high-end Starbucks drink. You owe it to yourself, you owe it to public health, you owe it to your friends and coworkers, and you owe it to every pregnant woman, every newborn, and every immunocompromised person you share this biosphere with.&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/MachinesPlusMinds/~4/TYCkpmrUHzY" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://machinesplusminds.blogspot.com/feeds/382925394680400488/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://machinesplusminds.blogspot.com/2012/05/go-get-your-whopping-cough-shot.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/4771631636333583067/posts/default/382925394680400488?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/4771631636333583067/posts/default/382925394680400488?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/MachinesPlusMinds/~3/TYCkpmrUHzY/go-get-your-whopping-cough-shot.html" title="Go get your whooping cough shot" /><author><name>Mark Atwood</name><uri>https://plus.google.com/115686903235135444192</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh4.googleusercontent.com/-rX0CBo2seeo/AAAAAAAAAAI/AAAAAAAAFIc/f1MHjPV_0BA/s512-c/photo.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://machinesplusminds.blogspot.com/2012/05/go-get-your-whopping-cough-shot.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DUMFRXg_eCp7ImA9WhJXEko.&quot;"><id>tag:blogger.com,1999:blog-4771631636333583067.post-8695778112176443405</id><published>2012-03-07T16:21:00.001-08:00</published><updated>2012-08-06T11:23:34.640-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-08-06T11:23:34.640-07:00</app:edited><title>Is there a "C for JVM"?</title><content type="html">&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;
&lt;span style="background-color: white; text-align: -webkit-auto;"&gt;The accusation that C is "structured assembly language" has merit. It is not hard for a competent developer to map C to CISC assembly, running the compiler in his head. &amp;nbsp;This is not a weakness, it is a strength, and is the reason why it remains a tool of choice when performance and size count.&lt;/span&gt;&lt;br /&gt;
&lt;br style="background-color: white; text-align: -webkit-auto;" /&gt;
&lt;span style="background-color: white; text-align: -webkit-auto;"&gt;As near as I can easily see, nobody has designed an equivalent language for the JVM. &amp;nbsp;Something that maps the language constructs closely and clearly to the underlying semantics of the actual procedural execution model. &amp;nbsp;With no "object code blowups", where doing some small change to the source causes a massive inflation of object code side.&lt;/span&gt;&lt;br /&gt;
&lt;br style="background-color: white; text-align: -webkit-auto;" /&gt;
&lt;span style="background-color: white; text-align: -webkit-auto;"&gt;Does such a language exist?&lt;/span&gt;&lt;br /&gt;
&lt;br style="background-color: white; text-align: -webkit-auto;" /&gt;
&lt;span style="background-color: white; text-align: -webkit-auto;"&gt;(BTW, the Java language itself is not it.)&lt;/span&gt;&lt;br /&gt;
&lt;br style="background-color: white; text-align: -webkit-auto;" /&gt;
&lt;span style="background-color: white; text-align: -webkit-auto;"&gt;Any random CS masters student can design a language that abstracts away an underlying reality. &amp;nbsp; A few rare and gifted language designers can do it well.&amp;nbsp;&lt;/span&gt;&lt;span style="background-color: white; text-align: -webkit-auto;"&gt;But it takes a rare genius to embrace and clarify an&amp;nbsp;underlying reality, and make it approachable and useful.&lt;/span&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/MachinesPlusMinds/~4/cbyc_IsaGdc" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://machinesplusminds.blogspot.com/feeds/8695778112176443405/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://machinesplusminds.blogspot.com/2012/03/is-there-c-for-jvm.html#comment-form" title="2 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/4771631636333583067/posts/default/8695778112176443405?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/4771631636333583067/posts/default/8695778112176443405?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/MachinesPlusMinds/~3/cbyc_IsaGdc/is-there-c-for-jvm.html" title="Is there a &quot;C for JVM&quot;?" /><author><name>Mark Atwood</name><uri>https://plus.google.com/115686903235135444192</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh4.googleusercontent.com/-rX0CBo2seeo/AAAAAAAAAAI/AAAAAAAAFIc/f1MHjPV_0BA/s512-c/photo.jpg" /></author><thr:total>2</thr:total><feedburner:origLink>http://machinesplusminds.blogspot.com/2012/03/is-there-c-for-jvm.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DEcMQXk5eSp7ImA9WhRVFEw.&quot;"><id>tag:blogger.com,1999:blog-4771631636333583067.post-6605731360724903782</id><published>2012-01-12T16:54:00.000-08:00</published><updated>2012-01-12T16:54:40.721-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-01-12T16:54:40.721-08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="lca2012" /><category scheme="http://www.blogger.com/atom/ns#" term="travel" /><title>On my way to LCA2012</title><content type="html">&lt;br /&gt;
I'm starting the first leg of a literal `round-the-world business trip.&lt;br /&gt;
&lt;br /&gt;
I'm flying from my home in Seattle, via LAX, to Melbourne Australia. &amp;nbsp;There I will meet up with my friend &lt;a href="http://www.linkedin.com/in/stewartsmith"&gt;Stewart Smith&lt;/a&gt;, the Director of Engineering at Percona. He is fellow survivor of MySQL &amp;amp; Sun, and a fellow contributor to &lt;a href="http://www.drizzle.org/"&gt;Drizzle&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
Other good friends of mine who are converging on Australia for LCA 2012 are &lt;a href="http://www.linkedin.com/in/sarahnovotny"&gt;Sarah Novotny&lt;/a&gt;, &lt;a href="http://www.linkedin.com/in/montytaylor"&gt;Monty Tayler&lt;/a&gt;, and &lt;a href="http://en.wikipedia.org/wiki/Jacob_Appelbaum"&gt;Jacob Applebaum&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
Why am I going to Australia? &amp;nbsp;Geeks into open source who are "in the know" know the Linux.conf.au conference to be one of the best open source conferences in the world. &amp;nbsp;This year it will be held in Ballarat, which is not far from Melbourne. &amp;nbsp;This will be my 4th LCA, having attended past ones in Brisbane, Wellington, and Tazmania&lt;br /&gt;
&lt;br /&gt;
At that conference, I will be speaking in the SysAdmin Miniconf, to demo &lt;a href="http://openshift.redhat.com/"&gt;OpenShift&lt;/a&gt;, Red Hat's cloud PaaS. &amp;nbsp;(Sign up with the promo code LCA2012.)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
This is only the first leg of this trip. &amp;nbsp;After LCA, I will be heading to Bangalore India to present at &lt;a href="http://www.jboss.org/events/JUDCon/2012/india"&gt;JUDCon:India&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
And after that, I will keep heading west to Europe, to present at &lt;a href="http://fosdem.org/2012/"&gt;FOSDEM&lt;/a&gt; in Brussels.&lt;br /&gt;
&lt;br /&gt;
And then who knows where I will go next?&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;&lt;img src="http://feeds.feedburner.com/~r/MachinesPlusMinds/~4/RMTUN4je8AU" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://machinesplusminds.blogspot.com/feeds/6605731360724903782/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://machinesplusminds.blogspot.com/2012/01/on-my-way-to-lca2012.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/4771631636333583067/posts/default/6605731360724903782?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/4771631636333583067/posts/default/6605731360724903782?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/MachinesPlusMinds/~3/RMTUN4je8AU/on-my-way-to-lca2012.html" title="On my way to LCA2012" /><author><name>Mark Atwood</name><uri>https://plus.google.com/115686903235135444192</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh4.googleusercontent.com/-rX0CBo2seeo/AAAAAAAAAAI/AAAAAAAAFIc/f1MHjPV_0BA/s512-c/photo.jpg" /></author><thr:total>0</thr:total><georss:featurename>Los Angeles International Airport (LAX), 8100 Westchester Pkwy, Los Angeles, CA 90045, USA</georss:featurename><georss:point>33.9434989 -118.4088701</georss:point><georss:box>33.917153400000004 -118.44835210000001 33.9698444 -118.3693881</georss:box><feedburner:origLink>http://machinesplusminds.blogspot.com/2012/01/on-my-way-to-lca2012.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CU8DQXc8fSp7ImA9WhJXEEQ.&quot;"><id>tag:blogger.com,1999:blog-4771631636333583067.post-6674321388252435676</id><published>2012-01-03T19:38:00.000-08:00</published><updated>2012-08-04T08:24:30.975-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-08-04T08:24:30.975-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="data" /><category scheme="http://www.blogger.com/atom/ns#" term="okcupid" /><category scheme="http://www.blogger.com/atom/ns#" term="sociology" /><title>Thoughts on travelling and OkCupid matching</title><content type="html">&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;
&lt;br /&gt;
I've had an OkCupid profile about 10 years, and have answered over 1200 questions in their database.&lt;br /&gt;
&lt;br /&gt;
When I travel, I sometimes reset my location in OkC to be the city I'm in. &amp;nbsp;It makes for an interesting view into the place that I'm at.&lt;br /&gt;
&lt;br /&gt;
When I'm in Seattle, there are surprisingly large number of people who match me at 95% or above. &amp;nbsp; When I am traveling, there are relatively few people who match that closely. &amp;nbsp;Often, there are none. &amp;nbsp;Even in very densely populated areas with an order of magnitude more people to match against.&lt;br /&gt;
&lt;br /&gt;
I find that very interesting.&lt;br /&gt;
&lt;br /&gt;
Did I end up living in Seattle because it's friendly to "people like me"? &amp;nbsp;Or is it the other way around, and being around Seattle has made me more like the people here I match so closely with?&lt;br /&gt;
&lt;br /&gt;
And then there are even more interesting questions one could ask and answer with the OkC database. &amp;nbsp;Does this kind of "lots of close matches" effect happen in every city? &amp;nbsp;How much dispersion is there in a given city? &amp;nbsp;After all, even if there are many people I match closely with, there are a LOT more in Seattle that I don't match at all. &amp;nbsp;How do other cities compare that way?&lt;br /&gt;
&lt;br /&gt;
Hopefully the data geeks inside OkC will someday answer these questions.&lt;br /&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/MachinesPlusMinds/~4/6no3Zd-_Pm0" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://machinesplusminds.blogspot.com/feeds/6674321388252435676/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://machinesplusminds.blogspot.com/2012/01/thoughts-on-travelling-and-okcupid.html#comment-form" title="1 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/4771631636333583067/posts/default/6674321388252435676?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/4771631636333583067/posts/default/6674321388252435676?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/MachinesPlusMinds/~3/6no3Zd-_Pm0/thoughts-on-travelling-and-okcupid.html" title="Thoughts on travelling and OkCupid matching" /><author><name>Mark Atwood</name><uri>https://plus.google.com/115686903235135444192</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh4.googleusercontent.com/-rX0CBo2seeo/AAAAAAAAAAI/AAAAAAAAFIc/f1MHjPV_0BA/s512-c/photo.jpg" /></author><thr:total>1</thr:total><georss:featurename>Capitol Hill, Seattle, WA, USA</georss:featurename><georss:point>47.6192 -122.3202</georss:point><georss:box>47.6084945 -122.339941 47.6299055 -122.300459</georss:box><feedburner:origLink>http://machinesplusminds.blogspot.com/2012/01/thoughts-on-travelling-and-okcupid.html</feedburner:origLink></entry><entry gd:etag="W/&quot;AkMAQ3ozcSp7ImA9WhRWEE8.&quot;"><id>tag:blogger.com,1999:blog-4771631636333583067.post-4383604102931460808</id><published>2011-12-22T10:52:00.000-08:00</published><updated>2011-12-27T15:27:22.489-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-12-27T15:27:22.489-08:00</app:edited><title>Ideas for Foursquare</title><content type="html">I have a list of ideas for Foursquare:&lt;br /&gt;
&lt;br /&gt;
One, they should open source their Android app, so people can improve it.&lt;br /&gt;
&lt;br /&gt;
Two, when a mobile app checks in, it should also send the mac of the wifi it's connected to, the mac &amp;amp; signal strengths of all the other wifi's it sees, the cellphone tower id the phone is connected to, the signal strengths of all the other towers it sees.&lt;br /&gt;
&lt;br /&gt;
Three, the app should be able to search for locations based on that data.  Why wait for a GPS lock and/or a couple of round trips trying to turn that information into a latlon and THEN search for locations near that latlon.  Cut out the middleman data.&lt;br /&gt;
&lt;br /&gt;
Four, the app should keep a local cache associating wifis &amp;amp; tower ids to checkin locations.  When my phone can see the local cafe's wifi access point blazing away, it should be able to instantly display the location I checked into the last time it saw that AP, without having to wait for a couple of network round trips and searches from the 4sq servers.&lt;br /&gt;
&lt;br /&gt;
Five, the Android app should integrate with the Map app just like Google Latitude does.  When I bring up Maps, there should be an overlay named 4sq that has pinpoints for all my friend's checkins in the last couple of hours.&lt;br /&gt;
&lt;br /&gt;
Six, they should start contributing their mapping information to OSM.  Or at least give the user the option to click a couple of checkboxes "Do you want to contribute your information to OSM?"&lt;br /&gt;
&lt;br /&gt;
Seven, they need to work with organizations and with serious crowdsource volunteers better.  For example, make it easy for an airport authority, a university, a mall, a public transit org, etc to create the canonical entries for airport gates and terminals and shops, for buildings and classrooms, for mall locations and shops, for bus and transit stops.&lt;img src="http://feeds.feedburner.com/~r/MachinesPlusMinds/~4/npg9VOlwnO4" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://machinesplusminds.blogspot.com/feeds/4383604102931460808/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://machinesplusminds.blogspot.com/2011/12/ideas-for-foursquare.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/4771631636333583067/posts/default/4383604102931460808?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/4771631636333583067/posts/default/4383604102931460808?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/MachinesPlusMinds/~3/npg9VOlwnO4/ideas-for-foursquare.html" title="Ideas for Foursquare" /><author><name>Mark Atwood</name><uri>https://plus.google.com/115686903235135444192</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh4.googleusercontent.com/-rX0CBo2seeo/AAAAAAAAAAI/AAAAAAAAFIc/f1MHjPV_0BA/s512-c/photo.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://machinesplusminds.blogspot.com/2011/12/ideas-for-foursquare.html</feedburner:origLink></entry><entry gd:etag="W/&quot;C0EDRXkzeSp7ImA9WhRQF0k.&quot;"><id>tag:blogger.com,1999:blog-4771631636333583067.post-6354191478252793676</id><published>2011-12-12T18:01:00.001-08:00</published><updated>2011-12-12T18:01:14.781-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-12-12T18:01:14.781-08:00</app:edited><title /><content type="html">I hate it when example or teaching code does something like:

&lt;code&gt;
import foo.bar.*&lt;br/&gt;
import foo.baz.*&lt;br/&gt;
&lt;/code&gt;

And then starts just using the symbols defined in foo.bar and foo.baz willynilly.

This is *stupid*.  The point of example code is to teach me.  Doing this in example code does not teach me which symbols are in which package, nor does it teach good form or proper idiom.  The only thing it teaches is rage against who ever wrote the examples.

Most all of the teaching docs and example code for Java are worst chronic offenders.&lt;img src="http://feeds.feedburner.com/~r/MachinesPlusMinds/~4/coGotapeBA8" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://machinesplusminds.blogspot.com/feeds/6354191478252793676/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://machinesplusminds.blogspot.com/2011/12/i-hate-it-when-example-or-teaching-code.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/4771631636333583067/posts/default/6354191478252793676?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/4771631636333583067/posts/default/6354191478252793676?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/MachinesPlusMinds/~3/coGotapeBA8/i-hate-it-when-example-or-teaching-code.html" title="" /><author><name>Mark Atwood</name><uri>https://plus.google.com/115686903235135444192</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh4.googleusercontent.com/-rX0CBo2seeo/AAAAAAAAAAI/AAAAAAAAFIc/f1MHjPV_0BA/s512-c/photo.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://machinesplusminds.blogspot.com/2011/12/i-hate-it-when-example-or-teaching-code.html</feedburner:origLink></entry><entry gd:etag="W/&quot;C0MFQH8-cSp7ImA9WhRSE08.&quot;"><id>tag:blogger.com,1999:blog-4771631636333583067.post-8698888099119297015</id><published>2011-11-14T17:36:00.001-08:00</published><updated>2011-11-14T17:43:31.159-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-11-14T17:43:31.159-08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="open source" /><title>Best practice for "releasing" Open Source Software.</title><content type="html">&lt;br /&gt;
Many projects practice "open source" via the "release the source" technique. &amp;nbsp;Sometimes, in the process of being underwhelming, what is "released" is a bare tarball that lacks build instructions, and metadata such as change history, internal documentation, and bug and feature commentary.&lt;br /&gt;
&lt;br /&gt;
This is not a "best practice".&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A slightly nicer way to do it is to maintain a read-only repository, such as a public SVN or GIT server, and on occasion write out an approved and sanitized version of the software for the great unwashed to pull down.&lt;br /&gt;
&lt;br /&gt;
This looks nicer than just bare tarball drops, but actually isn't any better.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The next step is "public development". &amp;nbsp;This turns software development into a public performance. &amp;nbsp;It turns out that the proverb "Sunlight makes the best disinfectant" is true for software quality as well as for politics. &amp;nbsp;Such projects keep their &lt;b&gt;real&lt;/b&gt; operational version control system world readable, and keep their bug tracker and development mailing lists and documentation fully public. &amp;nbsp;Sites like GitHub and Launchpad make it trivial to do this.&lt;br /&gt;
&lt;br /&gt;
There are some costs a project has to pay to make this work. &amp;nbsp;They have to make sure that "tip always passes", e.g. that they have a good enough test suite, continuous integration system, and merge processes. &amp;nbsp;But, consider: any project, open source or closed, that doesn't have these things is unlikely to be generating high quality work at all.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The next step after "public development" is open development. &amp;nbsp;Such projects accept participation and contribution from "outsiders". When fully expressed, there is no such thing as an "outsider", everyone is a contributor.&lt;img src="http://feeds.feedburner.com/~r/MachinesPlusMinds/~4/Nu2NZ_MNuww" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://machinesplusminds.blogspot.com/feeds/8698888099119297015/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://machinesplusminds.blogspot.com/2011/11/best-practice-for-releasing-open-source.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/4771631636333583067/posts/default/8698888099119297015?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/4771631636333583067/posts/default/8698888099119297015?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/MachinesPlusMinds/~3/Nu2NZ_MNuww/best-practice-for-releasing-open-source.html" title="Best practice for &quot;releasing&quot; Open Source Software." /><author><name>Mark Atwood</name><uri>https://plus.google.com/115686903235135444192</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh4.googleusercontent.com/-rX0CBo2seeo/AAAAAAAAAAI/AAAAAAAAFIc/f1MHjPV_0BA/s512-c/photo.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://machinesplusminds.blogspot.com/2011/11/best-practice-for-releasing-open-source.html</feedburner:origLink></entry><entry gd:etag="W/&quot;D0MDQ3c-fyp7ImA9WhRTF0w.&quot;"><id>tag:blogger.com,1999:blog-4771631636333583067.post-2161522782046552559</id><published>2011-11-07T17:24:00.000-08:00</published><updated>2011-11-07T17:24:32.957-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-11-07T17:24:32.957-08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="open source" /><category scheme="http://www.blogger.com/atom/ns#" term="drizzle" /><title>Drizzle: Seeking tiny contributions, leading to big things</title><content type="html">&lt;p&gt;
The &lt;a href="http://drizzle.org/"&gt;Drizzle project&lt;/a&gt; regularly gets people asking what they can do to get involved in the project.&lt;br /&gt;
&lt;/p&gt;
&lt;p&gt;
One very easy way to brush up on your C++ skills and dip your toe into our open development process is to fix minor warnings.&lt;br /&gt;
&lt;/p&gt;
&lt;p&gt;
We are very proud that Drizzle builds with zero warnings for with "gcc -Wall -Wextra".&lt;br /&gt;
&lt;/p&gt;
&lt;p&gt;
But we can be even better! &amp;nbsp;Our &lt;a href="http://jenkins.drizzle.org/"&gt;JenkinsCI&lt;/a&gt; system has a target that is &lt;a href="http://jenkins.drizzle.org/view/Drizzle-build/job/drizzle-build-all-warnings/"&gt;even more picky&lt;/a&gt;, and also a &lt;a href="http://jenkins.drizzle.org/view/Drizzle-build/job/drizzle-build-cppcheck/"&gt;target that runs cppcheck&lt;/a&gt;.&lt;br /&gt;
&lt;/p&gt;
&lt;p&gt;
Go to one of those pages, pick a build log off the build history, find a warning that you think you can fix, and then ask us in the #drizzle channel on Freenode how to send your fix to us.&lt;br /&gt;
&lt;/p&gt;
&lt;p&gt;
After you've done that a few times, you'll be ready to fix some &lt;a href="https://bugs.launchpad.net/drizzle/+bugs?field.tag=low-hanging-fruit"&gt;low hanging fruit&lt;/a&gt;.
&lt;/p&gt;
&lt;p&gt;
We've had people graduate from this process into becoming a &lt;a href="http://wiki.drizzle.org/GSOC_2011"&gt;Google Summer of Code student&lt;/a&gt;, and eventually having a full time paying job hacking on Drizzle and other open source software.
&lt;/p&gt;
&lt;p&gt;
And it all starts with writing a simple warning fix.
&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/MachinesPlusMinds/~4/bLFTIP4v7Es" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://machinesplusminds.blogspot.com/feeds/2161522782046552559/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://machinesplusminds.blogspot.com/2011/11/drizzle-seeking-tiny-contributions.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/4771631636333583067/posts/default/2161522782046552559?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/4771631636333583067/posts/default/2161522782046552559?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/MachinesPlusMinds/~3/bLFTIP4v7Es/drizzle-seeking-tiny-contributions.html" title="Drizzle: Seeking tiny contributions, leading to big things" /><author><name>Mark Atwood</name><uri>https://plus.google.com/115686903235135444192</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh4.googleusercontent.com/-rX0CBo2seeo/AAAAAAAAAAI/AAAAAAAAFIc/f1MHjPV_0BA/s512-c/photo.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://machinesplusminds.blogspot.com/2011/11/drizzle-seeking-tiny-contributions.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CkMMSHs4fip7ImA9WhRTEEQ.&quot;"><id>tag:blogger.com,1999:blog-4771631636333583067.post-2826478359748135373</id><published>2011-10-31T12:48:00.000-07:00</published><updated>2011-10-31T12:48:09.536-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-10-31T12:48:09.536-07:00</app:edited><title>Repost: Cloud computing is to computing, what the Internet is to telecommunications.</title><content type="html">&lt;br /&gt;
(originally posted 2011-03-03)&lt;br /&gt;
&lt;br /&gt;
Twenty years ago, if I wanted a reasonably fast data connection between a computer in Seattle and one in San Francisco, I had to call The Phone Company. Contracts would be negotiated and signed, Purchase Orders would be sent, Expensive Machines would be shipped, Work Orders would be generated and executed on, and well-trained well-paid Union Men would provision and test the link, which would be from a specific geographic point, to another specific geographic point. And I would be presented with a monthly Expensive Bill.&lt;br /&gt;
&lt;br /&gt;
Ten years ago, that started to change, dramatically. All that complex hardware, cabling, installation, and cost-recovery got abstracted away by TCP/IP. Today, to get a much faster and much more flexible connection, I just click on a hyperlink, and or start a VPN, and I have a connection that lats a few seconds to a few hours, for just as long as I need it, and then the underlying real hardware forgets completely about me and my data, and gives some other random person the link they need.&lt;br /&gt;
&lt;br /&gt;
Ten years ago, if I need to run "back office" software for an company, or if I wanted to run a web site, I would again have to do the whole Contracts, Purchase Order, Expensive Machine, Work Order and so forth. And again, there would be a big monthly bill, plus a big capex spend too.&lt;br /&gt;
&lt;br /&gt;
About 5 years ago, that started to change, dramatically. All that "stuff" got abstracted away. With the type of a command, or the click of a UI button, machine instances spin up to do my work, and when I am done with them, the underlying real hardware forgets completely about me and my workload, and gives some other random person the work they need.&lt;br /&gt;
&lt;br /&gt;
Cloud computing is to computing, what the Internet is to telecommunications.&lt;br /&gt;&lt;img src="http://feeds.feedburner.com/~r/MachinesPlusMinds/~4/II4UVbNSN8Q" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://machinesplusminds.blogspot.com/feeds/2826478359748135373/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://machinesplusminds.blogspot.com/2011/10/repost-cloud-computing-is-to-computing.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/4771631636333583067/posts/default/2826478359748135373?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/4771631636333583067/posts/default/2826478359748135373?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/MachinesPlusMinds/~3/II4UVbNSN8Q/repost-cloud-computing-is-to-computing.html" title="Repost: Cloud computing is to computing, what the Internet is to telecommunications." /><author><name>Mark Atwood</name><uri>https://plus.google.com/115686903235135444192</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh4.googleusercontent.com/-rX0CBo2seeo/AAAAAAAAAAI/AAAAAAAAFIc/f1MHjPV_0BA/s512-c/photo.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://machinesplusminds.blogspot.com/2011/10/repost-cloud-computing-is-to-computing.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CkMGQ309fSp7ImA9WhRTEEQ.&quot;"><id>tag:blogger.com,1999:blog-4771631636333583067.post-282152406059895789</id><published>2011-10-31T12:47:00.000-07:00</published><updated>2011-10-31T12:47:02.365-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-10-31T12:47:02.365-07:00</app:edited><title>Repost: I forget not everyone understands Open Source</title><content type="html">&lt;br /&gt;
(originally posted 2011-03-13)&lt;br /&gt;
&lt;br /&gt;
When you surrounded by something, that something eventually becomes obvious, then it becomes assumed knowledge, and then finally it becomes invisible.&lt;br /&gt;
&lt;br /&gt;
I have been involved in Open Source since the late 1980s, and it is sometimes hard for me to remember that is what is obvious and assumed by someone in my position, is not obvious to everyone.&lt;br /&gt;
&lt;br /&gt;
Early this week, I received an email from a group who are literally half a world away from me, physically and culturally. They use Eucalyptus, and had a question about it. Specifically, they wanted to know if they could modify it, if they could add modules and features that they needed.&lt;br /&gt;
&lt;br /&gt;
Like I said, what seems obvious to me, is not obvious to everyone.&lt;br /&gt;
&lt;br /&gt;
I wrote back to them, and explained that Eucalyptus is "Free Libre Open-Source". Most of it is licensed under the GPL Gnu Public License. That means that they can download it for free, can try it for free, run it on as many machines, with as many users, for as long as they want, for free. And yes, they can also look at the source code, modify and patch it, add more code, and write new modules for it, without having to get permission from anyone.&lt;br /&gt;&lt;img src="http://feeds.feedburner.com/~r/MachinesPlusMinds/~4/mNVb6t0qPV4" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://machinesplusminds.blogspot.com/feeds/282152406059895789/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://machinesplusminds.blogspot.com/2011/10/repost-i-forget-not-everyone.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/4771631636333583067/posts/default/282152406059895789?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/4771631636333583067/posts/default/282152406059895789?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/MachinesPlusMinds/~3/mNVb6t0qPV4/repost-i-forget-not-everyone.html" title="Repost: I forget not everyone understands Open Source" /><author><name>Mark Atwood</name><uri>https://plus.google.com/115686903235135444192</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh4.googleusercontent.com/-rX0CBo2seeo/AAAAAAAAAAI/AAAAAAAAFIc/f1MHjPV_0BA/s512-c/photo.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://machinesplusminds.blogspot.com/2011/10/repost-i-forget-not-everyone.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CkQGSHg_fyp7ImA9WhRTEEQ.&quot;"><id>tag:blogger.com,1999:blog-4771631636333583067.post-5458241450863752624</id><published>2011-10-31T12:45:00.000-07:00</published><updated>2011-10-31T12:45:29.647-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-10-31T12:45:29.647-07:00</app:edited><title>Closing The Eucalyptoid, and saving some posts</title><content type="html">For a while, I was writing blog posts for Eucalyptus Systems. &amp;nbsp;Since I have moved on from them (and I wish them well, they are a great company with a great product), I've closed the personal/role blog I used for those posts. &amp;nbsp;But two of those posts, I want to keep around, and so will repost them here.&lt;img src="http://feeds.feedburner.com/~r/MachinesPlusMinds/~4/qhv4yznI110" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://machinesplusminds.blogspot.com/feeds/5458241450863752624/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://machinesplusminds.blogspot.com/2011/10/closing-eucalyptoid-and-saving-some.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/4771631636333583067/posts/default/5458241450863752624?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/4771631636333583067/posts/default/5458241450863752624?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/MachinesPlusMinds/~3/qhv4yznI110/closing-eucalyptoid-and-saving-some.html" title="Closing The Eucalyptoid, and saving some posts" /><author><name>Mark Atwood</name><uri>https://plus.google.com/115686903235135444192</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh4.googleusercontent.com/-rX0CBo2seeo/AAAAAAAAAAI/AAAAAAAAFIc/f1MHjPV_0BA/s512-c/photo.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://machinesplusminds.blogspot.com/2011/10/closing-eucalyptoid-and-saving-some.html</feedburner:origLink></entry><entry gd:etag="W/&quot;A0INQ3c6cCp7ImA9WhdaGEs.&quot;"><id>tag:blogger.com,1999:blog-4771631636333583067.post-8599407254933005517</id><published>2011-10-28T17:43:00.001-07:00</published><updated>2011-10-28T23:26:32.918-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-10-28T23:26:32.918-07:00</app:edited><title /><content type="html">&lt;span class="Apple-style-span" style="background-color: white; font-family: arial, sans-serif; font-size: 13px; line-height: 13px;"&gt;I think that this is the last straw, and I'm now really completely done with Perl as anymore more than a write-once short-script language.&lt;br /&gt;&lt;br /&gt;CPAN and /usr/bin/cpan as installed by native package management apparently do not work out of the box on stock MacOS, on stock Solaris, on stock Illumos, on stock Ubuntu, on stock Debian, on stock Fedora, on stock RHEL, or on stock CentOS.&lt;br /&gt;&lt;br /&gt;Perl is now worse than the various implementations of the JVM at assuming that an entire box is going to be turned into a "Perl machine" and that the admin of that machine has any interest in keeping track of all the ways that Perl is special, and in all the ways that Perl wants to make that machine "special".&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="background-color: white; font-family: arial, sans-serif; font-size: 13px; line-height: 13px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="background-color: white; font-family: arial, sans-serif; font-size: 13px; line-height: 13px;"&gt;I mostly gave up on Perl about 3 years ago, and about once a year I go back and give it other try, and each time the experience is worse.&lt;/span&gt;&lt;img src="http://feeds.feedburner.com/~r/MachinesPlusMinds/~4/rqi-uQxvB84" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://machinesplusminds.blogspot.com/feeds/8599407254933005517/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://machinesplusminds.blogspot.com/2011/10/i-think-that-this-is-last-straw-and-im.html#comment-form" title="5 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/4771631636333583067/posts/default/8599407254933005517?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/4771631636333583067/posts/default/8599407254933005517?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/MachinesPlusMinds/~3/rqi-uQxvB84/i-think-that-this-is-last-straw-and-im.html" title="" /><author><name>Mark Atwood</name><uri>https://plus.google.com/115686903235135444192</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh4.googleusercontent.com/-rX0CBo2seeo/AAAAAAAAAAI/AAAAAAAAFIc/f1MHjPV_0BA/s512-c/photo.jpg" /></author><thr:total>5</thr:total><feedburner:origLink>http://machinesplusminds.blogspot.com/2011/10/i-think-that-this-is-last-straw-and-im.html</feedburner:origLink></entry><entry gd:etag="W/&quot;D0QFRH84fyp7ImA9WhdaF04.&quot;"><id>tag:blogger.com,1999:blog-4771631636333583067.post-6088846446775020102</id><published>2011-10-27T10:01:00.001-07:00</published><updated>2011-10-27T10:08:35.137-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-10-27T10:08:35.137-07:00</app:edited><title>Some good advice</title><content type="html">A few days ago I was interviewed by a Georgia Tech student about my job and career, and what advice I may have for students of computer science and programming.

&lt;ul&gt;
&lt;li&gt;Take on as little student loan debt as possible. And if someone will not pay you to get a post-grad degree, don't waste the debt and the time. Keep out of debt.  You never want to feel stuck somewhere so to make rent and pay bills.&lt;/li&gt;
&lt;li&gt;Learn to write.  You learn to write by writing. Take writing classes, read about good writing, and practice writing.  It doesn't matter what kind of job you get or life path you take, you need to know how to write.&lt;/li&gt;
&lt;li&gt;Get involved in some open source projects, and make real contributions to them.  The Google Summer of Code is a good thing to get involved in. A portfolio of demonstrated contributions to open source projects is more impressive than a GPA on a new resume.&lt;/li&gt;
&lt;li&gt;Get involved.  Find your local makerspaces, hackerspaces, and barcamps.  Volunteer and participate.  Go to Ignite. Speak at Ignite.&lt;/li&gt;
&lt;li&gt;Always be fluent in at least two programming languages, and practice learning new ones.  Languages and frameworks come and go, learning new ones is forever.&lt;/li&gt;
&lt;li&gt;When getting a job, beware of the non-compete and copyright assignment clauses in the employment contract.  Push back on them.  If they are non-negotiable, too onerous, are enforceable, beware and be careful of taking that job.  Keep your list of "personal and outside projects" ready to attach as an appendix.&lt;/li&gt;
&lt;/ul&gt;&lt;img src="http://feeds.feedburner.com/~r/MachinesPlusMinds/~4/axOUSZd31HI" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://machinesplusminds.blogspot.com/feeds/6088846446775020102/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://machinesplusminds.blogspot.com/2011/10/few-days-ago-i-was-interviewed-by.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/4771631636333583067/posts/default/6088846446775020102?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/4771631636333583067/posts/default/6088846446775020102?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/MachinesPlusMinds/~3/axOUSZd31HI/few-days-ago-i-was-interviewed-by.html" title="Some good advice" /><author><name>Mark Atwood</name><uri>https://plus.google.com/115686903235135444192</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh4.googleusercontent.com/-rX0CBo2seeo/AAAAAAAAAAI/AAAAAAAAFIc/f1MHjPV_0BA/s512-c/photo.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://machinesplusminds.blogspot.com/2011/10/few-days-ago-i-was-interviewed-by.html</feedburner:origLink></entry><entry gd:etag="W/&quot;C0UFQng_fip7ImA9WhdWGEg.&quot;"><id>tag:blogger.com,1999:blog-4771631636333583067.post-7424150157137796134</id><published>2011-09-12T11:13:00.000-07:00</published><updated>2011-09-12T11:13:33.646-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-09-12T11:13:33.646-07:00</app:edited><title>Wanted: A Netflix for physical books</title><content type="html">The tech rumor mill has been churning for a few days about "Amazon launching a Netflix for books".  While a neat concept, it is for Kindle books only.  This plays to Amazon's strengths, but is not what I have been wanting for years.&lt;br /&gt;
&lt;br /&gt;
For years I have been wishing for a "Netflix for Books", for physical books.&lt;br /&gt;
&lt;br /&gt;
Here is how I envision it working:&lt;br /&gt;
&lt;br /&gt;
A large municipal library, or a consortium of them working together, set up a site and paid service very similar to Netflix, only for books.&lt;br /&gt;
&lt;br /&gt;
I, as a user, select how many books at a time I want to rent.  There would be different monthly payment levels, just like Netflix.&lt;br /&gt;
&lt;br /&gt;
Books in my queue get checked out from the library or via inter library loan.  They get mailed to me, along with a return mailer.  Postage would be USPS Book Rate, of course.  Unless I am willing to pay extra for Priority or Express mail.&lt;br /&gt;
&lt;br /&gt;
I read the book, keep it for as long as I want (maybe with a one year maximum), and then either return it with the return mailer or by dropping it off at the library like a regular book.&lt;br /&gt;
&lt;br /&gt;
I could keep using my muni library "for free", or use this service for the convenience factor.  It could even be a source of much needed funding for the amazing public library system that we all too often take for granted, and do not use enough.&lt;br /&gt;
&lt;br /&gt;
I want this.&lt;img src="http://feeds.feedburner.com/~r/MachinesPlusMinds/~4/rSiHC_PhT8A" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://machinesplusminds.blogspot.com/feeds/7424150157137796134/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://machinesplusminds.blogspot.com/2011/09/wanted-netflix-for-physical-books.html#comment-form" title="1 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/4771631636333583067/posts/default/7424150157137796134?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/4771631636333583067/posts/default/7424150157137796134?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/MachinesPlusMinds/~3/rSiHC_PhT8A/wanted-netflix-for-physical-books.html" title="Wanted: A Netflix for physical books" /><author><name>Mark Atwood</name><uri>https://plus.google.com/115686903235135444192</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh4.googleusercontent.com/-rX0CBo2seeo/AAAAAAAAAAI/AAAAAAAAFIc/f1MHjPV_0BA/s512-c/photo.jpg" /></author><thr:total>1</thr:total><feedburner:origLink>http://machinesplusminds.blogspot.com/2011/09/wanted-netflix-for-physical-books.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DkAESH49eSp7ImA9WhdQEU8.&quot;"><id>tag:blogger.com,1999:blog-4771631636333583067.post-6059312676423333578</id><published>2011-08-11T21:51:00.000-07:00</published><updated>2011-08-11T21:51:49.061-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-08-11T21:51:49.061-07:00</app:edited><title>Google Plus, minus minus</title><content type="html">I've started telling friends and family who have been asking me about Google Plus to not bother, until G fixes their broken "real name" policy.  Plus is turning into a place where it's mostly white techy males talking about white techy male topics.  And speaking as a white techy male, that's pretty boring.&lt;img src="http://feeds.feedburner.com/~r/MachinesPlusMinds/~4/H7lG0b7lHn0" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://machinesplusminds.blogspot.com/feeds/6059312676423333578/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://machinesplusminds.blogspot.com/2011/08/google-plus-minus-minus.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/4771631636333583067/posts/default/6059312676423333578?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/4771631636333583067/posts/default/6059312676423333578?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/MachinesPlusMinds/~3/H7lG0b7lHn0/google-plus-minus-minus.html" title="Google Plus, minus minus" /><author><name>Mark Atwood</name><uri>https://plus.google.com/115686903235135444192</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh4.googleusercontent.com/-rX0CBo2seeo/AAAAAAAAAAI/AAAAAAAAFIc/f1MHjPV_0BA/s512-c/photo.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://machinesplusminds.blogspot.com/2011/08/google-plus-minus-minus.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DUEEQn05eip7ImA9WhdSEko.&quot;"><id>tag:blogger.com,1999:blog-4771631636333583067.post-5594084933102977326</id><published>2011-07-21T12:32:00.000-07:00</published><updated>2011-07-21T12:46:43.322-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-07-21T12:46:43.322-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="open source" /><category scheme="http://www.blogger.com/atom/ns#" term="software construction" /><category scheme="http://www.blogger.com/atom/ns#" term="drizzle" /><title>Regarding Autotools, and attempts to replace it</title><content type="html">In the world of software development on Linux, especially in the open source world, there is a set of packages called &lt;a href="http://en.wikipedia.org/wiki/GNU_build_system"&gt;"autotools"&lt;/a&gt;, which abstracts and manages portability between compilers and other aspects of the software build environment.  Nobody likes it.  In fact, most people who use it hate it.  There are many attempts to replace it.&lt;br /&gt;
&lt;br /&gt;
And the problems with autotools are getting worse, because it itself was never designed to have cleanly portable control files between versions. Back when most everyone just FTPed down a tarball, and then ran the prebuilt &lt;tt&gt;./configure&lt;/tt&gt;, it worked pretty well. Now that people pull a projects raw repo over SVN, BZR, or GIT, and then have to run liptoolize, aclocal, automake, autoconf, etc themselves, and who knows what version of autotools is locally installed, all hell breaks loose.&lt;br /&gt;
&lt;br /&gt;
With respect to all the autotools replacements, such as cmake, Ant, etc, and all the other ones mentioned in &lt;a href="http://esr.ibiblio.org/?p=1877"&gt;Eric Raymond's recent blog post&lt;/a&gt;: they ALL are some multiple combination of horribly slow, enforce their own special "one true way" of laying out source trees, are specific to what languages they will deign to handle, have abysmally bad error messages when there is a problem (and being worse than autotools in this respect is an amazing achievement), require the installation of a JVM and a huge pile of buggy poorly documented class files, require the installation of a huge pile of buggy poorly documented Python modules, require the installation of a huge pile of buggy poorly documented Perl modules, cannot intelligently detect and handle optional build dependencies, cannot cross compile, cannot build out of a read-only source tree, cannot build out of tree, and/or cannot build shared object files.&lt;br /&gt;
&lt;br /&gt;
I wish to gods and monsters that this was not true, but it is. And until the writers of the competing build chain systems understand why all this stuff is important, and are willing to support it, autotools will stick around, and people will continue to use it.&lt;br /&gt;
&lt;br /&gt;
This is not to say that it cannot be used better.  One of &lt;a href="https://launchpad.net/~mordred"&gt;Monty Taylor&lt;/a&gt;'s herculian tasks the &lt;a href="http://drizzle.org/"&gt;Drizzle&lt;/a&gt; project has been &lt;a href="https://code.launchpad.net/pandora-build"&gt;pandora build&lt;/a&gt;, which is a refactoring and rewrite to the years of cargo-cult accumulated cruft that has infested most autotools based open source projects.&lt;img src="http://feeds.feedburner.com/~r/MachinesPlusMinds/~4/Jl0sieNCkE4" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://machinesplusminds.blogspot.com/feeds/5594084933102977326/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://machinesplusminds.blogspot.com/2011/07/regarding-autotools-and-attempts-to.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/4771631636333583067/posts/default/5594084933102977326?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/4771631636333583067/posts/default/5594084933102977326?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/MachinesPlusMinds/~3/Jl0sieNCkE4/regarding-autotools-and-attempts-to.html" title="Regarding Autotools, and attempts to replace it" /><author><name>Mark Atwood</name><uri>https://plus.google.com/115686903235135444192</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh4.googleusercontent.com/-rX0CBo2seeo/AAAAAAAAAAI/AAAAAAAAFIc/f1MHjPV_0BA/s512-c/photo.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://machinesplusminds.blogspot.com/2011/07/regarding-autotools-and-attempts-to.html</feedburner:origLink></entry><entry gd:etag="W/&quot;D0AEQHkzeyp7ImA9WhdTFUQ.&quot;"><id>tag:blogger.com,1999:blog-4771631636333583067.post-6144058762432928043</id><published>2011-07-12T14:14:00.000-07:00</published><updated>2011-07-13T15:21:41.783-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-07-13T15:21:41.783-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="drizzle" /><title>SQL identifier case, Unicode case, and boost::to_upper, all in a fight that nobody will win</title><content type="html">The SQL standard says that table and row names are case insensitive. Drizzle table names are in Unicode with UTF8 encoding. boost::to_upper et al mangles UTF8 case. Down this path there is going to be a lot of pain. My own inclination is to tell the SQL Standard to realize that its 2011, no longer 1961, and break all the apps that are lazy about identifier case, but other people will probably disagree.&lt;img src="http://feeds.feedburner.com/~r/MachinesPlusMinds/~4/G07O9ssSxlU" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://machinesplusminds.blogspot.com/feeds/6144058762432928043/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://machinesplusminds.blogspot.com/2011/07/sql-table-case-unicode-case-and.html#comment-form" title="6 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/4771631636333583067/posts/default/6144058762432928043?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/4771631636333583067/posts/default/6144058762432928043?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/MachinesPlusMinds/~3/G07O9ssSxlU/sql-table-case-unicode-case-and.html" title="SQL identifier case, Unicode case, and boost::to_upper, all in a fight that nobody will win" /><author><name>Mark Atwood</name><uri>https://plus.google.com/115686903235135444192</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh4.googleusercontent.com/-rX0CBo2seeo/AAAAAAAAAAI/AAAAAAAAFIc/f1MHjPV_0BA/s512-c/photo.jpg" /></author><thr:total>6</thr:total><feedburner:origLink>http://machinesplusminds.blogspot.com/2011/07/sql-table-case-unicode-case-and.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DUYERX4yfip7ImA9WhdTEE0.&quot;"><id>tag:blogger.com,1999:blog-4771631636333583067.post-230266130085023776</id><published>2011-07-06T19:51:00.000-07:00</published><updated>2011-07-06T19:51:44.096-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-07-06T19:51:44.096-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="drizzle" /><title>Multi Master Replication is back in Drizzle</title><content type="html">This last March, David Shrewsbury put together a basic implementation of multi-master replication into DrizzleDB &lt;a href="http://dshrewsbury.blogspot.com/2011/03/multi-master-support-in-drizzle.html"&gt;link&lt;/a&gt;.  We were able to actually merge it with the mainline trunk, but then had to remove it until we had refactored and fixed more things.  Today, we were able to put it back in.&lt;br /&gt;
&lt;br /&gt;
It's worth reading Shrew's original blog posts, and then trying it out.&lt;img src="http://feeds.feedburner.com/~r/MachinesPlusMinds/~4/S48anqg1z_I" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://machinesplusminds.blogspot.com/feeds/230266130085023776/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://machinesplusminds.blogspot.com/2011/07/multi-master-replication-is-back-in.html#comment-form" title="1 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/4771631636333583067/posts/default/230266130085023776?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/4771631636333583067/posts/default/230266130085023776?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/MachinesPlusMinds/~3/S48anqg1z_I/multi-master-replication-is-back-in.html" title="Multi Master Replication is back in Drizzle" /><author><name>Mark Atwood</name><uri>https://plus.google.com/115686903235135444192</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh4.googleusercontent.com/-rX0CBo2seeo/AAAAAAAAAAI/AAAAAAAAFIc/f1MHjPV_0BA/s512-c/photo.jpg" /></author><thr:total>1</thr:total><feedburner:origLink>http://machinesplusminds.blogspot.com/2011/07/multi-master-replication-is-back-in.html</feedburner:origLink></entry></feed>
