Engineering Craft Why Projects Fail Project failure rates are dismal – less than 50% succeed! Let's explore the root causes beyond just "software people need to change" and work towards a better standard.
Engineering Craft VSIX Installer: Fixing the PkgDefProjectOutputGroup Error Struggling with a "PkgdefProjectOutputGroup" error in your VSIX installer? A sneaky URL-encoding issue in your `.csproj` file might be the culprit – check those semicolons!
Engineering Craft Tools of the Trade From keyboards to motion trackers, I've geeked out over a lot of tech lately! Join me as I share the gadgets that sparked serious excitement and boosted my productivity.
Engineering Craft SSRS Ad-Hoc Reporting: Dynamic RDLC with LINQ to XML Dynamically generate SSRS reports with this approach! Learn how to use LINQ to XML and RDLC to create flexible, application-integrated reports beyond standard SSRS scenarios.
Engineering Craft Starting Out in Ruby Diving into Ruby for my apprenticeship! Exploring mind-bending features like class-scoped methods and overridden constructors has been quite the learning experience.
Engineering Craft RhinoMocks and Constrained Expectations RhinoMocks lets you define precise expectations using constraints like `Matches()`. Learn how to use predicates and method calls for powerful, targeted mocking.
Engineering Craft Productivity Tips: Write It Once Stop rewriting the same code! Learn to leverage templates & snippets for faster, cleaner coding and reduce friction between your ideas and the final product.
Engineering Craft Object Repository: Extending the Standard Repository Pattern Stop repeating LINQ queries! Learn how to create object-specific repositories, extending the standard repository pattern for cleaner, more maintainable code.
Engineering Craft I Disagree with the Pit of Doom I disagree with Ayende's "Pit of Doom" argument for repository abstraction. Repositories provide both an in-memory collection interface *and* a testable abstraction over data, crucial when dealing with diverse data sources.
Engineering Craft LINQ, Lambdas, and the Learning Curve LINQ's true power lies in lambdas, not verbose syntax. Learn to embrace them for concise code and unlock LINQ's full potential!
Engineering Craft Dynamic Sort with LINQ Need dynamic sorting in LINQ? This extension lets you sort by column names passed as strings, avoiding messy switch statements.
Engineering Craft Highway.Data Getting Started Video New to Highway? Our getting-started video covers the basics of Highway.Data, from patterns to queries! Watch now and let us know what you think: [https://www.youtube.com/watch?v=S1irYAW9azA](https://www.youtube.com/watch?v=S1irYAW9azA)
Engineering Craft Designing for Testing Treat your tests like production code—a craftsman takes pride in their tools, and strong tests are essential for a robust application. Empowering everyone to read, write, and run tests ensures quality and consistency throughout the development lifecycle.
Engineering Craft Composing Complex Queries with LINQ Simplify complex LINQ queries with reusable expressions! Learn how to compose multiple WHERE clauses using `Expression` and avoid messy, repeated code.
Engineering Craft Debugging: Mark of Failure or Mark of Caution? Is debugging a failure or a vital check? A lively debate with David Corbin sparked this post exploring whether automated tests are enough, or if line-by-line validation is essential.
Engineering Craft Comments vs. Well-Written Code Prioritize well-named code over comments—clear variable names are far more helpful when navigating unfamiliar codebases than lengthy explanations. Avoid generic class names like "class1" and embrace intuitive naming for easier understanding and faster bug fixes.
Engineering Craft Callback Pattern to the Rescue Tired of unwanted callbacks in your code? The Callback/Chain of Responsibility pattern lets you compose handlers to resolve issues, like login credential resolution, without messy implementation layers.
Engineering Craft CodeRush vs. ReSharper: Six Months Later Six months later, I've been bouncing between CodeRush and ReSharper. While both are powerful, CodeRush’s context-aware templates still reign supreme, but ReSharper's navigation and file generation have proven invaluable.