<?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.wynia.org/~d/styles/itemcontent.css"?><rss xmlns:media="http://search.yahoo.com/mrss/" xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:creativeCommons="http://backend.userland.com/creativeCommonsRssModule" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0"><channel><title>J Wynia - The Glass is Too Big</title><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.wynia.org/JWynia" /><description>Technology, programming, thoughtful discourse and writing.</description><language>en</language><managingEditor>noemail@noemail.org (J Wynia)</managingEditor><lastBuildDate>Tue, 31 Jan 2012 23:01:42 PST</lastBuildDate><generator>The zombie hordes, preparing for the coming zombie apocalypse.</generator><feedburner:info uri="jwynia" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><itunes:owner><itunes:email>noemail@noemail.org</itunes:email></itunes:owner><itunes:explicit>no</itunes:explicit><itunes:subtitle>Latest Content from wynia.org</itunes:subtitle><geo:lat>45.059265</geo:lat><geo:long>-93.299773</geo:long><creativeCommons:license>http://creativecommons.org/licenses/by/2.5/</creativeCommons:license><image><url>http://creativecommons.org/images/public/somerights20.gif</url><link>http://creativecommons.org/licenses/by/2.5/</link><title>Some Rights Reserved</title></image><feedburner:emailServiceId>JWynia</feedburner:emailServiceId><feedburner:feedburnerHostname>http://feedburner.google.com</feedburner:feedburnerHostname><feedburner:browserFriendly>This is an XML content feed. It is intended to be viewed in a newsreader or syndicated to another site, subject to copyright and fair use.</feedburner:browserFriendly><item><title>Hybrid Expertise</title><link>http://feeds.wynia.org/~r/JWynia/~3/EhbTY6-id9M/hybrid-expertise</link><pubDate>Wed, 30 Nov 2011 16:00:00 PST</pubDate><guid isPermaLink="false">urn:uuid:873e8947-0193-4438-b8e4-4ecc531a3df5</guid><description>Had a conversation about &amp;quot;being the best&amp;quot; that reminded me of something I read a few years ago. Scott Adams (of Dilbert) talks about how the advice that most people give to be the number 1 best at something doesn&amp;#39;t make sense. &lt;br /&gt;&lt;br /&gt;Think about it. In a given field, if anything other than being number 1 is deemed failure, almost no one will ever be considered a success.&lt;br /&gt;&lt;br /&gt;His advice instead is to be in the top 25% at a few different things. In doing so, you DO become the best &lt;b&gt;at that combination&lt;/b&gt; and essentially can carve out your own niche. Being in the top 25% in something you&amp;#39;re interested in isn&amp;#39;t terribly hard. &lt;br /&gt;&lt;br /&gt;For me, I did this by accident. My degree and educational background is in English and communications. I took tons of writing and public speaking classes. I took a bit of art and design classes giving me skills to make my communication look and sound better than it would otherwise. I think I have good evidence that I&amp;#39;m in the top 25% for those kinds of skills.&lt;br /&gt;&lt;br /&gt;I have loved computers since I sat in front of TRS-80 and TI-49A computers in 1985. I&amp;#39;m self-taught as a software developer, but think I&amp;#39;ve managed to get to top 25% there too.&lt;br /&gt;&lt;br /&gt;I grew up in an entrepreneurial family and learned a LOT about how to run a small business as I grew up.&lt;br /&gt;&lt;br /&gt;The thing is, when you combine those, you get a software developer who is good at communicating with non-developers and understand business. THAT combination turns out to be fairly useful in the marketplace.&lt;br /&gt;&lt;br /&gt;Other synergies from that combination have also shown up, such that I&amp;#39;m suited to speak at software conferences (something I&amp;#39;ve started doing over the last few years), I mentor and teach other software devs on my projects, I&amp;#39;m working on my own software product that I&amp;#39;m aiming to get to be a profitable business so I can quit selling my time, etc.&lt;br /&gt;&lt;br /&gt;I might even go further than Adams does and think that enough skills where you&amp;#39;re even just above the 50% mark (just barely better than average) can work to build a solid niche. &lt;br/&gt;&lt;br/&gt;&lt;a href="http://dilbertblog.typepad.com/the_dilbert_blog/2007/07/career-advice.html"&gt;The Dilbert Blog: Career Advice&lt;/a&gt;&lt;p&gt;&lt;i&gt;Originally posted at: &lt;a href=""&gt;&lt;/a&gt;&lt;/i&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.wynia.org/~ff/JWynia?a=EhbTY6-id9M:ORVwW2wxaC0:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/JWynia?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.wynia.org/~ff/JWynia?a=EhbTY6-id9M:ORVwW2wxaC0:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/JWynia?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.wynia.org/~ff/JWynia?a=EhbTY6-id9M:ORVwW2wxaC0:YwkR-u9nhCs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/JWynia?d=YwkR-u9nhCs" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/JWynia/~4/EhbTY6-id9M" height="1" width="1"/&gt;</description><feedburner:origLink>http://www.wynia.org/wordpress/2011/12/hybrid-expertise</feedburner:origLink></item><item><title>Kindle Fire - Volkstablet - My Review</title><link>http://feeds.wynia.org/~r/JWynia/~3/wY0hlSVpVtQ/kindle-fire-review</link><pubDate>Wed, 16 Nov 2011 16:00:00 PST</pubDate><guid isPermaLink="false">urn:uuid:265893f6-6285-4dd3-b2f0-b987bde99a7d</guid><description>My Kindle Fire arrived today. I bought it to have an Android tablet for web application testing. Of course, I&amp;#39;ll also just plain use it too.&lt;br /&gt;&lt;br /&gt;For context, I should note that my work bag that I take with me to work and pretty much everywhere contains the following:&lt;br /&gt;&lt;br /&gt;* Windows laptop&lt;br /&gt;* MacBook Pro&lt;br /&gt;* iPad&lt;br /&gt;* iPod Touch&lt;br /&gt;* TMobile MyTouch Slide (in my pocket, technically)&lt;br /&gt;* Dell Venue Pro - Windows Phone 7&lt;br /&gt;* Google Nexus&lt;br /&gt;* iPhone 3G that actually only has 2G data access and no WiFi.&lt;br /&gt;* Original Kindle&lt;br /&gt;&lt;br /&gt;The Kindle Fire will probably replace the original Kindle, but for at least a while will just be an addition.&lt;br /&gt;&lt;br /&gt;OK. With that out of the way, I&amp;#39;ve seen plenty of reviews of the Kindle Fire, most from people who clearly prefer the iPad. In many cases, I can see biases that the reviewers seemingly aren&amp;#39;t aware of.&lt;br /&gt;&lt;br /&gt;The first is that many of the reviews sound like someone who&amp;#39;s been driving a Lexus or Mercedes for the last 2 years and they&amp;#39;re reviewing a Toyota or Honda. Any but the most neutral reviewer in that situation would find themselves underwhelmed, no matter how solid and appropriate the Toyota.&lt;br /&gt;&lt;br /&gt;That&amp;#39;s because a Lexus is $60-80K while the Toyota is $25-30K. That&amp;#39;s relevant because that&amp;#39;s the same kind of ratio we&amp;#39;ve got when comparing a $500-800 iPad against a $200 Kindle Fire.&lt;br /&gt;&lt;br /&gt;So, when reviewers act like that price difference doesn&amp;#39;t matter, I have to wonder how they&amp;#39;d handle reviewing the Lexus/Toyota next to each other. Those reviewers keep comparing 3G data access, cameras, etc. against the iPad. &lt;br /&gt;&lt;br /&gt;You want to know what the killer feature for the Kindle Fire will be? The fact you can buy one EACH for 3 kids for the same price as one 3G iPad. &lt;br /&gt;&lt;br /&gt;The other thing that strikes me is that the people who are happiest with their iPads are those who buy into the &amp;quot;Apple lifestyle&amp;quot;. They&amp;#39;re the ones that buy their music, movies and TV from iTunes on a MacBook Pro or Air, watch that content on their AppleTV over WiFi provided via their Airport Extreme. That&amp;#39;s clearly by design.&lt;br /&gt;&lt;br /&gt;That&amp;#39;s where I think my experience with the Kindle Fire so far differs from many reviewers. See, when I powered it up, it showed ~120 Kindle books on my bookshelf that I&amp;#39;ve already purchased. When I opened the music section, there were nearly 30,000 MP3&amp;#39;s that I&amp;#39;ve already uploaded for free to the Amazon Cloud. When I open the video section, I&amp;#39;m greeted by a bunch of movies and 54 TV seasons, including the current season of Walking Dead where the last couple of episodes I haven&amp;#39;t had time to watch are waiting. Along with them are piles of stuff in the Amazon Prime library.&lt;br /&gt;&lt;br /&gt;That sounds like one big Amazon commercial, doesn&amp;#39;t it? Of course it does. That&amp;#39;s how most Apple pitches sound too. But, if, like me, you&amp;#39;ve actually been in the Amazon content camp for quite some time, things line up nicely and you have that same, smooth experience that longtime Apple customers have had when buying iPads.&lt;br /&gt;&lt;br /&gt;None of the reviews I&amp;#39;ve read so far seem to have come from anyone who already had a lot of Amazon content. And, the content strategy is really where the success or failure of this product hinges, doesn&amp;#39;t it?&lt;br /&gt;&lt;br /&gt;Overall, it&amp;#39;s a decent device. It does the 80% most common things I do on an iPad and, for content consumption, which is a large part of that, it does it better FOR ME, because my content is already on the Amazon stack.&lt;br /&gt;&lt;br /&gt;The built-in speakers are acceptable, screen&amp;#39;s bright, etc. The size is actually better for me than the iPad. I know, from reading the tech press, that I&amp;#39;m not supposed to feel that way, but I do. In portrait mode, it&amp;#39;s narrow enough that I can type with my thumbs like on a phone. Given my hand size (I&amp;#39;m a 6&amp;#39;4&amp;quot; 260lb guy), it&amp;#39;s actually better/easier than it is for me on software keyboards in phones. It&amp;#39;s trade paperback size, which, in books, is clearly sold in that size for a reason. I can read much more comfortably with the Kindle than I can with the iPad. I like that.&lt;br /&gt;&lt;br /&gt;Lots of geeks/techies seem to think &amp;quot;everyone&amp;quot; already has an iPad, any time spent in more &amp;quot;mundane&amp;quot; circles (like western Minnesota where I grew up), you&amp;#39;ll find very few iPads and lots of derision at the idea of spending $500-800.&lt;br /&gt;&lt;br /&gt;If you look at this like the early days of cars, you don&amp;#39;t get America driving by selling them Mercedes Benz cars, you do it by selling $600 Model T&amp;#39;s. The whole time Henry Ford was cranking out Tin Lizzies, Mercedes and other luxury brands were doing much more feature-full models, but cheap, basic cars took over America.&lt;br /&gt;&lt;br /&gt;Only time will tell whether that parallel is correct or just another in a long line of ill-fitting analogies of technology to cars. But, I&amp;#39;m betting on Amazon.&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.wynia.org/~ff/JWynia?a=wY0hlSVpVtQ:jt1vgoqPugk:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/JWynia?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.wynia.org/~ff/JWynia?a=wY0hlSVpVtQ:jt1vgoqPugk:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/JWynia?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.wynia.org/~ff/JWynia?a=wY0hlSVpVtQ:jt1vgoqPugk:YwkR-u9nhCs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/JWynia?d=YwkR-u9nhCs" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/JWynia/~4/wY0hlSVpVtQ" height="1" width="1"/&gt;</description><feedburner:origLink>http://www.wynia.org/wordpress/2011/11/kindle-fire-review</feedburner:origLink></item><item><title>Why All The Superhero Origin Re-Hashing?</title><link>http://feeds.wynia.org/~r/JWynia/~3/_XWjErtsQoI/why-all-the-superhero-origin-rehashing</link><pubDate>Mon, 14 Nov 2011 16:00:00 PST</pubDate><guid isPermaLink="false">urn:uuid:d93f1f35-7740-4ad8-8fc7-5556441c382f</guid><description>Had another conversation with someone who is baffled by the fact that they just keep re-making the origin story comic book movies rather than moving forward with other stories. It&amp;#39;s not all that surprising, actually.&lt;br /&gt;&lt;br /&gt;See, there&amp;#39;s this pattern of storytelling for sci-fi/fantasy that TV and movies (and many books too) stick very closely to as it&amp;#39;s the least risky structure they can go with. The pattern involves a &amp;quot;mundane&amp;quot; or &amp;quot;normal&amp;quot; person as a primary character. &lt;br /&gt;&lt;br /&gt;That normal person serves as a proxy for the viewer or reader. All of the weird stuff going on in the sci-fi or fantasy universe needs to be explained to them and thus, to the audience. Luke Skywalker knows nothing about the force and neither does the audience at the beginning of Star Wars. &lt;br /&gt;&lt;br /&gt;Since Luke needs so much stuff explained to him, it becomes much easier for the filmmakers to explain it to us as an audience. When Sheriff Carter shows up in Eureka and has never heard of the place,  anything the writers need us to know gets explained to Carter. When a weird artifact needs to be explained to the audience on Warehouse 13, it gets explained to any of the half of the cast filling this role on that show.&lt;br /&gt;&lt;br /&gt;This can be multiplied to include more than one such character. Shows like Stargate put nearly the entire cast into this role when the started out. Same with most of the cast on Lost. &lt;br /&gt;&lt;br /&gt;This formula is so completely ingrained that when a show like Stargate matures, the often need to inject a new character or set of characters to fill the role.&lt;br /&gt;&lt;br /&gt;Once you realize this pattern and are looking for it, you can usually see which sci-fi or fantasy material has any chance of mainstream success. Those that follow the formula have a shot, those that don&amp;#39;t, don&amp;#39;t. I&amp;#39;m sitting here trying to think of ANY examples that succeeded against this formula and I&amp;#39;m coming up empty.&lt;br /&gt;&lt;br /&gt;This formula is seriously powerful. First, it really is good storytelling, particularly when the story world deviates from the rules of current reality. Second, it provides an onramp for those who wouldn&amp;#39;t otherwise be interested in the weird story world. That second part is damned near a law of nature when it comes to TV and movies. Whether or not it&amp;#39;s ACTUALLY necessary or it&amp;#39;s just talking down to audiences is irrelevant. The studios clearly believe that nothing in the genre works without this.&lt;br /&gt;&lt;br /&gt;Back to super-hero movies, you&amp;#39;ll probably see that, in an origin story, the hero serves as our proxy character, exploring their new powers, learning how to be a hero, etc. This is a particularly powerful combo because our proxy user (whom we are meant to empathize with) is combined with the protagonist (whom we are meant to empathize with). Put those together and nearly all of the story&amp;#39;s empathy is channeled in the direction of the hero.&lt;br /&gt;&lt;br /&gt;When you look at the non-origin super hero stories, they often lose the proxy character. At the very least, the hero stops being able to fulfill that role. That means siphoning some of the empathy away from the hero. That gets tricky to write and still keep it compelling. As such, each time a franchise strays away from origin stories, it gets more and more risky, speaks to a smaller and smaller audience and generally scares the crap out of the people in Hollywood pouring hundreds of millions into making these movies.&lt;br /&gt;&lt;br /&gt;Their reaction? Stay in the end of the pool where it&amp;#39;s safe. Let&amp;#39;s just re-boot and go back to the origin story again.&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.wynia.org/~ff/JWynia?a=_XWjErtsQoI:ruywxkBdK6w:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/JWynia?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.wynia.org/~ff/JWynia?a=_XWjErtsQoI:ruywxkBdK6w:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/JWynia?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.wynia.org/~ff/JWynia?a=_XWjErtsQoI:ruywxkBdK6w:YwkR-u9nhCs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/JWynia?d=YwkR-u9nhCs" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/JWynia/~4/_XWjErtsQoI" height="1" width="1"/&gt;</description><feedburner:origLink>http://www.wynia.org/wordpress/2011/11/why-all-the-superhero-origin-rehashing</feedburner:origLink></item><item><title>Ideas, Matches and Bonfires</title><link>http://feeds.wynia.org/~r/JWynia/~3/3cI9oKxMxUs/ideas-matches-and-bonfires</link><pubDate>Mon, 14 Nov 2011 16:00:00 PST</pubDate><guid isPermaLink="false">urn:uuid:b93ab593-6805-42de-9ac9-4529381f4182</guid><description>I think of a successful business, product or service as a bonfire. The idea is a match or spark or friction. Without that, you won&amp;#39;t be able to start the fire. That makes the idea critical.&lt;br /&gt;&lt;br /&gt;However, unless someone provides tinder, kindling and a steady supply of firewood, your bonfire will be, at best, a quick flash of light and heat and then a charred match.&lt;br /&gt;&lt;br /&gt;After the fire has been built up and it settles into a proper bonfire, you&amp;#39;ve got a pile of hot coals that are lighting the additional wood that gets added and it becomes an engine for heat and light.&lt;br /&gt;&lt;br /&gt;From the perspective of those sitting around the fire and enjoying its output hours after it was started, the guy who brought the match is important, but hardly worth praising over those who gathered the pile of firewood that will fuel the fire into the night.&lt;br /&gt;&lt;br /&gt;Too often in business, I see the guy who had the idea getting disproportional recognition. Ideas are plentiful (matches are sold in boxes of thousands of them) and pretty much disposable. But if you really want a fire that burns strongly and for a long time, someone has to do the hard work of either gathering or cutting/splitting/drying and preparing the firewood. &lt;br /&gt;&lt;br /&gt;I&amp;#39;ve been in meetings where literally hundreds of ideas are recorded in an hour. Any one of those ideas might require 10,000 hours of human effort to see it to completion.&lt;br /&gt;&lt;br /&gt;I love ideas. I keep a notebook full of them. But, I make my living from turning those ideas into blazing bonfires.&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.wynia.org/~ff/JWynia?a=3cI9oKxMxUs:k7y9QSJ0WlA:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/JWynia?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.wynia.org/~ff/JWynia?a=3cI9oKxMxUs:k7y9QSJ0WlA:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/JWynia?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.wynia.org/~ff/JWynia?a=3cI9oKxMxUs:k7y9QSJ0WlA:YwkR-u9nhCs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/JWynia?d=YwkR-u9nhCs" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/JWynia/~4/3cI9oKxMxUs" height="1" width="1"/&gt;</description><feedburner:origLink>http://www.wynia.org/wordpress/2011/11/ideas-matches-and-bonfires</feedburner:origLink></item><item><title>Using the Razor for Templating Outside of ASP.NET MVC</title><link>http://feeds.wynia.org/~r/JWynia/~3/SfNgefWATVA/using-the-razor-for-templating-outside-of-asp-net-mvc</link><pubDate>Sat, 04 Jun 2011 17:00:00 PDT</pubDate><guid isPermaLink="false">urn:uuid:f3d0017d-b691-4fe3-adf3-c165b23e8fa8</guid><description>&lt;p&gt;For my upcoming software products, I’m carrying forward a strategy I’ve used at several clients for skinning/theming the application: a template engine. I like to think of my template engine approach as the “reverse” of what usually gets called a “content management system”. &lt;/p&gt;  &lt;p&gt;See, most CMS’s force you to let their app run your site as well as manage your content. If you want to write custom business logic or customize what they can do, you have to write it as a plugin to the CMS. I’d rather have content/templates available as subordinate to my application. I’ve used that approach often enough now that I’ve grown to love it and consider it one of my most useful tools.&lt;/p&gt;  &lt;p&gt;In past implementations, I’ve used various templating languages. Back in the PHP days, I used Smarty and for the last few years, I’ve used &lt;a href="http://www.castleproject.org/others/nvelocity/index.html"&gt;NVelocity&lt;/a&gt;. It’s nice enough, but it’s different than the view engine we use for things like our back end admin portions of our platform. So, you end up jumping back and forth for syntax in views, depending on whether you’re working on the back end or the front end of the whole deal.&lt;/p&gt;  &lt;p&gt;Since we chose NVelocity, Microsoft added the “Razor” view engine to &lt;a href="http://www.asp.net/mvc"&gt;ASP.NET MVC&lt;/a&gt;. I’d seen several people mention that you can use it to do “in memory” templating like what I’m used to doing with NVelocity. I wanted to do a quick prototype to get a handle on how it works. Right after doing my &lt;a href="http://www.wynia.org/wordpress/2011/06/using-ironruby-as-a-scripting-engine-in-your-application"&gt;IronRuby prototype&lt;/a&gt;, I tackled a quick one using Razor to put together a templated email.&lt;/p&gt;  &lt;p&gt;It was really easy. And, since I was already in the groove, I recorded a screencast walkthrough of the prototype, such as it is. Here you go:&lt;/p&gt; &lt;iframe height="300" src="http://player.vimeo.com/video/24693006?title=0&amp;amp;byline=0&amp;amp;portrait=0" frameborder="0" width="400"&gt;&lt;/iframe&gt;  &lt;p&gt;&lt;a href="http://vimeo.com/24693006"&gt;Razor Templating for Emails, Etc.&lt;/a&gt; from &lt;a href="http://vimeo.com/user649695"&gt;J Wynia&lt;/a&gt; on &lt;a href="http://vimeo.com"&gt;Vimeo&lt;/a&gt;.&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.wynia.org/~ff/JWynia?a=SfNgefWATVA:s_ngVdSbz1Y:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/JWynia?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.wynia.org/~ff/JWynia?a=SfNgefWATVA:s_ngVdSbz1Y:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/JWynia?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.wynia.org/~ff/JWynia?a=SfNgefWATVA:s_ngVdSbz1Y:YwkR-u9nhCs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/JWynia?d=YwkR-u9nhCs" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/JWynia/~4/SfNgefWATVA" height="1" width="1"/&gt;</description><feedburner:origLink>http://www.wynia.org/wordpress/2011/06/using-the-razor-for-templating-outside-of-asp-net-mvc</feedburner:origLink></item><item><title>Using IronRuby as a Scripting Engine in Your Application</title><link>http://feeds.wynia.org/~r/JWynia/~3/yhGuJVuPRAA/using-ironruby-as-a-scripting-engine-in-your-application</link><pubDate>Sat, 04 Jun 2011 17:00:00 PDT</pubDate><guid isPermaLink="false">urn:uuid:b013af8a-a65b-47f3-b6ec-b78dfeb33573</guid><description>&lt;p&gt;So, one of the products I’m building needs several points of extensibility that can be dropped in. For a certain type of extension, we’re using &lt;a href="http://mef.codeplex.com/"&gt;MEF&lt;/a&gt;. I’ve been using MEF on my current client project for a while and have worked out many of its quirks. But, MEF still puts the author of extended logic in Visual Studio.&lt;/p&gt;  &lt;p&gt;On the other side, we’ve got a templating/snippet system that stores chunks of “views” for rendering pages, emails, etc. that provide a mechanism so that the entire look and feel of the application is stored in chunks in a database. They’re editable via a web app by people other than web developers. I’ve built similar for several projects and it works out really nicely.&lt;/p&gt;  &lt;p&gt;I want something closer to that templating solution for simple business logic and rules. There’s still a definite place in my architecture for MEF plugins. C# does heavy lifting well. However, I have long been intrigued by &lt;a href="http://www.ironruby.net/"&gt;IronRuby&lt;/a&gt; as an embedded scripting engine. So, this morning, I did a quick prototype to determine how much effort it was going to be to use it in the way I want.&lt;/p&gt;  &lt;p&gt;Turns out, it’s pretty damned easy. When I mentioned that I was doing this prototype, someone asked if I was going to blog it. It’s often easier to just record a quick explanation/walkthrough, so that’s what I did. The video is below.&lt;/p&gt; &lt;iframe height="300" src="http://player.vimeo.com/video/24689047?title=0&amp;amp;byline=0&amp;amp;portrait=0" frameborder="0" width="400"&gt;&lt;/iframe&gt;  &lt;p&gt;&lt;a href="http://vimeo.com/24689047"&gt;IronRuby Scripting in .NET&lt;/a&gt; from &lt;a href="http://vimeo.com/user649695"&gt;J Wynia&lt;/a&gt; on &lt;a href="http://vimeo.com"&gt;Vimeo&lt;/a&gt;.&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.wynia.org/~ff/JWynia?a=yhGuJVuPRAA:HlJvtLBZhsU:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/JWynia?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.wynia.org/~ff/JWynia?a=yhGuJVuPRAA:HlJvtLBZhsU:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/JWynia?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.wynia.org/~ff/JWynia?a=yhGuJVuPRAA:HlJvtLBZhsU:YwkR-u9nhCs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/JWynia?d=YwkR-u9nhCs" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/JWynia/~4/yhGuJVuPRAA" height="1" width="1"/&gt;</description><feedburner:origLink>http://www.wynia.org/wordpress/2011/06/using-ironruby-as-a-scripting-engine-in-your-application</feedburner:origLink></item><item><title>Building Some Software Products</title><link>http://feeds.wynia.org/~r/JWynia/~3/vfcFMPSt3G4/building-some-software-products</link><pubDate>Sat, 04 Jun 2011 17:00:00 PDT</pubDate><guid isPermaLink="false">urn:uuid:86767645-3275-4b8f-bb58-a3f5ba6d5740</guid><description>&lt;p&gt;Since 1999, I’ve been in the software consulting business, selling my skills, either directly or through an employer who was a consulting company of some sort. In fact, since graduating from college in February of 1998, only 18 months of my working history has been in any other context than consulting. &lt;/p&gt;  &lt;p&gt;I’ve built a decent business/career doing consulting and it’s clear that I can continue that for a good long while. However, as I headed into 2011, something was very clear to me. I need to have some ways of making money that aren’t me directly selling my time/skills.&lt;/p&gt;  &lt;p&gt;Over 2009-2010, I billed a LOT of hours. 4 x 40 hour weeks yields “fulltime” months of 160 hours. However, rather than seeing that number regularly, I’ve had 300 hour months and rarely bill fewer than 200. In doing so, I made pretty good money during that timeframe. But, it’s tiring and isn’t something I can keep up for very long.&lt;/p&gt;  &lt;p&gt;At this point, the only ways I can make more money selling my time directly is bill more hours (been there for 2-3 years now) or raise my rates. I am raising my rates, but the local market for contract dev work is weird for how it responds to rates.&amp;#160; Beyond that, I just don’t like having my options limited like that.&lt;/p&gt;  &lt;p&gt;So, I’m now working on 2 software products/services/platforms that I can use to make money via licensing, monthly fees, per-project billing, etc. In short, I’m building levers to harvest the reward of working smarter. &lt;/p&gt;  &lt;p&gt;So, what am I building?&lt;/p&gt;  &lt;p&gt;The biggest is a framework for building document/data workflow applications for businesses. It’s right in line with the kinds of stuff I’ve been doing in my consulting practice for years. And, that’s where that platform will be applied first. We’re going to use it as the starting point for consulting projects where we charge a licensing fee for the platform and then do the customization and extension as a more typical consulting project.&lt;/p&gt;  &lt;p&gt;I’m really excited for the possibilities this offers to do more value-based pricing, which gets the focus on ROI instead of clients focusing on the hourly rate.&amp;#160; &lt;/p&gt;  &lt;p&gt;If I told you that if you give me $10 and I guarantee that I’ll bring you $20 immediately after walking outside, you probably wouldn’t question it much. In fact, you’d probably start looking for as many $10 as you could find. Yet, somehow, when it comes to software consulting, people focus on the fact that $10 for 5 minutes’ work is $120/hr and they start negotiating like mad to reduce that number. &lt;/p&gt;  &lt;p&gt;Anyway, this product is shaping up nicely and I’m working hard to get it ready for my next consulting project. It’s .NET and is based on the tools I’ve come to rely on in the last few years: ASP.NET MVC and related tools.&lt;/p&gt;  &lt;p&gt;The other project is a web application for managing conferences/codecamps, etc. running on Google App Engine. There’s a gap for a really cohesive app in this space and we have a pretty good plan for building one that works well.&lt;/p&gt;  &lt;p&gt;So, while I’m cutting down on the hours billed, I’m still working like mad to get these things built, aiming for a day when the leverage starts paying off and I can shift my income away from selling my time. Until then, it’s nose to the grindstone ‘round here.&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.wynia.org/~ff/JWynia?a=vfcFMPSt3G4:LjctkUCCix0:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/JWynia?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.wynia.org/~ff/JWynia?a=vfcFMPSt3G4:LjctkUCCix0:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/JWynia?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.wynia.org/~ff/JWynia?a=vfcFMPSt3G4:LjctkUCCix0:YwkR-u9nhCs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/JWynia?d=YwkR-u9nhCs" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/JWynia/~4/vfcFMPSt3G4" height="1" width="1"/&gt;</description><feedburner:origLink>http://www.wynia.org/wordpress/2011/06/building-some-software-products</feedburner:origLink></item><item><title>Boiling Honey: Bochet Mead and Cyser</title><link>http://feeds.wynia.org/~r/JWynia/~3/h7Qb_vmK3nQ/boiling-honey-bochet-mead-and-cyser</link><pubDate>Sun, 17 Apr 2011 17:00:00 PDT</pubDate><guid isPermaLink="false">urn:uuid:2c6cf77e-a164-47b5-a14c-7371878b8753</guid><description>&lt;p&gt;So, in an &lt;a href="http://phobos.apple.com/WebObjects/MZStore.woa/wa/viewPodcast?id=75092679"&gt;archived episode&lt;/a&gt; of Basic Brewing Radio (from 2009), &lt;a href="http://en.wikipedia.org/wiki/Charlie_Papazian"&gt;Charlie Papazian&lt;/a&gt; referenced a magazine article he’d written about a &lt;a href="http://en.wikipedia.org/wiki/Mead"&gt;mead&lt;/a&gt; from the 40s labelled “1949 Gulval Bochet”. In the article, he described the amazing complex flavors. In the panel discussion, he asked the other meadmakers (all world class meadmakers) if any of them had made bochet. There was basically silence. Clearly none of them had ever made it. Given Charlie P’s description, and it’s apparent obscurity, my interest was suitably piqued.&lt;/p&gt;  &lt;p&gt;Bochet is “A mead where the honey is caramelized or burned separately before adding the water. Gives toffee, chocolate, marshmallow flavors.”&lt;/p&gt;  &lt;p&gt;Anyway, a few weeks later, while heating some sugar for priming some beer, I forgot about it on the stove and burnt it completely to charcoal. When I tweeted about that, someone asked if I was making bochet. Suitably reminded about the idea, I decided to dig into a it a bit and ran across this video of caramelizing/”burning” the honey:&lt;/p&gt; &lt;iframe title="YouTube video player" height="390" src="http://www.youtube.com/embed/LoPbfJ3BwwM" frameborder="0" width="480" allowfullscreen="allowfullscreen"&gt;&lt;/iframe&gt;  &lt;p&gt;Further intrigued, I decided to pilot a small batch on the stove. I used just a single pound of honey (it’s pretty heavy and a pound is less than you think) to see how it works, how much it foams, etc.&lt;/p&gt;  &lt;p&gt;I didn’t use an open fire, and with the controlled heat of a burner, it was pretty easy to turn the honey into a dark mahogany and it developed a wonderful caramelized flavor. I pitched that honey into a concoction of Trader Joe’s juices as a test, 1 gallon batch of cider (still fermenting). While that’s still not done, I was encouraged by the results.&lt;/p&gt;  &lt;p&gt;While I do want to make a full bochet mead, what I’m most interested in trying first is a &lt;a href="http://www.bjcp.org/2008styles/style25.php#1a"&gt;cyser&lt;/a&gt; made using the “burnt” honey. My ciders have all been getting pretty good reviews from those who’ve tried them and I’d like to enter something interesting into competitions for the cider categories (in particular the MN State Fair this summer).&lt;/p&gt;  &lt;p&gt;Today, I took the idea up to a full 5 gallon batch size and I’m really excited about the possibilities.&lt;/p&gt;  &lt;p&gt;Here’s what I did, in a nutshell.&lt;/p&gt;  &lt;p&gt;I took 5 pounds of clover honey, into my 10 gallon kettle, outside, over my &lt;a href="http://www.northernbrewer.com/brewing/brewing-equipment/burners/blichmann-floor-burner.html"&gt;Blichmann burner&lt;/a&gt;. Given how much honey foams when you boil it, I wanted to give it plenty of room. I probably would have been fine with my 5 gallon kettle, but better safe than sorry. &lt;/p&gt; &lt;a title="Boiling honey by J Wynia, on Flickr" href="http://www.flickr.com/photos/jwynia/5629411307/"&gt;&lt;img alt="Boiling honey" src="http://farm6.static.flickr.com/5067/5629411307_2c14397844.jpg" width="500" height="375" /&gt;&lt;/a&gt;   &lt;p&gt;I lit the burner and got the honey going. I let it go until I just started smelling burnt marshmallow and then killed the heat.&lt;/p&gt;  &lt;p&gt;In order to ensure that the honey would be able to be poured into the fermenter, I wanted to dilute it a bit, so I grabbed half a gallon of water and SLOWLY added it into the honey. If you decide to do this, be VERY careful in this step because it will bubble and spatter quite a bit as you add water. Boiled honey/sugar is like napalm if it gets on you and it sticks like glue, so be careful.&lt;/p&gt;  &lt;p&gt;Anyway, after I added the water, it was a nice dark liquid. In the bottom of the pot and on the sides, etc. were little chunks of solid, caramelized honey. Since I wanted that dissolved, I needed more liquid.&lt;/p&gt; &lt;a title="Boiling honey by J Wynia, on Flickr" href="http://www.flickr.com/photos/jwynia/5629409555/"&gt;&lt;img alt="Boiling honey" src="http://farm6.static.flickr.com/5185/5629409555_19bb5e7833.jpg" width="500" height="375" /&gt;&lt;/a&gt;   &lt;p&gt;I took one of the 4 gallons of apple juice destined for the final recipe and added it too. For most of my “off-season” ciders, I use “bottom shelf” apple juice. Anything that’s pasteurized and has no preservatives (except Vitamin C, that’s OK) works. I’ve been using the stuff I get from Costco for about $4/gallon.&lt;/p&gt;  &lt;p&gt;That gave me enough liquid to cover nearly all of the solid chunks of caramelized honey. I lit the burner to heat it a bit and stirred until all of the bits were dissolved.&lt;/p&gt;  &lt;p&gt;From there, it was pretty much like most of my ciders. I put the remaining 3 gallons of juice into the fermenter. On top of that, I poured the apple juice/bochet honey mixture and topped with a bit of water. If I get this recipe refined, I’d rather have that extra liquid be apple juice or apple juice concentrate, but I didn’t have any on hand.&lt;/p&gt;  &lt;p&gt;I was tempted to add some of the things I’ve gotten used to adding to my ciders: black tea, vanilla, etc. However, when entering cysers in competition, it’s only supposed to have apples and honey as the ingredients, and I have high hopes for this one, so I want it eligible for the cyser category and not just the “Open Mead” (which is basically the miscellaneous category).&lt;/p&gt;  &lt;p&gt;For yeast, I went with what’s become my “old standby” for ciders: Irish Ale yeast. While I really need to do some side-by-side experiments to determine for sure, my anecdotal experience says the Irish Ale Yeast compliments ciders well, so unless I have a good reason to use something else, Irish Ale it is.&lt;/p&gt;  &lt;p&gt;I pitched the yeast and set the carboy in my shower for the first 48 hours of fermentation. As you can see in the blurry photo below, the final pre-fermentation result is really dark. It will be interesting to see how it turns out.&lt;/p&gt; &lt;a title="Boiling honey by J Wynia, on Flickr" href="http://www.flickr.com/photos/jwynia/5629990138/"&gt;&lt;img alt="Boiling honey" src="http://farm6.static.flickr.com/5182/5629990138_dee43af57d.jpg" width="375" height="500" /&gt;&lt;/a&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.wynia.org/~ff/JWynia?a=h7Qb_vmK3nQ:wmXZcj9iMns:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/JWynia?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.wynia.org/~ff/JWynia?a=h7Qb_vmK3nQ:wmXZcj9iMns:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/JWynia?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.wynia.org/~ff/JWynia?a=h7Qb_vmK3nQ:wmXZcj9iMns:YwkR-u9nhCs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/JWynia?d=YwkR-u9nhCs" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/JWynia/~4/h7Qb_vmK3nQ" height="1" width="1"/&gt;</description><feedburner:origLink>http://www.wynia.org/wordpress/2011/04/boiling-honey-bochet-mead-and-cyser</feedburner:origLink></item><item><title>The &amp;ldquo;Previously On&amp;rdquo; Portion Of Production Problems</title><link>http://feeds.wynia.org/~r/JWynia/~3/fGPeu9EKbHM/the-ldquo-previously-on-rdquo-portion-of-production-problems</link><pubDate>Thu, 31 Mar 2011 17:00:00 PDT</pubDate><guid isPermaLink="false">urn:uuid:8e853667-fa79-4a0a-a187-82518c5655f2</guid><description>&lt;p&gt;Last week, a series of unfortunate events led to major problems in the production environment. The mad rush to get these problems diagnosed and fixed is something that’s pretty much part of the job when you are a software developer. It usually ends up with a steady stream of visitors to the cubicle of someone who can actually move the problem forward. &lt;/p&gt;  &lt;p&gt;During this last round, I noticed a pattern and it struck me as funny. &lt;/p&gt;  &lt;p&gt;If you watch TV dramas, you’re probably used to a little “recap” that happens at the beginning of an episode, particularly if it’s been a while since the last episode aired. It typically starts with the phrase “Previously On…”.&lt;/p&gt;  &lt;p&gt;That phrase kept running through my mind as I watched people join our little scrum trying to fix the production problem. Each new person would arrive and ask the same set of questions, which had already been answered 5 or 6 times over the course of the previous half hour.&lt;/p&gt;  &lt;p&gt;When you aren’t planning on this pattern appearing, it’s irritating. The thing is, that this is pretty much the way these things always go, so it shouldn’t be unexpected.&lt;/p&gt;  &lt;p&gt;Once you recognize the pattern, you can deal with it. When a new person joins the room, you just accept it, give the most concise “Previously On…” and move on to solving the problem. We started doing that and found that the time spent catching the new person up went much faster than when left to happen “organically”.&lt;/p&gt;  &lt;p&gt;I’m going to have to watch more carefully the next time to see if there are ways to make this even more efficient.&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.wynia.org/~ff/JWynia?a=fGPeu9EKbHM:GCsL4g-r3LA:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/JWynia?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.wynia.org/~ff/JWynia?a=fGPeu9EKbHM:GCsL4g-r3LA:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/JWynia?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.wynia.org/~ff/JWynia?a=fGPeu9EKbHM:GCsL4g-r3LA:YwkR-u9nhCs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/JWynia?d=YwkR-u9nhCs" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/JWynia/~4/fGPeu9EKbHM" height="1" width="1"/&gt;</description><feedburner:origLink>http://www.wynia.org/wordpress/2011/04/the-ldquo-previously-on-rdquo-portion-of-production-problems</feedburner:origLink></item><item><title>Domains Available</title><link>http://feeds.wynia.org/~r/JWynia/~3/ewia1RGRKxY/domains-available</link><pubDate>Wed, 30 Mar 2011 17:00:00 PDT</pubDate><guid isPermaLink="false">urn:uuid:bd0feec6-a8a5-495c-aa4b-ac46da330682</guid><description>&lt;p&gt;Like a lot of geeks and digerati, I register a lot of domains only to discover that I never get around to using them for anything. In the spirit of spring cleaning, I’m getting rid of some to cut my portfolio down. I could just release them, but figure the people I know (even just casually online) should get first crack at them. &lt;/p&gt;  &lt;p&gt;This list represents a batch of projects that I thought I’d get around to at some point. I am growing more and more willing to abandon such notions when it’s clear that I’m actually not going to get around to doing anything with the idea.&lt;/p&gt;  &lt;p&gt;Then there’s the effort I’m putting into ideas that I have a much better chance of actually executing on.&lt;/p&gt;  &lt;p&gt;Maybe you have a use for one of these domains. If you do, let me know and I’ll transfer it over to you instead of just deleting my claim on it.&lt;/p&gt;  &lt;p&gt;BetterIcedTea.com – was going to be for a niche blog about making good iced tea instead of just using Lipton tea bags&lt;/p&gt;  &lt;p&gt;AutodidactUniversity.com – I am largely self-educated. Wanted to build a site to help others do the same.&lt;/p&gt;  &lt;p&gt;Chainlink.me – aimed at being a not-all-that-short URL shortener.&lt;/p&gt;  &lt;p&gt;CraftBeerCooking.com – Intended for a blog of recipes using beer. Even started this one, but got nowhere.&lt;/p&gt;  &lt;p&gt;EmpireOfBlog.com – Back in the days of “pro” blogging and blog “networks”, I registered this.&lt;/p&gt;  &lt;p&gt;RepublicOfBlog.com – Same day. Same reason.&lt;/p&gt;  &lt;p&gt;FromTheCommons.com – This was intended to help highlight content licensed under Creative Commons licenses. Used it for a bit with subdomains like photos.fromthecommons.com to highlight CC-BY photos from Flickr. Like this idea, but I never invested enough time in it.&lt;/p&gt;  &lt;p&gt;FromTheCommons.org – Paired with the above for covering the common domains.&lt;/p&gt;  &lt;p&gt;HowToAskAGeek.com – I get sick of the poor way people ask technical questions. They don’t include the stuff that geeks need to actually help and often include lots of irrelevant info. Was planning on writing up a guide to asking technical questions of geeks.&lt;/p&gt;  &lt;p&gt;MakerExchange.com – Intended to be used for a StackOverflow for “maker” culture (see &lt;a href="http://makezine.com/"&gt;Make Magazine&lt;/a&gt;)&lt;/p&gt;  &lt;p&gt;MovieBits.org – Was going to be a blog of movie reviews with a binary rating system (i.e. a single bit): 1 if I would pay to see it if I had it to do over again, 0 if I wouldn’t.&lt;/p&gt;  &lt;p&gt;OpenFiction.org – Like FromTheCommons.com, intended to highlight CC-licensed fiction. Turned out to be really hard to find much of it to feature.&lt;/p&gt;  &lt;p&gt;So, just let me know in the comments that you want the domain. First come, first served. Anything not claimed by next week will just be released to the domain pool.&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.wynia.org/~ff/JWynia?a=ewia1RGRKxY:QU-FHtP4QzQ:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/JWynia?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.wynia.org/~ff/JWynia?a=ewia1RGRKxY:QU-FHtP4QzQ:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/JWynia?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.wynia.org/~ff/JWynia?a=ewia1RGRKxY:QU-FHtP4QzQ:YwkR-u9nhCs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/JWynia?d=YwkR-u9nhCs" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/JWynia/~4/ewia1RGRKxY" height="1" width="1"/&gt;</description><feedburner:origLink>http://www.wynia.org/wordpress/2011/03/domains-available</feedburner:origLink></item><item><title>Site Formatting</title><link>http://feeds.wynia.org/~r/JWynia/~3/K_cKmKRB53Q/site-formatting</link><pubDate>Mon, 28 Mar 2011 17:00:00 PDT</pubDate><guid isPermaLink="false">urn:uuid:da0f381b-455b-4cf2-b0dc-e1bd5da0e739</guid><description>Just a quick note to say I am aware of some of the formatting issues on some of the content on the site(mostly showing up as too much whitespace) . Because so many different tools put content into my Wordpress setup over the 7+ years I've been posting content here, some variations are causing problems because they relied on Wordpress &amp;quot;magic&amp;quot; to make things look right.   &lt;p&gt;Now that such magic is no longer involved, posts are looking strange. However, rather than attempting to re-invent the magic, I’m aiming to actually fix the HTML on the articles instead. That will fix the problem forever, but takes a bit longer.&lt;/p&gt;  &lt;p&gt;So, I’m just working my way through articles to get them all compliant.&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.wynia.org/~ff/JWynia?a=K_cKmKRB53Q:1dWSFnlc7O0:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/JWynia?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.wynia.org/~ff/JWynia?a=K_cKmKRB53Q:1dWSFnlc7O0:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/JWynia?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.wynia.org/~ff/JWynia?a=K_cKmKRB53Q:1dWSFnlc7O0:YwkR-u9nhCs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/JWynia?d=YwkR-u9nhCs" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/JWynia/~4/K_cKmKRB53Q" height="1" width="1"/&gt;</description><feedburner:origLink>http://www.wynia.org/wordpress/2011/03/site-formatting</feedburner:origLink></item><item><title>KnockoutJS Advanced Search Unknown Schema In ResultSet</title><link>http://feeds.wynia.org/~r/JWynia/~3/fjmeo1V_JtM/knockoutjs-advanced-search-unknown-schema-in-resultset</link><pubDate>Mon, 28 Mar 2011 17:00:00 PDT</pubDate><guid isPermaLink="false">urn:uuid:9cbc0e00-0453-464f-92f9-5589893a3e97</guid><description>&lt;p&gt;In my exploration of &lt;a href="http://knockoutjs.com"&gt;KnockoutJS&lt;/a&gt; for a variety of projects, I’ve had several instances of a tricky requirement. “Normally”, you know in advance the kind of object your AJAX/JSON search will bring back and you can template the output grid accordingly. &lt;/p&gt;  &lt;p&gt;However, in several of my projects, I have very good reasons and situations where the results coming back will be different columns, depending on the search criteria. That means that the KnockoutJS/jQuery template that displays the data can’t go after properties by their names.&lt;/p&gt;  &lt;p&gt;That proves tricky to figure out within the layers of frameworks involved. There are plenty of examples of how to do a procedural loop on the list of properties of a Javascript object, but that’s within a normal Javascript “foreach”, not the jQuery templates version. &lt;/p&gt;  &lt;p&gt;A normal Javascript foreach includes the name to be used to refer to the object that is the subject of each iteration. For the jQuery template/Knockout version, that variable isn’t visible. Instead, you just see {{each Collection}}.&lt;/p&gt;  &lt;p&gt;After a bit of digging, I finally found the information that a couple of “magic” variables are available in the loop: $value and $index. So, if you loop on a collection, the $value is the subject of each iteration. Then, if you take that a step further and loop on the non-array object, its *properties* become the collection and thus $index becomes the name of the property and $value is the value. &lt;/p&gt;  &lt;p&gt;Combined, that lets you dig through any unknown object (at least of known depth) and create a display template for it. This works for my need where server-side plugins will determine at runtime what the “shape” of the data being returned is, depending on the inputs.&lt;/p&gt;  &lt;p&gt;Here’s a KnockoutJS/jQuery template that displays the values out of an unknown object.&lt;/p&gt;  &lt;pre&gt;1:  &amp;lt;script type=&amp;quot;text/html&amp;quot;&amp;gt;&lt;br /&gt;2:       {{each resultRow}}&lt;br /&gt;3:            &amp;lt;tr&amp;gt;&lt;br /&gt;4:                 {{each $value}}&lt;br /&gt;5:                   &amp;lt;td data-bind=&amp;quot;text: $value&amp;quot;&amp;gt;&lt;br /&gt;6:                 {{/each}}&lt;br /&gt;7:            &amp;lt;/tr&amp;gt;&lt;br /&gt;8:       {{/each}}&lt;br /&gt;9:  &amp;lt;/script&amp;gt;&lt;/pre&gt;

