<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
    <title>Dreams of a Rarebit Fiend</title>
    <link rel="alternate" type="text/html" href="http://www.johnmunsch.com/" />
    <link rel="self" type="application/atom+xml" href="http://www.johnmunsch.com/atom.xml" />
   <id>tag:www.johnmunsch.com,2010://1</id>
    <link rel="service.post" type="application/atom+xml" href="http://www.johnmunsch.com/cgi-bin/mt/mt-atom.cgi/weblog/blog_id=1" title="Dreams of a Rarebit Fiend" />
    <updated>2010-03-10T00:14:10Z</updated>
    
    <generator uri="http://www.sixapart.com/movabletype/">Movable Type 3.33</generator>
 
<entry>
    <title>Mac Finally Gets Some Game Love</title>
    <link rel="alternate" type="text/html" href="http://www.johnmunsch.com/2010/03/mac_finally_gets_some_game_lov.html" />
    <link rel="service.edit" type="application/atom+xml" href="http://www.johnmunsch.com/cgi-bin/mt/mt-atom.cgi/weblog/blog_id=1/entry_id=585" title="Mac Finally Gets Some Game Love" />
    <id>tag:www.johnmunsch.com,2010://1.585</id>
    
    <published>2010-03-10T00:10:33Z</published>
    <updated>2010-03-10T00:14:10Z</updated>
    
    <summary>Finally. Finally the Mac will be getting some gaming love. Steam will be coming to the Mac in April and apparently all the major Valve titles (for example, Half-Life 2, Team Fortress 2, and Left 4 Dead) with it: Valve...</summary>
    <author>
        <name>John Munsch</name>
        <uri>http://www.johnmunsch.com</uri>
    </author>
            <category term="Games" />
    
    <content type="html" xml:lang="en" xml:base="http://www.johnmunsch.com/">
        <![CDATA[<p>Finally. Finally the Mac will be getting some gaming love. Steam will be coming to the Mac in April and apparently all the major Valve titles (for example, Half-Life 2, Team Fortress 2, and Left 4 Dead) with it: <a href="http://www.wired.com/gamelife/2010/03/steam-mac">Valve Brings Hit Games, Steam Service to Mac</a></p>]]>
        
    </content>
</entry>
<entry>
    <title>Bringing Unit Tests To Untestable Java Code</title>
    <link rel="alternate" type="text/html" href="http://www.johnmunsch.com/2010/02/bringing_unit_tests_to_untesta.html" />
    <link rel="service.edit" type="application/atom+xml" href="http://www.johnmunsch.com/cgi-bin/mt/mt-atom.cgi/weblog/blog_id=1/entry_id=584" title="Bringing Unit Tests To Untestable Java Code" />
    <id>tag:www.johnmunsch.com,2010://1.584</id>
    
    <published>2010-02-01T20:00:33Z</published>
    <updated>2010-02-01T20:23:24Z</updated>
    
    <summary>I deal with a lot of code that has never had any unit tests for it at all. In fact, it was often written in such a way that creating unit tests for it seems pretty horrific because you would...</summary>
    <author>
        <name>John Munsch</name>
        <uri>http://www.johnmunsch.com</uri>
    </author>
            <category term="Software Development in Java" />
    
    <content type="html" xml:lang="en" xml:base="http://www.johnmunsch.com/">
        <![CDATA[<p>I deal with a lot of code that has never had any unit tests for it at all. In fact, it was often written in such a way that creating unit tests for it seems pretty horrific because you would find yourself having to load data into multiple database tables, set up all manner of services and files, etc. just in order to test it properly. So what I’m going to tell you is the simple, not-too-painful way I chose to make some of this code testable.</p>  <p>To me it’s all about removing all of the external dependencies from the code. If I can pull out all of the sections that are getting remote connections to EJBs, all of the data source lookups and queries, file reads, etc. and abstracting those out then I can test the code fairly easily because all I’ll be testing is the logic it had that surrounded all of those external calls to get data of one sort or another. So that’s what I do, I remove all of the code that does those lookups and abstract it out.</p>  <p>Note: <em>Some of the feedback I’ve gotten tells me that I should make it clear that what I’m talking about below is only the refactoring part of getting your code to a unit testable state. After you perform some of the steps you might be well placed to look into either Spring or JSR-299 (for example Weld, which is their reference implementation) to do dependency injection. Or even into mock frameworks to do simpler implementations of your FooHelper for testing purposes. If you’ve got one you like a lot, let me know about it. I haven’t used any mock libraries for Java yet.</em></p>  <p><strong>Step 1 - Use the refactoring capabilities in your IDE to extract some methods</strong></p>  <p>I’m using Eclipse in this example, but I’m sure you could do much the same thing in Netbeans or any other major IDE.</p>  <p>Eclipse has a function on the context sensitive menu to extract a method. Just select a section of the code that goes and looks up something in a file or gets a JDBC connection and executes a query (or calls some code that does) and click the right mouse button to get the context menu, then select Refactor &gt; Extract Method… and fill out the info in the dialog box where it asks you what to call your new method, etc. The refactoring will create an all new function which takes a set of parameters passed in and replace the code in the original spot with a call to that function. Repeat as needed on the offending section of code until you don’t have any code within it that isn’t actual logic that calls these new methods that use external resources.</p>  <p><strong>Step 2 – Pull the new methods out into an external class</strong></p>  <p>I don’t doubt that I could probably get Eclipse to do all of this too but at the moment I perform the next step manually.</p>  <p>Let’s say that the code that I was pulling methods out of was called foo(). Then I would create a new class called ProductionFooHelper at this point. I would pull all of the methods I extracted out of the class foo() was part of and put them into ProductionFooHelper(). That immediately breaks the foo() code because it no longer knows where the functions it used to call are anymore; but it leaves us with a version of foo that doesn’t require any exterior resources. That brings us to…</p>  <p><strong>Step 3 – Extract an interface from the ProductionFooHelper class</strong></p>  <p>Here Eclipse will do the tedious work for us again. Go to the ProductionFooHelper class and right click. Select Refactor &gt; Extract Interface… from the context menu that pops up.</p>  <p>You can just select all of the methods to be in the interface and give it a name like FooHelper. Click OK and it will be created. Note that ProductionFooHelper should be marked as implementing the FooHelper interface.</p>  <p><strong>Step 4 – Fix the failing calls within foo()</strong></p>  <p>Go back to the class containing the foo() code and add a new parameter to it. The new parameter would be something like “FooHelper helper”. Then all the function calls within foo() that are currently showing as errors within the IDE can have “helper.” put in front of them. That will indicate that we’re calling that function on the passed in class. At this point everything in the code should resolve again except for the spot you originally called foo(). It will need to have an instance of ProductionFooHelper created and passed into it before it compiles successfully.</p>  <p>At this point we’ve extracted all the code which had external dependencies into another helper class and we have a production version of that class that should give us the exact same behavior we’ve always had. But if we were to produce a MockFooHelper that implemented FooHelper and produced faked results for unit tests, then we could test foo() at our hearts content knowing that we never have to do database setup or anything else unless we want to. The specific implementation of the functions in the FooHelper is up to us for testing purposes.</p>  <p>This may seem a convoluted way to get to testable code and maybe you’ve got much better ways to achieve this same thing. If you do, I’d love to know about it so I can improve my own coding skills. But if not, I have to say that it actually works. I’ve used it recently in a hierarchical fashion where innermost code had a helper interface extracted, then another close to it, and then yet a third. Then I wanted code that called all of them to be unit testable so I extracted a new interface that implemented the other three interfaces and added all new functions as well. The production helper had all of the methods for the innermost stuff as well as the outermost. The result is that I now have four different test points in the code where I can control everything that goes in and out and I was able to whip off a dozen new tests for code that once had none due to its complexity and the difficulty of setting something up.</p>]]>
        
    </content>
