General Programming
Running Visual Studio 2017 and OneDrive off of an (micro)SD card

So, I got one of those Surface Pro Type Cover bundles, because it has 8 GB (which is my minimum, btw off topic, but when is Microsoft going to release a Surface with 32 GB of memory?) and while only 128 GB storage, I have a 300+ GB microSD card to put in it, and it’s over $300 off list. The idea is to run most programs (including SQL Server 2017 and Visual Studio 2017) off the microSD, as well as have OneDrive there, so that the local storage doesn’t get filled out.  Good plan. Except SQL and...

posted @ Tuesday, July 10, 2018 7:09 PM | Feedback (0)
Greg Young coins ‘CQRS’, immediately calls it an anti-pattern

This is completely a joke, of course, but was my immediate thought when reading this somewhat old ‘news’ story.

posted @ Wednesday, December 28, 2016 11:40 PM | Feedback (0)
Coding standards are bad aka learning the wrong lession

So, Rocky reflected on coding standards, and ended up here: This was the point where I had my first professional developer epiphany. Yes, it is truly painful to adapt to the idea of living within strict coding and style guidelines. But the alternative is so much worse! Ever since that experience I insist on consistency of coding standards and styles within each project (or enterprise) where I work. And even if I think some choices (like 2 spaces after each tab) are really, really, really stupid, I'll use and vehemently support that choice. Um, no. There...

posted @ Thursday, December 22, 2016 2:36 PM | Feedback (0)
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)
C# Programming in Excel: To delete a worksheet, make it visible

Is programming in Excel better or worse than programming Sharepoint? Anyhoo, I was trying to merge 5 single worksheet excel spreadsheets into a new spreadsheet, and then deleting the blank worksheet created when you create the new spreadsheet. But when calling delete on it, I would get one of those fantastic COM errors you get when programming like it’s 1989.  I tried many different things before realizing: app.Visible = true; would do the trick (I made it invisible because it is a server side process). Fantastic.

posted @ Wednesday, October 19, 2016 4:24 PM | 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)
I probably could have written this code better

Long-ish project converting an app of mine from Asp.Net 3/4 to Asp.Net Core (half conversion, half rewrite kind of thing) and came across this gem: public class AttemptToChangePasswordResult {     public bool Succeeded { get; set; } } At least it is fairly clear.

posted @ Monday, August 08, 2016 7:15 PM | Feedback (0)
New Trick for Old Dogs: Count number of files in directory from command prompt

DIR /A | FIND "File(s)"

posted @ Tuesday, August 02, 2016 4:13 AM | Feedback (0)
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)
Visual Studio 2015 Extensions and Updates Install ‘Bug’

You need to open Visual Studio 2015 in order to get to Extensions and Updates, to update any updated extensions or updates. 37% (unscientifically made up number) of the time, it tells you that you have to shut down Visual Studio in order to continue.  Not ‘you may need to restart Visual Studio afterwards for the update to take effect’ (which does happen sometimes as well), but that you have to.  This, of course, makes no sense. Especially if the Extension only applies to Visual Studio 2015, and it says you have to close down any open instances...

posted @ Wednesday, February 10, 2016 9:32 AM | 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)
You know you aren’t a very good developer when….

You are teaching yourself a new javascript framework, copying it off of a sample codebase, and you just can’t get it to work and you check your syntax and your various ‘components’ and then after a couple of hours you realize…. You didn’t include a reference to the framework script in your HTML.  Mother-bleep.

posted @ Friday, February 05, 2016 9:51 AM | Feedback (0)
My New Favorite Data Type

object [] []

posted @ Thursday, January 21, 2016 3:21 PM | Feedback (0)
Repost: Website Obesity

As I contemplate a very important website redesign, this is timely and informative.  And/or depressing.

posted @ Sunday, January 03, 2016 6:22 PM | Feedback (0)
Postman Rocks

Love it.  API development made easy (or easier, at least).

posted @ Thursday, December 31, 2015 10:57 AM | Feedback (0)
Excel: How to get the cell value from a different worksheet and incremented


posted @ Friday, December 25, 2015 10:13 PM | Feedback (0)
“Let’s build the data using the API”

Translation:  blah, blah, blah

posted @ Wednesday, December 09, 2015 3:17 PM | Feedback (0)
Let’s hear it for Open Live Writer

It’s like Windows Live Writer.  But open source.  Wheeeee!!!!!!!!!!!!!!!!!!!!!!!!

posted @ Wednesday, December 09, 2015 12:22 PM | Feedback (0)
Enabling Custom Port on EC2 Instance

Suppose you want to enable port 8080 traffic to an EC2 instance, perhaps because you have set up an IIS site on a that port.  There are two things you need to do for this to work: 1) Edit your Security Group policy so that the port is enabled on inbound traffic. 2) Edit your Windows Firewall settings to allow it as well.

posted @ Saturday, October 03, 2015 7:43 PM | Feedback (0)
Universal Windows Platform and Line of Business (LOB) applications: Things I don’t get yet

So, I was going to build a LOB application using UWP, and ran into a whole host of “I’m old and/or don’t get the new paradigm yet” issues. Such as: How do you do configuration settings with these things?  I know you are supposed to use ‘web’ technologies and all that (since OData is dead, I’m going WebAPI), but I still want to be able to point to some things in my ‘DEV’ environment, other things in my ‘PROD’ environment.  Don’t I?  That sort of thing doesn’t go away, but there’s nothing like an app.config...

posted @ Tuesday, September 15, 2015 9:10 PM | Feedback (0)
Nice StackOverFlow response

In response to this: +1 This is probably the single greatest answer ever provided on stack overflow. Words alone do not suffice in expressing my gratitude for this exceptionally helpful, superbly worded answer. Cries of joy rang out a half a world away when this answer was both read and applied with magnificent levels of success and sincere sensations of relief. A cold beer has especially been set aside for our dear, dear guide, Pieter. May you sir, live a very long and very happy life. An absolutely marvellous contribution. Just marvellous. Thank you. –  rism May 19 '12...

posted @ Thursday, September 10, 2015 10:20 AM | Feedback (0)
Bye Bye JetBrains

Mandatory subscription licensing?  Fuck that.

posted @ Wednesday, September 09, 2015 9:39 PM | Feedback (2)
Useful programming phrases

Co-worker: Man, that’s some half-assed code in there. Me: Okay, should we ‘full-ass’ it or ‘un-ass’ it?

posted @ Thursday, August 27, 2015 10:10 AM | 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)
Microsoft broke Outlook 2016 POP access setting?

It’s hard to figure out what happened here, running various combinations of Office 2016 preview, Windows 10 Preview, and Windows 10 Mobile, but I’ve run into an issue with Outlook and I don’t know what the problem is exactly. I have a POP email account, been using it for 15 years.  I leave messages on the server for 7-14 days, as I access it from many different places.  Suddenly, over the weekend, after various updates of all of the above, it no longer functions as it should.  It will download the messages no matter what the ‘after X days’...

posted @ Thursday, July 02, 2015 9:16 AM | Feedback (1)
Google Webmaster Tools API – Forget those search queries

So, Google killed off ClientLogin, and wanted everyone to move to OAuth2, because it is so much more secure yada yada yada. Except, you apparently can no longer get your search queries programmatically like you used to.  In other words, it doesn’t work. Awesome.

posted @ Wednesday, June 03, 2015 12:51 AM | Feedback (0)
Azure + Hadoop = Clumsy and Expensive?

So, I decided to teach myself a little bit about Hadoop and running it on Azure, using some ‘hello world’ code found here and here, just a kick the tires kind of thing. The first thing I noticed was how difficult it was to do something this basic.  Configuring accounts and objects and tying them together took quite a bit of time (the username is ‘admin’ BTW, this isn’t obvious anywhere), really more complicated than it really should be. It also didn’t work, not quite.  The Hive queries wouldn’t work as is, and it isn’t idempotent, so there...

posted @ Friday, May 29, 2015 10:00 AM | Feedback (0)
Windows Mobile 10080 – A hot mess

So, I rolled back to Windows 8.1 using the Nokia Recovery Tool, as the latest Windows Mobile build is actually worse than the previous one. It did add Office.  That was nice.  Kind of.  The continual inability of it to ‘acquire licenses’ while trying to update things like the MSN apps meant that the start screen was usually unavailable. But what really made it unusable to me was how the continued inaccuracies in touch on the Lumia 1520 meant that in OneNote, it couldn’t figure out how to place the cursor, often causing it to select...

posted @ Sunday, May 17, 2015 11:03 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)
Breaking news: Relational databases are no longer needed

I wasn’t aware of this: It's not a relational system and, frankly, relational systems simply aren't needed any more. The whole concept of normalization and relational "thinking" for lack of better words came about because of disk space (I was a former DBA). SQL databases are very good at what they do, they succeed because they stick with ACID and are quite fast; I don't think it has anything to do with how good they are at relational theory. But, he was a former DBA (apparently he isn’t a former DBA anymore), so he must know what he’s...

posted @ Sunday, April 19, 2015 12:52 AM | 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)
Repost: XKCD – Code Quality