&lt;p&gt;Here’s a version that uses the other “magic” variable: $index, which is the actual property name. &lt;/p&gt;

&lt;pre&gt;1:  &amp;lt;script type=&amp;quot;text/html&amp;quot;&amp;gt;&lt;br /&gt;2:       {{each resultRow}}&lt;br /&gt;3:            &amp;lt;tr&amp;gt;&lt;br /&gt;4:                 {{each $value}}&lt;br /&gt;5:                   &amp;lt;td data-bind=&amp;quot;text: $index&amp;quot;&amp;gt;&lt;br /&gt;6:                 {{/each}}&lt;br /&gt;7:            &amp;lt;/tr&amp;gt;&lt;br /&gt;8:       {{/each}}&lt;br /&gt;9:  &amp;lt;/script&amp;gt;&lt;/pre&gt;
&lt;style type="text/css"&gt;


.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }&lt;/style&gt;

&lt;p&gt;If you use both $index and $value (on multiple levels (which is when things get confusing)), you can build a grid out of any list of properties off an object.&lt;/p&gt;

&lt;p&gt;Also hugely helpful is the following combination of investigation tools. You can subscribe to the changes on a portion of your ViewModel and window.alert the new data. If you first call JSON.stringify on that data, you can get a nice, JSON version of the object. Take that JSON over to the &lt;a href="http://jsonformatter.curiousconcept.com"&gt;JSON Formatter&lt;/a&gt; and you can see it all nicely indented and organized.&lt;/p&gt;

