<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:blogger='http://schemas.google.com/blogger/2008' xmlns:georss='http://www.georss.org/georss' xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-8857175797509514644</id><updated>2024-09-08T13:29:50.294-05:00</updated><category term="css3"/><category term="opinion"/><category term="programming theory"/><category term="object-oriented programming"/><category term="tip"/><category term="code review"/><category term="coldfusion"/><category term="JavaScript"/><category term="UML"/><category term="Book Review"/><category term="Game Programming"/><category term="Ruby on Rails"/><category term="jQuery"/><category term="kotlin"/><category term="pattern"/><category term="teamwork"/><category term="3d"/><category term="HTML5"/><category term="JSON"/><category term="Tool Review"/><category term="Unit Testing"/><category term="architecture"/><category term="basic"/><category term="coldspring"/><category term="demo"/><category term="dependency injection"/><category term="gradle"/><category term="java 8"/><category term="music"/><category term="optimization"/><category term="presentation"/><title type='text'>Hit the Bits!</title><subtitle type='html'>One guy&#39;s bold adventures in the world of computer programming</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://www.hitthebits.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8857175797509514644/posts/default?redirect=false'/><link rel='alternate' type='text/html' href='http://www.hitthebits.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><link rel='next' type='application/atom+xml' href='http://www.blogger.com/feeds/8857175797509514644/posts/default?start-index=26&amp;max-results=25&amp;redirect=false'/><author><name>Dave</name><uri>http://www.blogger.com/profile/04658179796048189813</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiFjaApNT-n-QWalIJXdKPxIhRtmi9zzH2fRXwuwQt0ZlWEn_juFI6VAs_PULkmiFrqaLYmSpnKNPz0JbrKWp6LPDlSoU-L8Vn9Qe8HgB3hCDSQgLOueApnm6mRwg7VEQ/s220/profile-128x128.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>55</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-8857175797509514644.post-5748030323830048094</id><published>2017-12-04T11:30:00.000-06:00</published><updated>2017-12-04T11:30:00.186-06:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="music"/><category scheme="http://www.blogger.com/atom/ns#" term="opinion"/><title type='text'>Music for Coding</title><content type='html'>&lt;style&gt;hr { margin: 2em 0; }&lt;/style&gt;

&lt;p&gt;Writing good code takes concentration. As easily distracted as I am, I have to find ways to drown out the noise around me.  That&#39;s why when it&#39;s time to write code, I slap on my QC25 headphones and spin up the tunes. Today I thought I&#39;d share what I listen to.&lt;/p&gt;

&lt;p&gt;In order to stay focused, I need music that&#39;s not distracting - if there are lyrics or catchy melodies, it&#39;ll break my concentration.  So most of the time, I turn to video game music, because it&#39;s crafted to sit in the background.&lt;/p&gt;

&lt;p&gt;So without further delay, here are the albums that I listen to the most when I write code.&lt;/p&gt;

&lt;hr /&gt;

&lt;h2&gt;Child of Light&lt;/h2&gt;

&lt;p&gt;&lt;em&gt;Child of Light&lt;/em&gt; has an absolutely amazing soundtrack, with simple but intriguing arrangements that largely feature piano, cello, and other strings.  There are a variety of more intense songs mixed in, but overall the mood reflects the storybook art style of the game.  I&#39;m almost certain that I&#39;ve listened to this album more than any other album ever, because I listen to it almost every single day that I write code.&lt;/p&gt;

&lt;p&gt;The game was also a lot of fun - it&#39;s a simple RPG with characters that are likable, and a story that&#39;s immersive but not overly complex.&lt;/p&gt;

&lt;iframe seamless=&quot;&quot; src=&quot;https://bandcamp.com/EmbeddedPlayer/album=2789088897/size=large/bgcol=ffffff/linkcol=333333/tracklist=false/artwork=small/transparent=true/&quot; style=&quot;border: 0; height: 120px; width: 100%;&quot;&gt;&lt;a href=&quot;http://musique.coeurdepirate.com/album/child-of-light&quot;&gt;Child of Light by Coeur de pirate&lt;/a&gt;&lt;/iframe&gt;

&lt;hr /&gt;

&lt;h2&gt;Hollow Knight&lt;/h2&gt;

&lt;p&gt;I purchased the &lt;em&gt;Hollow Knight&lt;/em&gt; soundtrack just a few months ago, but it&#39;s quickly becoming one of my favorite albums to code to.  The mysterious nature of this soundtrack lends itself well to thinking, and it has just the right amount of action songs mixed in to keep you moving forward. This is another one that I&#39;ve started listening to almost every day.&lt;/p&gt;

&lt;iframe seamless=&quot;&quot; src=&quot;https://bandcamp.com/EmbeddedPlayer/album=2306704082/size=large/bgcol=ffffff/linkcol=333333/tracklist=false/artwork=small/transparent=true/&quot; style=&quot;border: 0; height: 120px; width: 100%;&quot;&gt;&lt;a href=&quot;http://christopherlarkin.bandcamp.com/album/hollow-knight-original-soundtrack&quot;&gt;Hollow Knight (Original Soundtrack) by Christopher Larkin&lt;/a&gt;&lt;/iframe&gt;

&lt;hr /&gt;

&lt;h2&gt;Ori and the Blind Forest&lt;/h2&gt;

&lt;p&gt;I&#39;ve you&#39;ve played &lt;em&gt;Ori and the Blind Forest&lt;/em&gt;, you know that the game is a masterpiece in almost every respect.  The music is absolutely commensurate with the breathtaking visual art of the game.&lt;p&gt;

&lt;p&gt;The music is more thematic than &lt;em&gt;Child of Light&lt;/em&gt;, so there are sections that draw my attention a bit more, but overall it&#39;s still a fantastic album to listen to when you write code.&lt;/p&gt;

&lt;iframe seamless=&quot;&quot; src=&quot;https://bandcamp.com/EmbeddedPlayer/album=3213044151/size=large/bgcol=ffffff/linkcol=333333/tracklist=false/artwork=small/transparent=true/&quot; style=&quot;border: 0; height: 120px; width: 100%;&quot;&gt;&lt;a href=&quot;http://garethcoker.bandcamp.com/album/ori-and-the-blind-forest-additional-soundtrack&quot;&gt;Ori and the Blind Forest (Additional Soundtrack) by Gareth Coker&lt;/a&gt;&lt;/iframe&gt;

&lt;hr /&gt;

&lt;h2&gt;Dust: An Elysian Tale&lt;/h2&gt;

&lt;p&gt;&lt;em&gt;Dust&lt;/em&gt; was an amazing game. The gameplay was addicting, and the world was immersive. And it was basically made all by a single guy - an artist named Dean Dodrill who decided to write a video game with XNA. The &lt;a href=&quot;https://www.gamasutra.com/view/feature/180520/postmortem_humble_hearts_dust_.php&quot;&gt;postmortem&lt;/a&gt; is an excellent read.&lt;/p&gt;

&lt;p&gt;The soundtrack was done by HyperDuck SoundWorks, and it&#39;s also a great album to code to. It&#39;s also got some tracks that are a bit more thematic, but overall still works well for writing code.&lt;/p&gt;

&lt;iframe seamless=&quot;&quot; src=&quot;https://bandcamp.com/EmbeddedPlayer/album=3553227058/size=large/bgcol=ffffff/linkcol=333333/tracklist=false/artwork=small/transparent=true/&quot; style=&quot;border: 0; height: 120px; width: 100%;&quot;&gt;&lt;a href=&quot;http://hyperduck.bandcamp.com/album/dust-an-elysian-tail-original-soundtrack&quot;&gt;Dust: An Elysian Tail - Original Soundtrack by HyperDuck SoundWorks&lt;/a&gt;&lt;/iframe&gt;

&lt;hr /&gt;

&lt;h2&gt;Nightsky&lt;/h2&gt;

&lt;p&gt;This one&#39;s not a video game soundtrack, but I still found it to be a great album for concentration.  Tracey Chattaway&#39;s &lt;em&gt;Nightsky&lt;/em&gt; album has songs that have a slow, steady, warm sound to them, which is fantastic when I need to slow down and think.&lt;/p&gt;

