Please don’t code this way….

“Having all clients share the same interface allow them to be hot-swappable at run-time without code changes”

posted @ Sunday, October 23, 2016 8:35 AM | Feedback (0)
This is why I don’t like RavenDB’s ‘Safe by Default’

Daily WTF. Ayende would call this a feature.

posted @ Wednesday, October 19, 2016 9:18 AM | Feedback (0)
Studies show TDD doesn’t work

Of course, anyone who put any thought into it already knew this. Did I say that obnoxiously enough?  Nah. Anyhoo, it is no surprise that someone says in the comments “Well, they didn’t do TDD right.”  That’s always the response. Translation: “If you are a good developer, you do good development.” Yep, thanks.

posted @ Monday, October 17, 2016 10:17 AM | Feedback (0)
About Stereotypes: Compare and Contrast

Compare this point of view, with this point of view. There are deep lessons in there.

posted @ Thursday, August 25, 2016 9:52 AM | Feedback (0)
Stress Management for Snowflakes

If you feel guilt at your list of unwatched shows on your DVR, this is for you.

posted @ Wednesday, August 24, 2016 10:03 AM | Feedback (0)
Self-care for snowflakes

If you find life so very very hard, this may contain good advice for you.

posted @ Thursday, July 14, 2016 9:56 AM | Feedback (0)
Web Template Fail: Visual Studio Enterprise 15 Preview 3

Create a new project based on the .NET 5 web template. Try to build. 1>C:\Program Files (x86)\Microsoft SDKs\TypeScript\1.9\tsc.exe  --noEmitOnError --locale en-US --listEmittedFiles 1>C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v15.0\TypeScript\Microsoft.TypeScript.targets(261,7): error MSB4064: The "OutputLogFile" parameter is not supported by the "VsTsc" task. Verify the parameter exists on the task, and it is a settable public instance property. 1>C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v15.0\TypeScript\Microsoft.TypeScript.targets(247,5): error MSB4063: The "VsTsc" task could not be initialized with its input parameters. 1>Done building project "EntPrev3-WebTemplate.xproj" -- FAILED. Do they even look at the work they are...

posted @ Monday, July 11, 2016 11:03 AM | Feedback (2)
There’s levels of irony here

The man who’s made a career of making videos about things he doesn’t really know is writing a book. I’m sure it will be a good read.

posted @ Monday, July 04, 2016 8:01 PM | Feedback (0)
Did the page change? Change the URL

Go to the new NHL standings page here.  Look there’s the spinning thingies as the data loads.  Oh what fun. Now, change the standings to “Wild Card.”  Now, try to bookmark it.  Oh, that’s right, the URL didn’t change.  So, everytime you come back to the page, you have to reset it to wild card. Sometimes, people don’t think things out.  But if the look of a page changes due to some user action, you really need for it to be reflected in a way that allows the user to come straight back to that view, and really,...

posted @ Tuesday, February 09, 2016 4:44 AM | Feedback (0)
Running Asp.Net 5 Website on IIS

Great summation here of what I posted previously, and that’s all good. But read the first paragraph: As ASP.NET 5 hit RC1 about a month go, more and more folks are looking at production deployments and other real life use cases of it. Going beyond demoware and experiments, to real applications, inevitably leads to thinking about hosting it somewhere – which, if your environment is Windows, most likely means IIS. Think about this.  Asp.Net 5 hits RC1 and people are thinking about hosting it somewhere…. Microsoft kills WebForms, thinks running c# in Visual Studio Code on...

posted @ Monday, January 11, 2016 11:43 AM | Feedback (0)
Are you targeting the full .NET framework and the CoreCLR? Please stop

“Well, the CoreCLR can’t process images or send email, but there should be 3rd party NuGet packages to take care of this.  And this way, if you every need to move from Windows to OSX, it will be seamless.” Oh.  My.  God.  No, people.  Lowest common denominator programming is wrong.  WRONG. WRONG. WRONG.

posted @ Tuesday, December 29, 2015 9:51 AM | Feedback (0)
Using EF 6 with Asp.Net 5 MVC 6

Just an aside, but Microsoft’s naming conventions are getting absolutely comical. Anyhoo….Microsoft appears to hate connection strings now.  With UWP and now with Asp.Net 5 MVC 6, they just don’t make things easy at all. Since EF 7 is woefully undeveloped, and even when it RTMs, it won’t be ready for prime-time, I was trying to get an existing EF 6 infrastructure to work with WebAPI in the new Asp.Net 5 MVC 6 world (yes, I’m going to keep typing it out).  Since code changes are fun, there were various changes that needed to be made to take...

posted @ Friday, December 25, 2015 11:59 PM | Feedback (0)
Asp.Net 5 MVC 6: Why AddMvc() and UseMvc()?

This is one of those things that strikes me wrong about the whole new shiny system.  It’s a bit of a shame when they redo everything from scratch and get such basic things wrong (“we got rid of web.config.  why?  To make configuration more difficult!!!”) There is a ‘Pay As You Go’ notion that they like to talk about in their discussions.  The idea, not entirely stupid, is that you need to explicitly state how you want things to be, so to speak, so as not to end up with a bunch of framework (and other) code that you...

posted @ Friday, December 25, 2015 10:34 PM | Feedback (0)
General Tso’s Chicken

Was invented in the US. Just saying.

posted @ Monday, December 21, 2015 9:37 AM | Feedback (0)
This is the year of Linux on the desktop

Only two weeks left.

posted @ Friday, December 18, 2015 10:43 AM | Feedback (0)
Bye Bye JetBrains

Mandatory subscription licensing?  Fuck that.

posted @ Wednesday, September 09, 2015 9:39 PM | Feedback (2)
Web site debugging problems? Try running it outside the debugger at least once

I’ve been looking at this, because I’m looking into how to create a site that uses OData with CQRS (not to mention some Windows Universal Apps that use tasks to call OData services….”Over-architectured solution?  You’re soaking in it!”) and have been having a hell of a time debugging it (I know it uses WebAPI, but same difference). I was cursing Angular, because the fun thing with javascript is you have to remember to F12 and look at response/request bodies and headers and it has all these strings and it kept giving me 500 errors because of ‘ambiguous matches’ on...

posted @ Tuesday, August 25, 2015 7:26 PM | Feedback (0)
Things no one needed – IOT Design Manifesto

For those of you who believe in useless manifestos (we aim for the “win-win-win”?  Did you mean the “dumb-dumb-dumb”?), here you go, sign away.

posted @ Sunday, August 16, 2015 5:23 PM | Feedback (0)
Windows 10 Mobile Build 10512 on a Lumia 1520: Still not right

I’ve been using Windows 10 ever since it first became available (so sometime in 2014), even on my main development machine, and without any significant issues along the way. Which makes it all the more surprising that Windows 10 Mobile is such a freakin’ trainwreck. Ever hopeful that the build quality will get better, not worse, I have installed the latest build on my Lumia 1520, and it still can’t display the start screen properly.  In the previous build, you could get it to show up.  It might disappear from time to time, but generally, you could get...

posted @ Wednesday, August 12, 2015 2:01 PM | Feedback (0)
This is the year of Linux on the desktop….

Ok, maybe not.

posted @ Monday, August 03, 2015 12:03 PM | Feedback (0)
A good set of problems to have

If you find yourself in this situation, you should consider yourself very lucky and be grateful.

posted @ Thursday, June 11, 2015 9:06 AM | Feedback (0)
How not to use a computer

Does make for an interesting read, though.

posted @ Friday, June 05, 2015 12:32 PM | Feedback (0)
Wittgenstein on Family Resemblance, or why I don’t like base classes

This is largely a through-away notion, but there is a point to it. Wittgenstein talks about something called ‘family resemblance.’  Very, very generally speaking, we talk about things as being similar, as fitting within a common ‘concept’, but they don’t share a single defining feature.  The stock example is that of a game.  Hockey is a game.  Tiddlywinks is also a game.  You cannot define a common defining feature. Sometimes, when talking about code, there are people who want to do everything in terms of base classes and subclasses.  This is natural and understandable, but there are many...

posted @ Sunday, May 10, 2015 12:23 PM | Feedback (0)

I had no idea that was a word. Anyway, although you certainly should design your apps so that they are easy to use, pretty much if you can’t do it on the computer, it usually is your fault. Sorry.  But, that’s okay.  It isn’t a moral judgment, it’s a skills assessment.

posted @ Friday, April 24, 2015 12:15 PM | Feedback (0)
Chasing the Latest Shiny New – Software Design as Fashion Design

