<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/atom10full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><feed xmlns="http://www.w3.org/2005/Atom">


<id>tag:brianmavity.com,2008:/blog</id>

<title>brianmavity.com</title>

<subtitle>Learn with me</subtitle>

<link href="http://blog.brianmavity.com/" />

<updated>2009-09-13T05:00:00.000Z</updated>

<author>
<name>Brian Mavity</name>
</author>

<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/atom+xml" href="http://feeds.feedburner.com/brianmavitycomblog" /><feedburner:info xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" uri="brianmavitycomblog" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><entry>
<title>Writing a Blog Engine: Boring? I think not.</title>

<link href="http://blog.brianmavity.com/writing-a-blog-engine-boring-i-think-not" />

<id>tag:brianmavity.com,2009-09-13:/blog/20090913050000000</id>

<published>2009-09-13T05:00:00.000Z</published>

<updated>2009-09-13T05:00:00.000Z</updated>

<content type="html">&lt;p&gt;When I was younger lad, I would occasionally come home and complain about school. My dad used to tell me, &amp;ldquo;Brian, there aren&amp;rsquo;t boring subjects, just boring people.&amp;rdquo; At the time I was mildly insulted and wrote him off as a crazy old kook, but ultimately it was something profound. I won&amp;rsquo;t belabor the point, but even implementing a simple blog engine can not only be interesting, but can also provide ample opportunity for learning.&lt;/p&gt; 
&lt;h2&gt;Preamble or Pre-ramble?&lt;/h2&gt; 
&lt;p&gt;Although I am a software developer by trade, I moonlight as a user experience (UX) designer and &amp;ldquo;do my best&amp;rdquo; as a visual designer. I am a firm believer that UX is not something that can be &amp;ldquo;added later,&amp;rdquo; it is an essential part of any piece of successful software from the beginning. Even if a piece of software is profitable, it&amp;rsquo;s not a true success unless it provides users with an enjoyable and rewarding experience. Bad experience conveys contempt for customers, and builds no loyalty. They&amp;rsquo;ll jump ship as soon as something of equivalent functionality comes along.&lt;/p&gt; 
&lt;p&gt;Two books, &lt;a href="http://gettingreal.37signals.com/toc.php"&gt;Getting Real&lt;/a&gt; and &lt;a href="http://www.amazon.com/gp/product/0672326140"&gt;Inmates are Running the Asylum&lt;/a&gt;, lead me on the path to not only empathizing with and caring about the users of my applications, but also introduced me to my two biggest influences in software design: &lt;a href="http://37signals.com/"&gt;37signals&lt;/a&gt; and &lt;a href="http://www.cooper.com/"&gt;Cooper&lt;/a&gt;. In this spirit, I am going to explore implementing a blog by bringing some UX and UI design basics into the forefront. Along the way, I&amp;rsquo;ll introduce some technologies I am experimenting with, and detail some of my coding practices.&lt;/p&gt; 
&lt;h2&gt;Interesting implications&lt;/h2&gt; 
&lt;p&gt;&lt;strong&gt;&lt;em&gt;Know what you&amp;rsquo;re building&lt;/em&gt;&lt;/strong&gt;. This is rule #0 for software. Have a purpose, a direction. A lot of blog &amp;ldquo;features&amp;rdquo; I notice provide little to no value to users, they are simply visual noise. Doing even a little bit of analysis beforehand allows a software designer to figure out the answers to these important questions:&lt;/p&gt; 
&lt;ul&gt; 
    &lt;li&gt;Who are the users?&lt;/li&gt; 
    &lt;li&gt;What are their goals?&lt;/li&gt; 
    &lt;li&gt;What is the barest minimum amount of functionality necessary to meet basic goals?&lt;/li&gt; 
&lt;/ul&gt; 
&lt;p&gt;Once those questions are answered, it&amp;rsquo;s time to get the minimum functionality out in front of the users.&lt;/p&gt; 
&lt;p&gt;From &lt;a href="http://gettingreal.37signals.com/ch06_Race_to_Running_Software.php"&gt;Getting Real&lt;/a&gt;:&lt;/p&gt; 
&lt;blockquote&gt; 
&lt;p&gt;With real, running software everyone gets closer to true understanding and agreement. You avoid heated arguments over sketches and paragraphs that wind up turning out not to matter anyway. You realize that parts you thought were trivial are actually quite crucial.&lt;/p&gt; 
&lt;p&gt;Real things lead to real reactions. And that's how you get to the truth.&lt;/p&gt; 
&lt;/blockquote&gt; 
&lt;p&gt;Nothing is more important.&lt;/p&gt; 
&lt;h2&gt;Don&amp;rsquo;t leave me hangin&amp;rsquo;&lt;/h2&gt; 
&lt;p&gt;My goal is to replace &lt;a href="http://graffiticms.com/"&gt;Graffiti&lt;/a&gt; as my blog engine as soon as possible and to provide additional high value enhancements one by one. To get started, I&amp;rsquo;ll need to:&lt;/p&gt; 
&lt;ul&gt; 
    &lt;li&gt;view blog posts&lt;/li&gt; 
    &lt;li&gt;receive comments&lt;/li&gt; 
    &lt;li&gt;generate Google friendly urls&lt;/li&gt; 
    &lt;li&gt;publish blog posts through Windows Live Writer&lt;/li&gt; 