&lt;iframe seamless=&quot;&quot; src=&quot;https://bandcamp.com/EmbeddedPlayer/album=3079228776/size=large/bgcol=ffffff/linkcol=333333/tracklist=false/artwork=small/transparent=true/&quot; style=&quot;border: 0; height: 120px; width: 100%;&quot;&gt;&lt;a href=&quot;http://traceychattaway.bandcamp.com/album/nightsky&quot;&gt;Nightsky by Tracey Chattaway&lt;/a&gt;&lt;/iframe&gt;

&lt;hr /&gt;

&lt;h2&gt;How about you?&lt;/h2&gt;

So those are some of my favorite albums for concentration when I&#39;m writing code.  How about you?  What do you listen to?

</content><link rel='replies' type='application/atom+xml' href='http://www.hitthebits.com/feeds/5748030323830048094/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.hitthebits.com/2017/12/music-for-coding.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8857175797509514644/posts/default/5748030323830048094'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8857175797509514644/posts/default/5748030323830048094'/><link rel='alternate' type='text/html' href='http://www.hitthebits.com/2017/12/music-for-coding.html' title='Music for Coding'/><author><name>Dave</name><uri>http://www.blogger.com/profile/04658179796048189813</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiFjaApNT-n-QWalIJXdKPxIhRtmi9zzH2fRXwuwQt0ZlWEn_juFI6VAs_PULkmiFrqaLYmSpnKNPz0JbrKWp6LPDlSoU-L8Vn9Qe8HgB3hCDSQgLOueApnm6mRwg7VEQ/s220/profile-128x128.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8857175797509514644.post-2221736218276566752</id><published>2017-10-23T11:30:00.000-05:00</published><updated>2017-10-23T11:30:00.645-05:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="kotlin"/><title type='text'>My Latest Project: TypeAlias</title><content type='html'>&lt;!--&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEibczEcgcCiZXbpj1iieaIZZEy8pU5UWoT2Mjk6X-JmKuipnQzfjGFS6zLagDbObyzYV2hvzxPIfoaZ_aquPFcB6tlLTc_kglu4Ra3ZrCeZbXY109ZsbGjkwHJX_ltmBM9DI3HNXvfTaVM/s1600/typealias.png&quot; imageanchor=&quot;1&quot; style=&quot;clear: right; float: right; margin-bottom: 1em; margin-left: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEibczEcgcCiZXbpj1iieaIZZEy8pU5UWoT2Mjk6X-JmKuipnQzfjGFS6zLagDbObyzYV2hvzxPIfoaZ_aquPFcB6tlLTc_kglu4Ra3ZrCeZbXY109ZsbGjkwHJX_ltmBM9DI3HNXvfTaVM/s200/typealias.png&quot; width=&quot;200&quot; height=&quot;200&quot; data-original-width=&quot;256&quot; data-original-height=&quot;256&quot; /&gt;&lt;/a&gt;&lt;/div&gt;--&gt;

&lt;p&gt;There are lots of great reasons to explore new programming languages, even if you don&amp;#39;t end up using them in production.  I especially appreciate the new perspective that they give me.  And sometimes, I come across a language that ends up being a fantastic fit for the particular set of problems that I&amp;#39;m working on at the time.&lt;/p&gt;

&lt;p&gt;As I focused a lot of my development efforts on Android over the past year, I came to appreciate the benefits of &lt;a href=&quot;https://kotlinlang.org&quot;&gt;Kotlin&lt;/a&gt; quickly.  I liked it back when it was in beta a few years ago, and I put in enough time with the language to understand most of what it had to offer.&lt;/p&gt;

&lt;p&gt;But there&amp;#39;s &lt;/p&gt;&lt;a href=&quot;http://www.hitthebits.com/2017/10/my-latest-project-typealias.html#more&quot;&gt;Read more »&lt;/a&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.hitthebits.com/feeds/2221736218276566752/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.hitthebits.com/2017/10/my-latest-project-typealias.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8857175797509514644/posts/default/2221736218276566752'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8857175797509514644/posts/default/2221736218276566752'/><link rel='alternate' type='text/html' href='http://www.hitthebits.com/2017/10/my-latest-project-typealias.html' title='My Latest Project: TypeAlias'/><author><name>Dave</name><uri>http://www.blogger.com/profile/04658179796048189813</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiFjaApNT-n-QWalIJXdKPxIhRtmi9zzH2fRXwuwQt0ZlWEn_juFI6VAs_PULkmiFrqaLYmSpnKNPz0JbrKWp6LPDlSoU-L8Vn9Qe8HgB3hCDSQgLOueApnm6mRwg7VEQ/s220/profile-128x128.jpg'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEibczEcgcCiZXbpj1iieaIZZEy8pU5UWoT2Mjk6X-JmKuipnQzfjGFS6zLagDbObyzYV2hvzxPIfoaZ_aquPFcB6tlLTc_kglu4Ra3ZrCeZbXY109ZsbGjkwHJX_ltmBM9DI3HNXvfTaVM/s72-c/typealias.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8857175797509514644.post-2622959731481351273</id><published>2015-11-12T06:30:00.000-06:00</published><updated>2015-11-12T06:30:00.364-06:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="gradle"/><category scheme="http://www.blogger.com/atom/ns#" term="kotlin"/><title type='text'>Kotlin Gradle Blooper!</title><content type='html'>&lt;link href=&quot;https://googledrive.com/host/0B3uX9JgaoJYkWU9EaVRuTHBpaGs/prism.css&quot; rel=&quot;stylesheet&quot; /&gt;
&lt;script src=&quot;https://googledrive.com/host/0B3uX9JgaoJYkWU9EaVRuTHBpaGs/prism.js&quot;&gt;&lt;/script&gt;
&lt;p&gt;
This weekend I had a blast working through the &lt;a href=&quot;http://try.kotlinlang.org/&quot;&gt;Kotlin Koans&lt;/a&gt;, so I thought I&#39;d fire up my IDE and try my hand at porting one of my existing hobby projects from Groovy to Kotlin.
&lt;/p&gt;
&lt;p&gt;
As I began working on it, I was surprised to notice that some of the cool features from the Koans and other examples online weren&#39;t available to me in my project -- things like doing &lt;code&gt;MyClass::class.java&lt;/code&gt;, &lt;code&gt;listOf()&lt;/code&gt;, and even &lt;code&gt;forEach&lt;/code&gt; on my &lt;code&gt;List&amp;lt;&amp;gt;&lt;/code&gt; objects.
&lt;/p&gt;
&lt;p&gt;
My build.gradle file was including the &lt;a href=&quot;https://kotlinlang.org/docs/reference/using-gradle.html&quot;&gt;kotlin-gradle-plugin&lt;/a&gt;, of course, but if you want all the goodies, you&#39;ve got to also include the &lt;a href=&quot;https://kotlinlang.org/api/latest/jvm/stdlib/index.html&quot;&gt;Kotlin Standard Library&lt;/a&gt;:
&lt;/p&gt;
&lt;pre&gt;
&lt;code class=&quot;language-javascript&quot;&gt;
dependencies {
    compile &#39;org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version_number&#39;
}
&lt;/code&gt;
&lt;/pre&gt;

