Wizards of Smart #10 – Glenn Block part 1

Ryan and I had a awesome opportunity of having Glenn Block join us on a Skype call a couple of weeks ago. We wanted to have him on and talk about what he is currently doing and try to avoid the whole MEF topic (we did dive a bit into it, but not too deep).

So part 1, Glenn introduces himself and gives a history of his current move from MEF to WCF and his vision on what he hopes to do by joining the team.

Glenn blogs at codebetter.com : http://codebetter.com/blogs/glenn.block/


Wizards of Smart #9 – 25 Zeros + IDEs + SOLID


This conversation centers around Robert Martin’s Rails presentation titled “25 Zeros”.


Part of the conversation dived into IDEs and Ryan sent me a link to Code Bubbles.


Ryan later references the SOLID article in CODE Magazine by Derick Bailey.




Virtual Brown Bag 6/17/2010

Ed is doing a fantastic job capturing the links and the topics from the Virtual Brown Bags but I think I will still throw some links up on my site.

C# and Lambdas + Events

Shared some code on using Lambdas to listen to events. Alan Stevens recommended the reading of C# in Depth : http://www.manning.com/skeet/

RailsConf + Skills Matter Videos

Uncle Bob : 25-Zeroes : http://www.youtube.com/watch#!v=mslMLp5bQD0&feature=related

Martin Feathers : Good Code : http://www.youtube.com/watch?v=L9ccnRixyMg&feature=PlayList&p=393ECE649BB3813D&playnext_from=PL&index=6

Udi Dahan : CQRS : http://skillsmatter.com/podcast/open-source-dot-net/udi-dahan-command-query-responsibility-segregation


Code Bubble : http://www.cs.brown.edu/people/acb/codebubbles_site.htm

Code Canvas : http://research.microsoft.com/apps/pubs/default.aspx?id=80076


Software Metaphor

Drive: The Surprising Truth About What Motivates Us : http://www.amazon.com/Drive-Surprising-Truth-About-Motivates/dp/1594488843/ref=sr_1_1?ie=UTF8&s=books&qid=1276794836&sr=8-1

Film Making: A Better Software Development Metaphor http://www.lostechies.com/blogs/rodpaddock/archive/2010/04/15/film-making-a-better-software-development-metaphor.aspx

Ayende : Garden : http://ayende.com/Blog/archive/2007/09/18/The-Right-Metaphor-Software-as-a-garden-not-a-building.aspx

Visual Studio Theme - Bearkat

Sharing my Visual Studio theme has been on my list of things to do for awhile now. When the site http://studiostyles.info/ came up, I immediately thought here is an easy way to share my color scheme.

I finally created my theme on the site: http://studiostyles.info/schemes/bearkat

Be sure to check it out!

For those who might like the colors but not the way I used them (and for me to remember what the colors are):

  • Black : R22 G22 B22
  • Blue : R43 G145 B175
  • Green : R102 G143 B95
  • Orange : R255 G116 B0
  • Red : R163 G21 B21
  • Gray : R128 G128 B128
  • Light Green : R206 G255 B132
  • Tan : R189 G162 B101

Wizards of Smart – Heroku, Cloud, and Iron Ruby

Sorry for the long delay guys. Ryan and I are both in the middle of deploying applications so other things are on our minds.
While we wait for me to edit the recording we did last night and we await Glenn Block’s approval on the fantastic 2 shows we did with him, we can enjoy a smaller conversation Ryan and I had on Heroku, Azure, and a bit about Iron Ruby.


Wizards of Smart – Episode 7 Performance

Ryan starts with describing his love affair with F#, which leads to a discussion of FubuMVC, which leads to a discussion of Performance Problems (not related to Fubu MVC)… etc. So a standard Wizards of Smart conversation.  :)

I titled this Performance since most of the conversation centered around our experiences with targeting and improving performance.


Reducing Exceptional Cases

We have a third party control suite that provided some aggregation functionality. The third party controls had some built in aggregate functions but was missing some other more business centric functions.

We ended up coding every aggregate as a separate custom class and not using any of the built in aggregates. My team member asked me why not use the built in aggregates?

The reasoning is that if we used some built-in aggregates and then built the custom aggregates for the other functions, we would have 2 methods of aggregation to maintain. If we treat all the aggregates as custom, then instead of having 2 scenarios, we have one. We don’t have any exceptions. All aggregates are custom aggregates.

Not only do we simplify our code and future maintenance, we eliminate any dependency on the third party aggregates. Now we are free to change control vendors and not worry about losing our aggregation functionality.

The point I want to make is look to simplify your code. Eliminate exceptional cases as much as possible. Make everything the same and you achieve simplicity and flexibility.

Linq - Sum

Last week I started an ongoing section during the Virtual Brown Bag where I go over a Linq function (or two). The general idea is that although most people ‘use’ Linq, there are lots of functions that are overlooked.