posted @ Friday, April 17, 2015 12:47 AM | Feedback (0)
Simple Sample Visual Studio Post-Build Event

del C:\Code\Deployments\$(SolutionName)\$(ConfigurationName)\$(ProjectName)\*.* /f /q xcopy /y $(ProjectDir)\bin\$(ConfigurationName)\*.dll C:\Code\Deployments\$(SolutionName)\$(ConfigurationName)\$(ProjectName)\ xcopy /y $(ProjectDir)\bin\$(ConfigurationName)\$(AssemblyName).exe C:\Code\Deployments\$(SolutionName)\$(ConfigurationName)\$(ProjectName)\ xcopy /y $(ProjectDir)\bin\$(ConfigurationName)\$(AssemblyName).exe.config C:\Code\Deployments\$(SolutionName)\$(ConfigurationName)\$(ProjectName)\

posted @ Wednesday, April 08, 2015 11:13 PM | 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)
Office 2016 Technical Preview Issues

So, there have been two different releases of Office 2016 for Alpha/Beta/whatever testing, and I’m unable to successfully run the software, for what I think are account issues. What I mean is this:  I have a business office 365 subscription, and then I have my MSDN Office subscription, and trying to ‘song and dance’ these is a problem. When I tried to install the previous consumer Office 2016 consumer testing versions, it objected because my normal Hotmail account, which I use on a daily basis for most purposes, isn’t connected to Office 365 (since it is MSDN and...

posted @ Monday, March 16, 2015 11:30 AM | Feedback (0)
Repost: Self-maintaining, Contiguous Effective Dates in Temporal Tables

This is rather cool. Yes, I know, it will make some twitch like Inspector Dreyfus, and I can hear some of you say “For the love of God and all that is Holy, it uses triggers!  STONE HIM!!!!!!” But, cool it is, none the less. Enjoy.

posted @ Friday, March 13, 2015 10:28 AM | 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)
Duplicate registrations in SimpleInjector 2.7.1

No doubt there is a mailing list or something for this (mailing list….how old am I again?), but….. I had a reference application that worked swimmingly, and so built a new app for production based on it, and found that for each event that was registered to respond to a command, two would be produced at runtime.  I spent a lot of time looking at the differences between the two and noticed that the reference app was built using 2.6.1 whilst the new app was built using 2.7.1. And problem solved. I don’t know why this is. ...

posted @ Wednesday, February 11, 2015 12:20 AM | Feedback (1)
Code Expressiveness: How much is too much?

Consider: var count = GetCount(date); vs. var count = GetCountOfDividendsForOmnibusAccountsAfterStockHoldingAdjustmentBasedOnRecDateTradingOnTradeDate(date); You can add underscores if you like. Is this better?

posted @ Tuesday, February 10, 2015 8:40 PM | Feedback (1)
2-step verification: a request

To all those who implement 2-step verification (I’m looking at you, Google and Microsoft, in particular)….. When you have step whereby you wait for the user to enter in the verification code, and underneath where they put in the code, is a checkbox which says “Don’t ask again on this computer”, and the user checks that box…. Honor that shit already. And Microsoft, you should be ashamed, but you should really probably figure out how to get 2-step verification to work better when someone wants to add Hotmail to Outlook 2013.  I mean, seriously….

posted @ Monday, January 26, 2015 9:19 PM | Feedback (0)
A way to handle open generics using dynamics in Simple Injector

Now we get a little more complicated.  Note that there will be a lot of tight coupling, and I’m not talking about CQRS, and I’m sure you can do everything better in many different ways. Here’s the deal.  I wanted a specific way to handle (pun intended) processing commands and events that wasn’t so manual.  Often times, you create a command, it gets handled, one and only one type of event is created (or an exception is thrown), and then that gets handled. In which case, I wanted something like this: Command –> Command Handled –> Command...

posted @ Thursday, January 01, 2015 6:37 PM | Feedback (0)
A way to handle open generics using Simple Injector

In case I need to do this again, this works, however ‘ugly’ it might be.  This isn’t supposed to be a best practice or anything (there are no such things as best practices, and even if there were some, I wouldn’t know them, since I’m not a very good developer). Some code: public interface ICommand {} public interface ICommand<TReturnValue> : ICommand     {         TReturnValue ReturnValue { get; set; }     } public class Command : ICommand  {} ...

posted @ Tuesday, December 30, 2014 9:12 PM | 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)
The sort of user requirement that can make a software developer weep, random example #74

Scenario: a console app takes a file, loops through every record in the file, and creates an output file. “The user has requested that you add delete button functionality.”

posted @ Tuesday, December 16, 2014 11:00 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)
If you are going to have an endless page….

You know, one of those ‘fancy’ pages where you continually load stuff at the bottom of the page…. Think about whether a user who comes to your site might expect/hope that you will have a footer with links of a standard sort. Because if they do, and you don’t, it’s highly annoying. Thank you.

posted @ Friday, November 28, 2014 5:11 PM | 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)
The type exists in both temporary assemblies

So, after spending 6 or 9 hours on this…. Kept building a solution that contained multiple web sites, both using T4MVC (this is totally tangential, the problem wasn’t its fault), and I kept getting ambiguous reference errors regarding the MVC class that it auto-generates, and it would reference temporary assemblies within Temporary ASP.NET files, etc. Would make changes, clean, rebuild……no resolution. Finally, I looked at the bin directory of the one web site.  WTF.  Why is there a DLL for the other web site in there? When you clean a solution, it won’t delete dlls it...

posted @ Thursday, November 13, 2014 12:21 PM | Feedback (0)
Microsoft Surface Chat Support: Generally Sucky

On October 28th, there was a firmware update for the Surface Pro 3.  Microsoft ‘staggers’ these updates (I don’t know why) through Windows Update.  It’s been a week, I haven’t gotten it yet. I have downloaded the latest firmware download, which contains all of the drivers and whatnot, but it doesn’t have an install program itself, and I don’t know exactly how it updates the firmware, and, generally speaking, I just don’t want to f%^k with it unless I need to (I could manually update each driver that is listed but I’m old and tired and would prefer not...

posted @ Tuesday, November 04, 2014 11:41 PM | 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)
Repost: Beware of Selector Nesting in Sass

This happens to be rather timely for me, as I am in the middle of converting a 1000 line CSS file to SCSS. I like selector nesting for a number of reasons, but there is a lot of good advice in here of how to be careful about it. Enjoy.

posted @ Thursday, October 02, 2014 9:34 PM | Feedback (0)
Something that can make a developer feel lonely….

When you run into an error message, search on Google for it, and get no exact hits.

posted @ Wednesday, September 17, 2014 4:22 PM | Feedback (2)
EF doesn’t really like bounded contexts

So, from the previous post on the subject, I randomly tried Phillip’s suggestion of dropping the models in different folders, and was rather surprised that it could now build.  Great!!!! Except….no.  At run time, a new error surfaced: System.Data.Entity.Core.MetadataException was unhandled   HResult=-2146232007   Message=Schema specified is not valid. Errors: The mapping of CLR type to EDM type is ambiguous because multiple CLR types match the EDM type 'Cart'. Previously found CLR type 'EF6CommonTable.Model.Checkout.Cart', newly found CLR type 'EF6CommonTable.Model.Shopping.Cart'. The mapping of CLR type to EDM...

posted @ Wednesday, July 30, 2014 1:12 PM | Feedback (4)
Were all file format interface definitions designed by people under the influence of alcohol or other substances?

This is largely a rhetorical question.

posted @ Tuesday, July 29, 2014 12:14 PM | 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)
Still Stumped: Entity Framework 6 and ‘Bounded Contexts’

Ok, I still can’t figure out how to do this.  It has to be possible.  My Google-Fu is usually phenomenal, but it is failing me here.  I’ve ‘dumbed it down’ to a very simple scenario.  Suppose I have two EF contexts.  Each one references two tables, the same two tables, from the same database, and I use the ‘Generate from Database’ option in EF 6.  In this case, I am mimicking  two bounded contexts, the shopping BC and the checkout BC.  Each one needs to reference the Cart and CartItem tables and generate those entities accordingly.  Here are...

posted @ Friday, July 25, 2014 7:57 PM | Feedback (3)
Quick Surface Pro 3 Review

Summary: mostly good. I was able to trade in an old MacBook Air for about $600 and use it toward an i5/8 GB/256 GB Surface Pro 3 about a month ago.  After having used it for a month, and after having used MBAs for 3 years or so (running Windows mainly on them), I have a few comments. I realize that Retina MBAs are coming in the fall (supposedly), so it is a bit of an unfair comparison at this point, but the “pixel free” (or however the hell Microsoft describes it) ultra dense display is really quite...

posted @ Thursday, July 24, 2014 7:31 PM | Feedback (0)
I hate enclosed/extra commas in comma delimited files

The end.

posted @ Tuesday, July 15, 2014 11:05 AM | Feedback (0)
Testing your developer skills – Rewrite some code from a language you don’t know into a language you know