&lt;/ul&gt; 
&lt;p&gt;Yes, that&amp;rsquo;s it. The workload is even smaller because I will continue to let the professionals over at &lt;a href="http://disqus.com/"&gt;disqus&lt;/a&gt; handle my comments and I am going to start out using a &lt;a href="http://vasters.com/clemensv/PermaLink,guid,679ca50b-c907-4831-81c4-369ef7b85839.aspx"&gt;prebuilt WCF implementation of the MetaWeblog API&lt;/a&gt; to allow me to publish posts through Windows Live Writer. It seems it should take me less time to implement the first release of the blog than it did to write this post. We shall see.&lt;/p&gt; </content>

<author>
<name>Brian Mavity</name>
</author>
</entry>

<entry>
<title>Answering the Rob Conery Challenge</title>

<link href="http://blog.brianmavity.com/answering-the-rob-conery-challenge" />

<id>tag:brianmavity.com,2009-09-04:/blog/20090904050000000</id>

<published>2009-09-04T05:00:00.000Z</published>

<updated>2009-09-04T05:00:00.000Z</updated>

<content type="html">&lt;p&gt;As I mentioned previously, I have been interested in writing my own blog engine, mainly for the sake of learning some new technologies. I understand that prevailing wisdom is that writing a blog is boring and uninteresting work, but Rob Conery put a spin on it when he &lt;a href="http://blog.wekeroad.com/blog/be-a-good-jedi-build-your-own-blog/"&gt;invited developers to write their own blog engines and use them as their resumes (or lightsabers).&lt;/a&gt; It has been 6 weeks since my last post, and although I have not yet made my first commit to a source control server, I have made, as one of my college physics professors used to say, &amp;ldquo;fair to middlin&amp;rsquo;&amp;rdquo; progress.&lt;/p&gt;

&lt;h3&gt;What seems to be the problem?&lt;/h3&gt;

&lt;p&gt;In a classic case of d&amp;#0233;j&amp;#0224; vu all over again, I decided that I was going to make this a &amp;ldquo;real&amp;rdquo; learning experience. By the time I sat down to dig into all the new things I&amp;rsquo;d need to learn for this simple project, the list had become quite the spectacle. Let&amp;rsquo;s see if I can remember all of the technologies I have spent at least 4 hours of time on in the past 6 weeks: &lt;a href="http://boo.codehaus.org/"&gt;boo&lt;/a&gt;, &lt;a href="http://fubumvc.pbworks.com/"&gt;FubuMVC&lt;/a&gt;, &lt;a href="http://sparkviewengine.com/"&gt;Spark View Engine&lt;/a&gt;, &lt;a href="http://couchdb.apache.org/"&gt;Couch DB&lt;/a&gt;, &lt;a href="http://storyteller.tigris.org/"&gt;StoryTeller&lt;/a&gt;, &lt;a href="http://seleniumhq.org/projects/remote-control/"&gt;Selenium&lt;/a&gt;, &lt;a href="http://www.mono-project.com/Main_Page"&gt;Mono&lt;/a&gt;, &lt;a href="http://monodevelop.com/"&gt;MonoDevelop&lt;/a&gt;, &lt;a href="http://www.ubuntu.com/"&gt;Ubuntu&lt;/a&gt;, &lt;a href="http://www.icsharpcode.net/OpenSource/SD/"&gt;SharpDevelop&lt;/a&gt;, and &lt;a href="http://www.db4o.com/"&gt;db4o&lt;/a&gt;. Now consider the technologies I&amp;rsquo;ll be using that I have had prior experience with: html, css, JavaScript, and &lt;a href="http://pivotallabs.com/users/nick/blog/articles/433-screw-unit-a-new-js-testing-framework-version-0-1"&gt;screw-unit&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;The result was that I spent a significant percentage of my time learning 11 new technologies, and an infinitesimally small amount of time with the ones I knew. I fell prey to fact 6 in the &lt;a href="http://www.amazon.com/Facts-Fallacies-Software-Engineering-Robert/dp/0321117425"&gt;Facts and Fallacies of Software Engineering&lt;/a&gt;.&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;Learning a new tool or technique actually lowers programmer productivity and product quality initially. The eventual benefit is achieved only after this learning curve is overcome. Therefore, it is worth adopting new tools and techniques, but only (a) if their value is seen realistically and (b) if patience is used in measuring benefits.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;I barely scratched the surface of anything but FubuMVC and Spark, so while I did gain some knowledge, my productivity was essentially ground to a halt under the oppressive yoke of uncertainty.&lt;/p&gt;

&lt;h3&gt;That&amp;rsquo;s not so bad, is it?&lt;/h3&gt;