&lt;p&gt;I find that to be really helpful given you don’t get code completion when writing templates to display this JSON data. The formatted JSON code gives you “documentation” for working off of.&lt;/p&gt;

&lt;p&gt;P.S. Sorry for all of the “quoted strings” in this article. It’s a bad habit, but they all seem necessary to me.&lt;/p&gt;

&lt;p&gt;P.P.S. This is another of those kind of article where I’m as much posting this for my future self as anything else. if it helps you too, great.&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.wynia.org/~ff/JWynia?a=fjmeo1V_JtM:HPfOQiya6Hw:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/JWynia?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.wynia.org/~ff/JWynia?a=fjmeo1V_JtM:HPfOQiya6Hw:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/JWynia?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.wynia.org/~ff/JWynia?a=fjmeo1V_JtM:HPfOQiya6Hw:YwkR-u9nhCs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/JWynia?d=YwkR-u9nhCs" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/JWynia/~4/fjmeo1V_JtM" height="1" width="1"/&gt;</description><feedburner:origLink>http://www.wynia.org/wordpress/2011/03/knockoutjs-advanced-search-unknown-schema-in-resultset</feedburner:origLink></item><item><title>Tweaked Site Engine Again</title><link>http://feeds.wynia.org/~r/JWynia/~3/2F4hGh2r8OA/tweaked-site-engine-again</link><pubDate>Sat, 19 Mar 2011 17:00:00 PDT</pubDate><guid isPermaLink="false">urn:uuid:33588a40-e5ee-4153-b5e1-c61ec2713c86</guid><description>&lt;p&gt;So, back this summer, I yanked this site off of Wordpress and put it on a temporary solution, powered by Lucene. That appeared to work well, but cracks started showing in that setup recently. See, this site is hosted on a cloud hosting environment. &lt;/p&gt;  &lt;p&gt;That works great for distributing load across servers. What it’s not so good at is handling changes to the files. When, like with Lucene, the data is stored directly in files within a site, as the individual servers in the cluster attempt to sync up, they get confused.&lt;/p&gt;  &lt;p&gt;That’s what’s been happening with this site. As I updated the Lucene indexes, all would be fine for a bit and then gradually, duplicate content started showing up on the site.&lt;/p&gt;  &lt;p&gt;I figured it was time to switch it back to being database-powered to get around that problem. I’ve converted the dominant content over and this should make it much easier to update the site. Only time will tell if that reduced friction will result in me writing more. One can hold hope, right?&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.wynia.org/~ff/JWynia?a=2F4hGh2r8OA:vGlZ7bMHPoU:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/JWynia?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.wynia.org/~ff/JWynia?a=2F4hGh2r8OA:vGlZ7bMHPoU:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/JWynia?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.wynia.org/~ff/JWynia?a=2F4hGh2r8OA:vGlZ7bMHPoU:YwkR-u9nhCs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/JWynia?d=YwkR-u9nhCs" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/JWynia/~4/2F4hGh2r8OA" height="1" width="1"/&gt;</description><feedburner:origLink>http://www.wynia.org/wordpress/2011/03/tweaked-site-engine-again</feedburner:origLink></item><item><title>MVVM Library For Javascript: KnockoutJS</title><link>http://feeds.wynia.org/~r/JWynia/~3/SfGyQ-bZNac/mvvm-library-for-javascript-knockoutjs</link><pubDate>Thu, 10 Mar 2011 16:00:00 PST</pubDate><guid isPermaLink="false">urn:uuid:ecb97936-d476-4e22-bb5c-5bc76124a244</guid><description>&lt;p&gt;The last few years, nearly every web application I’ve built has been using the &lt;a href="http://en.wikipedia.org/wiki/Model%E2%80%93view%E2%80%93controller"&gt;MVC pattern&lt;/a&gt;, and pretty much all of those using the &lt;a href="http://en.wikipedia.org/wiki/ASP.NET_MVC_Framework"&gt;ASP.NET MVC framework&lt;/a&gt;. I’ve worked out some repeatable patterns that make building a certain kind of application (straightforward CRUD and similar apps) very straightforward. That’s a good thing given how often the projects in front of me line up with that pattern.&lt;/p&gt;  &lt;p&gt;But, there’s another kind of application I’m wanting to build and being asked to build. It’s characterized with a more sophisticated UI that has “richer” interactions. While that could be steered in the direction of Silverlight, most of the time, my clients (and myself for a couple of upcoming applications) really want more devices targeted than Silverlight supports.&lt;/p&gt;  &lt;p&gt;That points to a Javascript/AJAX powered application. However, the looking at Silverlight I’ve done has highlighted how useful the &lt;a href="http://en.wikipedia.org/wiki/MVVM"&gt;MVVM pattern&lt;/a&gt; is for richer client applications. Just about the time I was thinking about whether or not that pattern might work well in Javascript, I listened to an episode of &lt;a href="http://www.hanselminutes.com/default.aspx"&gt;Hanselminutes&lt;/a&gt; where &lt;a href="http://www.hanselminutes.com/default.aspx?showID=262"&gt;he interviewed Steve Sanderson&lt;/a&gt; (who has done quite a bit of interesting work using ASP.NET MVC) about his MVVM Javascript framework: &lt;a href="http://knockoutjs.com"&gt;KnockoutJS&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;The framework drives the entire UI from a “view model” Javascript object. The UI/HTML is bound to that object and any changes to either are rippled through to all other bound elements in a really elegant way.&lt;/p&gt;  &lt;p&gt;I did a bit of digging into the framework, looking through the examples and it all just “clicked” with me. It makes so much sense for client-side heavy web apps. I’ve got some needs on client projects as well as 2 products that I’m 50% owner of underway right now where KnockoutJS is a really good fit, so I’m plowing ahead with it.&lt;/p&gt;  &lt;p&gt;That, of course, necessitated a prototype to get myself a little bit oriented to the framework. I figured a good place to start is with an “advanced search” screen. These are screens that are nearly always asked for in apps. But, with all of the moving parts, they’re actually tricky to get right and to include everything people want.&lt;/p&gt;  &lt;p&gt;What usually happens (at least what I’ve seen) is that most of the feature makes it in, but there’s always at least some that gets left out from the following list:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Multi-field search. Search by any of a variety of parameters.&lt;/li&gt;    &lt;li&gt;Sorting by any one of several columns.&lt;/li&gt;    &lt;li&gt;Pagination of resulting data. That includes varying page size.&lt;/li&gt;    &lt;li&gt;Dependent fields. If Field A changes, the options for Field B should change as well.&lt;/li&gt;    &lt;li&gt;Complete layout/content control of the data rows.&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;Given that that’s usually a screen that’s more tricky to build than your typical CRUD screen, I figured it would be a good prototype for me to determine how difficult KnockoutJS was going to be to work with.&lt;/p&gt;  &lt;p&gt;I started with a database I’ve got for generating data for other databases. For instance, if you join a few tables together, you can generate random “fake” users for your site, chosen by gender, give them semi-realistic fake addresses, etc.&lt;/p&gt;  &lt;p&gt;Part of that database is a list of cities of the world, the regions and countries they are in. So, I built an advanced search over the cities. &lt;/p&gt;  &lt;p&gt;I used ASP.NET MVC as the back end, writing a quick Entity Framework layer over the database. The search controller action itself is pretty hacky/basic code, but it served the purpose of letting me exercise KnockoutJS.&lt;/p&gt;  &lt;p&gt;Once I got going, I also got curious about how this might work with &lt;a href="http://www.odata.org/"&gt;OData&lt;/a&gt;. Since KnockoutJS in my prototype (and in general) is sending data to and fro in JSON and OData lets you put a URL-addressable layer over your data on the web, I wondered if you could expose an OData service directly to your KnockoutJS client-side app and let it access the data directly.&lt;/p&gt;  &lt;p&gt;Enter &lt;a href="http://datajs.codeplex.com/"&gt;DataJS&lt;/a&gt;, which handles the data out of OData and makes it more digestible as JSON. So, I included a view that did a more basic search directly to the OData service, which was a little different, but still fairly straightforward.&lt;/p&gt;  &lt;p&gt;All told, I’m really happy with how quickly this prototype came together and how well it works. This has me really excited to implement this in all 3 of the projects I’m juggling right now. If you’ve been dabbling with (or working more seriously with) rich UI Javascript web applications, KnockoutJS is something you should really check out.&lt;/p&gt;  &lt;p&gt;If you’d like to take a look at the code for my prototype, you can download it &lt;a href="http://dl.dropbox.com/u/2041744/SoftwareProjects/KnockoutAdvancedSearch.zip"&gt;here&lt;/a&gt;.&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.wynia.org/~ff/JWynia?a=SfGyQ-bZNac:rD-_AdTJ0x8:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/JWynia?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.wynia.org/~ff/JWynia?a=SfGyQ-bZNac:rD-_AdTJ0x8:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/JWynia?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.wynia.org/~ff/JWynia?a=SfGyQ-bZNac:rD-_AdTJ0x8:YwkR-u9nhCs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/JWynia?d=YwkR-u9nhCs" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/JWynia/~4/SfGyQ-bZNac" height="1" width="1"/&gt;</description><enclosure url="http://dl.dropbox.com/u/2041744/SoftwareProjects/KnockoutAdvancedSearch.zip" length="22941912" type="application/zip" /><media:content url="http://dl.dropbox.com/u/2041744/SoftwareProjects/KnockoutAdvancedSearch.zip" fileSize="22941912" type="application/zip" /><itunes:explicit>no</itunes:explicit><itunes:subtitle> The last few years, nearly every web application I’ve built has been using the MVC pattern, and pretty much all of those using the ASP.NET MVC framework. I’ve worked out some repeatable patterns that make building a certain kind of application (straightf</itunes:subtitle><itunes:summary> The last few years, nearly every web application I’ve built has been using the MVC pattern, and pretty much all of those using the ASP.NET MVC framework. I’ve worked out some repeatable patterns that make building a certain kind of application (straightforward CRUD and similar apps) very straightforward. That’s a good thing given how often the projects in front of me line up with that pattern. But, there’s another kind of application I’m wanting to build and being asked to build. It’s characterized with a more sophisticated UI that has “richer” interactions. While that could be steered in the direction of Silverlight, most of the time, my clients (and myself for a couple of upcoming applications) really want more devices targeted than Silverlight supports. That points to a Javascript/AJAX powered application. However, the looking at Silverlight I’ve done has highlighted how useful the MVVM pattern is for richer client applications. Just about the time I was thinking about whether or not that pattern might work well in Javascript, I listened to an episode of Hanselminutes where he interviewed Steve Sanderson (who has done quite a bit of interesting work using ASP.NET MVC) about his MVVM Javascript framework: KnockoutJS. The framework drives the entire UI from a “view model” Javascript object. The UI/HTML is bound to that object and any changes to either are rippled through to all other bound elements in a really elegant way. I did a bit of digging into the framework, looking through the examples and it all just “clicked” with me. It makes so much sense for client-side heavy web apps. I’ve got some needs on client projects as well as 2 products that I’m 50% owner of underway right now where KnockoutJS is a really good fit, so I’m plowing ahead with it. That, of course, necessitated a prototype to get myself a little bit oriented to the framework. I figured a good place to start is with an “advanced search” screen. These are screens that are nearly always asked for in apps. But, with all of the moving parts, they’re actually tricky to get right and to include everything people want. What usually happens (at least what I’ve seen) is that most of the feature makes it in, but there’s always at least some that gets left out from the following list: Multi-field search. Search by any of a variety of parameters. Sorting by any one of several columns. Pagination of resulting data. That includes varying page size. Dependent fields. If Field A changes, the options for Field B should change as well. Complete layout/content control of the data rows. Given that that’s usually a screen that’s more tricky to build than your typical CRUD screen, I figured it would be a good prototype for me to determine how difficult KnockoutJS was going to be to work with. I started with a database I’ve got for generating data for other databases. For instance, if you join a few tables together, you can generate random “fake” users for your site, chosen by gender, give them semi-realistic fake addresses, etc. Part of that database is a list of cities of the world, the regions and countries they are in. So, I built an advanced search over the cities. I used ASP.NET MVC as the back end, writing a quick Entity Framework layer over the database. The search controller action itself is pretty hacky/basic code, but it served the purpose of letting me exercise KnockoutJS. Once I got going, I also got curious about how this might work with OData. Since KnockoutJS in my prototype (and in general) is sending data to and fro in JSON and OData lets you put a URL-addressable layer over your data on the web, I wondered if you could expose an OData service directly to your KnockoutJS client-side app and let it access the data directly. Enter DataJS, which handles the data out of OData and makes it more digestible as JSON. So, I included a view that did a more basic search directly to the OData service, which was a little different, but still fairly straightforward. All told, </itunes:summary><feedburner:origLink>http://www.wynia.org/wordpress/2011/03/mvvm-library-for-javascript-knockoutjs</feedburner:origLink></item><item><title>Brewing For My Health</title><link>http://feeds.wynia.org/~r/JWynia/~3/NAmyDL_OaEU/brewing-for-my-health</link><pubDate>Sat, 02 Oct 2010 17:00:00 PDT</pubDate><guid isPermaLink="false">urn:uuid:3611f2e0-7abe-4dcd-aa38-76a89065a39d</guid><description>&lt;p&gt;In my last post, I mentioned that I've begun running and some other exercise as part of my quest to improve my health and decrease my risk of dying early. That activity was at the top of my list because it has a high return on investment and it's something where the effort IS the result. &lt;/p&gt;  &lt;p&gt;That's in contrast with &amp;quot;losing weight&amp;quot;, where complicated factors can mean that a tremendous effort can result in no change and no improvement in the metric that correlates with the risk of an early death. &lt;/p&gt;  &lt;p&gt;The distinction has moved &amp;quot;losing weight&amp;quot; lower on my list than it used to be.&lt;/p&gt;  &lt;p&gt;It's also responsible for the second item on my health improvement list: brewing and drinking beer. &lt;/p&gt;  &lt;p&gt;Based on my experience with our culture, that statement probably alarmed more than a few of you. However, I assure you that this is actually a well thought out decision, based on good evidence.&lt;/p&gt;  &lt;p&gt;It first came up when I was searching for the most impactful ways to reduce, in particular, heart disease. The following quote jumped out at me when I was digging around:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;The American Heart Association, based on the research evidence, concludes that the &amp;quot;Consumption of one or two drinks per day is associated with a reduction in risk of (coronary heart disease) approximately 30% to 50%.&amp;quot;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;Read that twice. If there was a new drug, from one of the major drug companies that, when taken daily, cuts your risk of dying from heart disease by UP TO HALF, they'd be shouting it from the hilltops. For aspirin, which has a large, similar effect, we *do* hear all of the time about how it will help and doctors *do* put an awful lot of people my age and older on the low-dosage aspirin. However, I've never had anyone in the medical profession even hint at these facts when it comes to alcohol and heart disease.&lt;/p&gt;  &lt;p&gt;So, I started digging deeper and kept coming up with more and more studies related to a reduction in risk of death. This &lt;a href="http://www2.potsdam.edu/hansondj/AlcoholAndHealth.html"&gt;article&lt;/a&gt; (on a university site) serves as a really nice summary of what the complete body of scientific study on this topic says. In short, the fact that I used to abstain from alcohol on all but a few days per year was actually one of my greatest risks for dying early.&lt;/p&gt;  &lt;p&gt;That summary doesn't just talk about the benefits related to heart disease, but a whole range of other diseases and illnesses like Alzheimer's and Parkinsons. In other words, that cliche of a 100 year old person being asked what their secret to longevity is, and answering &amp;quot;a daily shot of whisky/beer/sake&amp;quot; may not be far off from reality.&lt;/p&gt;  &lt;p&gt;Now, while I'm frustrated that this info wasn't shoved in front of me sooner, I understand why, even though I think that the reasons don't hold up.&lt;/p&gt;  &lt;p&gt;See, the benefits are in a weird &amp;quot;U&amp;quot; shaped curve. If you don't drink at all, you have a high risk of dying early. If you drink more than 3 drinks per day, you have a high risk of dying early (though from different things from what I understand). Only in this narrow little band of 1-3 drinks per day and only when that level is actually consistent (no saving them all up for one day), does the big benefit exist.&lt;/p&gt;  &lt;p&gt;I know that if this recommendation were generally made, people would miss the end of the &amp;quot;U&amp;quot; where drinking more than the 3 daily drinks eliminates the benefit. I know that's true, in part, because nearly every single person I've told about the benefits of moderate alcohol consumption has made the same joke: &amp;quot;Then I'm the healthiest person around because I drink a lot&amp;quot;.&lt;/p&gt;  &lt;p&gt;In online discussions of this research, I've seen people wonder &amp;quot;aloud&amp;quot; about &amp;quot;all of the people those drunk drivers kill&amp;quot; and heard people wonder aloud how I'll &amp;quot;function when I'm drunk all of the time&amp;quot;. We have a seriously strange relationship with alcohol in this country.&lt;/p&gt;  &lt;p&gt;Keep in mind that as an adult male of my weight and height, even under the newer 0.08 BAC standards, I'm OK to drive even after 5 beers and no waiting. Given that the benefits only exist at the 1-3 drinks per day level (and are therefore my exact level of drinking), I will never be in jeopardy for a driving violation. I won't ever reach anything resembling &amp;quot;drunk&amp;quot;.&lt;/p&gt;  &lt;p&gt;So, from about 2 months ago, I've been following the 1-3 drink regimen, like most humans historically and most places on earth other than the US.&lt;/p&gt;  &lt;p&gt;Of course, because of how I tend to do things, rather than just going to the liquor store and picking up my &amp;quot;prescription&amp;quot;, I've actually begun brewing my own beer and cider, a hobby that's proving enjoyable and paced appropriately given all of the other stuff I've got going on.&lt;/p&gt;  &lt;p&gt;It's one of the few hobbies you can be really &amp;quot;into&amp;quot; while only putting in a few hours once every few weeks. I'm on a quest to brew what I want to drink. I think I'm on the right trail.&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.wynia.org/~ff/JWynia?a=NAmyDL_OaEU:rIYv6Cz7X74:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/JWynia?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.wynia.org/~ff/JWynia?a=NAmyDL_OaEU:rIYv6Cz7X74:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/JWynia?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.wynia.org/~ff/JWynia?a=NAmyDL_OaEU:rIYv6Cz7X74:YwkR-u9nhCs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/JWynia?d=YwkR-u9nhCs" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/JWynia/~4/NAmyDL_OaEU" height="1" width="1"/&gt;</description><feedburner:origLink>http://www.wynia.org/wordpress/2010/10/brewing-for-my-health</feedburner:origLink></item><item><title>Get J Healthy. Attempt Number&amp;hellip; Who Knows?</title><link>http://feeds.wynia.org/~r/JWynia/~3/ZOm5N5z_sPA/get-j-healthy-attempt-number-hellip-who-knows</link><pubDate>Wed, 15 Sep 2010 17:00:00 PDT</pubDate><guid isPermaLink="false">urn:uuid:ad8887f5-b56e-4653-a7fb-ec0b7036d506</guid><description>&lt;p&gt;I have never been &amp;quot;in shape&amp;quot;. Sure, at various times in my life, I've been skinny, but, despite what lots of people want to make you think, skinny doesn't necessarily mean you're healthy.&lt;/p&gt;  &lt;p&gt;In elementary school, my lifelong dislike of participation in sports really bloomed and was joined by an ankle problem diagnosed as &amp;quot;tendonitis&amp;quot;. Looking back, I believe that it was probably mostly me not wanting to exercise and blowing a little pain out of proportion.&lt;/p&gt;  &lt;p&gt;Regardless, when the other kids were running, I spent 6th grade walking instead during gym class and getting even less exercise at recess.&lt;/p&gt;  &lt;p&gt;In junior high and high school, my dislike of exercise continued. I played a couple of seasons of basketball, and spent most of that time doing physical, hard work on farms. However, in all of those pursuits, my goal was to get them over with as soon as possible.&lt;/p&gt;  &lt;p&gt;Up through 10th grade, every so often, seemingly randomly, we'd be asked to do the physical fitness assessment with no real preparation beforehand. Thus, while I ran a mile a couple of times a year, I never did so easily and never in any sort of reasonable timeframe.&lt;/p&gt;  &lt;p&gt;In college, the closest I came to exercise was riding my bike to and from class (entirely because parking was too difficult), or walking around campus in my work study job doing desktop support for faculty and students.&lt;/p&gt;  &lt;p&gt;I've gained weight, lost it, gained it again, been diagnosed with high blood pressure, high cholesterol, etc. and am coming up on my 35th birthday. I clearly need to improve my health or start facing the fact that I'm going to live a shorter life than I want.&lt;/p&gt;  &lt;p&gt;So, I'm attempting for the Nth time to get healthy, but with a slightly different approach than in the past. Rather than just assuming that things like &amp;quot;lose some weight&amp;quot; are the right thing to do first, I am trying to do things rationally and aim for the low-hanging fruit.&lt;/p&gt;  &lt;p&gt;When I went looking for studies and numbers to make those decisions, I found that the level of discussion of risk factors for dying early isn't in line with how those factors actually line up in order of risk.&lt;/p&gt;  &lt;p&gt;There's a lot of digging to come up with what I did and a lot more for me to do yet that may revise this plan, but I'm working on the few that are the evidence in front of me says will deliver the greatest reduction in my early death and can be acted on immediately.&lt;/p&gt;  &lt;p&gt;The first thing I'm tackling is to get physically fit. When I read through the literature, it's clear that a fat person who is physically fit is much less likely to die early than one who's not physically fit. Plus, the studies also make it fairly clear that virtually no one loses and keeps weight off without exercise.&lt;/p&gt;  &lt;p&gt;So, the beginning of this long journey is to get physically fit. But, doing what?&lt;/p&gt;  &lt;p&gt;Basically, I hate pretty much all forms of exercise. So, I approached this logically as well. Anthropologists say that before human beings invented stone tools, our primary biological advantages consisted of 2 things: our ability to strategize and our ability to walk and run all day long and wear out our target prey.&lt;/p&gt;  &lt;p&gt;If there's one physical activity that human beings seem built for, it's walking and running. It also seems to be the very definition of &amp;quot;physically fit&amp;quot; to be able to run reasonable distances and for reasonable amounts of time. This is confirmed by the fact that the &lt;a href="http://usmilitary.about.com/od/army/a/afpt.htm"&gt;US military uses a 3 mile run&lt;/a&gt; (along with a couple of other things) to determine physical fitness for officers and enlisted alike right up until retirement at 62+.&lt;/p&gt;  &lt;p&gt;As such, it strikes me as a reasonable metric as a goal. So, I'm aiming to hit and maintain the minimum for my age. I'm starting with the running part.&lt;/p&gt;  &lt;p&gt;I started by using the plan at &lt;a href="http://www.coolrunning.com/engine/2/2_3/181.shtml"&gt;Couch to 5K&lt;/a&gt; and am actually up to running 1.5 miles at a time over 20 minutes. For a bit in the first few weeks, my shins hurt (even on my off days), but other than that, despite my current weight of 262 pounds, my knees don't hurt, etc. at all.&lt;/p&gt;  &lt;p&gt;I believe this is due in large part to learning some proper form and no longer landing on my heels when running. See this video for the difference.&lt;/p&gt; &lt;object width="640" height="385"&gt;&lt;param name="movie" value="http://www.youtube.com/v/b3Nt4WgQed8?fs=1&amp;amp;hl=en_US"&gt;&lt;/param&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;/param&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/b3Nt4WgQed8?fs=1&amp;amp;hl=en_US" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="640" height="385"&gt;&lt;/embed&gt;&lt;/object&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;At any rate, there are a few other things I'm doing on this journey toward living better, and hopefully, I'll share more of them soon. In the mean time, I keep increasing my running time aiming at that 3 mile distance in reasonable time.&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.wynia.org/~ff/JWynia?a=ZOm5N5z_sPA:_LlSzuCpDDE:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/JWynia?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.wynia.org/~ff/JWynia?a=ZOm5N5z_sPA:_LlSzuCpDDE:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/JWynia?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.wynia.org/~ff/JWynia?a=ZOm5N5z_sPA:_LlSzuCpDDE:YwkR-u9nhCs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/JWynia?d=YwkR-u9nhCs" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/JWynia/~4/ZOm5N5z_sPA" height="1" width="1"/&gt;</description><enclosure url="http://www.youtube.com/v/b3Nt4WgQed8?fs=1&amp;amp;hl=en_US" length="1071" type="application/x-shockwave-flash" /><media:content url="http://www.youtube.com/v/b3Nt4WgQed8?fs=1&amp;amp;hl=en_US" fileSize="1071" type="application/x-shockwave-flash" /><itunes:explicit>no</itunes:explicit><itunes:subtitle> I have never been &amp;quot;in shape&amp;quot;. Sure, at various times in my life, I've been skinny, but, despite what lots of people want to make you think, skinny doesn't necessarily mean you're healthy. In elementary school, my lifelong dislike of participati</itunes:subtitle><itunes:summary> I have never been &amp;quot;in shape&amp;quot;. Sure, at various times in my life, I've been skinny, but, despite what lots of people want to make you think, skinny doesn't necessarily mean you're healthy. In elementary school, my lifelong dislike of participation in sports really bloomed and was joined by an ankle problem diagnosed as &amp;quot;tendonitis&amp;quot;. Looking back, I believe that it was probably mostly me not wanting to exercise and blowing a little pain out of proportion. Regardless, when the other kids were running, I spent 6th grade walking instead during gym class and getting even less exercise at recess. In junior high and high school, my dislike of exercise continued. I played a couple of seasons of basketball, and spent most of that time doing physical, hard work on farms. However, in all of those pursuits, my goal was to get them over with as soon as possible. Up through 10th grade, every so often, seemingly randomly, we'd be asked to do the physical fitness assessment with no real preparation beforehand. Thus, while I ran a mile a couple of times a year, I never did so easily and never in any sort of reasonable timeframe. In college, the closest I came to exercise was riding my bike to and from class (entirely because parking was too difficult), or walking around campus in my work study job doing desktop support for faculty and students. I've gained weight, lost it, gained it again, been diagnosed with high blood pressure, high cholesterol, etc. and am coming up on my 35th birthday. I clearly need to improve my health or start facing the fact that I'm going to live a shorter life than I want. So, I'm attempting for the Nth time to get healthy, but with a slightly different approach than in the past. Rather than just assuming that things like &amp;quot;lose some weight&amp;quot; are the right thing to do first, I am trying to do things rationally and aim for the low-hanging fruit. When I went looking for studies and numbers to make those decisions, I found that the level of discussion of risk factors for dying early isn't in line with how those factors actually line up in order of risk. There's a lot of digging to come up with what I did and a lot more for me to do yet that may revise this plan, but I'm working on the few that are the evidence in front of me says will deliver the greatest reduction in my early death and can be acted on immediately. The first thing I'm tackling is to get physically fit. When I read through the literature, it's clear that a fat person who is physically fit is much less likely to die early than one who's not physically fit. Plus, the studies also make it fairly clear that virtually no one loses and keeps weight off without exercise. So, the beginning of this long journey is to get physically fit. But, doing what? Basically, I hate pretty much all forms of exercise. So, I approached this logically as well. Anthropologists say that before human beings invented stone tools, our primary biological advantages consisted of 2 things: our ability to strategize and our ability to walk and run all day long and wear out our target prey. If there's one physical activity that human beings seem built for, it's walking and running. It also seems to be the very definition of &amp;quot;physically fit&amp;quot; to be able to run reasonable distances and for reasonable amounts of time. This is confirmed by the fact that the US military uses a 3 mile run (along with a couple of other things) to determine physical fitness for officers and enlisted alike right up until retirement at 62+. As such, it strikes me as a reasonable metric as a goal. So, I'm aiming to hit and maintain the minimum for my age. I'm starting with the running part. I started by using the plan at Couch to 5K and am actually up to running 1.5 miles at a time over 20 minutes. For a bit in the first few weeks, my shins hurt (even on my off days), but other than that, despite my current weight of 262 pounds, my knees don't hurt, etc. at all. I believe this i</itunes:summary><feedburner:origLink>http://www.wynia.org/wordpress/2010/09/get-j-healthy-attempt-number-hellip-who-knows</feedburner:origLink></item><item><title>An Open Source Admin HTML/CSS Template: Benevolent Dictator</title><link>http://feeds.wynia.org/~r/JWynia/~3/P8DgITWDBaM/an-open-source-admin-html-css-template-benevolent-dictator</link><pubDate>Sat, 07 Aug 2010 17:00:00 PDT</pubDate><guid isPermaLink="false">urn:uuid:90c66a79-e022-40e8-bb80-906b7adf8397</guid><description>&lt;div style="margin: 15px; float: right"&gt;&lt;a title="BenevolentDictator by J Wynia, on Flickr" href="http://www.flickr.com/photos/jwynia/4873371409/"&gt;&lt;img border="0" alt="BenevolentDictator" src="http://farm5.static.flickr.com/4140/4873371409_e5d46fcdc1_m.jpg" width="240" height="199" /&gt;&lt;/a&gt; &lt;/div&gt;  &lt;p&gt;Anyone who has done web application development &amp;quot;behind the firewall&amp;quot; has been asked to put together &amp;quot;a basic admin screen&amp;quot; for managing a work queue or other basic utility task.&lt;/p&gt;  &lt;p&gt;I know I’ve built so many of them I’ve lost count at this point. And there’s this thing that pops up over and over again as a trend: no one ever wants to spend time or money on a visual design for them.&lt;/p&gt;  &lt;p&gt;It makes sense, really. These apps are often quickly thrown together and frequently for really temporary purposes or in situations where the goal is just getting something working to keep people moving forward on the problem these apps solve. &lt;/p&gt;  &lt;p&gt;From that perspective, I completely get why an internal design team or outside design firm isn’t ever engaged for these kinds of projects. &lt;/p&gt;  &lt;p&gt;Unfortunately, there’s another trend I’ve noticed on these apps that makes that disregard for visual design a problem. Rightly or wrongly, people judge these apps largely by how they look. So, while the developer is told to &amp;quot;not worry&amp;quot; about how it looks and &amp;quot;just put something basic together&amp;quot; , as soon as people start using the less than attractive version most of us developers put together, they invariably say things about the app that are less than flattering. &lt;/p&gt;  &lt;p&gt;I dislike it, but all of the evidence says that people do judge things by how they look. Even if it works exactly like it should, if it looks clunky, users will think it *is* clunky.&lt;/p&gt;  &lt;p&gt;Even if you, as a dev, have good design skills (and I like to think I have at least mediocre design skills), there often isn't any time to apply them to these kinds of apps. That combination of circumstances led me, quite a while ago, to look for a decent template that I could apply to all of these kinds of apps to make them look at least &amp;quot;decent&amp;quot; while not having to spend any project time doing so.&lt;/p&gt;  &lt;p&gt;Thus began a frustrating quest.&lt;/p&gt;  &lt;p&gt;I looked on some of the usual places I'd looked for CSS templates before: &lt;a href="http://www.oswd.org/"&gt;OSWD&lt;/a&gt;, &lt;a href="http://www.freecsstemplates.org/"&gt;Free CSS Templates&lt;/a&gt;, etc. and didn't find much. Sure, there were hundreds of blog-like templates, but nothing that really worked for the kinds of &amp;quot;admin&amp;quot; apps I get asked to build. Then I ran across &lt;a href="http://themeforest.net/"&gt;Theme Forest&lt;/a&gt; and thought I'd finally found my solution. &lt;/p&gt;  &lt;p&gt;They've quickly built up a pretty extensive section of exactly this kind of admin theme. And, I've bought about half of them. Really. You should see this &amp;quot;themeforest&amp;quot; folder on my hard drive. It's packed with them.&lt;/p&gt;  &lt;p&gt;So, having bought so many of them, which one do I recommend? None of them.&lt;/p&gt;  &lt;p&gt;Each one in turn ended up driving me nuts and proving to be very difficult to use in the very place they're intended to be used: applications.&lt;/p&gt;  &lt;p&gt;While they look like they'd be just the thing you'd need in these situations, for whatever reason (I don't want to speculate on what's driving this reality), they're structured in ways that make building applications using them frustrating.&lt;/p&gt;  &lt;p&gt;As a general rule, whatever framework you're using to build your app, you've probably got various bits of code responsible for generating different portions of pages. You've probably got a loop of some sort that generates the menu, etc. The problem with many of these templates is that they spread out the responsibility for a given chunk of HTML too far apart in the file.&lt;/p&gt;  &lt;p&gt;In several cases, i tried to add a subsection or move a few things around only to discover that these templates fought me the entire way.&lt;/p&gt;  &lt;p&gt;So, a few months ago, I took a few hours to see if I could come up with something on my own that I could share with the world. I was surprisingly happy with the results and put in a bit more effort on it, and have now used it on a couple of quick apps, ironing out kinks in the process.&lt;/p&gt;  &lt;p&gt;The theme is called &lt;a href="http://github.com/jwynia/BenevolentDictator"&gt;Benevolent Dictator&lt;/a&gt; and I'm licensing it about as liberally as you can without making it public domain. Hopefully you can get some use out of it too.&lt;/p&gt;  &lt;p&gt;It's based on the grid framework: &lt;a href="http://www.blueprintcss.org/"&gt;Blueprint CSS&lt;/a&gt;, which makes the modular blocks easy to size. I've tried to include a little bit of all of the common stuff my apps need, as samples, but if there are widgets, blocks, etc. that you think are missing, please let me know. There's also a version with a dropdown &amp;quot;&lt;a href="http://www.useit.com/alertbox/mega-dropdown-menus.html"&gt;mega menu&lt;/a&gt;&amp;quot; that's proving useful in one of my current projects.&lt;/p&gt;  &lt;p&gt;The &lt;a href="http://github.com/jwynia/BenevolentDictator"&gt;github repository&lt;/a&gt; for it also includes a copy of some open source icon libraries that take up quite a bit of space, so if you don't need icons, just grab the .html and .css, etc. instead of cloning the whole repository.&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.wynia.org/~ff/JWynia?a=P8DgITWDBaM:0zt_ZJ-7SeU:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/JWynia?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.wynia.org/~ff/JWynia?a=P8DgITWDBaM:0zt_ZJ-7SeU:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/JWynia?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.wynia.org/~ff/JWynia?a=P8DgITWDBaM:0zt_ZJ-7SeU:YwkR-u9nhCs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/JWynia?d=YwkR-u9nhCs" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/JWynia/~4/P8DgITWDBaM" height="1" width="1"/&gt;</description><feedburner:origLink>http://www.wynia.org/wordpress/2010/08/an-open-source-admin-html-css-template-benevolent-dictator</feedburner:origLink></item><item><title>Recipe: J’s Drunken Baked Beans</title><link>http://feeds.wynia.org/~r/JWynia/~3/gtGKJq4SDGk/recipe-j-drunken-baked-beans</link><pubDate>Thu, 22 Jul 2010 17:00:00 PDT</pubDate><guid isPermaLink="false">urn:uuid:972fb6a7-2542-4c03-a783-ab4bd68c87d5</guid><description>&lt;div style="border-bottom: black 2px solid; text-align: center; border-left: black 2px solid; padding-bottom: 3px; font-style: italic; margin: 8px; padding-left: 5px; padding-right: 3px; display: inline; font-family: arial,helvetica; float: right; font-size: 0.75em; border-top: black 2px solid; border-right: black 2px solid; padding-top: 5px"&gt;&lt;a title="Guinness Beans by J Wynia, on Flickr" href="http://www.flickr.com/photos/jwynia/3956755962/"&gt;&lt;img style="border-bottom: black 1px solid; border-left: black 1px solid; padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; border-top: black 1px solid; border-right: black 1px solid; padding-top: 0px" border="0" alt="Guinness Beans" src="http://farm3.static.flickr.com/2435/3956755962_e8ffaff77a_m.jpg" width="240" height="180"&gt;&lt;/a&gt;&lt;br&gt;&lt;span style="text-align: right; display: block; color: black; font-weight: bold; text-decoration: none"&gt;photo by J&lt;/span&gt; &lt;/div&gt;
&lt;p&gt;As I’ve gotten more and more into using &lt;a href="http://www.wynia.org/wordpress/2009/05/smoking-some-pig-with-new-ceramic-cooker"&gt;my smoker&lt;/a&gt; to make BBQ, I started paying more attention to my side dishes. Among my favorites has always been baked beans.&lt;/p&gt;
&lt;p&gt;Unfortunately, when I went looking on recipe sites for inspiration, I discovered that a startlingly high percentage of the baked bean recipes are little more than cracking open a can of Bush’s Baked Beans and doctoring them in one way or another with additions.&lt;/p&gt;
&lt;p&gt;That’s fine, as far as it goes. However, I took it as a challenge to create my own recipe for baked beans from more “raw” ingredients. &lt;/p&gt;
&lt;p&gt;The result has had several outings now and every time, these beans have been a big hit. While I don’t make them the same way every time, the basic pattern is definitely holding up and everyone at the outings I’ve brought them to says they like ‘em.&lt;/p&gt;
&lt;p&gt;In the tradition of a lot of BBQ, I figured if I was going to make my own, they should have beer and whiskey in them. That results in some really interesting and complex flavors that I really like.&lt;/p&gt;
&lt;p&gt;The prep time is pretty quick, but then they sit in a crock pot for 24 hours. That sounds like a long time, but it’s really the last 12 of those hours when they really transform into what you’re after.&lt;/p&gt;
&lt;p&gt;Anyway, here’s the recipe. Any improvements and suggestions are welcome. This is for the large oval crock pot pictured above. If you only have one of the smaller, round crock pot/slow cookers, you’ll need to cut the recipe in half. &lt;/p&gt;
&lt;h2&gt;&lt;/h2&gt;
&lt;h2&gt;J’s Drunken Baked Beans&lt;/h2&gt;
&lt;p&gt;1/4 pound of bacon or salt pork&lt;br&gt;1 lb pork sausage&lt;br&gt;1 lb of diced onions&lt;br&gt;3T of diced garlic&lt;br&gt;2 lbs of dried great northern beans&lt;br&gt;1 29 oz can of diced tomatoes&lt;br&gt;1 6 oz can of tomato paste&lt;br&gt;2 cups of brown sugar (going to raise this to 2.5 cups next time)&lt;br&gt;4 cans of beer&lt;br&gt;2 shots of whiskey&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Dice and brown the bacon or salt pork and add it to the crock. 
&lt;li&gt;Brown the pork sausage and add it to the crock. 
&lt;li&gt;In the pork fat, sauté the onions and garlic and add them to the crock. 
&lt;li&gt;Add all but the beer and whiskey to the crock. 
&lt;li&gt;Add the whiskey. 
&lt;li&gt;Fill the crock with beer. 
&lt;li&gt;Put it on low for 24 hours. 
&lt;li&gt;Make sure that the beans stay covered in liquid or you’ll get a layer of crunchy beans on top.&lt;/li&gt;&lt;/ol&gt;
&lt;p&gt;That’s the general idea. From there, I usually do something different and play with it a little bit. Last weekend, when I made them, instead of the pork sausage, I used smoked pulled pork that I had in the freezer. I’ve made them with several different varieties of beer, but use Guinness most often (also works really well in beef stew). Same for the whiskey. I usually use an Irish whiskey, but have used bourbon instead and, while they taste slightly different, they all come out good.&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.wynia.org/~ff/JWynia?a=gtGKJq4SDGk:XvsJTPxjook:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/JWynia?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.wynia.org/~ff/JWynia?a=gtGKJq4SDGk:XvsJTPxjook:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/JWynia?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.wynia.org/~ff/JWynia?a=gtGKJq4SDGk:XvsJTPxjook:YwkR-u9nhCs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/JWynia?d=YwkR-u9nhCs" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/JWynia/~4/gtGKJq4SDGk" height="1" width="1"/&gt;</description><feedburner:origLink>http://www.wynia.org/wordpress/2010/07/recipe-j-drunken-baked-beans</feedburner:origLink></item><item><title>These Are The Best Years Of Your Life...</title><link>http://feeds.wynia.org/~r/JWynia/~3/aRBkLKFZAY4/06</link><pubDate>Sun, 13 Jun 2010 17:00:00 PDT</pubDate><guid isPermaLink="false">urn:uuid:f6a4352a-5594-4d74-8d52-9dbb015bc02b</guid><description>&lt;h5&gt;&lt;/h5&gt;Our words matter. The things we say to people and how we choose to say them reveal more than most of us are comfortable with. Paying attention to the words people use, has, more often than not, allowed me a better understanding of what's going on in a situation.