&lt;p&gt;
Naturally, the &lt;a href=&quot;https://kotlinlang.org/docs/reference/using-gradle.html#configuring-dependencies&quot;&gt;instructions&lt;/a&gt; for configuring dependencies for the Kotlin Gradle plugin say very clearly to include it, and they even give a full example.  I guess in my excitement I just skipped over that part! My bad, yo.
&lt;/p&gt;
&lt;p&gt;
So... if you&#39;re a Kotlin newb like me and your code seems to be missing some major Kotlinness, be sure to include the Standard Library!
&lt;/p&gt;
&lt;p&gt;
Leeds out.
&lt;/p&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.hitthebits.com/feeds/2622959731481351273/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.hitthebits.com/2015/11/kotlin-gradle-blooper.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8857175797509514644/posts/default/2622959731481351273'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8857175797509514644/posts/default/2622959731481351273'/><link rel='alternate' type='text/html' href='http://www.hitthebits.com/2015/11/kotlin-gradle-blooper.html' title='Kotlin Gradle Blooper!'/><author><name>Dave</name><uri>http://www.blogger.com/profile/04658179796048189813</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiFjaApNT-n-QWalIJXdKPxIhRtmi9zzH2fRXwuwQt0ZlWEn_juFI6VAs_PULkmiFrqaLYmSpnKNPz0JbrKWp6LPDlSoU-L8Vn9Qe8HgB3hCDSQgLOueApnm6mRwg7VEQ/s220/profile-128x128.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8857175797509514644.post-1739322130869367414</id><published>2014-05-01T03:00:00.000-05:00</published><updated>2014-05-01T03:00:05.900-05:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="basic"/><category scheme="http://www.blogger.com/atom/ns#" term="Game Programming"/><title type='text'>Happy Birthday, BASIC!</title><content type='html'>&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;div style=&quot;clear:right; float:right; margin-left:1em; margin-bottom:0em&quot;&gt;
&lt;img src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh2p5SjATvcKuuTdU-Lz7aqQfyZVOToXZy0rSVSN9d-S40jFeRRV_D_QD9F-gTAWnnoeS_23S047ym62XXBVzUCCTllsnLlJjqt8o6Gart56tVbqdGfGV0nYljEvG-Pu9oPuc7DXxKQGgQ/s350/cake.png&quot; style=&quot;box-shadow:none;&quot; alt=&quot;Birthday cake... worst pixel art ever!&quot;&gt;
&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;I haven&amp;#39;t written a lick of BASIC in years, now.  But because 2014 marks its 50th anniversary, I simply have to tip my hat to the language that introduced me to programming back when I was a kid. &lt;/p&gt;

&lt;p&gt;According to the wikipedia article for &lt;a href=&quot;http://en.wikipedia.org/wiki/Dartmouth_BASIC&quot;&gt;Dartmouth BASIC&lt;/a&gt;, May 1, 1964 is recorded as the date when Kemeny and McGeachie successfully fired off their first BASIC command.  As for me, I didn&amp;#39;t successfully fire off my first BASIC command until almost twenty years later.  I was &lt;/p&gt;&lt;a href=&quot;http://www.hitthebits.com/2014/05/happy-birthday-basic.html#more&quot;&gt;Read more »&lt;/a&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.hitthebits.com/feeds/1739322130869367414/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.hitthebits.com/2014/05/happy-birthday-basic.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8857175797509514644/posts/default/1739322130869367414'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8857175797509514644/posts/default/1739322130869367414'/><link rel='alternate' type='text/html' href='http://www.hitthebits.com/2014/05/happy-birthday-basic.html' title='Happy Birthday, BASIC!'/><author><name>Dave</name><uri>http://www.blogger.com/profile/04658179796048189813</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiFjaApNT-n-QWalIJXdKPxIhRtmi9zzH2fRXwuwQt0ZlWEn_juFI6VAs_PULkmiFrqaLYmSpnKNPz0JbrKWp6LPDlSoU-L8Vn9Qe8HgB3hCDSQgLOueApnm6mRwg7VEQ/s220/profile-128x128.jpg'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh2p5SjATvcKuuTdU-Lz7aqQfyZVOToXZy0rSVSN9d-S40jFeRRV_D_QD9F-gTAWnnoeS_23S047ym62XXBVzUCCTllsnLlJjqt8o6Gart56tVbqdGfGV0nYljEvG-Pu9oPuc7DXxKQGgQ/s72-c/cake.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8857175797509514644.post-6271374583002744208</id><published>2014-04-01T19:00:00.000-05:00</published><updated>2014-04-01T19:00:04.858-05:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="java 8"/><category scheme="http://www.blogger.com/atom/ns#" term="presentation"/><title type='text'>Java 8 Collection Updates - Slides and Code</title><content type='html'>&lt;p&gt;
Here are the slides from my presentation at the Nashville Java User Group on April 1, 2014.  Also, I&#39;ve got the &lt;a href=&quot;https://github.com/djleeds/hack-n-slash&quot;&gt;Hack-n-Slash code samples&lt;/a&gt; from the presentation available on GitHub.  They run as JUnit tests, so you can explore them, tinker with them, and see them in action!
&lt;/p&gt;

&lt;iframe src=&quot;http://www.slideshare.net/slideshow/embed_code/32966363&quot; width=&quot;427&quot; height=&quot;356&quot; frameborder=&quot;0&quot; marginwidth=&quot;0&quot; marginheight=&quot;0&quot; scrolling=&quot;no&quot; style=&quot;border:1px solid #CCC; border-width:1px 1px 0; margin-bottom:5px; max-width: 100%;&quot; allowfullscreen&gt; &lt;/iframe&gt; &lt;div style=&quot;margin-bottom:5px&quot;&gt; &lt;strong&gt; &lt;a href=&quot;https://www.slideshare.net/djleeds/java-8-collection-api-updates&quot; title=&quot;Java 8 Collection API Updates&quot; target=&quot;_blank&quot;&gt;Java 8 Collection API Updates&lt;/a&gt; &lt;/strong&gt; from &lt;strong&gt;&lt;a href=&quot;http://www.slideshare.net/djleeds&quot; target=&quot;_blank&quot;&gt;Dave Leeds&lt;/a&gt;&lt;/strong&gt; &lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.hitthebits.com/feeds/6271374583002744208/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.hitthebits.com/2014/04/java-8-collection-updates-slides-and-code.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8857175797509514644/posts/default/6271374583002744208'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8857175797509514644/posts/default/6271374583002744208'/><link rel='alternate' type='text/html' href='http://www.hitthebits.com/2014/04/java-8-collection-updates-slides-and-code.html' title='Java 8 Collection Updates - Slides and Code'/><author><name>Dave</name><uri>http://www.blogger.com/profile/04658179796048189813</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiFjaApNT-n-QWalIJXdKPxIhRtmi9zzH2fRXwuwQt0ZlWEn_juFI6VAs_PULkmiFrqaLYmSpnKNPz0JbrKWp6LPDlSoU-L8Vn9Qe8HgB3hCDSQgLOueApnm6mRwg7VEQ/s220/profile-128x128.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8857175797509514644.post-7824373859522488252</id><published>2013-08-08T12:00:00.002-05:00</published><updated>2020-03-23T22:04:30.691-05:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="object-oriented programming"/><category scheme="http://www.blogger.com/atom/ns#" term="programming theory"/><title type='text'>Writing Small Methods... No, I Mean Really Small Methods</title><content type='html'>&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;div style=&quot;clear:right; float:right; margin-left:1em; margin-bottom:0em&quot;&gt;
&lt;img src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg3nyQqgM8JayYVbh_6p0Xyf6QL7ZpeDMUYzXS7T0GQnV_cqQI1urGP_OmQgjSYbbxNLcCgXYYuIvezmBQkQ2KaZwl5NiIEV49hdQ8PVVdLNDWLz4zhgC4oJJ9xdKHSMY9Hl2f3e0XLa2o/s350/htb-mouse-elephant.png&quot; style=&quot;box-shadow:none;&quot; alt=&quot;Mouse and Elephant&quot;&gt;
&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;Like many programmers, I&amp;#39;ve typically aimed to keep my methods small.  On average, my methods have been probably around 8-12 lines long.   But lately, I&amp;#39;ve had a blast &lt;/p&gt;&lt;a href=&quot;http://www.hitthebits.com/2013/08/really-small-methods.html#more&quot;&gt;Read more »&lt;/a&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.hitthebits.com/feeds/7824373859522488252/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.hitthebits.com/2013/08/really-small-methods.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8857175797509514644/posts/default/7824373859522488252'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8857175797509514644/posts/default/7824373859522488252'/><link rel='alternate' type='text/html' href='http://www.hitthebits.com/2013/08/really-small-methods.html' title='Writing Small Methods... No, I Mean Really Small Methods'/><author><name>Dave</name><uri>http://www.blogger.com/profile/04658179796048189813</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiFjaApNT-n-QWalIJXdKPxIhRtmi9zzH2fRXwuwQt0ZlWEn_juFI6VAs_PULkmiFrqaLYmSpnKNPz0JbrKWp6LPDlSoU-L8Vn9Qe8HgB3hCDSQgLOueApnm6mRwg7VEQ/s220/profile-128x128.jpg'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg3nyQqgM8JayYVbh_6p0Xyf6QL7ZpeDMUYzXS7T0GQnV_cqQI1urGP_OmQgjSYbbxNLcCgXYYuIvezmBQkQ2KaZwl5NiIEV49hdQ8PVVdLNDWLz4zhgC4oJJ9xdKHSMY9Hl2f3e0XLa2o/s72-c/htb-mouse-elephant.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8857175797509514644.post-1281193225480496773</id><published>2013-06-26T11:18:00.000-05:00</published><updated>2013-06-26T11:18:24.468-05:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="object-oriented programming"/><category scheme="http://www.blogger.com/atom/ns#" term="programming theory"/><category scheme="http://www.blogger.com/atom/ns#" term="Unit Testing"/><title type='text'>Unit Testing: What&#39;s a Unit?</title><content type='html'>&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;div style=&quot;clear:right; float:right; margin-left:1em; margin-bottom:0em&quot;&gt;
&lt;img src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj7zRwdtYb7qSwWtbBb1yN3t2D3I76PPFMhScorhsaSx-C8Xpp6wCQm7VgNFASM8GB8Ba0ERmHUJ947JdFLVwkehB6s7A7lzWKxaH8LfYIIez2ouRo3V4zVwCBNpLiIoeSbq7spaj0NYsk/w200-h199-no/atom.png&quot; style=&quot;box-shadow:none;&quot;&gt;
&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;We all know that we should be writing unit tests, but have you ever thought about what a &lt;em&gt;unit&lt;/em&gt; is, exactly?  Most definitions out there, including &lt;a href=&quot;http://en.wikipedia.org/wiki/Unit_testing&quot;&gt;the one on Wikipedia&lt;/a&gt;, describe it as the smallest piece of code that can be tested.&lt;/p&gt;

