About Dan Vanderboom
Who Am I?
Software engineer, designer, architect, and innovator specializing in .NET Framework, cloud services, thick-client desktop and mobile applications and Silverlight clients for distributed, service-oriented environments. I worked for Panatrack for three and a half years designing and developing barcode and RFID warehouse management and asset tracking systems for companies like Sears, Best Buy, and Whirlpool (which I’ve blogged about here), and CarSpot.com for about ten months on a mobile software system and several interesting research projects involving robotics controlled by Wii motes and more. Currently I’m working for devCatalyst on a new cloud services product (details coming soon).
Early Development History
I started programming at the age of 9 on an Apple 2c that my parents bought for Christmas, and also played around with Commodore 64, TI-99 4A, and gaming with the Atari 2600. After writing my first few programs, I knew I wanted to somehow do that for a living. At the time, it probably would have been considered an unrealistic career choice considering the immaturity of the industry, but I worked at it for hours every day for fun and it’s definitely paid off. While in grade school, my parents signed me up for a high school programming class over the summer, and despite being by far the youngest and shortest kid in the class (and also because of that), it was a lot of fun. Having so many years to explore software without the constraints of business targets and deadlines has given me a unique perspective and has allowed me to become familiar with technologies that I otherwise wouldn’t have been able to justify spending time on. I believe having a well-rounded background is important and adds a great deal to the way we approach and think about problems and the set of possible solutions.
It wasn’t until middle school when another kid my age moved in across the street and we became friends, however, that I learned structured and object-oriented programming (Borland Turbo Pascal, created by one of my personal heros, Anders Hejlsberg). This guy was smart enough not only to write games in middle school, but also to make some great money doing so. I knew then that my hobby had a future as a career.
The Art of Development
Having over 24 years of development experience across several generations of languages, tools, and frameworks, I have been fortunate to have developed an intuition about data structures, algorithms, and problem solving, which allows me to see software development as an art as well as a science. The longer I write code and study patterns, the more it all makes sense to me on a very deep level, and the more I enjoy expressing my designs and teaching others to do the same.
I’ve taught, tutored, and mentored many people over the years, and I will be looking for opportunities to talk and teach more in the near future.
Interests and Focus
In my teaching, I always stress mastery of the fundamentals. Knowing your programming language inside and out gives you great freedom to implement your designs in the same way that knowing your natural language allows you to express your thoughts verbally or in writing. Understanding correct and standard terminology for language constructs and design patterns, while not strictly necessary to build good software, gives you the ability not only to communicate well with other developers, but also the keywords you need to find answers to questions in search engines. Communication is a key professional skill that is often underdeveloped in general, and especially among developers. See this article for more information on this and other important professional skills.
Besides language fundamentals and professional skills, here is a brief list of the topics that I research, work with, and write about:
- Oslo
- Model Driven Architecture, Model Driven Development
- Language Oriented Programming, Domain Specific Languages
- Language and Compiler Design
- Functional Programming: C# 3.0 & F#
- LINQ: Writing Queries, Creating LINQ Providers, Manipulating Expression Trees
- ADO.NET Data Services
- ADO.NET Entity Framework
- Cloud Services: Windows Azure, SQL Data Services, Live Services, .NET Services, etc.
- Data Structures & Algorithms
- User Interface Design: Windows Forms, WPF, Blend, Data Binding, Custom Controls, and Design Concepts (Work Flow, Use of Space & Color, etc.)
- Mobile Devices & Compact Framework
- Concurrency: Lock-Free Multithreading, Concurrency & Coordination Runtime (CCR), Task Parallel Library (TPL), PLINQ, Language Primitives (C omega)
- Design Patterns: MVC/MVP, IoC, UI Skinning, Add-In Frameworks for Extensibility, etc.
- Visual Studio Extensibility: VSPackages, AddIns, Custom Designers & Tools
- Reverse Engineering & Obfuscation
- CLR Internals, MSIL/CIL, Reflection.Emit
- Object-Oriented, Aspect-Oriented, and Other Emerging Paradigms
- Creative Problem Modeling, Visualization of Requirements and Specifications
- Discoverability, Extensibility, and Refactorability
- Automated Unit and UI Testing, Test Driven Development (TDD)
- Machine Learning (“Artificial Intelligence”), Adaptive & Intelligent Systems, Neural Networks, Genetic Algorithms, etc.
- Linguistics: Natural Language Processing, Speech Recognition & Synthesis, Computer Vision, etc.
- Radio Frequency Identification (RFID): Active & Passive
- Formal and Agile Development Processes: CMM, Scrum, XP
- Project Planning and Management: Estimation Techniques and Risk Management
Personal
I have such a wide range of interests, there’s no way I could even scratch the surface. I’ve considered blogging about some of these, such as aviation and flying (I’m always nine hours away from having my private pilot certificate), long distance running, ancient history, mythology, archeology, natural languages, kinesthetics and body language, anatomy/physiology/biology/medicine and especially neurophysiology and metabolic pathways, alternative and sustainable fuels and propulsion technologies, nanotechnology, evolution, genetics, sociology and psychology, philosophy, etc., ad infinitum. Really, the list goes on forever. But for now I’m going to stick to blogging about software engineering and architecture, which already takes up a significant amount of my time.
For more information, see my LinkedIn profile.

Tyler Collier said
Hi Dan,
I didn’t see another way to contact you about this, but perhaps this is a good form for doing so anyway in case someone else has the same question.
First, thanks for your nice work, especially on the Tree article (http://dvanderboom.wordpress.com/2008/03/15/treet-implementing-a-non-binary-tree-in-c/).
I am wondering about reuse of your code. The code samples I downloaded don’t specify a license or licensing information and I couldn’t find any info on this site, therefore I think they are copyrighted by you by default. I’d like to take your code and place it into my work if you’d allow it, so if you’d please email me about that, I’d appreciate it (whether you’ll allow it or not
. However, in the future, you might want to specify license information explicitly, which could include a generic license somewhere on your site and/or explicitly as part of each work. Again, even if you do intend the code to be copyrighted, it’s probably smart to say so, although I find it likely that you are trying to benefit the community by sharing your code.
Thank you and keep up the good work,
Tyler Collier
Dan Vanderboom said
Tyler, please feel free to use any of the code on my blog in your work. If you would, please leave in a comment about where it came from. What would you like to use it for, out of curiosity?
Providing an explicit license is a good idea. I’m adding that to my to-do list. Thanks!
Tyler Collier said
Dan, thanks. I will probably add the code to a common library so am happy to leave in the comments. I am using it for showing a tree structure out of a list of file paths from SVN change logs. I will be showing the tree using the ObjectListView control (http://objectlistview.sourceforge.net/cs/index.html).