<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0"><channel><title>b#: Blog</title><link>http://flux88.com/blog/</link><description /><generator>Graffiti CMS 1.1 (build 1.1.0.1114)</generator><lastBuildDate>Thu, 15 Oct 2009 15:49:51 GMT</lastBuildDate><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" href="http://feeds.feedburner.com/flux88" type="application/rss+xml" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com" /><item><title>Need a Photographer?</title><link>http://feedproxy.google.com/~r/flux88/~3/DIaNLa6Glbg/</link><pubDate>Thu, 15 Oct 2009 14:49:51 GMT</pubDate><guid isPermaLink="false">http://flux88.com/blog/need-a-photographer/</guid><dc:creator>benscheirman</dc:creator><slash:comments>0</slash:comments><category domain="http://flux88.com/blog/">Blog</category><description>&lt;p&gt;My wife, Silvia, just launched her own photography business.&amp;#160; If you’re looking for a photographer in Houston (for a wedding, family portraits, or even corporate events) please consider her!&lt;/p&gt;  &lt;h3&gt;&lt;a href="http://silviascheirmanphotography.com"&gt;http://silviascheirmanphotography.com&lt;/a&gt;&lt;/h3&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;img alt="photo3" src="http://silviascheirmanphotography.com/images/photo2.png" /&gt;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;img alt="" src="http://silviascheirmanphotography.com/images/rates.jpg" /&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/flux88?a=DIaNLa6Glbg:GvK7uzxHn0I:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/flux88?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/flux88?a=DIaNLa6Glbg:GvK7uzxHn0I:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/flux88?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/flux88?a=DIaNLa6Glbg:GvK7uzxHn0I:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/flux88?i=DIaNLa6Glbg:GvK7uzxHn0I:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</description><feedburner:origLink>http://flux88.com/blog/need-a-photographer/</feedburner:origLink></item><item><title>Pocket Tabs Gets a Makeover!</title><link>http://feedproxy.google.com/~r/flux88/~3/Y_hQb5hZd18/</link><pubDate>Sat, 03 Oct 2009 20:14:22 GMT</pubDate><guid isPermaLink="false">http://flux88.com/blog/pocket-tabs-gets-a-makeover/</guid><dc:creator>benscheirman</dc:creator><slash:comments>3</slash:comments><category domain="http://flux88.com/blog/">Blog</category><description>&lt;p&gt;The beta for Pocket Tabs is underway, and while my beta testers give me feedback and help me squash bugs, my designer has given the UI a bit of a makeover.&amp;#160; See for yourself:&lt;/p&gt;  &lt;h3&gt;Before&lt;/h3&gt;  &lt;table border="0" cellspacing="0" cellpadding="2" width="400"&gt;&lt;tbody&gt;     &lt;tr&gt;       &lt;td valign="top" width="200"&gt;&lt;a href="http://flux88.com/files/media/image/WindowsLiveWriter/PocketTabsGetsaMakeover_D635/Finder_4.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; margin-left: 0px; border-top: 0px; margin-right: 0px; border-right: 0px" title="Finder" border="0" alt="Finder" src="http://flux88.com/files/media/image/WindowsLiveWriter/PocketTabsGetsaMakeover_D635/Finder_thumb_1.png" width="189" height="358" /&gt;&lt;/a&gt;&lt;/td&gt;        &lt;td valign="top" width="200"&gt;&lt;a href="http://flux88.com/files/media/image/WindowsLiveWriter/PocketTabsGetsaMakeover_D635/iPhone%20Simulator%206_2.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="iPhone Simulator 6" border="0" alt="iPhone Simulator 6" src="http://flux88.com/files/media/image/WindowsLiveWriter/PocketTabsGetsaMakeover_D635/iPhone%20Simulator%206_thumb.png" width="189" height="358" /&gt;&lt;/a&gt; &lt;/td&gt;     &lt;/tr&gt;   &lt;/tbody&gt;&lt;/table&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;h3&gt;After&lt;/h3&gt;  &lt;table border="0" cellspacing="0" cellpadding="2" width="400"&gt;&lt;tbody&gt;     &lt;tr&gt;       &lt;td valign="top" width="200"&gt;&lt;a href="http://flux88.com/files/media/image/WindowsLiveWriter/PocketTabsGetsaMakeover_D635/iPhone%20Simulator%208_2.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="iPhone Simulator 8" border="0" alt="iPhone Simulator 8" src="http://flux88.com/files/media/image/WindowsLiveWriter/PocketTabsGetsaMakeover_D635/iPhone%20Simulator%208_thumb.png" width="187" height="358" /&gt;&lt;/a&gt; &lt;/td&gt;        &lt;td valign="top" width="200"&gt;&lt;a href="http://flux88.com/files/media/image/WindowsLiveWriter/PocketTabsGetsaMakeover_D635/iPhone%20Simulator%207_2.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="iPhone Simulator 7" border="0" alt="iPhone Simulator 7" src="http://flux88.com/files/media/image/WindowsLiveWriter/PocketTabsGetsaMakeover_D635/iPhone%20Simulator%207_thumb.png" width="189" height="358" /&gt;&lt;/a&gt; &lt;/td&gt;     &lt;/tr&gt;   &lt;/tbody&gt;&lt;/table&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Much better!&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/flux88?a=Y_hQb5hZd18:ZpAThDF2yYI:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/flux88?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/flux88?a=Y_hQb5hZd18:ZpAThDF2yYI:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/flux88?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/flux88?a=Y_hQb5hZd18:ZpAThDF2yYI:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/flux88?i=Y_hQb5hZd18:ZpAThDF2yYI:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</description><feedburner:origLink>http://flux88.com/blog/pocket-tabs-gets-a-makeover/</feedburner:origLink></item><item><title>How the TFS team is listening</title><link>http://feedproxy.google.com/~r/flux88/~3/CJOWgJ9Ipvw/</link><pubDate>Fri, 02 Oct 2009 20:12:00 GMT</pubDate><guid isPermaLink="false">http://flux88.com/blog/how-the-tfs-team-is-listening/</guid><dc:creator>benscheirman</dc:creator><slash:comments>7</slash:comments><category domain="http://flux88.com/blog/">Blog</category><description>&lt;p&gt;&lt;em&gt;This has been sitting in my drafts folder for way too long, it’s a bit dated, but still good to mention…&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;It’s no secret that I’m a &lt;a href="http://search.twitter.com/search?q=subdigital+tfs" target="_blank"&gt;TFS skeptic&lt;/a&gt;.&amp;#160; I don’t really like the tool, and feel that it adds more friction than value.&amp;#160; Of course that’s just my opinion, and it’s easy to just dismiss my comments and go about your day (if you don’t agree with me).&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/jasonba/" target="_blank"&gt;Jason Barile&lt;/a&gt; has always been friendly and eager to help address some of the issues I’ve had with 2.5 years working with TFS.&amp;#160; Recently he offered to have a conference call with himself and a few other members of his team (they work on TFS).&amp;#160; I have to hand it to Jason for being so open &amp;amp; patient with us opinionated loud-mouths.&lt;/p&gt;  &lt;p&gt;Anyway, here is a brain-dump of the things we talked about.&amp;#160; It’s really raw, but shows most of the pain points that I have (and I believe others do as well).&lt;/p&gt;  &lt;p&gt;While I still don’t like TFS, I’m encouraged to find that there are people like Jason listening to the community and making sure that the feedback makes it to the rest of the team.&amp;#160; What happens after that is anybody’s guess, but at least they aren’t oblivous.&lt;/p&gt;  &lt;p&gt;&lt;em&gt;(I should also mention that I’m only talking about the source control here.&amp;#160; I realize TFS is more than that, but this is the piece we use most)&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;Without further ado…&lt;/p&gt;  &lt;h4&gt;&amp;#160;&amp;#160;&amp;#160; File locking &lt;/h4&gt;  &lt;ul&gt;   &lt;li&gt;I don't always use VS to edit files.&amp;#160; Opening VS just to check out a file is silly.&amp;#160; tf.exe works, but pales in comparison to other CLIs&lt;/li&gt;    &lt;li&gt;hinders command line automation (migration framework)&lt;/li&gt;    &lt;ul&gt;     &lt;li&gt;just about any work I do with build automation has to do something with TFS.&amp;#160; I recall pain in generating migrations automatically (get the latest in a folder, check out the project, create a file, add the reference to the project file, add the file to TFS, check in changes, check them out again) this is largely unnecessary with Git or SVN&lt;/li&gt;   &lt;/ul&gt;    &lt;li&gt;takes longer to refactor (explicit check-out EACH file) &lt;/li&gt;    &lt;ul&gt;     &lt;li&gt;if I do a rename in Resharper, it’s as simple as F2.&amp;#160; If this touches 30 files I shouldn’t even &lt;em&gt;notice&lt;/em&gt; the delay.&amp;#160; With TFS, even connected to the local LAN, it’s dog slow.&lt;/li&gt;   &lt;/ul&gt; &lt;/ul&gt;  &lt;h4&gt;&amp;#160;&amp;#160;&amp;#160; Server keeps track of state, not client &lt;/h4&gt;  &lt;ul&gt;   &lt;li&gt;files get out of sync, TFS said &amp;quot;Nothing to check in&amp;quot; &lt;/li&gt;    &lt;ul&gt;     &lt;li&gt;produces bad builds &lt;/li&gt;   &lt;/ul&gt;    &lt;li&gt;merge gets confused : “Nothing to merge”&amp;#160; O’rly?&amp;#160; Beyond compare tells me the files are different there, buddy.&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;h4&gt;Check-in notifications/emails &lt;/h4&gt;  &lt;ul&gt;   &lt;li&gt;Don't include much details.&amp;#160; It’s almost completely useless&lt;/li&gt;    &lt;li&gt;Can't click to view file/diff (should have a web based viewer for this)&lt;/li&gt;    &lt;li&gt;It’s clear that this is just simply to put a checkbox on a feature matrix and not really strive to be a useful part of the dev process.&lt;/li&gt; &lt;/ul&gt;  &lt;h4&gt;Merging &lt;/h4&gt;  &lt;ul&gt;   &lt;li&gt;Seems to frequently conflict for no reason.&amp;#160; Need to reproduce this. &lt;/li&gt;    &lt;li&gt;&amp;#160;&amp;#160;&amp;#160; Deleted files &lt;/li&gt;    &lt;ul&gt;     &lt;li&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; don't show them &lt;/li&gt;      &lt;li&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; should be able to navigate back in history to show deleted items &lt;/li&gt;   &lt;/ul&gt;    &lt;li&gt;Get NullReferenceExceptions regularly, on normal merge scenarios.&amp;#160; This is repeatable.&lt;/li&gt; &lt;/ul&gt;  &lt;h4&gt;Branch per feature impossible? &lt;/h4&gt;  &lt;ul&gt;   &lt;li&gt;branching is too costly &lt;/li&gt;    &lt;ul&gt;     &lt;li&gt;guidance therefore says “use it sparingly”&lt;/li&gt;      &lt;li&gt;can’t do it offline&lt;/li&gt;   &lt;/ul&gt;    &lt;li&gt;merging is painful&lt;/li&gt;    &lt;ul&gt;     &lt;li&gt;BeyondCompare is a MUST.&amp;#160; The built-in merge tool is so bad it might as well not be included.&lt;/li&gt;   &lt;/ul&gt; &lt;/ul&gt;  &lt;h4&gt;UI &lt;/h4&gt;  &lt;ul&gt;   &lt;li&gt;Viewing / Querying work items ==&amp;gt; YUCK&lt;/li&gt;    &lt;ul&gt;     &lt;li&gt;TFSWA is just a start, not a good user experience&lt;/li&gt;      &lt;li&gt;Needs to be accessible standalone (dual monitor)&lt;/li&gt;   &lt;/ul&gt;    &lt;li&gt;Dropdown fields that span the width of the monitor (WTF!)&lt;/li&gt;    &lt;li&gt;Hides my code &lt;/li&gt;    &lt;li&gt;Compared to Unfuddle, Basecamp, Fogbugz, Lighthouse, it’s clear that little thought to UI &amp;amp; general look &amp;amp; feel was considered a priority.&amp;#160; Even Rally &amp;amp; VersionOne look better than this, and I’m generally harsh on them for UI as well.&lt;/li&gt;    &lt;li&gt;Needs to be optimized for pure-keyboard use.&amp;#160; We’re talking about &lt;em&gt;programmers&lt;/em&gt; here!&lt;/li&gt; &lt;/ul&gt;  &lt;h4&gt;Reports &lt;/h4&gt;  &lt;ul&gt;   &lt;li&gt;Remaining work report is completely useless &lt;/li&gt;    &lt;ul&gt;     &lt;li&gt;# of Work Items is a measure of progress?&amp;#160; What about 100 hour work items or 15 minute work items?&amp;#160; The agile process template is a joke.&lt;/li&gt;   &lt;/ul&gt;    &lt;li&gt;Most companies I’ve seen do little to NO CUSTOMIZATION AT ALL here.&amp;#160; This leaves them with mediocre project templates that do more to hinder the process than help it.&lt;/li&gt;    &lt;li&gt;Reports have that ugly SSRS “chrome” – feels clunky (yes I realize this is nitpicky, but this is &lt;em&gt;my&lt;/em&gt; blog!)&lt;/li&gt; &lt;/ul&gt;  &lt;h4&gt;Workspaces are overcomplicated &lt;/h4&gt;  &lt;ul&gt;   &lt;li&gt;can get corrupted, need to rebuild &lt;/li&gt;    &lt;ul&gt;     &lt;li&gt;this has happened when I got pissed &amp;amp; unchecked read-only &amp;amp; write to files directly (like editing a README.txt file)&lt;/li&gt;   &lt;/ul&gt;    &lt;li&gt;why do I need a workspace again?&lt;/li&gt;    &lt;ul&gt;     &lt;li&gt;why the heck does the server need to know where my local working copy is?&lt;/li&gt;   &lt;/ul&gt; &lt;/ul&gt;  &lt;h4&gt;Command Line Interface&lt;/h4&gt;  &lt;ul&gt;   &lt;li&gt;should be directory-context-aware &lt;/li&gt;    &lt;ul&gt;     &lt;li&gt;“tf checkin” wants to check in every file in every workspace on my machine.&amp;#160; WTFF!&lt;/li&gt;      &lt;li&gt;should be optimized for alpha geeks like me &lt;/li&gt;      &lt;ul&gt;       &lt;li&gt;get inspired by git &lt;/li&gt;        &lt;li&gt;no need for a fancy GUI&lt;/li&gt;     &lt;/ul&gt;      &lt;li&gt;if you were to use git for 1 day you’d realize why they don’t *need* GUI tooling.&amp;#160; Their CLI is pretty friendly and intuitive. tf.exe is powerful, sure, but it’s usually the last resort.&amp;#160; I haven’t met anyone who uses &lt;em&gt;just&lt;/em&gt; the CLI.&lt;/li&gt;   &lt;/ul&gt; &lt;/ul&gt;  &lt;p&gt;Again, these are just my opinions.&amp;#160; The team was very receptive to my criticisms.&amp;#160; They also had a couple of good explanations / retorts.&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/flux88?a=CJOWgJ9Ipvw:HuW1jWHBiL4:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/flux88?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/flux88?a=CJOWgJ9Ipvw:HuW1jWHBiL4:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/flux88?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/flux88?a=CJOWgJ9Ipvw:HuW1jWHBiL4:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/flux88?i=CJOWgJ9Ipvw:HuW1jWHBiL4:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</description><feedburner:origLink>http://flux88.com/blog/how-the-tfs-team-is-listening/</feedburner:origLink></item><item><title>ASP.NET MVP again for 2009</title><link>http://feedproxy.google.com/~r/flux88/~3/eSJLIyBoBs0/</link><pubDate>Fri, 02 Oct 2009 15:02:39 GMT</pubDate><guid isPermaLink="false">http://flux88.com/blog/asp-net-mvp-again-for-2009/</guid><dc:creator>benscheirman</dc:creator><slash:comments>2</slash:comments><category domain="http://flux88.com/blog/">Blog</category><description>&lt;p&gt;&lt;img style="display: inline; margin-left: 0px; margin-right: 0px" align="right" src="http://www.igloocoder.com/images/MVP_fullcolor_forscreen.png" width="153" height="240" /&gt;I’m pleased to announce that I’ve received the MVP award again this year, again in ASP.NET.&amp;#160; It is quite an honor and I’m happy to still be part of the program!&lt;/p&gt;  &lt;p&gt;Congratulations to all the other renewals and especially to those first time MVPs!&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/flux88?a=eSJLIyBoBs0:PVgIxY-2CGk:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/flux88?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/flux88?a=eSJLIyBoBs0:PVgIxY-2CGk:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/flux88?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/flux88?a=eSJLIyBoBs0:PVgIxY-2CGk:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/flux88?i=eSJLIyBoBs0:PVgIxY-2CGk:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</description><feedburner:origLink>http://flux88.com/blog/asp-net-mvp-again-for-2009/</feedburner:origLink></item><item><title>Houston Tech Fest 2009 was a Hit!</title><link>http://feedproxy.google.com/~r/flux88/~3/EQo6EVPUXzU/</link><pubDate>Mon, 28 Sep 2009 05:58:10 GMT</pubDate><guid isPermaLink="false">http://flux88.com/blog/houston-tech-fest-2009-was-a-hit/</guid><dc:creator>benscheirman</dc:creator><slash:comments>6</slash:comments><category domain="http://flux88.com/blog/">Blog</category><description>&lt;p&gt;I found that the content at &lt;a href="http://houstontechfest.com" target="_blank"&gt;Houston Tech Fest&lt;/a&gt; was stellar.&amp;#160; What a range!&amp;#160; We had people from all camps together in one place to learn &amp;amp; share about technology.&lt;/p&gt;  &lt;p&gt;I had 2 sessions (which unfortunately conflicted with a few other talks I wanted to go see!).&lt;/p&gt;  &lt;h4&gt;&lt;strong&gt;Beginning iPhone Development&lt;/strong&gt;&lt;/h4&gt;  &lt;p&gt;I spent a bit too long talking about Objective-C and didn’t get enough time to code.&amp;#160; I remember thinking that 75 minutes was a long time, but it was over before I knew it!&lt;/p&gt;  &lt;p&gt;This talk had a lot of people in the room, and they all seemed genuinely engaged in the content.&amp;#160; Some were frightened by Objective-C (understandably so) but hopefully I swayed their fears just a tad.&amp;#160; iPhone development is fun!&lt;/p&gt;  &lt;p&gt;Download the slide deck / code &lt;a href="https://flux88.s3.amazonaws.com/assets/Intro%20to%20iPhone%20Development.zip" target="_blank"&gt;here&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;&lt;em&gt;(credit for the snowflake animation app:&amp;#160; &lt;/em&gt;&lt;a title="http://appsamuck.com/day9.html" href="http://appsamuck.com/day9.html"&gt;&lt;em&gt;http://appsamuck.com/day9.html&lt;/em&gt;&lt;/a&gt;&lt;em&gt; )&lt;/em&gt;&lt;/p&gt;  &lt;h4&gt;&lt;strong&gt;Build Automation &amp;amp; Continuous Integration&lt;/strong&gt;&lt;/h4&gt;  &lt;p&gt;This was a much smaller crowd, which was good I think… since it allowed us to have more of a conversation.&amp;#160; I have to admit I was feeling pretty horrible during this talk, and I hope it didn’t show too much.&amp;#160; I ended up leaving the event right after and went home and crashed!&amp;#160; Anyway we covered NAnt, Rake, Phantom, and Psake… talk a bit about Database Migration tools, and finally touched on Continous integration with Team City.&amp;#160; I again ran out of time, but I think there was good value in the build runner detail.&lt;/p&gt;  &lt;p&gt;Download the slide deck / examples for this talk &lt;a href="https://flux88.s3.amazonaws.com/assets/Build%20Automation.zip" target="_blank"&gt;here&lt;/a&gt;.&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/flux88?a=EQo6EVPUXzU:uDBcb7g8bjE:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/flux88?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/flux88?a=EQo6EVPUXzU:uDBcb7g8bjE:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/flux88?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/flux88?a=EQo6EVPUXzU:uDBcb7g8bjE:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/flux88?i=EQo6EVPUXzU:uDBcb7g8bjE:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</description><feedburner:origLink>http://flux88.com/blog/houston-tech-fest-2009-was-a-hit/</feedburner:origLink></item><item><title>ASP.NET MVC 2 Article Published on Dot Net Slackers</title><link>http://feedproxy.google.com/~r/flux88/~3/4jXGjlZWcoQ/</link><pubDate>Wed, 23 Sep 2009 13:55:51 GMT</pubDate><guid isPermaLink="false">http://flux88.com/blog/asp-net-mvc-2-article-published-on-dot-net-slackers/</guid><dc:creator>benscheirman</dc:creator><slash:comments>2</slash:comments><category domain="http://flux88.com/blog/">Blog</category><description>&lt;p&gt;Just a quick note that I wrote an article on ASP.NET MVC 2 over at Dot Net Slackers.&lt;/p&gt; &lt;p&gt;&lt;a href="http://dotnetslackers.com/articles/aspnet/A-First-Look-at-ASP-NET-MVC-2.aspx" target="_blank"&gt;Go check it out&lt;/a&gt;!&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/flux88?a=4jXGjlZWcoQ:4yYYm8zoFjw:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/flux88?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/flux88?a=4jXGjlZWcoQ:4yYYm8zoFjw:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/flux88?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/flux88?a=4jXGjlZWcoQ:4yYYm8zoFjw:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/flux88?i=4jXGjlZWcoQ:4yYYm8zoFjw:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</description><feedburner:origLink>http://flux88.com/blog/asp-net-mvc-2-article-published-on-dot-net-slackers/</feedburner:origLink></item><item><title>Workshop on Continuous Integration this Saturday</title><link>http://feedproxy.google.com/~r/flux88/~3/GAIOjLtap7o/</link><pubDate>Wed, 16 Sep 2009 15:04:09 GMT</pubDate><guid isPermaLink="false">http://flux88.com/blog/workshop-on-continuous-integration-this-saturday/</guid><dc:creator>benscheirman</dc:creator><slash:comments>12</slash:comments><category domain="http://flux88.com/blog/">Blog</category><description>&lt;p&gt;&lt;img style="margin: 0px 10px 10px 0px" align="left" src="http://static.howstuffworks.com/gif/gear-bevel.jpg" width="133" height="114"&gt;This is pretty last-minute, but we're putting together a workshop on Continuous Integration.&lt;/p&gt; &lt;p&gt;We'll cover the principles and the tools, and get a working solution up in front of the group.&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;Some topics we're going to cover:&lt;/p&gt; &lt;ul&gt; &lt;li&gt;Source control&lt;/li&gt; &lt;ul&gt; &lt;li&gt;svn&lt;/li&gt; &lt;li&gt;git&lt;/li&gt; &lt;li&gt;perhaps TFS (since many of us are forced to work in with this)&lt;/li&gt;&lt;/ul&gt; &lt;li&gt;Build frameworks&lt;/li&gt; &lt;ul&gt; &lt;li&gt;NAnt&lt;/li&gt; &lt;li&gt;Rake&lt;/li&gt; &lt;li&gt;others? (PSake, Phantom)&lt;/li&gt;&lt;/ul&gt; &lt;li&gt;CI Tools&lt;/li&gt; &lt;ul&gt; &lt;li&gt;TeamCity&lt;/li&gt; &lt;li&gt;CruiseControl.NET&lt;/li&gt; &lt;li&gt;Hudson&lt;/li&gt;&lt;/ul&gt; &lt;li&gt;Testing&lt;/li&gt; &lt;ul&gt; &lt;li&gt;NUnit / MbUnit&lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt; &lt;h3&gt;&amp;nbsp;&lt;/h3&gt; &lt;h3&gt;When is it?&lt;/h3&gt; &lt;p&gt;This Saturday, September 19, 2009.&amp;nbsp; 9:00am-2:00pm&lt;/p&gt; &lt;p&gt;&lt;/p&gt; &lt;p&gt;&lt;/p&gt; &lt;h3&gt;Where is it?&lt;/h3&gt; &lt;p&gt;It will be at the Microsoft office, located at:&lt;/p&gt; &lt;p&gt;&lt;em&gt;2000 W Sam Houston Pkwy S #350&lt;br&gt;Houston, TX 77042-3624&lt;/em&gt;&lt;/p&gt; &lt;p&gt;&lt;em&gt;&lt;/em&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;We're trying to get pizza for the event, so if you're going, please let a comment so that we get an accurate head count.&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/flux88?a=GAIOjLtap7o:6AjOxgtgbE4:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/flux88?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/flux88?a=GAIOjLtap7o:6AjOxgtgbE4:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/flux88?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/flux88?a=GAIOjLtap7o:6AjOxgtgbE4:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/flux88?i=GAIOjLtap7o:6AjOxgtgbE4:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</description><feedburner:origLink>http://flux88.com/blog/workshop-on-continuous-integration-this-saturday/</feedburner:origLink></item><item><title>Announcing Pocket Tabs for iPhone</title><link>http://feedproxy.google.com/~r/flux88/~3/zVwgfr3ZOco/</link><pubDate>Tue, 15 Sep 2009 13:00:00 GMT</pubDate><guid isPermaLink="false">http://flux88.com/blog/announcing-pocket-tabs-for-iphone/</guid><dc:creator>benscheirman</dc:creator><slash:comments>16</slash:comments><category domain="http://flux88.com/blog/">Blog</category><description>&lt;p&gt;I &lt;a href="http://flux88.com/blog/teaser-hellip/" target="_blank"&gt;previously hinted&lt;/a&gt; at an application that I was working on, but wasn’t ready to disclose details.&amp;#160; I have reached a point where I am ready to show what I’ve been working on this past summer.&lt;/p&gt;  &lt;p&gt;The basic idea is this:&amp;#160; &lt;em&gt;Guitar Tablature in your pocket, wherever you are&lt;/em&gt;.&amp;#160; &lt;/p&gt;  &lt;p&gt;If you don’t know what tablature, check &lt;a href="http://en.wikipedia.org/wiki/Tablature" target="_blank"&gt;this Wikipedia entry&lt;/a&gt;.&lt;/p&gt;  &lt;h2&gt;Pocket Tabs for iPhone&lt;/h2&gt;  &lt;p&gt;Pocket Tabs is an iPhone application that aims to be a guitarists companion.&amp;#160; Often times I’ve found myself with a guitar but not in front of a computer.&amp;#160; I know many songs, but usually I need to look them up to refresh my memory before I can play them again.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://flux88.com/files/media/image/WindowsLiveWriter/AnnouncingPocketTabsforiPhone_A15/Finder_2.png" target="_blank"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; margin-left: 0px; border-top: 0px; margin-right: 0px; border-right: 0px" title="Finder" border="0" alt="Finder" src="http://flux88.com/files/media/image/WindowsLiveWriter/AnnouncingPocketTabsforiPhone_A15/Finder_thumb.png" width="254" height="480" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Pocket Tabs allows you to search for tabs online and view them in a hands-free fashion.&amp;#160; You can even save the tabs to your device so that they’ll be available without an internet connection.&amp;#160; This is perfect for camping, where internet connections are sparse, but guitars are plenty!&amp;#160; It is also useful for iPod Touch owners.&amp;#160; They can load up tabs to their device while they’re on Wi-Fi, and have them ready wherever they are.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://flux88.com/files/media/image/WindowsLiveWriter/AnnouncingPocketTabsforiPhone_A15/iPhone%20Simulator%206_2.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="iPhone Simulator 6" border="0" alt="iPhone Simulator 6" src="http://flux88.com/files/media/image/WindowsLiveWriter/AnnouncingPocketTabsforiPhone_A15/iPhone%20Simulator%206_thumb.png" width="253" height="480" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&lt;a href="http://flux88.com/files/media/image/WindowsLiveWriter/AnnouncingPocketTabsforiPhone_A15/iPhone%20Simulator%203_2.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="iPhone Simulator 3" border="0" alt="iPhone Simulator 3" src="http://flux88.com/files/media/image/WindowsLiveWriter/AnnouncingPocketTabsforiPhone_A15/iPhone%20Simulator%203_thumb.png" width="254" height="480" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;A cool feature that I’m really proud of is “Auto-Scroll”.&amp;#160; Most of the time you’ll be using both of your hands to play the guitar, so this allows you to scroll at a set speed automatically.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://flux88.com/files/media/image/WindowsLiveWriter/AnnouncingPocketTabsforiPhone_A15/iPhone%20Simulator%202_2.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="iPhone Simulator 2" border="0" alt="iPhone Simulator 2" src="http://flux88.com/files/media/image/WindowsLiveWriter/AnnouncingPocketTabsforiPhone_A15/iPhone%20Simulator%202_thumb.png" width="253" height="480" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&lt;a href="http://flux88.com/files/media/image/WindowsLiveWriter/AnnouncingPocketTabsforiPhone_A15/iPhone%20Simulator_4.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="iPhone Simulator" border="0" alt="iPhone Simulator" src="http://flux88.com/files/media/image/WindowsLiveWriter/AnnouncingPocketTabsforiPhone_A15/iPhone%20Simulator_thumb_1.png" width="250" height="480" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;h2&gt;Submit Tabs Online!&lt;/h2&gt;  &lt;p&gt;Pocket Tabs searches it’s companion website, &lt;a href="http://pockettabs.com"&gt;http://pockettabs.com&lt;/a&gt; for tablature.&amp;#160; These are user-submitted tabs &amp;amp; chords, so if there isn’t a song you like available, you’re free to submit it at &lt;a href="http://pockettabs.com/submit"&gt;http://pockettabs.com/submit&lt;/a&gt;.&lt;/p&gt;  &lt;h2&gt;I Need Beta Testers&lt;/h2&gt;  &lt;p&gt;I’m getting ready to release a beta version, and I need a few beta testers.&amp;#160; So if you play guitar, have an iPhone or iPod Touch, and want to help out, please send an email to beta[AT]pockettabs[DOT]com to express your interest.&lt;/p&gt;  &lt;p&gt;I am planning on getting 20-30 beta testers, so get your requests in as soon as possible.&amp;#160; I’ll then send out an email with instructions on how to get started with the beta.&lt;/p&gt;  &lt;p&gt;   &lt;p&gt;&lt;/p&gt;    &lt;p&gt;&lt;/p&gt;    &lt;p&gt;&lt;/p&gt;    &lt;p&gt;&lt;/p&gt;    &lt;p&gt;&lt;/p&gt;    &lt;p&gt;&amp;#160;&lt;/p&gt;    &lt;p&gt;What do you think?&amp;#160; Let me know in the comments!&lt;/p&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/flux88?a=zVwgfr3ZOco:kYw-GkvYt00:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/flux88?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/flux88?a=zVwgfr3ZOco:kYw-GkvYt00:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/flux88?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/flux88?a=zVwgfr3ZOco:kYw-GkvYt00:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/flux88?i=zVwgfr3ZOco:kYw-GkvYt00:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</description><feedburner:origLink>http://flux88.com/blog/announcing-pocket-tabs-for-iphone/</feedburner:origLink></item><item><title>My Favorite Production Software Bug</title><link>http://feedproxy.google.com/~r/flux88/~3/_4S3X-37QS0/</link><pubDate>Fri, 21 Aug 2009 13:46:00 GMT</pubDate><guid isPermaLink="false">http://flux88.com/blog/my-favorite-production-software-bug/</guid><dc:creator>benscheirman</dc:creator><slash:comments>8</slash:comments><category domain="http://flux88.com/blog/">Blog</category><description>&lt;p&gt;When I first graduated from college I worked for a small company doing custom development work in .NET 1.1.&lt;/p&gt;
&lt;p&gt;Our largest client (coincidentally where our offices were) had a print shop and a web site for financial agents to set up and send mailings to folks inviting them to a dinner and telling them about the latest &amp;amp; greatest annuities that they should invest all their money in.&lt;/p&gt;
&lt;p&gt;The system was pretty interesting.&amp;nbsp; With a batch job they'd print out letters, a bio card that showed the agent's photo on it, and other inserts, such as tickets to the dinner.&amp;nbsp; These would be collated, folded, and stuffed into an envelope that would be licked, sealed, and affixed with a real stamp. (&lt;em&gt;People are 20 times more likely to open a letter if it has a real stamp -- and yes I just made that number up&lt;/em&gt;).&amp;nbsp; It was very impressive to watch it all work.&lt;/p&gt;
&lt;p&gt;The website we built allowed the agents to place these orders (with optional inserts) and mail them to a set of folks matching a given demographic all online.&lt;/p&gt;
&lt;p&gt;&lt;img style="margin: 10px 10px 10px 0px" align="left" alt="" src="http://www.creative-ps.com/images/content/mailsorter.jpg" /&gt;&lt;/p&gt;
&lt;p&gt;Often times the agents would purchase an upgrade to have a reminder card sent to each person a week before the event occurred.&amp;nbsp; These cards were special and even though we had a room full of expensive printers, we didn't have the ability to print these cards.&amp;nbsp; So we'd have to outsource it to another print shop across town.&lt;/p&gt;
&lt;p&gt;The process went something like this:&lt;/p&gt;
&lt;ul&gt;
    &lt;li&gt;We'd compile all the info, along with a TIF of the agent's photo and FTP it over to the other company&lt;/li&gt;
    &lt;li&gt;They'd print them all and drive them to the post office for mailing&lt;/li&gt;
    &lt;li&gt;They would charge us money&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;All of this just worked, and I never had to see the internals of this system.&amp;nbsp; That is, until my boss went on vacation to Mexico (at the time it was just me and him).&lt;/p&gt;
