I deal a lot with other people’s and legacy code. One of the things I see very often is what I call "misuse of code comments". Let me provide an exhaustive list of what code comments are for: Describing why code isn’t doing something obvious There, done. What code comments are not for (not complete): The Obvious // set the value of i i = value; It’s obvious that the code is doing that; the comment adds no value here. The compiler provides no validation that the "i" in the comment really applies to any variable in the line the … Continue reading What Code Comments are Not For.
I have a client who wants all the benefits of ALM but doesn’t really want to spend the money on them. They’re a start-up; so, I can respect that. As a result, I’ve been getting them up and running with some of the freely-available and open-source tools. They’re also cross-platform, so getting on some of the great Microsoft programs like BizSpark and WebsiteSpark wasn’t really in the cards. Anywho… One of those tools was TeamCity. It’s a great too for Continuous Integration and Deployment. I’ve used it with a couple of clients now and have nothing but good things to … Continue reading The TeamCity Database Migration Documenation Could Use Some Work
I deal with many different teams and many different companies. I see a lot of teams not get the benefit of known techniques and fail to evaluate and improve. There’s some check-lists out there that are used to evaluate a company/team before joining it; but I find the lists to be deeply rooted in the past. They detail such fundamental things that knowing the criteria on the list really doesn’t tell you much about how your time with this team will be or your role within it. There’s so many low-level features within software development team to aid in successfully … Continue reading Getting a Quick Feel for a New Software Team
What we’ve seen so far of Windows 8 is that it’s all about touch. We’re looking at really early bits and they were effectively delivered on a tablet; so, that’s to be expected. But, for many people they’re going to be using Windows 8 Developer Preview on hardware that doesn’t have touch. So, how do we navigate around Metro apps and the Metro UX when we don’t have touch? Fortunately, the Windows team didn’t forget about keyboards and mice and recognized there are still scenarios that involve keyboard and mouse even when using at tablet. My contention is that touch … Continue reading Windows 8 for the Keyboard User
In my last NoSQL talk, the topic of hosting MongoDB came up. There’s lots of data-dependant applications that are hosted on third-party systems. Many of these systems offer data hosting as well, like SQL Server or MySQL. But, MongoDB is a newcomer to the database arena and hosting services haven’t embraced MongoDB as much as they have with SQL Server or MySQL. I’ve been looking into various options for using MongoDB when you’re not hosting on your own hardware; fortunately, there’s a few companies that are filling the gap here. I’ve been taking the point of view that I’ve already … Continue reading Hosted MongoDB
I just finished a session on NoSQL at the ODNC. Part of what I was trying to get across hinges on an understanding of what relational is, what it’s strengths are, what’s it’s really about, and where it fits (as well as caveats; but, I think that horse is flogged enough). So, before I get into some of the value-add that I think my session includes; I’d like to cover some detail about relational database. ACID Relational is really about consistency of data. ACID guarantees are really what relational is all about–apart from it’s ability to process relations and the … Continue reading Not Only SQL
In this part I’m going to go into the principles behind a fluent builder. Fluent builders don’t simply provide a method for each argument a constructor (or other method) may take, they provide consistency when providing related arguments. In my fluent builder example I had a WithCredentials method on the builder that take two related arguments: a username and a password. I could have just as easily have a WithPassword and WithUserName method and used it like this: Subscription subscription = new RabbitMQSubscriptionBuilder() .WithUserName("pQowiht12glsh%d") .ToHost("localhost", 8181) .WithPassword("i21uWghe&gjs") .SubscribeToQueue("messages"); We achieve the same result; but now we can have username and … Continue reading Fluent Builders Part 2
Contrast with spaghetti code.
We had a fishbowl session at Prairie DevCon recently, titled “When and When Not to use Best Practices”. The idea for the session came from a Twitter conversation between myself, D’Arcy Lussier and Shane Shouldice. That Twitter exchange basically alluded to the sentiment that there is no such thing as a best practice. Best Practices is not a term used solely in Software Development, and not a term coined by the Software Development community. Wikipedia defines Best Practice as “…a technique, method, process, activity, incentive, or reward that is believed to be more effective at delivering a particular outcome than … Continue reading Best Practices