&lt;p&gt;That list did not materialize overnight, each and every addition had a legitimate reason to be included. What&amp;rsquo;s the harm? After all, I have a significant interest in learning all of those technologies, learning is a good thing, and good things are, well, &lt;em&gt;good&lt;/em&gt;. Right? Wrong. Know what&amp;rsquo;s better than good? Great. You know what would be great? Actually delivering something! If I go by the only metric that really matters, &lt;a href="http://gettingreal.37signals.com/ch06_Done.php"&gt;execution&lt;/a&gt;, this blog project has been a spectacular failure up until this point.&lt;/p&gt;

&lt;p&gt;I ended up getting so bogged down in all the learning, that I never got into a flow. More than one night ended in frustration when I didn&amp;rsquo;t make any forward progress. When I did manage the occasionally herculean task of getting something to work, more often than not, I would be content to consider &lt;strong&gt;that&lt;/strong&gt; my victory for the evening and head off to bed. &lt;/p&gt;

&lt;h3&gt;Out of the ashes&lt;/h3&gt;

&lt;p&gt;Am I doomed to this life of never getting any of my fun projects &lt;strike&gt;started&lt;/strike&gt; finished? In an effort to answer this question in a positive manner, this past week has been a reevaluation of my priorities and a significant paring down of the shiny new toys. I am still going to use FubuMVC, Spark, StoryTeller, and Selenium. I have been using the latter two at work so they aren&amp;rsquo;t going to impede my progress, but I am switching back to Visual Studio and c# for my coding and likely to SQL Server Expression for my data store. I now have very little that I&amp;rsquo;ll have to fight conceptually, which should allow me to get things done (git r done?) and gain some momentum.&lt;/p&gt;

&lt;p&gt;The progress I have made so far does not include any code, but that&amp;rsquo;s not the first step in producing a product. Most importantly, I have a &lt;a href="http://gettingreal.37signals.com/ch09_Interface_First.php"&gt;preliminary UI design&lt;/a&gt; and a &lt;a href="http://gettingreal.37signals.com/ch02_Build_Less.php"&gt;small list of features&lt;/a&gt; that are required for me to begin using my blog engine for these posts. I have given myself an attainable goal and my brain is no longer scattered to the four corners of the earth. It is time to move forward.&lt;/p&gt;

&lt;h3&gt;Parting Words of Wisdom&lt;/h3&gt;

&lt;p&gt;Learning for learning&amp;rsquo;s sake is ok in small doses, but directed, focused learning used to reach a goal is like keeping a fine edge on your sword, even if it happens to be made of light.&lt;/p&gt;</content>

<author>
<name>Brian Mavity</name>
</author>
</entry>

<entry>
<title>I'm not dead</title>

<link href="http://blog.brianmavity.com/i-m-not-dead" />

<id>tag:brianmavity.com,2009-07-25:/blog/20090725050000000</id>

<published>2009-07-25T05:00:00.000Z</published>

<updated>2009-07-25T05:00:00.000Z</updated>

<content type="html">&lt;p&gt;Although it was probably obvious from the fact that my hosting company did not pull the plug on my website, I did want to confirm that I am indeed not dead. I have been avoiding changing the theme of my blog because I want to write a simple blog engine using &lt;a href="http://fubumvc.pbworks.com/"&gt;FubuMVC&lt;/a&gt;, but the &lt;a href="http://74.125.113.132/search?q=cache:_VFL4ltFMawJ:www.brianmavity.com/+brian+mavity&amp;amp;cd=1&amp;amp;hl=en&amp;amp;ct=clnk&amp;amp;gl=us"&gt;ugliness of the puzzle theme&lt;/a&gt; got to me before my coding skillz caught up.&lt;/p&gt; 
&lt;p&gt;Since my last post, I have attended &lt;a href="http://altnetseattle.pbworks.com/"&gt;alt.net Seattle&lt;/a&gt;, &lt;a href="http://iowacodecamp.com/default.aspx"&gt;Iowa code camp&lt;/a&gt;, and &lt;a href="http://www.chicagocodecamp.com/"&gt;Chicago code camp&lt;/a&gt;. I got to hang out with a bunch of great people and I learned a bunch at all the events. I can&amp;rsquo;t stress enough &lt;a href="http://www.brianmavity.com/blog/i-have-lost-my-virginity-and-you-should-too/"&gt;how important it is for developers to get out there and get exposed to different view points&lt;/a&gt;. My next &amp;ldquo;appearance&amp;rdquo; will be at &lt;a href="http://monospace.us/"&gt;MonoSpace conf&lt;/a&gt; in October. I&amp;rsquo;m extremely excited about it, and if you&amp;rsquo;re headed there, feel free to leave a comment and we can meet up and grab a beer.&lt;/p&gt; 
&lt;p&gt;As for coding, I have a handful of projects on the backburner. I am hoping that they will produce a steady stream of interesting blog posts, if not some interesting results. I don&amp;rsquo;t want to jinx anything by being specific, but I will say that I&amp;rsquo;m keeping my fingers crossed. ;)&lt;/p&gt;</content>

<author>
<name>Brian Mavity</name>
</author>
</entry>

<entry>
<title>37signals Gets It In a Way That Most People Don't</title>