&lt;p&gt;You see, an agent had sent a card to himself and a couple of his friends.&amp;nbsp; He never received them.&amp;nbsp; Since he had paid of for the upgrade he was understandably upset.&amp;nbsp; They asked me to look into it.&lt;/p&gt;
&lt;p&gt;I was slightly familiar with the tables, and so I went looking.&amp;nbsp; There was a table along the lines of ResponseCardQueue.&amp;nbsp; It contained columns such as agent_id, recipient, address, city, state, zip, and date_sent.&lt;/p&gt;
&lt;p&gt;There were tens of thousands of these records.&amp;nbsp; I issued this query:&lt;/p&gt;
&lt;pre&gt;
SELECT * FROM ResponseCardQueue WHERE date_sent IS NULL&lt;/pre&gt;
&lt;p&gt;To find that there were about 2100 records returned.&amp;nbsp; For some reason these weren't being processed.&lt;/p&gt;
&lt;p&gt;I finally found the code that was reading this, and it had some code that looked like this:&lt;/p&gt;
&lt;pre&gt;
public void ProcessCards(Card[] cards)&lt;br /&gt;{&lt;br /&gt;&amp;nbsp; try &lt;br /&gt;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; foreach(Card c in cards)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; string tifFilename = @&amp;quot;\\SOME\NETWORK\PATH\&amp;quot; + c.AgentId + &amp;quot;.TIF&amp;quot;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //copy details + tif image to some folder&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; //zip up folder&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; //FTP the file to the other print shop&lt;br /&gt;    //mark date_sent to DateTime.now&lt;br /&gt;&amp;nbsp; }&lt;br /&gt;&amp;nbsp; catch&lt;br /&gt;&amp;nbsp; {&lt;br /&gt;&amp;nbsp; }&lt;br /&gt;}
&lt;/pre&gt;
&lt;p&gt;There are two things to notice.&amp;nbsp; One was that we were calculating the filename based on the column in the database.&amp;nbsp; The 2nd was the empty catch block, effectively allowing errors to go on unnoticed.&lt;/p&gt;
&lt;p&gt;In this system an agent id was an identity column in another table, so the numbers were incrementing by 1 with each new account.&amp;nbsp; After much searching, I realized that the column type for the agent id in this table was defined as a char(4).&amp;nbsp; So as soon as we had our 10000th record in the system, it started looking for filenames that didn't exist on the network share.&lt;/p&gt;
&lt;p&gt;It would be something like this:&lt;/p&gt;
&lt;p&gt;agent id 10200 would get truncated to 1020, which in our system didn't exist (most of the numbers started in the 4000's.&amp;nbsp; So the filename didn't exist (and probably better that it errored out here rather than choose the wrong picture for the card!).&amp;nbsp; This code threw an exception and stopped processing future records.&lt;/p&gt;
&lt;p&gt;And so the unsent records piled up.&amp;nbsp; For 4 months.&lt;/p&gt;
&lt;p&gt;&lt;img style="margin: 10px 0px 10px 10px" align="right" width="137" height="174" alt="" src="http://1sdiresource.com/pile.jpg" /&gt;&lt;/p&gt;
&lt;p&gt;So I diligently made the column type int and updated the records that were below that threshold to correct their agent id numbers.&amp;nbsp; So guess what happened?&amp;nbsp; I fixed the clog and with one big TWOOOSH all of the records were processed.&lt;/p&gt;
&lt;p&gt;I felt mighty proud.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Until.........&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;A few hours later I realized that the cards would actually now be mailed!&amp;nbsp; How embarrassing it would be to remind someone of an event that took place 3 months ago?&lt;/p&gt;
&lt;p&gt;By the time I was able to explain all of this and someone jumped in their car and went to the post office just in time to grab the entire batch before it was about to be mailed.&lt;/p&gt;
&lt;p&gt;We still were charged for the printing &amp;amp; postage of those cards, however we saved ourselves the embarrassment of explaining to all of our customers that we screwed up big time.&lt;/p&gt;
&lt;p&gt;I learned a valuable lesson that a simple oversight can cost a company a &lt;em&gt;ton&lt;/em&gt; of money (and in this case... reputation).&lt;/p&gt;
&lt;p&gt;So what's your favorite production software bug?&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/flux88?a=_4S3X-37QS0:fg1gQghr7mw:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/flux88?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/flux88?a=_4S3X-37QS0:fg1gQghr7mw:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/flux88?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/flux88?a=_4S3X-37QS0:fg1gQghr7mw:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/flux88?i=_4S3X-37QS0:fg1gQghr7mw:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</description><feedburner:origLink>http://flux88.com/blog/my-favorite-production-software-bug/</feedburner:origLink></item><item><title>ASP.NET MVC in Action in Stores in September</title><link>http://feedproxy.google.com/~r/flux88/~3/LtvcavoXW0U/</link><pubDate>Tue, 18 Aug 2009 05:08:00 GMT</pubDate><guid isPermaLink="false">http://flux88.com/blog/asp-net-mvc-in-action-in-stores-in-september/</guid><dc:creator>benscheirman</dc:creator><slash:comments>5</slash:comments><category domain="http://flux88.com/blog/">Blog</category><description>&lt;p&gt;Well the day has arrived.&amp;nbsp; Our book has finally been submitted to print and it should be in stores on September 7th.&amp;nbsp; I&amp;rsquo;m very happy to be finished with the book.&amp;nbsp; I think there are a lot of great books on ASP.NET MVC, yet ours still stands out as it targets a different audience than the other books.&lt;/p&gt;
&lt;p&gt;In the book you&amp;rsquo;ll find our (sometimes opinionated) views on application development, architecture, separation of concerns, emphasis on testing, MvcContrib, NHibernate, StructureMap, and more.&amp;nbsp; You&amp;rsquo;ll also learn plenty about the extension points of the framework, as we take you through many examples to illustrate the topic.&lt;/p&gt;
&lt;p&gt;I&amp;rsquo;m especially proud of the Routing and Ajax chapters, which have received warm reviews during the early PDF drops.&lt;/p&gt;
&lt;p&gt;&lt;img alt="" src="http://jeffreypalermo.com/files/media/image/WindowsLiveWriter/ASP.NETMVCinActionbookcompleteandheadedt_7A74/image_caa2976c-de99-4b61-a7c8-7a32ef519518.png" /&gt;&lt;/p&gt;
&lt;p&gt;Here&amp;rsquo;s what some folks are saying about the book:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;I really enjoyed ASP.NET MVC in Action and highly recommend it for a fresh look at the ASP.NET MVC Framework.&amp;nbsp; &lt;br /&gt;
&amp;ndash; &lt;a target="_blank" href="http://davidhayden.com/blog/dave/archive/2009/07/26/AspNetMvcInActionBookReview.aspx"&gt;David Hayden&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;  &lt;blockquote&gt;
&lt;p&gt;I&amp;rsquo;m very happy with this book.&amp;nbsp; I would definitely recommend it to anyone interested in ASP.NET MVC.     &lt;br /&gt;
- &lt;a target="_blank" href="http://www.compiledmonkey.com/2009/07/12/book-review-asp-net-mvc-in-action/"&gt;Chris Stewart&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;  &lt;blockquote&gt;
&lt;p&gt;All in all ASP.NET MVC in Action should be on the top of the stack when picking up ASP.NET MVC book.     &lt;br /&gt;
- &lt;a target="_blank" href="http://azamsharp.com/Posts/232_Review__ASP_NET_MVC_in_Action.aspx"&gt;Mohammad Azam&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;If you want to pick up the book, you can get it from &lt;a target="_blank" href="http://manning.com/palermo"&gt;Manning&lt;/a&gt; or &lt;a target="_blank" href="http://www.amazon.com/ASP-NET-MVC-Action-Jeffrey-Palermo/dp/1933988622"&gt;Amazon&lt;/a&gt;.&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/flux88?a=LtvcavoXW0U:s2q-FAFutjA:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/flux88?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/flux88?a=LtvcavoXW0U:s2q-FAFutjA:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/flux88?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/flux88?a=LtvcavoXW0U:s2q-FAFutjA:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/flux88?i=LtvcavoXW0U:s2q-FAFutjA:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</description><feedburner:origLink>http://flux88.com/blog/asp-net-mvc-in-action-in-stores-in-september/</feedburner:origLink></item></channel></rss>