Because I pay a lot of attention to words and phrases, contemplating the implications and meanings wrapped up in them, there are some that really upset me when I hear them. Among the most upsetting is one that seems completely innocent at first. You probably heard this one when you were young and most likely have heard it said in your company later in life.

"These are the best years of your life. Enjoy them."

This is almost always uttered toward someone in high school or college from someone at least 10-15 years older. I can't think of a single non-ironic instance where that wasn't the case. I also can't think of a case where the person who uttered it had anything but good intentions when saying so. 

But, I hate this phrase and want to smack every person I hear say it.

Part of that reaction comes from some personal baggage. I kept this a secret for nearly 20 years, but when I was in high school, I attempted suicide. I put the barrel of a 20 gauge shotgun in my mouth and pulled the trigger. The only thing that saved me was the fact that the safety just barely stayed engaged.

I suddenly realized what I was doing and felt so bad about the problems I'd cause that I was even more depressed for a while, but never tried it again.

Hearing that phrase when you are so miserable you want to end your life is quite probably the most depressing thing you can hear. If true, the statement means that the moment of your greatest misery is as good as it's ever going to get. 

Fortunately, that statement is crap. 

Well, not 100%.

See, for the person saying it, based on their experience, it *is* true. I didn't understand this when I was young. For the person who says this, high school, college or whatever truly *was* the best time in their life and the rest has been downhill (that's sometimes even said out loud as a followup).