<link href="http://blog.brianmavity.com/37signals-gets-it-in-a-way-that-most-people-don-t" />

<id>tag:brianmavity.com,2009-02-04:/blog/20090204060000000</id>

<published>2009-02-04T06:00:00.000Z</published>

<updated>2009-02-04T06:00:00.000Z</updated>

<content type="html">&lt;p&gt;Today is Basecamp&amp;rsquo;s 5th birthday. I am not a Basecamp user, but the birthday announcement spoke to me at a very deep level. The most powerful part of it for me was&lt;/p&gt; 
&lt;blockquote&gt;One of the most rewarding things has been showing people that there&amp;rsquo;s a different way, a better way. Software doesn&amp;rsquo;t have to be a pain in the ass. Software doesn&amp;rsquo;t have to get in the way. Software isn&amp;rsquo;t about feature lists and sensational promises. Software is a concise set of tools that serve as an extension of your own mind. Great software lets you get things done and then it gets out of your way.&lt;/blockquote&gt; </content>

<author>
<name>Brian Mavity</name>
</author>
</entry>

<entry>
<title>Pragmatic Investment Plan: An Example</title>

<link href="http://blog.brianmavity.com/pragmatic-investment-plan-an-example" />

<id>tag:brianmavity.com,2009-01-24:/blog/20090124060000000</id>

<published>2009-01-24T06:00:00.000Z</published>

<updated>2009-01-24T06:00:00.000Z</updated>

<content type="html">&lt;p&gt;&lt;a href="http://www.brianmavity.com/blog/2009-part-2-pragmatic-investment-plan/"&gt;Previously&lt;/a&gt;, I outlined what a Pragmatic Investment Plan (PIP) is and why it may be relevant to people who are looking for more structure in the way they going about learning and improving themselves. I feel strongly about including concrete examples to complement abstract descriptions, but since my last post was already a bit long, I decided that for the sake of anyone reading, my example would be have to be a separate post. The upside is that now I can provide some of the detail that needed to be cut in the interest of brevity.&lt;/p&gt; 
&lt;h3&gt;Pragmatic Investment Plan&lt;/h3&gt; 
&lt;p&gt;A PIP, while never finished by definition, still has to have a first version. My initial PIP is not quite complete yet, but one of the goals it includes is learning &lt;a href="http://haskell.org/"&gt;Haskell&lt;/a&gt;. You may be thinking, &amp;quot;Wait, didn&amp;rsquo;t you say in the last post that &amp;quot;learning Haskell&amp;quot; was not specific enough to be a goal?&amp;quot; To that, I say to you, &amp;quot;Good catch!&amp;quot; My goal which involves Haskell is officially, &amp;quot;I want to write a Haskell application which displays a GUI, accesses the file system, and uses a database.&amp;quot; I&amp;rsquo;ll address the five categories of my PIP as it relates to Haskell.&lt;/p&gt; 
&lt;h5&gt;&lt;strong&gt;Have a concrete plan&lt;/strong&gt;&lt;/h5&gt; 
&lt;p&gt;I want to read all the chapters and complete all the coding examples in the &lt;a href="http://www.realworldhaskell.org/blog/"&gt;Real World Haskell&lt;/a&gt; book, and participate in the &lt;a href="http://groups.google.com/group/real-world-haskell-book-club"&gt;Real World Haskell Book Club&lt;/a&gt; every week.&lt;/p&gt; 
&lt;h5&gt;&lt;strong&gt;Diversify&lt;/strong&gt;&lt;/h5&gt; 
&lt;p&gt;I have only programmed in &lt;a href="http://en.wikipedia.org/wiki/Object_oriented_programming"&gt;Object Oriented&lt;/a&gt; or &lt;a href="http://en.wikipedia.org/wiki/Procedural_programming"&gt;Procedural&lt;/a&gt; languages, so a &lt;a href="http://en.wikipedia.org/wiki/Functional_programming"&gt;Functional&lt;/a&gt; language will be a big mind shift.&lt;/p&gt; 
&lt;h5&gt;&lt;strong&gt;Make an active, not passive, investment&lt;/strong&gt;&lt;/h5&gt; 
&lt;p&gt;I will monitor my progress and make sure that my end goal is still something I want to pursue.&lt;/p&gt; 
&lt;h5&gt;Make a regular investment&lt;/h5&gt; 
&lt;p&gt;The book club meets every week and discusses a new chapter, so I will need to spend at least a couple of days every week following along with the book and programming.&lt;/p&gt; 
&lt;h3&gt;The SMART Part&lt;/h3&gt; 
&lt;p&gt;My first objective to achieve my goal is, &amp;quot;I will read Chapters 3 and 4 of the Real World Haskell book and complete all the examples within those chapters.&amp;quot; Notice that I am making a positive statement that provides a clear vision on what I am going to accomplish. I&amp;rsquo;ll break this objective down as it relates to SMART and provide some additional analysis.&lt;/p&gt; 
&lt;h5&gt;Specific&lt;/h5&gt; 
&lt;p&gt;The objective contains no ambiguity. Being specific leads directly to being measurable.&lt;/p&gt; 
&lt;h5&gt;Measurable&lt;/h5&gt; 
&lt;p&gt;The objective is met if I finish these chapters. The result is obvious, which is exactly what is desired, because I need to know when I&amp;rsquo;m done and that it&amp;rsquo;s time to move on to my next objective.&lt;/p&gt; 
&lt;h5&gt;Achievable&lt;/h5&gt; 
&lt;p&gt;The objective is something that is within my current capabilities. Ideally, it should have been something that pushed up against my limitations, because learning things that require new or more skillful activities will allow me to grow. This objective won&amp;rsquo;t really stretch me that far, but I&amp;rsquo;m ok with it, because we are still in the intro chapters. I am nominally familiar with functional programming concepts, although not Haskell in particular, and I have read that it gets harder very soon.&lt;/p&gt; 
&lt;h5&gt;Relevant&lt;/h5&gt; 
&lt;p&gt;Haskell, and functional programming, is different in a way that I find fascinating, and this is important because being interested and excited about an objective makes it much more likely to be completed.&lt;/p&gt; 
&lt;h5&gt;Time-Boxed&lt;/h5&gt; 
&lt;p&gt;Because the Real World Haskell Book Club meets weekly, I have a week to finish each chapter. Having a deadline not only forces more action and less procrastination, it also gives the satisfaction of success. Repeated, small successes provide positive reinforcement and lead to bigger successes.&lt;/p&gt; 
&lt;h3&gt;A Piece of the Overall Plan&lt;/h3&gt; 
&lt;p&gt;A PIP should not (but can) be limited to a single goal and the goals should be spread across multiple areas of interest. Part of &amp;quot;Diversify&amp;quot; includes getting outside of your area of expertise. There are things that I have wanted to do for a long time that are not tech related (learning piano and learning Spanish are two of them) and they will likely be included in my PIP in the future.&lt;/p&gt; 
&lt;p&gt;What I like is that at its core, a Pragmatic Investment Plan is a guideline on defining goals and achieving them. It&amp;rsquo;s an ongoing process that doesn&amp;rsquo;t need to be perfect the first time. It&amp;rsquo;s iterative, giving me the ability to focus on the short term and quickly change my tactics if something isn&amp;rsquo;t working. I&amp;rsquo;m excited to start on this journey, and if I&amp;rsquo;ve piqued your interest, you should go ahead and dive in!&lt;/p&gt;</content>