Here’s something that I had to do today, but which it occurs to me is something that I could try to do more often. I needed to write some code to do X.  For whatever reason, the only sample code that I could find that did X was written in language Y, except that I don’t really know much about language Y.  I didn’t know how to run it or debug it or anything, though I was able to read it enough to see roughly what it did and how it did it, so that I could re-write it...

posted @ Saturday, July 05, 2014 10:42 PM | 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)
Backing up OSX with Time Machine to a Windows Server

The steps are pretty basic.  This works up to Mavericks, as of this writing. Tell Time Machine to support unsupported volumes. Create a sparsebundle Move the sparsebundle to the unsupported volume. If necessary, increase the size of the sparsebundle Mount it Tell Time Machine that the unsupported volume is the destination Run Time Machine This is mainly for me, I’ll update the specifics as I care to.

posted @ Thursday, July 03, 2014 2:08 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)
Date UTC format has zero index months

So, like, if you have January, it, like, is 0, not, like, 1.  And, like, so on. Just in case you run into this.

posted @ Thursday, June 05, 2014 8:35 PM | Feedback (0)
OleDbDataAdapter and Excel: Why are some of the column values missing?

Ran into this recently, writing it down in case I forget. I had an excel spreadsheet that I had been importing for quite a while (meaning, a job that had been working for months on daily submitted spreadsheets) and I wanted to add new columns that were present, so I did all the necessary c# work, but then when I ran the updated project, the values were blank, though I verified they were present in the spreadsheet. It turns out to be related to the fact that the columns were sparsely populated and how the connection string was...

posted @ Thursday, June 05, 2014 11:46 AM | Feedback (0)
EF 6 Bug – Can’t share tables across edmx files?

I’m trying to upgrade an application from EF 4 to EF 6 and ran into a number of problems, so I spiked out a simple console app and am seeing the same bizarre behavior. Using two different .edmx files, using different connection settings, and using custom namespaces, if I try to have each one reference the same two tables, so that they could have those mapped as entities in each namespace, it fails.  If I run custom tool on the model .tt file one by one, I can see that it will ‘steal’ the entities back and...

posted @ Wednesday, June 04, 2014 4:06 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: Apparently, SSL is broken

This seems to be serious. 

posted @ Tuesday, April 08, 2014 2:21 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)
Biggy and Massive and Humongous, Oh My!

So, Rob got bored and decided to create yet another data access thingy.  Subsonic wasn’t enough, so then there was Massive, and now there is Biggy.  I’m sure it has even more value than appears on first blush. Humongous is going to be the name of the next one he writes, whenever that is.  Next year, probably. Good code to read.  Enjoy.

posted @ Wednesday, February 26, 2014 11:52 PM | Feedback (0)
All good things – Chicago Alt.NET

We started the group back when Alt.Net was an actual thing.  Derik, Sergio and I got together at some bar and shot the shit, and ended up starting the group. I never really did much for the group, besides the occasional presentation.  Derik handled all of the mechanics of setting up meetings and whatnot, till he left for North Carolina, and then Sergio took over. Alas, times change.  Some of the key people who helped facilitate setting up the meetings moved.  Many of the people who were part of the original ‘movement’ left to do ruby and...

posted @ Wednesday, February 12, 2014 7:56 PM | Feedback (0)
What do you do if Resharper doesn’t listen to you?

I’m not sure what to do at this point.

posted @ Tuesday, January 21, 2014 9:38 AM | Feedback (1)
Accenture is taking over

Well gosh, that should solve everything.

posted @ Friday, January 10, 2014 2:56 PM | 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)
Repost: Git Commit

From xkcd:

posted @ Tuesday, November 26, 2013 11:15 PM | Feedback (0)
Breaking Visual Studio

I haven’t checked to see if this affects all versions of VS, but logging it in case I do it again. I started getting “function evaluation disabled because a previous function evaluation timed out” and “children could not be evaluated” errors when debugging, at which point, debugging would then halt after a few seconds.  Needless to say, this was somewhat annoying, and nothing seemed to be logged anywhere to explain why. What had happened was that I had created a property of a class that was recursive, in such a way that it was ‘infinitely’ recursive, so I...

posted @ Friday, November 15, 2013 1:49 PM | 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)
Visual Studio Installer Crashes on Windows 8.1 RTM

The entire story of the Windows 8.1 RTM install on a MacBook Air will come another day, but I was having a really odd problem with not being able to install Visual Studio 2012 or 2013 without it immediately crashing. Some others online were having issues, and it comes down to, get this, the display adapter driver.  Once I uninstalled it, the installer worked just fine (well, it’s running right now, anyway).  Hopefully, I can reinstall the display adapter after the install. Update: unfortunately, updating the display adapter causes Visual Studio itself to crash on launch.  Maybe it...

posted @ Thursday, September 12, 2013 8:44 PM | 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)
Visual Studio Known Project GUIDs

They can be found here.

posted @ Wednesday, August 28, 2013 12:14 PM | Feedback (0)
Single Page Applications, JavaScript, and I still hate strings

Sergio gave a good presentation on some single page application work he’s been doing. I’m somewhat envious.  All the cool kids are doing things like that (from the .NET space, it seems they went from .NET to Ruby to JavaScript…I’m not sure what’s next), and while Sergio isn’t a kid, he is pretty cool. But he loves JavaScript.  As he mentioned in his talk, some people hate it.  I think I’m one of those people. All of my instincts tell me that there could be serious problems with these sorts of apps (I’m thinking about usability in...

posted @ Thursday, August 22, 2013 10:58 PM | Feedback (2)
IE8 Bug with CSS Layout: Server renders different from local developer machine

Ran into this issue with some work on recently, and was totally confused until I saw this: The solution is described here: You need to add the following meta tag to your page (or master page if you are using such a thing): <meta http-equiv="X-UA-Compatible" content="IE=8">

posted @ Thursday, August 22, 2013 10:07 PM | Feedback (0)
How not to answer a technical interview question

Me: “So, I see that at various times, you have used Ninject, Unity and Autofac.  Could you explain what you would choose if you had 100% control over a project, and why?” Respondent: “If it were up to me today, I would use NHibernate, especially Fluent NHibernate.”

posted @ Tuesday, August 20, 2013 7:02 PM | Feedback (0)
EC2: Enabling IIS Web Deploy Publishing from Visual Studio

Once again, mainly for me, because it was a slight pain in the ass. You have to have an EC2 server already set up.  I’m not going to cover that. If you just try to publish to your EC2 server from Visual Studio using a newly created Web Deploy profile, you will likely get a lot of errors. Firstly, within your EC2 admin page, you need to allow for inbound connections on port 8712, which is what the Web Management Service uses.  Oh, you also need to make sure this service is started and set to start...

posted @ Monday, August 19, 2013 12:05 AM | Feedback (1)
If you have less than 30 concurrent users on your web application, please turn caching off

Seriously, if you need to implement caching on an application that has less than 30 users, you are seriously doing something wrong, and making it really hard to troubleshoot what is wrong with your application, especially if you have to recycle the bleeping thing every single bleeping time a bleeping change is made. That is all.

posted @ Wednesday, August 14, 2013 12:00 AM | Feedback (0)
A sample NUnit SetUp class when using Watin

This post is largely for me, in case I need it again. You know what NUnit is.  You probably know what Watin is.  Watin is no longer under active development.  If you are in the business of writing browser-driven integration tests within the .NET space, you should probably be looking at Selenium. However, if you are kicking it old school and using Watin, and you want to try to avoid all of those ‘false negatives’ (i.e., failing tests that fail because of quirks with COM, not because your test actually failed for ‘real’ reasons), I’ve found...

posted @ Wednesday, July 31, 2013 6:34 PM | Feedback (0)
God how I hate parsing strings

There.  I said it.

posted @ Wednesday, July 24, 2013 11:06 AM | Feedback (0)
Glimpse/NuGet Doh Reminder

So, I was looking at this post and liking all of the nifty functionality they’ve added to Glimpse (I’d checked it out a while ago, and not been that thrilled), and so installed the latest version. Or so I thought.  When I ran my app, it kept telling me I had the previous version.  I uninstalled all packages and reinstalled, still nothing.  Naturally, I started cursing Nuget, as I am wont to do. Oh, wait.  Hey, Johnny Dumbass Developer, if you add nuget packages, you think maybe you might want to recompile the app? Oops.  Yeah, that...

posted @ Monday, July 22, 2013 7:05 PM | Feedback (0)
Printing from Mac OSX to an HP J4680

Go to here.  Download that. Then add a printer. Not sure if it lets me scan yet, but it’s a start..

posted @ Friday, July 19, 2013 1:22 AM | Feedback (0)
Dumbass Tech Idea of the Week: The Reactive Manifesto

It actually isn’t from this week, it’s only this week that I’ve seen it. You can find it here.  If you care to, you can read the whole thing, but its conclusion is thus: “Reactive applications represent a balanced approach to addressing a wide range of contemporary challenges in software development. Building on an event-driven, message-based foundation, they provide the tools needed to ensure scalability and resilience. On top of this they support rich, real-time user interactions. We expect that a rapidly increasing number of systems will follow this blueprint in the years ahead.“ Well, gosh, it...

posted @ Thursday, July 18, 2013 12:59 AM | 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)
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)
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)
Turns out, NPM kinda sucks as well