However, they always say it like it's a universal truth and that's why I hate it and the damage it causes. It steals hope for the future from kids like I was. It tells kids that life "just doesn't get any better", which can often be the most depressing thing a kid can hear.

I'm writing this post to counteract this phrase in whatever way I can. I'm 34 years old and I am far happier than I ever was in junior high, high school OR college. I've talked with MANY people just like me, for whom life gets better and better as they get older.

For those people and for me, those years were, in fact, the WORST years of our lives and life got so much better after they were over that you couldn't pay me to go back to re-live that time in my life.

If you're a kid who hears this said to you, don't despair. Feel sorry for the person who said it to you. Dream big for the life still ahead of you.

Whether or not these turn out to be the best years of your life is a determination to be made by one person: the 90 year old version of YOU. Your job is to make that determination as difficult as possible by making the best of every phase of life you can with what you're given.

P.S. If you are a person who says this, stop it. At best, the person you say it to will realize it just means that YOU really enjoyed that phase of life, leaving them to basically respond, "good for you", which isn't exactly great conversation. At worst, you destroy the last shreds of hope for someone who might be suffering silently, putting up a good front to fool you. I say that because when I finally shared my secret with friends and family recently, they were ALL surprised.&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.wynia.org/~ff/JWynia?a=aRBkLKFZAY4:kXhtTY6CQDw:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/JWynia?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.wynia.org/~ff/JWynia?a=aRBkLKFZAY4:kXhtTY6CQDw:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/JWynia?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.wynia.org/~ff/JWynia?a=aRBkLKFZAY4:kXhtTY6CQDw:YwkR-u9nhCs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/JWynia?d=YwkR-u9nhCs" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/JWynia/~4/aRBkLKFZAY4" height="1" width="1"/&gt;</description><feedburner:origLink>http://www.wynia.org/wordpress/2010/06</feedburner:origLink></item><item><title>Screencast: Entity Framework With MySQL</title><link>http://feeds.wynia.org/~r/JWynia/~3/aRBkLKFZAY4/06</link><pubDate>Mon, 31 May 2010 17:00:00 PDT</pubDate><guid isPermaLink="false">urn:uuid:66b8e63c-8a36-4f34-97f3-9dbb015bc904</guid><description>I've been using &lt;a href="http://msdn.microsoft.com/en-us/data/aa937723.aspx"&gt;Entity Framework&lt;/a&gt; for a client project. One can argue about whether it's the best thing going or not, but it does the job and for my SQL Server client projects, it's now my primary tool for ORM purposes.

