<?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: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'><id>tag:blogger.com,1999:blog-7118115279690287527</id><updated>2024-08-28T12:50:15.193-06:00</updated><category term="python"/><category term="java"/><category term="django"/><category term="podcast"/><category term="turbogears"/><category term="android"/><category term="comparison"/><category term="eclipse"/><category term="google"/><category term="pylons"/><category term="tool"/><category term=".net"/><category term="ajax"/><category term="bug"/><category term="build"/><category term="certification"/><category term="codereview"/><category term="continous integration"/><category term="criticism"/><category term="dalvik"/><category term="dbms"/><category term="emacs"/><category term="guido"/><category term="gwt"/><category term="ide"/><category term="ironpython"/><category term="javascript"/><category term="jvm"/><category term="jython"/><category term="languages"/><category term="mac"/><category term="mapreduce"/><category term="netbeans"/><category term="openoffice"/><category term="productivity"/><category term="python3000"/><category term="qa"/><category term="rails"/><category term="rest"/><category term="soa"/><category term="soap"/><category term="staticanalysis"/><category term="sun"/><category term="testing"/><category term="usability"/><category term="utility"/><category term="video"/><category term="visualization"/><category term="wtf"/><title type='text'>Rebel Without A Mouse</title><subtitle type='html'>Ramblings about Python, Java and software development</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://rebelwithoutamouse.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7118115279690287527/posts/default?redirect=false'/><link rel='alternate' type='text/html' href='http://rebelwithoutamouse.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><link rel='next' type='application/atom+xml' href='http://www.blogger.com/feeds/7118115279690287527/posts/default?start-index=26&amp;max-results=25&amp;redirect=false'/><author><name>nyenyec</name><uri>http://www.blogger.com/profile/06621333382570092647</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://farm1.static.flickr.com/143/341930525_8175e8a994_s.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>32</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-7118115279690287527.post-2981412705244701450</id><published>2009-02-13T20:45:00.000-06:00</published><updated>2009-02-13T20:45:17.107-06:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="java"/><category scheme="http://www.blogger.com/atom/ns#" term="wtf"/><title type='text'>FactoryFactories</title><content type='html'>Something somewhere went terribly wrong and we ended up with APIs like this.&lt;br /&gt;
&lt;br /&gt;
&lt;blockquote&gt;&lt;a href=&quot;http://ws.apache.org/xmlrpc/apidocs/org/apache/xmlrpc/server/RequestProcessorFactoryFactory.html?rel=html&quot;&gt;http://ws.apache.org/xmlrpc/apidocs/org/apache/xmlrpc/server/RequestProcessorFactoryFactory.html?rel=html&lt;br /&gt;
&lt;/a&gt;&lt;br /&gt;
&lt;i&gt;The default RequestProcessorFactoryFactory is the RequestProcessorFactoryFactory.RequestSpecificProcessorFactoryFactory. It creates a new processor instance for any request. In other words, it allows the request processor to have some state. This is fine, if the request processor is a lightweight object or needs request specific initialization. In this case, the actual request processor is created and invoked when calling RequestProcessorFactoryFactory.RequestProcessorFactory.getRequestProcessor(XmlRpcRequest).&lt;/i&gt;&lt;/blockquote&gt;&lt;br /&gt;
The really sad part is that in the Java world this specific example cannot be considered that extreme any more.&lt;br /&gt;
&lt;br /&gt;
&lt;a href=&quot;http://friendfeed.com/search?q=factoryfactories&quot;&gt;FactoryFactories&lt;/a&gt; &lt;a href=&quot;http://www.google.com/codesearch?as_q=FactoryFactory&amp;as_lang=java&quot;&gt;indeed&lt;/a&gt;.</content><link rel='replies' type='application/atom+xml' href='http://rebelwithoutamouse.blogspot.com/feeds/2981412705244701450/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/7118115279690287527/2981412705244701450' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7118115279690287527/posts/default/2981412705244701450'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7118115279690287527/posts/default/2981412705244701450'/><link rel='alternate' type='text/html' href='http://rebelwithoutamouse.blogspot.com/2009/02/factoryfactories.html' title='FactoryFactories'/><author><name>nyenyec</name><uri>http://www.blogger.com/profile/06621333382570092647</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://farm1.static.flickr.com/143/341930525_8175e8a994_s.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7118115279690287527.post-5732536310980820779</id><published>2009-02-13T16:10:00.000-06:00</published><updated>2009-02-13T16:10:19.394-06:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="emacs"/><category scheme="http://www.blogger.com/atom/ns#" term="ide"/><category scheme="http://www.blogger.com/atom/ns#" term="javascript"/><title type='text'>The Emacs of the future</title><content type='html'>Maybe Steve Yegge was right after all when he wrote &lt;a href=&quot;http://steve-yegge.blogspot.com/2008/04/xemacs-is-dead-long-live-xemacs.html&quot;&gt;last April&lt;/a&gt;:&lt;br /&gt;
&lt;br /&gt;
&lt;blockquote&gt;Developers are starting to wake up and realize that the best &quot;mainstream&quot; extensible platform (which excludes Emacs, on account of the Lisp) is Firefox or any other non-dead browser (which excludes IE). [...] And now the browsers are starting to sprout desktop-quality apps and productivity tools. It won&#39;t be long, I think, before the best Java development environment on the planet is written in JavaScript.&lt;/blockquote&gt;&lt;br /&gt;
And the &lt;a href=&quot;https://bespin.mozilla.com/&quot;&gt;Bespin&lt;/a&gt; prototype is proof that the future is maybe arriving earlier than many of us expected.&lt;br /&gt;
&lt;br /&gt;
&lt;object width=&quot;400&quot; height=&quot;225&quot;&gt;&lt;param name=&quot;allowfullscreen&quot; value=&quot;true&quot; /&gt;&lt;param name=&quot;allowscriptaccess&quot; value=&quot;always&quot; /&gt;&lt;param name=&quot;movie&quot; value=&quot;http://vimeo.com/moogaloop.swf?clip_id=3195079&amp;amp;server=vimeo.com&amp;amp;show_title=1&amp;amp;show_byline=1&amp;amp;show_portrait=0&amp;amp;color=&amp;amp;fullscreen=1&quot; /&gt;&lt;embed src=&quot;http://vimeo.com/moogaloop.swf?clip_id=3195079&amp;amp;server=vimeo.com&amp;amp;show_title=1&amp;amp;show_byline=1&amp;amp;show_portrait=0&amp;amp;color=&amp;amp;fullscreen=1&quot; type=&quot;application/x-shockwave-flash&quot; allowfullscreen=&quot;true&quot; allowscriptaccess=&quot;always&quot; width=&quot;400&quot; height=&quot;225&quot;&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;&lt;a href=&quot;http://vimeo.com/3195079&quot;&gt;Introducing Bespin&lt;/a&gt; from &lt;a href=&quot;http://vimeo.com/dion&quot;&gt;Dion Almaer&lt;/a&gt; on &lt;a href=&quot;http://vimeo.com&quot;&gt;Vimeo&lt;/a&gt;.</content><link rel='replies' type='application/atom+xml' href='http://rebelwithoutamouse.blogspot.com/feeds/5732536310980820779/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/7118115279690287527/5732536310980820779' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7118115279690287527/posts/default/5732536310980820779'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7118115279690287527/posts/default/5732536310980820779'/><link rel='alternate' type='text/html' href='http://rebelwithoutamouse.blogspot.com/2009/02/emacs-of-future.html' title='The Emacs of the future'/><author><name>nyenyec</name><uri>http://www.blogger.com/profile/06621333382570092647</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://farm1.static.flickr.com/143/341930525_8175e8a994_s.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7118115279690287527.post-3049191222289943837</id><published>2008-04-27T10:51:00.002-06:00</published><updated>2008-04-27T10:55:30.603-06:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="eclipse"/><category scheme="http://www.blogger.com/atom/ns#" term="java"/><title type='text'>Eclipse TPTP is a waste of time</title><content type='html'>I wasted many hours of my precious weekend to get the Eclipse TPTP Profiler to work. My scenario was a simple standalone Java application.&lt;br /&gt;&lt;br /&gt;Conclusion: it&#39;s not worth it, trying TFTP to work is an extremely frustrating experience. My life&#39;s too short for this kind of thing and I&#39;m &lt;a href=&quot;http://dev.eclipse.org/mhonarc/newsLists/news.eclipse.tptp/msg06127.html&quot;&gt;not the only one.&lt;/a&gt;</content><link rel='replies' type='application/atom+xml' href='http://rebelwithoutamouse.blogspot.com/feeds/3049191222289943837/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/7118115279690287527/3049191222289943837' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7118115279690287527/posts/default/3049191222289943837'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7118115279690287527/posts/default/3049191222289943837'/><link rel='alternate' type='text/html' href='http://rebelwithoutamouse.blogspot.com/2008/04/eclipse-tptp-is-waste-of-time.html' title='Eclipse TPTP is a waste of time'/><author><name>nyenyec</name><uri>http://www.blogger.com/profile/06621333382570092647</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://farm1.static.flickr.com/143/341930525_8175e8a994_s.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7118115279690287527.post-2053212635700921116</id><published>2008-02-14T10:28:00.003-06:00</published><updated>2008-02-14T10:33:24.342-06:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="android"/><title type='text'>Android API: Can&#39;t touch this!</title><content type='html'>From Ed Burnette&#39;s &lt;a href=&quot;http://blogs.zdnet.com/Burnette/?p=528&quot;&gt;blog entry&lt;/a&gt; on the Android SDK M5 update:&lt;br /&gt;&lt;blockquote&gt;&lt;br /&gt;But my favorite addition to M5 has to be a function called “&lt;a href=&quot;http://code.google.com/android/reference/android/content/ContentResolver.html#getDataFilePath(android.net.Uri)&quot;&gt;getDataFilePath()&lt;/a&gt;”. The documentation says:&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;DO NOT USE THIS FUNCTION!! Someone added this, and they shouldn’t have. You do not have direct access to files inside of a content provider. Don’t touch this. Go away.&lt;/blockquote&gt;&lt;/blockquote&gt;</content><link rel='replies' type='application/atom+xml' href='http://rebelwithoutamouse.blogspot.com/feeds/2053212635700921116/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/7118115279690287527/2053212635700921116' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7118115279690287527/posts/default/2053212635700921116'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7118115279690287527/posts/default/2053212635700921116'/><link rel='alternate' type='text/html' href='http://rebelwithoutamouse.blogspot.com/2008/02/android-api-cant-touch-this.html' title='Android API: Can&#39;t touch this!'/><author><name>nyenyec</name><uri>http://www.blogger.com/profile/06621333382570092647</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://farm1.static.flickr.com/143/341930525_8175e8a994_s.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7118115279690287527.post-6713003426667640062</id><published>2008-01-22T09:49:00.000-06:00</published><updated>2008-01-22T16:12:36.804-06:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="criticism"/><category scheme="http://www.blogger.com/atom/ns#" term="dbms"/><category scheme="http://www.blogger.com/atom/ns#" term="mapreduce"/><title type='text'>MapReduce: is it really &quot;a step backwards&quot;?</title><content type='html'>Some database people are not too happy about MapReduce starting to win the hearts and minds in academia.&lt;br /&gt;&lt;br /&gt;The rhetoric smells like yet another religious war. This is where I spit my morning beverage on the keyboard:&lt;br /&gt;&lt;blockquote&gt;&lt;br /&gt;Given the experimental evaluations to date, we have serious doubts about how well MapReduce applications can scale.&lt;/blockquote&gt;&lt;br /&gt;Furthermore it seems like they ignore that MapReduce tries to solve a very different problem than an RDBMS. One, for which a traditional DBMS doesn&#39;t provide a good solution right now.&lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;http://www.databasecolumn.com/2008/01/mapreduce-a-major-step-back.html&quot;&gt;MapReduce: A major step backwards&lt;/a&gt; by David J. DeWitt and Michael Stonebraker&lt;br /&gt;&lt;br /&gt;&lt;small&gt;&lt;br /&gt;via &lt;a href=&quot;http://www.artima.com/forums/flat.jsp?forum=276&amp;thread=223058&quot;&gt;Artima.com&lt;/a&gt;&lt;/small&gt;</content><link rel='replies' type='application/atom+xml' href='http://rebelwithoutamouse.blogspot.com/feeds/6713003426667640062/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/7118115279690287527/6713003426667640062' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7118115279690287527/posts/default/6713003426667640062'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7118115279690287527/posts/default/6713003426667640062'/><link rel='alternate' type='text/html' href='http://rebelwithoutamouse.blogspot.com/2008/01/mapreduce-is-it-really-step-backwards.html' title='MapReduce: is it really &quot;a step backwards&quot;?'/><author><name>nyenyec</name><uri>http://www.blogger.com/profile/06621333382570092647</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://farm1.static.flickr.com/143/341930525_8175e8a994_s.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7118115279690287527.post-1841866247206594381</id><published>2008-01-05T15:19:00.000-06:00</published><updated>2008-01-05T15:32:42.178-06:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="java"/><title type='text'>The Java closures controversy</title><content type='html'>&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEieFtoIR9oeCNgLqjo-VVtY87_pYQyaqPrLTA1n8sh-t3_uq8DKY14Vy_a6o5hZMll8cInI3m0rauOBSI0abbWMhPKfi-McNLmG-MdmKsYIw-ALldhhqJ3j8IdYcS_m3P-5LEN0rx9qj43l/s1600-h/JavaPolis_closures_bloch.png&quot;&gt;&lt;img style=&quot;cursor: pointer;&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEieFtoIR9oeCNgLqjo-VVtY87_pYQyaqPrLTA1n8sh-t3_uq8DKY14Vy_a6o5hZMll8cInI3m0rauOBSI0abbWMhPKfi-McNLmG-MdmKsYIw-ALldhhqJ3j8IdYcS_m3P-5LEN0rx9qj43l/s400/JavaPolis_closures_bloch.png&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5152105759381208738&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Although I didn&#39;t have time yet to study all the alternatives in detail, I&#39;ve read a few blog posts and watched the video of Joshua Bloch&#39;s &lt;a href=&quot;http://parleys.com/display/PARLEYS/The+Closures+Controversy?showComments=true&quot;&gt;presentation&lt;/a&gt; at Javapolis about the BGGA Closures proposal.&lt;br /&gt;&lt;br /&gt;I tend to agree with him. Rushing into a closures implementation and adding yet more complexity to Java is a great chance for the Java community to shoot itself in the foot and turning Java into another C++. In my opinion one strength of Java has always been the ability to say no to new features until there was a convincing solution.</content><link rel='replies' type='application/atom+xml' href='http://rebelwithoutamouse.blogspot.com/feeds/1841866247206594381/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/7118115279690287527/1841866247206594381' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7118115279690287527/posts/default/1841866247206594381'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7118115279690287527/posts/default/1841866247206594381'/><link rel='alternate' type='text/html' href='http://rebelwithoutamouse.blogspot.com/2008/01/java-closures-controversy.html' title='The Java closures controversy'/><author><name>nyenyec</name><uri>http://www.blogger.com/profile/06621333382570092647</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://farm1.static.flickr.com/143/341930525_8175e8a994_s.jpg'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEieFtoIR9oeCNgLqjo-VVtY87_pYQyaqPrLTA1n8sh-t3_uq8DKY14Vy_a6o5hZMll8cInI3m0rauOBSI0abbWMhPKfi-McNLmG-MdmKsYIw-ALldhhqJ3j8IdYcS_m3P-5LEN0rx9qj43l/s72-c/JavaPolis_closures_bloch.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7118115279690287527.post-2664633275980955041</id><published>2007-11-14T09:59:00.001-06:00</published><updated>2007-11-14T10:01:53.900-06:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="android"/><category scheme="http://www.blogger.com/atom/ns#" term="dalvik"/><category scheme="http://www.blogger.com/atom/ns#" term="google"/><category scheme="http://www.blogger.com/atom/ns#" term="java"/><category scheme="http://www.blogger.com/atom/ns#" term="jvm"/><category scheme="http://www.blogger.com/atom/ns#" term="sun"/><title type='text'>Dalvik: Google&#39;s workaround for Sun&#39;s JVM</title><content type='html'>Mobile programming suddenly got a lot more interesting&lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;http://www.betaversion.org/%7Estefano/linotype/news/110/&quot;&gt;Dalvik: how Google routed around Sun&#39;s IP-based licensing restrictions on Java ME&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;a href=&quot;http://code.google.com/android/what-is-android.html&quot;&gt;Dalvik is a virtual machine&lt;/a&gt;, just like Java&#39;s or .NET&#39;s.. but it&#39;s Google&#39;s own and they&#39;re making it open source without having to ask permission to anyone (well, for now, in the future expect a shit-load of IP-related lawsuits on this, especially since Sun and Microsoft signed a cross-IP licensing agreement on exactly such virtual machines technologies years ago... but don&#39;t forget IBM who has been writing emulation code for mainframes since the beginning of time).&lt;br /&gt;&lt;br /&gt;The Android SDK does not compile your Java source code into Dalvik&#39;s bytecode directly, but it first uses a regular java compiler to generate regular java bytecode (say, javac or the built-in Eclipse compiler) and then converts that bytecode into Dalvik&#39;s bytecode (the &quot;dx&quot; tool does this: convers .class/.jar into .dex files).&lt;br /&gt;&lt;br /&gt;[...]&lt;br /&gt;&lt;br /&gt;there is no need to ship a java virtual machine on your Android-powered phone and you can use your regular Java standard edition to develop your phone application (means, you don&#39;t need to use Java ME anywhere at all).&lt;/blockquote&gt;</content><link rel='replies' type='application/atom+xml' href='http://rebelwithoutamouse.blogspot.com/feeds/2664633275980955041/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/7118115279690287527/2664633275980955041' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7118115279690287527/posts/default/2664633275980955041'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7118115279690287527/posts/default/2664633275980955041'/><link rel='alternate' type='text/html' href='http://rebelwithoutamouse.blogspot.com/2007/11/dalvik-googles-workaround-for-suns-jvm.html' title='Dalvik: Google&#39;s workaround for Sun&#39;s JVM'/><author><name>nyenyec</name><uri>http://www.blogger.com/profile/06621333382570092647</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://farm1.static.flickr.com/143/341930525_8175e8a994_s.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7118115279690287527.post-3051844718697964017</id><published>2007-11-09T12:49:00.000-06:00</published><updated>2007-11-09T12:54:15.014-06:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="productivity"/><title type='text'>Working / reading retreats</title><content type='html'>John Carmack &lt;a href=&quot;http://ds.ign.com/articles/833/833894p1.html&quot;&gt;says&lt;/a&gt;:&lt;br /&gt;&lt;blockquote&gt;Once or twice a year I go on &quot;working retreats&quot;, where I lock myself in a hotel room for two weeks with no internet connection for completely focused work.&lt;/blockquote&gt;Many-many years ago when I read about Bill Gates&#39; twice-yearly &quot;think weeks&quot; I immediately realized how much I needed such a thing. Either reading or working would be fine. Just go completely offline, no phone, no emails, no feeds, no internet, no TV.&lt;br /&gt;&lt;br /&gt;I&#39;ll try do do one full offline weekend for practice sometime. :)</content><link rel='replies' type='application/atom+xml' href='http://rebelwithoutamouse.blogspot.com/feeds/3051844718697964017/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/7118115279690287527/3051844718697964017' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7118115279690287527/posts/default/3051844718697964017'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7118115279690287527/posts/default/3051844718697964017'/><link rel='alternate' type='text/html' href='http://rebelwithoutamouse.blogspot.com/2007/11/working-reading-retreats.html' title='Working / reading retreats'/><author><name>nyenyec</name><uri>http://www.blogger.com/profile/06621333382570092647</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://farm1.static.flickr.com/143/341930525_8175e8a994_s.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7118115279690287527.post-2943790585029830254</id><published>2007-09-04T07:53:00.000-06:00</published><updated>2007-09-04T08:05:38.430-06:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="build"/><category scheme="http://www.blogger.com/atom/ns#" term="continous integration"/><title type='text'>Hudson</title><content type='html'>For almost 5 years we&#39;ve been using &lt;a href=&quot;http://cruisecontrol.sourceforge.net/&quot;&gt;CruiseControl&lt;/a&gt; for continous builds. Last time I actually fiddled with the setup it was very buggy for such a widely used open source project but I learned to live with it because there were no convincing good alternatives.&lt;br /&gt;&lt;br /&gt;Currently my company is evaluating the commercial &lt;a href=&quot;http://www.anthillpro.com/&quot;&gt;Anthill&lt;/a&gt; for managing build reports for projects based on both Java and Microsoft technologies. Anthill seems nice, but it&#39;s commercial and closed source software and I would prefer something open source.&lt;br /&gt;&lt;br /&gt;So I spent some time looking at &lt;a href=&quot;https://hudson.dev.java.net/&quot;&gt;Hudson&lt;/a&gt;. It seems really nice, with &lt;a href=&quot;http://hudson.gotdns.com/wiki/display/HUDSON/Meet+Hudson&quot;&gt;tons of features&lt;/a&gt;, GUI configuration and support for several issue tracking and build systems.&lt;br /&gt;I especially liked the weather report like overview as seen on &lt;a href=&quot;http://deadlock.netbeans.org/hudson/&quot;&gt;deadlock.netbeans.org&lt;/a&gt;.&lt;br /&gt;&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;http://bp1.blogghttp//www.blogger.com/img/gl.link.gifer.com/_PdrCJENXNSM/Rt1jlTSRTXI/AAAAAAAABW4/gTy4SVeV6CQ/s1600-h/Picture+25.png&quot;&gt;&lt;img style=&quot;cursor: pointer;&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjzJBFshkacYT2-uLVI3MV28kz9tidlsjHPOdugOgv8ciShVCPUaOodgNWg1uoh6EqZp4iihOZowGAhOHx_l-8RwS2mEZC8ZCu3K0Xrekmpsk1MJAzNIIWGOtT-BG8w02UNghZWPmwBuWSs/s400/Picture+25.png&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5106347044991225202&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Unfortunately I stumbled into &lt;a href=&quot;https://hudson.dev.java.net/issues/show_bug.cgi?id=784&quot;&gt;a problem&lt;/a&gt; while trying to connect to our SVN server so I can&#39;t recommend it for our project just yet.</content><link rel='replies' type='application/atom+xml' href='http://rebelwithoutamouse.blogspot.com/feeds/2943790585029830254/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/7118115279690287527/2943790585029830254' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7118115279690287527/posts/default/2943790585029830254'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7118115279690287527/posts/default/2943790585029830254'/><link rel='alternate' type='text/html' href='http://rebelwithoutamouse.blogspot.com/2007/09/hudson.html' title='Hudson'/><author><name>nyenyec</name><uri>http://www.blogger.com/profile/06621333382570092647</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://farm1.static.flickr.com/143/341930525_8175e8a994_s.jpg'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjzJBFshkacYT2-uLVI3MV28kz9tidlsjHPOdugOgv8ciShVCPUaOodgNWg1uoh6EqZp4iihOZowGAhOHx_l-8RwS2mEZC8ZCu3K0Xrekmpsk1MJAzNIIWGOtT-BG8w02UNghZWPmwBuWSs/s72-c/Picture+25.png" height="72" width="72"/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7118115279690287527.post-6441860242840409420</id><published>2007-08-16T10:37:00.000-06:00</published><updated>2007-08-16T11:02:53.184-06:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="podcast"/><title type='text'>Software Engineering Radio and public speaking</title><content type='html'>I recently discovered &lt;a href=&quot;http://www.se-radio.net/&quot;&gt;Software Engineering Radio&lt;/a&gt; and added it to the list of podcasts I regularly listen to during my commute.&lt;br /&gt;&lt;br /&gt;There are 2 interviews in the archives with none other, than Prof. &lt;a href=&quot;http://www.dre.vanderbilt.edu/%7Eschmidt/&quot;&gt;Doug Schmidt&lt;/a&gt;, who works at the same institute where I do (he is the creator of the ACE/TAO framework and the author of the Pattern Oriented Software Architecture books among others.). Unlike most of us nerds, he is a truly brilliant public speaker. I admit sitting in during some of his talks where the topic itself was not all that interesting for me, just to listen to him talk.&lt;br /&gt;&lt;br /&gt;Well, today, I realized one of his secrets. Well, in addition to being smart of course. And having a good sense of humor. His other secret is: he talks fast. A high words per minute count doed make you sound more interesting and even smarter.&lt;br /&gt;&lt;br /&gt;See also GeekBrief TV&#39;s &lt;a href=&quot;http://www.podshow.com/shows/?mode=detail&amp;episode_id=60054&quot;&gt;episode 166&lt;/a&gt;, where Cali Lewis talks about why learning to talk fast is important. [&lt;span style=&quot;font-style: italic;&quot;&gt;Update&lt;/span&gt;: the archive doesn&#39;t go back enough to see that episode. Oh, well.]</content><link rel='replies' type='application/atom+xml' href='http://rebelwithoutamouse.blogspot.com/feeds/6441860242840409420/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/7118115279690287527/6441860242840409420' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7118115279690287527/posts/default/6441860242840409420'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7118115279690287527/posts/default/6441860242840409420'/><link rel='alternate' type='text/html' href='http://rebelwithoutamouse.blogspot.com/2007/08/software-engineering-radio-and-public.html' title='Software Engineering Radio and public speaking'/><author><name>nyenyec</name><uri>http://www.blogger.com/profile/06621333382570092647</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://farm1.static.flickr.com/143/341930525_8175e8a994_s.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7118115279690287527.post-6506855076263382179</id><published>2007-08-14T12:46:00.000-06:00</published><updated>2007-08-14T13:35:12.657-06:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="certification"/><category scheme="http://www.blogger.com/atom/ns#" term="java"/><title type='text'>Passed the SCJP exam</title><content type='html'>&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjO9tr2gw3vdOcBF6dFmQ0u2yAezC9cEHSblrAFIMNlyCmHU11gQ8b8TdAsneqC4le2X3KabIQaMTOLTMeE6CzlfuIrCXpQCXXsaPXeWk7WhZtAjtskQAoLlJtxal-H3zKOCKVDEb-UYdc/s1600-h/scjp_book.jpg&quot;&gt;&lt;img style=&quot;cursor: pointer;&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjO9tr2gw3vdOcBF6dFmQ0u2yAezC9cEHSblrAFIMNlyCmHU11gQ8b8TdAsneqC4le2X3KabIQaMTOLTMeE6CzlfuIrCXpQCXXsaPXeWk7WhZtAjtskQAoLlJtxal-H3zKOCKVDEb-UYdc/s400/scjp_book.jpg&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5098620051588431794&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;&lt;br /&gt;Many years ago I wanted to get an SCJP exam, but changed jobs before I could take it and later forgot about it somehow. Last month I decided that I&#39;d take care of this unfinished business.&lt;br /&gt;&lt;br /&gt;It took me a bit less than 2 weeks to prepare spending about 1 hour a day on average reading the book and solving example questions.&lt;br /&gt;&lt;br /&gt;The exam is not hard if you have a lot of Java experience (I started developing in Java back in 1997 with JDK and 1.0 and Applets...) but it does have a few trick questions. The format is typically: what does this program print, but since &quot;compilation fails&quot; and &quot;an Exception is thrown at Runtime&quot; are almost always among the possible choices you have to look at the code carefully.&lt;br /&gt;&lt;br /&gt;Some of the things I learned during the preparation are pretty much useless, like watching out for silly mistakes that modern IDEs, such as Eclipse &lt;a href=&quot;http://www.google.com/search?q=eclipse+quick+fix&quot;&gt;catch for you&lt;/a&gt; immediately as you type the code.&lt;br /&gt;&lt;br /&gt;Other questions test your knowledge of corner cases in the language that I&#39;ve never encountered in my many years of coding, such as whether &lt;tt&gt;catch (Exception e)&lt;/tt&gt; will catch &lt;tt&gt;AssertionError&lt;/tt&gt; or whether this abomination compiles:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;long[][] a[] = new long[3][][];&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;(It does.)&lt;br /&gt;&lt;br /&gt;So now I&#39;m certified (I got 90%) and know much more about the &lt;a href=&quot;http://java.sun.com/j2se/1.5.0/docs/api/java/util/Scanner.html&quot;&gt;java.util.Scanner&lt;/a&gt; class than I&#39;ll ever need to. :)</content><link rel='replies' type='application/atom+xml' href='http://rebelwithoutamouse.blogspot.com/feeds/6506855076263382179/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/7118115279690287527/6506855076263382179' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7118115279690287527/posts/default/6506855076263382179'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7118115279690287527/posts/default/6506855076263382179'/><link rel='alternate' type='text/html' href='http://rebelwithoutamouse.blogspot.com/2007/08/passed-scjp-exam.html' title='Passed the SCJP exam'/><author><name>nyenyec</name><uri>http://www.blogger.com/profile/06621333382570092647</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://farm1.static.flickr.com/143/341930525_8175e8a994_s.jpg'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjO9tr2gw3vdOcBF6dFmQ0u2yAezC9cEHSblrAFIMNlyCmHU11gQ8b8TdAsneqC4le2X3KabIQaMTOLTMeE6CzlfuIrCXpQCXXsaPXeWk7WhZtAjtskQAoLlJtxal-H3zKOCKVDEb-UYdc/s72-c/scjp_book.jpg" height="72" width="72"/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7118115279690287527.post-818766655108856966</id><published>2007-07-17T11:23:00.000-06:00</published><updated>2007-07-17T11:57:51.860-06:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="codereview"/><category scheme="http://www.blogger.com/atom/ns#" term="qa"/><category scheme="http://www.blogger.com/atom/ns#" term="staticanalysis"/><category scheme="http://www.blogger.com/atom/ns#" term="testing"/><title type='text'>Code reviews, automated testing, static analysis</title><content type='html'>There was an &lt;a href=&quot;http://javaposse.com/index.php?post_id=234091&quot;&gt;interview&lt;/a&gt; on The Java Posse podcast where Brian Goetz (whose &lt;a href=&quot;http://www.javaconcurrencyinpractice.com/&quot;&gt;book&lt;/a&gt; is great BTW) said something about software QA which made me nod heavily  in agreement. (It probably looked strange standing alone in the bus stop). I liked it so much, that I&#39;ll transcribe it here:&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&quot;If you ask most developers on the street &#39;why do we test code&#39; you&#39;ll get an answer something like: &#39;to find bugs!&#39; Finding bugs is good, but I think finding bugs is a happy side effect of writing tests. [...]&lt;br /&gt;&lt;br /&gt;Writing tests is one of those necessary things but it exhibits diminishing returns. The first 100 hours you spend writing tests are probably going to be more effective in terms of improving your confidence in the code than the 100 hours from 1000-1100. [...]&lt;br /&gt;&lt;br /&gt;A better way to think about the kind of testing that we do is not that we&#39;re looking for bugs it&#39;s that &lt;span style=&quot;font-style: italic;&quot;&gt;we&#39;re looking to buy confidence&lt;/span&gt;. [...]&lt;br /&gt;&lt;br /&gt;Writing tests is a form of buying confidence that exhibits diminishing returns.&lt;br /&gt;Code review does the same thing. [...]&lt;br /&gt;&lt;br /&gt;And if you try to apply portfolio theory to optimizing the QA budget [and] you observe that both of these buy you confidence with diminishing returns and they&#39;re uncorrelated then the optimal portfolio is to have some mix of testing and code review rather than putting all your eggs in one basket or the other.&lt;br /&gt;&lt;br /&gt;Static analysis yet a third thing we can do [...] that tends to find different kinds of bugs than either testing or code review. So it&#39;s something that should be part of everybody&#39;s development lifecycle, ererybody&#39;s arsenal, everybody&#39;s toolkit.&quot;&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;I&#39;m a huge fan of &lt;a href=&quot;http://findbugs.sourceforge.net/&quot;&gt;FindBugs&lt;/a&gt; and other static analysis tools I wish there were more ways (ie. a richer set of annotations) to make things in Python (and even in Java) more explicit, so that these tools could catch stupid mistakes for almost free and immediately rather than letting them slip through and manifest as hard to find bugs further down the road.</content><link rel='replies' type='application/atom+xml' href='http://rebelwithoutamouse.blogspot.com/feeds/818766655108856966/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/7118115279690287527/818766655108856966' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7118115279690287527/posts/default/818766655108856966'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7118115279690287527/posts/default/818766655108856966'/><link rel='alternate' type='text/html' href='http://rebelwithoutamouse.blogspot.com/2007/07/code-reviews-automated-testing-static.html' title='Code reviews, automated testing, static analysis'/><author><name>nyenyec</name><uri>http://www.blogger.com/profile/06621333382570092647</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://farm1.static.flickr.com/143/341930525_8175e8a994_s.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7118115279690287527.post-1591862885450313704</id><published>2007-07-08T07:26:00.000-06:00</published><updated>2007-07-08T07:57:23.768-06:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="podcast"/><category scheme="http://www.blogger.com/atom/ns#" term="python"/><title type='text'>A nice podcast on Python VMs</title><content type='html'>I don&#39;t have much time and patience for podcasts and I&#39;m really happy when I find one that doesn&#39;t make me feel like I&#39;m wasting my time. Here&#39;s probably the most informative podcast on Python that I&#39;ve listened to in a long time:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href=&quot;http://img671.libsyn.com/img671/58a8e08fb162481925dd82749db7a5f1/4690e93e/6098/648/Python411_070421_HowPythonRuns.mp3&quot;&gt;How Python runs by Chris Hefele [MP3]&lt;/a&gt; (Guest podcast on &lt;a href=&quot;http://www.awaretek.com/python/index.html&quot;&gt;Python411&lt;/a&gt;)&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;It&#39;s a nice high level overview of &lt;a href=&quot;http://en.wikipedia.org/wiki/Cpython&quot;&gt;CPython&lt;/a&gt;, &lt;a href=&quot;http://www.jython.org&quot;&gt;Jython&lt;/a&gt;, &lt;a href=&quot;http://www.codeplex.com/Wiki/View.aspx?ProjectName=IronPython&quot;&gt;IronPython&lt;/a&gt;, &lt;a href=&quot;http://psyco.sourceforge.net/&quot;&gt;Psyco&lt;/a&gt; and &lt;a href=&quot;http://codespeak.net/pypy/dist/pypy/doc/news.html&quot;&gt;PyPy&lt;/a&gt;. How they came about, what&#39;s the idea behind each of them and how they relate to each other.&lt;br /&gt;&lt;br /&gt;The podcast is from April and in my opinion paints a somewhat rosy picture of these technologies but it&#39;s still highly recommended.</content><link rel='replies' type='application/atom+xml' href='http://rebelwithoutamouse.blogspot.com/feeds/1591862885450313704/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/7118115279690287527/1591862885450313704' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7118115279690287527/posts/default/1591862885450313704'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7118115279690287527/posts/default/1591862885450313704'/><link rel='alternate' type='text/html' href='http://rebelwithoutamouse.blogspot.com/2007/07/nice-podcast-on-python-vms.html' title='A nice podcast on Python VMs'/><author><name>nyenyec</name><uri>http://www.blogger.com/profile/06621333382570092647</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://farm1.static.flickr.com/143/341930525_8175e8a994_s.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7118115279690287527.post-6361728382011293210</id><published>2007-06-26T12:33:00.001-06:00</published><updated>2007-06-26T12:46:25.655-06:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="comparison"/><category scheme="http://www.blogger.com/atom/ns#" term="django"/><category scheme="http://www.blogger.com/atom/ns#" term="pylons"/><category scheme="http://www.blogger.com/atom/ns#" term="turbogears"/><title type='text'>Yet another Python web development framework comparison</title><content type='html'>If you&#39;re still sitting on the fence about the right web framework here&#39;s another comparison post describing Django, Pylons and TurboGears.&lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;http://jesusphreak.infogami.com/blog/vrp1&quot;&gt;Python web development and frameworks in 2007&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;I don&#39;t understand why the poster thinks that the TurboGears community is in &#39;decline&#39;. All I see is that there are more subscribers on the mailing list than ever (3 times as many as for Pylons).</content><link rel='replies' type='application/atom+xml' href='http://rebelwithoutamouse.blogspot.com/feeds/6361728382011293210/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/7118115279690287527/6361728382011293210' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7118115279690287527/posts/default/6361728382011293210'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7118115279690287527/posts/default/6361728382011293210'/><link rel='alternate' type='text/html' href='http://rebelwithoutamouse.blogspot.com/2007/06/yet-another-python-web-development.html' title='Yet another Python web development framework comparison'/><author><name>nyenyec</name><uri>http://www.blogger.com/profile/06621333382570092647</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://farm1.static.flickr.com/143/341930525_8175e8a994_s.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7118115279690287527.post-8455259205668359929</id><published>2007-06-25T08:24:00.000-06:00</published><updated>2007-06-25T08:41:37.021-06:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="google"/><category scheme="http://www.blogger.com/atom/ns#" term="podcast"/><title type='text'>Google Developer Podcast</title><content type='html'>The only podcast that I regurarly listen to nowadays is &lt;a href=&quot;http://javaposse.com/&quot;&gt;The Java Posse&lt;/a&gt;. Recently Google launched a developer oriented podcast called the &lt;a href=&quot;http://google-code-updates.blogspot.com/2007/05/introducing-google-developer-podcast.html&quot;&gt;Google Developer Podcast&lt;/a&gt;. Since Dick Wall and Carl Quinn from the Posse are participating in the GDP it&#39;s almost like listening to a special edition of the Java Posse. For me this is a very good thing.&lt;br /&gt;&lt;br /&gt;When I started going to the gym more I subscribed to tons of different podcasts: &lt;a href=&quot;http://www.awaretek.com/python/index.html&quot;&gt;Python411&lt;/a&gt;, &lt;a href=&quot;http://www.drunkandretired.com/&quot;&gt;Drunk and Retired&lt;/a&gt; (Java), &lt;a href=&quot;http://revision3.com/diggnation/&quot;&gt;Digg Nation&lt;/a&gt;, &lt;a href=&quot;http://www.twit.tv/FLOSS&quot;&gt;Floss Weekly&lt;/a&gt;, etc. In the long run however I found that most of them are too unprofessional for my taste or don&#39;t have the right topics and especially signal to noise ratio. So I ended up listening to them only occasionally and stuck with the Posse in the last few months.&lt;br /&gt;&lt;br /&gt;Are there any good developer podcasts you recommend?</content><link rel='replies' type='application/atom+xml' href='http://rebelwithoutamouse.blogspot.com/feeds/8455259205668359929/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/7118115279690287527/8455259205668359929' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7118115279690287527/posts/default/8455259205668359929'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7118115279690287527/posts/default/8455259205668359929'/><link rel='alternate' type='text/html' href='http://rebelwithoutamouse.blogspot.com/2007/06/google-developer-podcast.html' title='Google Developer Podcast'/><author><name>nyenyec</name><uri>http://www.blogger.com/profile/06621333382570092647</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://farm1.static.flickr.com/143/341930525_8175e8a994_s.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7118115279690287527.post-2396393903722666091</id><published>2007-06-21T13:07:00.000-06:00</published><updated>2007-06-21T13:11:22.192-06:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="comparison"/><category scheme="http://www.blogger.com/atom/ns#" term="django"/><category scheme="http://www.blogger.com/atom/ns#" term="pylons"/><category scheme="http://www.blogger.com/atom/ns#" term="python"/><category scheme="http://www.blogger.com/atom/ns#" term="turbogears"/><title type='text'>Django, TurboGears, Pylons comparison</title><content type='html'>It doesn&#39;t even try to be &quot;scientific&quot; but I still found this comparison of the currently popular Python web frameworks very informative:&lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;http://nxsy.org/blog/archives/2007/06/19/unscientific-and-biased-comparison-of-django-pylons-and-turbogears&quot;&gt;Unscientific and biased comparison of Django, Pylons, and TurboGears&lt;/a&gt;</content><link rel='replies' type='application/atom+xml' href='http://rebelwithoutamouse.blogspot.com/feeds/2396393903722666091/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/7118115279690287527/2396393903722666091' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7118115279690287527/posts/default/2396393903722666091'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7118115279690287527/posts/default/2396393903722666091'/><link rel='alternate' type='text/html' href='http://rebelwithoutamouse.blogspot.com/2007/06/django-turbogears-pylons-comparison.html' title='Django, TurboGears, Pylons comparison'/><author><name>nyenyec</name><uri>http://www.blogger.com/profile/06621333382570092647</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://farm1.static.flickr.com/143/341930525_8175e8a994_s.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7118115279690287527.post-5187898451703392292</id><published>2007-05-01T12:59:00.000-06:00</published><updated>2007-05-01T14:37:32.249-06:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="guido"/><category scheme="http://www.blogger.com/atom/ns#" term="python"/><category scheme="http://www.blogger.com/atom/ns#" term="python3000"/><category scheme="http://www.blogger.com/atom/ns#" term="video"/><title type='text'>Guido&#39;s Python 3000 Talk</title><content type='html'>I somehow missed this talk &lt;a href=&quot;http://en.wikipedia.org/wiki/Guido_van_Rossum&quot;&gt;Guido&lt;/a&gt; gave at Google about &lt;a href=&quot;http://www.python.org/dev/peps/pep-3000/&quot;&gt;Python 3000&lt;/a&gt;. I found it through &lt;a href=&quot;http://www.stumbleupon.com/&quot;&gt;StumbleUpon&lt;/a&gt; now.&lt;br /&gt;&lt;br /&gt;&lt;embed style=&quot;width:400px; height:326px;&quot; id=&quot;VideoPlayback&quot; type=&quot;application/x-shockwave-flash&quot; src=&quot;http://video.google.com/googleplayer.swf?docId=1189446823303316785&amp;hl=en&quot; flashvars=&quot;&quot;&gt; &lt;/embed&gt;</content><link rel='replies' type='application/atom+xml' href='http://rebelwithoutamouse.blogspot.com/feeds/5187898451703392292/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/7118115279690287527/5187898451703392292' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7118115279690287527/posts/default/5187898451703392292'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7118115279690287527/posts/default/5187898451703392292'/><link rel='alternate' type='text/html' href='http://rebelwithoutamouse.blogspot.com/2007/05/guidos-python-3000-talk.html' title='Guido&#39;s Python 3000 Talk'/><author><name>nyenyec</name><uri>http://www.blogger.com/profile/06621333382570092647</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://farm1.static.flickr.com/143/341930525_8175e8a994_s.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7118115279690287527.post-1136854975673867738</id><published>2007-02-24T00:19:00.000-06:00</published><updated>2007-02-24T00:31:19.789-06:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="python"/><title type='text'>Python web frameworks quote</title><content type='html'>Reading through the &lt;a href=&quot;http://www.b-list.org/weblog/2007/02/23/pycon-2007-web-frameworks-panel&quot;&gt;PyCon 2007 notes&lt;/a&gt;:&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;There are more Python frameworks than reserved Python keywords.&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;Funny because it&#39;s true. :)</content><link rel='replies' type='application/atom+xml' href='http://rebelwithoutamouse.blogspot.com/feeds/1136854975673867738/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/7118115279690287527/1136854975673867738' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7118115279690287527/posts/default/1136854975673867738'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7118115279690287527/posts/default/1136854975673867738'/><link rel='alternate' type='text/html' href='http://rebelwithoutamouse.blogspot.com/2007/02/python-web-frameworks-quote.html' title='Python web frameworks quote'/><author><name>nyenyec</name><uri>http://www.blogger.com/profile/06621333382570092647</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://farm1.static.flickr.com/143/341930525_8175e8a994_s.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7118115279690287527.post-8746094553707369950</id><published>2007-02-03T09:55:00.000-06:00</published><updated>2007-02-03T10:00:41.591-06:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="bug"/><category scheme="http://www.blogger.com/atom/ns#" term="openoffice"/><title type='text'>Open Office and regular expressions</title><content type='html'>For the first time in my life, I tried to use Open Office for more than 15 minutes. While converting data from an HTML page into a chart I noticed that regular expressions don&#39;t seem to work in the Replace part of the Find/Replace dialog.&lt;br /&gt;&lt;br /&gt;This must be a joke. My problem is trivial: Convert &quot;8.1 k&quot; into &quot;8100&quot; and &quot;9k into 9000&quot;. I can&#39;t do it the straightforward way with 2 regular expressions. On an ideological level I&#39;m a big supporter of Open Office, but today all I see is that it&#39;s wasting my time. (The corresponding online help for the dialog is not very useful either.)</content><link rel='replies' type='application/atom+xml' href='http://rebelwithoutamouse.blogspot.com/feeds/8746094553707369950/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/7118115279690287527/8746094553707369950' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7118115279690287527/posts/default/8746094553707369950'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7118115279690287527/posts/default/8746094553707369950'/><link rel='alternate' type='text/html' href='http://rebelwithoutamouse.blogspot.com/2007/02/open-office-and-regular-expressions.html' title='Open Office and regular expressions'/><author><name>nyenyec</name><uri>http://www.blogger.com/profile/06621333382570092647</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://farm1.static.flickr.com/143/341930525_8175e8a994_s.jpg'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7118115279690287527.post-5842517719395431906</id><published>2007-01-08T16:14:00.000-06:00</published><updated>2007-01-08T16:17:17.892-06:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="visualization"/><title type='text'>Periodic Table of Visualization Methods</title><content type='html'>&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjy76BQSWyQ7aYQ6C_3pSJiqhkmVTlM39sG70rsw-WbQBoQKFFa1Gffc1n8inX60O7n3-O5G6ZVgwohrM_T4eCbUptWm69RkJhcM9RXoFRQlFz44Fw5PXNNrZi9KMaYQ4N0HLdiR__fwHq0/s1600-h/Periodic+table+of+visualization+methods.png&quot;&gt;&lt;img style=&quot;cursor: pointer;&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjy76BQSWyQ7aYQ6C_3pSJiqhkmVTlM39sG70rsw-WbQBoQKFFa1Gffc1n8inX60O7n3-O5G6ZVgwohrM_T4eCbUptWm69RkJhcM9RXoFRQlFz44Fw5PXNNrZi9KMaYQ4N0HLdiR__fwHq0/s400/Periodic+table+of+visualization+methods.png&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5017786840131368242&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;An extremely cool &lt;a href=&quot;http://www.visual-literacy.org/periodic_table/periodic_table.html&quot;&gt;collection of visualization methods&lt;/a&gt;. You can mouse over to get an example of each.</content><link rel='replies' type='application/atom+xml' href='http://rebelwithoutamouse.blogspot.com/feeds/5842517719395431906/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/7118115279690287527/5842517719395431906' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7118115279690287527/posts/default/5842517719395431906'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7118115279690287527/posts/default/5842517719395431906'/><link rel='alternate' type='text/html' href='http://rebelwithoutamouse.blogspot.com/2007/01/periodic-table-of-visualization-methods.html' title='Periodic Table of Visualization Methods'/><author><name>nyenyec</name><uri>http://www.blogger.com/profile/06621333382570092647</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://farm1.static.flickr.com/143/341930525_8175e8a994_s.jpg'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjy76BQSWyQ7aYQ6C_3pSJiqhkmVTlM39sG70rsw-WbQBoQKFFa1Gffc1n8inX60O7n3-O5G6ZVgwohrM_T4eCbUptWm69RkJhcM9RXoFRQlFz44Fw5PXNNrZi9KMaYQ4N0HLdiR__fwHq0/s72-c/Periodic+table+of+visualization+methods.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7118115279690287527.post-7096617481051993236</id><published>2007-01-05T23:31:00.000-06:00</published><updated>2007-01-05T23:37:56.925-06:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="python"/><category scheme="http://www.blogger.com/atom/ns#" term="tool"/><title type='text'>PEP 8 checker</title><content type='html'>&lt;a href=&quot;http://groups.google.com/group/comp.lang.python.announce/browse_frm/thread/9888b5bc2fb10821/1e428329fd2b2eae?&amp;_done=%2Fgroup%2Fcomp.lang.python.announce%2Fbrowse_frm%2Fthread%2F9888b5bc2fb10821%2F1e428329fd2b2eae%3F&quot;&gt;PEP 8 checker&lt;/a&gt; for the anal retentive in all of us. :)&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;/Users/gergely/twp/twp/bot.py:32:16: W291 trailing whitespace&lt;br /&gt;    sys.exit(1)&lt;br /&gt;               ^&lt;br /&gt;    JCR: Trailing whitespace is superfluous.&lt;br /&gt;&lt;br /&gt;/Users/gergely/twp/twp/bot.py:34:1: E302 expected 2 blank lines, found 1&lt;br /&gt;def refresh_images(limit=dbbot._default_limit):&lt;br /&gt;^&lt;br /&gt;    Separate top-level function and class definitions with two blank lines.&lt;br /&gt;&lt;br /&gt;    Method definitions inside a class are separated by a single blank line.&lt;br /&gt;&lt;br /&gt;    Extra blank lines may be used (sparingly) to separate groups of related&lt;br /&gt;    functions.  Blank lines may be omitted between a bunch of related&lt;br /&gt;    one-liners (e.g. a set of dummy implementations).&lt;br /&gt;&lt;br /&gt;    Use blank lines in functions, sparingly, to indicate logical sections.&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;I&#39;m the kind of masochistic guy who actually enjoys this kind of thing, but I need to figure out a better way to integrate it with PyDev. I wonder what&#39;s the easiest way to make Eclipse jump to the line where the error happened. Hmm...</content><link rel='replies' type='application/atom+xml' href='http://rebelwithoutamouse.blogspot.com/feeds/7096617481051993236/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/7118115279690287527/7096617481051993236' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7118115279690287527/posts/default/7096617481051993236'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7118115279690287527/posts/default/7096617481051993236'/><link rel='alternate' type='text/html' href='http://rebelwithoutamouse.blogspot.com/2007/01/pep-8-checker.html' title='PEP 8 checker'/><author><name>nyenyec</name><uri>http://www.blogger.com/profile/06621333382570092647</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://farm1.static.flickr.com/143/341930525_8175e8a994_s.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7118115279690287527.post-5911012203968311134</id><published>2007-01-05T16:39:00.000-06:00</published><updated>2007-01-06T08:25:03.666-06:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="turbogears"/><title type='text'>TurboGears 1.0 and beyond</title><content type='html'>Kevin Dangoor, TurboGears project lead &lt;a href=&quot;http://www.blueskyonmars.com/2007/01/03/turbogears-10-released/&quot;&gt;announced&lt;/a&gt; 1.0 this week &lt;a href=&quot;http://irclog.turbogears.org/archive/freenode/turbogears/2007/01/03&quot;&gt;on IRC&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;I was there and I have this pretty screenshot to prove it! :)&lt;br /&gt;&lt;br /&gt;&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh3Am6795SreAU296Qwg0912873f3wZA1XymS_rBUbjSLwVleV-BqsCVPNS-DFBAmRpV7F353sN6YQS3WZfENiZwU1FGa9UYeMfr4vYotxWc8PoebotiFsKVlPlbNbDgsE1XOPNbhR0eptK/s1600-h/TurboGears+1.0+announcement+on+IRC.png&quot;&gt;&lt;img style=&quot;cursor: pointer;&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh3Am6795SreAU296Qwg0912873f3wZA1XymS_rBUbjSLwVleV-BqsCVPNS-DFBAmRpV7F353sN6YQS3WZfENiZwU1FGa9UYeMfr4vYotxWc8PoebotiFsKVlPlbNbDgsE1XOPNbhR0eptK/s400/TurboGears+1.0+announcement+on+IRC.png&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5015858282915019218&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Maybe even more importantly, TurboGears has a new leader: Alberto Valverde.&lt;br /&gt;&lt;br /&gt;I was too busy to stay there for the followup discussions, but the gist of it seemed to be that a heavily &lt;a href=&quot;http://wsgi.org/wsgi&quot;&gt;WSGI&lt;/a&gt; based approach (sounded much like Pylons) will solve all problems including world hunger and the conflict in the Middle East.&lt;br /&gt;&lt;br /&gt;Another equally important thing was the direction that is planned for TurboGears 2.0: decentralization and modularization. From what I understand people want to fork off chunks of TurboGears into fairly independent and externally reusable projects and keep TurboGears a small chunk of glue code that connects them together.&lt;br /&gt;&lt;br /&gt;On the one hand this is not new, TurboGears started out by integrating a bunch of preexisting tools. &lt;a href=&quot;http://toscawidgets.org/&quot;&gt;ToscaWidgets&lt;/a&gt; was forked off recently from the TurboGears widget code. I agree that this approach can work to a certain extent. My guess is that in the case of TG the current change of direction (actually returning to its minimalistic roots) was more organizational than architectural. (Not that you can separate the two: see &lt;a href=&quot;http://en.wikipedia.org/wiki/Conway%27s_Law&quot;&gt;Conway&#39;s Law&lt;/a&gt;)&lt;br /&gt;&lt;br /&gt;But there are pros and cons to decoupling. Unix command line tools are a good example. They were great, because there were standard interfaces between them which let them develop and be tested independently. But there is also a huge lack of conceptual integrity compared to monolithic frameworks. The naming conventions are inconsistent, different switches are used for the same functionality in different programs, etc.&lt;br /&gt;&lt;br /&gt;The big advantage of monolithic frameworks is consistency in design. Modules use the same naming and coding style, have similar layouts. They reuse the low level utility code, the documentation tool, the testing framework, the bug reporting, the build and packaging system. There is one well known place to ask questions, to look for documentation, to download the latest stable release.&lt;br /&gt;&lt;br /&gt;Linux distributions are a good example of both the strengths and weaknesses of heavily modularized systems. Probably the biggest advantage is that there is a huge amount of code reuse, and you can decentralize work to thousands of volunteers, maintaining the individual packages which can evolve independently.&lt;br /&gt;&lt;br /&gt;On the other hand some combinations of packages are not tested properly, only certain combination of packages are well supported. If you report a bug that has been fixed in the upstream version, but not in your distro, you&#39;re on your own. Linux and Firefox is a good example.&lt;br /&gt;&lt;br /&gt;People who want to support your software have a harder time when instead of a &lt;span style=&quot;font-style: italic;&quot;&gt;standard &lt;/span&gt;way, you have an infinite combination of modules. Just think of &lt;a href=&quot;http://en.wikipedia.org/wiki/Linux_Standard_Base&quot;&gt;LSB&lt;/a&gt; and desktop Linux vs Mac OS or Windows.&lt;br /&gt;&lt;br /&gt;We&#39;ll see how loose coupling works out for TurboGears. Interesting times ahead.</content><link rel='replies' type='application/atom+xml' href='http://rebelwithoutamouse.blogspot.com/feeds/5911012203968311134/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/7118115279690287527/5911012203968311134' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7118115279690287527/posts/default/5911012203968311134'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7118115279690287527/posts/default/5911012203968311134'/><link rel='alternate' type='text/html' href='http://rebelwithoutamouse.blogspot.com/2007/01/turbogears-10-and-beyond.html' title='TurboGears 1.0 and beyond'/><author><name>nyenyec</name><uri>http://www.blogger.com/profile/06621333382570092647</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://farm1.static.flickr.com/143/341930525_8175e8a994_s.jpg'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh3Am6795SreAU296Qwg0912873f3wZA1XymS_rBUbjSLwVleV-BqsCVPNS-DFBAmRpV7F353sN6YQS3WZfENiZwU1FGa9UYeMfr4vYotxWc8PoebotiFsKVlPlbNbDgsE1XOPNbhR0eptK/s72-c/TurboGears+1.0+announcement+on+IRC.png" height="72" width="72"/><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7118115279690287527.post-3028797194364435009</id><published>2007-01-02T20:15:00.000-06:00</published><updated>2007-01-02T20:29:52.297-06:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="tool"/><category scheme="http://www.blogger.com/atom/ns#" term="utility"/><title type='text'>7zip is amazing</title><content type='html'>7zip just blew my pants off. Back in the day I though I was edgy when I used bzip2 instead of gzip, but this is just amazing.&lt;br /&gt;&lt;br /&gt;I &lt;a href=&quot;http://download.wikimedia.org/&quot;&gt;downloaded&lt;/a&gt; the full edit history of the Hungarian Wikipedia to run some analysis on it and &lt;a href=&quot;http://en.wikipedia.org/wiki/7z&quot;&gt;7z&lt;/a&gt; compressed it to 1/87th of its original size.&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;barcika:~/wp/huwiki$ du -k *&lt;br /&gt;11502112        huwiki-20061205-pages-meta-history.xml&lt;br /&gt;131808          huwiki-20061205-pages-meta-history.xml.7z&lt;br /&gt;&lt;/pre&gt;Of course this was superverbose XML, but the compression rate is still very impressive. The same original compressed with bz2 is almost 4 times as big. 7zip gonna be my first choice for archiving large log files.</content><link rel='replies' type='application/atom+xml' href='http://rebelwithoutamouse.blogspot.com/feeds/3028797194364435009/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/7118115279690287527/3028797194364435009' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7118115279690287527/posts/default/3028797194364435009'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7118115279690287527/posts/default/3028797194364435009'/><link rel='alternate' type='text/html' href='http://rebelwithoutamouse.blogspot.com/2007/01/7zip-is-amazing.html' title='7zip is amazing'/><author><name>nyenyec</name><uri>http://www.blogger.com/profile/06621333382570092647</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://farm1.static.flickr.com/143/341930525_8175e8a994_s.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7118115279690287527.post-5321308962617965620</id><published>2006-12-05T09:07:00.000-06:00</published><updated>2006-12-05T13:38:57.853-06:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="mac"/><category scheme="http://www.blogger.com/atom/ns#" term="usability"/><title type='text'>Switching is hard: learning keyboard navigation on Mac OS X</title><content type='html'>I was very excited to get my first Mac, a 17&#39;&#39; MacBook Pro a couple of days ago. It&#39;s my new development machine and it gives me great satisfaction that I finally got one box where I can just plug in my camera or iPod and they work, play a video from a website and it works, then type&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;sudo apt-get install postgres&lt;br /&gt;man 2 recv&lt;br /&gt;&lt;/pre&gt;and they all work, too. I became a big fan of &lt;a href=&quot;http://www.apple.com/imac/frontrow.html&quot;&gt;Front Row&lt;/a&gt;, the fonts on websites look great, &lt;a href=&quot;http://www.apple.com/macosx/features/expose/&quot;&gt;Expose&lt;/a&gt; is easy to miss when going back to another system. Seems like heaven, except...&lt;br /&gt;&lt;br /&gt;I found that &lt;span style=&quot;font-weight: bold;&quot;&gt;keyboard navigation on the Mac sucks&lt;/span&gt;. Note that this is my first impression after only 2-3 days of use with no Mac guru around to teach me the secret art of &lt;span style=&quot;font-style: italic;&quot;&gt;Using a Mac Without a Mouse&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;Examples:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;I found no way to maximize the Safari window without using the mouse. Use case: I read Dilbert in Google Reader and it doesn&#39;t fit in the Window horizontally. &lt;/li&gt;&lt;li&gt;Navigating the menus by keyboard is really cumbersome. Instead of Alt-T, I need to press Ctrl-F2, T, Enter to get to the Tools menu for example.&lt;/li&gt;&lt;li&gt;I found no simple way in Finder to move or even rename files or directories without using the mouse.&lt;/li&gt;&lt;li&gt;I&#39;m still looking for a &lt;a href=&quot;http://www.ghisler.com/&quot;&gt;Total Commander&lt;/a&gt; replacement. I tried MuCommander and XFolders, but they both lack a command line. I also managed to set up Midnight Commander inside iTerm after changing the terminal emulation and keyboard settings to xterm, but I still have trouble mapping the keys to the right functions. Having no insert key really hurts.&lt;/li&gt;&lt;li&gt;BTW, what&#39;s the deal with putting such a cramped keyboard on a 17 inch notebook? The old 17 inch HP laptop that I used had a full keyboard including a numeric keypad. There would have been plenty of room to put a few extra keys on the Mac, too.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;My biggest gripe currently that navigating dialogs is a pain without the Windows/Linux Alt style shortcuts.&lt;br /&gt;Example 1:&lt;br /&gt;&lt;br /&gt;I&#39;m in Eclipse and want to replace the string &quot;foo&quot; with &quot;bar&quot; in the text editor. I press Command-F for the Find dialog, type in &quot;foo&quot;, press Tab, type in &quot;bar&quot;. So far, so good. But how do I get to the Replace button without using the mouse? Press Tab 9 times? On Windows/Linux I press Alt and the corresponding keyboard shortcut. I haven&#39;t found the equivalent on Mac OS X.&lt;br /&gt;&lt;br /&gt;&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjruK56f94YzXHQrKxvFrdMmCPbxdJHiLE7qauUhj-icdhdWsa9bWeKmTXsYaBCwllZ8ddUIdYAxdWsNL-HwTLg8eByQZfhGvzxbCDaKG801Juphcpj55i2KMElphv2WbpXr7LfQ6Enobsx/s1600-h/Eclipse+Replace+dialog.png&quot;&gt;&lt;img style=&quot;cursor: pointer;&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjruK56f94YzXHQrKxvFrdMmCPbxdJHiLE7qauUhj-icdhdWsa9bWeKmTXsYaBCwllZ8ddUIdYAxdWsNL-HwTLg8eByQZfhGvzxbCDaKG801Juphcpj55i2KMElphv2WbpXr7LfQ6Enobsx/s400/Eclipse+Replace+dialog.png&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5005066516456728962&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;strike&gt;BTW, I can&#39;t even get to the menu bar with Ctrl-F2 in Eclipse. It doesn&#39;t work out of the box.&lt;/strike&gt;&lt;br /&gt;&lt;br /&gt;Example 2: I don&#39;t know how to operate this dialog in iTunes with the keyboard. Tab doesn&#39;t work.&lt;br /&gt;&lt;br /&gt;&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgp3exZcCevv-hzJPOateXkr_lxR24PDxI7HzxhXZItHbR7L1IsxnzTvElxuIbJ0utCVQkvICTEc9JmoriXwKn4VWgAc2mcGLImaGkd8eP8Z_1ibV8GAqGOXuyT6WCvbh_hPvOfcfFo_7SE/s1600-h/iTunes+-+No+Keyboard+Navigation+dialog.png&quot;&gt;&lt;img style=&quot;cursor: pointer;&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgp3exZcCevv-hzJPOateXkr_lxR24PDxI7HzxhXZItHbR7L1IsxnzTvElxuIbJ0utCVQkvICTEc9JmoriXwKn4VWgAc2mcGLImaGkd8eP8Z_1ibV8GAqGOXuyT6WCvbh_hPvOfcfFo_7SE/s400/iTunes+-+No+Keyboard+Navigation+dialog.png&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5005067414104893842&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Please, someone tell me I&#39;m a complete noob and there is a simple solution for everything described above. So far, I&#39;m thinking about creating a big fat Windows partition in Bootcamp since I except that I&#39;m gonna spend a lot of time back in Microsoft World (sacrilege!) if I can&#39;t get back to my original productivity level in Mac OS X.&lt;br /&gt;&lt;br /&gt;Time to ask around the forums some more...</content><link rel='replies' type='application/atom+xml' href='http://rebelwithoutamouse.blogspot.com/feeds/5321308962617965620/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/7118115279690287527/5321308962617965620' title='7 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7118115279690287527/posts/default/5321308962617965620'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7118115279690287527/posts/default/5321308962617965620'/><link rel='alternate' type='text/html' href='http://rebelwithoutamouse.blogspot.com/2006/12/switching-is-hard-learning-keyboard.html' title='Switching is hard: learning keyboard navigation on Mac OS X'/><author><name>nyenyec</name><uri>http://www.blogger.com/profile/06621333382570092647</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://farm1.static.flickr.com/143/341930525_8175e8a994_s.jpg'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjruK56f94YzXHQrKxvFrdMmCPbxdJHiLE7qauUhj-icdhdWsa9bWeKmTXsYaBCwllZ8ddUIdYAxdWsNL-HwTLg8eByQZfhGvzxbCDaKG801Juphcpj55i2KMElphv2WbpXr7LfQ6Enobsx/s72-c/Eclipse+Replace+dialog.png" height="72" width="72"/><thr:total>7</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7118115279690287527.post-1801391679037263993</id><published>2006-11-20T21:14:00.000-06:00</published><updated>2006-11-20T21:20:43.690-06:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="languages"/><title type='text'>TIOBE Programming Community index</title><content type='html'>&lt;blockquote&gt;The TIOBE Programming Community index gives an indication of the popularity of programming  languages. The index is updated once a month. The ratings are based on the world-wide availability of  skilled engineers, courses and third party vendors. The popular search engines Google, MSN, and Yahoo!  are used to calculate the ratings.&lt;/blockquote&gt;&lt;a href=&quot;http://www.tiobe.com/tpci.htm&quot; title=&quot;http://www.tiobe.com/tpci.htm&quot;&gt;http://www.tiobe.com/tpci.htm&lt;/a&gt; via  &lt;a href=&quot;http://javaposse.com/index.php?post_id=152246&quot;&gt;Java Posse&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;http://photos1.blogger.com/x/blogger2/2471/868910556602818/1600/407708/tiobe_2006_nov.jpg&quot;&gt;&lt;img style=&quot;cursor: pointer;&quot; src=&quot;http://photos1.blogger.com/x/blogger2/2471/868910556602818/400/769759/tiobe_2006_nov.jpg&quot; alt=&quot;&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;http://javaposse.com/index.php?post_id=152246&quot;&gt;&lt;/a&gt;</content><link rel='replies' type='application/atom+xml' href='http://rebelwithoutamouse.blogspot.com/feeds/1801391679037263993/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/7118115279690287527/1801391679037263993' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7118115279690287527/posts/default/1801391679037263993'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7118115279690287527/posts/default/1801391679037263993'/><link rel='alternate' type='text/html' href='http://rebelwithoutamouse.blogspot.com/2006/11/tiobe-programming-community-index.html' title='TIOBE Programming Community index'/><author><name>nyenyec</name><uri>http://www.blogger.com/profile/06621333382570092647</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://farm1.static.flickr.com/143/341930525_8175e8a994_s.jpg'/></author><thr:total>1</thr:total></entry></feed>