So, for some project, it turns out that I’ve gotten to take a look at all of that Node.JS love.  That in itself is another story. As it turns out, I needed some specific modules that sat on Github.  Being total newbie, I figured you could just download stuff from Github and it would work, but of course, it generally almost never works that way.  You do some “npm –install <module name>” magic and everything goes swimmingly. Or not.  I’m at a location that has whatever port npm needs blocked at some firewall, so I need to use...

posted @ Friday, February 01, 2013 5:09 PM | Feedback (4)
Cleaning up Outlook RSS Feeds Subfolders

One of the wonderful <sarcasm> features </sarcasm> of Outlook’s RSS Feeds is that you cannot select multiple subfolders and delete them, instead you have to select them one by one. Ever accidentally import an OPML file more than once?  Nothing like dozens and dozens of duplicate folders.  It would be nice to just nuke everything and start over. Anyway, there is a programmatic way of doing it, which can be found here.  Although it references Outlook 2007, the code works with Outlook 2013 (for the most part as I did have to manually delete a couple of them). ...

posted @ Sunday, December 16, 2012 2:16 PM | 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)
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)
Finally: Windows 8 RTM on a MacBook Air under BootCamp with Unsigned Drivers

disclaimer: this worked on my machine.  It might not on yours, so if you brick it, don’t blame me. In a couple of previous posts, I talked about my somewhat entertaining (if you are easily entertained) attempts to get Windows 8 RC to run under BootCamp without issue, and with all of the software and hardware that I require to use it as my full time machine, which essentially boiled down to getting the touchpad to work with secondary click, etc., FaceTime support, and the ability to use my Clear 4G USB stick when out at client sites, or...

posted @ Wednesday, August 22, 2012 12:21 PM | Feedback (0)
Visual Studio 2012: Still can’t handle going offline?

Shouldn’t Visual Studio be able to handle this by now, without multiple prompts about files needing to be overwritten (at best) or total failures because of files being read-only (see previous post about NuGet)? Seems like a rather obvious requirement for basic functionality.

posted @ Tuesday, August 21, 2012 11:01 PM | Feedback (2)
I still hate NuGet

So, I’m already annoyed in finding out that, a) when you try to upgrade Windows 8 RC to RTM, there is no upgrade apparently, just a new install, b) Johnny the idiot developer forgot a check in and lost a day’s worth of work. Fine.  But what I still hate about NuGet is how fundamentally broken it seems to be, at least when it plays with TFS.  I have the ‘disable integration’ nuget config setting set to false.  I tell it to download any missing packages (and of course there are missing packages, since I’m refreshing from TFS the...

posted @ Sunday, August 19, 2012 7:21 PM | Feedback (16)
Office 2013 Professional Preview : Cloud access permissions bug

Gosh, we love the cloud.  I mean, who couldn’t?  Well, one obvious case would be when you can’t access it. In this particular case, I am logged into Skydrive just fine and dandy, but I will continually get prompted for my account information, which will be continually rejected.  I thought I had figured it out.  Sometimes, you need to go into control panel and delete your credentials from Credential Manager (in my case, what happens is I’m logged into some Microsoft related site with my Hotmail account, another with my Office 365 account, and yet...

posted @ Monday, August 06, 2012 8:41 AM | Feedback (0)
Incredibly slow performance using 64-bit IE with Selenium WebDriver

Based on a recommendation from a previous post, I decided to spend a couple of minutes setting up Selenium WebDriver (as opposed to WatiN which is what I am more familiar with, but concerned about as the project may or may not be dead, based on the lack of updates). I had originally stated something along the lines of not liking the syntax because it seemed kind of sucky.  I’m not sure why.   Syntax looks fine (both ‘sucky’ and ‘non-sucky’ judgments occurred after 3 minute reviews, so I’m not stuck with either). Anyhoo, since the environment I was...

posted @ Friday, June 29, 2012 8:00 PM | 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)
A basic fact about web browsers I was totally ignorant of

You learn something new everyday, and sometimes you learn that you don’t really understand some fundamental things.  So, let’s share johnny the developer’s ignorance. Background:  I was setting up some WatiN automated acceptance tests for an older Asp.NET Web Forms site. <digression> I was using WatiN because I’ve used it before, but it looks like it hasn’t been updated in a year.  Is it no longer an active project?  Should I be looking at WebDriver instead?</digression> WatiN natively uses a lot of magic strings, and so there is a lot of ‘opportunity’ to fat finger stuff, and...

posted @ Wednesday, June 20, 2012 9:24 PM | Feedback (2)
A colorful analogy for bad technical requirements

As uttered today by a coworker (imagine it spoken with a heavy Russian accent, it makes it funnier): “First they tell us we must eat soup with fork and knife, spoon is not allowed.  Now they tell us fork is unavailable.” Pretty accurate to boot.

posted @ Monday, May 14, 2012 10:32 PM | Feedback (0)
What really separates Senior Developers from Junior Developers

I’ve posted previously why I don’t like the term ‘junior developer’ as it usually just means you are saying a developer is younger than you, and is often used to be demeaning for no good reason. <digression> There are times when being demeaning is arguably the right thing to do, but it generally isn’t a good thing to do.  It should usually be reserved for when dealing with senior management, though I don’t recommend you practice it unless you really know what you are doing.  Being demeaning to people who don’t have an opportunity to be better just makes...

posted @ Monday, April 30, 2012 7:41 PM | Feedback (3)
Repost–Can blargsmack on Tuesdays

This post from K. Scott Allen deserves merit on its own for what he’s trying to accomplish, but I’m reposting largely just so I can reproduce the following sentence: “Although this code was intentionally obfuscated, it's not unlike walking into the code for a complex domain the first time and not understanding why a wurgled customer can blargsmack on Tuesdays if they hold a vorkenhosen status. All domains are nonsense at the start.” Brilliant.

posted @ Monday, April 09, 2012 6:04 PM | Feedback (0)
Stop calling less experienced developers ‘Juniors’

I’ve noticed in some of Greg Young’s videos where he refers to less experienced developers on a team as “Juniors.”  This actually isn’t a criticism of Greg nor necessarily of the use of the term; instead, it’s a note that there can be a mindset that can be damaging, which should be avoided. Background I know this will shock many people, but when dealing with developers (or managers or executives, for that matter) who are ‘at my level’ or above, I can be pretty direct and demanding.  When it comes to developers or support personnel at a lower...

posted @ Sunday, March 18, 2012 10:16 PM | Feedback (2)
Running Windows 7 on a MacBook Air using Boot Camp

In previous posts, I talked about some of the annoying issues I’ve had with trying to use a MacBook Air due to its sleep issues. However, besides the sleep stuff, the main issue I’ve run into is that it is hard to try and ‘replace’ my main development machine due to the lack of memory you can get installed on an MBA.  4 GB max, which means 2 GB (more or less) for Windows 7.  For normal non-development work, 2 GB would actually be fine, but I tend to like to have multiple Visual Studio instances open, 30-50 browser...

posted @ Sunday, February 12, 2012 7:37 PM | Feedback (0)
Do Developers understand budgets?

Had an interesting conversation with a good PM recently (yes, there are such things as good PMs). There was a project that revolved around upgrading an application from a much earlier version of the .NET framework to a more current one.  Even after the upgrade, the overall workflow process includes a number of manual steps in error scenarios that are sub-optimal.  A developer on a different team suggested that it was a mistake to allow such manual steps.  Surely, proper usage of the capabilities of the .NET framework could eliminate these manual steps. From the outside, this suggestion...

posted @ Sunday, December 11, 2011 8:55 PM | Feedback (2)
Development Train Wreck Days: Mama said there would be days like this

So, it got to the point, I believe after error #7, that I started calling out the numbers for each subsequent error.  By the end of the day, I reached 21. Developers talk about “being in the zone” on those days when everything comes together, and you feel ‘hyper-productive’, often accomplishing more in code in a day than you normally would in a week. Train wreck days are like “being in the anti-zone.”  And I’m not talking about days when you just don’t get a lot of code written, for whatever reason (too many meetings, confusion about requirements,...

posted @ Thursday, December 08, 2011 7:54 PM | Feedback (0)
Repost: A Brief Rant on the Future of Interaction Design

This is a very interesting read.  I like this line in particular: “Are we really going to accept an Interface Of The Future that is less expressive than a sandwich?” Take a look.

posted @ Thursday, November 17, 2011 11:53 AM | Feedback (0)
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)
Repost: CQRS is too complicated……not

Rob Ashton has a good post up about how the complaint that CQRS is too complicated isn’t really valid.  It’s a good summary.

posted @ Wednesday, September 28, 2011 7:06 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)
Tilting at Windmills Award of the Week: Reference Architecture Foundation for Service Oriented Architecture Review announced by OASIS

Holy crap.

posted @ Wednesday, August 24, 2011 1:05 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)
Software Development Troubleshooting Rule #1: Read the damn error message

