A Single-Screen Workflow Application in WPF
I have set myself the goal of learning how to develop a Windows user interface with a moderately complex workflow, one that implies a Wizard-like set of screens to guide the user through a set of steps. The demonstration project’s architecture will utilize the Model-View-ViewModel (MVVM) pattern, with the help of Caliburn.Micro (CM) [nice tutorial]. The solution will utilize the Application Controller pattern and CM’s Conductors.
Be Kind
This is a technical blog, right? Why would I mention this virtue? In Management 3.0, Jurgen Appelo suggests in Do-It-Yourself Team Values that the various Agile, Lean, XP, etc. principles are, quite simply, virtues. Teams should pick a small number and focus on them. “Kindness” is not among the 50 virtues he suggests thinking about, but it should not come as a surprise that that my rationale for “kindness” will overlap that of many other virtues, such as “helpfulness,” “mindfulness,” “tactfulness,” and “service.” Each of these single words offers a slightly different window into an ineffable world of human goodness, and I choose “kindness” for this theory. First, a minor digression.
Urban Gardening and Agriculture - What Is It?
Urban gardening and agriculture in public spaces are becoming accepted as potent means for personal transformation, small-scale economic activity, and for larger-scale climate mitigation and adaptation. This week, Dallas Interfaith Power & Light will be touring the East Dallas Promise of Peace community garden at White Rock United Methodist Church — built, of all places, on top of an unused parking lot! Based on the early feedback, we expect this will be the first of many opportunities to tour community gardens in the ambit of sacred spaces. Likewise, this will be the first of several blog posts on the subject.
Dependency Injection with DB-first Entity Framework
Problem: how do you use Entity Framework, in database-first mode, when following the dependency injection development patterns?
Answer: take advantage of partial classes and manually create the interface. The following notes are just a sketch without full details.
Hastening the Collapse
Be Coherent
Hypothesis: at the beginning of their careers (and perhaps well into them), most software developers think written/verbal language skills are of little importance to their field. To the contrary: as with most science and engineering fields, where language arts and communications classes are seen as secondary at best, the truth is that communication skills are critical to success. Being “coherent” means that one is able to express himself in clear terms, logically and consistently. This ability is essential in both code and “regular” language.
Be Agile
Like many, when I first encountered the term “agile software development,” I thought it was an excuse for a cowboy culture: low planning, low documentation, run as fast as you can and assume that each person’s brilliance will take care of everything. Since it came up in the context of a very large client asking us about our methodology (“what’s a software development methodology?” I asked myself), I thought I should dig into a little more. Integrating Agile Development in the Real World, by Peter Schuh, quickly showed me it is not that simple. Agile development is, in fact, all about fostering a systematic, right-sized, just-in-time development process. For me, being “agile” means embracing change instead of being locked into preconceived notions (requirements). But don’t throw everything out the window either.
Be Test-Driven
Executable tests are the best form of requirements documentation. They improve quality through early discovery of bugs and by fostering a more detailed “what-if” analysis: what if we have this input X? What if the user does Y?
Active Directory and WCF Configuration Woes Resolved
Configuring a WCF service across security boundaries can be a tricky business,
or so I learned recently. Testing went well, but the move to production failed
for a WCF client/server scenario, with the client application encountering an
error: SOAP security negotiation with '<myEndpointAddress>' for target
'<myEndpointAddress>' failed. See inner exception for more details.
Inner
exception: The Security Support Provider Interface (SSPI) negotiation failed.