Posts
418
Comments
209
Trackbacks
1
Wednesday, August 27, 2008
Chicago ALT.NET September 2008 Meeting

Register here.

Wednesday, September 10, 2008 from 06:00 PM - 08:30 PM (CT)

Inversion of Control for the masses

6:00 pm
Pizza and networking time

6:30 pm
John Nuechterlein (a.k.a. jdn) puts Inversion of Control (IoC) containers under the spotlight. If you have been noticing the increasing buzz around this technology but never had a chance to see what it is and how it can be used, this is your chance to see:

  • An overview of what IoC is, using StructureMap as the example
  • Why one might want to use IoC
  • How one can implement IoC
  • When one might not use IoC

7:45 pm
You may want to stick around after the presentation portion of the meeting and take part in our monthly open discussion. The topic is never arranged in advance but it's common that it reflects the content of the presentation.

posted @ Wednesday, August 27, 2008 6:31 PM | Feedback (2)
Reasons to hate ESPN's SportsCenter #1 in a series

I should have started this one about 15 years ago.

So I'm having DSL problems (as in, Internet connection) which may very well be the subject of another post, and I figure, okay, I can watch the new morning edition of SportsCenter while the technician from the phone company pretends to do something.

And so, in the middle of highlights, they have a 5 minute interview with..... L.L Cool J.  New 'album' comes out in September (do they even make albums now?).  He's working out, eating healthy, and staying away from the drugs (though he will 'pop a bottle once in a while' don't get him wrong).

And I should give a f%^k because?

This reminds me of when I knew SportsCenter jumped the shark years ago, when they interrupted the sports highlights to go to a live musical performance by Alanis Morissette.

Pukey.

posted @ Wednesday, August 27, 2008 9:37 AM | Feedback (1)
Monday, August 25, 2008
Randomly Overheard Conversations that I think are funny #1 in a series

So, I was sitting in the food court eating my gyros sandwich (as delicious as it was unhealthy) next to a group of four people who were discussing whatever they were discussing, loudly enough to be overheard.