</entry>
<entry>
    <title>100+ Year Old Color Photos and Amazon Kindle Apps Coming</title>
    <link rel="alternate" type="text/html" href="http://www.johnmunsch.com/2010/01/100_year_old_color_photos_and.html" />
    <link rel="service.edit" type="application/atom+xml" href="http://www.johnmunsch.com/cgi-bin/mt/mt-atom.cgi/weblog/blog_id=1/entry_id=583" title="100+ Year Old Color Photos and Amazon Kindle Apps Coming" />
    <id>tag:www.johnmunsch.com,2010://1.583</id>
    
    <published>2010-01-21T18:50:45Z</published>
    <updated>2010-02-01T20:22:52Z</updated>
    
    <summary>The 1906 San Francisco Earthquake Aftermath, In Color – A couple of photos taken with an early color photo process have been reassembled (using Photoshop of course) so you can see that the past wasn’t really in black and white....</summary>
    <author>
        <name>John Munsch</name>
        <uri>http://www.johnmunsch.com</uri>
    </author>
            <category term="Cool Links and Cool Software" />
    
    <content type="html" xml:lang="en" xml:base="http://www.johnmunsch.com/">
        <![CDATA[<p><a href="http://blog.americanhistory.si.edu/osaycanyousee/2010/01/the-1906-san-francisco-quake-in-color.html">The 1906 San Francisco Earthquake Aftermath, In Color</a> – A couple of photos taken with an early color photo process have been reassembled (using Photoshop of course) so you can see that the past wasn’t really in black and white.</p>  <p><a href="http://www.fastcompany.com/blog/kit-eaton/technomix/amazon-adds-apps-kindle-desperation-apple-tablet?partner=rss&amp;utm_source=feedburner&amp;utm_medium=feed&amp;utm_campaign=Feed%3A+fastcompany%2Fheadlines+%28Fast+Company+Headlines%29">Amazon Adds Apps to the Kindle</a> – I like my Kindle DX, I like it a lot, but I do not love it. I love my iPod Touch. It is my constant companion and many are the days when I return it home with a battery that is quite drained from use. I can think of many many ways to make my Kindle much better than it is today because the UI often very poor, even for it’s intended use as a book reader. Perhaps this will help it get past some of those problems or maybe it’s just too little too late.</p>  <p>Follow up to the post: Here’s <a href="http://www.amazon.com/gp/feature.html/?ie=UTF8&amp;docId=1000476231">the link to sign up for notification when the Kindle dev kit is released</a>.</p>]]>
        
    </content>