I did it again.  I know better. Keeping in mind that my ego can be seen from space, one thing I am proud of is the fact that I am as good at troubleshooting software development errors, either in production or while doing development, as anyone I know.  I have met a few people who are my equal, but I’ve never met anyone or read of anyone who I would say was better (and I can easily say that of people in terms of coding skill, SQL skills, networking skills, and so on and so on and so on)....

posted @ Saturday, May 28, 2011 11:36 PM | Feedback (0)
Job posting snippet that probably should have been run through the marketing department

Must….resist….obvious….joke “I need an Informatica Developer w/ BO for my direct client “

posted @ Wednesday, May 11, 2011 7:03 PM | Feedback (0)
Job posting snippet sign of the Apocalypse?

Hi, Position: Project Manager Location: NYC, NY Rate: Open Duration: 18 Months Required: * Waterfall.  Thats the only absolute requirement. 

posted @ Sunday, May 01, 2011 5:44 PM | Feedback (0)
Some more on the AWS Outage

SitePoint had an interesting take in its newsletter called “Two Important Lessons from the AWS Failure.”  The first involves communication: “The lesson here is clear—when you have any kind of crisis, communication with those affected is extremely important. In emergency mode, it may not be possible to pick up the phone to talk to a client or customer, but updating your website or changing the voicemail message can have a major impact.” Tekpub was able to provide communication through Rob’s blog (I’m also assuming that since he rejoined Twitter, he also used that medium, but since...

posted @ Friday, April 29, 2011 6:44 PM | Feedback (0)
cqrs for dummies – example – comments on an incredibly simple implementation of the command part of cqrs

In a previous post, I laid out an incredibly simple implementation of the command part of cqrs.  I specifically left out any comments, so consider this the planned addendum to that post. Why a code sample/example and why now? As a general rule, on my blog, I tend to explicitly refrain from posting code.  Why? It varies from day to day, but I tend to read between 50-100 blog posts a day (note to self: there’s a reason why you don’t get enough done in a day.  Address.).  Among the bloggers I read daily include Ayende.  Now,...

posted @ Tuesday, April 26, 2011 7:18 PM | Feedback (0)
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)
Tip for handling an unplanned outage: Protect your family jewels

In a previous post, I took a little dig at Tekpub.  Someone thought I was ‘cheering’ this misfortune.  This is silly. Site outages are something that should be part of any revenue generating site’s operational plan/business model.  I’ve probably dealt with this at least a dozen times (I personally have caused three of them myself).  Now that Rob Conery has transitioned from a (very successful from all accounts) career where he did a whole bunch of ‘architecture astronaut’ to running an (very successful from all accounts) actual business, it is nice to see that he has some experience in...

posted @ Friday, April 22, 2011 9:11 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)
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)
Crossing over to the dark side–MacBook Air 13”

Every single member of my immediate family is a Mac user of some sort.  Some more fanatical than others.  I have not been.  Way way way back when, I remember playing LodeRunner on a Mac of a family friend for what seemed like 24 hours, but since then, I’ve used Windows machines pretty much exclusively (ignoring my first computers, which were a Sinclair ZX80 and the Timex equivalent). On the recent road trip, my cousin asked me what was wrong with my laptop.  It’s one of those things I’ve always noticed but not paid much attention to, the fact...

posted @ Tuesday, March 22, 2011 9:08 PM | Feedback (0)
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)
Beware of hidden assumptions in software development projects

I’m going to pick on one thing (and a surprising thing at that), but the one thing isn’t really the point. I’m working on a project in which the backing database store is being moved from SQL Server to Oracle.  The reasons for why this move is being made is interesting in itself, but I’m not going to talk about it here. To give a little background, I am a certified SQL Server DBA.  At a Master level, even.  I’m not sure why (well, I know why, I took the exam), as when I consider myself against really...

posted @ Monday, February 07, 2011 8:28 PM | Feedback (2)
Newables and Injectables

As per usual, when you read a lot of blog posts and get a lot of other stuff in your RSS feeds, you end up hitting on some things that you didn’t expect.  Most of the time, it isn’t necessarily all that valuable, but sometimes it is. From Misko Hevery and then expanded upon by Loose Couplings (couldn’t find an actual name) is a distinction between newables and injectables that can help you write better tests (the latter casts it in terms of TDD, which as you know I think sucks, but the distinction seems promising regardless of that)...

posted @ Friday, February 04, 2011 9:16 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)
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)
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)
Microsoft relinquishes control of IronPython and IronRuby

As described here. Clock started on how long until someone ‘explains’ why this makes Microsoft eeeeevvvviiiilllllll!!!!!!!

posted @ Friday, October 22, 2010 9:08 AM | 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)
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)
Initial Impressions of UberProf, part 3, or “Stumping Ayende”

In previous posts, I talked about my initial impressions of both the EF Profiler and the Linq to SQL Profiler.  I’m going to focus here on the latter.  From the post title, you can guess correctly that there’s some bad here, but there’s also some good here, so I’m going to start with that. “This thing will pay for itself in an hour” This is one of the lines in an email I sent to Ayende, focusing on the promise of the profiler and how I see the clear benefits of it. Here’s a standard output (I’m...

posted @ Tuesday, September 14, 2010 8:37 PM | Feedback (0)
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)
Initial Impressions of UberProf, Part 2

In a previous post, I talked about the first 30 minutes or so of working with the various parts of UberProf.  It’s been a bit longer, so I wanted to update some of that. EFProf Previously, I noted the following: “Since it is long before I care about profiling this app (since it is a test database used to satisfy my specs), I won’t go into much of the details, but one interesting thing I noticed is that, in a routine where I am doing naughty N+1 things in a loop, it only flags the last three...

posted @ Friday, August 27, 2010 9:06 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)
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)
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)
A Fundamental Rule of Troubleshooting Software Bugs

In a previous post, I talked about a really annoying bug: “Quantity 127546.00 for asset Blah in System A does not match Quantity 127546 for asset Blah in System B” I didn’t want to go through and list out all of the different log messages and whatnot, so I paraphrased them into that sentence. And even though I know better, I thus violated a fundamental rule of troubleshooting.  That wasn’t, obviously, the bug. When confronting a bug, and you have log messages of any sort that are related to it, read exactly what the messages are...

posted @ Wednesday, July 28, 2010 9:02 PM | Feedback (0)
The sort of bug that makes your teeth hurt

Scenario: generally sophisticated validation logic to compare different positions that an account holds from two different sources to ensure ‘normalization’ across systems, generally well designed and functioning properly.  Suddenly, odd validation failures occur. Generally sophisticated validation logic failing on the following case: “Quantity 127546.00 for asset Blah in System A does not match Quantity 127546 for asset Blah in System B” Eek.

posted @ Friday, July 23, 2010 6:02 PM | 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)
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)
A description of a not entirely ideal software development project

Names and places are changed to protect…well, to protect against any personal liability.  You can guess the rest. The first thing you will note about a project like this is that the actual end user and/or business requirements are not really defined until you are at least 75% through the development of the software that is supposed to support the requirements.  An important thing to highlight here is that the actual end user requirements and the business requirements are not necessarily the same.  No, it would be folly to think that they were. Another fine point is when...

posted @ Friday, June 18, 2010 7:21 PM | Feedback (0)
cqrs for dummies – an interlude – DDD Exchange 2010

Event Store Layer post is coming (really, it is), but in the interim, you can find a lot of good presentations from the DDD Exchange 2010 in London (which obviously covers DDD in general, as well as CQRS) from Eric Evans, Udi Dahan, Greg Young, Ian Cooper and Gojko Adzic. Check it out here.  Good stuff.  For those of you not inclined to watching online presentations, you can find good summaries here, here, here and here.

posted @ Tuesday, June 15, 2010 7:30 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)
NoSQL links of interest

As I’ve mentioned before, one of the great things (at least in terms of how it relates to software development) about the Internet in general, and the blogosphere in particular, is that it offers a tremendous opportunity for someone to ‘fast-forward’ their skills if they know where to look (being vaguely intelligent and able to read quickly also helps). This definitely applies when it comes to NoSQL.  Beyond the mindless advocacy of some folks that think NoSQL applies everywhere, and before I have to create a system that needs to deal with the scalability issues of Amazon, I want...

posted @ Sunday, April 25, 2010 10:30 PM | Feedback (0)
Good Blog Series – Strengthening your domain

Over as LosTechies, Jimmy Bogard is blogging about fundamental OO and DDD patterns and practices, and the series can be found here. Two posts so far might be of particular interest to people interested in CQRS, one on avoiding setters (which I talked about also in my post about the command layer) and another on domain events (which I’ll be talking about whenever I finish the next post in the series about the event store layer). His writing is very clear, and the code examples are concise and precise.  Good stuff. Check it out.

posted @ Thursday, April 08, 2010 7:51 PM | Feedback (0)
High Scalability Web Site

A really good place to find a heck of a lot of interesting posts about how many different companies handle high scalability issues is here.  What’s really interesting to me is that almost every technology you think might not be able to scale can be made to scale with enough ingenuity/desperation. Good stuff.