Rob is in love.  He’s been in love before, he’ll be in love again.  And there’s nothing wrong with that.  Love is cool. Related (sort of), I was talking to a recruiter/vendor today and they wanted to know if there was any word that they could utter that might make me interested in moving to a new job. I think they wanted me to say something like “Knockout” or “Angular” or something.  A few years ago, it would have been “Rails”. When you don’t have an interest in the end result of the work, or at least...

posted @ Friday, April 17, 2015 1:59 PM | Feedback (0)
It’s ok to like different things: Sine Qua Non and other things

I was reading this and it touched on something that had come across in totally different subjects/genres/whatever, and since there’s a clearly correct answer, I thought I’d mention it here. From that article is this: Critics, of all people, have an obligation to take a stand, and if you truly adore the subtlety and elegance of La Tâche, it is impossible to believe that you can derive equal pleasure from wines like Krankl's The 17th Nail in My Cranium (it's a Syrah that weighs in at around 16 percent alcohol). These are wines that offer completely conflicting notions...

posted @ Wednesday, April 08, 2015 11:57 AM | Feedback (0)
Agile Maturity: Getting beyond Legos and Games

Call me crazy, but I have a dream that one day people can learn about Agile without needing to regress to their childhood. I mean, no doubt it can work, but seriously, we can do better.

posted @ Thursday, March 26, 2015 9:50 AM | Feedback (0)
Repost: Worse is better, for better or worse


posted @ Wednesday, March 18, 2015 12:02 PM | Feedback (0)
I dream of the day when this goes away

When you run dozens of browser windows, each with possibly dozens of tabs, when things slow to a crawl, it’s probably Flash that’s the problem. Bleh.

posted @ Thursday, March 12, 2015 3:28 PM | Feedback (0)
Deleting comments is dumb

So, the other day, I saw this in my RSS feed (“Daddy, what’s an RSS feed?  Do you play CDs with that?”).  As it happens, I was looking for something quick to do this sort of thing, so it happened along at a good point. For some reason, a broken URL version appeared again in my feed today.  Not sure what was up with that, so went back to the post to make sure it was the same. It was, except it looked different.  Hmm….oh.  There had been some comments, but they were gone, and comments were closed,...

posted @ Thursday, March 12, 2015 11:42 AM | Feedback (0)
Flexible Architecture, done entirely wrong

Having worked on a similar system at a ‘too big to fail’ financial client, I know exactly what Ayende is talking about: Then the designers sat down and created the following system of classes: public class Table { public Guid TableId {get;set;} public List<FieldInformation> Fields {get;set;} public List<Reference> References {get;set;} public List<Constraint> Constraints {get;set;} } ………

posted @ Tuesday, March 03, 2015 9:08 PM | Feedback (0)
Yet another sign that your software development organization might have some issues

“Someone is here from the overseas office, so even though the process is broken, can we hack the database so that it looks like we are making progress?”

posted @ Tuesday, January 13, 2015 3:34 PM | Feedback (0)
Another sign that your software development organization might not be up to snuff

“Not really my problem.” Offered up when an obvious difficulty/roadblock/issue is raised.

posted @ Thursday, January 08, 2015 12:10 PM | Feedback (0)
A sign your software deployment processes might not be as good as they could be

“Well, everything was fine except that when I copied the config file from DEV to PROD, I made a typo when changing the server setting.”

posted @ Tuesday, January 06, 2015 10:24 AM | Feedback (0)
Repost: Is Unhedged Call Options a Better Metaphor for Bad Code?

When I first started reading and talking to Chris Matts (namedropper?  you’re soaking in it), I had difficulty understanding what he was talking about.  Real options?  Huh? It’s gotten a little better, and so this makes more sense to me now than it would have. Writing good code involves so much more than developers (this is why I dislike the Software Craftsmanship movement so much….the idea that ‘well-crafted’ code is inherently good code is simply mistaken), it involves people with many different skillsets, organizations with certain sorts of structures, etc. and so I find these sorts of discussions...

posted @ Wednesday, December 24, 2014 10:22 AM | Feedback (0)
Please don’t save your view models in your database

For various reasons, I was watching this to learn more about the latest version of Raven DB 3.o (basically, I have a big event/command store and I want to process the raw data into multiple different ‘buckets’ and am looking into various options, including SQL and NoSQL options). Before I get to my main point…. Normally, I wouldn’t pay much attention to mistakes/issues with the presentation itself.  Things happen.  Network connections go out, that sort of thing. However, if you are trying to give an example that is key to your overall presentation, and it is not...

posted @ Friday, December 12, 2014 11:20 PM | Feedback (2)
Who is Sandro Mancuso?

This is a rhetorical question, of course.  I wonder if there was a meeting, complete with secret handshakes, to decide who gets to write the bible. “Where how it is done is as important as having it done.” Right. Translation: “helping developers become more difficult and unproductive than they already are.” YMMV.

posted @ Thursday, December 11, 2014 11:08 AM | Feedback (0)
An old school way of writing application code

In this case, ‘old school’ means ‘generally bad’. Now, in certain circles, one can’t swing a dead cat and not hit someone who thinks that stored procedures are evil.  Yawn, yawn, yawn.  No, they aren’t, get over it (having said that, you should rarely use them, as there is almost always a better way of doing things). That being said, if you are going to write stored procedures, you almost definitely shouldn’t do them this way.  The mixing of insert/query/update code, the ’magic number’ error codes, the convoluted parameter checking, and this isn’t even an example that actually...

posted @ Tuesday, November 18, 2014 12:20 PM | Feedback (0)
How Chocolatey saved Windows

Apparently, automation and package management saved Windows from going out of business.  Um…..what?

posted @ Friday, November 14, 2014 11:23 AM | Feedback (0)
Mongo Repository: You probably shouldn’t do this type of thing

Reading this on InfoQ, I was struck by this: “The reason for the existence of MongoRepository, to me, is simple: it provides a very 'narrow' abstraction on top of the underlying MongoCSharp Driver that, to me, mostly hides all awesome possibilities it provides behind a simple interface that, basically, supports CRUD. This way you don't get too tempted to use all sorts of Mongo-specific functionality and thus high coupling between a project and mongo is minimized so that, should one ever decide to use a different persistence layer, the 'switch' can be made a bit easier.” Unless you...

posted @ Tuesday, October 07, 2014 9:37 AM | Feedback (0)
Blameless Post-Mortems

I had never heard this particular phrase before.  I think of it as common sense. The main goal is to find what, how and why and incident happened. The post-mortem must produce actionable items that will prevent the same thing to happen in the future.

posted @ Monday, July 28, 2014 9:22 AM | Feedback (0)
Brief review – Pluralsight’s Pragmatic Behavior-driven Design with .Net

I had a much longer review planned initially, but am instead just going to write down a few notes here. Really short version: do not watch this thinking you are going to learn how to do BDD.  Rob’s latest entry concerning BDD is really disappointing on a number of levels.  He ‘introduced me’ to BDD through his Kona webcast originally, and so I generally look forward to anything he has to say about the subject, but the overall quality of this online course was pretty lackluster, in many respects. He starts off strong, pointing out that...

posted @ Friday, July 04, 2014 4:41 AM | Feedback (0)
TDD isn’t dead, it’s dumb

DHH had a post about TDD which apparently has raised a lot of comments.  The usual suspects have replied, showing once again they don’t get it (and in this case adding one of the dumber discussions of monogamy I’ve seen in a while….then again, he’s a developer sort, so, you can’t really expect much). DHH says: But first of all take a deep breath. We're herding some sacred cows to the slaughter right now. That's painful and bloody. TDD has been so successful that it's interwoven in a lot of programmer identities. TDD is not just what they...

posted @ Monday, June 23, 2014 12:09 AM | Feedback (0)
Taking another look at Opera

The browser, not the art form. A little while ago, some may recall that there was a bit of a brouhaha regarding Mozilla and its then CEO.  Out of all this, some people thought it would be a good idea to boycott the use of the Firefox browser.  It will come as little surprise to some of you that I think this was, not to put too fine a point on it, a truly idiotic idea on many different levels. After the then CEO was made the no longer CEO, I then read someone who argued that it...

posted @ Saturday, May 10, 2014 11:22 PM | Feedback (0)
Tilting at windmills, spring 2014 edition : API Commons

I’m sure someone thinks this is a good idea.

posted @ Friday, May 02, 2014 10:28 AM | Feedback (0)
Current list of the Entity Framework Vote of No Confidence Signatories