<author>
<name>Brian Mavity</name>
</author>
</entry>

<entry>
<title>2009 Part 2 - Pragmatic Investment Plan</title>

<link href="http://blog.brianmavity.com/2009-part-2-pragmatic-investment-plan" />

<id>tag:brianmavity.com,2009-01-23:/blog/20090123060000000</id>

<published>2009-01-23T06:00:00.000Z</published>

<updated>2009-01-23T06:00:00.000Z</updated>

<content type="html">&lt;p&gt;In my &lt;a href="http://www.brianmavity.com/blog/2009-part-1-pragmatic-thinking-and-learning/"&gt;previous blog post&lt;/a&gt;, I discussed the book &lt;a href="http://www.amazon.com/s/ref=nb_ss_gw_0_14?url=search-alias%3Daps&amp;amp;field-keywords=pragmatic+thinking+and+learning&amp;amp;x=0&amp;amp;y=0&amp;amp;sprefix=pragmatic+thin"&gt;Pragmatic Thinking and Learning&lt;/a&gt; from Andy Hunt of &lt;a href="http://www.pragprog.com/"&gt;Pragmatic Programmer&lt;/a&gt; fame. As part of the Pragmatic Programmer consulting practice, they present a concept called the Pragmatic Investment Plan (PIP), and a shortened version is outlined in the book. The idea is that you should treat your knowledge portfolio the same way you'd treat your financial portfolio.&lt;/p&gt; 
&lt;h3&gt;Say What?&lt;/h3&gt; 
&lt;p&gt;If you're investing your money, you do logical things like having a solid plan of action and diversifying your investments. You also want to keep track of your plans and tweak them when they need it. The same reasoning applies with your knowledge investment. You want to make sure that you have a concrete plan of what you're going to learn. You also need to make sure that you don't invest too heavily in one type of technology, say OOP when you could be doing some functional programming or only static languages when you could be learning how to program in a dynamic language. The best part about this is that no matter what you learn, it all has value. Even if you're not using something directly on your job, what you have learned still affects your thinking and therefore gives you a broadened perspective.&lt;/p&gt; 
&lt;p&gt;For your PIP, make sure that you&lt;/p&gt; 
&lt;blockquote&gt; 
&lt;ul&gt; 
    &lt;li&gt;Have a concrete plan.&lt;/li&gt; 
    &lt;li&gt;Diversify.&lt;/li&gt; 
    &lt;li&gt;Make an active, not passive, investment.&lt;/li&gt; 
    &lt;li&gt;Make a regular investment.&lt;/li&gt; 