&lt;p&gt;But what does that mean?  The answer to that question will &lt;/p&gt;&lt;a href=&quot;http://www.hitthebits.com/2013/06/unit-testing-whats-a-unit.html#more&quot;&gt;Read more »&lt;/a&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.hitthebits.com/feeds/1281193225480496773/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.hitthebits.com/2013/06/unit-testing-whats-a-unit.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8857175797509514644/posts/default/1281193225480496773'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8857175797509514644/posts/default/1281193225480496773'/><link rel='alternate' type='text/html' href='http://www.hitthebits.com/2013/06/unit-testing-whats-a-unit.html' title='Unit Testing: What&#39;s a Unit?'/><author><name>Dave</name><uri>http://www.blogger.com/profile/04658179796048189813</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiFjaApNT-n-QWalIJXdKPxIhRtmi9zzH2fRXwuwQt0ZlWEn_juFI6VAs_PULkmiFrqaLYmSpnKNPz0JbrKWp6LPDlSoU-L8Vn9Qe8HgB3hCDSQgLOueApnm6mRwg7VEQ/s220/profile-128x128.jpg'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj7zRwdtYb7qSwWtbBb1yN3t2D3I76PPFMhScorhsaSx-C8Xpp6wCQm7VgNFASM8GB8Ba0ERmHUJ947JdFLVwkehB6s7A7lzWKxaH8LfYIIez2ouRo3V4zVwCBNpLiIoeSbq7spaj0NYsk/s72-w200-h199-c-no/atom.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8857175797509514644.post-5308509794778225050</id><published>2013-05-31T12:14:00.003-05:00</published><updated>2013-05-31T12:14:42.996-05:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Ruby on Rails"/><title type='text'>My Favorite Presentations from RailsConf 2013</title><content type='html'>&lt;style&gt;
li { line-height: 36px; }
&lt;/style&gt;

&lt;p&gt;
&lt;a href=&quot;https://twitter.com/confreaks&quot;&gt;Confreaks&lt;/a&gt; has been busy over the past few weeks, putting together the videos from RailsConf 2013.  Now that they&amp;#39;ve posted over 90% of the presentations, you&amp;#39;ve got &lt;/p&gt;&lt;a href=&quot;http://www.hitthebits.com/2013/05/favorite-railsconf-2013-presentations.html#more&quot;&gt;Read more »&lt;/a&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.hitthebits.com/feeds/5308509794778225050/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.hitthebits.com/2013/05/favorite-railsconf-2013-presentations.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8857175797509514644/posts/default/5308509794778225050'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8857175797509514644/posts/default/5308509794778225050'/><link rel='alternate' type='text/html' href='http://www.hitthebits.com/2013/05/favorite-railsconf-2013-presentations.html' title='My Favorite Presentations from RailsConf 2013'/><author><name>Dave</name><uri>http://www.blogger.com/profile/04658179796048189813</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiFjaApNT-n-QWalIJXdKPxIhRtmi9zzH2fRXwuwQt0ZlWEn_juFI6VAs_PULkmiFrqaLYmSpnKNPz0JbrKWp6LPDlSoU-L8Vn9Qe8HgB3hCDSQgLOueApnm6mRwg7VEQ/s220/profile-128x128.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8857175797509514644.post-6637310509855681969</id><published>2013-05-21T21:07:00.000-05:00</published><updated>2013-05-21T21:08:53.408-05:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="coldfusion"/><category scheme="http://www.blogger.com/atom/ns#" term="object-oriented programming"/><category scheme="http://www.blogger.com/atom/ns#" term="programming theory"/><title type='text'>3½ Ways to Reuse Code in ColdFusion Components</title><content type='html'>&lt;p&gt;
Programming languages give us a variety of options for sharing code among multiple classes.  In this article, let&amp;#39;s look at the &lt;strong&gt;3½ ways&lt;/strong&gt; that ColdFusion allows us to get code reuse in our components.
&lt;/p&gt;&lt;p&gt;
Let&amp;#39;s start with a problem &amp;ndash; we&amp;#39;ve got two &lt;/p&gt;&lt;a href=&quot;http://www.hitthebits.com/2013/05/coldfusion-code-reuse.html#more&quot;&gt;Read more »&lt;/a&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.hitthebits.com/feeds/6637310509855681969/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.hitthebits.com/2013/05/coldfusion-code-reuse.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8857175797509514644/posts/default/6637310509855681969'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8857175797509514644/posts/default/6637310509855681969'/><link rel='alternate' type='text/html' href='http://www.hitthebits.com/2013/05/coldfusion-code-reuse.html' title='3½ Ways to Reuse Code in ColdFusion Components'/><author><name>Dave</name><uri>http://www.blogger.com/profile/04658179796048189813</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiFjaApNT-n-QWalIJXdKPxIhRtmi9zzH2fRXwuwQt0ZlWEn_juFI6VAs_PULkmiFrqaLYmSpnKNPz0JbrKWp6LPDlSoU-L8Vn9Qe8HgB3hCDSQgLOueApnm6mRwg7VEQ/s220/profile-128x128.jpg'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiyrbQlkoTGhmDyb7BWMAxf8BM1Oc8b7AG5-e90LCr_AuW8UBubNOkE95sUNmv6yGO8ZBRfb2mpbf3nMJjLdfBmiYOg7uP2LwxWHuvRsQPRlJv2uKEeWiWRzLw_XucExWXTCuTpRBT6T_I/s72-w720-h397-c-no/htb-duck-platypus-diagram.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8857175797509514644.post-5230087882320255826</id><published>2013-05-06T12:05:00.000-05:00</published><updated>2013-05-06T12:05:00.384-05:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Ruby on Rails"/><title type='text'>RailsConf 2013 Highlights</title><content type='html'>&lt;p&gt;
Last week, I had the privilege of attending &lt;a href=&quot;http://railsconf.com/&quot;&gt;RailsConf&lt;/a&gt; up in Portland.  With about 1500 attendees, 4 days of sessions, about 3-4 session options to choose from at any time, and a set of about 40 lightning talks, there was &lt;/p&gt;&lt;a href=&quot;http://www.hitthebits.com/2013/05/railsconf-2013-highlights.html#more&quot;&gt;Read more »&lt;/a&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.hitthebits.com/feeds/5230087882320255826/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.hitthebits.com/2013/05/railsconf-2013-highlights.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8857175797509514644/posts/default/5230087882320255826'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8857175797509514644/posts/default/5230087882320255826'/><link rel='alternate' type='text/html' href='http://www.hitthebits.com/2013/05/railsconf-2013-highlights.html' title='RailsConf 2013 Highlights'/><author><name>Dave</name><uri>http://www.blogger.com/profile/04658179796048189813</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiFjaApNT-n-QWalIJXdKPxIhRtmi9zzH2fRXwuwQt0ZlWEn_juFI6VAs_PULkmiFrqaLYmSpnKNPz0JbrKWp6LPDlSoU-L8Vn9Qe8HgB3hCDSQgLOueApnm6mRwg7VEQ/s220/profile-128x128.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8857175797509514644.post-1745999771652032478</id><published>2013-04-25T19:11:00.001-05:00</published><updated>2013-04-25T19:11:49.596-05:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="tip"/><title type='text'>Extra Git Merge Commits: Merge branch &#39;master&#39; of github.com:owner/repo</title><content type='html'>&lt;style&gt;
blockquote.inline { 
display: inline; 
margin-left: 1em;
font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace
}
&lt;/style&gt;

