I’ve finally done it; I finally ripped, twisted, and otherwise cajoled the default MVC template, Identity code, and a few other tweaks I wanted to make into something I am semi-confident will be a good starting point for future projects. Which is really to say ? I’m at a stopping point and I’ll probably burn it all to the ground, tomorrow.
In the quest to get to a Minimum Viable Product, I wanted to be able to wrap together a set of projects that would act as a complete framework for future projects. Every (nearly every) project requires users and a way for them to register and login. I had already tied myself to the IdentityDbContext for user and role management. Initially, I had my base context (VigilContext) inherit from IdentityDbContext. I had trouble coming to grips with having every project then required to bring in the Microsoft.AspNet.Identity.EntityFramework assembly. As I was explaining a completely unrelated problem to a coworker, it dawned on me that the whole point of Bounded Contexts was to have multiple contexts, and limit them to only a narrow scope. VigilContext was not going to be used everywhere; its purpose is for database initialization and future migrations.
A friend forwarded me an article from Runner’s World (written by editors at Men’s Health) titled “8 True Tests of Your Overall Fitness”. The article describes the test, drones on about the author’s experiences, and then gives some helpful tips on how to meet the test objectives. I wanted a quick chart that I could easily reference, so I’ll just post it here. The 30 pound dumbbells and 315 pound deadlift assumes 200 pound body weight.
I have found that it is better to put structure in place around a project before going hog wild on implementation. While I recognize that some practices grow organically, a healthy amount of structure up-front can save a project from technical bankruptcy down the line. The two tools that I use early and often are interfaces and contract classes.
All of my other marathon posts seem to have the “three parts” theme going, so it probably fits for this writing. On the second of May, I ran the Wisconsin Marathon in Kenosha. It is combined with a half-marathon, and a delayed start 5k. I had a terrible experience, but I came away with some fantastic personal post-race analysis.
Two key library decisions needed to be made this week: choosing the object-relational Mapping (ORM) framework, and choosing a membership provider. To cut right to the end, Entity Framework and ASP.NET Identity were the solutions that I have chosen to utilize throughout the software. This week’s commit has been getting the initial implementation created, customized, and tested.