They talked about T-SQL (or maybe just SQL, didn't pay much attention to that) when one or more of them started talking about movie reviews.  Again, didn't pay much attention to it.

Then I heard one person say something like the following (paraphrasing):

"You know one movie I really didn't like?  The 'Meet The Parents' movie.  The main guy just didn't admit to the father that he didn't like cats.  And so, everything that happened to him was something he deserved because he wasn't honest about not liking cats.  One thing I can't stand about people is when they aren't honest about what they believe.  It wasn't funny at all."

Um, there are these things called movies.  They, uh, I mean, if you are watching a movie, especially something that is supposed to be a comedy, then, uh, well, there's this suspension of belief thing and, uh....you're kidding, right?

Disclaimer: I have never watched 'Meet the Parents' all the way through so have no opinion about the movie itself.

posted @ Monday, August 25, 2008 8:29 PM | Feedback (1)
Thursday, August 21, 2008
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 about the domain.  Or at least whatever piece of it you are working on.

*But* in most/many/some situations, the true Subject Matter Expert (SME) isn't a programmer.  And so they have to 'dumb it down' for the development team, because the members of the development team can't be expected to know what the SME knows.

I think this has a lot to do with why software development fails often times.  The SME can tell you after the fact that the software didn't deliver what they wanted.  Things like DDD/TDD/BDD/<insert xDD here> are supposed to help in this area, and I suppose they do, but often times, the SME has implicit knowledge that they don't know they need to make it explicit, e.g., 'When I said I wanted X, of course I meant that Y and Z should also be true'.

At times, there seems to be this assumption that by having a back-and-forth conversation between the SME and the dev team, you can have user stories that just work.  But there is a reason why you have to go to school to get a degree in Finance (as an example).  You can't just have 'conversations' and expect a developer who doesn't have the educational background to understand what the SME is saying. 

In the best case scenario, the developer will be able to fake it enough and ask the right sort of questions along the lines of 'what do you want this screen to show', and that is actually a very good skill to have.  But it is a reactive skill, not a proactive one.

posted @ Thursday, August 21, 2008 7:29 PM | Feedback (3)
A Sign that a Company may have misunderstood SOX Compliance Requirements

The dictate comes down that no code developer of any sort will be allowed sa access to the SQL Server.

In the dev environment.

<cue stunned silence>

posted @ Thursday, August 21, 2008 6:15 PM | Feedback (2)
Wednesday, August 20, 2008
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 with pair-programming.  Even in a waterfall-ish type development environment, you can get this benefit (though perhaps not as easily) by assigning different developers to subsequent projects that extend a particular block of code.  I say "though perhaps not as easily" for the fact that, in time-tracking tool driven environments, the previous developers with the already acquired knowledge are often times not allowed to 'officially' work on the subsequent project.  As a consultant/contractor, I've faced this often enough.  There is someone in the company that worked on, or even built, the block of code that I'm assigned to, but I can't expect them to work in an engaged fashion with me on the subsequent project, because the time-tracking tool says they have to work on other things. 

To give a concrete, but vague enough, example, consider auditing.  Seemingly every company, at some point, seems to want to add auditing functionality to an area of code that wasn't initially built to handle it.  And, seemingly, every company decides to hand-roll its own custom solution.  So, Person A builds it for a sub-set of the application, and then after that is successfully completed, it is decided to expand it to another area of the application.  This gets assigned to Person B (in this case, me), who played no role in the initial construction.  In a pair-programming environment, I would at least be guaranteed a piece of Person A's time, whereas what typically happens, you have to figure out the custom solution as best you can, and then ask one-off questions when you get stuck.  Also, without pair-programming, you have a greater ramp up time where you are stuck by yourself trying to 'figure it out as best you can' with limited support.

Side-note:  everyone has worked with the stereotypical prima donna who insists on owning a particular code block, but more often than not, or at least sometimes, Person A is glad to have another person working on it, because it frees them from being the 'go-to-guy' every time a problem occurs down the road.

By spreading the knowledge around, you minimize the 'what happens if Person A gets hit by a bus' problem, and make it easier to assign future work down the road.

All this is well and good.

But what about true subject matter expertise?  The sort of thing that can't be spread around?

Again, I'll use a couple of examples.

In the last few years, I've worked for clients involved with (among other things) oil refineries, telecommunications, and finance.  Now, I may not be very good at certain things, but one thing I can do is, assuming nothing else than looking at the code, know that if Widget A comes into play in the code with certain properties, then given certain conditions, I can tell with some certainty what Widget A and its properties will look like after it goes through a code block.  I may not know exactly what Widget A is, but I can fake being knowledgeable by reading the code.

But, I can never replace a true subject matter expert who is also a coder in these cases.  Working in financial institutions, if someone says "we are thinking about extending this code to handle quants," my immediate reaction is "What the hell is a quant?  Isn't that the airline with the koala bear mascot?"  To be honest, I'm not sure I've even spelt 'quant' correctly.  I've been a member of teams with people who know what they are, and have sort of glanced at documentation that explains what they are, but it's way more complicated than anything I will ever really understand.  Because of this, I can never be able to know in that 'in a glance SME talent' way if the code I'm working on avoids the unspoken potential issues that someone with real SME knowledge could have.  Even with pair-programming, I can never rise above my 'Widget A' ability.

Since there a *lot* of talented developers with financial SME ability, let me use 'Telecommunications' as an example.

I worked for a company that had an application that verified the part list and installation order of a telecommunications network.  So, the company would be hired by others to build out and/or replace their existing telecommunications infrastructure with the company's equipment.  The application would take in as inputs what the field engineers had determined, validate that no errors existed, and place the order (roughly, it's been a while).

The 'Quandary' is this: arguably there was one developer on the application who was a true SME (personally, I'm not sure that he was, but let's go with it).  There is, was, and never shall be any possibility that I could ever have gained anything even close to SME talent here.  In a previous life, I helped manage the telecommunications network of a small company, so at least to a certain extent, I knew at a really high-level the types of parts involved (which is why I got the gig, since they couldn't find a lot of people with even high-level knowledge), which put me one step ahead of the game.  But even with pair-programming, there was a ceiling to what I could know.  So, in this case Person A would always be required on the application.  In which case, except in a supporting role, the whole notion of 'truly' spreading knowledge is a myth. 

And, it's also potentially harmful.  The 'team building' concept is usually couched in terms of 'junior' vs. 'senior'  (which to me is simply the difference between 'new guy who doesn't know the system yet' and 'guy who knows the system') but when it comes to true SME knowledge, it can't be shared.  Unless you get a junior developer who is also an SME.