&lt;p&gt;
As I&amp;#39;ve been working with some friends on a GitHub-hosted project lately, I&amp;#39;ve seen tons of seemingly extraneous merge commits in our master branch that look something like this:
&lt;/p&gt;
&lt;blockquote&gt;
 Merge branch &amp;#39;master&amp;#39; of github.com:owner/repo
&lt;/blockquote&gt;
&lt;p&gt;
This can seem confusing, especially to those coming from a subversion paradigm,  for a few reasons:
&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;You see it when you&amp;#39;re working on master.  If there&amp;#39;s no branching happening, why is there a merge?&lt;/li&gt;
&lt;li&gt;The merge commit includes changes that have already been committed, so it looks like they&amp;#39;re happening twice.&lt;/li&gt;
&lt;/ol&gt; 
&lt;h3&gt;
What Causes This?
&lt;/h3&gt;
&lt;p&gt;
When you&amp;#39;re &lt;/p&gt;&lt;a href=&quot;http://www.hitthebits.com/2013/04/extra-git-merge-commits.html#more&quot;&gt;Read more »&lt;/a&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.hitthebits.com/feeds/1745999771652032478/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.hitthebits.com/2013/04/extra-git-merge-commits.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8857175797509514644/posts/default/1745999771652032478'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8857175797509514644/posts/default/1745999771652032478'/><link rel='alternate' type='text/html' href='http://www.hitthebits.com/2013/04/extra-git-merge-commits.html' title='Extra Git Merge Commits: Merge branch &#39;master&#39; of github.com:owner/repo'/><author><name>Dave</name><uri>http://www.blogger.com/profile/04658179796048189813</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiFjaApNT-n-QWalIJXdKPxIhRtmi9zzH2fRXwuwQt0ZlWEn_juFI6VAs_PULkmiFrqaLYmSpnKNPz0JbrKWp6LPDlSoU-L8Vn9Qe8HgB3hCDSQgLOueApnm6mRwg7VEQ/s220/profile-128x128.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8857175797509514644.post-2664235493710306466</id><published>2013-03-27T20:27:00.001-05:00</published><updated>2013-03-27T20:40:52.475-05:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Tool Review"/><title type='text'>A Quick Look at SourceTree for Windows</title><content type='html'>&lt;p&gt;
Atlassian recently released a &lt;a href=&quot;http://blog.bitbucket.org/2013/03/19/introducing-sourcetree-git-client-microsoft-windows/&quot;&gt;beta version of SourceTree for Windows&lt;/a&gt;, their graphical Git client, which was previously only available on Mac.  Since BitBucket kept telling me to give it a try, I gave in and snagged a copy.
&lt;/p&gt;
&lt;p&gt;
Now, I gotta say, the Git CLI is amazing.  I mean, you can do some crazy stuff in a simple terminal window.  Tasks like interactive rebasing and cherry picking hunks of changes work surprisingly well on the command line.  But there are also tons of features of Git that would lend themselves well to a GUI.  So let&amp;#39;s peek in on SourceTree to see what it provides.
&lt;/p&gt;
&lt;a href=&quot;http://www.hitthebits.com/2013/03/sourcetree-for-windows.html#more&quot;&gt;Read more »&lt;/a&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.hitthebits.com/feeds/2664235493710306466/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.hitthebits.com/2013/03/sourcetree-for-windows.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8857175797509514644/posts/default/2664235493710306466'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8857175797509514644/posts/default/2664235493710306466'/><link rel='alternate' type='text/html' href='http://www.hitthebits.com/2013/03/sourcetree-for-windows.html' title='A Quick Look at SourceTree for Windows'/><author><name>Dave</name><uri>http://www.blogger.com/profile/04658179796048189813</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiFjaApNT-n-QWalIJXdKPxIhRtmi9zzH2fRXwuwQt0ZlWEn_juFI6VAs_PULkmiFrqaLYmSpnKNPz0JbrKWp6LPDlSoU-L8Vn9Qe8HgB3hCDSQgLOueApnm6mRwg7VEQ/s220/profile-128x128.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8857175797509514644.post-1653621643546834249</id><published>2013-03-20T12:36:00.000-05:00</published><updated>2013-03-20T12:36:06.798-05:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Book Review"/><title type='text'>Book Review: Effective C# by Bill Wagner; Addison-Wesley</title><content type='html'>&lt;blockquote&gt;
This review covers Effective C#: 50 Specific Ways to Improve Your C# (Second Edition) by Bill Wagner, published by Addison-Wesley.  You can pick it up from &lt;a href=&quot;http://www.amazon.com/Effective-Covers-4-0-Specific-Development/dp/0321658701/&quot;&gt;Amazon&lt;/a&gt; or &lt;a href=&quot;http://www.informit.com/store/effective-c-sharp-covers-c-sharp-4.0-50-specific-ways-9780321658708&quot;&gt;InformIT&lt;/a&gt;.
&lt;/blockquote&gt;
&lt;p&gt;
Bill Wagner&amp;#39;s book, &lt;em&gt;Effective C#, 2nd Edition&lt;/em&gt; delivers fifty easily-digested best practices to take your C# to the next level, covering a variety of topics from language idioms to dynamic programming and beyond.  There are roughly 300 pages that are packed with content, striking an excellent balance of code and prose.
&lt;/p&gt;&lt;p&gt;
As a professional programmer who has &lt;/p&gt;&lt;a href=&quot;http://www.hitthebits.com/2013/03/effective-c-sharp-review.html#more&quot;&gt;Read more »&lt;/a&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.hitthebits.com/feeds/1653621643546834249/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.hitthebits.com/2013/03/effective-c-sharp-review.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8857175797509514644/posts/default/1653621643546834249'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8857175797509514644/posts/default/1653621643546834249'/><link rel='alternate' type='text/html' href='http://www.hitthebits.com/2013/03/effective-c-sharp-review.html' title='Book Review: Effective C# by Bill Wagner; Addison-Wesley'/><author><name>Dave</name><uri>http://www.blogger.com/profile/04658179796048189813</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiFjaApNT-n-QWalIJXdKPxIhRtmi9zzH2fRXwuwQt0ZlWEn_juFI6VAs_PULkmiFrqaLYmSpnKNPz0JbrKWp6LPDlSoU-L8Vn9Qe8HgB3hCDSQgLOueApnm6mRwg7VEQ/s220/profile-128x128.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8857175797509514644.post-5571093435102611584</id><published>2013-03-14T21:05:00.000-05:00</published><updated>2013-03-14T21:05:46.374-05:00</updated><title type='text'>Time to Restructure!</title><content type='html'>&lt;p&gt;
I love greenfield projects!  They&amp;#39;re a chance to start with a clean slate.  A chance to do things right.    After maintaining our existing apps for so long, we&amp;#39;re keenly aware of everything that we&amp;#39;d do to fix them.  A fresh start is a golden opportunity to take all those lessons we&amp;#39;ve learned and apply them in order to build a shiny, pristine code base that we can be proud of.
&lt;/p&gt;&lt;h3&gt;
The New Project Rush
&lt;/h3&gt;&lt;p&gt;
New projects are also usually a bit of a rush.  The business team wants to make sure you can deliver by a certain date, so things &lt;/p&gt;&lt;a href=&quot;http://www.hitthebits.com/2013/03/time-to-restructure.html#more&quot;&gt;Read more »&lt;/a&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.hitthebits.com/feeds/5571093435102611584/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.hitthebits.com/2013/03/time-to-restructure.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8857175797509514644/posts/default/5571093435102611584'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8857175797509514644/posts/default/5571093435102611584'/><link rel='alternate' type='text/html' href='http://www.hitthebits.com/2013/03/time-to-restructure.html' title='Time to Restructure!'/><author><name>Dave</name><uri>http://www.blogger.com/profile/04658179796048189813</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiFjaApNT-n-QWalIJXdKPxIhRtmi9zzH2fRXwuwQt0ZlWEn_juFI6VAs_PULkmiFrqaLYmSpnKNPz0JbrKWp6LPDlSoU-L8Vn9Qe8HgB3hCDSQgLOueApnm6mRwg7VEQ/s220/profile-128x128.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8857175797509514644.post-8562332084355628457</id><published>2013-03-07T18:44:00.001-06:00</published><updated>2013-03-07T18:44:21.268-06:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="opinion"/><title type='text'>Are You a Programming Newbie?</title><content type='html'>&lt;p&gt;We were all coding noobs at one point or another.  Here&amp;#39;s my list of the top ten things that I hope you don&amp;#39;t do anymore.&lt;/p&gt;