For my personal projects, however, I often don't have cheap/ready access to SQL Server. However, MySQL, SQLite, PostgreSQL are not only available nearly everywhere, but solutions like &lt;a href="http://aws.amazon.com/rds/"&gt;Amazon's RDS&lt;/a&gt; are based on MySQL.

Ever since hearing that Entity Framework could work over nearly any &lt;a href="http://en.wikipedia.org/wiki/ADO.NET#Third-party_data_providers"&gt;ADO.NET data provider&lt;/a&gt;, I decided to do a few experiments to get a handle on where the edges are with Entity Framework over, in particular, MySQL, PostgreSQL and SQLite.

As I've also been trying to get more into user group speaking and screencasting, so I took this as an opportunity to put together a quick intro to Entity Framework over MySQL. Hopefully, more screencasts of a similar nature are in the pipeline soon.

&lt;object width="400" height="300"&gt;&lt;param name="allowfullscreen" value="true" /&gt;&lt;param name="allowscriptaccess" value="always" /&gt;&lt;param name="movie" value="http://vimeo.com/moogaloop.swf?clip_id=12199994&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" /&gt;&lt;embed src="http://vimeo.com/moogaloop.swf?clip_id=12199994&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" type="application/x-shockwave-flash" allowfullscreen="true" allowscriptaccess="always" width="400" height="300"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;p&gt;&lt;a href="http://vimeo.com/12199994"&gt;Entity Framework with MySQL: Part 1&lt;/a&gt; from &lt;a href="http://vimeo.com/user649695"&gt;J Wynia&lt;/a&gt; on &lt;a href="http://vimeo.com"&gt;Vimeo&lt;/a&gt;.&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.wynia.org/~ff/JWynia?a=aRBkLKFZAY4:AiF6QqQj0Y0:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/JWynia?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.wynia.org/~ff/JWynia?a=aRBkLKFZAY4:AiF6QqQj0Y0:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/JWynia?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.wynia.org/~ff/JWynia?a=aRBkLKFZAY4:AiF6QqQj0Y0:YwkR-u9nhCs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/JWynia?d=YwkR-u9nhCs" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/JWynia/~4/aRBkLKFZAY4" height="1" width="1"/&gt;</description><enclosure url="http://vimeo.com/moogaloop.swf?clip_id=12199994&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" length="-1" type="application/x-shockwave-flash" /><media:content url="http://vimeo.com/moogaloop.swf?clip_id=12199994&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" type="application/x-shockwave-flash" /><itunes:explicit>no</itunes:explicit><itunes:subtitle>I've been using Entity Framework for a client project. One can argue about whether it's the best thing going or not, but it does the job and for my SQL Server client projects, it's now my primary tool for ORM purposes. For my personal projects, however, I</itunes:subtitle><itunes:summary>I've been using Entity Framework for a client project. One can argue about whether it's the best thing going or not, but it does the job and for my SQL Server client projects, it's now my primary tool for ORM purposes. For my personal projects, however, I often don't have cheap/ready access to SQL Server. However, MySQL, SQLite, PostgreSQL are not only available nearly everywhere, but solutions like Amazon's RDS are based on MySQL. Ever since hearing that Entity Framework could work over nearly any ADO.NET data provider, I decided to do a few experiments to get a handle on where the edges are with Entity Framework over, in particular, MySQL, PostgreSQL and SQLite. As I've also been trying to get more into user group speaking and screencasting, so I took this as an opportunity to put together a quick intro to Entity Framework over MySQL. Hopefully, more screencasts of a similar nature are in the pipeline soon. Entity Framework with MySQL: Part 1 from J Wynia on Vimeo.</itunes:summary><feedburner:origLink>http://www.wynia.org/wordpress/2010/06</feedburner:origLink></item><item><title>Irish Soda Bread</title><link>http://feeds.wynia.org/~r/JWynia/~3/2NHhdC3aMnI/05</link><pubDate>Mon, 03 May 2010 17:00:00 PDT</pubDate><guid isPermaLink="false">urn:uuid:e2938758-10b6-4eed-9953-9dbb015bacdb</guid><description>Back this winter, I attended a fundraiser concert and silent auction for &lt;a href="http://www.centerforirishmusic.org/"&gt;The Center for Irish Music&lt;/a&gt;. One of the items up for bid was an afternoon learning to make traditional Irish soda bread. 