In the financial industry, this is probably (I think) more likely to be possible, but when it comes to telecommunications, the SME is the field engineer, and he doesn't want to be a programmer.

This is also a quandary for DDD and the 'ubiquitous language.' 

None of this is to suggest that those who practice agile development get it wrong more than other types of development.  I think it is endemic to the field. 

posted @ Wednesday, August 20, 2008 7:17 PM | Feedback (5)
Tuesday, August 19, 2008
I think this means I won

At the most recent Chicago Alt.NET meeting (Sergio posted about it here), I was talking with various people when someone (I think it was Aaron) mentioned that Scott Bellware had issued a tweet/twit/whateveritscalled at some point that I be drummed out of Alt.NET and have all of my blog comments deleted.  And apparently I had a number or something attached to it.

Since I hate Twitter (to me, it is the 'web 2.0' version of IRC...when I first got online in the late 90s, I made the mistake of going to a philosophy IRC and tried to, you know, talk about philosophy...IIRC (not to be confused with IRC), the members knew nothing about philosophy, wanted nothing to do with discussing it, and wanted instead to talk about getting laid...sort of similarly, the first time I heard about Twitter, I logged on and found tweets/twats/whatever along the lines of 'I like cheese'...okay, that's nice, goodbye), I had not known this.

Using various search tools, though he had changed his twitter name, I was able to find the following:

"alt.net community craven behavior #26: unwillingness to kick jdn to the curb"

and

"when will the alt.net community just kick jdn off the lists and just delete his blog comments"

Scott has always been the most morally bankrupt members of the alt.NET community.  The great thing about this is that his lack of stature has caused him to do things that actually help the greater community at large.  Since his blog is offline, I can't link to it, but the most important thing to him has been to say things like "Hey, look at the the things I've done for the community, like my DevTeach sessions, and my work at organizing Alt.NET OpenSpaces conferences", etc.  All of which is true.  He does it (apparently) because he is an insecure gloryhound, but since the end result is a positive for the community, that's fine.

Anyway, besides all that, his twoots/twatters/whatever are not quite sources of pride, but pretty close.  He's always been incapable of debating serious points.

In a similar vein, people like Jeremy Miller and Chad Myers are always pretty quick to descend to insults when they aren't agreed with (Chad I understand, Jeremy I don't...my first encounter with him was when he responded to a question about how to sell Agile on a fixed bid project with a 4-5 paragraph response that was above and beyond what I expected, really very detailed).  They really seem to think that when I disagree with them that I'm just trolling. 

