<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:blogChannel="http://backend.userland.com/blogChannelModule" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:pingback="http://madskills.com/public/xml/rss/module/pingback/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:betag="https://blogengine.io/schemas/tags">
  <channel>
    <title>Rob Tennyson</title>
    <description>Software Craftsman</description>
    <link>http://www.robtennyson.us/</link>
    <docs>http://www.rssboard.org/rss-specification</docs>
    <generator>BlogEngine.NET 3.3.8.0</generator>
    <language>en-US</language>
    <blogChannel:blogRoll>http://www.robtennyson.us/opml.axd</blogChannel:blogRoll>
    <dc:creator>Rob Tennyson</dc:creator>
    <dc:title>Rob Tennyson</dc:title>
    <geo:lat>0.000000</geo:lat>
    <geo:long>0.000000</geo:long>
    <item>
      <title>Social Communication Disorder</title>
      <description>&lt;h3&gt;The Long and Short of it&lt;/h3&gt;
&lt;p&gt;I was diagnosed with SCD October 2nd, 2019.&lt;/p&gt;
&lt;p&gt;This post isn't any kind of plea. I'm not looking for any kind of special treatment going forward or even forgiveness for my past behavior (though I probably do owe an apology or two). My hope is that it serves as a convenient place to point people in the future. It would also be nice if someone else new to SCD stumbles across this and it makes them feel better knowing they're not alone.&lt;/p&gt;
&lt;h3&gt;What is Social Communication Disorder?&lt;/h3&gt;
&lt;p&gt;It's also sometimes referred to as &lt;em&gt;Social (Pragmatic) Communication Disorder&lt;/em&gt; and &lt;em&gt;Pragmatic language impairment&lt;/em&gt;. It's coded as DSM-5 315.39 (F80.89).&lt;/p&gt;
&lt;p&gt;You can find different explanations all over, but I like the way it's stated in its &lt;a title="Pragmatic language impairment - Wikipedia" href="https://en.wikipedia.org/wiki/Pragmatic_language_impairment" target="_blank"&gt;Wikipedia entry&lt;/a&gt; (at least at the time of this writing):&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Individuals with social communication disorder have particular trouble understanding the meaning of what others are saying, and they are challenged in using language appropriately to get their needs met and interact with others.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Interacting with others is indeed a challenge. My daughters frequently remind me that I have trouble &lt;em&gt;peopling&lt;/em&gt;. While many share this challenge for various reasons, I am apparently physically wired for it... SCD is a &lt;a href="https://en.wikipedia.org/wiki/Neurodevelopmental_disorder" target="_blank"&gt;neurodevelopmental disorder&lt;/a&gt; (my brain wired itself a little off kilter very early in life).&lt;/p&gt;
&lt;h3&gt;Why was I tested?&lt;/h3&gt;
&lt;p&gt;Six months prior to the diagnosis (April), I saw a therapist for the purpose of a kind of checkup. I wanted to ensure I was doing a decent job raising my younger daughter (the older having already grown and moved out). Just asking friends and family wouldn't have been enough (or trusted - bias!), I wanted a professional's opinion. Toward the end of the very first session, the therapist asked me if I had Asperger's Syndrome.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Asperger's Syndrome&lt;/em&gt;? I said I assume not since I have never heard of it. She thought it a strong possibility so sent me home with a link to an online test: &lt;a href="https://rdos.net/eng/Aspie-quiz.php" target="_blank"&gt;Aspie-Quiz&lt;/a&gt;. That test showed what she called "interesting results", but nothing ultimately came of it. Our time together was rather short - she assured me she thought I was doing great by my daughter and didn't know how else she could help. With Asperger's and Autism not being her thing, all she could do was wish me luck and shuffle me along.&lt;/p&gt;
&lt;p&gt;After noodling this new idea for a while, I took a more extensive online test: &lt;a href="https://www.aspietests.org/raads/questions.php?show=f4b5a722374247&amp;amp;locale=en_GB" target="_blank"&gt;The Ritvo Autism Asperger Diagnostic Scale-Revised (RAADS-R)&lt;/a&gt;. That link is specifically to my test result. It shows scores well above the thresholds for being suspected as having ASD. Well that was it for me, now I had to know.&lt;/p&gt;
&lt;h3&gt;Where was I tested?&lt;/h3&gt;
&lt;p&gt;At first I couldn't find anyone local who could do adult ASD evaluations. As luck would have it, a friend at my daughter's karate dojo works in the field and knew someone who might be able to help. She pointed me to &lt;a href="http://centerforprofessionalpsych.com" target="_blank"&gt;The Center for Professional Psychology&lt;/a&gt; down in Fort Smith. I hadn't even considered broadening my search there. &lt;a href="http://centerforprofessionalpsych.com/janissa-d-jackson-phd" target="_blank"&gt;Dr. Jackson&lt;/a&gt; is the psychologist there who helped me and I couldn't be more pleased. She is extremely easy to talk with and really seemed to understand not only me, but everything to do with Autism and Asperger's. I truly felt I was in good hands.&lt;/p&gt;
&lt;p&gt;The evaluation happened over three visits. First was a one hour screening that allowed her to hear my story and determine whether or not Asperger's/Autism was even a possibility. I liked the idea that she wasn't going to waste either of our time if it wasn't. The second visit was the full 4 hour evaluation (IQ test and 4 different psych tests). The final visit was &lt;em&gt;three weeks&lt;/em&gt; later when I got the results.&lt;/p&gt;
&lt;p&gt;The evaluation showed that I am not neurotypical, but also that I do &lt;em&gt;not&lt;/em&gt; exhibit severe enough symptoms to support a diagnosis of Autism.&lt;/p&gt;
&lt;p&gt;Back when Asperger's was still a diagnosis, I would have landed there, but now Asperger's has been split such that the patient is either severe enough to just be called autistic, or the patient is diagnosed with the less severe condition of Social Communication Disorder.&lt;/p&gt;
&lt;h3&gt;TMI - more detail from the psychological evaluation&lt;/h3&gt;
&lt;p&gt;Here are a few notes pulled from the clinical summary.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;This condition involves poor social skills, including problems initiating and maintaining relationships appropriate to his achieved chronological age. It also includes difficulty understanding the perspective of others.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;All of these issues have led and will likely continue to lead to functional impairment in his primary relationships. Social Communication Disorder is a developmental disorder that affects the patient on a chronic and lifelong basis...&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;He processes life from an almost exclusively logical framework and struggles with perspective taking of others who tend to be more emotionally driven.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;Finally, personality testing and interview information identified an overall level of low emotionality with no clinical emotional symptoms. Thus, he has a higher threshold for experiencing emotion than most others and a general tendency towards anhedonia or a lack of enjoyment in activities as others might enjoy. While this limits discomfort, it can also limit positive emotional expression and it may routinely be misunderstood by others.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;&amp;nbsp;All of these issues have led and will likely continue to lead to functional impairment in communication in maintaining interpersonal relationships.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;This was pulled from the section detailing specific test results (MMPI-II-RF in this case).&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;He tends to have less positive experiences than is typical as well as tends to be pessimistic, self-critical, and prone to guilt. Moreover, regarding interpersonal functioning, his response profile indicates that he is likely to avoid social situations, be introverted, have difficulty forming close relationships, and be emotionally restricted. He is likely to be uncomfortable and socially inhibited.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3&gt;Where do I go from here?&lt;/h3&gt;
&lt;p&gt;That's a great question.&lt;/p&gt;
&lt;p&gt;On one hand, I have survived this long. There's a reasonable expectation that I'll plod along just fine the rest of the way too even if I change nothing.&lt;/p&gt;
&lt;p&gt;However, Dr. Jackson did leave me with some great recommendations. Things like continued therapy (including a reference), supplements, volunteering, and something called adult based pragmatic speech therapy. I like the idea of all of these. They might make for some great adventures and stories too.&lt;/p&gt;
&lt;p&gt;I think I'll sit on it for a minute. Spontaneous is not generally a word used to describe my actions. I'll keep you posted.&lt;/p&gt;</description>
      <link>http://www.robtennyson.us/post/social-communication-disorder</link>
      <author>rob@robtennyson.us</author>
      <comments>http://www.robtennyson.us/post/social-communication-disorder#comment</comments>
      <guid>http://www.robtennyson.us/post.aspx?id=5d8865c3-17b7-4ef2-bb87-769c7f06f7fc</guid>
      <pubDate>Tue, 8 Oct 2019 16:30:00 -0500</pubDate>
      <betag:tag>scd</betag:tag>
      <betag:tag>socialcommunicationdisorder</betag:tag>
      <dc:publisher>rtennys</dc:publisher>
      <pingback:server>http://www.robtennyson.us/pingback.axd</pingback:server>
      <pingback:target>http://www.robtennyson.us/post.aspx?id=5d8865c3-17b7-4ef2-bb87-769c7f06f7fc</pingback:target>
      <slash:comments>0</slash:comments>
      <trackback:ping>http://www.robtennyson.us/trackback.axd?id=5d8865c3-17b7-4ef2-bb87-769c7f06f7fc</trackback:ping>
      <wfw:comment>http://www.robtennyson.us/post/social-communication-disorder#comment</wfw:comment>
      <wfw:commentRss>http://www.robtennyson.us/syndication.axd?post=5d8865c3-17b7-4ef2-bb87-769c7f06f7fc</wfw:commentRss>
    </item>
    <item>
      <title>Do You Use All Of Your Unlimited Vacation?</title>
      <description>&lt;h3&gt;Unlimited vacation is a bad idea&lt;/h3&gt;