I’d forgotten about that load of crap, but Jimmy Bogard gave it a mention in a recent post.  What a bunch of self-important jibber jabber: The signatories of this letter are unanimous in expressing concern for the welfare of software projects undertaken in the Microsoft customer community that will make use of the forthcoming ADO .NET Entity Framework….We remain willing to collaborate with Microsoft and the ADO .NET Entity Framework team to forge a positive action plan to help the Microsoft customer community achieve success with entity architecture applications… The list is still up, I’m not sure if...

posted @ Tuesday, April 22, 2014 6:31 PM | Feedback (0)
Repost: Microservices are not a free lunch

A lot of good information is available here. Enjoy.

posted @ Tuesday, April 08, 2014 12:28 PM | Feedback (0)
Access to a domain expert end user makes all the difference

In software development, having access to a domain expert makes a huge difference.  But a domain expert who doesn’t use the end product can lead you astray. In software development, having access to an end user makes a huge difference.  But an end user who isn’t a domain expert can lead you astray. In software development, having access to a domain expert that is an end user can make all the difference. You can discuss the requirements with the domain expert and get in the ball park. You can look at the screen of the in...

posted @ Thursday, March 27, 2014 12:21 AM | Feedback (0)
Web sites I visited recently that suck

I realize one of these is a sitting duck, but…. Since I incorporated, I’ve had an individual plan for a very long time.  It seems to be okay, but the premiums have been rising pretty quickly, so once I figured out I could get a better plan for half the cost (currently, anyway), I decided to go ahead and get one through this newfangled thingy we have. Most of the known issues are well-known, but a couple of ones I really liked included having to enter my SS# multiple times, often in the same ‘process’.  Apparently,...

posted @ Wednesday, March 19, 2014 11:09 AM | Feedback (0)
Rejecting Open-Source Software doesn’t make you a racist

Marking the start of the year with one of the dumber analogies in quite some time, Phil Haack has a post about betrayal, open-source software, yada yada yada.  It’s mostly rather silly and you can read it here. Within it, Haack implies that the sort of progress that Microsoft is showing by open sourcing more and more of its stuff is equivalent to the passage of the Civil Rights Act, and other things: The Catholic Church at the time must have felt betrayed by Galileo when he lent his support to the heliocentric model of the universe because...

posted @ Thursday, January 02, 2014 6:53 PM | Feedback (0)
Why infinite-scrolling webpages suck

From xkcd:

posted @ Friday, December 27, 2013 10:22 AM | Feedback (0)
An important life lesson for software developers

Tekpub has been acquired by Pluralsight. But that’s not the lesson.  Read this part: “I tried those things and some of them worked, some didn't but all in all things were going along just fine... until... This last summer I spent a good solid month with my family, taking some time away from production and general business "stuff" - it was the longest time I've been away from work since... I don't know when. It was one of the best vacations I've ever had and my wife and kids noticed the change in me and they loved...

posted @ Thursday, October 31, 2013 8:41 AM | Feedback (0)
Rhetorical question: does Google’s homepage have a bug?

Go to and, without entering any text in the search box, click the “Google Search” button.  Observe what happens. Is this a bug?

posted @ Monday, September 23, 2013 9:45 AM | Feedback (3)
Yes, Virginia, Code Reuse is Bad

Seems like this still comes up from time to time. It happens in so many scenarios, but let’s focus this one on SQL code.  “Why are you rewriting that code, my code over here already does that!” Is it identical code? “Well, it’s very similar.  If you just use this code, then you don’t have to rewrite it, and we have fewer lines of code to maintain!” And when you need to change your ‘very similar’ code, will you be prepared to retest every single other calling module to make sure your changes to your ‘very...

posted @ Thursday, September 19, 2013 8:20 AM | Feedback (0)
The risk of hiring a software craftsman

Rob Ashton has a good post talking about the last year or so of his development life (with some other interesting personal info thrown in).  It’s a good story, and there’s a lot of things to ponder. Now, I suppose it might be read into this that I’m taking a shot at Rob, but that’s not the case.  I respect and admire him, and am (not without reason) a little jealous at the opportunity he had to take a year to do the ‘walkabout’ thing (look it up if you don’t get the reference). And, I should point...

posted @ Monday, September 09, 2013 11:44 PM | Feedback (0)
Repost: Unit testing is out, vertical slice testing is in

Nice post here.  Some money quotes: "As a recovering TDD addict, I used to tell people, like many others do, that the issue with their TDD was that they didn’t do it right. If TDD is too hard, do more TDD! In other words, if it hurts, just bang that leg with that baseball bat a bit harder, eventually you will not hurt anymore. I will come straight out with it: this approach to unit, integration and tdd testing has, by far and large, failed. It’s over. It is time to move on.” and “Instead of...

posted @ Thursday, July 11, 2013 12:56 PM | Feedback (0)
Create a backup

I didn’t lose anything this time, but could have. Back things up.  If it is code you care about, think about Amazon S3.  If it is personal files, think about just about anything in the cloud. Take a minute (or an hour or a day) to set this up.

posted @ Thursday, July 04, 2013 11:13 PM | Feedback (0)
xkcd: The pace of modern life

From xkcd:

posted @ Saturday, June 22, 2013 4:24 PM | Feedback (0)
Hibernating Rhinos’ Entity Framework Profiler Mini Review

This doesn’t really constitute a review, just a couple of comments, but whatever. In some previous posts, I had talked about my experience with Hibernating Rhinos’ Linq to Sql profiler.  Basically, it failed for me, didn’t even function properly, and Ayende was unable to help. Anyway, I’m working on something that uses Entity Framework, so I figured, what the hell, I’ve give it one more shot, I’ll just get the EF Profiler, and not the entire suite, and see how it works.  I can expense it. So, the first thing I did, obviously, was hook it up...

posted @ Tuesday, June 18, 2013 8:04 PM | Feedback (0)
DRY is for Martini

I liked the quotation from this post: “code duplication is OVER *FUCKING* RATED. DRY is for Martini. Yes, I'm exaggerating” I was thinking about this because I found myself recently bemoaning my terrible code, where I was doing the exact same thing in two different places, and getting bitten when fixing the code in one place and not the other. Except the entire point is that it only happened to be the exact same thing, at that time.  When it needed to change in only the one place, and not the other, I remembered that sometimes DRY...

posted @ Monday, May 20, 2013 12:01 AM | Feedback (0)
Repost: Unraveling the Developer Bias in Agile Development Practices

There is a little bit of irony in reposting this, as I think the concept of “Enterprise Architect” is not only bankrupt, but almost always harmful.  In fact, I read most of Nick’s posts and think to myself something along the lines of “it’s kind of a shame to be doing something largely pointless.” But, I tend to agree with most of what he says here, especially little things like this: “As an agilest, I value people over processes.  That means I value the contribution of individual experts on my team to do their work with excellence, and...

posted @ Tuesday, April 16, 2013 10:08 AM | Feedback (0)
Yet another reason why the software craftsmanship movement sucks

Here’s the description of the talk: “In this talk Robert C. Martin outlines the practices used by software craftsmen to maintain their professional ethics. He resolves the dilemma of speed vs. quality, and mess vs schedule. He provides a set of principles and simple Dos and Don’ts for teams who want to be counted as professional craftsmen.” The video sounds like it was recorded next to a cocktail party.  You can always hear what Uncle Bob says, I never had a problem with that.  Just keep that in mind if you listen to it. Now, as...

posted @ Wednesday, March 13, 2013 9:31 PM | Feedback (0)
Software Craftsman Myopia

Uncle Bob: “In another 10 or 15 years TDD will likely be as prevalent and important to programmers as hand-washing is to surgeons or double-entry bookkeeping is to accountants. I stand a good chance of seeing that happen.” Alexander Tarnowski: “The ability to deliver tested and integrated software whenever we want to will be taken for granted. There will be no holy test and staging environments that some hero set up once and nobody dares to touch (for they’d break anyway). ” Bullshit.  Bet very very heavily on the under here.

posted @ Wednesday, March 06, 2013 11:29 AM | Feedback (0)
Uncle Bob is a consultant

Not that there’s anything wrong with being a consultant, of course. <rant> Apparently Uncle Bob has never heard of Twitter (the company, not the technology). Here’s his latest “please hire me at hundreds of dollars an hour to peddle dogma, and if you question me, I’m going to use ‘I’m old’ as a response” post. I think the saddest thing about the Software Kraftsman Kult is this desperate clinging to shibboleths.  “TDD simply must be right, in every instance and at all times!!!!!”  Whenever some peddler wants to peddle some ‘Best Practices’ shit, remember the truth:...

