Hi, I'm Timothy Klenke

I am a software developer in Edmonton, Canada.

I primarily work on on the C# stack. I'm skilled in TDD, SQL Server, code reviews, mentoring.

Projects include web applications, business to business interfaces (e.g. SAP & ERP Interfaces), developer tooling libraries.

Bachelor's of Computing Science, University of Alberta 1998. MCSA Web Applications

Hobbies include camping and poker.

The Blog

I've been blogging since 2013. It started as a New Year's resolution to blog twice a month for 2014. I made it to September, which is better than most of my other New Year's resolutions.

Now I just blog when I get the urge. Usually a couple times a year. The tag line for the blog is "Code Monkey Projectiles".

The Code

This is a code generator that takes a standard C# enum code and outputs a strongly typed enum class.

The strongly typed enum design pattern is an derivative of the Singleton and Multiton design patterns. A Singleton allows for a single instance of a class. A Multiton allows for a very limited number of instances of a class.

An enum is very much like a Multiton where only a very few possible values exist. But C# enums are primitive values, not classes. The strongly typed enum pattern creates Multiton classes that can be used like enums. However they have the full power of classes: supporting static and instance methods, properties, operator overloads, inheritance, and anything else true classes can do.

This is a handy little utility that can be installed with the Windows Explorer Send To menu. It copies the full path to the clipboard in both plain text and HTML formats. If pasting into an HTML or rich text editor the path is a clickable link for both the path and file. This is very handy for emailing a colleague a path to a network share.


Architecture Example

This is companion code to my The 17-Layered App blog post. It is a full example of how to implement fully separated data and business layers.

It is not my only repo with examples of how to separate concerns. Also check-out my Hitchhiker's Guide repo. That is some code I used to present at the .NET User Group for my presentation on Dependency Inversion Principle. In the presentation I take a very badly designed ball of mud application and refactor it to separate out the UI, then the business and data layers. The data layer is a simple file system.

I used the same Hitchhiker example (different branch) in another presentation I did on Seq and analytics. I wanted to show how easy it is to merge log messages from a client, server, and other layers of a distributed architecture. Because of the separation I already did in Hitchhiker it was very easy to swap out the file system data layer with a client/server.

These are the code examples that accompany my 5 part blog post on implementing notification patterns using Reactive Extensions (Rx).

Tic Tac Toe


One of the things I do when learning a new programming language is to implement a familiar problem, namely Tic Tac Toe.

Available in:

My Values Statement

  • I will empower all those whom I work with, which will foster trust and respect.
  • I will provide value to my customers and employer.
  • I will deliver software with the utmost quality.
  • I will continue to improve and learn.
  • I will do all of the above in a sustainable way.