&lt;p&gt;I used to love the idea, but after having it a few years, I've changed my mind. Even though I had &lt;em&gt;unlimited&lt;/em&gt; vacation, I don't think I took nearly enough time off.&lt;/p&gt;
&lt;p&gt;Not taking enough time off is what inspired the title of this post. Of course you can't take "All" of something that is unlimited. Yet, I would frequently feel short changed on vacation. I don't think it was anything intentional on my employer's part and I don't think it was entirely my fault. I lay the majority of the blame on the notion itself.&lt;/p&gt;
&lt;h3&gt;Why didn't I take more time off?&lt;/h3&gt;
&lt;p&gt;Asking for time off is still awkward. It feels like I'm putting everyone else out because someone will have to take over my duties while I'm away. Even if there are very few duties, there is still the fact that the output expected from me will have to be delayed. Maybe that's fine. But there's that part of me that is sure that even though everyone is saying and acting like it's fine, there's a little disappointment or even frustration below the surface.&lt;/p&gt;
&lt;p&gt;And then there's the fact that in reality "unlimited" does have a limit. It's not like your employer would let you take the entire summer off every year or just take week after week indefinitely. At some point, they will decide your salary could be better spent elsewhere unless you start taking less time off. I don't like that the limit is unspecified, yet we all know it's there. Even worse is that the limit is subjective and will fluctuate depending on the manager and employee.&lt;/p&gt;
&lt;p&gt;I never hit that limit. I have a feeling I never even got close to the limit, much less being asked to take less time off. Yet, I was never asked to take more time off either.&lt;/p&gt;
&lt;h3&gt;What I really meant&lt;/h3&gt;
&lt;p&gt;Unlimited admin time and sick days more accurately describes what I actually desired when I used to talk about unlimited vacation.&lt;/p&gt;
&lt;p&gt;I like the thought that I can run errands as needed without having to cram them into lunch or keep detailed track of vacation hours every time I step out. I also like the freedom to skip out a little early from time to time, especially on Fridays. I do understand that even these freedoms could be abused and tolerance will still be subjective. But if the environment is open about expectations and the use of this kind of "admin" time, then everyone will be doing it and I wouldn't ever feel like I'm taking advantage. That and running errands or leaving early a couple days a week will rarely impact feature delivery.&lt;/p&gt;
&lt;p&gt;Even though I rarely need sick days, I also like the thought that they aren't tallied in any way. When you're sick, just take the time off without consideration of any kind of yearly quota. If you're the type who frequently fakes being sick, I feel like everyone can usually tell and we're back to the subjective tolerance of your current boss. If you're truly sick though, even if you're the type who is sick a lot, then it's not like you're out enjoying your time off. No need to add to you misery by knowing that you're eating away your precious vacation time.&lt;/p&gt;
&lt;h3&gt;A better way&lt;/h3&gt;
&lt;p&gt;A friend told me the vacation policy of the Netherlands - government mandated minimum of 6 weeks per year. The interesting part is that if for any reason the employee cannot take all 6 weeks, the employer must pay the employee an equivalent amount in the form of a year-end bonus. This sounds very cool and really close to what I would consider ideal.&lt;/p&gt;
&lt;p&gt;In my ideal world, vacation would be a range where the bottom number is a &lt;strong&gt;forced minimum&lt;/strong&gt; and the top number is &lt;em&gt;strongly encouraged&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;Perhaps we could marry this ideal world with Netherlands' approach. Anything below the top number would be paid out. But again, the bottom number would be forced.&lt;/p&gt;
&lt;p&gt;Now obviously I'm missing a lot of scenarios that would need to be considered. My first thought would be small businesses. Secondly, who is &lt;em&gt;forcing&lt;/em&gt; the minimum? The government? Or would it just be the policy of forward thinking companies. Maybe it would be the thing all the cool companies start doing - just like unlimited vacation is the cool thing now.&lt;/p&gt;
&lt;p&gt;I don't know the perfect solution. All I know is that unlimited vacation hasn't worked out so well for me.&lt;/p&gt;</description>
      <link>http://www.robtennyson.us/post/unlimited-vacation-is-bad</link>
      <author>rob@robtennyson.us</author>
      <comments>http://www.robtennyson.us/post/unlimited-vacation-is-bad#comment</comments>
      <guid>http://www.robtennyson.us/post.aspx?id=81d51151-41ab-4c48-8522-5c7da8a2ae9b</guid>
      <pubDate>Sun, 6 May 2018 02:00:00 -0500</pubDate>
      <betag:tag>meta</betag:tag>
      <dc:publisher>rtennys</dc:publisher>
      <pingback:server>http://www.robtennyson.us/pingback.axd</pingback:server>
      <pingback:target>http://www.robtennyson.us/post.aspx?id=81d51151-41ab-4c48-8522-5c7da8a2ae9b</pingback:target>
      <slash:comments>0</slash:comments>
      <trackback:ping>http://www.robtennyson.us/trackback.axd?id=81d51151-41ab-4c48-8522-5c7da8a2ae9b</trackback:ping>
      <wfw:comment>http://www.robtennyson.us/post/unlimited-vacation-is-bad#comment</wfw:comment>
      <wfw:commentRss>http://www.robtennyson.us/syndication.axd?post=81d51151-41ab-4c48-8522-5c7da8a2ae9b</wfw:commentRss>
    </item>
    <item>
      <title>Minimal List Debut</title>
      <description>&lt;p&gt;Over the holidays I created and published a new web application - &lt;strong&gt;&lt;em&gt;Minimal List&lt;/em&gt;&lt;/strong&gt; (&lt;a title="Minimal List" href="http://www.mnmllist.com/" target="_blank"&gt;http://www.mnmllist.com&lt;/a&gt;). From the application's &lt;a title="About Minimal List" href="http://www.mnmllist.com/about" target="_blank"&gt;about page&lt;/a&gt;:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;strong&gt;&lt;em&gt;Minimal List&lt;/em&gt;&lt;/strong&gt; was created to solve a need my daughter and I had - a simple way to have our weekly grocery list online.&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;You can read the rest of the about page for more detail, but that pretty much sums it up. This post was indeed meant to introduce the app, but more than that, I wanted to talk about the geekier details of the project :).&lt;/p&gt;  &lt;p&gt;When my daughter and I decided we needed (yes, &lt;em&gt;needed&lt;/em&gt;!) this application, we knew that a mobile application was in order because one of the primary places we'd be using it is at the grocery store - to check off items as we put them in the cart of course. Well, anyone who knows me well knows I'm a web guy and tend to avoid rich clients if possible. However, I don't have anything against an application that &lt;em&gt;looks like&lt;/em&gt; it is a native mobile app. I just prefer HTML and javascript over any of the proprietary stuff for the UI. I'm obviously building on the MS stack (ASP.NET, MVC4, C#, IIS, SQL Server), but I like the UI to be a browser (usually Firefox or my phone's browser for me personally - iPhone for the daughter).&lt;/p&gt;  &lt;h2&gt;&lt;a title="jQuery Mobile" href="http://jquerymobile.com/" target="_blank"&gt;jQuery Mobile&lt;/a&gt;&lt;/h2&gt;  &lt;p&gt;&lt;a title="jQuery Mobile" href="http://jquerymobile.com/" target="_blank"&gt;jQuery Mobile&lt;/a&gt; (JQM) was created exactly for this purpose - a native mobile feeling, but served from the web. It's also something I've wanted to play with for a while now - again, if you know me you know I'm horrible at just &amp;quot;playing&amp;quot; with things in spikes and throw away code. I like putting things in production and seeing how things go in real scenarios. So finally, a legitimate reason to play :).&lt;/p&gt;  &lt;p&gt;I was quite pleased with the development experience using JQM. In the editor, the footprint is actually quite small. Mostly simple and regular HTML elements that are just tagged with some special JQM attributes. The existence of these attributes (after including JQM css and js of course) is what causes all the magic to happen. So once I got to know which attributes to use, things started moving along rather fast because the rest is just plain web application development like I've done for years.&lt;/p&gt;  &lt;p&gt;However, the first real test at the grocery store wasn't all that great. My daughter went to Oregon for the holidays, so I didn't get to see what it is like on an iPhone, but the performance on my Windows Phone 7 was completely crappy. I spent a lot of time standing there waiting on screens to load as I was updating my shopping list items with either price or isle information. Completely unacceptable user experience.&lt;/p&gt;  &lt;p&gt;Other than performance though, it worked as advertised! No bugs or issues and the grocery trip experience was exactly what I was looking for (not too surprising since I designed the app specifically for the experience &lt;strong&gt;&lt;em&gt;I&lt;/em&gt;&lt;/strong&gt; was looking for).&lt;/p&gt;  &lt;h2&gt;Next Step&lt;/h2&gt;  &lt;p&gt;The next step is obvious - improve the UX. Not sure how I'll do it yet, but there are a few paths I can take.&lt;/p&gt;  &lt;p&gt;First, part of JQM is AJAX navigation. It intercepts local links and queries for the resource AJAX-style instead of navigating away from the current page. It then takes the response and loads it into the existing DOM all fancy like so it feels more like the native experience. This also makes the UX faster because your browser doesn't have to re-run all the javascript and whatnot that happens on a full page load. However, when you navigate to a page where you've already been, it just shows the page it already has in the DOM instead of re-requesting the URI. This sounds great, but can be challenging with data-heavy pages because the data obviously isn't going to be fresh. To get by this &lt;em&gt;for now&lt;/em&gt;, I just turned off the AJAX functionality for most of my links and form posts. So this is something I can look into - there would obviously have to be javascript watching for those page transitions so it could dynamically update the data on the page if necessary.&lt;/p&gt;  &lt;p&gt;Second, I could take a more SPA approach - Single Page Application. I could still use JQM for the UI and page requests and whatnot. But the main feature sections would become small SPA islands and I wouldn't do any page transitions at all within the context of that feature. This might be a good time to start playing with &lt;a title="Knockout" href="http://knockoutjs.com/" target="_blank"&gt;knockout.js&lt;/a&gt; or something.&lt;/p&gt;  &lt;p&gt;And of course, I could always completely abandon JQM. I've created web apps before that were careful to be a good UX even in a phone browser, but didn't look at all like a native phone app. But where's the fun in that?!&lt;/p&gt;  &lt;h2&gt;The Code&lt;/h2&gt;  &lt;p&gt;I decided to leave the code in a public repository for all to see:&lt;/p&gt;  &lt;blockquote&gt;   &lt;h3&gt;&lt;a title="Momo" href="https://github.com/rtennys/Momo" target="_blank"&gt;Momo&lt;/a&gt;&lt;/h3&gt;    &lt;p&gt;Project codename named after &lt;a title="Momo" href="http://en.wikipedia.org/wiki/Momo_%28Avatar:_The_Last_Airbender%29" target="_blank"&gt;Momo&lt;/a&gt; from &lt;a title="Avatar: The Last Airbender" href="http://en.wikipedia.org/wiki/Avatar:_The_Last_Airbender" target="_blank"&gt;Avatar: The Last Airbender&lt;/a&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;You'll also notice a link to the commit that created the currently released version in the footer of every page on &lt;a title="Minimal List" href="http://www.mnmllist.com/" target="_blank"&gt;the site&lt;/a&gt;. However, when things move on and you want to see it exactly the way it was as of this post, that commit is &lt;a href="https://github.com/rtennys/Momo/commit/ceef281" target="_blank"&gt;ceef281&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;That's it for now. I hope you all have had an excellent holiday season.&lt;/p&gt;</description>
      <link>http://www.robtennyson.us/post/mnmllist-debut</link>
      <author>rob@robtennyson.us</author>
      <comments>http://www.robtennyson.us/post/mnmllist-debut#comment</comments>
      <guid>http://www.robtennyson.us/post.aspx?id=92ccae3c-0986-4704-8f10-e188aa5a99fd</guid>
      <pubDate>Sun, 30 Dec 2012 22:52:21 -0500</pubDate>
      <betag:tag>.net</betag:tag>
      <betag:tag>asp.net</betag:tag>
      <betag:tag>app</betag:tag>
      <betag:tag>mnmllist</betag:tag>
      <dc:publisher>rtennys</dc:publisher>
      <pingback:server>http://www.robtennyson.us/pingback.axd</pingback:server>
      <pingback:target>http://www.robtennyson.us/post.aspx?id=92ccae3c-0986-4704-8f10-e188aa5a99fd</pingback:target>
      <slash:comments>0</slash:comments>
      <trackback:ping>http://www.robtennyson.us/trackback.axd?id=92ccae3c-0986-4704-8f10-e188aa5a99fd</trackback:ping>
      <wfw:comment>http://www.robtennyson.us/post/mnmllist-debut#comment</wfw:comment>
      <wfw:commentRss>http://www.robtennyson.us/syndication.axd?post=92ccae3c-0986-4704-8f10-e188aa5a99fd</wfw:commentRss>
    </item>
    <item>
      <title>Toph - Early Architecture Decisions</title>
      <description>&lt;p&gt;In &lt;a title="October 2012 - Another Gig Completes" href="http://www.robtennyson.us/post/2012-10-another-gig-completes" target="_blank"&gt;Another Gig Completes&lt;/a&gt;, I mentioned planning to start a new project to help track consulting gigs. Here I introduce you to:&lt;/p&gt;  &lt;blockquote&gt;   &lt;h2&gt;&lt;a title="Toph" href="https://github.com/rtennys/Toph" target="_blank"&gt;Toph&lt;/a&gt;&lt;/h2&gt;    &lt;p&gt;Project codename named after &lt;a title="Toph Beifong" href="http://en.wikipedia.org/wiki/Toph_Beifong" target="_blank"&gt;Toph&lt;/a&gt; from the &lt;a title="Avatar: The Last Airbender" href="http://en.wikipedia.org/wiki/Avatar:_The_Last_Airbender" target="_blank"&gt;Avatar: The Last Airbender&lt;/a&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;As I mentioned before, this project is meant not only to help organize my consulting gigs, but also give me a public project and codebase I can point to. I also hope to use the project as blogging fodder. Speaking of which...&lt;/p&gt;  &lt;h3&gt;Early Architecture Decisions&lt;/h3&gt;  &lt;p&gt;I've spent the vast majority of my career joining existing projects. There is always that sense of &amp;quot;that's not the way I would have done it&amp;quot;. Well, I finally get to do it &lt;em&gt;my&lt;/em&gt; way! It was tempting to go crazy with it and implement everything cool I've been reading about recently - whether needed or not, I might add. In the end I decided to go with a pragmatic approach that is much more likely to be a useful example I can point to when talking to developers as I continue consulting.&lt;/p&gt;  &lt;h3&gt;Visual Studio Projects&lt;/h3&gt;  &lt;p&gt;I'm still a fan of and will continue to advocate &lt;a title="The Onion Architecture" href="http://www.robtennyson.us/post/project-architecture"&gt;onion architecture&lt;/a&gt; (some might say &lt;a title="Hexagonal Architecture" href="http://alistair.cockburn.us/Hexagonal+architecture" target="_blank"&gt;Hexagonal Architecture&lt;/a&gt;). One difference you'll find between Toph and what I normally do though, is the lack of an &lt;em&gt;Infrastructure&lt;/em&gt; project.&lt;/p&gt;  &lt;p&gt;There seems to be a theme going around the blogosphere that is advocating the removal of unnecessary abstractions and part of the theme has been the combining of projects. The idea is that it is perfectly possible to create an architecturally sound solution without using Visual Studio projects to enforce it. In case you're wondering how they &amp;quot;enforce&amp;quot; it, realize that Visual Studio projects won't allow circular references between two projects - whether by directly referencing each other, or indirectly (A - B - C - A would not compile). Therefore if you have a UI and a Core project with UI referencing Core, you couldn't reference UI from Core.&amp;#160; Thus, this &lt;em&gt;usually&lt;/em&gt; prevents you from directly doing UI type actions from within Core since you couldn't touch the controllers or view models.&lt;/p&gt;  &lt;p&gt;I'm almost always a fan of pragmatic programming. As it turns out, the &lt;em&gt;Infrastructure&lt;/em&gt; project never proved that exciting for me as a standalone project. So I just created a namespace within UI called &lt;em&gt;Infrastructure&lt;/em&gt; and dumped everything in there. You see, everything usually consider &lt;em&gt;Infrastructure&lt;/em&gt; is generally only used during application startup anyway as I'm building up the inversion of control container.&lt;/p&gt;  &lt;p&gt;However, I still very much like having my &lt;em&gt;Core&lt;/em&gt; separate. It just feels right. So, I decide three projects are all we'll need in this solution&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Toph (I decided there was no reason to call it Toph.&lt;em&gt;Core&lt;/em&gt;) &lt;/li&gt;    &lt;li&gt;Toph.UI &lt;/li&gt;    &lt;li&gt;Toph.Tests &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;Even if I end up adding another project in the future for scheduled tasks (to be run on some application server somewhere), leaving &lt;em&gt;Infrastructure&lt;/em&gt; under UI should still be fine. That's because I generally just invoke endpoints in the UI from those background tasks rather than directly dealing with the domain or application's database.&lt;/p&gt;  &lt;h3&gt;UI&lt;/h3&gt;  &lt;p&gt;New projects should always be started with the latest and greatest, right? I went with ASP.NET MVC 4 of course. Specifically, I started with the Internet Application project template.&lt;/p&gt;  &lt;h3&gt;Data Access&lt;/h3&gt;  &lt;p&gt;That template starts with using a local database and using Entity Framework as its ORM of choice. As expected if you know me, I changed that use SQL Server 2012 Express and &lt;a title="NHibernate" href="http://nhforge.org/" target="_blank"&gt;NHibernate&lt;/a&gt;. To do that...&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;Delete &lt;a title="Toph.UI.Filters.InitializeSimpleMembershipAttribute" href="https://github.com/rtennys/Toph/commit/d52a51d024e1fdb9840b1c4d4c26f2d4074197d3#diff-3" target="_blank"&gt;InitializeSimpleMembershipAttribute&lt;/a&gt;. This is the attribute added to AccountController that ensures the database exists and is initialized. There is only one line in there that is needed: WebSecurity.InitializeDatabaseConnection.&amp;#160; I moved that into &lt;a title="Toph.UI.MvcApplication.Application_Start" href="https://github.com/rtennys/Toph/commit/d52a51d024e1fdb9840b1c4d4c26f2d4074197d3#diff-4" target="_blank"&gt;Application_Start&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;Delete &lt;a title="Toph.UI.Models.UsersContext" href="https://github.com/rtennys/Toph/commit/d52a51d024e1fdb9840b1c4d4c26f2d4074197d3#diff-9" target="_blank"&gt;UsersContext&lt;/a&gt;. This is the EF DbContext&lt;/li&gt;    &lt;li&gt;Move &lt;a title="Toph.Domain.Entities.UserProfile" href="https://github.com/rtennys/Toph/commit/d52a51d024e1fdb9840b1c4d4c26f2d4074197d3#diff-29" target="_blank"&gt;UserProfile&lt;/a&gt; from the Models directory into the domain and kill the EF attributes&lt;/li&gt;    &lt;li&gt;Add &lt;a title="Fluent NHibernate on NuGet" href="http://nuget.org/packages/FluentNHibernate" target="_blank"&gt;Fluent NHibernate&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;Do all the normal NHibernate config and mapping stuff&lt;/li&gt;    &lt;li&gt;Change your connection string&lt;/li&gt;    &lt;li&gt;Create the database with the single UserProfile table&lt;/li&gt;    &lt;li&gt;Run the application&lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;That should do the trick.&lt;/p&gt;  &lt;h3&gt;Other notables&lt;/h3&gt;  &lt;p&gt;The only other things I added to the project were &lt;a title="Structuremap" href="http://nuget.org/packages/structuremap" target="_blank"&gt;Structuremap&lt;/a&gt; and my personal code library &lt;a title="RobTennyson.Common" href="http://nuget.org/packages/RobTennyson.Common" target="_blank"&gt;RobTennyson.Common&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;I also stuck with restricting domain access to a &lt;a title="Service Layer on P of EAA" href="http://martinfowler.com/eaaCatalog/serviceLayer.html" target="_blank"&gt;Service Layer&lt;/a&gt; like I usually do. One difference I thought I'd toss into the mix this time is a bit of &lt;a title="Command-query separation" href="http://en.wikipedia.org/wiki/Command-query_separation" target="_blank"&gt;CQS&lt;/a&gt; goodness (not full blown CQRS, mind you). We'll see how this turns out as the project grows.&lt;/p&gt;  &lt;h3&gt;Grabbing a copy and playing&lt;/h3&gt;  &lt;p&gt;If you're interested in playing around with this, but sure you get the code specifically from this commit: &lt;a title="Commit 91a19e9f8b" href="https://github.com/rtennys/Toph/tree/91a19e9f8b5b8f23402b9b87b315158f1bf7af9e" target="_blank"&gt;91a19e9f8b&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;I'll be moving on with the project of course, but at that exact point, the project is still basically just the default template - well, juiced up a bit, but basically still has nothing to do with the real project in it yet.&lt;/p&gt;  &lt;p&gt;Happy coding&lt;/p&gt;</description>
      <link>http://www.robtennyson.us/post/toph-early-architecture-decisions</link>
      <author>rob@robtennyson.us</author>
      <comments>http://www.robtennyson.us/post/toph-early-architecture-decisions#comment</comments>
      <guid>http://www.robtennyson.us/post.aspx?id=ce3e7072-6774-4b3f-ae8e-4bee5086d13a</guid>
      <pubDate>Fri, 9 Nov 2012 00:29:27 -0500</pubDate>
      <betag:tag>toph</betag:tag>
      <betag:tag>.net</betag:tag>
      <betag:tag>architecture</betag:tag>
      <betag:tag>mvc</betag:tag>
      <betag:tag>nhibernate</betag:tag>
      <dc:publisher>rtennys</dc:publisher>
      <pingback:server>http://www.robtennyson.us/pingback.axd</pingback:server>
      <pingback:target>http://www.robtennyson.us/post.aspx?id=ce3e7072-6774-4b3f-ae8e-4bee5086d13a</pingback:target>
      <slash:comments>2</slash:comments>
      <trackback:ping>http://www.robtennyson.us/trackback.axd?id=ce3e7072-6774-4b3f-ae8e-4bee5086d13a</trackback:ping>
      <wfw:comment>http://www.robtennyson.us/post/toph-early-architecture-decisions#comment</wfw:comment>
      <wfw:commentRss>http://www.robtennyson.us/syndication.axd?post=ce3e7072-6774-4b3f-ae8e-4bee5086d13a</wfw:commentRss>
    </item>
    <item>
      <title>October 2012 - Another Gig Completes</title>
      <description>&lt;p&gt;A couple weeks ago I wrapped up my last contract. I mentioned it in &lt;a title="Drowning in New Technologies" href="http://www.robtennyson.us/post/july-2012-new-tech"&gt;Drowning in New Technologies&lt;/a&gt;. Again, awesome, awesome contract &amp;ndash; I learned a ton and got to work with some really cool people.&lt;/p&gt;
&lt;h3&gt;What&amp;rsquo;s Next&lt;/h3&gt;
&lt;p&gt;The last time I had a break between contracts I started playing with electronics. I've thought about picking that adventure back up, but am hesitant because of a couple roadblocks I had started to run into before. First was cost &amp;ndash; tinkering with electronics isn't crazy expensive or anything, but if you wanted to replace every plug in your house with a smart plug for example, it adds up quick. The true low cost solutions are really only present in bulk &amp;ndash; massive bulk. The other road block was simply my hesitation to truly devote to something so big. You see, I tend to over-do everything I get into. If I was going to get serious about it, that meant starting a journey of mastering all aspects of electronics &amp;ndash; everything from the basic electronics knowledge needed to get a circuit working to learning all I could about physics. Knowing how to do something doesn't cut it for me. I have to know exactly why every piece of the puzzle works. People spend years and sometimes entire careers mastering this. I'm not sure I'm excited enough to devote myself that completely to it. Maybe being a hobbyist is the key here; not working out how to profit from it.&lt;/p&gt;
&lt;p&gt;I think I'll stick to software and stick to the aspect of it I know best - enterprise web development. For a while yet, that means continuing to consult. I still hope to create a product of my own though and consulting might be the key to that as well. You see, I've worked out a cobbled together way of managing my gigs, billable hours, invoices, and whatnot. It's a mixture of folder structure, documents, an Outlook calendar for keeping time, Excel templates for the invoices, and a lot of copying/pasting followed by printing to PDF.&lt;/p&gt;
&lt;p&gt;I'm pretty sure there are solutions out there for this, but creating my own will do two important things for me. First it will potentially turn some profit if it turns into something others find useful as well. Second it will give me the codebase of a real world application that I can use for both pointing potential consulting clients to and as an example when trying to explain a concept to another developer. It is sometimes rough when someone wants to see some of what I've done or they want to see an example of whatever pattern I'm prattling on about, but everything I've done is internal and proprietary. I'm good at coding on the fly and coming up with sample applications, but nothing speaks truer than code running in production.&lt;/p&gt;
&lt;p&gt;So that is my immediate plan. I've upgraded to Windows 8, Visual Studio 2012, and ReSharper 7.0. I've also purchased &lt;a title="ASP.NET MVC 4 in Action" href="http://amzn.com/1617290416" target="_blank"&gt;ASP.NET MVC 4 in Action&lt;/a&gt; to make sure I haven't missed anything over the last year. Once I've gone through that, I'll get started on my first product. My intention is code it publicly (&lt;a title="Rob Tennyson on Github" href="https://github.com/rtennys" target="_blank"&gt;GitHub&lt;/a&gt; of course) and blog along the way about why I've done this or that in the codebase.&lt;/p&gt;
&lt;p&gt;That is, unless I change my mind 12 seconds after clicking publish on this post, or unless another gig comes along much sooner than I expect it to. Wouldn't be so bad if I could manage to write some code in the evenings and weekends. Stupid &lt;a title="World of Warcraft" href="http://us.battle.net/wow" target="_blank"&gt;Warcraft&lt;/a&gt;! Yes, I still play - have long since given up raiding, but I do indeed have a level 90 Druid already and have a young panda monk decked out in heirloom gear anxiously awaiting my attention.&lt;/p&gt;
&lt;p&gt;Wish me luck!&lt;/p&gt;</description>
      <link>http://www.robtennyson.us/post/2012-10-another-gig-completes</link>
      <author>rob@robtennyson.us</author>
      <comments>http://www.robtennyson.us/post/2012-10-another-gig-completes#comment</comments>
      <guid>http://www.robtennyson.us/post.aspx?id=2aa07d65-e0cb-42ff-a935-87541fe83172</guid>
      <pubDate>Tue, 30 Oct 2012 02:39:00 -0500</pubDate>
      <betag:tag>work</betag:tag>
      <betag:tag>iroh-services</betag:tag>
      <betag:tag>consulting</betag:tag>
      <dc:publisher>rtennys</dc:publisher>
      <pingback:server>http://www.robtennyson.us/pingback.axd</pingback:server>
      <pingback:target>http://www.robtennyson.us/post.aspx?id=2aa07d65-e0cb-42ff-a935-87541fe83172</pingback:target>
      <slash:comments>3</slash:comments>
      <trackback:ping>http://www.robtennyson.us/trackback.axd?id=2aa07d65-e0cb-42ff-a935-87541fe83172</trackback:ping>
      <wfw:comment>http://www.robtennyson.us/post/2012-10-another-gig-completes#comment</wfw:comment>
      <wfw:commentRss>http://www.robtennyson.us/syndication.axd?post=2aa07d65-e0cb-42ff-a935-87541fe83172</wfw:commentRss>
    </item>
    <item>
      <title>July 2012 - Drowning in New Technologies</title>
      <description>&lt;p&gt;Since April (around the time of my last blog post!), I've been on a gig with a company out of Indianapolis. It's your classic big corp, &lt;a title="Big Ball of Mud" href="http://en.wikipedia.org/wiki/Big_ball_of_mud" target="_blank"&gt;big ball of mud&lt;/a&gt;, type of application. Nothing new to me since I've spent my entire career in corporate America and I'm pretty sure I've created a few balls of mud myself.&lt;/p&gt;  &lt;p&gt;The cool thing about this gig, however, is the team. After some turn-over and apparently a breaking point that caused them to get much more picky about hiring decisions, the team I joined seems to be a team of rock stars. Most have figured out they can come to me with questions on just about anything code related and here's the cool thing - answering their questions is always easy. I mean, they just get things insanely fast - &lt;em&gt;every single one of them&lt;/em&gt;! Now, I've worked with some freaky smart developers before (last team I worked with at Tyson for example), but rarely do you see a team of dozens where all of them are freaky smart. There is always a handful of laggards (no, I don't think &lt;em&gt;you&lt;/em&gt; are one of them).&lt;/p&gt;  &lt;p&gt;Additionally, I've gotten to learn a few new things on this gig.&lt;/p&gt;  &lt;h3&gt;SOLR&lt;/h3&gt;  &lt;p&gt;I haven't become a SOLR or Lucene expert or anything, but I've had to do a couple things with &lt;a title="SolrNet" href="http://code.google.com/p/solrnet/" target="_blank"&gt;SolrNet&lt;/a&gt;. Seems to be all that I've read about over the years. Can't say I'm enjoying this from a developer's perspective though. You see, they have all the environments setup for it, but when developing locally, the internal SOLR abstractions hit DEV instead of local. This means if you're working on UI that uses the search indexes, it sucks because your local changes obviously aren't going to show up in the indexes from the DEV database. It also means I must be connected to VPN to touch UI using SOLR.&lt;/p&gt;  &lt;p&gt;An implementation of the &lt;a title="Gateway Pattern" href="http://martinfowler.com/eaaCatalog/gateway.html" target="_blank"&gt;gateway&lt;/a&gt; and/or &lt;a title="Facade Pattern" href="http://martinfowler.com/eaaCatalog/remoteFacade.html" target="_blank"&gt;facade&lt;/a&gt; patterns would take care of this nicely I think.&lt;/p&gt;  &lt;h3&gt;Automapper&lt;/h3&gt;  &lt;p&gt;I'm not entirely sure how I feel about &lt;a title="AutoMapper" href="https://github.com/AutoMapper/AutoMapper" target="_blank"&gt;AutoMapper&lt;/a&gt; yet. I've heard nothing but praise about it for years now, but this is the first time I've been on a project where it is actually being used. Maybe it's the way they're using it, or maybe I just haven't seen the light yet, but at this point I'm not digging it.&lt;/p&gt;  &lt;p&gt;Sure, it does make your controller actions much smaller. It also takes care of DRY if you're mapping between two objects in many places. But mostly I find myself constantly having to hunt down the mapping logic to figure out exactly what is being copied between the objects, or, more frequently, to find out why something is not mapping correctly. I'm sure I'll come around, but right now it seems like a mix of voodoo and magic. Most importantly, there is no &amp;quot;go to definition&amp;quot;, search results is the only way to find the mapping.&lt;/p&gt;  &lt;h3&gt;Topshelf&lt;/h3&gt;  &lt;p&gt;This one was fun. I played briefly with &lt;a title="Topshelf" href="https://gist.github.com/Topshelf/Topshelf" target="_blank"&gt;Topshelf&lt;/a&gt; in the past as a spike - never made it to production if memory serves. This time though, we're using it to take care of the Windows service that handles all of the project's scheduled background work. The API is crazy easy and lightweight. Can't think of anything negative to say about this at all.&lt;/p&gt;  &lt;h3&gt;NServiceBus&lt;/h3&gt;  &lt;p&gt;Holy crap this thing is cool. &lt;a title="NSerivceBus" href="http://nservicebus.com/" target="_blank"&gt;NSerivceBus&lt;/a&gt; has been on my radar for a long time - as well as &lt;a title="Mass Transit" href="https://github.com/MassTransit/MassTransit" target="_blank"&gt;Mass Transit&lt;/a&gt;. We had a bit of trouble with MS DTC and permissions and whatnot, but it has otherwise been nothing but goodness. I love the feeling of isolation and extremely small units of work you get when dealing with service bus architecture - each message is its own unit of work and tends to be a small one.&lt;/p&gt;  &lt;hr /&gt;I think that pretty much covers it. Well, there are a couple of others (like their internal email handler/service/thingy), but I'm afraid a recruiter might see and start offering me gigs utilizing them. Kind of like the fact that you won't find assembly, C, C++, or BASIC on my resume. I don't want people knowing I know that stuff!</description>
      <link>http://www.robtennyson.us/post/july-2012-new-tech</link>
      <author>rob@robtennyson.us</author>
      <comments>http://www.robtennyson.us/post/july-2012-new-tech#comment</comments>
      <guid>http://www.robtennyson.us/post.aspx?id=f4ef48de-c8d4-4af5-a57c-37fec9d8b110</guid>
      <pubDate>Sat, 21 Jul 2012 23:14:07 -0500</pubDate>
      <betag:tag>.net</betag:tag>
      <betag:tag>work</betag:tag>
      <betag:tag>iroh-services</betag:tag>
      <betag:tag>consulting</betag:tag>
      <dc:publisher>rtennys</dc:publisher>
      <pingback:server>http://www.robtennyson.us/pingback.axd</pingback:server>
      <pingback:target>http://www.robtennyson.us/post.aspx?id=f4ef48de-c8d4-4af5-a57c-37fec9d8b110</pingback:target>
      <slash:comments>1</slash:comments>
      <trackback:ping>http://www.robtennyson.us/trackback.axd?id=f4ef48de-c8d4-4af5-a57c-37fec9d8b110</trackback:ping>
      <wfw:comment>http://www.robtennyson.us/post/july-2012-new-tech#comment</wfw:comment>
      <wfw:commentRss>http://www.robtennyson.us/syndication.axd?post=f4ef48de-c8d4-4af5-a57c-37fec9d8b110</wfw:commentRss>
    </item>
    <item>
      <title>Personal Code Library + NuGet</title>
      <description>&lt;p&gt;As I was getting into my next consulting gig, I found myself copying yet again all of those utility extension methods and classes I tend to pull along with me into every project I work on. Enough is enough, I thought! That and it was a great excuse to finally play with &lt;a title="NuGet" href="https://nuget.org/" target="_blank"&gt;NuGet&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;You see, I've been avoiding creating a personal library all this time because I didn't like the idea of having an odd dependency that I included in projects. It would have a foreign or personal sounding namespace, versioning and updating it would be a pain, and developers that came along behind me on the project would have this weird black box of random code. I wouldn't want to run into something like that on a project I joined.&lt;/p&gt;  &lt;p&gt;Then I figured out that I could create a NuGet package that was content only. Not sure why I hadn't already put that together, but my original thought was that I would have to create a package that delivered a binary which would be referenced by the target project. Easy versioning and updating taken care of, but I'd still be left with the black box of random code. With a content only package, the actual source code from my &amp;quot;personal code library&amp;quot; actually ends up in and lives in the target project.&lt;/p&gt;  &lt;p&gt;The final kicker was my noticing &lt;a title="Configuration File and Source Code Transformations" href="http://docs.nuget.org/docs/creating-packages/configuration-file-and-source-code-transformations" target="_blank"&gt;source code transformations&lt;/a&gt;. By using the $rootnamespace$ token, the NuGet package installer would transform the namespace declarations into whatever the target project was using. No weird or personal namespaces! Pretty much takes care of every problem I had with creating my library.&lt;/p&gt;  &lt;h3&gt;The Source&lt;/h3&gt;  &lt;p&gt;The source for my project lives on &lt;a title="github" href="https://github.com/" target="_blank"&gt;github&lt;/a&gt; in &lt;a title="RobTennyson.Common" href="https://github.com/rtennys/Common" target="_blank"&gt;rtennys/Common&lt;/a&gt;. I know, real original name.&lt;/p&gt;  &lt;p&gt;I set up a basic class library project and unit testing project. Not that I've done a lot of testing mind you, most of the code in the library has been in my possession for a very long time, but I plan to add tests as I modify and grow the core library.&lt;/p&gt;  &lt;p&gt;The interesting part to me was automating the deployment into NuGet. Next to the solution file, you'll see my standard deploy.bat and deploy.proj files (if you've worked with me, you probably recognize these!). In here is where I use MSBuild to grab the current build version, copy all the source to a temp folder, replace my namespace with the $rootnamespace$ token, create the NuGet package, and finally upload the package to nuget.org. Very easy and very cool.&lt;/p&gt;  &lt;p&gt;With the addition of a hotkey in Visual Studio (see &lt;a title="Execute Command Files from Visual Studio 2010" href="http://jaysmith.us/post/Execute-Command-Files-from-Visual-Studio-2010.aspx" target="_blank"&gt;here&lt;/a&gt; for details - I do it similar: no context menu, just a hotkey), updating my personal code in a target project is as simple as updating my library, running deploy, and then updating the package at the target. Crazy easy!&lt;/p&gt;  &lt;h3&gt;The NuGet Package&lt;/h3&gt;  &lt;p&gt;The package is called &lt;a title="RobTennyson.Common" href="https://nuget.org/packages/RobTennyson.Common" target="_blank"&gt;RobTennyson.Common&lt;/a&gt;. Installing it is as simple as running this in the Package Manager Console:&lt;/p&gt;  &lt;pre&gt;&lt;code&gt;PM&amp;gt; Install-Package RobTennyson.Common&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;I don't know that I'd suggest using it since it's my junk pile and filled with my opinion on how things should be done. It's also likely to change a lot and often. But you're welcome to it if you'd like. You're also welcome to snoop around in it and tell me why I'm nuts for doing this or that (like my .Each and .F extension methods!).&lt;/p&gt;