posted @ Wednesday, March 06, 2013 11:20 AM | Feedback (2)
Well said about WCF

Had one of ‘those’ discussions recently about WCF.  Ugh. “As a side note, a part of me still thinks that WCF was built on a bit of a dare or as an experiment to see if Microsoft could make even the nicest person (not me) curse like an irate and drunken pirate when trying to deploy WCF apps out into the wild. I've never encountered anything more heavily coupled, horribly overbuilt, and tediously demanding of error-prone configuration, reconfiguration, subconfiguration in my entire life.” From:

posted @ Friday, March 01, 2013 11:50 PM | Feedback (0)
Delivery vs Quality

I realize that just about anybody reading this will immediately think “but we can have both.”  I understand that.  This is just an example. At a client once, I came aboard with a bunch of other consultants around the same time (sometimes organizations do these weird things like letting entire groups of consultants go, along with their gained knowledge, and then have to pay the cost of having that knowledge needing to be relearned.  There are ways that organizations can learn to do such things better, but I digress).  With a large installed base of applications, various consultants were...

posted @ Thursday, February 21, 2013 11:44 AM | Feedback (0)
Becoming a Certified ScrumMaster

As part of a current role at a multinational financial organization, I had to take a two-day course and pass the test to become a CSM.  Here are a couple of notes about that. The first thing to note is that the presenter, from RippleRock, was top notch.  He was well experienced, highly knowledgeable, not a fanatical puritan, and British, to boot, which allowed me to spend the two days compiling a list of British idioms that I could then look up on the web.  Fantastic, I had no idea “pants” could be used as a derogatory term, awesome....

posted @ Wednesday, November 14, 2012 10:12 PM | Feedback (0)
Bad analogy time: It's okay to be a line cook

I was trying to explain to non-software developers a certain point, and came up with one of my typically bad analogies. Though I hate the term, I guess I have to admit that I qualify as being a 'foodie.'  Though I tend to discount some of the more political aspects of it, I buy into the whole food to table thing, cook for myself, believe in using local ingredients, and all that stuff. Because I am lucky enough to be financially successful, I enjoy the occasional visit to Michelin starred restaurants.  I also remember being, in a much...

posted @ Thursday, November 01, 2012 12:13 AM | Feedback (0)
Software Development != Writing Code

The disconnect between these two has been highlighted by recent events. The end requirement was clear.  A couple of changes that the business wanted, prioritized and re-prioritized to a certain list.   A couple of changes that could be completed in a few days and fit into the long list of various requirements that the business wants, a business that has very little resources available for testing. The developer in question though sees the ugliness in the entire codebase, it makes him uncomfortable.  He sees all of the places where it goes against what a software craftsman believes in. ...

posted @ Thursday, November 01, 2012 12:00 AM | Feedback (0)
A sign your organization might not actually be practicing Scrum

If it has a day long meeting to plan out its next four sprints.

posted @ Thursday, September 06, 2012 9:32 AM | Feedback (0)
On the Art of Misdirection

Dan North published an article about opportunity cost in which he (deliberately and provocatively) used TDD as an example. The article itself is fairly straight forward, and states what should be rather obvious: look for the trade-offs for adopting any particular practice you adopt, and consider alternatives that might be better in some particular contexts, because there are always trade-offs and there are always alternatives. Not surprisingly, some of the reactions are stereotypical and funny, along the lines of “How dare one suggest there are trade-offs or alternatives to TDD?” For example: “your (sic) disingenuously misleading...

posted @ Wednesday, June 27, 2012 11:26 AM | Feedback (0)
Repost: Technology vs Sexism

I’m reposting about the original that can be found here. Since I’m reposting it, I obviously agree with it, but let me add my own spin/rant to the whole thing. To repeat something I posted previously: “If you are a woman in any industry, and you find yourself going to meetings where the first comment you hear is “Hey babe, nice tits”, run, don’t walk to your HR department. “ Since that could be read as being flippant, let me make clear how serious I was.  Like racism, sexism takes different forms.  Not every form is...

posted @ Thursday, May 24, 2012 8:57 PM | Feedback (0)
The sort of thing about ESPN that can drive you nuts

Obviously, this doesn’t just apply to ESPN, but since they hold the monopoly…. The Chicago Bears put the franchise tag on Matt Forte, and then signed Reggie Bush.  Forte took to Twitter to talk about being disrespected, yada yada yada. This is right in ESPN’s wheelhouse.  Let’s discuss athletes, disrespect, money, break!!!! Anyway, on whichever ESPN radio show which I was listening to while driving home, Three-Time Super Bowl Winner Mark Schlereth decided to weigh in on the matter. <digression>I call him “Three-Time Super Bowl Winner Mark Schlereth” because, without prompting, he inevitably brings up the...

posted @ Saturday, March 24, 2012 10:27 PM | Feedback (0)
Harden the f%&k up

So, apparently there is some Interweb controversy about something called  Scott Hanselman blogs about it here. As far as I can tell, the issue can be summarized as: A woman created some marketing copy for a company that another woman found offensive, and the owners/executives/whatever of said company handled it on Twitter in a way that other people found unsatisfactory, and then the owners/executives/whatever of said company apologized for handling it in a way that other people found unsatisfactory and that they really didn’t mean to handle it in a way that other people found unsatisfactory. ...

posted @ Saturday, March 24, 2012 9:49 PM | Feedback (0)
Jesus does not influence the outcome of NFL games

After watching yet another miraculous Tim Tebow led comeback, I began to reconsider my stance that Jesus was not interested in the outcome of NFL games. There are two particular aspects about the Tebow phenomenon that I particularly enjoy. One is the obvious religious aspect. Although it isn’t the only factor, by far one of the largest aspects that drives the Tebow-haters, and drives them nuts, is the fact that Tebow is openly Christian, and unapologetic about it. These same people generally wouldn’t mind thuggish behavior in their athletes, or manslaughter convictions, or what have you, but an occasional mention of Jesus...

posted @ Sunday, December 11, 2011 7:45 PM | Feedback (2)
Repost: Relaxed attitude towards the pragmatic delivery of okay software

Rob Ashton has a post up about how he’s addressed his development of a current project. There’s tons to quote here: “…this time I made a real effort to drop any up-front 'zomg my code must be perfect' aspirations from the get go. What does this mean? Well I pretty much decided that technical debt should not be something to be overly avoided, overly organised code-bases stifle creativity and I really just wanted to deliver something.” “A couple of months later how does that leave me? Is the code-base a huge unmaintainable mess? I would say...

posted @ Wednesday, November 02, 2011 9:31 PM | Feedback (0)
Review: Tekpub Webcast - Full Throttle : TDD with Brad Wilson

So, after going through the signup process, I finally gained access to this episode.  Leading up to this review, I have watched the episode in total 3 times:  the first time I watched straight through while taking quick short hand notes, the second time, I watched portions of it in succession, stopping to take more in-depth notes, the third time, I watched it to fine-tune my comments on specific sections. Since I’ve been ragging on Tekpub, it is only fair to start off with a positive general note. Tekpub’s Production Quality Rob has been doing...

posted @ Tuesday, September 20, 2011 8:07 PM | Feedback (0)
Does anyone actually do TDD?

Obviously, the answer is yes.  The person who first convinced me that “all that agile stuff” was really the direction to look towards (note, that’s “a direction to look towards”, not “embrace uncritically”, but I digress) practiced it.  Or at least, he always had his NUnit test runner up, and I could tell when he was too busy to chat by looking at the status of his tests (when they were all green, I figured he was probably goofing off). I ask the rhetorical question though based on the lead to one of Rob’s posts: “One thing I've...

posted @ Sunday, August 21, 2011 8:06 PM | Feedback (2)
Software Development Troubleshooting Tip #2: When dealing with a large organization

This actually applies to migrations as well. I’ll leave ‘large organization’ vague…let’s make up a number and say if your entire software team (including developers, testers and support personnel) is greater than 20, it qualifies. I’ve seen some organizations do this well, and others…not so much. If you have a critical production issue, you should have two separate call lines, one dedicated to upper management, and the other dedicated to the people actually trying to fix the problem.  One person should be available on both lines, all others should be kept separate. The reason for this...

posted @ Wednesday, August 10, 2011 8:14 PM | Feedback (0)
Why isn’t TFS more like <insert alternative here>? Blame Visual Studio