&lt;/ul&gt; 
&lt;/blockquote&gt; 
&lt;h3&gt;Be SMART&lt;/h3&gt; 
&lt;p&gt;The PIP is a higher level concept, and as such, it is purposefully vague about the details of making your investment. The book does give some guidance in the way of &lt;a href="http://en.wikipedia.org/wiki/SMART_(project_management)"&gt;SMART Objectives&lt;/a&gt;. Using the book's definition, the acronym SMART stands for&lt;/p&gt; 
&lt;ul&gt; 
    &lt;li&gt;Specific&lt;/li&gt; 
    &lt;li&gt;Measurable&lt;/li&gt; 
    &lt;li&gt;Achievable&lt;/li&gt; 
    &lt;li&gt;Relevant&lt;/li&gt; 
    &lt;li&gt;Time-Boxed&lt;/li&gt; 
&lt;/ul&gt; 
&lt;p&gt;Just stating a goal like &amp;quot;Learning Haskell&amp;quot; is not enough. Goals need to be better defined and broken down into smaller objectives. Each objective should have all of the properties shown above. By narrowing the focus of an objective to a well defined activity that you enjoy and giving yourself a deadline, you vastly increase the odds of actually achieving your goal.&lt;/p&gt; 
&lt;h3&gt;The Power of Less&lt;/h3&gt; 
&lt;p&gt;&lt;a href="http://www.fourhourworkweek.com/blog/2009/01/07/the-power-of-less-leo-babauta-zen-habits/"&gt;Tim Ferriss&lt;/a&gt; recently posted a review of a book called &lt;a href="http://www.amazon.com/Power-Less-Limiting-Yourself-Essential/dp/1401309704/ref=pd_bbs_sr_1?ie=UTF8&amp;amp;s=books&amp;amp;qid=1232690151&amp;amp;sr=8-1"&gt;The Power of Less&lt;/a&gt; on his blog. An excerpt of Chapter 5 deals with successfully breaking habits. The author referred to a strategy he called &amp;quot;The Power of Less Challenge&amp;quot; which is focused on tackling one habit at a time.&lt;/p&gt; 
&lt;blockquote&gt; 
&lt;p&gt;1. Select one habit for the Challenge. Only &lt;strong&gt;one habit per month&lt;/strong&gt;. You can choose any habit &amp;mdash; whatever you think will have the biggest impact on your life.&lt;/p&gt; 
&lt;p&gt;2. Write down your plan. You will need to specifically state what your goal will be each day, when you&amp;rsquo;ll do it, &lt;strong&gt;what your &amp;ldquo;trigger&amp;rdquo; will be (the event that will immediately precede the habit that&amp;rsquo;s already a part of your routine &amp;mdash; such as exercising right after you brush your teeth)&lt;/strong&gt;, who you will report to (see below).&lt;/p&gt; 
&lt;p&gt;3. Post your goal publicly. Tell as many people as possible that you are trying to form your new habit. I suggest an online forum, but you could email it to coworkers and family and friends or otherwise get the word out to a large group.&lt;/p&gt; 
&lt;p&gt;4. Report on your progress daily. Each day, tell the same group of people whether or not you succeeded at your goal.&lt;/p&gt; 
&lt;/blockquote&gt; 
&lt;p&gt;I see some common themes between this, SMART, and the PIP. I think the key point to focus on here is to be specific with the activity you are trying to accomplish. When you couple that with a plan of action and small milestones, it creates a very effective combination.&lt;/p&gt; 
&lt;h3&gt;Where do I go from here?&lt;/h3&gt; 
&lt;p&gt;While I do like the idea of being public about my habits and goals, I am not yet sure if I want to devote a section of my web site to daily progress. For the time being, I am going to say that would be overkill. In the future, if I feel like I am not making decent enough progress, I may employ that technique. In the meantime, I hope this post can be helpful to the people like me that sometimes have trouble focusing on specific activities for learning and end up expending their energies in many places at once.&lt;/p&gt; 
&lt;p&gt;&lt;strong&gt;Note:&lt;/strong&gt; Since this post got too long, I didn't want to include my specific example. I will follow up with specific example no later than this weekend.&lt;/p&gt;</content>

<author>
<name>Brian Mavity</name>
</author>
</entry>

<entry>
<title>2009 Part 1 - Pragmatic Thinking and Learning</title>

<link href="http://blog.brianmavity.com/2009-part-1-pragmatic-thinking-and-learning" />

<id>tag:brianmavity.com,2009-01-09:/blog/20090109060000000</id>

<published>2009-01-09T06:00:00.000Z</published>

<updated>2009-01-09T06:00:00.000Z</updated>