&lt;p&gt;Good times!&lt;/p&gt;</description>
      <link>http://www.robtennyson.us/post/personal-code-library</link>
      <author>rob@robtennyson.us</author>
      <comments>http://www.robtennyson.us/post/personal-code-library#comment</comments>
      <guid>http://www.robtennyson.us/post.aspx?id=f8e5776d-2adf-41f9-a4af-c90799db7bf0</guid>
      <pubDate>Tue, 20 Dec 2011 08:05:36 -0500</pubDate>
      <betag:tag>.net</betag:tag>
      <betag:tag>github</betag:tag>
      <betag:tag>nuget</betag:tag>
      <dc:publisher>rtennys</dc:publisher>
      <pingback:server>http://www.robtennyson.us/pingback.axd</pingback:server>
      <pingback:target>http://www.robtennyson.us/post.aspx?id=f8e5776d-2adf-41f9-a4af-c90799db7bf0</pingback:target>
      <slash:comments>2</slash:comments>
      <trackback:ping>http://www.robtennyson.us/trackback.axd?id=f8e5776d-2adf-41f9-a4af-c90799db7bf0</trackback:ping>
      <wfw:comment>http://www.robtennyson.us/post/personal-code-library#comment</wfw:comment>
      <wfw:commentRss>http://www.robtennyson.us/syndication.axd?post=f8e5776d-2adf-41f9-a4af-c90799db7bf0</wfw:commentRss>
    </item>
    <item>
      <title>My First Consulting Gig Ended This Week - Was Awesome!</title>
      <description>&lt;p&gt;Like I said &lt;a title="First Gig" href="http://www.robtennyson.us/post/my-software-consulting-gets-kicked-off-this-week-thanks-to-teksystems"&gt;here&lt;/a&gt;, my first consulting job was a sub-contract with &lt;a title="TEKsystems" href="http://www.teksystems.com/"&gt;TEKsystems&lt;/a&gt; for a company called &lt;a title="TD Williamson" href="http://www.tdwilliamson.com/"&gt;TD Williamson&lt;/a&gt; in Tulsa, OK. Though I’ll still be available if they need anything (questions about the code, bugs, whatever), I completed the last enhancement this week. I feel incredibly lucky that I got this as my first gig after leaving traditional employment behind.&lt;/p&gt;  &lt;h3&gt;The Customer&lt;/h3&gt;  &lt;p&gt;First off, I was fortunate with a very cool customer. I could be wrong, but the IT shop I worked with seemed a bit smallish. Whenever I needed something like access or a question answered, the team member who was my point of contact was able to get the answer or get it done insanely fast (sometimes less than an hour!). I needed a good bit of database help in the beginning (back slamming production to development, getting a copy for me to run local and thus disconnected, etc.) and several times I needed new access to other database servers I was asked to integrate with. Their DBAs were awesome! No bottlenecks or bureaucracy or anything to slow down progress as far as I could tell. If it wasn’t a small shop, it was an amazingly well oiled large one.&lt;/p&gt;  &lt;h3&gt;The Code&lt;/h3&gt;  &lt;p&gt;This was the surprising part. It's a classic Web Forms application. It uses straight ADO.NET for data access. There wasn’t a single using statement anywhere. If I remember correctly, I found 38 connections that weren’t being closed. Everything is done directly in the code behind. Found a few memory leaks in the Active Directory code. Same redundant email logic repeated all over the place. Magic strings everywhere... Getting the idea yet?&lt;/p&gt;  &lt;p&gt;Despite all those negatives, I loved it! It has been a long time since I've been able to belly up to an editor and just engross myself in code for hours and hours. The days flew by like they used to. All of the problems I mentioned above are crazy easy to fix; mind numbingly easy. It's almost like being paid to meditate.&lt;/p&gt;  &lt;p&gt;In addition to these simple ways of drastically improving their codebase, I think they were pleased with how fast I was able to get enhancements done. I also fully automated the deployment and added versioning in a way that made it easier to know what is currently in production. All in all, I'd call it a successful gig for both parties and a great start for me.&lt;/p&gt;</description>
      <link>http://www.robtennyson.us/post/first-gig-ended</link>
      <author>rob@robtennyson.us</author>
      <comments>http://www.robtennyson.us/post/first-gig-ended#comment</comments>
      <guid>http://www.robtennyson.us/post.aspx?id=9a96922c-5427-4a5f-9a4e-4c898bdde9de</guid>
      <pubDate>Sat, 19 Nov 2011 07:32:01 -0500</pubDate>
      <betag:tag>consulting</betag:tag>
      <dc:publisher>rtennys</dc:publisher>
      <pingback:server>http://www.robtennyson.us/pingback.axd</pingback:server>
      <pingback:target>http://www.robtennyson.us/post.aspx?id=9a96922c-5427-4a5f-9a4e-4c898bdde9de</pingback:target>
      <slash:comments>1</slash:comments>
      <trackback:ping>http://www.robtennyson.us/trackback.axd?id=9a96922c-5427-4a5f-9a4e-4c898bdde9de</trackback:ping>
      <wfw:comment>http://www.robtennyson.us/post/first-gig-ended#comment</wfw:comment>
      <wfw:commentRss>http://www.robtennyson.us/syndication.axd?post=9a96922c-5427-4a5f-9a4e-4c898bdde9de</wfw:commentRss>
    </item>
    <item>
      <title>Azure Experience</title>
      <description>&lt;p&gt;This post is in response to a request to know the details of my experience with Windows Azure.&lt;/p&gt; &lt;h3&gt;Production Experience&lt;/h3&gt; &lt;p&gt;As of today (11/14/2011), I have no experience developing production applications for a company or customer.&lt;/p&gt; &lt;h3&gt;Functional Experience&lt;/h3&gt; &lt;p&gt;Being the code dork that I am though, I have played...&lt;/p&gt; &lt;ul&gt; &lt;li&gt;&lt;a title="Windows Azure" href="http://en.wikipedia.org/wiki/Azure_Services_Platform" target="_blank"&gt;Windows Azure&lt;/a&gt; - I've deployed a couple of live sites to azure just to make sure I understood what it meant to code to, deploy to, and live in Windows Azure.  &lt;ul&gt; &lt;li&gt;My personal site (&lt;a href="http://www.robtennyson.us"&gt;http://www.robtennyson.us&lt;/a&gt;) - at one point I had written a micro CMS that I thought I might use going forward as my personal website. To manage the images linked from my posts, I took advantage of blob storage. All other content I stored in table storage. I've since switched back to &lt;a title="BlogEngine.NET" href="http://www.dotnetblogengine.net/" target="_blank"&gt;BlogEngine.NET&lt;/a&gt;. Shared hosting for such a small site is cheaper and I found that backing up my site to be much more straight forward.  &lt;li&gt;My business site (&lt;a title="Iroh Services" href="http://www.robtennyson.us/page/iroh"&gt;http://www.irohservices.com&lt;/a&gt;) - when I first started my business I thought I'd be cool and host my online presence in Azure. I started by creating something similar to what I had done previously for my personal site (Azure hosting, blob, and table storage). It didn't take long for me to decide that I wasn't going to put in the time to create a rich experience so I switched to &lt;a title="WordPress" href="http://wordpress.org/" target="_blank"&gt;WordPress&lt;/a&gt; and hosted it alongside my personal site. In addition to the time constraint, I switched for similar benefits as on my personal site (cost and backing up). Creating my custom theme and playing with PHP has been fun as well. &lt;/li&gt;&lt;/ul&gt; &lt;li&gt;&lt;a title="Windows Azure AppFabric" href="http://en.wikipedia.org/wiki/AppFabric" target="_blank"&gt;Windows Azure AppFabric&lt;/a&gt; - During my &lt;a title="Time With Microsoft" href="http://www.irohservices.com/microsoft" target="_blank"&gt;time with Microsoft&lt;/a&gt;, I created a caching proof of concept taking advantage of Windows Azure AppFabric (not Windows &lt;em&gt;Server &lt;/em&gt;AppFabric - though I understand it to be almost identical from the developer's perspective). This turned out to be crazy easy to do. I haven't yet played with the other benefits AppFabric affords (ACS and Service Bus). &lt;/li&gt;&lt;/ul&gt; &lt;h3&gt;Summary&lt;/h3&gt; &lt;ul&gt; &lt;li&gt;Windows Azure Compute  &lt;ul&gt; &lt;li&gt;Web Role - &lt;strong&gt;two public sites&lt;/strong&gt;&amp;nbsp; &lt;li&gt;Worker Role - &lt;strong&gt;played with - never needed in production&lt;/strong&gt;  &lt;li&gt;VM Role - no experience &lt;/li&gt;&lt;/ul&gt; &lt;li&gt;Windows Azure Storage  &lt;ul&gt; &lt;li&gt;Table - &lt;strong&gt;two public sites&lt;/strong&gt;  &lt;li&gt;Queue - no experience  &lt;li&gt;Blob - &lt;strong&gt;two public sites&lt;/strong&gt; &lt;/li&gt;&lt;/ul&gt; &lt;li&gt;SQL Azure  &lt;ul&gt; &lt;li&gt;SQL Azure Data Sync - no experience  &lt;li&gt;SQL Azure Reporting - no experience &lt;/li&gt;&lt;/ul&gt; &lt;li&gt;Content Delivery Network - no experience  &lt;li&gt;Azure AppFabric  &lt;ul&gt; &lt;li&gt;Access Control - no experience  &lt;li&gt;Caching - &lt;strong&gt;proof of concept&lt;/strong&gt;  &lt;li&gt;Service Bus - no experience &lt;/li&gt;&lt;/ul&gt; &lt;li&gt;Windows Azure Fabric Controller - no experience  &lt;li&gt;Azure Market Place - no experience  &lt;li&gt;Azure Virtual Network  &lt;ul&gt; &lt;li&gt;Azure Connect - no experience  &lt;li&gt;Azure Traffic Manager - no experience &lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;So there you have it. The most interesting thing about my experience with Azure has been blob and table storage. If I had just gone with SQL Azure, I don't think much at all would have been different from the perspective of the developer. Once the connection string is set, data access is still just data access in code.&lt;/p&gt;</description>
      <link>http://www.robtennyson.us/post/azure-experience</link>
      <author>rob@robtennyson.us</author>
      <comments>http://www.robtennyson.us/post/azure-experience#comment</comments>
      <guid>http://www.robtennyson.us/post.aspx?id=85252c53-3063-4c24-a23c-fcd92a47c424</guid>
      <pubDate>Mon, 14 Nov 2011 12:47:00 -0500</pubDate>
      <betag:tag>azure</betag:tag>
      <betag:tag>appfabric</betag:tag>
      <dc:publisher>rtennys</dc:publisher>
      <pingback:server>http://www.robtennyson.us/pingback.axd</pingback:server>
      <pingback:target>http://www.robtennyson.us/post.aspx?id=85252c53-3063-4c24-a23c-fcd92a47c424</pingback:target>
      <slash:comments>0</slash:comments>
      <trackback:ping>http://www.robtennyson.us/trackback.axd?id=85252c53-3063-4c24-a23c-fcd92a47c424</trackback:ping>
      <wfw:comment>http://www.robtennyson.us/post/azure-experience#comment</wfw:comment>
      <wfw:commentRss>http://www.robtennyson.us/syndication.axd?post=85252c53-3063-4c24-a23c-fcd92a47c424</wfw:commentRss>
    </item>
    <item>
      <title>Fort Smith DNUG - SOA For The Developer</title>
      <description>&lt;p&gt;My &lt;a title="Fort Smith DNUG" href="http://www.fsdnug.org/" target="_blank"&gt;Fort Smith DNUG&lt;/a&gt; presentation description:&lt;/p&gt;  &lt;blockquote&gt;Service Oriented Architecture has been a buzz word for a while now and gets talked about all the time. However, I see very few presentations targeting the developer and what he/she should be doing in code as an SOA advocate. In this presentation we surface an old and well known design pattern called the &lt;a href="http://martinfowler.com/eaaCatalog/gateway.html"&gt;Gateway.&lt;/a&gt; When developing applications that talk to other applications (or pull data straight out of their databases!), this pattern can save your bacon at worst and at best will give you a clear and easy to see delineation between your app and external systems.&lt;/blockquote&gt;  &lt;p&gt;I actually burned through the presentation rather quickly and for a moment thought the whole thing was going to be a dud. And then people started opening up with comments and questions and I'd say the night turned into a huge success. Awesome group to present in front of. Thanks for the invite!&lt;/p&gt;  &lt;p&gt;See the code I used in the presentation &lt;a title="SOA For The Developer" href="http://robtennyson.codeplex.com/SourceControl/changeset/view/70735#1274199" target="_blank"&gt;here&lt;/a&gt;.&lt;/p&gt;</description>
      <link>http://www.robtennyson.us/post/fort-smith-dnug-soa-for-the-developer</link>
      <author>rob@robtennyson.us</author>
      <comments>http://www.robtennyson.us/post/fort-smith-dnug-soa-for-the-developer#comment</comments>
      <guid>http://www.robtennyson.us/post.aspx?id=83b5434e-ce6c-4791-a766-70f8187a8900</guid>
      <pubDate>Mon, 10 Oct 2011 08:00:00 -0500</pubDate>
      <betag:tag>.net</betag:tag>
      <betag:tag>community</betag:tag>
      <betag:tag>fsdnug</betag:tag>
      <dc:publisher>rtennys</dc:publisher>
      <pingback:server>http://www.robtennyson.us/pingback.axd</pingback:server>
      <pingback:target>http://www.robtennyson.us/post.aspx?id=83b5434e-ce6c-4791-a766-70f8187a8900</pingback:target>
      <slash:comments>0</slash:comments>
      <trackback:ping>http://www.robtennyson.us/trackback.axd?id=83b5434e-ce6c-4791-a766-70f8187a8900</trackback:ping>
      <wfw:comment>http://www.robtennyson.us/post/fort-smith-dnug-soa-for-the-developer#comment</wfw:comment>
      <wfw:commentRss>http://www.robtennyson.us/syndication.axd?post=83b5434e-ce6c-4791-a766-70f8187a8900</wfw:commentRss>
    </item>
  </channel>
</rss>