Brian Harry, the Product Unit Manager for Team Foundation, has a post about some of the coming improvements to TFS 11.  It’s an interesting informational read for many reasons, but includes this: “A little background before I talk about the improvements we are making. When we designed TFS 2005, one of our design goals was to build a system that we could use for developing Visual Studio. VS is a VERY large code base. Last I checked, each branch was around 5 million files and I suspect it’s a good bit larger than that now. Your average developer needs...

posted @ Wednesday, August 03, 2011 7:58 PM | Feedback (0)
A sign you are working for an organization that doesn’t quite understand the Agile Manifesto

When there’s a slide that describes the process improvements they hope to implement and they list “going Agile” as being implemented in the “2013” timeframe.

posted @ Wednesday, August 03, 2011 7:40 PM | Feedback (0)
Software Development Principle: The Last Responsible Moment for dummies

Within the Agile development community, Chris Matts is well-known for discussing in great detail the concept of Real Options, and how it can be used to better software development. I’ll let you take a minute to look at the wikipedia post….yep, I don’t necessarily understand a lot of that either.  I like to think that I’m at least vaguely intelligent, but there’s an intense level of background knowledge required to really understand what is described there. When it comes to software development, Chris and Olav Maassen have a decent InfoQ post that is a bit easier to understand. ...

posted @ Thursday, June 30, 2011 9:38 PM | Feedback (2)
Is RescueTime the new Pomodoro?

Scott Hanselman has posted about a tool called RescueTime that he uses to monitor personal productivity.  Fine and dandy.  Read his post. What I wonder is if this is just another version of Pomodoro, and as such, should be avoided like the plague. disclaimer: I’ve practiced Pomodoro in the past.  In the context that I practiced it in, I actually thought it wasn’t that bad.  Actually, it was, in the context I practiced it in, pretty decent.  Once I thought about it a bit, I dropped it like the plague, but not because it wasn’t well thought out....

posted @ Thursday, June 16, 2011 8:19 PM | Feedback (0)
cqrs for dummies – an interlude – has it all been a waste of time?

Now that I have completed the long project that has sucked up a huge amount of time (which was necessary because it was important to the client, and because it pays the bills), I have returned much of my attention to one of my own projects, which might hopefully help pay some of the bills down the road and which involves an oddly opinionated version of CQRS. As it happens, Udi Dahan has written a post entitled “When to avoid CQRS” that suggests I shouldn’t be putting in the effort.  Some of the key snippets here: “It looks...

posted @ Sunday, April 24, 2011 11:17 PM | Feedback (11)
Why did I tweak Tekpub?

In a previous post, I tweaked Rob about Tekpub being affected by the Amazon outage.  Why? People have suggested a couple of reasons: - I’m a dick. - I’m jealous. - I didn’t do my research to see that other sites were affected. The first suggestion is undoubtedly true.  The others are false. Rob is INFLUENTIAL.  He should use his power for good Rob seemed to drop the ball in not expecting an Amazon failure/outage.  It left him in a state that could have had (in theory) pretty negative ramifications for his business...

posted @ Saturday, April 23, 2011 10:35 PM | Feedback (0)
YAGNI applies to testing as well

Suppose you have a class related to inventory with a method that takes in a quantity, and as such, that quantity cannot be negative.  Should you create a test that proves the method throws an exception (or however you think the method should behave) when a negative quantity is passed to it? <digression>Note that it is very easy to slip into a mistake of asking what ‘the right thing’ to do is, as if there has to be a single correct answer.  ‘The right thing’ often depends on the context.  Universal truths (related to morality anyway) are those where...

posted @ Friday, April 22, 2011 12:11 PM | Feedback (0)
Tekpub not up to snuff?

As described here and here, it looks like BFF Rob Conery is having problems with Tekpub because of the Amazon outage. For the people who have paid money to use Tekpub, I hope that he’s able to get his house in order. When you place your bets on someone who, by his own admittance, hasn’t done real world work for years, you get what you pay for.  Perhaps this outage, which any experienced person would have anticipated, will prompt Rob to reconsider his self-opinion as someone above criticism and spend a little less time blogging about whatever shiny...

posted @ Thursday, April 21, 2011 8:12 PM | Feedback (8)
Reflections on a 6 month Software Development Project

Now that I’ve successfully completed a 6+ month project, I thought I’d write down some of the things I learned from it (or some of the things that happened anyway), as much as for future reference as anything else. Project Overview In part because of NDA blah blah, and in part because it isn’t relevant, I’ll leave out some of the specifics. Having said that, here’s the skinny.  The ultimate end client is a trading team, buying and selling blah blah for the people who have hired them to manage their portfolios.  In the grand scheme of...

posted @ Sunday, March 27, 2011 2:07 AM | Feedback (1)
Code Reuse is Bad

One of the ‘heretical’ notions that I have been pressing in a client is something Udi Dahan wrote about some time ago. In a particular case I experienced recently, we had a production bug based on a change to a stored procedure that wasn’t migrated from UAT to Production. <digression>The particular example is with a stored procedure, but I don’t want to get into the whole “are stored procedures evil” debate here.  The problem could have been with a shared data access component, inline SQL, or even with something that had nothing to do with data access.  I...

posted @ Friday, March 18, 2011 10:12 PM | Feedback (3)
BDD is to YAGNI as TDD is to BDUF

I’m going to give this analogy a 43% rating in terms of how strongly I feel about it, but for what it is worth….. BDD/Context Specification encourages you to write the code, and only the code, that your application actually needs right now.  TDD encourages to write the code that you need right now as well as the code you think that you are going to need. YAGNI is a concept that is simple to state, but can be difficult to understand in its implications.  This is actually true about the concept of BDUF as well. YAGNI...

posted @ Sunday, March 06, 2011 11:32 PM | Feedback (2)
Semi-ditto Post : Recommended Book: Apprenticeship Patterns

Davy Brion has a post up about a book, which is nice, but also posts about his opinions about “Software Craftsmanship.”  Though I don’t imagine he would agree with my own take on it, I really like some of what he says: “I’m not a fan of the Software Craftsmanship movement. Well, i do love the goals and the principles behind it but i kinda dislike the terminology they've chosen to try to spread those goals and principles. It has this elitist connotation to it which just rubs a lot of people the wrong way. Instead of trying to...

posted @ Monday, February 28, 2011 10:03 PM | Feedback (2)
Ditto Post: Unit Tests Are Overrated

Over at, Krzysztof Kozmic has a great post about testing, and how (paraphrasing) integration tests are more valuable than unit tests. “At the end, let me share a secret with you – Windsor, has very few unit tests. Most tests there are (and we have close to 1000 of them) exercise entire container with no part stubbed out in simulations of real life scenarios. And that works exceptionally well for us, and lets us cover broad range of functionality from the perspective of someone who is actually using the container in their real application.” I agree with...

posted @ Monday, February 28, 2011 6:42 PM | Feedback (2)
Thank a veteran

I don’t normally post something like this, but it came up recently. Recently, I had the joy/opportunity to serve on jury duty.  That in itself is interesting. Anyway, I got to have a conversation during that time with someone who spent multiple tours of duty in the Middle East. It matters not what your political views are.  These people deserve our respect and thanks for serving and doing what most of us couldn’t possibly do.  If you meet them, take a second to thank them. They deserve it.

posted @ Monday, February 07, 2011 8:46 PM | Feedback (0)
The act of writing code in software development…

…occurs on but one card occupying a single position on the Kanban board.

posted @ Sunday, January 16, 2011 4:15 PM | Feedback (0)
Dan North on Why Programming is not a Craft

Dan North has a post up about why programming is not a craft.  In general, +1. He uses an analogy about masonry: "There is a difference between the mindset of a master stonemason sculpting the expression on the face of a gargoyle and someone using the commodity blocks that make up a multi-storey car park. In the latter case the last thing I want is someone’s “personality” causing some of the blocks to be different sizes and no longer interchangeable, never mind the added expense of having someone manually hew the stone rather than using machine tools. In the former the stonemason’s attitude...

posted @ Wednesday, January 12, 2011 1:45 PM | Feedback (0)
Software Development for Children aka Paging is an option

The title of this post, even for me, is pretty obnoxious, but I also feel pretty strongly about this, so here goes. Ayende posted about code that “should never hit production” in one of his usual code challenge blog postings.  I know that some people complain when he does this, but a) it’s his blog, he can post whatever he wants to, you don’t have to read it, and b) even if these challenge posts don’t touch something you happen to be facing yourself at any point in time, they tend to be pretty interesting, and c) if like me,...

posted @ Thursday, January 06, 2011 12:05 AM | Feedback (2)
On documenting the right things