posted @ Wednesday, April 07, 2010 11:15 PM | Feedback (0)
Good Reading – The End of an Architectural Era

Continuing on with the whitepapers I’ve been (re)reading, another very interesting read is entitled The End of an Architectural Era (It’s Time for a Complete Rewrite) that can be found here and which was written by a whole bunch of people, including (again) Pat Helland from Microsoft.  A very good overview of the article is here and is better than anything I’m going to add now (though that won’t stop me). I’m sure that many people who are part of the NoSQL movement haven’t read this, but I’m also sure that many people have, as it hits on many...

posted @ Wednesday, April 07, 2010 10:59 PM | 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)
How much of your developer career is due to Google?

I don’t know about you, but I don’t memorize syntax.  I mean, when I’m doing typical daily development work, the speed at which I can get stuff done depends pretty heavily on my short-term memory, that is, on whether I’m writing code that is similar to code I’ve been writing recently.  If it involves code of a sort I haven’t worked on in over a month, there’s a bit of friction (as the kids like to say). Anyway, this all came to mind the past few days.  For various reasons, I had to write a fairly simple console application. ...

posted @ Thursday, April 01, 2010 6:42 PM | Feedback (0)
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 – 1 of N – the query layer

Back to the fun stuff.  Series link here. As a reminder of what I’m talking about, here’s the picture from Mark: What I’m going to be talking about is section #1 from Mark’s picture, and in particular, I’m going to going over a number of concepts including: The Reporting Store Eventual Consistency You don’t need your Domain Once you have one, why not more? “Reporting” doesn’t just mean Reporting One of the first things that I found difficult when learning about CQRS was the use of the...

posted @ Tuesday, February 09, 2010 11:09 PM | Feedback (4)
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)
MapReduce Patented Though it isn’t quite the same thing, I’m thinking of trying to patent Cut and Paste, just to see if it gets awarded.

posted @ Wednesday, January 20, 2010 11:49 AM | Feedback (0)
CQRS Presentation, Chicago Alt.NET, 1/13/2010 Recap

I’ll update this post with the link to the screenshot and the slide deck when Sergio posts it. Update: here they are. On a scale of 1 to 10, without thinking too much about it, I would give myself a 4 or a 5 on this one, and for a couple of (somewhat related) reasons: - a fundamental flaw of the presentation is that I was trying to give a high-level summary overview of the things that Udi and Greg and Mark are talking about, without having the benefit of the width and breadth...

posted @ Thursday, January 14, 2010 8:43 PM | Feedback (0)
When jQuery scrolling sucks

Rob Conery wrote a post about how traditional paging on web pages sucks.  And, generally speaking, he’s right.  As he puts it: “we know that people rarely go to pages 2- whatever and that when they do, they rarely come back to page 1. We have 3 seconds to capture a user’s attention on a new visit – that’s it. If you make them page they will leave, and it’s amazing how many applications still use this dated way of showing information.” Though he doesn’t specify it, he’s obviously talking about (among other things), Google.  An entire industry...

posted @ Monday, January 11, 2010 10:22 PM | Feedback (2)
Kanban and Scrum Together

There's a very good eBook by Henrik Kniberg and Mattias Skarin entitled Kanban and Scrum - making the most of both that, well, talks about Kanban and Scrum and how to make the most of both. You can get it from here, though unfortunately, to get it, you have to register.  Hate that.  You can also pay to buy a physical copy of it. It's....interesting to read the forewards by Mary Poppendieck and David Anderson and notice the stylistic differences.  Also, note that David's foreward is from before his (in my opinion, proper) decision to remove the word 'waste' from his presentations.

posted @ Thursday, December 31, 2009 10:22 AM | Feedback (0)
Remote connection to a SQL Server 2005/2008 instance

If you’re like me, you might have had an occasion or two where you needed to connect to an instance of SQL Server from a workstation or server that wasn’t where the SQL Server was actually located.  Because of the gosh darn important security measures that have been implemented in more recent editions of Windows Server and SQL Server itself, this might not work well by default (not to be critical of gosh darn important security measures, as they are gosh darn important). As a note to myself, if you need to do this, there are a couple of...

posted @ Monday, December 14, 2009 9:28 PM | Feedback (0)
Like I was saying, Operations is important

If you go take a gander at this, you’ll see that some relatively well known (and some relatively not well known….. ???….I dare you to read that quickly without doing a double-take, BTW) sites went down over the weekend due to a hard-drive failure on a dedicated managed server that was hosting various virtual machines. Now, it would be easy to gloat and flame about this, and really, people should know better.  Same goes for some popular blogger sites that lose all their images when a server fails.  However, I won’t specifically for a number of reasons: ...

posted @ Monday, December 14, 2009 8:20 PM | Feedback (0)
Subject Matter Expert != Technical Expert

I’ve run into this situation a couple of times over the years.  Let me tell you, it is fun!!!!!!! (That’s sarcasm for the sarcasm impaired). The general scenario is something like this: at some point in the history of a department, usually a number of years ago, the department decided it needed to upgrade its technical infrastructure (I’m leaving that purposefully vague), and decided that it needed someone who had a significant amount (or significant enough) of domain knowledge to drive that decision.  Often times, this means the SME learns enough to implement some sort of technical design.  Usually,...

posted @ Wednesday, November 18, 2009 6:50 PM | Feedback (0)
The Deployment Runbook

The deployment runbook is an artifact usually found within larger IT departments, and is designed to help guide the deployment of ‘Enterprise’ applications that requires a large number of steps, and typically can cover a period of a number of days.  Anyone who had experienced this beast knows that it is almost always a sign of an environment that is horribly complex and barely manageable. In its common form, the deployment runbook is a master Excel spreadsheet, often with many worksheets within it, typically numbering hundreds, if not thousands, of rows long, and almost always very colorful.  Because it...

posted @ Monday, November 16, 2009 8:00 PM | Feedback (1)
Selective Unit Testing

Here’s an excellent post by Steve Sanderson on when and how you should choose to write unit tests. I’m not sure I would agree with his assessment that 100% code coverage is an aim for only a minority of developers doing TDD (that’s not exactly what he said, but it’s my blog and I can twist words if I want to, twist words if I want to).  I think TDD is bad in large part because it does focus too closely at the class level and pushes for unit testing everything (this is why Specification-style testing is better). ...

posted @ Wednesday, November 04, 2009 2:00 PM | Feedback (0)
IT Courage

A not uncommon situation occurs, especially in larger organizations, where a department ‘inherits’ an already existing application or system.  This can occur because of a reorganization or because of a recognition that the system needs a better home, or for other reasons. Sometimes when this occurs, the inheriting group discovers that things are much worse than it seemed.  Problems have been swept under the rug, common software development practices haven’t been followed, production issues occur on a nearly daily basis, etc. etc. etc. A very rare reaction to this is for the head of the inheriting group to...

posted @ Friday, October 30, 2009 8:55 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)
Technology Driven ‘Convention over Configuration’

In a recent post, Jeremy Miller talks about two different type of developers (those that say there are two different types of developers, and those that don’t….no, I kid) and talks about one type: This is what I have.  The other fellow started his solution by asking himself “how do I use the existing infrastructure in Prism to solve this problem?”  He restricted himself to the patterns and mechanisms in Prism and used a pretty idiomatic WPF type of solution that would be pretty familiar to most WPF developers (a major point in its favor).  Actually, “restrict” is the...

posted @ Friday, September 11, 2009 8:02 PM | Feedback (0)
Some things I think I like about ‘Specification-style’ development

I specifically say ‘Specification-style’ to make it clear that I don’t pretend to be doing “full-blown” Context/Specification BDD as described by Scott Bellware here, or even that I can use MSpec as developed by Aaron Jensen (typical ‘non-approved software’ issue…whatever).  Instead, what I am doing is taking what I take to be an important aspect of it and running with it.  Of course, just because I take it to be an important aspect doesn’t mean it actually is, blah blah blah. I’m working on a system that does stuff in a very ‘legacy’ way.  Keeping in mind that ‘legacy’...

posted @ Wednesday, September 09, 2009 8:21 PM | Feedback (0)
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)
Institutional Knowledge

