For those of you that follow C4SC, you know by now that I’ve recently been working a contract absent of anything Microsoft and the .NET development platform. I’ve been working entirely in Ruby for about 7 months now and have been consistently acquiring a new set of skills to make me a more well-rounded developer. It has actually turned out to be one of the most educational opportunities I’ve had in my 10-year career in software development. This type of opportunity is extremely rare – so while I’m here (however much longer it lasts), I’m trying to absorb as much as my brain will allow. Here are some of my recent educational highlights:

  • A new perspective on the agile process including the tools that promote agile development (sorry folks, no TFS here).
  • Good working knowledge of the Ruby language as well as a better understanding of how the open source community fuels rapid software development.
  • Newfound appreciation for the MVC pattern (more specifically its implementation in Rails) and how it can make web development enjoyable again.
  • A solid foundation for jumping into JRuby on the Java platform. In the near future, I plan to explore my options with JRuby in Android application development.
  • A new appreciation for domain specific languages (DSLs) and how readable your code can be without the need for comments.

Looks like the result of one of those liberal arts college curriculums, right?


Over the next several posts, I will be further exploring the last bullet point from above – a new appreciation for DSLs. It wasn’t always an appreciation… During the first few months learning Ruby and all of the open source gems used in our projects, I experienced a mental overload of domain specific language. EVERYTHING seemed to have it’s own DSL… I’m learning a new language and it turns out that almost every gem has it’s own internal DSL. WTF! That went on for a couple of months or so and then things started to coalesce into understanding. As with anything in software development, I’ll probably never know or learn as much as I want to, but at least now the blank stares into code are gone.


So now I will be porting some of the things I’ve learned back to the .NET platform by developing a DSL for working with dates and times throughout a series of C4SC posts. I got the idea when some of my recent Rails work involved some heavy usage of the Date helper methods in the Rails ActiveSupport library. I couldn’t believe how English-like the code read and how easy it was to understand with the absence of comments. I soon felt the need for something like this in .NET…


Following is a tentative set of topics that I plan on covering throughout the series. I will update this list if any of the topics change, are reordered or if more are added. I will also include the links to the actual posts as I complete them. Throughout this process, I intend for the codebase to be very fluid and to change significantly. You can follow along on my public C4SC GitHub repository for the latest updates in their entirety.

This is going to be fun and educational – I hope you enjoy!