Jeff and .NET

The .NET musings of Jeff Putz



My Sites


April 2011 - Posts

POP Forums v9 for ASP.NET MVC3 is done!

The release candidate is the final version of v9.0.0. See my previous post for details. Get the bits here:

Be sure to check out the documentation for information on installation and integration. It will now create all of your database tables for you, for a little less friction in getting set up.

Thanks to everyone who offered their feedback and support, especially at Mix during the Open Source Fest. I really had a blast talking to everyone there!

POP Forums v9 Release Candidate for ASP.NET MVC 3 posted to CodePlex!

Get the goodies here:

Release Notes

This is the release candidate for the ASP.NET MVC3 version of POP Forums. It is considered feature complete, stable, and ready for testing and feedback. For previous release notes, see previous releases.

Check out the live preview:

Setup instructions are available in the documentation section.

What's new in the RC? Since the second beta:

  • Database, e-mail and user setup added at /Forum/Setup, for easier install.
  • Dynamic loading of more posts, before and after the current page, with updated pager links as it goes.
  • Fix: Post paging was including deleted posts in counts, causing blank pages.
  • Fix: Image insertion was throwing a script error.
  • Fix: Image button appeared when inline images were disabled.
  • Fix: Text parser ignored img tags with TinyMCE attributes.
  • Refactored background processes to not initialize if the DB connection was broken (because it brought down the entire process).
  • Removed pinned topics from recent sort criteria.
  • Changed forum layout page to in turn use another layout page, for easier integration.
  • CSS/jQuery tweak to apply class to inline images, mostly to enforce max width.

What's next?

The app is running in production on MouseZoom today, so it's being actively tested. With this testing, and your feedback, the final version should be ready very soon.

Other notes

This is it... we're almost there! No features will be added at this point, and no major code reorganization will occur. Any changes at this point will be made only to fix bugs. It's more or less production ready.

I have been asked about a different data layer, particularly for use in Web farms or in Azure across many role instances. I'm looking into it, and I suspect I'll wait until the AppFabric caching is better defined. There's a detailed article in MSDN Magazine that I need to really read through, but it shouldn't be hard to do. The project is loosely coupled in terms of data access.


This isn’t the process you’re looking for

There was a fairly awesome pissing match between “Uncle” Bob Martin and, well, everyone, on Twitter today. Twitter isn’t a great venue for this kind of thing, because it’s hard to read and hard to make a solid point, but basically Bob suggested that you should do everything possible to make sure you have 100% test coverage. He was making the argument that this was the cheaper way to go for the long-term quality and maintainability of code (or at least, that’s what I interpreted it as, in 140 characters or less).

Absolutes annoy me. That’s why I posted this:

What you describe (re: 100%) is akin to being a modern congressman, ignoring the continuum of possibility for one extreme.

The insanity of absolutes is certainly not limited to politics. I see it all of the time with regard to process in software development. It’s a bit of an absolute paradox that there are some absolutes, like death (though Walt Disney and Elvis would tell you differently if you could find them), but they’re very rare.

I like test-driven development. I like test-“influenced” development even better. I tend to find that the more I refactor stuff, the fewer things a class does, the less likely I’ll feel that I need a test. I mean, how often do you end up having a method that ends up looking like this?

public void Foo(int id) {

I’m not going to write a test for that! OK, truthfully, I have written tests for that, but I don’t even like to own up to it. Every other method in the class may act on some piece of data, and you’ll end up with a method that just calls on one of its dependencies. But there are a lot of cases where it just doesn’t seem like writing a test adds value. There’s a point where there is little to no return on investment, and I think a good developer understands where that point is, so they can devote time and energy to a place where there is some ROI.

I like to think about the process of software development, to the extent that I’m always asking how there can be less of it. I instinctively want to fight any time someone says you “must” do it a certain way. I can remember the first time I sat in with consultants from a firm specializing in agile development, while working at a major auto insurer with a spokesperson named “Flo.” I believed in most of what they had to say conceptually, but didn’t care for their insistence that some of our adaptations were wrong. I really thought we were making the process better, and even leaner, without sacrificing our results.

When I was interviewing for my new job, one of the interviewers, a dev lead, asked what the best way was to communicate “specs” to him and his team. It could have been a make-or-break question, because you never know if you’ll work with someone from the old school who insists on pages of documents that no one ever reads. But I still told him what I think: There’s a broad continuum of what the “right” level of detail looks like. Sticky notes and kanban boards are often more than enough to build software. Sometimes, you need very specific information that has to be broadly agreed upon, understood and well documented (think legal text, like copyright notices or a terms of service page). The only rule I make is that there should be as little documentation as possible.

It all seems like common sense, but business has evolved (devolved?) beyond it in some ways. Engaging in the right process for the situation, instead of being dogmatic about what you “must” do is counterproductive. One of the things I learned early on in coaching volleyball to teenage girls was that I couldn’t just push my system on them the same way every time. Different girls and social hierarchies respond to it differently, so I have to adapt it for every team. The same can be said for development methodologies.

Adapt your processes. Use only what you need. Avoid declaring absolutes.

New job at Microsoft (and see you at Mix!)

After almost a year and a half, I'm leaving my dev position in Server and Tools Online to be a program manager in the SQL Azure BI organization. My motivation for the change probably doesn't matter much to people reading this blog, but I will say that I'll greatly miss the people I worked with in STO. As a Web code monkey, it's not often that you get to work on super-high traffic apps (like the MSDN/TechNet forums) or build totally new stuff like the recognition/reputation service that you're already seeing in the code galleries. The recognition system is all Azure based, too, which was pretty neat.

I can't really say what I'm going to work on just yet, but will say that it immediately struck me as interesting. I technically start Monday, but since I'll be at Mix (you're going, right?), I won't even see the new office until Friday.

Speaking of Mix, I'll be at the Open Source Fest on Monday night, showing POP Forums. Dare I say that I might even have the release candidate ready by then. Hooray! Hope to see you there. This looks like one of the strongest agendas yet.

More Posts