Anne Epstein has a great post about what she calls “Institutional Knowledge.”  In her post, she focuses on the current economic situation, and the fallout from letting go of staff that has this institutional knowledge, but I think what she says can be more generally applied and understood. You can read the original to see all the details, but she talks about an old Dodge Caravan she had, and the specific ‘quirky’ things she needed to do to get it to function properly in various situations (I can relate…I had an old Pontiac GrandSomethingOrOther that was similar…I've...

posted @ Saturday, August 29, 2009 7:26 PM | Feedback (0)
Unit Testing Basics: Make sure the test can fail

Though I should know better by now, I still find myself on occasion (just on occasion, really) making a ‘rookie’ mistake. You create a spec and code it so that it will pass.  All is good.  Then in some later scenario that the spec should have covered, you find yourself getting a failure.  Consternation, angst…..after 20 minutes (if you are lucky), you discover…the spec was written such that it never could have failed. When I first was trying to learn unit testing basics, I would get stuck on the advice, “Make sure your tests fail, then make them...

posted @ Friday, August 28, 2009 7:25 PM | Feedback (0)
TypicalProgrammer on Why Programmers don’t like Relational Databases

This is a very good read: I especially like the following: Because most of what programmers do has no theoretical basis or system of proof, programmers back away from anything that looks like hard math. Failure to understand and appreciate relational theory has launched countless bad databases (and thousands of witless articles condemning SQL). The idea that there is a right way to design a normalized database–and that the wrong ways are provably wrong–is alien to most programmers. Database management doesn’t come down to a matter of opinion like OOP class hierarchies or coding style. ...

posted @ Tuesday, August 25, 2009 10:02 PM | Feedback (0)
Microsoft Office: A potentially telling indicator of the sophistication level of your organization

This isn’t always true, of course, but in my experience, you can get an indication of what to expect in terms of sophistication by knowing what version of Microsoft Office is being used by an organization. This is a good (and admittedly bizarre) question to ask in an interview when they ask you “do you have any questions for us?”  If they tell you anything before Office 2007, then there is a pretty decent chance that when you get to look at the code base as a developer/architect, there is gonna be some pain experienced. If...

posted @ Tuesday, August 25, 2009 7:17 PM | Feedback (3)
Abject-Oriented Programming

This if from a few years ago, but it is a very good read: I’m not sure which is funnier.  The post itself or some of the comments from readers who didn’t quite get it. I really enjoyed the Virtual Classes and Functions section.

posted @ Monday, August 24, 2009 6:50 PM | Feedback (0)
Mobile Browsing

For various reasons, I’ve spent significantly more time recently browsing the web from my phone (Samsung Epix).  I’ve always thought that browsing from the web was lame.  I still do, but since I do it more, I’ve noticed certain things that are more annoying than others, and certain things that are more enjoyable than others. For years now, I generally only watch TV for HD sporting events and the Food Network.  For news and other things, I use this internet web thing. Being able to read the full article: so one major difference I’ve noticed is...

posted @ Friday, August 21, 2009 7:16 PM | Feedback (0)
How not to advance software development practices

Jimmy Bogard, creator (I think, he’s listed as a Coordinator, but I think his role is much more than that) of AutoMapper, has a post up about Continuous Learning, where he states: One of the more tiring arguments against ideas like Agile or Lean is the line of “gee, it used to be RUP, now Agile, now Lean.  Make up your mind!  I’ll come back in 2 years when it’s something else shiny you’ve latched onto.”  But that’s not an argument against ideas, it’s just an argument against change. and: So we have two options – cling...

posted @ Sunday, August 16, 2009 11:34 PM | Feedback (1)
Employing the Domain Model Pattern

Udi Dahan has yet another good read in MSDN Magazine, where he talks about the domain model pattern.  I particularly like a couple of things about it.  One is a comment about what the domain model is not: If you had come to me a few years ago and asked me if I ever used the domain model pattern, I would have responded with an absolute "yes." I was sure of my understanding of the pattern. I had supporting technologies that made it work. But, I would have been completely wrong. ….the No. 1 most...

posted @ Sunday, August 02, 2009 8:54 PM | Feedback (1)
Standards? We don’t need no stinkin’ standards!

Interesting article here about Google and how they do markup on their search page. Apparently, they have determined that not closing the <body> and <html> tags on their pages somehow has a performance benefit, and so ignore what most people would consider to be Markup 101 (not to mention the other ‘issues’ mentioned there). I wonder how long it will be till someone brings up this issue to me as a reason why markup validation doesn’t matter.  When building an e-Com system, my business partner and I have at some point in the past come up...

posted @ Friday, July 31, 2009 10:53 PM | Feedback (2)
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)
When TDD can't help you - A case study : Paypal Express Checkout

If you’ve ever been able to work for a period of time where you could use TDD, BDD, or just plain ol’ unit testing, then you’ve probably experienced the joy of having to work the good old fashioned way, what we might call “Brute Force Integration Testing”, otherwise known (when developing web applications) as “Click through the damn thing and see what happens.” Recently, I’ve had such a joyful experience, and its name is Paypal Express Checkout (henceforth ”EC”). I’m assuming most everyone knows what Paypal is.  When designing a checkout process, you typically want to have standard...

posted @ Tuesday, July 14, 2009 9:36 PM | Feedback (3)
The problem with BDUF is the ‘B’ not the ‘UF’

SB has a good post, short and to the point, where he points out that the problem with BDUF(“Big Design Up Front”) is with the ‘Big’ aspect, not the ‘Up Front’ aspect. For instance: I’m sure every developer with even the slightest amount of experience has run into a situation where a proposed design for a domain concept is initiated, and then someone (perhaps even the developer in question) has decided something along the lines of: “We need to generalize this so that it covers future requirements.” If this doesn’t cause you some concern, it should.  The...

posted @ Saturday, July 04, 2009 6:13 PM | Feedback (2)
BDD beginner’s stumbling block

I should probably add that this is a stumbling block that *I’ve* run into, which doesn’t mean anyone else will.  But it is *my* blog, so that should be obvious. I have started to use BDD on a greenfield project because I hate it.  Well, that’s not quite accurate (since it would be pretty dumb if that was the only rationale behind it).  I like a central idea behind it.  Well, I don’t hate it.  Anyway, the central idea is that you can write up specifications that are in more or less straightforward English, and using Machine.Specifications anyway, you...

posted @ Saturday, June 27, 2009 7:41 PM | Feedback (2)
pmk – poor man’s kanban – 2 of N – Waste

At some point, one would think I would talk about, you know, kanban, specifically, the kanban board.  I’m getting to that. But first, I want to talk about the concept of waste and how it fits in. Now, within the Toyota Production System, the precursor of at least one version of Lean Software Development, there is a list of the 7 types of waste.  This immediately makes me skeptical.  Really?  7?  Not 6?  Not 8?  We’re all geeks here, don’t there have to be 42?  I don’t buy it. Furthermore, as I mentioned in previous posts, the...

posted @ Monday, June 22, 2009 2:37 AM | Feedback (2)
pmk – poor man’s kanban – 1 of N – Preamble

There is a lot of existing literature when it comes to Lean/Kanban/Pull/Whatever.  Before getting into my discussion of pmk, although I believe I did this in a previous post, it is important to once again highlight some of the common links to that material. Lean Software Development This is most obviously associated with the work of Mary and Tom Poppendieck, since I believe they coined the phrase. Their work can be found in greatest detail at their homepage. You can find their books on Amazon by clicking here. The wikipedia article on it can be...

posted @ Sunday, June 07, 2009 11:07 PM | Feedback (0)
pmk – poor man’s kanban – 0 of N

So, I’ve caught the bug.  Okay, a bug.  The Lean/Kanban/Pull/Whatever bug. Developers like to push things like SOC, IoC, SOLID, TDD, etc. as well as particular tools that (purportedly) help to promote these things. When you ask developers why these things are important, you get a lot of conflicting answers, most of which devolve to something like “Well, I feel like I’m a better developer because of them.” Which is nice, but developers (and I am one) seem to like all sorts of things, sometimes because things are ‘cool’ and sometimes because they provide value, and sometimes...

posted @ Friday, June 05, 2009 10:02 PM | Feedback (2)
Modern Software Development in a Corporate Environment

Inspired by a recent conversation: Time it takes to code a bug fix: 10 minutes Time it takes to deliver the code through arcane processes: 6 hours Time it takes to document the code in the required formats: 4 days Time it takes to deploy the code to production: 3 months Time it takes to point the finger if something goes wrong: 2.2 seconds

posted @ Wednesday, May 27, 2009 6:41 PM | Feedback (1)
Self-Promotion Weasels

Channeling my inner Bellware on this one. Blog posts can be set up to be kicked or dugged when readers of those posts think they are worthy of it.  Within the .NET world, there are sites like DotNetKicks and DotNetShoutout that exist for similar purposes.  The general idea is that you can use these sites to find posts that are deemed to be especially important by the community at large.  A nice enough idea, I guess, won’t really argue against it now. But the idea is subverted by people who decide to abuse the system.  This can be...

posted @ Wednesday, May 06, 2009 7:27 PM | Feedback (3)
Developing a Real World Application

I kept forgetting to post something about this. In the April 2009 issue of MSDN Magazine, Udi Dahan wrote a fascinating and informative article entitled "Optimizing A Large Scale Software + Services Application" that describes the difficulties he and his team faced in building a sophisticated smart client trading application. Sometimes when I read posts/articles/etc. about development practices, it seems as if the writer has never implemented an application of any significant size or complexity.  All one needs to do is TDD themselves to a happy place, and then everything else is just an implementation detail that will fall into place. Of course, it almost...

posted @ Monday, May 04, 2009 12:37 PM | Feedback (0)
Using Google is not waste

Over at LosTechies, Derick Bailey posted about how answering no issues in a daily standup is not acceptable. I’ll leave it for other discussions whether or not the overall theme he was commenting on is good or not, but he discussed something that is worth commenting on, and I’ll quote extensively: “When was the last time you spent 10 minutes wrestling with a problem, spent 10 minutes in the debugger of your IDE or looking at log files generated by your code? When was the last time you hit up Google for an answer to a question, or...