</entry>
<entry>
    <title>Turn Your iPhone/iPod Touch Into A WWII Fighter</title>
    <link rel="alternate" type="text/html" href="http://www.johnmunsch.com/2010/01/turn_your_iphoneipod_touch_int.html" />
    <link rel="service.edit" type="application/atom+xml" href="http://www.johnmunsch.com/cgi-bin/mt/mt-atom.cgi/weblog/blog_id=1/entry_id=582" title="Turn Your iPhone/iPod Touch Into A WWII Fighter" />
    <id>tag:www.johnmunsch.com,2010://1.582</id>
    
    <published>2010-01-11T19:01:12Z</published>
    <updated>2010-02-01T20:24:09Z</updated>
    
    <summary>I’ve always thought the apps that turn your iPhone/iPod Touch into a lighter, shotgun, lightsaber, etc. were pretty silly and this one is sillier than all of them. Nevertheless, I have to say it is probably the best one ever....</summary>
    <author>
        <name>John Munsch</name>
        <uri>http://www.johnmunsch.com</uri>
    </author>
            <category term="Games" />
    
    <content type="html" xml:lang="en" xml:base="http://www.johnmunsch.com/">
        <![CDATA[<p>I’ve always thought the apps that turn your iPhone/iPod Touch into a lighter, shotgun, lightsaber, etc. were pretty silly and this one is sillier than all of them. Nevertheless, I have to say it is probably the best one ever. I might even buy it myself.</p> <object width="425" height="344"><param name="movie" value="http://www.youtube.com/v/k0Ep0FW4sVQ&amp;hl=en_US&amp;fs=1&amp;"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/k0Ep0FW4sVQ&amp;hl=en_US&amp;fs=1&amp;" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="344"></embed></object>]]>
        
    </content>
</entry>
<entry>
    <title>The Best Comic Readers For OS X and Windows</title>
    <link rel="alternate" type="text/html" href="http://www.johnmunsch.com/2010/01/the_best_comic_readers_for_os.html" />
    <link rel="service.edit" type="application/atom+xml" href="http://www.johnmunsch.com/cgi-bin/mt/mt-atom.cgi/weblog/blog_id=1/entry_id=581" title="The Best Comic Readers For OS X and Windows" />
    <id>tag:www.johnmunsch.com,2010://1.581</id>
    
    <published>2010-01-08T20:08:51Z</published>
    <updated>2010-01-09T17:15:44Z</updated>
    
    <summary>Since some of my most popular blog entries ever were on the topic of comic readers for digital comics stored in .CBZ and .CBR files, I thought I would return to the topic for an update. It has been a...</summary>
    <author>
        <name>John Munsch</name>
        <uri>http://www.johnmunsch.com</uri>
    </author>
            <category term="Comics and Manga" />
    
    <content type="html" xml:lang="en" xml:base="http://www.johnmunsch.com/">
        <![CDATA[<p><img class="imageRight"src="/images/ComicBookShopThumb.jpg">Since some of my most popular blog entries ever were on the topic of <a href="http://www.johnmunsch.com/comics_and_manga/">comic readers for digital comics stored in .CBZ and .CBR files</a>, I thought I would return to the topic for an update. It has been a really long time since I wrote about it and with one exception I wouldn’t use what I talked about then, it has been completely replaced with much better programs for both Windows and the Mac.</p>  <h3>Mac OS X</h3>  <p><a href="http://dancingtortoise.com/simplecomic/">Simple Comic</a> – This is my current go-to reader. It’s simple, it works, and I like the loupe feature where you can zoom in on details if you need to.</p>  <p><a href="http://www.bitcartel.com/comicbooklover/">ComicBookLover</a> – This is a new reader that I only discovered when I decided I should compile a new list of recommendations. It seems to have more in common with ComicRack on Windows in that both are ready to keep track of your entire collection of comics as well as do the display of comics for reading.</p>  <h3>Windows</h3>  <p><a href="http://comicrack.cyolito.com/">ComicRack</a> – I would argue that this is still probably the best choice for Windows users. I recommended it in 2006 and it is still being actively worked on today. Lots of features and a very dedicated developer have produced a really nice piece of work.</p>  <p><a href="http://sourceforge.net/projects/cdisplayex/">CDisplayEx</a> – An open source version of one of the first comic readers I used on Windows. I would generally encourage ComicRack instead, but if you’ve got your heart set on open source, this one looks OK.</p>  <p>… and as a bonus…</p>  <h3>Linux</h3>  <p><a href="http://comix.sourceforge.net/">Comix</a> – Comical was never all that good and apparently stalled back in 2006 so it’s good to see that there is a reader out there for Linux that was updated in 2009 (early in the year admittedly but then digital comics aren’t exactly changing constantly). Comix looks like it’s probably a reasonably good choice and it’s open source so there’s at least a chance that it will get updates if it needs them.</p>]]>
        
    </content>
</entry>
<entry>
    <title><![CDATA[5 Fun Board Games You Probably Haven&rsquo;t Played]]></title>
    <link rel="alternate" type="text/html" href="http://www.johnmunsch.com/2010/01/5_fun_board_games_you_probably.html" />
    <link rel="service.edit" type="application/atom+xml" href="http://www.johnmunsch.com/cgi-bin/mt/mt-atom.cgi/weblog/blog_id=1/entry_id=580" title="5 Fun Board Games You Probably Haven&amp;rsquo;t Played" />
    <id>tag:www.johnmunsch.com,2010://1.580</id>
    
    <published>2010-01-05T20:42:22Z</published>
    <updated>2010-01-09T04:49:46Z</updated>
    
    <summary>If you’re already someone playing the latest designer games from around the world or you live on BoardGameGeek.com, move right along there’s nothing to see here. But if you’re like so many people who think, “Let’s play a board game,”...</summary>
    <author>
        <name>John Munsch</name>
        <uri>http://www.johnmunsch.com</uri>
    </author>
            <category term="Games" />
    
    <content type="html" xml:lang="en" xml:base="http://www.johnmunsch.com/">
        <![CDATA[<p>If you’re already someone playing the latest designer games from around the world or you live on BoardGameGeek.com, move right along there’s nothing to see here. But if you’re like so many people who think, “Let’s play a board game,” and then proceed to whip out Monopoly, Life, Candyland, Trivial Pursuit, etc. then let me bend your ear for a minute.</p>  <p>Board games have changed a lot in the last 15-20 years. Especially in the last decade or so as tons of cool new games have been released. Here are a few favorites of mine. Most of them are considered staples of the new generation.</p>  <p><img class="imageLeft" src="/images/TheSettlersOfCatanThumb.jpg"><a href="http://boardgamegeek.com/boardgame/13/the-settlers-of-catan">Settlers Of Catan</a> – The best known of the bunch with over 600,000 copies sold in the United States according to this <a href="http://www.wired.com/gaming/gamingreviews/magazine/17-04/mf_settlers">recent Wired magazine article</a>. This one pretty much defines how you can still have a competitive game yet not have it be the kind of zero-sum relationship destroyer that Monopoly is. With Monopoly I can’t win unless I first make you lose. With Catan, I can’t win without trading with you (especially in the early game), and we both gain points from stuff we do, but I don’t win by taking points away from you, I win by just being the first one to ten points. You might have scored nine points yourself and the fact that you did can cushion losing and give you encouragement to try again.</p>  <p>For me the only downside to this game is that it doesn’t play well with less than three people and the playtime is the longest of all the games listed here (it can easily be a couple of hours).</p>  <p><img class="imageRight" src="/images/AnimalUponAnimalThumb.jpg"><a href="http://boardgamegeek.com/boardgame/17329/tier-auf-tier">Animal Upon Animal</a> – First of all, Candyland and Chutes and Ladders have a place. They are teaching games for colors and counting for little kids. However, once you know your colors and numbers to 100, you are past both of those games and you never ever need to come back to them. If you’re looking for a fun game for a little kid that can also be enjoyed by adults, look no further than Animal Upon Animal. It’s a dexterity game where you stack oddly shaped wooden animals on top of other wooden animals in a big pyramid. First player to get rid of all seven of his/her animals wins.</p>  <p>Little hands are sometimes a bonus rather than a hindrance and even if you knock over the entire pile adding a piece, you only take two pieces back into your collection. The rest go into the box. That keeps it from getting too frustrating for little kids. If you need to further even the odds it’s easy to have a player start with six pieces or five instead of the normal seven so they can more easily win.</p>  <p><img class="imageLeft" src="/images/TicketToRideThumb.jpg"><a href="http://boardgamegeek.com/boardgame/9209/ticket-to-ride">Ticket To Ride</a> – There are multiple versions of this train game with maps for different countries and even some slightly different rules. I’m used to the Ticket To Ride Europe version with it’s train stations (an additional piece that I don’t believe was in the original Ticket to Ride). It’s fun, it can be played in an hour or so (maybe 90 minutes at the longest) and it’s a simple game to teach to new players because you only have four things you can do in a turn and most of the time you’re going to only be choosing between two things to do.</p>  <p>Gather up the colored cards you need to claim routes between major cities (using super nifty plastic trains to mark your route) and try to keep the secret the longer routes you are trying to complete to score extra points.</p>  <p><img class="imageRight" src="/images/DominionThumb.jpg"><a href="http://boardgamegeek.com/boardgame/36218/dominion">Dominion</a> – An awesomely great card game in a big box. Seemingly endless variety thanks to the fact that in any given game you’re picking a set of ten cards to use out of 25 available cards and different choices can completely change the feel of the game. Easy to teach, reasonably short playtime (often less than an hour), and expansions like Dominion Seaside can give you more variation than you can even imagine.</p>  <p><img class="imageLeft" src="/images/CarcassonneThumb.jpg"><a href="http://boardgamegeek.com/boardgame/822/carcassonne">Carcassonne</a> – You’ll notice a theme to the entries in this list. They’re very easy to explain to new players and they tend to have pretty short playtimes. This one is no exception. The mechanic is a simple one. Draw a tile from a set of tiles and see how you can place it by matching its edges to tiles already played. That part of it only takes a second. Then you decide whether or not you want to put one of your small stock of pieces (seven little wooden people) on the board in order to try to score some points.</p>  <p>There are probably a dozen expansions for this game if you find you like it (as I do) so you can really expand the array of tiles, pieces for scoring, and methods for scoring points to increase the strategy or complexity of the game.</p>  <p>I was lucky enough to get to play all of these except Carcassonne with family over the holidays and everybody had a great time. I finally went to bed at 3am but people kept playing for hours more after that!</p>]]>
        
    </content>
</entry>
<entry>
    <title>Professor Layton And The Completed Game</title>
    <link rel="alternate" type="text/html" href="http://www.johnmunsch.com/2010/01/professor_layton_and_the_compl.html" />
    <link rel="service.edit" type="application/atom+xml" href="http://www.johnmunsch.com/cgi-bin/mt/mt-atom.cgi/weblog/blog_id=1/entry_id=579" title="Professor Layton And The Completed Game" />
    <id>tag:www.johnmunsch.com,2010://1.579</id>
    
    <published>2010-01-04T15:44:46Z</published>
    <updated>2010-01-09T04:50:59Z</updated>
    
    <summary>As I’ve said before, the best feature of the Nintendo DS Lite is its adult-with-other-responsibilities friendly ability to pause a game at any point. But having a feature like that is only good if there are good games and I...</summary>
    <author>
        <name>John Munsch</name>
        <uri>http://www.johnmunsch.com</uri>
    </author>
            <category term="Games" />
    
    <content type="html" xml:lang="en" xml:base="http://www.johnmunsch.com/">
        <![CDATA[<p><img class="imageRight" src="/images/ProfessorLaytonThumb.jpg"><a href="http://www.johnmunsch.com/2006/08/i_heart_the_nintendo_ds_lite.html">As I’ve said before</a>, the best feature of the Nintendo DS Lite is its adult-with-other-responsibilities friendly ability to pause a game at any point. But having a feature like that is only good if there are good games and I would call <a href="http://www.amazon.com/gp/product/B000U5W3IW?ie=UTF8&amp;tag=johnmunschcom-20&amp;linkCode=as2&amp;camp=1789&amp;creative=390957&amp;creativeASIN=B000U5W3IW">Professor Layton and the Curious Village</a><img style="border-bottom-style: none !important; border-right-style: none !important; margin: 0px; border-top-style: none !important; border-left-style: none !important" border="0" alt="" src="http://www.assoc-amazon.com/e/ir?t=johnmunschcom-20&amp;l=as2&amp;o=1&amp;a=B000U5W3IW" width="1" height="1" /> one of those.</p>  <p>I really wasn’t sure if I would enjoy a game that was based upon completing puzzles, but by the time I finished it I had played for about 12 hours and completed approximately 100 out of the 120 or so puzzles that are available in the game and had definitely enjoyed it. It doesn’t seem like a tedious slog of solving one puzzle after another because it’s wrapped up in an adventure game where you travel from place to place, talk to other characters, search for hint coins, watch videos, etc. In other words there’s lots of meta-game on top of the puzzles so they don’t comprise the whole experience.</p>  <p>I didn’t end up going back to try and track down the last few puzzles I had missed once I finished the game. I definitely felt like it ended at the right time, because I didn’t end up burned out or wanting lots more. If you can, give this game a try and see if it’s for you.</p>]]>
        
    </content>
</entry>
<entry>
    <title><![CDATA[Why Can&rsquo;t Java Do Convention Over Configuration?]]></title>
    <link rel="alternate" type="text/html" href="http://www.johnmunsch.com/2009/12/why_cant_java_do_convention_ov.html" />
    <link rel="service.edit" type="application/atom+xml" href="http://www.johnmunsch.com/cgi-bin/mt/mt-atom.cgi/weblog/blog_id=1/entry_id=578" title="Why Can&amp;rsquo;t Java Do Convention Over Configuration?" />
    <id>tag:www.johnmunsch.com,2009://1.578</id>
    
    <published>2009-12-31T15:50:26Z</published>
    <updated>2010-01-09T04:47:23Z</updated>
    
    <summary>I was just reading an overview of Java EE 6 and I was struck by their handling of the web.xml file. In this article it is trumpeted as a great new feature, the monolithic web.xml file can now be chopped...</summary>
    <author>
        <name>John Munsch</name>
        <uri>http://www.johnmunsch.com</uri>
    </author>
            <category term="Software Development in Java" />
    
    <content type="html" xml:lang="en" xml:base="http://www.johnmunsch.com/">
        <![CDATA[<p>I was just reading an <a href="http://java.sun.com/developer/technicalArticles/JavaEE/JavaEE6Overview.html">overview of Java EE 6</a> and I was struck by their handling of the web.xml file. In this article it is trumpeted as a great new feature, the monolithic web.xml file can now be chopped up into a set of files so you can group setup and configuration. And god knows, if there’s something you get a lot of in Java, it’s configuration.</p>  <p>Anyway, the heart of this is good, it’s in a good place. There’s no longer one big file, we can have several files and each one has its own purpose. You might even get a web.xml file that comes with some third party framework you’re using like Struts. However, then it starts to go off the rails (no pun intended):</p>  <blockquote>   <p>However, because Servlet 3.0 enables you to modularize your deployment descriptors, the order in which these descriptors are processed can be important. For example, the order in which the descriptors for an application are processed affects the order in which servlets, listeners, and filters are invoked. With Servlet 3.0, you can specify the order in which deployment descriptors are processed. </p>    <p>Servlet 3.0 supports absolute ordering and relative ordering of deployment descriptors. Your specify absolute ordering using the <code>&lt;absolute-ordering&gt;</code> element in the <code>web.xml</code> file. You specify relative ordering with an <code>&lt;ordering&gt;</code> element in the <code>web-fragment.xml</code> file.</p> </blockquote>  <p>Uh huh. When Rails (as in Ruby on Rails) needed to order a bunch of stuff like migrations, they made a simple convention (for example, 001_filename.rb, 002_filename.rb, 003_filename.rb). When that convention didn’t work out for large groups of developers they changed and went with the date and time instead (as in, 0080402122512_one.rb). Rails pretty much always picks a convention whenever possible and then if they need to they come up with a way to override it.</p>  <p>There’s nothing wrong with having &lt;ordering&gt; and &lt;absolute-ordering&gt; elements at all. Give the developer an override, fine, but give them an easy way to just name their stuff and order it automatically without that. What the heck is wrong with files named 001_web.xml and 200_web.xml? Seriously? Why can there never ever be a convention that the software reacts to and uses so you don’t have to hack up some configuration file 100% of the time?</p>]]>
        
    </content>
</entry>
<entry>
    <title>Worth Reading</title>
    <link rel="alternate" type="text/html" href="http://www.johnmunsch.com/2009/12/worth_reading_2.html" />
    <link rel="service.edit" type="application/atom+xml" href="http://www.johnmunsch.com/cgi-bin/mt/mt-atom.cgi/weblog/blog_id=1/entry_id=577" title="Worth Reading" />
    <id>tag:www.johnmunsch.com,2009://1.577</id>
    
    <published>2009-12-30T23:10:17Z</published>
    <updated>2010-01-09T04:55:55Z</updated>
    
    <summary>The Silver Thief – It’s actually a 2004 article from The New Yorker but it’s still every bit as interesting. This guy is the closest thing to a true “cat burglar” that I’ve ever really heard of. &apos;Romeo And Juliet&apos;:...</summary>
    <author>
        <name>John Munsch</name>
        <uri>http://www.johnmunsch.com</uri>
    </author>
            <category term="Cool Links and Cool Software" />
    
    <content type="html" xml:lang="en" xml:base="http://www.johnmunsch.com/">
        <![CDATA[<p><a href="http://stephenjdubner.com/journalism/silverthief.html">The Silver Thief</a> – It’s actually a 2004 article from The New Yorker but it’s still every bit as interesting. This guy is the closest thing to a true “cat burglar” that I’ve ever really heard of.</p>  <p><a href="http://www.npr.org/templates/story/story.php?storyId=121975740">'Romeo And Juliet': Just As You Misremembered It</a> - What if somebody called you up and asked you to tell them the plot and dialog to Romeo and Juliet? How well do you think you could do? What if they took your vague recollections and those of several other people and used them to put on the play instead of the actual script…</p>]]>
        
    </content>
</entry>
<entry>
    <title>Worth Reading/Watching</title>
    <link rel="alternate" type="text/html" href="http://www.johnmunsch.com/2009/11/worth_readingwatching.html" />
    <link rel="service.edit" type="application/atom+xml" href="http://www.johnmunsch.com/cgi-bin/mt/mt-atom.cgi/weblog/blog_id=1/entry_id=575" title="Worth Reading/Watching" />
    <id>tag:www.johnmunsch.com,2009://1.575</id>
    
    <published>2009-11-06T19:13:29Z</published>
    <updated>2010-01-09T04:57:12Z</updated>
    
    <summary>I love Mad Men on AMC. The style, the stories, the characters, all of it. Read about the women writers on the show: The Women Behind ‘Mad Men’ Also, Glenn Beck is a nut. He’s so completely wrong so much...</summary>
    <author>
        <name>John Munsch</name>
        <uri>http://www.johnmunsch.com</uri>
    </author>
            <category term="Cool Links and Cool Software" />
    
    <content type="html" xml:lang="en" xml:base="http://www.johnmunsch.com/">
        <![CDATA[<p>I love Mad Men on AMC. The style, the stories, the characters, all of it. Read about the women writers on the show: <a href="http://online.wsj.com/article/SB10001424052970204908604574332284143366134.html#articleTabs%3Darticle">The Women Behind ‘Mad Men’</a></p>  <p>Also, Glenn Beck is a nut. He’s so completely wrong so much of the time it probably does damage to you if you actually watch him. Watch this excellent parody of his schtick by Jon Stewart:&#160; <a href="http://www.thedailyshow.com/watch/thu-november-5-2009/the-11-3-project">The 11/3 Project</a></p>]]>
        
    </content>
</entry>
<entry>
    <title>Google Posts The Last Of The Google I/O 2009 Sessions Online</title>
    <link rel="alternate" type="text/html" href="http://www.johnmunsch.com/2009/06/google_posts_the_last_of_the_g.html" />
    <link rel="service.edit" type="application/atom+xml" href="http://www.johnmunsch.com/cgi-bin/mt/mt-atom.cgi/weblog/blog_id=1/entry_id=573" title="Google Posts The Last Of The Google I/O 2009 Sessions Online" />
    <id>tag:www.johnmunsch.com,2009://1.573</id>
    
    <published>2009-06-10T19:45:09Z</published>
    <updated>2010-01-09T04:52:22Z</updated>
    
    <summary>There are lots of nifty conferences out there for software developers, JavaOne, Apple’s Worldwide Developer’s Conference, Google I/O, etc. One of the best things about them is that many of them no longer treat all of the learning sessions and...</summary>
    <author>
        <name>John Munsch</name>
        <uri>http://www.johnmunsch.com</uri>
    </author>
            <category term="Software Development" />
    
    <content type="html" xml:lang="en" xml:base="http://www.johnmunsch.com/">
        <![CDATA[<p>There are lots of nifty conferences out there for software developers, JavaOne, Apple’s Worldwide Developer’s Conference, Google I/O, etc. One of the best things about them is that many of them no longer treat all of the learning sessions and panel discussions held there as though they were treasure to be buried. Far more developers don’t get to attend these than do so sharing what the experts teach at the conference benefits everybody (including those who paid to go).</p>  <p>Here’s <a href="http://code.google.com/events/io/sessions.html">a link to the video of all of the sessions from Google’s recent Google I/O conference</a>. There are sessions there on AJAX, Android, OpenSocial, GWT, and lots more. Soak up all you can.</p>]]>
        
    </content>
</entry>
<entry>
    <title>Two Articles Worth Reading</title>
    <link rel="alternate" type="text/html" href="http://www.johnmunsch.com/2009/06/two_articles_worth_reading.html" />
    <link rel="service.edit" type="application/atom+xml" href="http://www.johnmunsch.com/cgi-bin/mt/mt-atom.cgi/weblog/blog_id=1/entry_id=572" title="Two Articles Worth Reading" />
    <id>tag:www.johnmunsch.com,2009://1.572</id>
    
    <published>2009-06-10T19:09:55Z</published>
    <updated>2010-01-09T04:58:43Z</updated>
    
    <summary>Well worth reading: What Makes Us Happy? The Atlantic (June 2009)&amp;#160; Bamboozling Ourselves – A seven part series of blog entries over at the New York Times about the art forger Han van Meegeren. He produced paintings in the style...</summary>
    <author>
        <name>John Munsch</name>
        <uri>http://www.johnmunsch.com</uri>
    </author>
            <category term="Cool Links and Cool Software" />
    
    <content type="html" xml:lang="en" xml:base="http://www.johnmunsch.com/">
        <![CDATA[<p>Well worth reading:</p>  <p><a href="http://www.theatlantic.com/doc/200906/happiness">What Makes Us Happy? The Atlantic (June 2009)</a>&#160;</p>  <p><a href="http://morris.blogs.nytimes.com/2009/05/27/bamboozling-ourselves-part-1/">Bamboozling Ourselves</a> – A seven part series of blog entries over at the New York Times about the art forger Han van Meegeren. He produced paintings in the style of Vermeer during the second world war and sold them to Nazis all the way up to Hermann Göring.</p>]]>
        
    </content>
</entry>
<entry>
    <title>Mystery Science Theater Fans Take Note!</title>
    <link rel="alternate" type="text/html" href="http://www.johnmunsch.com/2009/04/mystery_science_theater_fans_t.html" />
    <link rel="service.edit" type="application/atom+xml" href="http://www.johnmunsch.com/cgi-bin/mt/mt-atom.cgi/weblog/blog_id=1/entry_id=571" title="Mystery Science Theater Fans Take Note!" />
    <id>tag:www.johnmunsch.com,2009://1.571</id>
    
    <published>2009-04-24T00:48:38Z</published>
    <updated>2009-04-24T00:54:30Z</updated>
    
    <summary>Hulu has put up three of the Film Crew movies which were done by MST3K veterans a few years back. There&apos;s no puppets but the gist of the show is exactly the same: bad movie + jokes = entertainment. I&apos;ve...</summary>
    <author>
        <name>John Munsch</name>
        <uri>http://www.johnmunsch.com</uri>
    </author>
            <category term="Cool Links and Cool Software" />
            <category term="TV, Movies, and Anime" />
    
    <content type="html" xml:lang="en" xml:base="http://www.johnmunsch.com/">
        <![CDATA[<p>Hulu has put up three of the Film Crew movies which were done by MST3K veterans a few years back. There's no puppets but the gist of the show is exactly the same: bad movie + jokes = entertainment.</p>

<p>I've already seen the first two because I bought them when they came out on DVD, but I hadn't gotten the third one yet. You can watch all three for <strong>free</strong>!</p>

<p><object width="512" height="296"><param name="movie" value="http://www.hulu.com/embed/KSbhe1_G_GXSH3xyn8_4qQ"></param><param name="allowFullScreen" value="true"></param><embed src="http://www.hulu.com/embed/KSbhe1_G_GXSH3xyn8_4qQ" type="application/x-shockwave-flash" allowFullScreen="true"  width="512" height="296"></embed></object></p>

<p><object width="512" height="296"><param name="movie" value="http://www.hulu.com/embed/vipKCeQzQ2Y8tjbw-TOW5g"></param><param name="allowFullScreen" value="true"></param><embed src="http://www.hulu.com/embed/vipKCeQzQ2Y8tjbw-TOW5g" type="application/x-shockwave-flash" allowFullScreen="true"  width="512" height="296"></embed></object></p>

<p><object width="512" height="296"><param name="movie" value="http://www.hulu.com/embed/MQJ8HySeVnpbXBxls8Gs6w"></param><param name="allowFullScreen" value="true"></param><embed src="http://www.hulu.com/embed/MQJ8HySeVnpbXBxls8Gs6w" type="application/x-shockwave-flash" allowFullScreen="true"  width="512" height="296"></embed></object></p>]]>
        
    </content>
</entry>
<entry>
    <title>Why Your Next Server Might Use Less Energy Than A Lightbulb</title>
    <link rel="alternate" type="text/html" href="http://www.johnmunsch.com/2009/04/why_your_next_server_might_use.html" />
    <link rel="service.edit" type="application/atom+xml" href="http://www.johnmunsch.com/cgi-bin/mt/mt-atom.cgi/weblog/blog_id=1/entry_id=570" title="Why Your Next Server Might Use Less Energy Than A Lightbulb" />
    <id>tag:www.johnmunsch.com,2009://1.570</id>
    
    <published>2009-04-20T18:57:58Z</published>
    <updated>2009-04-20T18:58:23Z</updated>
    
    <summary>An interesting article on building multi-processor machines based on the low power CPUs used in the newer netbook machines and flash memory. High performance but very low energy consumption compared to the kind of machines used by say Google or...</summary>
    <author>
        <name>John Munsch</name>
        <uri>http://www.johnmunsch.com</uri>
    </author>
    
    <content type="html" xml:lang="en" xml:base="http://www.johnmunsch.com/">
        <![CDATA[<p>An <a href="http://www.technologyreview.com/computing/22504/?a=f">interesting article on building multi-processor machines based on the low power CPUs used in the newer netbook machines and flash memory</a>. High performance but very low energy consumption compared to the kind of machines used by say Google or Facebook.</p>]]>
        
    </content>
</entry>
<entry>
    <title>Google Tries To Make Microsoft Completely Irrelevant</title>
    <link rel="alternate" type="text/html" href="http://www.johnmunsch.com/2009/02/google_tries_to_make_microsoft.html" />
    <link rel="service.edit" type="application/atom+xml" href="http://www.johnmunsch.com/cgi-bin/mt/mt-atom.cgi/weblog/blog_id=1/entry_id=565" title="Google Tries To Make Microsoft Completely Irrelevant" />
    <id>tag:www.johnmunsch.com,2009://1.565</id>
    
    <published>2009-02-26T22:08:28Z</published>
    <updated>2009-02-26T22:08:53Z</updated>
    
    <summary>Google Gears was Google’s last attempt to make progress towards putting much more sophisticated applications into the browser. It gave the browser a local cache to hold files (HTML, CSS, images, etc.) and a database to soup up the client...</summary>
    <author>
        <name>John Munsch</name>
        <uri>http://www.johnmunsch.com</uri>
    </author>
    
    <content type="html" xml:lang="en" xml:base="http://www.johnmunsch.com/">
        <![CDATA[<p>Google Gears was Google’s last attempt to make progress towards putting much more sophisticated applications into the browser. It gave the browser a local cache to hold files (HTML, CSS, images, etc.) and a database to soup up the client side capabilities of JavaScript code. With it you can make an offline version of your web application that can work without the Internet being available. Then they built on that by shipping their own browser (Chrome) which compiles JavaScript code to make more complicated applications feasible. Oh, and they made sure that Google Gears comes bundled with Chrome too.</p>  <p>That’s a start at being able to make more sophisticated web applications in an operating system independent way, but their latest move is more than a shot across Microsoft’s bow, it’s more of broadside volley of cannon fire aimed directly at them.</p>  <p>They’ve come up with a plugin architecture called <a href="http://google-code-updates.blogspot.com/2008/12/native-client-technology-for-running.html">Native Client</a>. With it you can run code at nearly native speeds within a browser because most of the code is actually running right on the chip. No emulators, no virtual machines or interpreters (ala. Java, JavaScript, and Flash), just raw code running hell bent for leather with some code around it that checks it before running it to make sure it can’t do bad things and some other code the monitors it all the time it is running. <a href="http://code.google.com/p/nativeclient/?tbbrand=GZEZ&amp;utm_campaign=en&amp;utm_source=en-et-osrcblog&amp;utm_medium=et">To demonstrate they’ve ported Quake to Native Client</a> as well as some other high performance applications and they’ve started asking people to test it on various operating systems and browsers. In fact they’ve even gone so far as to offer bounties people can earn for figuring out any way to exploit the system (i.e. to let people download something that should be safe but because of a Native Client flaw it can infect or damage their system in some way).</p>  <p>Once they’ve got the kinks ironed out, I’m willing to bet money you’ll be seeing this bundled with a future version of Chrome.</p>]]>
        
    </content>
</entry>

</feed> 

