Somehow I got on the conversion of MEF while chatting with Glenn Block. IoC came up in that conversion. I believe, at some point, I said something along the lines of MEF is not an IoC container; but MEF uses IoC. Someone else asked me to clarify that after the conversation. It’s a common misconception that MEF *is an* IoC container. I thought it might be useful to summarize those conversations for others. Part of what gives MEF the ability to do what it does is most certainly IoC. Traditional dependencies (control) are inverted so that something (the host) doesn’t … Continue reading MEF is not An IoC container; but MEF uses IoC
I know a lot of really good people in software development from around the world. I’m fortunate to have spent face-to-face time with many of these people. These people bring great value to our industry. One thing that was apparent again at the MVP Summit is the heavy male attendance on the software development side. The point was made a couple of times and some tweets flowed about it a few times. Is it a good-old-boy’s network? Are software development leaders dominated by the “Alpha Male”. Are women simply not willing to put up with any of us? I personally … Continue reading Women in High Tech
Data-Driven Design is a process of designing software structure and functionality. Data-Driven Design infers functionality mainly from the information that the software is meant to maintain. The functionality of the system focuses on having to create, view, and update that information. Data-Driven Design is useful for designing data models and designing database schemas. The definition of data and the structure of a database is solely focused on the data it models or contains. Data-Driven Design differs in focus from Structured Design, which focuses mainly on what logic needs to be performed by defined how the logic changes program state.
Software technology and products have had a fairly unique attribute until recently: communities. Software technologies and products have had this seemingly innate ability to have a group of people rally together about the product. This community is a positive thing for the product: it provides technical (an sometimes emotional) support for the product and promotes and evangelizes the product. With the maturity of online social “platforms”, many non-software products are trying to build their own communities to reap the benefits that software product communities have gains for so many years. This trend simply validates the importance of product communities. So, … Continue reading Nourishing Technology and product communities.
With news and Twitter reports of snow coming to the mid and eastern parts of North America, I’m reminded of when my family moved (temporarily) from Canada to St. Louis Mo. (okay, really a suburb of St. Louis). St. Louis is a Midwestern city in the United States. As such, it gets a “different” amount of snow than we were used to. Sure enough, the first few months we were there it snowed. Nothing major in our books. About 6 inches, if memory serves. Well, if our neighbours hadn’t thought this was some sort of natural disaster! At the time, … Continue reading The weather outside is frightful
I think the term “Anti-Pattern” is being over used. There’s various definitions for Anti-Pattern like “obvious but wrong, solutions to recurring problems” and “common approaches to solving recurring problems that prove to be ineffective”. All definitions have a common thread: they’re recognizable solutions (pattern) that don’t work in at least one way and should never be used. This means that anything that does work, when used correctly, isn’t an Anti-Pattern. Transitively, that doesn’t make incorrectly used Patterns Anti-Patterns. Code Smells, on the other hand, are defined as “…a hint that something might be wrong, not a certainty.”. I’ve seen the … Continue reading The Difference between an Anti-Pattern and a Code Smell