Hi, I'm Dan
I'm captivated by technology, and I want to be able to control it all! So, as is typical for people in my profession, I'm doomed to a life of learning and wouldn't have it any other way.
I'm a Software Engineer
I design and develop reliable software solutions for complex, critical business needs.
There is so much more to software engineering than simply writing code. It's not enough to be able to understand and write code--it's not even enough to be able to consistently write clean code. For any given problem, you must:
- Thoroughly understand the business domain and understand the purpose of the requested feature
- Be able to detect gaps in specified requirements: just implementing a solution that meets given requirements will almost definitely disappoint the client--they need help defining their needs
- Recognize the relative merit of different choices in software design and technologies
- Every choice has trade-offs, and you need to be able to guide decisions based on the purpose of the feature and your intimate knowledge of the problem domain
- Deadlines are real and must be a factor when considering trade-offs
-
Simplify: don't try to be fancy--break complexity down to simple, readable, maintainable pieces
Controlling complexity is the essence of computer programming. Brian Kernighan
- Always be learning. There's more to learn than we possibly can in a single lifetime, and it's always good to expand your toolbelt
The above list is barely the beginning. Software engineering is a life-long discipline.
The Tech
Most of my professional work is built on top of the .NET Framework and ASP.NET MVC and typically involves the use of one or more SQL Server databases. I've built and maintained enterprise web applications and web services as well as applications with a variety of other technologies including ASP.NET Core MVC, Web APIs, SOAP, REST, Microsoft Azure Service Fabric, and desktop applications in WinForms and WPF.
As a developer in the .NET world, the vast majority of what I write is in C#. And, on rare occasion, I'll do a little legacy application maintenance in VBA. I commonly use HTML, CSS, JavaScript and/or jQuery, and Ajax for web UIs. And I've had a couple opportunities to work with React and Angular. I'll write an occasional PowerShell script as well.
Projects
In my GitHub account, I've given technical descriptions of some of my professional projects.
When it comes to side projects, I'll dive into just about anything including .NET, .NET Core, .NET Core on Linux, PowerShell, Bash, Python, Node.js, Xamarin, iOS. And, I have a mile-long list of languages, frameworks, platforms, and project ideas to explore.
This website is one of those projects. It's a simple little thing now--an ASP.NET Core web app running on a Linux server. And, I'm excited about my plans for it and imagine I'll be working on it incrementally for years to come!
Always Learning
I'm constantly researching various software technologies, languages, and design techniques. And, I typically take notes and throw them in my GitHub wiki. Feel free to take a look!