My first programming language. C++ has shown me how to think like a computer, being mindful of time complexity, space complexity, and how and when to optimize for one over the other. It has taught me how to implement many mechanisms that range from a dynamically allocated ragged array of c-strings, to completely functional applications and data structures built as templated classes such as undirected graphs, hash tables, and self-balancing trees. C++ is a powerful language that can be just as dangerous as it is useful. C++ has taught me not only how to program and how to write efficient code, but how to write code that is designed and purposed to be readable, efficient, and re-usable. To me, writing good code involves equally as much time planning as it does coding, so knowing what already exists whether it's in the STL or another 3rd party libarary is invaluable. In any practical application, there is no need to reinvent the wheel.

Building on the foundational knowledge of C++, C#.NET has provided me with high-level programming experience and the opportunity to explore more practical applications in a relatively short period of time. Through C#.NET, I've learned to develop using software design patterns, unit-tests, database programming, GUI applications, Networking, and an overall breadth of other software applications.

GUIs have given me experience with multi-threaded programming, UI design, animation, and efficency. (performance issues can easily come up when designing GUI apps.)

SQL Server, database design, stored procedures, database programming (C#.NET), users & roles, etc. I've built a handful of database-driven web apps and have created even more databases. Planning is important in the database design process, so understanding what data is going into the database, how that data is related, and how the application is going to be used, is an integral part of the design process. These factors need to be accounted for in the entity relationship diagram which then provides the structure for the implementation of the database.

With experience in SQL Server and C#.NET, ASP.NET has proven to be a great way to tie these technologies together into web-applications. ASP.NET is a robust server-side technology that provides dynamic webpage creation. In my experience, this platform is tailored to a complex, many-user environment with membership profiles, database interaction, and a multitude of data display/manipulation tools readily available. You can see examples of my work with ASP.NET on my Projects page

These technologies bring web-applications to life. HTML is the backbone of any website, and JavaScript is the toolbox that lets us get inside the DOM and create a custom and highly interactive user-interface. CSS provides a framework for creating GUIs on the web. I have worked with all of these individually, as well as through 3rd party frameworks including JQuery and Bootstrap.