Always one to be interested when food gets mentioned, I bid on and won one of those afternoons. A few weeks ago, my turn came around and Shelly and I went over to St. Paul to make some bread.
&lt;div style="float:right;margin: 10px;border: solid black 1px;"&gt;
&lt;a href="http://www.flickr.com/photos/jwynia/4532919172/" title="Finished Irish Soda Bread by J Wynia, on Flickr"&gt;&lt;img src="http://farm5.static.flickr.com/4039/4532919172_c3bec62342_m.jpg" width="240" height="180" alt="Finished Irish Soda Bread" /&gt;&lt;/a&gt;
&lt;/div&gt;
For those who might like to make their own, here's what I learned.

&lt;h2&gt;Irish Soda Bread&lt;/h2&gt;
Preheat oven to 350F

Cooking spray (the Baking kind with flour *and* oil) a 9 inch round pan

4c flour
1/2 c sugar
1 tsp baking soda
2 1/2 tsp baking powder
1/4 tsp salt
1 stick of cold unsalted butter
2 cups raisins (optional)
1 egg
1 1/2 c buttermilk

Mix all of the dry ingredients (flour, baking powder and soda, salt) into a large bowl.

Using a pastry blender, "cut" the butter into the dry ingredients. What you're aiming to do here is slice the butter into tiny pieces and coat them with flour. The pastry blender makes this easy. You're done when the butter is in pea-sized pieces at the largest. Pre-slicing the butter into relatively small bits before putting it in the bowl helps here.

On to the wet ingredients. You use buttermilk here for 2 reasons: flavor and acidity. The flavor part is just that buttermilk has a wonderful, complex flavor in baked goods. On the acidity part, quick breads (as opposed to yeast breads) use chemical processes to provide the lift. Buttermilk is an acid and baking soda is a base, and when they come together, it's your basic 4th grade volcano science experiment.

Baking powder cheats a little bit because it includes both the acid AND the base in the same powder, but they don't come into chemical contact with each other until it gets wet (and a second reaction when it reaches a certain temperature, hence the "double-acting" on the label). Usually, they use something like a tiny amount of corn starch to keep them apart until the reaction is to be unleashed.

As baking powder wasn't invented until the middle of the 19th century, this recipe isn't the kind of traditional that goes back hundreds of years. Those would require all of the lift to come from the soda and buttermilk. However, 150 years of tradition is plenty good for me, so we go with the baking powder augmentation to help things out.

All of that is worth knowing, however, should you not have buttermilk on hand. Swapping out regular milk, for instance, won't bring any of the acid to the party, and you won't get as much lift. Dump in a teaspoon of regular vinegar and you'll put things back in balance.

Mix the egg and the buttermilk together and then add that to the dry mix. You may need more or less buttermilk depending on your flour and humidity. What you're after is a sticky, wet mass. If it pours like a batter, you've got way too much liquid and if there's dry flour in the bowl you don't have enough.

If you aren't particularly fond of raisins, leave 'em out or swap out for a handful of oatmeal or pump up the sugar beyond the half cup, and swap chocolate chips in for the raisins and make this a dessert bread.

Dump the mixture into the pre-greased pan and smooth out the top. Use a knife to cut an "X" into the top, which will help it split in an aesthetically pleasing way when it rises.

Bake for 45 minutes to an hour, until golden brown and a toothpick/knife inserted into the middle comes out clean.

Let it cool all of the way before slicing for best results. 

Serve warm with butter for amazing flavor. Otherwise, it makes a great side to soup, as part of a quick and tasty breakfast, etc. Enjoy.&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.wynia.org/~ff/JWynia?a=2NHhdC3aMnI:qmbcdLLiS6o:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/JWynia?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.wynia.org/~ff/JWynia?a=2NHhdC3aMnI:qmbcdLLiS6o:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/JWynia?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.wynia.org/~ff/JWynia?a=2NHhdC3aMnI:qmbcdLLiS6o:YwkR-u9nhCs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/JWynia?d=YwkR-u9nhCs" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/JWynia/~4/2NHhdC3aMnI" height="1" width="1"/&gt;</description><feedburner:origLink>http://www.wynia.org/wordpress/2010/05</feedburner:origLink></item><item><title>T4 Template For AppSettings Access In Config Files</title><link>http://feeds.wynia.org/~r/JWynia/~3/CwPfy_XZ4rk/04</link><pubDate>Mon, 19 Apr 2010 17:00:00 PDT</pubDate><guid isPermaLink="false">urn:uuid:0e6ac810-6bc7-4a37-80fe-9dbb015bb929</guid><description>If you've built even a basic .NET application, you've messed with App.config and Web.config files. And, if you needed more than the default entries/connection strings, you've added a section called AppSettings to hold your custom settings like so:

Then, if you looked anywhere online for how to access your setting, you almost certainly wrote something similar or identical to this:
[code language="csharp"]
var exportPath = ConfigurationSettings.AppSettings.Get(&amp;quot;ExportPath&amp;quot;);
[/code]

The problem is that, while I've seen that chunk of code literally hundreds if not thousands of times, I can recall nearly NO instances where it had much of anything for error handling around it. It doesn't handle renaming, removing or otherwise mucking with the config file. This and the related problems are often referred to as the "&lt;a href="http://en.wikipedia.org/wiki/Magic_string_%28programming%29"&gt;magic string&lt;/a&gt;" problem. And, if you're going to take on the downsides of statically typed languages (and there are definite downsides), you might as well get the compiler to act as a first level unit tester of everything you can reasonably do so for.

For quite a while, to help with this, I've created a class in every project with properties for everything I care about in the AppSettings section. Those properties called a method with a little bit of error handling that actually hits the config file. That moved all of the strings to that single class, threw useful errors when settings went missing and generally worked, but it required adding a new setting to both the config file and to the AppSettings.cs class.

That results in code to access your settings that looks like:
[code language="csharp"]
var exportPath = AppSettings.ExportPath;
[/code]

That was fine, but when I started using &lt;a href="http://mvccontrib.codeplex.com/wikipage?title=T4MVC"&gt;T4MVC&lt;/a&gt;, I knew I needed to convert my solution over to using &lt;a href="http://www.hanselman.com/blog/T4TextTemplateTransformationToolkitCodeGenerationBestKeptVisualStudioSecret.aspx"&gt;T4 templates&lt;/a&gt;.

It's worth noting that T4 templates, while they sit in your project, don't exist in the scope of your project, so if you want access to your project's config file from a .tt file, you have to do some more heavy lifting than you might first think. 

Fortunately, having worked with &lt;a href="http://subsonicproject.com"&gt;Subsonic&lt;/a&gt; 3.x's T4 templates quite a bit, I knew there was some stuff in there I could steal (they grab a bunch of stuff from the connection strings), and so I did.

A bit of trial and error later and now, anything that gets added to my AppSettings in the config file gets picked up when you run the T4 template (by right clicking in Visual Studio and choosing "Run Custom Tool").