In this blog post I will demonstrate basic usage cases for the Linq Sum function.


If you have a collection of numbers and you want the sum of their values, then  simply call Sum. It can’t get any easier.

public void should_sum_values()
    var nums = new List<int>
    int sum = nums.Sum();



If you want to sum a collection that isn’t made up of numbers, then you will be forced to specify which number property you would like to sum.

public void summing_non_number_collection()
    var jedi = new List<Jedi>
                       new Jedi("Yoda").MidichlorianCountIs(1000),
                       new Jedi("Anakin Skywalker").MidichlorianCountIs(3000),
                       new Jedi("Luke Skywalker").MidichlorianCountIs(1500),
                       new Jedi("Obi-wan Kenobi").MidichlorianCountIs(500),
    // can't compile
    //var sum = jedi.Sum();


public void should_be_able_to_specify_property_to_sum()
    var jedi = new List<Jedi>
                       new Jedi("Yoda").MidichlorianCountIs(1000),
                       new Jedi("Anakin Skywalker").MidichlorianCountIs(3000),
                       new Jedi("Luke Skywalker").MidichlorianCountIs(1500),
                       new Jedi("Obi-wan Kenobi").MidichlorianCountIs(500),

    int sum = jedi.Sum(j => j.MidichlorianCount);


These tests can be found in my Learning Solution on GitHub and found in the Learning CSharp project : http://github.com/RookieOne/Learning


Wizards of Smart – Episode 6

The general theme for this podcast is handling Complexity through Composition. But we end up talking about Entity Framework, Fubu MVC, ISP, Rails, and reach new levels of nerdness with sentence composition.

Virtual Brown Bag – 6/3/2010

A rather link filled, topic filled VBB. Not many direct coding examples but lots of great information.

LINQ Examples

I did share how to use Sum, Select Many, and Aggregate. The code was put into my learning csharp project in my learning solution on GitHub.

I plan on writing a couple of blog posts on these LINQ items so stay tuned if you want more LINQ goodness.


Wizards of Smart Podcast – Episode 5

More rails talk on this episode. But I did share the link with the VBB. http://www.theabsentmindedcoder.com/2010/06/wizards-of-smart-episode-5_01.html

Absent Minded Coder Posts

I shared my 2 posts from the last brown bag…

Structure Map 2.6 constructing the concrete type


Interface Segregation Principle


I also shared George’s comment on the Udi InfoQ article : http://www.infoq.com/presentations/Making-Roles-Explicit-Udi-Dahan


Claudio shared a helpful tool to get rid of an annoying Windows error. http://ccollomb.free.fr/unlocker/

VS 2010 Step into .Net Framework

Claudio also shared a blog post showing how to setup Visual Studio 2010 to allow stepping into .Net Framework code. http://weblogs.asp.net/rajbk/archive/2010/04/21/setting-up-visual-studio-2010-to-step-into-microsoft-net-source-code.aspx

Why Your Code Sucks

This might be my favorite link Claudio shared. The blog post talks about why your code sucks… yes he is talking to you. (and me…) :D


Resharper and Regions

Find out how to configure Resharper to remove regions http://bit.ly/wtjK3

You can also prevent Resharper from adding regions http://bit.ly/9QgLYe


Uncle Bob uploaded a WTF is a Monad presentation : http://bit.ly/aBMIaL <- I plan to look at this tonight ;D

Revamp Your Code Review

Ryan wanted me to share a blog post by Kyle Baley discussing the code review process : http://codebetter.com/blogs/kyle.baley/archive/2010/06/01/rietveld-or-how-to-revamp-your-code-review-process.aspx

Nine Things ie9 is doing Right

Ryan also wanted me to share : http://sixrevisions.com/web-development/five-things-ie9-is-actually-doing-right/

RSA Animate - Drive: The surprising truth about what motivates us

I think @TheCodeFoundary tweet’d this link earlier this week. It is an interesting video discussing how we are actually motivated by more than money. :D


Git + GitHub

Claudio was asking about Git so I shared some links and walked through a simple workflow into how I commit locally and then push to my GitHub repository.

Git Extensions can be found here : http://sourceforge.net/projects/gitextensions/

We also discovered this : http://learn.github.com/

Architecting TekPub

Great article on InfoQ. In the article they itnerview James Avery and Rob Conery about their experience with TekPub going from MVC to Ruby on Rails and the reasoning why.


Future Rails Hands-On Demo?

I tossed out the idea of having a rails hands on talk where as Claudio talks, I code the application in rails. The purpose is to showcase how rapidly we can build an application and deploy the application using rails.


Wizards of Smart – Episode 5

I recently was doing some volunteer work using Rails and started a conversation about my experience. This went on to general discussions on Ruby, Rails, and benefits of Dynamic Languages.