posted @ Friday, March 27, 2009 12:53 AM | Feedback (6)
Promoting burnout is a bad thing

Ray Houston over at LosTechies has a post about not wasting time.  On the surface, what he says makes sense.  But consider this: “After a good day of pairing, you feel exhausted because you put in a real day's work. You were engaged the entire time. Why don't we hold ourselves to the same standards when we are programming solo?” It is bad to have your workers, in any field, feel exhausted at the end of a day’s work.  This pretty much guarantees burnout in your workstaff. Except for those periods where there is a really important...

posted @ Tuesday, March 17, 2009 10:14 PM | Feedback (5)
SRP, A Problem

SRP, the Single Responsibility Principle, has its canonical statement as the following: “THERE SHOULD NEVER BE MORE THAN ONE REASON FOR A CLASS TO CHANGE.” This is all well and good.  But consider the following: 1) A class that has more than one reason to change violates SRP. 2) A class that has more than one function has more than one reason to change. 3) A class that has more than one function violates SRP. Or: 1a) A class that has more than one reason to change violates SRP. 2a) A class...

posted @ Friday, February 13, 2009 7:55 PM | Feedback (10)
Brief Review of Hibernating Rhinos Episode #10: Production Quality Software

A brief description of the episode and a link to the download can be found here.  It was produced by Ayende, a well-known and brilliant developer (but more than just a developer) within the .NET space, especially within the Alt.NET space.  I can’t really do justice in a short description to who he is or what he has done (surf his blog, and in particular, find his post on leaving active duty from the Israeli Armed Forces (I hope I described that properly), it is a *fascinating* read).  I’ve met him once, at the Alt.NET Open Spaces event in Seattle...

posted @ Wednesday, February 04, 2009 11:37 PM | Feedback (0)
A mild corrective to all the Toyota love

Can be found here. Some key points: “A few years ago the company cast off its traditional conservatism and embarked upon a rapid expansion program that turns out to have been overly aggressive and ambitious.” “In 2005, Toyota recalled 2.38 million vehicles in the U.S. -- slightly more than the entire number of cars and trucks it sold that year.” “In October of that year, America's Consumer Reports magazine lowered Toyota's rankings on its authoritative annual car-quality surveys. The magazine stopped its practice of automatically recommending all Toyota models because of quality declines on three models.”...

posted @ Monday, January 05, 2009 9:53 PM | Feedback (2)
There’s a Lesson about Software Development in there or something

Read this comment in code today: “the optimizer was breaking the code up inefficiently”

posted @ Wednesday, December 31, 2008 3:44 PM | Feedback (1)
Some Lean Software Development Links

So, I am working through my backlog of webcasts (Ha, ha, I made a funny…see there’s this notion of a backlog and….oh never mind), which includes the content produced from the Kaizen/Echo Chamber Conf event this past November in Austin (at least for the non-cowards who didn’t password protect theirs), and one of the sets I watched today was a high-level overview of Lean/Kanban led by David Laribee. Depending on how versed the viewer is already, the value you can derive (Ha, ha, I made a fu…never mind) from the videos (3 of them) of the session may vary,...

posted @ Monday, December 29, 2008 5:22 PM | Feedback (0)
No Best Practices

This isn’t a new post, but it makes a lot of points that are relevant today.  This week, I particularly like this one: “Go ahead and follow your favorite practices. Just don’t preach that the rest of us must follow them, too. Keep your process standards to yourself. If you want to make a suggestion, make one that takes context into account.”

posted @ Sunday, December 07, 2008 7:52 PM | Feedback (1)
DDD-Lite and Data Access: One way of doing it

I’m not sure who came up with the term ‘DDD-lite’ or if it even makes sense to ask the question, but I *think* I first saw it being used by Colin Jack.  In any event, I’m going to describe what I mean by it, and how I’m using it in a way that I find comfortable along with a certain way of doing data access. As I’m using it in this post (I don’t think there is an official definition), ‘DDD-lite’ refers to the use of certain patterns within your code.  Full blown DDD requires an extensive collaboration between business users...

posted @ Tuesday, November 25, 2008 9:14 PM | Feedback (5)
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)
What makes code easily deployable?

In a previous post, I asserted that excellent code is easily deployable.  What might that mean specifically? It depends, of course.  But, let’s try an example. Separation of concerns is a basic principle that means (paraphrasing) “Don’t try to do too much s$%t at once.”  For instance, if you are working on your UI/Presentation Layer, don’t embed business logic and/or data access logic within it.  An obvious example is to not put ADO.NET code in the code behind of a web forms page.  This makes it harder to test the code (in any sense of ‘test’ that isn’t...

posted @ Monday, November 10, 2008 8:12 PM | Feedback (0)
Excellent Code is Easily Deployable Code

That I am including this in the rant category I will leave as an exercise for the reader to determine the cause. Let’s leave aside all of things (SOLID principles for instance) that should be considered as basics in any software development process, I want to talk about configuration. App.config.  Web.config.  Within .NET, almost any project is going to involve having values that will need to change as you deploy code from environment to environment (DEV, DEVINT, QA, PREPROD, PROD…do any of these sound familiar?). Except they shouldn’t. I want to advance as a general principle/goal...

posted @ Friday, November 07, 2008 7:14 PM | Feedback (0)
Signs You Might Be Working For A Client That Isn't On The Cutting Edge #4 in a series

If they propose an architecture for the next version of the application where you create UML models and then click a button so that all of the code is magically generated for you.  That way, you don’t have to worry about build errors. CASE, anyone?  Run.

posted @ Monday, October 27, 2008 6:06 PM | Feedback (0)
A handy quote to remember

I just read Leonard Susskind’s The Black Hole War : My Battle with Stephen Hawking to Make the World Safe for Quantum Mechanics.  I like reading this sort of thing, especially because the current state of theoretical physics is seriously f%^ked up.  I mean, amazingly.  Though that’s a topic for another post. Anyway, on page 168, is the following (he’s talking about the concept of entropy as he learned it while doing undergrad work in Mechanical Engineering, though that’s somewhat irrelevant): “Everyone copied it down, but no one understood what it meant.  It was as incomprehensible to me...

posted @ Tuesday, October 21, 2008 6:33 PM | Feedback (0)
Programming without Subject Matter Expertise

In a previous post, I tried to make a point.  I think I did make the point, but it was kind of hard to decipher.  So, here's a (please God I hope more succinct) stab at it. Learning to be a good programmer takes skill and effort (the rest of us get by on looks and charm).  Learning patterns, OO principles, and the like are all ways that you can try to make yourself a better programmer. Learning to program within a domain (whether you explicitly follow DDD and have a Ubiquitous Language or not) requires learning something...

posted @ Thursday, August 21, 2008 7:29 PM | Feedback (4)
Agile Development Pair-Programming Team Building Quandary

Okay, another stupid title.  Example please. At the most recent meeting of the Chicago Alt.NET group, the second-half 'free-for-all' discussion we talked a lot about actual experiences that people had with agile development.  The concept of pair-programming came up more than once, and amongst its benefits (Monty Python reference) was the idea that you can help spread knowledge throughout your team by continually allowing different developers to work on particular blocks of code (that's a poor description really, but hopefully you get the idea). Now, this benefit isn't something that can only occur within agile development or only...

posted @ Wednesday, August 20, 2008 7:17 PM | Feedback (5)
Why I'm Skeptical about Mocks and Testing

Last week after the Microsoft Launch Event in Chicago (for the 2008 'wave' being in this case Windows Server 2008, SQL Server 2008, and Visual Studio 2008), there was another get together of the Chicagoland Alt.NET group (there isn't a web site yet but that is forthcoming) where we discussed all sorts of things, as well as planning out the initial stages of a Code Camp in the fall (more details forthcoming). Somewhere in there, I was able to formulate in pretty brief terms a description of why I am skeptical of mocks and testing.  It was not a...

posted @ Sunday, March 16, 2008 9:31 PM | Feedback (7)
Some other takes on Agile.....

posted @ Monday, October 09, 2006 1:20 PM | Feedback (0)
The kingdom of Nouns

An attack against OOP (or how Java and C# do it anyway).  Regardless of whether I agree with all of it, the nursery rhyme is worth the read itself:

posted @ Friday, August 25, 2006 10:33 AM | Feedback (0)
If I had a hammer

The downside of frameworks:

posted @ Tuesday, April 11, 2006 12:19 PM | Feedback (0)
Managing a Doomed Software Project

If you've ever been on or seen one of these, this is a good read for what to do when they come around:

posted @ Sunday, January 15, 2006 6:12 PM | Feedback (0)
Does Visual Studio Rot the Mind?

Interesting article.  Can't say I agree with a lot of it, but it reminds me of people I've worked with:

posted @ Wednesday, November 16, 2005 11:52 AM | Feedback (0)
MVC Links

Various links about MVC:

posted @ Monday, October 31, 2005 12:44 PM | Feedback (0)