If you want it for your own use, download it &lt;a href="http://dl.dropbox.com/u/2041744/SoftwareProjects/AppSettings.tt"&gt;here&lt;/a&gt;. Any suggestions or improvements are welcome.&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.wynia.org/~ff/JWynia?a=CwPfy_XZ4rk:P6Tx6vkyOTE:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/JWynia?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.wynia.org/~ff/JWynia?a=CwPfy_XZ4rk:P6Tx6vkyOTE:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/JWynia?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.wynia.org/~ff/JWynia?a=CwPfy_XZ4rk:P6Tx6vkyOTE:YwkR-u9nhCs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/JWynia?d=YwkR-u9nhCs" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/JWynia/~4/CwPfy_XZ4rk" height="1" width="1"/&gt;</description><enclosure url="http://dl.dropbox.com/u/2041744/SoftwareProjects/AppSettings.tt" length="4398" type="application/octet-stream" /><media:content url="http://dl.dropbox.com/u/2041744/SoftwareProjects/AppSettings.tt" fileSize="4398" type="application/octet-stream" /><itunes:explicit>no</itunes:explicit><itunes:subtitle>If you've built even a basic .NET application, you've messed with App.config and Web.config files. And, if you needed more than the default entries/connection strings, you've added a section called AppSettings to hold your custom settings like so: Then, i</itunes:subtitle><itunes:summary>If you've built even a basic .NET application, you've messed with App.config and Web.config files. And, if you needed more than the default entries/connection strings, you've added a section called AppSettings to hold your custom settings like so: Then, if you looked anywhere online for how to access your setting, you almost certainly wrote something similar or identical to this: [code language="csharp"] var exportPath = ConfigurationSettings.AppSettings.Get(&amp;quot;ExportPath&amp;quot;); [/code] The problem is that, while I've seen that chunk of code literally hundreds if not thousands of times, I can recall nearly NO instances where it had much of anything for error handling around it. It doesn't handle renaming, removing or otherwise mucking with the config file. This and the related problems are often referred to as the "magic string" problem. And, if you're going to take on the downsides of statically typed languages (and there are definite downsides), you might as well get the compiler to act as a first level unit tester of everything you can reasonably do so for. For quite a while, to help with this, I've created a class in every project with properties for everything I care about in the AppSettings section. Those properties called a method with a little bit of error handling that actually hits the config file. That moved all of the strings to that single class, threw useful errors when settings went missing and generally worked, but it required adding a new setting to both the config file and to the AppSettings.cs class. That results in code to access your settings that looks like: [code language="csharp"] var exportPath = AppSettings.ExportPath; [/code] That was fine, but when I started using T4MVC, I knew I needed to convert my solution over to using T4 templates. It's worth noting that T4 templates, while they sit in your project, don't exist in the scope of your project, so if you want access to your project's config file from a .tt file, you have to do some more heavy lifting than you might first think. Fortunately, having worked with Subsonic 3.x's T4 templates quite a bit, I knew there was some stuff in there I could steal (they grab a bunch of stuff from the connection strings), and so I did. A bit of trial and error later and now, anything that gets added to my AppSettings in the config file gets picked up when you run the T4 template (by right clicking in Visual Studio and choosing "Run Custom Tool"). If you want it for your own use, download it here. Any suggestions or improvements are welcome.</itunes:summary><feedburner:origLink>http://www.wynia.org/wordpress/2010/04</feedburner:origLink></item><item><title>The Ambiguous American Dream</title><link>http://feeds.wynia.org/~r/JWynia/~3/BT9tJ01B5dc/03</link><pubDate>Mon, 15 Mar 2010 17:00:00 PDT</pubDate><guid isPermaLink="false">urn:uuid:86e5243d-04f3-4718-ab54-9dbb015bc7c0</guid><description>I've recently started reading Seth Godin's new book &lt;a href="http://www.amazon.com/gp/product/1591843162?ie=UTF8&amp;tag=phpgeek-20&amp;linkCode=as2&amp;camp=1789&amp;creative=390957&amp;creativeASIN=1591843162"&gt;Linchpin&lt;/a&gt;&lt;img src="http://www.assoc-amazon.com/e/ir?t=phpgeek-20&amp;l=as2&amp;o=1&amp;a=1591843162" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" /&gt;. The general premise is one that I agree with and have read various articulations of over the last few years. Basically, the more your job resembles factory work (regardless of collar color, as many white collar jobs are just as interchangeable as "real" factory jobs), the riskier your situation is.

It's been clear to me that the era of the lifelong job with bi-directional loyalty was a historical fluke that died years ago, but not everyone noticed. Linchpin just spells out the logical conclusions of that reality and offers some guidance for what to do about it if you're on the short end of that particular shift.

&lt;div style="float: right; margin 15px;"&gt;&lt;a href="http://flickr.com/photos/95572727@N00/182191565" title="Fourth on Lake Austin"&gt;&lt;img src="http://farm1.static.flickr.com/69/182191565_0537107963_m.jpg" /&gt;&lt;/a&gt;&lt;/div&gt;

At any rate, you'll find much more articulate reviews of the book elsewhere. What prompted this post, however, is a reference Godin makes repeatedly that struck me oddly. He refers regularly to "The American Dream", using the following definition:

&lt;blockquote&gt;
"Do you remember the old American Dream?

It struck a chord with millions of people (in the United States and in the rest of the world, too). Here's how it goes:

Keep your head down
Follow instructions
Show up on time
Work hard
Suck it up

... you will be rewarded. As we've seen, that dream is over."
&lt;/blockquote&gt;

The reason is that I've never heard "The American Dream" described that way. Sure, I've heard the social contract he's talking about articulated by many people, but never with that label slapped on it.

The social contract he's talking about is one of those weird mid-20th century flukes that only really existed from the 1940's until the 1970's. Yes, that means that an entire generation or 2 of Baby Boomers and their kids saw their parents covered by that arrangement only to have it disappear as they entered the workforce.

But, I am one of them and always heard The American Dream articulated and described very differently. The understanding I've always had is far more entrepreneurial in nature. It frames America as a land of opportunity, where, despite where you come from, your social standing, your ethnicity (with some shameful exceptions), how much money you came from, etc. you can make something of yourself.

I'm curious if Seth's definition and understanding is now the prevailing understanding of the term. If so, that ambiguity in the meaning might say a lot about why many people claim to have lost faith in the idea.

However, I think that "The American Dream" is one of a class of phrases that are troublesome in a particular way. 

They're common to the point of cliche, but loaded with meaning and critical to identity. As such, people all have an immediate concept or set of concepts that pop into their heads when they hear these phrases. Because they're so common, however, everyone also assumes that everyone shares their definition. That's where the trouble starts because the actual definitions vary wildly, but you'd only know that if you ask people.

I think this is what's going on here. So, I'm curious what your definition is of "The American Dream". Here's mine.

America is a land of opportunity where someone can start with nothing: no social standing, no money, not speaking the language. That person can, through hard work, build a life for themselves and their family. They can own their own home, run a business and otherwise enjoy the prosperity that this country has to offer. And, that while pursuing that dream, the playing field will be kept level.

Is my definition the same as yours?&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.wynia.org/~ff/JWynia?a=BT9tJ01B5dc:D_54IKhnG_w:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/JWynia?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.wynia.org/~ff/JWynia?a=BT9tJ01B5dc:D_54IKhnG_w:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/JWynia?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.wynia.org/~ff/JWynia?a=BT9tJ01B5dc:D_54IKhnG_w:YwkR-u9nhCs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/JWynia?d=YwkR-u9nhCs" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/JWynia/~4/BT9tJ01B5dc" height="1" width="1"/&gt;</description><feedburner:origLink>http://www.wynia.org/wordpress/2010/03</feedburner:origLink></item><item><title>I Wish It Was Duck or Rabbit Season</title><link>http://feeds.wynia.org/~r/JWynia/~3/BT9tJ01B5dc/03</link><pubDate>Sat, 13 Mar 2010 16:00:00 PST</pubDate><guid isPermaLink="false">urn:uuid:e6fdc348-279c-4516-a4a3-9dbb015bc951</guid><description>&lt;p&gt;However, itÃ¢â‚¬â„¢s tax season in the USA. If you work as a W-2 employee, you still have a month to get the old 1040 filled out. For those of us who own corporations, even the single-owner Ã¢â‚¬Å“SÃ¢â‚¬Â corporations like mine, we have to get the corporate taxes filed by March 15.&lt;/p&gt;  &lt;p&gt;The result of that whole process turns into one number representing the profit or loss for my consulting company. And, in turn, thatÃ¢â‚¬â„¢s the amount I pay federal and state taxes on.&lt;/p&gt;  &lt;p&gt;Planning for that is one of the biggest concerns people have when they ask me questions about being self-employed for consulting/contracting work (along with Ã¢â‚¬Å“stabilityÃ¢â‚¬Â and what to do about health insurance). I have a very basic approach to the whole thing that ensures I always have enough funds to pay the taxes comfortably.&lt;/p&gt;  &lt;p&gt;First, since I do run my consulting as an Ã¢â‚¬Å“S corporationÃ¢â‚¬Â, the finances are completely separate. If you hire me to do some work, youÃ¢â‚¬â„¢ll be paying my company. I have checking accounts and credit cards specifically for the business and never, under ANY circumstances, use those for personal use.&lt;/p&gt;  &lt;p&gt;When it comes to business expenses, I only ever spend in completely above board ways. I will stand behind every business expense as being ethical to anyone who needs to care. ThatÃ¢â‚¬â„¢s a much higher standard than is generally required, but it means I never have to worry about it.&lt;/p&gt;  &lt;p&gt;IÃ¢â‚¬â„¢m sure IÃ¢â‚¬â„¢m missing out on some things I could expense, but as far as IÃ¢â‚¬â„¢m concerned itÃ¢â‚¬â„¢s not worth it. So, when money comes into the company, I pay for things like the web hosting, hardware (laptops, etc.), MSDN subscription and other software expenses, cell phone, etc.&lt;/p&gt;  &lt;p&gt;WhatÃ¢â‚¬â„¢s left over is destined for our household. HereÃ¢â‚¬â„¢s where youÃ¢â‚¬â„¢ve got to be careful. IÃ¢â‚¬â„¢ve seen more than a few people just write themselves a check for everything and move on, only to seriously regret it come tax time.&lt;/p&gt;  &lt;p&gt;The basic rule here is that every single dollar that goes from your company to you needs to go through one of 3 channels and taxes set aside. Either you pay it to yourself as a salary, you reimburse yourself for expenses or you pay it out as profit.&lt;/p&gt;  &lt;p&gt;For the salary payments, regular payroll taxes will apply and payroll services are usually the best way to handle it. The IRS requires that for businesses like mine you pay yourself a Ã¢â‚¬Å“reasonable salaryÃ¢â‚¬Â. I know of people who do software consulting and pay themselves $12,000 a year. ThatÃ¢â‚¬â„¢s not Ã¢â‚¬Å“reasonableÃ¢â‚¬Â and, while they may have gotten away with it, itÃ¢â‚¬â„¢s not something IÃ¢â‚¬â„¢m willing to risk.&lt;/p&gt;  &lt;p&gt;However, dollars paid out as profit arenÃ¢â‚¬â„¢t subject to Medicare/Social Security withholding, so thereÃ¢â‚¬â„¢s an incentive to minimize the portion that goes through as salary. I base my own salary on whatever a developer here on an H1B Visa would get paid. ThatÃ¢â‚¬â„¢s Ã¢â‚¬Å“reasonableÃ¢â‚¬Â for one federal program, so itÃ¢â‚¬â„¢s good enough for me, despite typically being lower than the job pays a citizen (a topic for a whole other post).&lt;/p&gt;  &lt;p&gt;Using a payroll service, you get a regular W-2 at the end of the year, which also makes things like applying for mortgages much easier than other forms of self-employment (itÃ¢â‚¬â„¢s stupid that paying myself as an employee makes it easier to get a loan, but reality is what it is). TheyÃ¢â‚¬â„¢ll send the money to the feds and any state entity that needs it.&lt;/p&gt;  &lt;p&gt;For the reimbursement, I usually only pay for my car mileage and health insurance (since Blue Cross insists itÃ¢â‚¬â„¢s paid by me as an individual and not by a business). Since those reimbursements go on the corporate books as expenses, this is the only money I pay myself that I donÃ¢â‚¬â„¢t set tax money aside, though for 2010, IÃ¢â‚¬â„¢m changing that behavior.&lt;/p&gt;  &lt;p&gt;For any other money I pay out, I take 40% of it and put it into a specific personal savings account that I call Ã¢â‚¬Å“Tax SavingsÃ¢â‚¬Â. That is its ONLY purpose. Why 40% instead of the 28% that my tax bracket calls for? Partly because I also will have to pay MN state taxes. However, this also works really well as a buffer in case I miscalculated something somewhere along the way and as a pretty good forced retirement savings plan.&lt;/p&gt;  &lt;p&gt;When I go to pay my taxes on April 15 (and working this way, youÃ¢â‚¬â„¢ll always owe), I get to write a check on funds that have been earning interest instead of sitting in Uncle SamÃ¢â‚¬â„¢s accounts all year. Any extra can be considered my Ã¢â‚¬Å“refundÃ¢â‚¬Â and I usually contribute it to my retirement accounts for the previous year. Because you can make those contributions up until April 15, this also lets me reduce the amount I owe.&lt;/p&gt;  &lt;p&gt;So, while I hate doing all of the paperwork and am never thrilled to send Uncle Sam that check, itÃ¢â‚¬â„¢s never a panic to figure out how to pay it and along the way I am helping out my retirement savings. Overall, I think itÃ¢â‚¬â„¢s a pretty good approach. Since it has those secondary benefits, IÃ¢â‚¬â„¢m going to start doing the 40% on the reimbursement money too. &lt;/p&gt;  &lt;p&gt;Since that 40% comes out immediately when I receive the money, I never really miss it, making the savings automatic and it adds up to more than you might think.&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.wynia.org/~ff/JWynia?a=BT9tJ01B5dc:PXZICAfqj3g:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/JWynia?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.wynia.org/~ff/JWynia?a=BT9tJ01B5dc:PXZICAfqj3g:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/JWynia?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.wynia.org/~ff/JWynia?a=BT9tJ01B5dc:PXZICAfqj3g:YwkR-u9nhCs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/JWynia?d=YwkR-u9nhCs" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/JWynia/~4/BT9tJ01B5dc" height="1" width="1"/&gt;</description><feedburner:origLink>http://www.wynia.org/wordpress/2010/03</feedburner:origLink></item><item><title>Copyright-Enabled Entitlement</title><link>http://feeds.wynia.org/~r/JWynia/~3/BT9tJ01B5dc/03</link><pubDate>Thu, 11 Mar 2010 16:00:00 PST</pubDate><guid isPermaLink="false">urn:uuid:52ae52cc-cdb2-4a9d-9f35-9dbb015bbc37</guid><description>There's a lot of discussion, a lot of books, a lot of magazine and newspaper articles, a lot of argument and just plain a lot of hot air expended on the fate of movies/music/TV/books and other "media". The rhetoric is heated, all sides have their respective nutjobs and my prediction is mostly that the argument will continue until the final result just emerges from the shadows irrespective of what the combatants have said.

In that argument, not a week goes by without hearing from a high-profile someone in one of those industries lashing out against the Internet, "kids today", lack of respect for their creative work, and otherwise bemoaning their situation to a journalist or just any microphone within earshot.

While I have plenty of opinions about the substance of those arguments (think much more Larry Lessig than Michael Eisner if you want to know), what strikes me about nearly every one of those "creatives" is the sense of &lt;a href='http://www.wynia.org/wordpress/2008/06/24/but-im-special/'&gt;entitlement&lt;/a&gt; that underlies their argument.

One such incident came from the widow of a 70's rock icon who was complaining that she was having a hard time making ends meet from the sales of his CD's, some 10+ years after his death. While I always find the loss of a spouse and parent from a family a tragedy, the fact that she *has* income other than a life insurance settlement puts her in some pretty privileged company.

Every single day in this country, regular working people who put in 2000+ hours a year doing things like building houses, cooking in restaurants, managing software projects, etc. have their lives tragically ended much sooner than their years dictate. They leave behind families who may get a small sum from life insurance (after expenses and debt are covered) and face the rest of their lives with no further income from that family member.

In nearly none of those situations (union or pension situations aside) is the remaining family going to the employer and saying, "Joe worked here for 10 years, putting in fulltime effort, so you need to keep paying us his salary for the next 90 years". If they did, they'd be laughed out of the office.

I'm curious how these specific kinds of work came to be privileged above all others. Why is a poem jotted on a napkin protected for decades after I die, but if I design and commission the construction of a building, it's not in the same way? It's all so odd.&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.wynia.org/~ff/JWynia?a=BT9tJ01B5dc:kozZXBhBy5A:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/JWynia?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.wynia.org/~ff/JWynia?a=BT9tJ01B5dc:kozZXBhBy5A:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/JWynia?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.wynia.org/~ff/JWynia?a=BT9tJ01B5dc:kozZXBhBy5A:YwkR-u9nhCs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/JWynia?d=YwkR-u9nhCs" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/JWynia/~4/BT9tJ01B5dc" height="1" width="1"/&gt;</description><feedburner:origLink>http://www.wynia.org/wordpress/2010/03</feedburner:origLink></item><media:rating>nonadult</media:rating></channel></rss>