Nick Malik has a post about documentation as it relates to software development, in which he quotes a post from James McGovern: “I am of the belief that documentation should explain decisions taken and not taken, Why an approach, architecture or algorithm was selected and what else was considered and rejected. “ Frans Bouma is someone who has talked about this before and I agree with this. Malik and McGovern continue to talk about the role of the architect and the developer as it relates to this, which I generally disagree with, but that’s a topic for...

posted @ Saturday, November 20, 2010 11:29 PM | Feedback (0)
Devops–A good thing

The fact that it talks about a ‘movement’ makes me a bit wary (“manifesto” anyone?), but there’s this thing called Devops that falls into my “freaking obviously good” category enough that I’m willing to ignore that. I’ve talked about this sort of stuff a lot (though am way too busy/lazy to link all the relevant posts), but let me talk about a typical non-Devops example. Separation of Duties Working the last few years for all sorts of those “too big to fail” type companies, one of the standard things that you run into is “Separation of Duties.” ...

posted @ Sunday, November 14, 2010 4:21 PM | Feedback (1)
Judging Cost vs. Risk in Testing

Derick Bailey has a good post about determining the cost vs. value of doing testing.  No one who’s read this blog will be surprised that I particularly like this: “There is a cost associated with a test-first approach. If you put in 100% unit test coverage, and 100% integration test cover and 100% end-to-end functionality test coverage, then you end up with 300% coverage of your system. Is the cost of maintaining 300% coverage worth it in your system? “ It’s a good read, check it out.

posted @ Thursday, November 11, 2010 10:04 PM | Feedback (0)
Favoring Value over Quality

Davy Brion has a good post up about how you should favor adding value in software development over that ephemeral ‘Quality’ that can lead to a never-ending drive for the never actually achievable perfection: “So focusing on the quality of your code and design is a good thing, right? Of course it is, as long as it doesn’t prevent you from actually delivering your software to the people who are supposed to use it in a timely fashion. At some point, you are going to have to accept that you can’t spend all that extra time and money to...

posted @ Thursday, November 11, 2010 9:24 PM | Feedback (0)
Software Developers aren’t Doctors, and they shouldn’t play one on TV

Continuing on the theme that David Harvey talked about, where one can and should be in favor of ‘craftsmanship’ while being skeptical of Software Craftsmanship (TM pending), I’ve created a category to that effect, and want to continue the discussion here. Jan Van Ryswyck (hope I spelled that right, he doesn’t have an easy last name like “Nuechterlein”, further mentioned as “JVR”) has a post up on Elegant Code where, inspired by a tweet, he discusses the division of software developers between laborers and professionals.  As I’m going to paraphrase the hell out of it, so you might want...

posted @ Thursday, November 04, 2010 9:28 PM | Feedback (2)
User Stories Can Be Wrong

Scott Bellware has a good post about how user stories/requirements need to be tested.  Snippet: Generally, we're taking too long to get stories validated - even in colloquial Agile development. Sending a user story through an entire development process in order to validate it is too much.” Users can tell you what they want, but they can be wrong about what they tell you, for a multitude of reasons.  This is one of the reasons why people do usability studies, as there is often a significant divergence between how users say they are using software and how they...

posted @ Thursday, October 28, 2010 3:29 PM | Feedback (0)
Review–Danger! Software Craftsmen at Work

Reading through a generally execrable post by Gael Fraiteur of PostSharp fame, I came across a video by David Harvey that took a similar skeptical stance about Software Craftsmanship. <digression>The reason Gael’s post is so execrable is that it perpetuates the total nonsense that software developers can be split into two groups, those that ‘care’ and have ‘passion’  and those supposedly godawful 9-5 developers that only care about covering their asses.  This is a meme that really needs to be combated and destroyed at every turn.  I know a number of people who are on the Software Craftsmanship bandwagon,...

posted @ Thursday, October 21, 2010 10:31 PM | Feedback (0)
Diverse.NET–This is good why exactly?

So, as I mentioned, Microsoft released NuPack, which lead Rob to write a post, which lead Ian to write a post, which various people have commented on one way or another. This is another one.  Read stuff in order to make some/most sense of this. I’m actually surprised it took as long as it did for one of the usual suspects to take the stand that Ian took. Grossly paraphrasing, some of the themes include: By introducing NuPack, Microsoft has unnecessarily harmed the OSS ecosystem around .NET package managers, including Horn, Nu, and...

posted @ Monday, October 18, 2010 6:12 PM | Feedback (0)
NoSQL Growing Pains

FourSquare suffered a near half-day complete outage of their site due to problems with their MongoDB implementation.  You can read the details here. I won’t comment much on the actual outage, since the details are readily available.  It looks like a ‘standard’ outage that one might be familiar with when dealing with other backend systems. It does point out that, while NoSQL implementations are heralded to be able to scale to ‘internet size’ (whatever that means), and which RDBMS sites supposedly can’t match (which is a myth, but that’s okay), running any large site will often lead to...

posted @ Friday, October 15, 2010 9:13 PM | Feedback (0)
A potential downside of Continuous Improvement

Something that the kool-aid drinkers and Software Kraftsmen people talk about is the notion of ‘Continuous Improvement.’  I will go ahead and shock some people by stating for the record that I am generally in favor of continuous improvement (I know, who knew?). An obvious potential downside of Continuous Improvement is that people sometimes confuse ‘Change’ with Continuous Improvement.  Doing something different because you’ve read a blog post of why doing Y instead of X is better, doesn’t actually mean Y is better than X. But, let’s leave that aside.  Let’s assume that you have decided as...

posted @ Wednesday, October 13, 2010 10:43 PM | Feedback (0)
A danger with practicing TDD

 Jimmy Bogard has a post up about how to write effective UI tests.  You should read it, as it’s a really good post. Though it isn’t really part of his point, I want to ‘hijack’ something that he says for my own purposes: “For about 3 years, I wrote absolutely horrible UI tests.  These tests worked great for a while, but like most people that tried their hands at UI tests, found them to be utterly brittle and unmaintainable in the face of change. And, like most people, I would mark these tests explicit or ignored, until...

posted @ Wednesday, October 06, 2010 11:07 PM | Feedback (1)
More Blog Moderation Blah Blah