&lt;p&gt;You might be a programming newbie if...&lt;/p&gt;

&lt;ol&gt;

&lt;li&gt;You put all of your variables in the global scope&lt;/li&gt;

&lt;li&gt;You&amp;#39;ve got a conditional with half a dozen expressions&lt;/li&gt;

&lt;li&gt;All of your variables names have &lt;/li&gt;&lt;/ol&gt;&lt;a href=&quot;http://www.hitthebits.com/2013/03/programming-newbie.html#more&quot;&gt;Read more »&lt;/a&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.hitthebits.com/feeds/8562332084355628457/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.hitthebits.com/2013/03/programming-newbie.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8857175797509514644/posts/default/8562332084355628457'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8857175797509514644/posts/default/8562332084355628457'/><link rel='alternate' type='text/html' href='http://www.hitthebits.com/2013/03/programming-newbie.html' title='Are You a Programming Newbie?'/><author><name>Dave</name><uri>http://www.blogger.com/profile/04658179796048189813</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiFjaApNT-n-QWalIJXdKPxIhRtmi9zzH2fRXwuwQt0ZlWEn_juFI6VAs_PULkmiFrqaLYmSpnKNPz0JbrKWp6LPDlSoU-L8Vn9Qe8HgB3hCDSQgLOueApnm6mRwg7VEQ/s220/profile-128x128.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8857175797509514644.post-4654936199498670617</id><published>2013-02-27T21:35:00.000-06:00</published><updated>2013-02-27T21:35:03.046-06:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="opinion"/><title type='text'>Best Practices vs. Prototypes</title><content type='html'>&lt;p&gt;
I&amp;#39;ve noticed that developers are good at identifying and learning best practices.  I&amp;#39;ve also noticed that they&amp;#39;re equally good at coming up with reasons why the best practices don&amp;#39;t apply in some particular case they&amp;#39;re working on.  
&lt;/p&gt;&lt;p&gt;
If that&amp;#39;s you, don&amp;#39;t worry.  I&amp;#39;m not here to slam you.  In fact, I think it&amp;#39;s something that we all wrestle with daily.  We know the&lt;/p&gt;&lt;a href=&quot;http://www.hitthebits.com/2013/02/best-practices-vs-prototypes.html#more&quot;&gt;Read more »&lt;/a&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.hitthebits.com/feeds/4654936199498670617/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.hitthebits.com/2013/02/best-practices-vs-prototypes.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8857175797509514644/posts/default/4654936199498670617'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8857175797509514644/posts/default/4654936199498670617'/><link rel='alternate' type='text/html' href='http://www.hitthebits.com/2013/02/best-practices-vs-prototypes.html' title='Best Practices vs. Prototypes'/><author><name>Dave</name><uri>http://www.blogger.com/profile/04658179796048189813</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiFjaApNT-n-QWalIJXdKPxIhRtmi9zzH2fRXwuwQt0ZlWEn_juFI6VAs_PULkmiFrqaLYmSpnKNPz0JbrKWp6LPDlSoU-L8Vn9Qe8HgB3hCDSQgLOueApnm6mRwg7VEQ/s220/profile-128x128.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8857175797509514644.post-2350110058480903642</id><published>2013-02-21T21:01:00.000-06:00</published><updated>2013-02-21T21:01:04.042-06:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="code review"/><title type='text'>Code Review Best Practices - Use Code Review Software</title><content type='html'>&lt;style&gt;
#reasons { margin-left: 2em; }
#reasons img { box-shadow: none; float: right; margin: 2em; }
&lt;/style&gt;