If I wanted to troll someone, I would login to a Washington Capitals website and ask about trading Ovechkin for Sundin or something (if you don't follow the NHL, just accept that this would be a stupid suggestion).

On a vaguely related note, the EF team asked for input on how to implement POCO in v2.  Not surprisingly, none of the 'thought leaders' of Alt.NET decided to contribute.  They were all hot and bothered about creating the 'No-Confidence' vote, but when given the opportunity to contribute by the EF team...loud silence.  Not surprising.

So, anyway, people can delete what they want to delete, if they want.  I extend an open invitation to anyone who wants to do a podcast or anything like that.  I won't hide in the weeds or call for things to be deleted. 

posted @ Tuesday, August 19, 2008 8:19 PM | Feedback (5)
Anonymous Blog Comments

This is something that comes up quite a bit on certain blogs, especially with Alt.NET types (before he (un)fortunately (unfortunately because he was the source of a wealth of unintentional humor, fortunately because his blogs were usually stupid), Scott Bellware was a typical example, Chad Myers is a current example if only because he's open and honest about it, to his credit), but I finally remembered to make a public note about it.

Some people seem to think that the value of a comment on a blog posting is related to whether or not it is anonymous.  There is an obvious reason for this.

If, to use an example, Ayende makes a comment about some topic concerning programming, the natural tendency of anyone who knows him and follows what he blogs/comments about is to assume that he is right, or at least to give extra credence to what he says because it is said by Ayende.

If, to use an example, jdn makes a comment about some topic concerning programming, the natural tendency of anyone (or at least, anyone within Alt.NET) who knows him and follows what he blogs/comments about is to assume that he is wrong, or at least to give lesser credence to what he says because it is said by jdn.

This is a natural psychological fact.  It is also right up there on the list of Logic 101 Fallacies. 

The truth/validity/coherence (all different things) of a statement is, logically, completely disconnected from the person who makes the statement.  There is no debate about this, by the way.  It is very hard sometimes to reconcile the nature of human psychology and the facts of logic.  If I have a question about a topic concerning programming, I will, naturally, give more credence to something Ayende says than something some anonymous person says.  It is still a logical fallacy to do so.  Similarly, to take into account the anonymity of a blog comment (or lack thereof) is a logical fallacy.

posted @ Tuesday, August 19, 2008 7:39 PM | Feedback (9)
Saturday, August 09, 2008
Signs You Might Be Working For A Client That Isn't On The Cutting Edge #3 in a series

You are told "those unit tests are really good, but we don't have time to keep doing them, so just update the functionality, and if you have time later, write the unit tests."

Um, I don't quite think that's right.

posted @ Saturday, August 09, 2008 9:33 PM | Feedback (1)
Friday, August 08, 2008
King Crimson, 08/08/2008, Chicago, IL Show Recap

Heading off to the last show (for me).  5 in 7 days.  I think it was worth it.

Going to include all the random thoughts from the 5 shows.

Sat next to a guy who drove 3 hours to see all the Park West shows.  He talked about seeing them in the 80s and how he missed all but 20 minutes of the last time they were in town.  We compared notes of previous song lists.  Some debate over whether 'Sleepless' was played in the Wed. show. 

Watched a couple of people take pictures with their phones in the pre-show.  No one was tossed but got a good talking to.  Some guy a few seats down took a photo during the show, got a good talking to as well.

Funny was that Levin took pictures of the crowd, as he had in previous shows.

Side note:  I've always thought of Belew as 'the other guitarist' paling in comparison to Fripp.  Having seen all these shows, I have to admit that this is unfair.  He's a 'different' guitarist from Fripp, but excellent in his own way.

On stage, there is a red/orange/pink (hard to tell with the lighting) tackle box.  Been there each show.  One of the roadies tonight reached into it and looks like he pulled out something to adjust the orange Belew guitar, the whammy bar in particular.  Which is interesting (if at all) because Belew only played his silver guitar.

Fripp played wearing headphones every night.  I don't remember him wearing them the last time they were in town.

Overall, I thought the sound was very good.  I guess there were moments where I didn't hear every note Levin played, but otherwise, I can't complain.

Belew came onstage again with a suit jacket that he eventually discarded.  It was warm, man.

Song list:

1) Drum duet

2) ConstrucKtion of Light, pt. 1

3) ConstrucKtion of Light, pt. 2

4) Neurotica (only time Belew used a slide)

5) Red

6) Three of a Perfect Pair

7) Dinosaur

8) Talking Drum

9) Larks' Tongues in Aspic, pt. 2

10) Walking on Air

11) B'boom

12) Frame by Frame

13) Level Five

14) Sleepless

15) Indiscipline

Encore #1

16) drum duet

17) Thela Hun Ginjeet (Belew gets on his knees and plays the pedals by hand)

Encore #2

18) Elephant Talk

19) Vroom

20) Coda: Marine 475

 

I can't say that I ever thought 'Indiscipline' or 'Sleepless' were the greatest of songs by them, but they played the hell out of them.  Tremendous.

At the end of Encore #2, they turned up the lights while the band was onstage and they gave a good 'shout-out' to us.  I still would have liked a slightly longer show, but it's a minor complaint. 

Who knows when they will be back again.  Very good to see them again.

posted @ Friday, August 08, 2008 11:09 PM | Feedback (3)