<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss'><id>tag:blogger.com,1999:blog-5798716</id><updated>2010-03-13T21:19:07.651-06:00</updated><title type='text'>Geek Boy's blog</title><subtitle type='html'>Various ramblings from Peter Clark about life, coding, parenthood, Java, grad school, and enjoying my mac book air</subtitle><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5798716/posts/default'/><link rel='alternate' type='text/html' href='http://blog.pclark.net/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><link rel='next' type='application/atom+xml' href='http://www.blogger.com/feeds/5798716/posts/default?start-index=26&amp;max-results=25'/><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://blog.pclark.net/atom.xml'/><author><name>Peter Clark</name><uri>http://www.blogger.com/profile/07780127268335856418</uri><email>noreply@blogger.com</email></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>216</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-5798716.post-6818508717229771438</id><published>2010-03-12T22:09:00.001-06:00</published><updated>2010-03-12T22:54:59.011-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='nfjs'/><title type='text'>No Fluff Just Stuff Mpls</title><content type='html'>I'm attending the No Fluff Just Stuff conference this weekend. Here are three things I learned on friday:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;ol&gt;&lt;li&gt;You can do functional-style programming in java, using the collections framework. Ted Neward did some amazing, almost frightening stuff with anonymous inner classes and generics, that looked almost Standard ML-ish, but it was definitely not idiomatic java.&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.liquibase.org/"&gt;Liquibase&lt;/a&gt; looks pretty cool. It's a lot like ActiveRecord migrations but for java (and groovy). Based on the 90-minute talk there are some design decisions I'm unsure about, but it's a lot better than ad-hoc schema management (or no schema management)&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.nealford.com/"&gt;Neal Ford&lt;/a&gt; gave a great talk on why agile development works. One of the great observations is that pairing can be a shortcut to getting into flow. He also shared a quote from &lt;a href="http://www.poppendieck.com/"&gt;Mary Poppendieck&lt;/a&gt; - "a late requirement is a competitive advantage".&lt;/li&gt;&lt;/ol&gt;&lt;div&gt;I'm looking forward to tomorrow's sessions!&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5798716-6818508717229771438?l=blog.pclark.net' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://www.nofluffjuststuff.com/conference/minneapolis/2010/03/home' title='No Fluff Just Stuff Mpls'/><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/5798716/6818508717229771438/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=5798716&amp;postID=6818508717229771438' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5798716/posts/default/6818508717229771438'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5798716/posts/default/6818508717229771438'/><link rel='alternate' type='text/html' href='http://blog.pclark.net/2010/03/no-fluff-just-stuff-mpls.html' title='No Fluff Just Stuff Mpls'/><author><name>Peter Clark</name><uri>http://www.blogger.com/profile/07780127268335856418</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='10960298254805843228'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5798716.post-2990599560404891012</id><published>2009-12-26T15:07:00.003-06:00</published><updated>2009-12-26T15:58:30.017-06:00</updated><title type='text'>Dear Hollywood</title><content type='html'>Doc Searls has a great post about the hassles and stupidity involved with Hollywood's region encoding. Worth reading. As a bi-lingual family, we have this problem in spades. Finding Region-1-coded movies with German soundtracks that are appropriate for 3rd graders and kindergardeners is a challenge.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5798716-2990599560404891012?l=blog.pclark.net' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://blogs.law.harvard.edu/vrm/2009/12/26/dear-hollywood/' title='Dear Hollywood'/><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/5798716/2990599560404891012/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=5798716&amp;postID=2990599560404891012' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5798716/posts/default/2990599560404891012'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5798716/posts/default/2990599560404891012'/><link rel='alternate' type='text/html' href='http://blog.pclark.net/2009/12/dear-hollywood.html' title='Dear Hollywood'/><author><name>Peter Clark</name><uri>http://www.blogger.com/profile/07780127268335856418</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='10960298254805843228'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5798716.post-465715927896059254</id><published>2009-12-15T11:52:00.002-06:00</published><updated>2009-12-15T11:55:26.424-06:00</updated><title type='text'>Fun little usability nightmare</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://blog.pclark.net/uploaded_images/cancel-747110.jpg"&gt;&lt;img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 320px; height: 117px;" src="http://blog.pclark.net/uploaded_images/cancel-747107.jpg" border="0" alt="" /&gt;&lt;/a&gt; Just noticed this fun little usability problem with the phorum system at the U of Mn computer science department.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Assume you really &lt;b&gt;do&lt;/b&gt; want to cancel.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Do you hit "cancel", or "ok"?&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5798716-465715927896059254?l=blog.pclark.net' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/5798716/465715927896059254/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=5798716&amp;postID=465715927896059254' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5798716/posts/default/465715927896059254'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5798716/posts/default/465715927896059254'/><link rel='alternate' type='text/html' href='http://blog.pclark.net/2009/12/fun-little-usability-nightmare.html' title='Fun little usability nightmare'/><author><name>Peter Clark</name><uri>http://www.blogger.com/profile/07780127268335856418</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='10960298254805843228'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5798716.post-3398048583344121543</id><published>2009-11-08T22:07:00.002-06:00</published><updated>2009-11-08T22:14:11.559-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='C programming languages CSci5106'/><title type='text'>Fun in programming languages</title><content type='html'>I'm taking a graduate-level programming languages class at the U of Mn. One of the problems in the current homework is to implement a binary tree (in C) that initially can hold ints, but can be genericized to hold anything. To show that it can hold anything, I'm implementing a data type for burritos.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;The crown jewel of this assignment is getting to write this code:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Menlo"&gt;&lt;span style="color: #c800a8"&gt;typedef&lt;/span&gt; &lt;span style="color: #c800a8"&gt;enum&lt;/span&gt; _burritomeat {&lt;span style="color: #285a5f"&gt;veggie&lt;/span&gt;, &lt;span style="color: #285a5f"&gt;chicken&lt;/span&gt;, &lt;span style="color: #285a5f"&gt;barbacoa&lt;/span&gt;, &lt;span style="color: #285a5f"&gt;carnitas&lt;/span&gt;, &lt;span style="color: #285a5f"&gt;steak&lt;/span&gt;} BurritoMeat;&lt;/p&gt; &lt;p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Menlo; min-height: 13.0px"&gt;&lt;span style="color: #c800a8"&gt;typedef&lt;/span&gt; &lt;span style="color: #c800a8"&gt;enum&lt;/span&gt; _rice {&lt;span style="color: #285a5f"&gt;brown&lt;/span&gt;, &lt;span style="color: #285a5f"&gt;white&lt;/span&gt;} Rice;&lt;/p&gt;&lt;p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Menlo"&gt;burrito *makeMeABurrito(&lt;span style="color:#285a5f;"&gt;BurritoMeat&lt;/span&gt; m, &lt;span style="color:#285a5f;"&gt;Rice&lt;/span&gt; r, &lt;span style="color:#7d4723;"&gt;bool&lt;/span&gt; lettuce, &lt;span style="color:#7d4723;"&gt;bool&lt;/span&gt; cheese, &lt;span style="color:#7d4723;"&gt;bool&lt;/span&gt; sourCream);&lt;/p&gt;&lt;/div&gt;&lt;div&gt;&lt;p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Menlo"&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Menlo"&gt;&lt;span class="Apple-style-span" style="font-family: Georgia, serif; font-size: 14px; "&gt;&lt;/span&gt;&lt;/p&gt;&lt;div&gt;Yay for burritos!&lt;/div&gt;&lt;p&gt;&lt;/p&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5798716-3398048583344121543?l=blog.pclark.net' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/5798716/3398048583344121543/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=5798716&amp;postID=3398048583344121543' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5798716/posts/default/3398048583344121543'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5798716/posts/default/3398048583344121543'/><link rel='alternate' type='text/html' href='http://blog.pclark.net/2009/11/fun-in-programming-languages.html' title='Fun in programming languages'/><author><name>Peter Clark</name><uri>http://www.blogger.com/profile/07780127268335856418</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='10960298254805843228'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5798716.post-7209174686965601507</id><published>2009-11-07T09:20:00.001-06:00</published><updated>2009-11-07T09:23:55.643-06:00</updated><title type='text'>Motorola Droid - WTF?</title><content type='html'>The new motorola droid handset has a picture of a red glowing eye on the front. For the love of God, don't Motorola already know that technology with red glowing eyes &lt;a href="http://en.wikipedia.org/wiki/HAL_9000"&gt;never&lt;/a&gt; &lt;a href="http://en.wikipedia.org/wiki/The_Terminator"&gt;ends&lt;/a&gt; &lt;a href="http://en.wikipedia.org/wiki/Cylon_(Battlestar_Galactica)"&gt;well&lt;/a&gt;?&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5798716-7209174686965601507?l=blog.pclark.net' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/5798716/7209174686965601507/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=5798716&amp;postID=7209174686965601507' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5798716/posts/default/7209174686965601507'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5798716/posts/default/7209174686965601507'/><link rel='alternate' type='text/html' href='http://blog.pclark.net/2009/11/motorola-droid-wtf.html' title='Motorola Droid - WTF?'/><author><name>Peter Clark</name><uri>http://www.blogger.com/profile/07780127268335856418</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='10960298254805843228'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5798716.post-2273293518963105998</id><published>2009-10-19T19:52:00.000-05:00</published><updated>2009-10-19T19:53:10.537-05:00</updated><title type='text'>People of Wal-mart</title><content type='html'>I'm a bad person because I find these amusing.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5798716-2273293518963105998?l=blog.pclark.net' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://www.peopleofwalmart.com' title='People of Wal-mart'/><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/5798716/2273293518963105998/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=5798716&amp;postID=2273293518963105998' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5798716/posts/default/2273293518963105998'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5798716/posts/default/2273293518963105998'/><link rel='alternate' type='text/html' href='http://blog.pclark.net/2009/10/people-of-wal-mart.html' title='People of Wal-mart'/><author><name>Peter Clark</name><uri>http://www.blogger.com/profile/07780127268335856418</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='10960298254805843228'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5798716.post-4995393122333476103</id><published>2009-10-15T19:53:00.002-05:00</published><updated>2009-10-15T19:56:59.962-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='C 32-bit float math'/><title type='text'>Fun with float</title><content type='html'>Anyone want to hazard a guess as to what this C program prints as output? I'm running it on Mac OS/X 10.6.1 on an Intel Core 2 Duo processor, but this should be IEEE-754-compliant math and return the same results on any processor you like that uses IEEE-754.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;#include &amp;lt;stdio.h&amp;gt;&lt;/span&gt;&lt;stdio.h&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;br /&gt;&lt;br /&gt;int main(int argc, char *argv[])&lt;br /&gt;{&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;float basenum = 16777210.0;&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;float num = 0.0;&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;int counter = 0;&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;for(counter=0; counter &lt; 16; counter++) {&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;  &lt;/span&gt;num = basenum + counter;&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;  &lt;/span&gt;printf("num is: %f\n", num);&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;}&lt;br /&gt;}&lt;br /&gt;&lt;/span&gt; &lt;br /&gt;&lt;/stdio.h&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5798716-4995393122333476103?l=blog.pclark.net' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/5798716/4995393122333476103/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=5798716&amp;postID=4995393122333476103' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5798716/posts/default/4995393122333476103'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5798716/posts/default/4995393122333476103'/><link rel='alternate' type='text/html' href='http://blog.pclark.net/2009/10/fun-with-float.html' title='Fun with float'/><author><name>Peter Clark</name><uri>http://www.blogger.com/profile/07780127268335856418</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='10960298254805843228'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5798716.post-2881179570553964494</id><published>2009-10-15T15:38:00.004-05:00</published><updated>2009-10-15T15:44:47.248-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='win7 x86 x64'/><title type='text'>Mac OS and Win7</title><content type='html'>Short post today.&lt;br /&gt;&lt;br /&gt;I'm generally a mac user, but I need to use windows from time to time. When I have to do this, I use either Vista or WIn7. Using XP feels awkward, and the longer I spend away from it, the less I ever want to see it again.&lt;br /&gt;&lt;br /&gt;So, I've been running Vista x64 on my main windows box, and recently attended a Microsoft event at which I received a copy of Win7 Ultimate. This was nice of them. However, it was Win7 Ultimate 32-bit, which I can't use. Aside from the fact that 32-bit windows of any flavor is the primary target for malware writers, my main windows box has 8gb of ram. However, one of the microsoft folk at the event put his email address up for comments and feedback on the launch event. I emailed him to say "Win7 looks great - can I get the x64 version?" He wrote back indicating that he'd look into it. Not long after that, I got an email indicating where to send the 32-bit installer disk to exchange it for a x64 version, with said Microsoft professional cc:ed on the email.&lt;br /&gt;&lt;br /&gt;Thanks, Mike Benkovitch!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5798716-2881179570553964494?l=blog.pclark.net' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://www.benkotips.com/' title='Mac OS and Win7'/><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/5798716/2881179570553964494/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=5798716&amp;postID=2881179570553964494' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5798716/posts/default/2881179570553964494'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5798716/posts/default/2881179570553964494'/><link rel='alternate' type='text/html' href='http://blog.pclark.net/2009/10/mac-os-and-win7.html' title='Mac OS and Win7'/><author><name>Peter Clark</name><uri>http://www.blogger.com/profile/07780127268335856418</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='10960298254805843228'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5798716.post-8588442014051712293</id><published>2009-08-21T14:06:00.001-05:00</published><updated>2009-08-21T14:10:30.139-05:00</updated><title type='text'>Songs in code?</title><content type='html'>void tomsawyer() {&lt;br /&gt;    try {&lt;br /&gt;        assertequals(you.say(his_company), you.say(society));&lt;br /&gt;    }&lt;br /&gt;    catch (mist) {}&lt;br /&gt;    catch (myth) {}&lt;br /&gt;    catch (mystery) {}&lt;br /&gt;    catch (drift) {}&lt;br /&gt;    finally&lt;br /&gt;    {&lt;br /&gt;        Runtime.exit(TomSawyer.WARRIOR);&lt;br /&gt;    }&lt;br /&gt;}&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5798716-8588442014051712293?l=blog.pclark.net' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/5798716/8588442014051712293/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=5798716&amp;postID=8588442014051712293' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5798716/posts/default/8588442014051712293'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5798716/posts/default/8588442014051712293'/><link rel='alternate' type='text/html' href='http://blog.pclark.net/2009/08/songs-in-code.html' title='Songs in code?'/><author><name>Peter Clark</name><uri>http://www.blogger.com/profile/07780127268335856418</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='10960298254805843228'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5798716.post-6377006955574726100</id><published>2009-07-21T23:15:00.004-05:00</published><updated>2009-07-21T23:41:22.718-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='java clojure otug pragprog'/><title type='text'>Clojure talk</title><content type='html'>Just got back from an &lt;a href="http://www.otug.org"&gt;Object Technology User's Group&lt;/a&gt; meeting, where &lt;a href="http://blog.thinkrelevance.com/"&gt;Stuart Halloway&lt;/a&gt; spoke on &lt;a href="http://clojure.org/"&gt;Clojure&lt;/a&gt;. Whew - not sure I can get any more hyperlinks into that sentence!&lt;br /&gt;&lt;br /&gt;Clojure is a &lt;a href="http://xkcd.com/224/"&gt;lisp&lt;/a&gt; that runs on the JVM. It's full of parentheses, like a good lisp ought to be, and it can be difficult to read for developers who are more familiar with C-derived or &lt;a href="http://www.sun.com/java"&gt;Coffee-based&lt;/a&gt; languages. However, like a lisp, the information density in the code is really high, and the amount of idiomatic guarding against edge cases is really low. For instance, you generally don't need to write things like&lt;br /&gt;&lt;code&gt;&lt;br /&gt; if (myString != null &amp;&amp; myString.length() &gt; 0) {...}&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;in your code. This is quite refreshing!&lt;br /&gt;&lt;br /&gt;However, what struck me as the most important point he made is the observation that good clojure code is about transforming a data structure from what you get into one that's closer to what you need to answer the question or solve the problem. It's about collection transformation, not about recursion. Thinking about 'how could I solve this problem with a recursive function' gets you into a nasty rabbithole and causes you to write the sort of spaghetti code that gives you a bad taste in your mouth from lisp. Thinking about collection transformations, echoing what you do with &lt;a href="http://labs.google.com/papers/mapreduce.html"&gt;MapReduce&lt;/a&gt;-style coding, leads you to write code that is more readable and straightforward.&lt;br /&gt;&lt;br /&gt;Another interesting point, that I might have issues with, was the observation that "we'll all be writing more functional code in general, and more lisp in particular, in the future." I think the lisp guys have been saying that for the last 30 years, &lt;a href="http://en.wikipedia.org/wiki/AI_winter"&gt;of which the last 25 or so have been with a lot of bitterness&lt;/a&gt;. He might be right, but writing really good, clear, lisp-y code is harder than writing good-enough java. And good-enough java can be easier to sort out than not-quite-good-enough lisp.&lt;br /&gt;&lt;br /&gt;Still, I'm more interested in clojure after his talk than I was before it.&lt;br /&gt;&lt;br /&gt;And, as a bonus, I won a copy of the &lt;a href="http://pragprog.com/titles/shcloj/programming-clojure"&gt;Programming Clojure&lt;/a&gt; book! Many thanks to &lt;a href="http://pragprog.com/"&gt;The Pragmatic Press&lt;/a&gt; for donating several copies for OTUG to raffle off.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5798716-6377006955574726100?l=blog.pclark.net' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://www.otug.org' title='Clojure talk'/><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/5798716/6377006955574726100/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=5798716&amp;postID=6377006955574726100' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5798716/posts/default/6377006955574726100'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5798716/posts/default/6377006955574726100'/><link rel='alternate' type='text/html' href='http://blog.pclark.net/2009/07/clojure-talk.html' title='Clojure talk'/><author><name>Peter Clark</name><uri>http://www.blogger.com/profile/07780127268335856418</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='10960298254805843228'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5798716.post-2455339022461157340</id><published>2009-06-03T18:08:00.005-05:00</published><updated>2009-06-03T18:15:31.805-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='java javaone scala jruby ruby'/><title type='text'>Hanging out at #javaone</title><content type='html'>I've been at &lt;a href="http://java.sun.com/javaone/"&gt;JavaOne&lt;/a&gt; 2009 for the past few days. Lots and lots of great information, and learning a lot. Many of the talks I've been attending have been about alternate languages that run on the JVM - JRuby, Scala, Groovy, jython. Many of these languages solve problems that are difficult to solve given the constraints of the Java language, or at least are difficult to solve elegantly. Some of the problems along these lines are concurrency, simplicity, ease-of-development, and relaxing the type system. They all end up being about developer productivity. I find lots of analogies to the debates about java vs C++ in the late 1990s. This is probably healthy. The same thing appears to be happening in the .NET world - there are a lot of languages that run on the .NET CLR, and they don't all look like C#. In fact, F# looks pretty neat.&lt;br /&gt;&lt;br /&gt;I also wanted to post a link to a great summary of a session about &lt;a href="http://em-javaone.posterous.com/"&gt;concurrency gotchas&lt;/a&gt; in java.&lt;br /&gt;&lt;br /&gt;I've been &lt;a href="http://twitter.com/pclark"&gt;posting updates&lt;/a&gt; on Twitter, if you're interested in following along.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5798716-2455339022461157340?l=blog.pclark.net' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://java.sun.com/javaone/' title='Hanging out at #javaone'/><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/5798716/2455339022461157340/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=5798716&amp;postID=2455339022461157340' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5798716/posts/default/2455339022461157340'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5798716/posts/default/2455339022461157340'/><link rel='alternate' type='text/html' href='http://blog.pclark.net/2009/06/hanging-out-at-javaone.html' title='Hanging out at #javaone'/><author><name>Peter Clark</name><uri>http://www.blogger.com/profile/07780127268335856418</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='10960298254805843228'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5798716.post-975583460871661824</id><published>2009-06-01T12:59:00.002-05:00</published><updated>2009-06-01T13:03:16.357-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Javaone'/><title type='text'>javaone 2009!</title><content type='html'>I'm at JavaOne in San Francisco. I'll occasionally post updates to Twitter. Http://www.twitter.com/pclark&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5798716-975583460871661824?l=blog.pclark.net' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://twitter.com/pclark' title='javaone 2009!'/><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/5798716/975583460871661824/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=5798716&amp;postID=975583460871661824' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5798716/posts/default/975583460871661824'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5798716/posts/default/975583460871661824'/><link rel='alternate' type='text/html' href='http://blog.pclark.net/2009/06/javaone-2009.html' title='javaone 2009!'/><author><name>Peter Clark</name><uri>http://www.blogger.com/profile/07780127268335856418</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='10960298254805843228'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5798716.post-4926328759953433026</id><published>2009-05-15T14:55:00.002-05:00</published><updated>2009-05-15T15:29:48.183-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='speedstep dell optiplex'/><title type='text'>Confused about EIST/SpeedStep</title><content type='html'>&lt;a href="http://www.intel.com/support/processors/sb/CS-028855.htm"&gt;Intel SpeedStep&lt;/a&gt; is a technology that allows the processor to be underclocked when it's not busy. AMD has a similar concept called &lt;a href="http://www.amd.com/us-en/Processors/ProductInformation/0,,30_118_9485_9487%5E10272,00.html"&gt;cool'n'quiet&lt;/a&gt;. The idea is that if the processor is slowed, it'll run cooler and use less power. If it's emitting less heat, then the building needs less air conditioning, and everyone is happy.&lt;br /&gt;&lt;br /&gt;We've got a bunch of Dell OptiPlex 745, 755, and 760 computers at work. These machines all have Core 2 Duo or Pentium D processors that support Intel SpeedStep, and we're mostly running Windows XP SP3, which has support for speedstep in the OS. We also have a lot of users who like to use Remote Desktop from home (over the VPN), and so they leave their computers on all the time. This isn't necessarily a good use of electricity, so I wanted to be as conservative with power usage as possible.  SpeedStep seems to be exactly what you'd want in this sort of situation.&lt;br /&gt;&lt;br /&gt;We've enabled speedstep in the BIOS, we've set the power settings to 'minimal power management' which is supposed to turn on speedstep support in the OS. I've been able to verify that speedstep is running by checking the reported clock speed in the properties panel for "My Computer". But is it &lt;i&gt;really&lt;/i&gt; doing anything?&lt;br /&gt;&lt;br /&gt;So - one of the best ways to measure actual power utilization is with a &lt;a href="http://www.amazon.com/P3-International-P4400-Electricity-Monitor/dp/B00009MDBU/ref=sr_1_1?ie=UTF8&amp;s=electronics&amp;qid=1242418068&amp;sr=8-1"&gt;Kill a Watt&lt;/a&gt; power meter, which measures how much power the machine is drawing from the wall. If you let stuff run over time, it'll also measure kilowatt-hours.&lt;br /&gt;&lt;br /&gt;I fired up a OptiPlex 755 with all the power management stuff turned on, and let it run over a weekend. The power utilization was around 55 watt-hours as measures over a 70-hour period. I then turned off speedstep in the bios by setting it to 'home/office desktop', which is supposed to not underclock when on AC power. I verified that the CPU was running at full speed in the "My Computer" properties display. I let the machine run for a couple days and measured power consumption of... wait for it... 55 watt-hours. &lt;br /&gt;&lt;br /&gt;What's up? Is speedstep a joke? Alternatively, is something along the lines of speedstep running all the time? The machine was idle under both scenarios. If anyone has any insight into this, please comment!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5798716-4926328759953433026?l=blog.pclark.net' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/5798716/4926328759953433026/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=5798716&amp;postID=4926328759953433026' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5798716/posts/default/4926328759953433026'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5798716/posts/default/4926328759953433026'/><link rel='alternate' type='text/html' href='http://blog.pclark.net/2009/05/confused-about-eistspeedstep.html' title='Confused about EIST/SpeedStep'/><author><name>Peter Clark</name><uri>http://www.blogger.com/profile/07780127268335856418</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='10960298254805843228'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5798716.post-5377488990019033918</id><published>2009-05-13T15:25:00.004-05:00</published><updated>2009-05-13T15:26:33.796-05:00</updated><title type='text'>From the mouths of babes...</title><content type='html'>A couple of days ago, Bea was annoyed that Laurel wasn't respecting her request for Laurel to keep her hands to herself. Bea complained to her mom "sometimes I think Laurel doesn't know what listening means".&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5798716-5377488990019033918?l=blog.pclark.net' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/5798716/5377488990019033918/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=5798716&amp;postID=5377488990019033918' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5798716/posts/default/5377488990019033918'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5798716/posts/default/5377488990019033918'/><link rel='alternate' type='text/html' href='http://blog.pclark.net/2009/05/from-mouths-of-babes.html' title='From the mouths of babes...'/><author><name>Peter Clark</name><uri>http://www.blogger.com/profile/07780127268335856418</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='10960298254805843228'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5798716.post-1174933772915979884</id><published>2009-04-08T16:15:00.002-05:00</published><updated>2009-04-08T16:21:56.096-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='mac mail amusing'/><title type='text'>Fun with Mail.app</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://blog.pclark.net/uploaded_images/lots-783145.png"&gt;&lt;img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 231px; height: 205px;" src="http://blog.pclark.net/uploaded_images/lots-783143.png" border="0" alt="" /&gt;&lt;/a&gt;&lt;br /&gt;I love Mac OS/X Mail.app. The latest bit of love is this - the message list will tell you how many attachments there are in a message - for instance, "3 items".&lt;br /&gt;&lt;br /&gt;Unless there are too many for it to count quickly. Then, it just displays "lots":&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5798716-1174933772915979884?l=blog.pclark.net' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/5798716/1174933772915979884/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=5798716&amp;postID=1174933772915979884' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5798716/posts/default/1174933772915979884'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5798716/posts/default/1174933772915979884'/><link rel='alternate' type='text/html' href='http://blog.pclark.net/2009/04/fun-with-mailapp.html' title='Fun with Mail.app'/><author><name>Peter Clark</name><uri>http://www.blogger.com/profile/07780127268335856418</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='10960298254805843228'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5798716.post-4864828021317584447</id><published>2009-04-05T19:03:00.002-05:00</published><updated>2009-04-05T19:05:04.590-05:00</updated><title type='text'>Subversion and performance reviews</title><content type='html'>Thought for the day - when writing checkin comments, consider that your audience might be your boss, reviewing your past checkins, while said boss is writing your annual performance review.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5798716-4864828021317584447?l=blog.pclark.net' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/5798716/4864828021317584447/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=5798716&amp;postID=4864828021317584447' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5798716/posts/default/4864828021317584447'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5798716/posts/default/4864828021317584447'/><link rel='alternate' type='text/html' href='http://blog.pclark.net/2009/04/subversion-and-performance-reviews.html' title='Subversion and performance reviews'/><author><name>Peter Clark</name><uri>http://www.blogger.com/profile/07780127268335856418</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='10960298254805843228'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5798716.post-4216123620263505482</id><published>2009-03-12T22:00:00.004-05:00</published><updated>2009-03-12T22:06:05.588-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='apple backup'/><title type='text'>Hooray for time capsule 7.4.1 update!</title><content type='html'>Apple has recently released an update for the Airport Extreme and the Time Capsule. I've got a 500gb time capsule, and for backing up over my wired ethernet network, it's great. Fast, efficient, and just what you'd want. It's slower than backing up to a firewire-800 drive, but my macbook air doesn't have a port for that.&lt;br /&gt;&lt;br /&gt;However, backing up over the wifi network was painfully slow. In fact, it was broken. I use &lt;a href="http://www.islayer.com/apps/istatmenus/"&gt;iStat Menus&lt;/a&gt; to monitor a number of things, including network utilization, and it was kind of annoying when Time Machine would say "preparing backup" forever, and there was clearly minimal network traffic. I tried switching from 2.4ghz to 5ghz 802.11N only, I tried switching to 2.4ghz 802.11g only, I tried a bunch of things. It all came down to that it worked with ethernet, not with wifi.&lt;br /&gt;&lt;br /&gt;With the new firmware, that's a thing of the past. I just ran a time machine backup over wifi (802.11N, 5ghz), and it was peppy.&lt;br /&gt;&lt;br /&gt;Now my macbook air can be less tethered.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5798716-4216123620263505482?l=blog.pclark.net' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://support.apple.com/downloads/#airport' title='Hooray for time capsule 7.4.1 update!'/><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/5798716/4216123620263505482/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=5798716&amp;postID=4216123620263505482' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5798716/posts/default/4216123620263505482'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5798716/posts/default/4216123620263505482'/><link rel='alternate' type='text/html' href='http://blog.pclark.net/2009/03/hooray-for-time-capsule-741-update.html' title='Hooray for time capsule 7.4.1 update!'/><author><name>Peter Clark</name><uri>http://www.blogger.com/profile/07780127268335856418</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='10960298254805843228'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5798716.post-5255216395003988040</id><published>2009-03-10T11:48:00.001-05:00</published><updated>2009-03-10T11:51:09.734-05:00</updated><title type='text'>It'd be cool if blizzards worked like this</title><content type='html'>Great picture of &lt;a href="http://www.guardian.co.uk/world/gallery/2009/mar/10/saudiarabia-sandstorms?picture=344397820"&gt;a sandstorm coming into Riyadh&lt;/a&gt;. Wouldn't it be cool if Minnesota blizzards worked like that?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5798716-5255216395003988040?l=blog.pclark.net' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://www.guardian.co.uk/world/gallery/2009/mar/10/saudiarabia-sandstorms?picture=344397820' title='It&apos;d be cool if blizzards worked like this'/><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/5798716/5255216395003988040/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=5798716&amp;postID=5255216395003988040' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5798716/posts/default/5255216395003988040'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5798716/posts/default/5255216395003988040'/><link rel='alternate' type='text/html' href='http://blog.pclark.net/2009/03/itd-be-cool-if-blizzards-worked-like.html' title='It&apos;d be cool if blizzards worked like this'/><author><name>Peter Clark</name><uri>http://www.blogger.com/profile/07780127268335856418</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='10960298254805843228'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5798716.post-349343853797562904</id><published>2009-02-24T11:58:00.000-06:00</published><updated>2009-02-24T11:59:24.872-06:00</updated><title type='text'>Mac Mini hack - apple disk ][ enclosure!</title><content type='html'>Oh boy - &lt;a href="http://www.flickr.com/photos/15994009@N06/3263376709/in/set-72157613485047505/"&gt;this&lt;/a&gt; is beautiful.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5798716-349343853797562904?l=blog.pclark.net' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://www.flickr.com/photos/15994009@N06/3263376709/in/set-72157613485047505/' title='Mac Mini hack - apple disk ][ enclosure!'/><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/5798716/349343853797562904/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=5798716&amp;postID=349343853797562904' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5798716/posts/default/349343853797562904'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5798716/posts/default/349343853797562904'/><link rel='alternate' type='text/html' href='http://blog.pclark.net/2009/02/mac-mini-hack-apple-disk-enclosure.html' title='Mac Mini hack - apple disk ][ enclosure!'/><author><name>Peter Clark</name><uri>http://www.blogger.com/profile/07780127268335856418</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='10960298254805843228'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5798716.post-8187623642925616692</id><published>2009-02-15T15:41:00.000-06:00</published><updated>2009-02-15T15:42:00.714-06:00</updated><title type='text'>Truly, news you can use!</title><content type='html'>And the answer is, None. None more black.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5798716-8187623642925616692?l=blog.pclark.net' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://www.guardian.co.uk/music/2009/feb/15/spinal-tap-rock-music' title='Truly, news you can use!'/><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/5798716/8187623642925616692/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=5798716&amp;postID=8187623642925616692' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5798716/posts/default/8187623642925616692'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5798716/posts/default/8187623642925616692'/><link rel='alternate' type='text/html' href='http://blog.pclark.net/2009/02/truly-news-you-can-use.html' title='Truly, news you can use!'/><author><name>Peter Clark</name><uri>http://www.blogger.com/profile/07780127268335856418</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='10960298254805843228'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5798716.post-1987005602476066334</id><published>2009-02-13T20:30:00.003-06:00</published><updated>2009-02-13T20:43:41.573-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='maskenball joker'/><title type='text'>Maskenball 2009</title><content type='html'>Last week was the Maskenball fundraiser for the &lt;a href="http://www.germanschool-mn.org"&gt;Twin Cities German Immersion School&lt;/a&gt;. My wife worked long and hard on it, and I'm glad to have her back. It was a splendid party. I'm not much of one for big events like this - as a friend recently commented in his "25 random things about me" response, "In a group of more than 5 people, I'll probably feel like the odd man out". True for me too. However, after trying on several masks from Pier One, I decided to go outfitted as the &lt;a href="http://en.wikipedia.org/wiki/Heath_Ledger"&gt;Heath Ledger Joker&lt;/a&gt;. It really really worked. I had a blast, and had perhaps too much fun trying to be in character- "why so serious?!?" To top it off, someone else came dressed as Harlequin.&lt;br /&gt;&lt;br /&gt;Pictures, for the moment, are &lt;a href="http://www.photoreflect.com/pr3/orderpage.aspx?pi=0CFT001U000309&amp;po=309"&gt;here.&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5798716-1987005602476066334?l=blog.pclark.net' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://www.maskenball2009.org/' title='Maskenball 2009'/><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/5798716/1987005602476066334/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=5798716&amp;postID=1987005602476066334' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5798716/posts/default/1987005602476066334'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5798716/posts/default/1987005602476066334'/><link rel='alternate' type='text/html' href='http://blog.pclark.net/2009/02/maskenball-2009.html' title='Maskenball 2009'/><author><name>Peter Clark</name><uri>http://www.blogger.com/profile/07780127268335856418</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='10960298254805843228'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5798716.post-8683388448455185330</id><published>2009-01-04T16:44:00.004-06:00</published><updated>2009-01-04T16:59:01.659-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='pc windows intel shuttle barebones AHCI SATA'/><title type='text'>New intel box</title><content type='html'>I just finished up building a new intel-based box from parts. This is the first time I've tried to assemble my own, rather than buying a whole one. However, my brother has made several machines out of Shuttle cases, and they seem to work well. All the parts came from newegg - here's what I got:&lt;br /&gt;&lt;br /&gt;&lt;ol&gt;&lt;li&gt;&lt;a href="http://www.newegg.com/Product/Product.aspx?Item=N82E16856101078"&gt;Shuttle SP45H7 barebones case&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.newegg.com/Product/Product.aspx?Item=N82E16819115037"&gt;Intel Core 2 Duo E8400 3.0ghz processor, 65 watts&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.newegg.com/Product/Product.aspx?Item=N82E16820145184"&gt;4 Gb Corsair DDR2 800 RAM&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.newegg.com/Product/Product.aspx?Item=N82E16827118023"&gt;Optiarc/NEC/Sony AD-7220S SATA DVD burner&lt;/a&gt;&lt;/li&gt;&lt;/ol&gt;&lt;div&gt;and some other parts I had lying around, including a nvidia GeForce 8800GS PCIe video card and a 500gb seagate drive.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;On the whole, it was incredibly easy to assemble - took about an hour. Getting XP and Vista x64 on it in a dual-boot configuration took a bit longer, due to hassles with the BIOS. It was flaky when trying to boot from the SATA DVD drive in AHCI mode. It either wouldn't boot, would blue-screen the installer, or would simply fail to recognize that there was a &lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;For both XP and Vista, I had to switch the bios to IDE compatibility mode, install, make some registry hacks and install drivers, reboot, switch the bios to AHCI, and then continue. Details are available &lt;a href="http://orenshamir.wordpress.com/2008/10/13/installing-ubuntu-linux-and-xp-on-ich10/"&gt;here&lt;/a&gt; with more detail &lt;a href="http://forums.hexus.net/hexus-hardware/112584-how-enable-ahci-raid-mode-without-reinstalling-windows-p35-ich9-ich9r-4.html"&gt;here&lt;/a&gt; for XP. &lt;a href="http://support.microsoft.com/kb/922976/en-us"&gt;Vista was much easier&lt;/a&gt;. I tried all sorts of things, trying to avoid having to do manual registry hacks, but once I got over that and did what needed to be done to the registry, then it went pretty smoothly.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5798716-8683388448455185330?l=blog.pclark.net' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/5798716/8683388448455185330/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=5798716&amp;postID=8683388448455185330' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5798716/posts/default/8683388448455185330'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5798716/posts/default/8683388448455185330'/><link rel='alternate' type='text/html' href='http://blog.pclark.net/2009/01/new-intel-box.html' title='New intel box'/><author><name>Peter Clark</name><uri>http://www.blogger.com/profile/07780127268335856418</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='10960298254805843228'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5798716.post-7474543970644284814</id><published>2008-12-29T22:21:00.001-06:00</published><updated>2008-12-29T22:23:09.577-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='TSA airport security'/><title type='text'>Gunpowder through the TSA security checkpoints</title><content type='html'>&lt;a href="http://wildbee.org/2008/12/09/carrying-gunpowder-through-airport-security/"&gt;Wonderful posting&lt;/a&gt;, Linked to by &lt;a href="http://www.schneier.com/blog/archives/2008/12/gunpowder_is_ok.html"&gt;Bruce Schneier&lt;/a&gt;. Wow.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5798716-7474543970644284814?l=blog.pclark.net' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://wildbee.org/2008/12/09/carrying-gunpowder-through-airport-security/' title='Gunpowder through the TSA security checkpoints'/><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/5798716/7474543970644284814/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=5798716&amp;postID=7474543970644284814' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5798716/posts/default/7474543970644284814'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5798716/posts/default/7474543970644284814'/><link rel='alternate' type='text/html' href='http://blog.pclark.net/2008/12/gunpowder-through-tsa-security.html' title='Gunpowder through the TSA security checkpoints'/><author><name>Peter Clark</name><uri>http://www.blogger.com/profile/07780127268335856418</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='10960298254805843228'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5798716.post-7397262669515440777</id><published>2008-11-11T11:53:00.002-06:00</published><updated>2008-11-11T11:57:38.892-06:00</updated><title type='text'>Last day in Germany</title><content type='html'>I'm in Groß-Gerau, a bit southwest of Frankfurt. I recently finished up a workshop at &lt;a href="http://www.dagstuhl.de"&gt;Schloss Dagstuhl&lt;/a&gt; about the Data Documentation Initiative. Rather interesting (if you're in my line of work...).&lt;br /&gt;&lt;br /&gt;I'm now visiting friends, and I head home tomorrow. Somewhat bittersweet - I've had a great trip and I've quite enjoyed visiting people I haven't seen in months or years, but I also miss my wife and kids, and I'm quite sure that she's ready to have me home.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5798716-7397262669515440777?l=blog.pclark.net' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/5798716/7397262669515440777/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=5798716&amp;postID=7397262669515440777' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5798716/posts/default/7397262669515440777'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5798716/posts/default/7397262669515440777'/><link rel='alternate' type='text/html' href='http://blog.pclark.net/2008/11/last-day-in-germany.html' title='Last day in Germany'/><author><name>Peter Clark</name><uri>http://www.blogger.com/profile/07780127268335856418</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='10960298254805843228'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5798716.post-5317361867104777505</id><published>2008-10-23T14:07:00.004-05:00</published><updated>2008-10-23T14:16:53.930-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='java tomcat ssl tls'/><title type='text'>Fun with IE6, SSLv2 and TLSv1</title><content type='html'>Internet Explorer pain&lt;br /&gt;&lt;br /&gt;A consulting client of mine has a website with some &lt;a href="http://www.cms.hhs.gov/SecurityStandard/"&gt;security requirements&lt;/a&gt; that mandate the use of encrypted communications. The site had been running on Tomcat 4 on a Win2K server machine, with no particular tuning of how tomcat dealt with crypto. We kinda just dropped in the server-side cert and ran with it, back in 2003 or so.&lt;br /&gt;&lt;br /&gt;We recently ran a &lt;a href="http://www.blogger.com/www.nessus.org"&gt;nessus&lt;/a&gt; scan on the machine, which suggested that allowing SSL2 and weak ciphers was perhaps a bad idea. We were intending to retire the Win2K machine anyway and do some other software updates, so we decided to deal with this too. The new machine is a Win2003 R2 server running inside of VMWare, with Tomcat 6 running in a Java 6 JVM, and using the APR connecter rather than the tomcat standard connector.&lt;br /&gt;&lt;br /&gt;We initially deployed with the following configuration:&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;&amp;lt;Connector port="443" protocol="org.apache.coyote.http11.Http11AprProtocol"&lt;br /&gt; SSLEnabled="true" compression="on"&lt;br /&gt;    maxThreads="150" scheme="https" secure="true"&lt;br /&gt;    SSLProtocol="TLSv1"&lt;br /&gt;    SSLCipherSuite="HIGH:!SSLv2:!ADH:!aNULL:!eNULL:!NULL"&lt;br /&gt;    SSLCertificateKeyFile="conf/privatekey.key"&lt;br /&gt;    SSLCertificateFile="conf/site.crt"&lt;br /&gt;    SSLPassword="i_can_haz_crypto_k_thx_bye" /&amp;gt;&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;this worked great with IE7, Firefox 2+, and Safari, but IE6 acted as if it couldn't find the site at all - as if it failed DNS resolution! We had some difficulty figuring out what was going on, but we ended up turning on SSLv3 as well as just TLSv1 in the SSLProtocol setting, like so:&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;&amp;lt;Connector port="443" protocol="org.apache.coyote.http11.Http11AprProtocol"&lt;br /&gt; SSLEnabled="true" compression="on"&lt;br /&gt;    maxThreads="150" scheme="https" secure="true"&lt;br /&gt; SSLProtocol="ALL -SSLv2"&lt;br /&gt;    SSLCipherSuite="HIGH:!SSLv2:!ADH:!aNULL:!eNULL:!NULL"&lt;br /&gt;    SSLCertificateKeyFile="conf/privatekey.key"&lt;br /&gt;    SSLCertificateFile="conf/site.crt"&lt;br /&gt;    SSLPassword="i_can_haz_crypto_k_thx_bye" /&amp;gt;&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;and then things seemed much happier. This was particularly confusing, as our IE6 machine had "Support TLS" checked in the Tools-&gt;Internet Options-&gt;Advanced settings pane. Still not entirely sure what's going on, but turning on SSLv3 and leaving SSLv2 off appears to work.&lt;br /&gt;&lt;br /&gt;Time to upgrade the world to &lt;a href="http://www.mozilla.com/"&gt;Firefox&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5798716-5317361867104777505?l=blog.pclark.net' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/5798716/5317361867104777505/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=5798716&amp;postID=5317361867104777505' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5798716/posts/default/5317361867104777505'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5798716/posts/default/5317361867104777505'/><link rel='alternate' type='text/html' href='http://blog.pclark.net/2008/10/fun-with-ie6-sslv2-and-tlsv1.html' title='Fun with IE6, SSLv2 and TLSv1'/><author><name>Peter Clark</name><uri>http://www.blogger.com/profile/07780127268335856418</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='10960298254805843228'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry></feed>