&lt;p&gt;
Although you can get by doing &lt;a href=&quot;/2012/10/live-code-reviews.html&quot;&gt;live code reviews&lt;/a&gt;, I&amp;#39;ve found that using code review software has generally made my code reviews much more productive.  There aren&amp;#39;t a ton of code review software packages out there, but some of them are outstanding.  
&lt;/p&gt;&lt;p&gt;
If you&amp;#39;re &lt;/p&gt;&lt;a href=&quot;http://www.hitthebits.com/2013/02/code-review-software.html#more&quot;&gt;Read more »&lt;/a&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.hitthebits.com/feeds/2350110058480903642/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.hitthebits.com/2013/02/code-review-software.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8857175797509514644/posts/default/2350110058480903642'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8857175797509514644/posts/default/2350110058480903642'/><link rel='alternate' type='text/html' href='http://www.hitthebits.com/2013/02/code-review-software.html' title='Code Review Best Practices - Use Code Review Software'/><author><name>Dave</name><uri>http://www.blogger.com/profile/04658179796048189813</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiFjaApNT-n-QWalIJXdKPxIhRtmi9zzH2fRXwuwQt0ZlWEn_juFI6VAs_PULkmiFrqaLYmSpnKNPz0JbrKWp6LPDlSoU-L8Vn9Qe8HgB3hCDSQgLOueApnm6mRwg7VEQ/s220/profile-128x128.jpg'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhgvvMp3F1K2IiD67WnBus3sqfyqNKVF0nWGBPnYgGHRrhyFrYDHx8Wpu7r_c0hXK3V4ToShLUqhesNr1aJQ4nBf8buFB95tHhoAWw7fBQEQfv-Ah5USQ9EQNVYYb-TEFji5onxHklCDhM/s72-c/htb-cr-software-diagram.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8857175797509514644.post-8821660718348717009</id><published>2013-02-13T12:00:00.000-06:00</published><updated>2013-02-13T12:47:37.803-06:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="HTML5"/><category scheme="http://www.blogger.com/atom/ns#" term="JavaScript"/><title type='text'>HTML5 Date Pickers and JavaScript Date Objects</title><content type='html'>&lt;style&gt;
table#date-standards { border: 1px solid silver; }
table#date-standards th { border: 1px dotted silver; text-align: left; padding: 5px; }
table#date-standards td { border: 1px dotted silver; padding: 5px; }
.live-demo { 
padding: 1em;
background: #9ac3dd; /* Old browsers */
background: linear-gradient(to bottom,  #9ac3dd 0%,#85aabf 50%,#9ac3dd 100%); /* W3C */
border: 1px solid #85aabf; 
}
.live-demo span, .live-demo label {
color: white;
padding: 3px;
}
#file-htb-html5-date-picker-2-html-LC4 { background-color: #fffdba; }
&lt;/style&gt;

&lt;p&gt;
HTML5 date picker elements have a lot of potential.  After all, there are tons of apps out there that need a control for choosing a date.  The number of browsers that support them is gradually growing, but not as quickly as you&amp;#39;d expect.  Here&amp;#39;s what it looks like in your browser -- it might just be a text box if your browser doesn&amp;#39;t yet support date pickers:
&lt;/p&gt;

&lt;div class=&quot;live-demo&quot;&gt;
&lt;label&gt;HTML5 Date Picker:&lt;/label&gt;
&lt;input type=&quot;date&quot; value=&quot;2013-02-14&quot;&gt;
&lt;/div&gt;

&lt;p&gt;
Because of the lack of support in some browsers and the simple implementation in others, many developers still end up going with jQuery UI to render their date pickers.  
&lt;/p&gt;
&lt;p&gt;
If you choose to go with the native HTML5 control, you might notice a problem when &lt;/p&gt;&lt;a href=&quot;http://www.hitthebits.com/2013/02/html5-date-pickers-and-javascript-date-objects.html#more&quot;&gt;Read more »&lt;/a&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.hitthebits.com/feeds/8821660718348717009/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.hitthebits.com/2013/02/html5-date-pickers-and-javascript-date-objects.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8857175797509514644/posts/default/8821660718348717009'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8857175797509514644/posts/default/8821660718348717009'/><link rel='alternate' type='text/html' href='http://www.hitthebits.com/2013/02/html5-date-pickers-and-javascript-date-objects.html' title='HTML5 Date Pickers and JavaScript Date Objects'/><author><name>Dave</name><uri>http://www.blogger.com/profile/04658179796048189813</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiFjaApNT-n-QWalIJXdKPxIhRtmi9zzH2fRXwuwQt0ZlWEn_juFI6VAs_PULkmiFrqaLYmSpnKNPz0JbrKWp6LPDlSoU-L8Vn9Qe8HgB3hCDSQgLOueApnm6mRwg7VEQ/s220/profile-128x128.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8857175797509514644.post-2825151901000617012</id><published>2013-02-08T12:46:00.000-06:00</published><updated>2013-02-08T12:47:21.976-06:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="code review"/><title type='text'>Code Review Presentation Slides</title><content type='html'>&lt;p&gt;
For those who attended this week&#39;s &lt;a href=&quot;http://www.meetup.com/nashvillejug/&quot;&gt;Nashville Java Users&#39; Group&lt;/a&gt; and were interested in reviewing the &lt;a href=&quot;http://www.slideshare.net/djleeds/code-reviews-16414279&quot;&gt;slides from my lightning talk on Code Reviews&lt;/a&gt;, I put them up on SlideShare.  For convenience, I&#39;m also embedding the presentation here.
&lt;/p&gt;

&lt;iframe src=&quot;http://www.slideshare.net/slideshow/embed_code/16414279&quot; width=&quot;427&quot; height=&quot;356&quot; frameborder=&quot;0&quot; marginwidth=&quot;0&quot; marginheight=&quot;0&quot; scrolling=&quot;no&quot; style=&quot;border:1px solid #CCC;border-width:1px 1px 0;margin-bottom:5px&quot; allowfullscreen webkitallowfullscreen mozallowfullscreen&gt; &lt;/iframe&gt; &lt;div style=&quot;margin-bottom:5px&quot;&gt; &lt;strong&gt; &lt;a href=&quot;http://www.slideshare.net/djleeds/code-reviews-16414279&quot; title=&quot;Effective Code Reviews&quot; target=&quot;_blank&quot;&gt;Effective Code Reviews&lt;/a&gt; &lt;/strong&gt; from &lt;strong&gt;&lt;a href=&quot;http://www.slideshare.net/djleeds&quot; target=&quot;_blank&quot;&gt;Dave Leeds&lt;/a&gt;&lt;/strong&gt; &lt;/div&gt;

&lt;p&gt;
While preparing for that presentation, I also realized that I&#39;ve got a few gaps to fill in from the initial &lt;a href=&quot;http://www.hitthebits.com/p/code-reviews.html&quot;&gt;series on code reviews&lt;/a&gt;, so I&#39;ll be adding to that series over the coming weeks.
&lt;/p&gt;

</content><link rel='replies' type='application/atom+xml' href='http://www.hitthebits.com/feeds/2825151901000617012/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.hitthebits.com/2013/02/code-review-presentation-slides.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8857175797509514644/posts/default/2825151901000617012'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8857175797509514644/posts/default/2825151901000617012'/><link rel='alternate' type='text/html' href='http://www.hitthebits.com/2013/02/code-review-presentation-slides.html' title='Code Review Presentation Slides'/><author><name>Dave</name><uri>http://www.blogger.com/profile/04658179796048189813</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiFjaApNT-n-QWalIJXdKPxIhRtmi9zzH2fRXwuwQt0ZlWEn_juFI6VAs_PULkmiFrqaLYmSpnKNPz0JbrKWp6LPDlSoU-L8Vn9Qe8HgB3hCDSQgLOueApnm6mRwg7VEQ/s220/profile-128x128.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8857175797509514644.post-8118328196135229419</id><published>2013-01-28T12:01:00.001-06:00</published><updated>2013-01-28T12:01:44.794-06:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="programming theory"/><title type='text'>What vs. How</title><content type='html'>&lt;p&gt;
Have you ever had this happen to you? -- You&amp;#39;re wading through code, analyzing one expression after another.  After getting forty lines into the method, you pause and ask yourself, &amp;quot;Wait, what is this method supposed to do again?&amp;quot;  It&amp;#39;s easy to miss the forest for the trees.
&lt;/p&gt;
&lt;p&gt;
This happens a lot when the code is &lt;/p&gt;&lt;a href=&quot;http://www.hitthebits.com/2013/01/what-vs-how.html#more&quot;&gt;Read more »&lt;/a&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.hitthebits.com/feeds/8118328196135229419/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.hitthebits.com/2013/01/what-vs-how.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8857175797509514644/posts/default/8118328196135229419'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8857175797509514644/posts/default/8118328196135229419'/><link rel='alternate' type='text/html' href='http://www.hitthebits.com/2013/01/what-vs-how.html' title='What vs. How'/><author><name>Dave</name><uri>http://www.blogger.com/profile/04658179796048189813</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiFjaApNT-n-QWalIJXdKPxIhRtmi9zzH2fRXwuwQt0ZlWEn_juFI6VAs_PULkmiFrqaLYmSpnKNPz0JbrKWp6LPDlSoU-L8Vn9Qe8HgB3hCDSQgLOueApnm6mRwg7VEQ/s220/profile-128x128.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8857175797509514644.post-3057376969709702322</id><published>2013-01-17T12:38:00.001-06:00</published><updated>2013-01-17T12:38:29.547-06:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="object-oriented programming"/><category scheme="http://www.blogger.com/atom/ns#" term="UML"/><title type='text'>How to Sell Them on Your Design</title><content type='html'>&lt;p&gt;
So, you&amp;#39;ve been tasked with restructuring your object model.  After hours of thinking through the implications of each design decision, you&amp;#39;ve sketched up your new object model in a UML class diagram.  You&amp;#39;re ready to present it to your peers!  Now, how are you going to sell them on it?
&lt;/p&gt;
&lt;p&gt;
Take a look at &lt;/p&gt;&lt;a href=&quot;http://www.hitthebits.com/2013/01/sell-them-on-your-design.html#more&quot;&gt;Read more »&lt;/a&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.hitthebits.com/feeds/3057376969709702322/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.hitthebits.com/2013/01/sell-them-on-your-design.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8857175797509514644/posts/default/3057376969709702322'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8857175797509514644/posts/default/3057376969709702322'/><link rel='alternate' type='text/html' href='http://www.hitthebits.com/2013/01/sell-them-on-your-design.html' title='How to Sell Them on Your Design'/><author><name>Dave</name><uri>http://www.blogger.com/profile/04658179796048189813</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiFjaApNT-n-QWalIJXdKPxIhRtmi9zzH2fRXwuwQt0ZlWEn_juFI6VAs_PULkmiFrqaLYmSpnKNPz0JbrKWp6LPDlSoU-L8Vn9Qe8HgB3hCDSQgLOueApnm6mRwg7VEQ/s220/profile-128x128.jpg'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiRHZRAIgsZpJoIrhVdlZ7TRi-W4pAlfkNkxop1zeiAJ3JDsJaS0mYF5_bPZC70wpM4Pe7WzMxRQFV77ia0eC6EVd6M7_9h7thJWfINLrC1-4903aFHfQBh0h5Qu2Uhm2N9LUZWCDktAAA/s72-c/sell-your-uml-bad.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8857175797509514644.post-8875298264552535567</id><published>2013-01-09T21:48:00.001-06:00</published><updated>2013-01-09T22:21:03.252-06:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="UML"/><title type='text'>Speak to Me, UML!</title><content type='html'>&lt;p&gt;
I don&amp;#39;t know about you, but when I first learned about UML, I was ecstatic!  I was just so excited to have a standard way to represent my object model in class diagrams in ways that were easy to sketch and understandable by others.  I created diagrams every chance I got.  
&lt;/p&gt;
&lt;p&gt;
Here&amp;#39;s an example of what my class diagrams looked like back then:
&lt;/p&gt;

&lt;img src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEimxcRg41Gy69XSC5tzdTmmqp6ZkDsYQ_JQfia8UOHpzVMYhHryGIQTit3x9xaFO7SAZcWyCW2AfZnMtin2MjWjswfQcnVoTo1qdZ7PaYH5W4O2kiky9TRpAI54KLvdutH0xVfiMMoEdrw/s640/htb-speak-to-me-uml.png&quot; alt=&quot;Very detailed UML diagram&quot;&gt;

&lt;p&gt;Yep, that&amp;#39;s what they looked like, except with about three or four times the number of classes as we see here. Sure, they were factually correct, but they were also so doggone verbose that they were only good for stuff like auto-generating stubbed out classes.
&lt;/p&gt;
&lt;p&gt;
Reading a diagram like that is a bit like&lt;/p&gt;&lt;a href=&quot;http://www.hitthebits.com/2013/01/speak-to-me-uml.html#more&quot;&gt;Read more »&lt;/a&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.hitthebits.com/feeds/8875298264552535567/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.hitthebits.com/2013/01/speak-to-me-uml.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8857175797509514644/posts/default/8875298264552535567'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8857175797509514644/posts/default/8875298264552535567'/><link rel='alternate' type='text/html' href='http://www.hitthebits.com/2013/01/speak-to-me-uml.html' title='Speak to Me, UML!'/><author><name>Dave</name><uri>http://www.blogger.com/profile/04658179796048189813</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiFjaApNT-n-QWalIJXdKPxIhRtmi9zzH2fRXwuwQt0ZlWEn_juFI6VAs_PULkmiFrqaLYmSpnKNPz0JbrKWp6LPDlSoU-L8Vn9Qe8HgB3hCDSQgLOueApnm6mRwg7VEQ/s220/profile-128x128.jpg'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEimxcRg41Gy69XSC5tzdTmmqp6ZkDsYQ_JQfia8UOHpzVMYhHryGIQTit3x9xaFO7SAZcWyCW2AfZnMtin2MjWjswfQcnVoTo1qdZ7PaYH5W4O2kiky9TRpAI54KLvdutH0xVfiMMoEdrw/s72-c/htb-speak-to-me-uml.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8857175797509514644.post-3325115119471345255</id><published>2013-01-01T00:08:00.000-06:00</published><updated>2013-01-02T06:35:23.512-06:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="tip"/><title type='text'>Goal-Setting Tips for Programmers</title><content type='html'>&lt;style type=&quot;text/css&quot;&gt;
em { padding-right: 0.35em; }
&lt;/style&gt;

&lt;p&gt;
We all know that goal setting is important, and the beginning of the year is a great time to recalibrate your compass!  So to start your year off right, here are a few tips for goal-setting, from a programmer&amp;#39;s perspective.&lt;/p&gt;&lt;a href=&quot;http://www.hitthebits.com/2013/01/goal-setting-tips-for-programmers.html#more&quot;&gt;Read more »&lt;/a&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.hitthebits.com/feeds/3325115119471345255/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.hitthebits.com/2013/01/goal-setting-tips-for-programmers.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8857175797509514644/posts/default/3325115119471345255'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8857175797509514644/posts/default/3325115119471345255'/><link rel='alternate' type='text/html' href='http://www.hitthebits.com/2013/01/goal-setting-tips-for-programmers.html' title='Goal-Setting Tips for Programmers'/><author><name>Dave</name><uri>http://www.blogger.com/profile/04658179796048189813</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiFjaApNT-n-QWalIJXdKPxIhRtmi9zzH2fRXwuwQt0ZlWEn_juFI6VAs_PULkmiFrqaLYmSpnKNPz0JbrKWp6LPDlSoU-L8Vn9Qe8HgB3hCDSQgLOueApnm6mRwg7VEQ/s220/profile-128x128.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8857175797509514644.post-2109800016339358367</id><published>2012-12-18T18:22:00.000-06:00</published><updated>2012-12-18T18:22:06.634-06:00</updated><title type='text'>What Didn&#39;t Go Wrong?</title><content type='html'>&lt;p&gt;
As programmers, we love developing new features.  After all, it&amp;#39;s fun!  And afterward, you can fire up the app, point to the feature, and say &amp;quot;See that?  I made that.&amp;quot;  And if it&amp;#39;s a helpful feature, your customers are happy, which probably means you get more sales, which increases your profits.
&lt;/p&gt;
&lt;p&gt;
There&amp;#39;s another side of development, though &amp;ndash; one that&amp;#39;s easier to overlook.  These are projects that involve things like&lt;/p&gt;&lt;a href=&quot;http://www.hitthebits.com/2012/12/what-didnt-go-wrong.html#more&quot;&gt;Read more »&lt;/a&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.hitthebits.com/feeds/2109800016339358367/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.hitthebits.com/2012/12/what-didnt-go-wrong.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8857175797509514644/posts/default/2109800016339358367'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8857175797509514644/posts/default/2109800016339358367'/><link rel='alternate' type='text/html' href='http://www.hitthebits.com/2012/12/what-didnt-go-wrong.html' title='What Didn&#39;t Go Wrong?'/><author><name>Dave</name><uri>http://www.blogger.com/profile/04658179796048189813</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiFjaApNT-n-QWalIJXdKPxIhRtmi9zzH2fRXwuwQt0ZlWEn_juFI6VAs_PULkmiFrqaLYmSpnKNPz0JbrKWp6LPDlSoU-L8Vn9Qe8HgB3hCDSQgLOueApnm6mRwg7VEQ/s220/profile-128x128.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8857175797509514644.post-7873659835839078100</id><published>2012-12-11T20:13:00.000-06:00</published><updated>2015-02-05T17:56:35.275-06:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="UML"/><title type='text'>UML Diagramming Tools</title><content type='html'>&lt;p&gt;
I&amp;#39;m a big fan of UML -- especially class diagrams.  I&amp;#39;m also a big fan of free.  So I figured I&amp;#39;d put those things together and give you a quick review of some of the free UML tools out there! &lt;/p&gt;&lt;a href=&quot;http://www.hitthebits.com/2012/12/uml-diagramming-tools.html#more&quot;&gt;Read more »&lt;/a&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.hitthebits.com/feeds/7873659835839078100/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.hitthebits.com/2012/12/uml-diagramming-tools.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8857175797509514644/posts/default/7873659835839078100'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8857175797509514644/posts/default/7873659835839078100'/><link rel='alternate' type='text/html' href='http://www.hitthebits.com/2012/12/uml-diagramming-tools.html' title='UML Diagramming Tools'/><author><name>Dave</name><uri>http://www.blogger.com/profile/04658179796048189813</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiFjaApNT-n-QWalIJXdKPxIhRtmi9zzH2fRXwuwQt0ZlWEn_juFI6VAs_PULkmiFrqaLYmSpnKNPz0JbrKWp6LPDlSoU-L8Vn9Qe8HgB3hCDSQgLOueApnm6mRwg7VEQ/s220/profile-128x128.jpg'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgnw6LEuuSUWHpeMJ_5Mbx71uc4bf9eX08giX9upzdDl8Jk8Lzx7U4EIcAXKebVtPW6un7KH9LTO8KSlmJWgGyY0Wpgae6ZmzXskTjlqaS4gleZULxTKYqOSwANdCUqwga1VRk64BIrINw/s72-c/uml-tools-umlet.png" height="72" width="72"/><thr:total>0</thr:total></entry></feed>