In a previous post, I linked to something going on at LosTechies. Derick Bailey posted an update about his original post wherein he described his decision to delete various comments that he felt were totally out of context and so deleted them. Needless to say, if you read the comments to that update, he stepped into it, so to speak. I’ve posted before about the entire topic of moderation, but here I tend to use really basic moderation tactics.  If, to make up an example, I post about a Porcupine Tree concert (and there will be yet...

posted @ Thursday, September 16, 2010 9:11 PM | Feedback (2)
Important Lessons in Software Development

Nate Kohari of AgileZen fame (disclaimer: I am a paying subscriber of AgileZen, I think it’s good, not sure I’d call it great, though I use it more lightly than intended, I think) has a post where he talks about the experience of starting up the company (which has since been acquired by Rally Software).  It’s a good read overall, but I particularly agree with two points he makes: “I built AgileZen unlike any other piece of software I’d built. I cut corners that I would never have thought of cutting if I was working a day job. And...

posted @ Thursday, September 09, 2010 9:35 PM | Feedback (0)
Reminder: Check your backup strategy

Backups are great, but only as great as the last time they were tested. I run multiple machines on my home network, but one is always designated as the main one, and sure enough, it bit the bullet Sunday night.  I think it is only the power supply.  At least I hope so, because if it is the motherboard, pain is in my future (well, more pain than getting the power supply changed, something I used to be able to do in my sleep but which I now pass off to the store I bought it from because I...

posted @ Monday, August 30, 2010 8:19 PM | Feedback (0)
The Risk of Using OSS

Jeremy Miller has posted that he is taking a break from supporting StoryTeller and StructureMap for a bit.  His description of why he is doing so is reasonable and understandable (in my eyes at least). He differentiates between StoryTeller and StructureMap, and in a way that (by total chance) happens to be beneficial to me.  As I’d mentioned in a previous post, I was comparing StoryTeller with SpecFlow, and though I have started with SpecFlow, I was planning on doing a phase with StoryTeller as a comparison, but given what he’s said about it, it’s probably okay to lay off of...

posted @ Thursday, August 12, 2010 10:30 PM | Feedback (0)
One other point about LightSwitch that actually isn’t really about LightSwitch

I honestly don’t care about LightSwitch that much about it (I mean, I guess I’ll try it, at some point, maybe…after Blend and a couple of zillion of other things), but some random newsletter I guess I subscribe to came into my Inbox that had one paragraph that I particularly agreed with. Tim Huckaby is some dude who has had knowledge of LightSwitch (codenamed “Kitty Hawk”) for quite some time, as apparently the development of the tool has been around ‘seemingly for years’ (with “seemingly” in there, it’s hard to know what that really means).  He likes it, but...

posted @ Wednesday, August 11, 2010 9:53 PM | Feedback (0)
The Dark Side of Software Craftsmanship

To get you in the mood, head on over to ElegantCode and take a look at this post.  It is highly likely that you agree with the sentiment of it, and that’s okay.  Generally speaking, you should (generally) agree with the sentiment.  I’ll wait. Now that you’ve taken a look at it, if you’ve learned anything about ‘advanced’ software development (and here the software craftsmen will cringe that learning certain things should even be considered ‘advanced’ and they have a point), you’ll feel the pain of this: One thing I have heard expressed in those places is, “software...

posted @ Monday, August 09, 2010 10:23 PM | Feedback (0)
Please don’t separate Deployment from Development

I didn’t highlight this point before, but will do so now. Something that appears to be typical of a number of organizations is to strictly separate the deployment of software from the development of that software into different teams.  Different rationales are offered for why this is important, some of which are ‘organizational’ in nature (‘Legal’ says we need separation of duties), others are ‘conceptual’ in nature, and since there’s usually not much one can do when ‘Legal’ says something, I’ll focus on the latter. One useful thing that I learned from my Philosophy background is that it...

posted @ Monday, August 09, 2010 12:22 PM | Feedback (0)
I think this is related to why people don’t like Microsoft Connect

I got an email, related to this, saying it was fixed. I haven’t the slightest idea if I submitted this.  If I did, it was in August 2006, so it’s a bit late.

posted @ Wednesday, August 04, 2010 6:24 PM | Feedback (0)
The Really Interesting Things Only Show Up in Production

“It's important that the statistics are from the real production machines that are having the problems, when they're having the problems - the really interesting things only show up in production.” Exactly.

posted @ Tuesday, August 03, 2010 9:37 AM | Feedback (0)
More Reasons Why Integration Tests Can Be More Important Than Unit Tests

Over at CodeBetter, Patrick Smacchia (the NDepend dude) recently has blogged a couple of posts about “Tests Driven Development” (not sure if the extra ‘s’ is supposed to signify something important or if that’s just what he calls it).  I’ve written at other times about why I’m not a big fan of TDD so won’t go through all of that blah blah blah here, but some more events at clients have re-iterated to me why Integration Tests are often much more important than unit tests. Patrick talks about using code contracts as integral, and I agree with...

posted @ Friday, July 16, 2010 9:47 PM | Feedback (0)
Advantages of being a contractor

Davy Brion has a good post about overtime that is worth a read. I’d like to expand on my comment to his post. I should note that this applies beyond IT. It seems to be an expectation in many organizations that the people who work for them should need to work more than 40 hours a week.  This is unfortunate, but it is what it is. As a contractor, you can bill for it.  End of story.  If the organization you work for, for whatever reason, good or bad, has this sort of expectation, then your...

posted @ Wednesday, June 30, 2010 7:17 PM | Feedback (0)
On the Ontological Nature of Comedic Discourse

Or, more succinctly, is Dane Cook remotely funny? Sirius Radio I spend a lot of time driving.  At a previous client, I used to have one of those fantastic 2+ hours a day commute going out to the west ‘suburbs’ of Chicago (if you can call either Lisle or Naperville a suburb) and while I don’t miss it at all (well, I miss a person or two from the client, I guess), I used it to keep at least vague track of contemporary music and listen to a lot of sports radio (digression…I have never, ever been accused...

posted @ Monday, June 28, 2010 9:53 PM | Feedback (0)
Horrible Performance is a Bug

TDD can’t help you when it comes to determining the performance of a software development project. Imagine if you will a situation where you are dealing with a 3rd party vended application, and you work through all of the functional requirements in a UAT environment.  Imagine that you have previous experience where related software projects have performed by orders of magnitude better in PROD than in UAT.  When the important software development project is migrated to Production, how will it actually perform? Anyone with any decent amount of experience already knows the horrific result of finding out that...

posted @ Tuesday, June 22, 2010 8:55 PM | Feedback (0)
Without having to write code

I’m going to be zinging Microsoft here, as the most obvious target, but they aren’t the only one.  It’s a general point. In the most recent MSDN Magazine, there’s an article about how to work with WCF and WF4 (they can’t call it WWF4 for legal purposes), and I have no opinion about the content in general.  But I want to focus on this one thing: “In this article, I will explain how to combine several features of WCF and WF that were introduced in the .NET Framework 4 to model a long-running, durable and instrumented mortgage-approval process...

posted @ Wednesday, May 26, 2010 8:13 PM | Feedback (0)
RavenDB, and a brief design philosophy discussion with Ayende

Suppose you design a system that is chock full of interfaces, specifically things like some version of IRepository, where you have the ability to change out your backing store/database more easily. A common criticism of this sort of design is that it is unrealistic to think you actually will change your main backing store/database in a production system.  My own experience is that while it does happen (a current client project I am working on involves changing the backing database for a set of applications from SQL Server to Oracle, for instance), it doesn’t happen often, and you often...

posted @ Friday, May 21, 2010 7:44 PM | Feedback (1)
Code cannot and should not replace technical documentation

I’ve written recently about technical documentation and the good and bad about it. Over at ElegantCode, new member John Sommez has started out with some posts about eliminating comments from code, and most recently, about how unit tests can replace the need for technical documentation for developers working on a system. I would go ahead and read what he has to say.  It’s well-written, and he’s obviously given some thought to the topics.  Unfortunately, I think the advice he gives is wrong, and would like to explain why. As developers, we almost always run into the problem...

posted @ Tuesday, April 27, 2010 11:53 PM | Feedback (0)
Hello SSIS My Old Friend

A few years ago, Ayende had a post about why he hated SSIS, which brought about some responses (here and here and here) from some other folks.  It was a lot of fun had by all (sarcasm).  I happened to be doing some work prototyping SSIS and whether it could be used to replace some of the Perl-based implementations we had in place.  After only a little bit of effort, we clearly determined that SSIS couldn’t hack it (which is ironic, since getting SSIS to do many common tasks required a lot of hacking, but I digress). digression: I...

posted @ Tuesday, April 13, 2010 12:08 AM | Feedback (0)
Good Reading – Life Beyond Distributed Transactions by Pat Helland

One of the things I’ve been doing the last few months is to go over the vast reams of printouts that I have of articles, blog posts, etc. and find the things that are more immediately valuable and chucking the rest.  I got into a habit of printing out anything that might possibly be useful, and ended up with a lot of stuff that, well, I just didn’t need.  So YAGNI to it.  If it doesn’t possibly apply to a current active project of mine, chuck it (which is really only kinda-YAGNI, but it eliminates 80+% of stuff, so good...

posted @ Tuesday, April 06, 2010 8:12 PM | Feedback (0)
The Paradox of Technical Documentation

At the end of his Tractatus Logico-Philosophicus, Wittgenstein has a famous quotation: 6.54     My propositions serve as elucidations in the following way: anyone who understands me eventually recognizes them as nonsensical, when he has used them – as steps – to climb up beyond them.  (He must, so to speak, throw away the ladder after he has climbed up it.) More or less, I feel the same way about technical documentation. Sometimes, you will hear someone say that all you need when it comes to documentation is the code itself, but this is, obviously, silly.  Besides the...

posted @ Monday, April 05, 2010 9:01 PM | Feedback (2)
NoSQL is the new Black

No one really talks about anymore.  In my mind, that’s a good thing.  Though some people apparently had different goals for all of that (setting up a foundation or some other silly thing), for other people, it was about taking the things that a small subset of .NET developers were doing and making them more mainstream (whatever that means).  Though (again) it is hardly a definitive sign of anything, the fact that people like Jeremy and Ayende have been publishing articles in MSDN (and no one thinks this is odd) is a good thing.  That Asp.NET MVC has unit...

posted @ Tuesday, March 30, 2010 10:19 PM | Feedback (2)
cqrs for dummies – an interlude – is cqrs the ‘shiny new thing’?

The next substantive post on the command layer should be up this week, but thought I would comment on this. For various reasons, a question has arisen of whether cqrs is some shiny new thing.  define what that means however you wish. The short answer is, yes, but no. As Papa Greg has mentioned/stated before, cqrs is ‘only’ separating your codebase in such a way that commands and queries use different services (or classes if like me you are allergic to services).  Which is absolutely correct.  Typically, however, mention of cqrs tends to involve a lot more...

posted @ Tuesday, March 09, 2010 7:20 PM | Feedback (0)
cqrs for dummies – an interlude – cqrs is not an architecture

Papa Greg has returned from his walkabout to post a number of items about cqrs, architecture, event sourcing, and whatnot.  If you find anything in my discussion of this stuff remotely interesting, you really should be reading his stuff first, since, although he didn’t exactly invent any of it (it’s all just things people have been doing before), he did name it and has done a lot of real-world work in making it a lot more sophisticated (not to mention presenting on it around the world), etc. etc. etc. Anyhoo, in one of them, he emphasizes that cqrs, in...

posted @ Thursday, February 18, 2010 7:33 AM | Feedback (0)
It’s OK to do Reporting off of a RDBMS

Well, that’s a little misleading.  It’s OK to do Reporting off of a RDBMS as long as you do it right, and you should consider other options before committing to it.  note: I’m using “Reporting” here in the traditional sense, not in the cqrs sense where pretty much anything that doesn’t involve a command is called “Reporting.”  Also, since I mostly know SQL Server, that’s what I’m going to be discussing here.  Also, yes, I know I’m glossing over a hell of a lot of stuff here. The ‘Problem’ Suppose you have your traditional transactional system...

posted @ Sunday, February 07, 2010 4:20 PM | Feedback (0)
How Toyota Does Software

Oops. "The company changed braking system software in January as part of what it called 'constant quality improvements,' but did not say what it would do about vehicles manufactured before then." I'm waiting for the first post from someone about how the problem is that Toyota didn't follow the Toyota Production System.

posted @ Thursday, February 04, 2010 10:58 AM | Feedback (2)
Toyota Production System in Action

Oops. There are people who have tied their practices in Lean Software to Toyota and how they do things.  Some have seem to have set their sights on being a ‘Chief Engineer’ for reasons of ego. It was always dumb to do this, and this simply proves it. “We need to start today to build the learning organizations and learning cultures that will produce the Chief Engineers that our industry needs.” Uh, no.

posted @ Friday, January 29, 2010 11:34 PM | Feedback (0)
Those Wacky Software Craftsmen

Minor update: Scott addressed the attribution thing in this post, so retracting those comments. Recently, Scott C Reynolds has been writing a couple of posts about….well, it’s hard to tell exactly what they are really about, but at least in his mind they are apparently about quality and professionalism and maintainability and the usual laundry list of things that ‘software craftsmen’ like to pontificate about.  As is often the case, there’s a nice mixture of well thought out insight, good advice, misguided idealism, hilariously misplaced snideness, and outright ignorance.  But it makes for some fun reads. Don’t put...

posted @ Saturday, October 03, 2009 8:38 PM | Feedback (1)
On Laziness, Cowboys and Duct Tape

So, Joel has posted something that is causing a bit of discussion (if you don’t need substance and want to kill half an hour, click here).  Though there are many points of interest in his post, I’m guessing that one of the passages that caused the most consternation was this part: Zawinski didn’t do many unit tests. They “sound great in principle. Given a leisurely development pace, that’s certainly the way to go. But when you’re looking at, ‘We’ve got to go from zero to done in six weeks,’ well, I can’t do that unless I cut something out....

posted @ Friday, September 25, 2009 8:28 PM | Feedback (2)
Myths of Software Development: Open vs Closed Source

The thought occurred to me recently that there are some myths about software development that involve misperceptions of the similarities and differences between OSS (Open Source Software) and, well, everything that isn’t OSS (we’ll call it Closed Source Software (CSS) for the hell of it).  I’m making no claims about how widespread these myths and misperceptions are, or even how accurate they are.  This is my blog, I can make things up if I want to.  But, I think it might be helpful to consider them. The Stereotype: Machine.Specifications vs Visual Studio In many of the...

posted @ Friday, September 04, 2009 8:08 PM | Feedback (4)
The new VisiCalc

Though I sometimes feel like it, I’m not actually old enough to know what VisiCalc was, but Joe Stagner wrote a post in which he made an analogy between the two: VisiCalc was THE spreadsheet of the day !  It might have done 2% of what Excel 2010 does, but when it was released it was an AMAZING innovation…ASP.NET/Web Forms was a perfect match for the skill set of the day (2001/2002) and was exactly what the industry needed at the time. I don’t know that I would say it was a *perfect* match, but I generally agree...

posted @ Tuesday, September 01, 2009 10:21 PM | Feedback (0)
Maybe we should talk about Sustainability instead

So, the topic of ‘Maintainability’ has come up again in various forums, sparked by Frans Bouma with his blog post and other comments.  Jeremy ‘counting till 10 till jdn calls me names on the net again’ Miller has this, Ayende has this, Patrick Smacchia has this, Jimmy Bogard has this (okay, maybe this one is slightly off-topic), and I’m sure there are a couple dozen/hundred more that could be listed. I’ve said various things about the topic here, here, here, as well as (sort of) here and here.  Gosh.  That’s a lot of ‘here’ here. A ton of...

posted @ Thursday, July 30, 2009 12:46 AM | Feedback (2)
Strong Opinions, Weakly Held

This post is from a few years ago, but Bob Sutton blogged about the idea that one should have strong opinions, weakly held.  From the post: …weak opinions are problematic because people aren’t inspired to develop the best arguments possible for them, or to put forth the energy required to test them. But at the same time: …(it is) just as important, however, to not be too attached to what you believe because, otherwise, it undermines your ability to “see” and “hear” evidence that clashes with your opinions. This is what psychologists sometimes call the problem of...

posted @ Thursday, July 23, 2009 2:17 PM | Feedback (0)
Enough with the ‘Sprocs are evil’ BS m’key?

Derik has posted one of those ‘Sprocs are evil’ type rants (he did label it as a rant, so I have to give him props for that).  Probably unrelatedly, Jeremy Miller posted something that is sort of related (though his point was really a larger one).  Regardless, I have to respond. (Update: I mean responding in general, not line by line discussion of either Derik's or Jeremy's posts...more of a rant using them as a launching pad).  (Update #2: Derik wants to make it clear that he doesn't think sprocs are evil.  I think it is a semantic point, but...

posted @ Monday, March 02, 2009 1:14 AM | Feedback (7)
Choose a path, stick with it

So, I’m finally done spiking something, and ready to start on a major new project.  I’ve read 40+ blog posts and technical articles a day for the last 3 months, I’ve looked at nearly all the various alternatives that made sense to me, and I think I’m ready to go. I’m not going to do strict DDD (since it is impossible here), TDD (since it is misguided here) or BDD (since I really can’t stand it and as the main business user and developer, I can’t do it ‘correctly’ anyway, if there was such a thing as doing BDD...

posted @ Saturday, November 15, 2008 7:13 PM | Feedback (2)
Developer Growth Price is Right: From Coder to Craftsman, without going over

Jeremy Miller has a post about the evolution of a developer (in terms of DI/IoC) and also includes something from a previous post of his (but doesn’t directly link): “I think there is an inflection point where a coder mindlessly spewing out code transforms into a thoughtful software craftsman capable of creating maintainable code.” Now, I think the idea that this is an off-on switch type of thing is wrong.  Developers like to talk about ‘aha!’ moments (“Take on me!!!!!!!!”….sorry, I digress, but I loved ‘Hunting High and Low’) and they are real.  They are real in other...

posted @ Thursday, November 13, 2008 9:26 PM | Feedback (7)

Roy Osherove has been posting a bit about testing, OOP, TDD, and the like.  You can go to his post and find tons of comments, links and so forth.  Because of all the different interpretations people have put forth, it’s hard to summarize the discussion without prejudicing it. But what the hell, it’s my blog, so here’s a thumbnail sketch:  the adoption of unit testing is hindered by it being tied to TDD, design considerations, and confusing terminology (“a mock?  a mock what?”).  A very good post by Udi Dahan takes a pragmatic stance about the whole...

posted @ Wednesday, October 01, 2008 8:26 PM | Feedback (17)
A mini review of Hibernating Rhinos - Episode #2

The webcast and code (is there code on this one?  I forget) can be found here. I'm assuming everyone who reads this knows who Ayende is, what MonoRail is, and all that. This is a mini-review, both because it is short, and because the main point (assuming there is a point) isn't really about the webcast at all. Most of my observations are admittedly shallow, but there you go. Ayende's general point is to attempt to show the difference between programming a simple example using WebForms vs. using MonoRail, and why MonoRail is superior. There...

posted @ Wednesday, November 28, 2007 8:53 PM | Feedback (3)