<content type="html">&lt;p&gt;It's 2009, a new year, time for resolutions, end of the year blog lists, and future plan blog posts. I decided to share my resolutions in a blog post, but then I remembered that resolutions suck eggs (Yeah, I said eggs). This left me with a choice between some type of &lt;a href="http://www.lostechies.com/blogs/jimmy_bogard/archive/2009/01/04/10-things-to-embrace-in-2009.aspx"&gt;clever list&lt;/a&gt; or my future plans. Sadly for the world, the clever bug has not bitten me in quite a while so it is stuck with my plans for the new year. As an added bonus, it's going to be a two parter!&lt;/p&gt; 
&lt;h3&gt;The Book&lt;/h3&gt; 
&lt;p&gt;Over my Christmas break, I read &lt;a href="http://www.pragprog.com/titles/ahptl/pragmatic-thinking-and-learning"&gt;Pragmatic Thinking and Learning&lt;/a&gt; from the &lt;a href="http://www.pragprog.com/"&gt;Pragmatic Programmers&lt;/a&gt;. I was quite impressed with the ideas and how they were presented. In a nutshell (hah!), the book describes the human brain as having two modes: linear (L) and rich (R). (The &amp;quot;L&amp;quot; and the &amp;quot;R&amp;quot; correspond to the misnomer of a left and right brain) It describes how they function and how this relates to the ways in which software developers work. It goes on to recommend various actions that can be used to improve mental performance and awareness.&lt;/p&gt; 
&lt;p&gt;In typical Brian Mavity (that's me) fashion, I became so highly motivated to start putting some these ideas into practice that I was ready to try about 30 of them at once. The phrase, &amp;quot;Like a kid in a candy store,&amp;quot; comes to mind. But when rereading the part of the book that I will discuss next, the recommendation was to focus on the one most important thing that I could do right now. (it's like it just knows... freaky!)&lt;/p&gt; 
&lt;h3&gt;A Focused Plan of Action&lt;/h3&gt; 
&lt;p&gt;Because that advice is also in the spirit of being lean, I decided on developing a Pragmatic Investment Plan. A quick Google search will highlight that I am not the first person to have this idea, but the idea is so compelling that I am quite sure I will not be the last. That will likely be the topic of my next blog post. (Maybe I should change my blog title to &amp;quot;Welcome to Snoozeville.&amp;quot;)&lt;/p&gt; 
&lt;h3&gt;Ok, Maybe Not&lt;/h3&gt; 
&lt;p&gt;Unfortunately, while I did identify the one next step, I couldn't just limit myself to one idea. I decided on including two more items that I feel will be very beneficial. Mind maps and morning writings.&lt;/p&gt; 
&lt;p&gt;Mind maps are a type of visual outline that are drawn on unlined paper. They allow for a structured, yet extremely creative, arrangement of concepts and ideas. I have already created a couple of these, and my early impressions are positive. The way I arrange the items on the paper frees my mind to be creative in a way that a traditional outline would not. As a side note, mind maps are apparently extremely common in Europe while being almost non existent in the United States. Weird.&lt;/p&gt; 
&lt;p&gt;And finally, morning writings are a way to get ideas flowing before your linear mode kicks in. The premise is that if you write (not type) 3 pages a day just after you wake up, you will begin to express ideas that have been brewing in the rich mode of your brain. This means before coffee, before showering, before breakfast. First thing. I figure that I need practice writing, so any extra creativity will be a bonus. It'll be worth a shot.&lt;/p&gt; 
&lt;h3&gt;Two Days in a Row! What's next?&lt;/h3&gt; 
&lt;p&gt;I hope everyone has had a great 2009 so far, and I look forward to providing you with some interesting content (at some point). If you're looking for a unique perspective on learning and creativity, I highly recommend Pragmatic Thinking and Learning. Keep an eye out for a detailed description of my Pragmatic Investment Plan and how I went about deciding on it. And remember, resolutions suck eggs.&lt;/p&gt; </content>

<author>
<name>Brian Mavity</name>
</author>
</entry>

<entry>
<title>I have lost my virginity (and you should too)</title>

<link href="http://blog.brianmavity.com/i-have-lost-my-virginity-and-you-should-too" />

<id>tag:brianmavity.com,2008-10-30:/blog/20081030050000000</id>

<published>2008-10-30T05:00:00.000Z</published>

<updated>2008-10-30T05:00:00.000Z</updated>

<content type="html">&lt;p&gt;I am in Austin for &lt;a href="http://www.kaizenconf.com/"&gt;kaizenconf&lt;/a&gt;. This would not be unusual in any respect except for the fact that I have never been to a software development conference. The closest I have come was &lt;a href="http://www.codeapalooza.com/"&gt;Codeapalooza&lt;/a&gt;, but that was a one day event. What really stands out is the impact of being in the same room and discussing issues with &lt;a href="http://codebetter.com/blogs/jeremy.miller/default.aspx"&gt;bloggers&lt;/a&gt; I &lt;a href="http://codebetter.com/blogs/david_laribee/default.aspx"&gt;read&lt;/a&gt; and &lt;a href="http://ayende.com/Blog/"&gt;respect&lt;/a&gt;. I'm not gonna lie, it's still a bit intimidating.&lt;/p&gt; 
&lt;p&gt;It's obvious even after one day that this trip will more than pay for itself with the insights that I will gain and the improvement to my skill set that will result. One of the things I really respect about &lt;a href="http://www.kaizenconf.com/"&gt;kaizenconf&lt;/a&gt; is that nobody is trying to sell you the &lt;a href="http://microsoftpdc.com/"&gt;next greatest thing&lt;/a&gt;. It's all about improving the craft along with the &lt;a href="http://en.wikipedia.org/wiki/Behavior_Driven_Development"&gt;tools&lt;/a&gt; and &lt;a href="http://codebetter.com/blogs/david_laribee/archive/2008/04/22/iterations-vs-flow.aspx"&gt;concepts&lt;/a&gt; that will facilitate that improvement.&lt;/p&gt; 
&lt;p&gt;But the truth of the matter is that the important part of the experience is the human interaction. I am convinced (yes, after one day) that conferences are essential to developer growth. I find it sad that not all companies subsidize conference attendance for their developers. It seems to me that if any company not offering this opportunity is tacitly admitting it is uninterested in investing in its developers.&lt;/p&gt; 
&lt;h3&gt;The bottom line&lt;/h3&gt; 
&lt;p&gt;As a software developer, I know there are often many legitimate reasons to stay with a company. However, if you are reading blogs then you are in the &lt;a href="http://www.codinghorror.com/blog/archives/001004.html"&gt;top 20% of developers&lt;/a&gt; and you have earned an investment by caring deeply about your craft. Insist that your company invest in you, or find one that will. You are worth it.&lt;/p&gt;</content>

<author>
<name>Brian Mavity</name>
</author>
</entry>

<entry>
<title>First!</title>

<link href="http://blog.brianmavity.com/first" />

<id>tag:brianmavity.com,2008-09-05:/blog/20080905050000000</id>

<published>2008-09-05T05:00:00.000Z</published>

<updated>2008-09-05T05:00:00.000Z</updated>

<content type="html">&lt;p&gt;And with that age old (relatively speaking) tradition of uselessness from the web, I open myself to the world.&lt;/p&gt; 
&lt;h3&gt;Why a blog?&lt;/h3&gt; 
&lt;p&gt;I feel that developers need to have both strong oral and written communication skills. I decided that by making a &lt;a href="http://www.codinghorror.com/blog/archives/000983.html"&gt;commitment to blogging&lt;/a&gt;, I could reap what I consider to be major benefits.&lt;/p&gt; 
&lt;ul&gt; 
    &lt;li&gt;Improve my writing skills by... writing&lt;/li&gt; 
    &lt;li&gt;Improve my level of knowledge by researching posts&lt;/li&gt; 
    &lt;li&gt;Get to know others in the community by providing informative posts&lt;/li&gt; 
    &lt;li&gt;Improve my development skills by interacting with others in the community&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h3&gt;Which way do I lean?&lt;/h3&gt; 
&lt;p&gt;Not like that... pervs! I am a .net developer, and I feel like our community can be broadly categorized into two camps. The first camp is data first, focusing on the database and having all code follow from there. The second is code first, focusing on an expressive Domain Model and Ubiquitous Language. Even though first camp is the vast majority, I fall into second. I consider myself an &lt;a href="http://altdotnet.org"&gt;alt.net&lt;/a&gt; person. Since I first wandered along to a post about tdd, by &lt;a href="http://codebetter.com/blogs/jeremy.miller/default.aspx"&gt;Jeremy Miller&lt;/a&gt;, the alt.net set of core values have just made sense to me.&lt;/p&gt; 
&lt;h3&gt;What can you expect?&lt;/h3&gt; 
&lt;p&gt;My current commitment to myself is to make one blog post a week. In the spirit of the &lt;a href="http://www.pragprog.com/"&gt;Pragmatic Programmers&lt;/a&gt;, I am learning a new language, &lt;a href="http://boo.codehaus.org/"&gt;Boo&lt;/a&gt;. I hope to start contributing to the &lt;a href="http://github.com/olsonjeffery/boolangstudio/tree/master"&gt;BooLangStudio&lt;/a&gt; project very soon. I am also very interested in &lt;a href="http://domaindrivendesign.org/"&gt;Domain Driven Design&lt;/a&gt;, &lt;a href="http://behaviour-driven.org/"&gt;Behavior Driven Development&lt;/a&gt;, &lt;a href="http://en.wikipedia.org/wiki/Interaction_design"&gt;Interaction Design&lt;/a&gt;, &lt;a href="http://butunclebob.com/ArticleS.UncleBob.PrinciplesOfOod"&gt;SOLID Object Oriented Principles&lt;/a&gt;, and &lt;a href="http://www.poppendieck.com/design.htm"&gt;Lean&lt;/a&gt;. Posts pertaining to these topics should find their way into this area some time soon.&lt;/p&gt; 
&lt;h3&gt;Get it over with already!&lt;/h3&gt; 
&lt;p&gt;I hope that readers can find my blog useful. I want to encourage anyone to email me (bmavity xxATxx brianmavity xxDOTxx com) with any questions or comments. I plan on learning throughout this experience, and extend an invitation to everyone else to &lt;em&gt;learn with me&lt;/em&gt;.&lt;/p&gt; 
&lt;p&gt; 
 
&lt;/p&gt; </content>

<author>
<name>Brian Mavity</name>
</author>
</entry>
</feed>

