Search This Blog

Monday, December 13, 2010

Using JSON.NET as a default serializer in WCF HTTP/Web/REST (vNext) - Christian Weyer's Blog

link -> Using JSON.NET as a default serializer in WCF HTTP/Web/REST (vNext) - Christian Weyer's Blog
Just yesterday a client walked up to me and asked how to replace the default JSON serializer in WCF’s web programming model (whether in .NET 3.5 or 4.0). Honestly, this is not too easy – if you aim at adding a different JSON engine - like the wonderful JSON.NET – to the WCF pipeline you won’t have too much fun. A lot of plumbing works needs to be done. A more practical approach is to use Message or Stream as the response/request type and apply the serialization/deserialization inside the service façade operation implementation. I thought there should be an easier...
Jerry thought you might be interested in this

Wednesday, November 24, 2010

Examining the Agile Manifesto

link -> Examining the Agile Manifesto
I need to memorize these. The practices don't mean anything unless we are working towards these things.

Thursday, November 11, 2010

Savvy Duck: Javascript Classes: Design Patterns, MVC and Ext 2.0

link -> Savvy Duck: Javascript Classes: Design Patterns, MVC and Ext 2.0
I confess I just scanned this one, but I hope to go back and try to understand it when I am less tired.

MVC and EXTJS – #2 (Config) « Tyson Lloyd Cadenhead – UI / UX Developer

link -> MVC and EXTJS – #2 (Config) « Tyson Lloyd Cadenhead – UI / UX Developer
Tyson Lloyd Cadenhead is a user interface and user experience developer who blogs about usability and JavaScript.
He hasn't really showed anything cool yet, but I am subscribing and hopefully he will keep going

How to apply a MVC architecture to a ExtJS project ? - Stack Overflow

link -> How to apply a MVC architecture to a ExtJS project ? - Stack Overflow
javascriptmvc uses jquery. Was poking around to see if there was something similar for extjs. Customization meeting was scary. Ticking time bomb.

Wednesday, November 10, 2010

Pourquoi, pas comment

link -> Pourquoi, pas comment

A couple of weeks ago I was in Paris with Neal Ford to speak at USI 2010. Our talk looked at some aspects of why agile works. Rather than look at the techniques which is how agile does its thing, we looked more at some of the underlying forces - focusing on communication and feedback. The video is now available. (The introduction is in French but the talk is in English. Sadly my French is barely sufficient to order at a restaurant.)

Good video. I enjoyed the part about pair programming and two people make one brain.

Thursday, November 4, 2010

Duck : Delete Update Create Killer

link -> Duck : Delete Update Create Killer
Duck is a kind of ORM oriented toward Delete Update Create.
Don’t ask Duck to load data in memory, it simply can’t.
You simply express how data should change based on current row content and values that you’ll pass.
It avoids the first roundtrip to the database, and make shorter code to express the change.
Wacky

James Shore: Interesting Agile UX Experience Report

link -> James Shore: Interesting Agile UX Experience Report
James Shore consults and writes about high performance software development for teams who are willing to be great.
Cool Stuff

Friday, October 29, 2010

http://martinfowler.com/articles/itsNotJustStandingUp.html

link -> http://martinfowler.com/articles/itsNotJustStandingUp.html
I read in one of my books that the deeper principle of stand-up meeting is that it is a commitment meeting rather than a status meeting. I feel like ours are almost exclusively status meetings.

Thursday, October 28, 2010

Tale of a Yo-Yo Manager

link -> Tale of a Yo-Yo Manager

There is much more to empowering a team than simply stating “You’re empowered.” Consider the three Ws of empowerment: “what,” “when,” and “why” when creating boundaries that define which decisions are the team’s and which need management approval.

Cool story

Wednesday, September 29, 2010

InfoQ: Fighting Layout Bugs

link -> InfoQ: Fighting Layout Bugs
Michael Tamm offers solutions for automatic testing of a web application’s presentation layer through HTML and CSS validation and by detecting layout bugs using JavaScript and image processing.
Jason will love this

Wednesday, September 1, 2010

James Shore: Let's Play: Test-Driven Development

link -> James Shore: Let's Play: Test-Driven Development
James Shore consults and writes about high performance software development for teams who are willing to be great.
Hope he gets enough comments that he keep this up

Tuesday, August 3, 2010

Friday, July 30, 2010

HunabKu: NHibernate LINQ provider extension

link -> HunabKu: NHibernate LINQ provider extension
Pretty cool idea to extend LINQ to generate your own SQL

Best Monitor Stand Ever

link -> Best Monitor Stand Ever

white trash repairs - Best Monitor Stand Ever

Submitted by: Unknown

It also functions a nice place for you LEGO construction dudes and dudettes to hang out, while you use a CAD program to come up with your next project for them. – Frankie Fix-It


beats my stack of paper

Wednesday, July 28, 2010

Friday, July 9, 2010

This configuration section cannot be used at this path. This happens when the section is locked at a parent level. Locking is either by default - ASP.NET Forums

link -> This configuration section cannot be used at this path. This happens when the section is locked at a parent level. Locking is either by default - ASP.NET Forums

I was able to resolve this issue in my own Windows 7 webserver using the Microsoft Web Installer Platform (http://www.microsoft.com/web/downloads/platform.aspx). 

  • From the GUI or finding it in the IIS MMC manager, Click on the Web Platform tab
  • Then click on the Customize link below the Frameworks and Runtimes options. 
  • Select ASP.NET and ASP.NET MVC 1.0 (if necessary)
  • and then click install. 

Should resolve your issue.  You can also probably do this without using the Web Installer Platform, but this was specifically the way I was able to resolve the same problem.

Had to do this to run sitemanager locally on IIS

Verify JavaScript syntax using C#

link -> Verify JavaScript syntax using C#
In the past few days, I’ve worked on finding a way to do static code analysis on JavaScript files.The resaon is that I want to apply some sort of binary and source code checking like FxCop and StyleCop provides for C#.
Would be cool to do something similar to this for our project. The IronJS project looks cool and might work better than JScript.net

Wednesday, June 30, 2010

Using Fluent NHibernate With Legacy Databases

link -> Using Fluent NHibernate With Legacy Databases

So lets talk about the relevant Fluent Nhibernate features:

  • Schema("viplookups.dbo");

The first item of interest is the Schema() method. The schema function tells NHibernate to pull this entity from a specified database. In my case this database exists on the same SQL Server. So I didn't need to try it on another server. If you have knowledge of this working on another server leave a comment here.

  • Table("bnkroute");

The next item of interest is the Table() method. This is pretty straight forward Fluent NHibernate and specifies the legacy table to pull your data from.

  • SchemaAction.None();

The next interesting feature is SchemaAction.None(). When developing our applications I have an integration test that is used to build all our default schema. I DONT want these table to be generated in our schema, they are external.  SchemaAction.None() tells NHibernate not to create this entity in the database.

So that's it. A simple combination of Fluent NHibernate features to access data from a legacy database properly.

I didn't know about the Schema and SchemaAction commands. Schema may help with the warehouse

Friday, June 25, 2010

Test-Driven Javascript

link -> Test-Driven Javascript

Test-Driven JavaScript

In this talk my goal was to demonstrate as real as possible what it would be like to Test Drive your JavaScript Development, and to help you see that there really isn’t any reason why not to develop in this manner. And because of that I did not rehearse the actual coding exercise till perfection. I mean I know it was possible to do what I wanted, but I wanted to show the whole thinking about what to do as well, not just paste in pieces of code. Because that would not have been anywhere close to actual development. So needless to say I ran in a few small issues, but thankfully nothing that I couldn’t solve and if anything this was as real as it gets. So I am happy with this one. You can see the Test-Driven JavaScript recording here and also all the other recordings from NDC2010 here (well they will be there shortly, amazing how many they already made available).

How do I get started?

So after you have seen the recording and gotten all excited about Test Driving your JavaScript Development but you don’t really know where to go from here. Here is a small list of recourses and stuff that have helped me.

Questions?

If you have any questions, then please let me know, I am more then happy to help where I can.

Tried to watch video but download speed was really bad

StoryQ

link -> StoryQ
StoryQ is a portable (single dll), embedded BDD framework for .NET 3.5. It runs within your existing test runner and helps produce human-friendly test output (html or text). StoryQ's fluent interface adds strong typing, intellisense and documentation to your BDD grammar.
Another Given, When, Then test framework. Seems kind of weird to me at first

Bulk processing with NHibernate

link -> Bulk processing with NHibernate

On a recent project, much of the application integration is done through bulk, batch processing.  Lots of FTP shuffling, moving files around, and processing large CSV or XML files.  Everything worked great with our normal NHibernate usage, until recently when we had to process historical transactional data.

The basic problem is that we had to calculate historical customer order totals.  Normally, this would be rather easy to do with a SQL-level bulk update.  However, in our case, we had to process the items one-by-one, as each transaction could potentially trigger an event, “reward earned”.  And naturally, the rules for this trigger are much too complex to attempt to do in straight T-SQL.

This meant that we still had to run our historical feed through the domain model.

Cool multi-query thing I forgot about

Monday, June 21, 2010

Using FxCop: A Short Tutorial

link -> Using FxCop: A Short Tutorial
An in-depth tutorial on customizing Microsoft FxCop.
Pretty neat that it lets you write custom rules. For example don't pass repository our UnitOfWork in aggregate root

Wednesday, June 16, 2010

SourceForge.net: Project Statistics for NHibernate

link -> SourceForge.net: Project Statistics for NHibernate
Get NHibernate at SourceForge.net. Fast, secure and free downloads from the largest Open Source applications and software directory. .NET port of the excellent Java Hibernate which provides Object/Relational mapping to persist objects in a relational database.
Has all development stopped? 600 files this year compared to 6000 files in previous years

Dan Gilbert asks, Why are we happy? | Video on TED.com

link -> Dan Gilbert asks, Why are we happy? | Video on TED.com

Tuesday, June 15, 2010

Domain Language /Model Exploration Process

link -> Domain Language /Model Exploration Process
Draft of whitepaper EE is working on to describe how his company incorporates modeling into an agile process. Goes along with the video I shared earlier.

Eric Evans: Folding Design into an Agile Process

link -> Eric Evans: Folding Design into an Agile Process
The talk "Folding Design into an Agile Process" was originally given by Eric Evans at QCon London 2010. We recorded it at a meeting of DDD-NYC SIG in May of 2010, shortly after the conference.

This talk was originally presented by Eric Evans at QCon London 2010. The recording is made during a meetup of DDD-NYC SIG in May of 2010.

Abstract

After a decade of heavy process, the Agile revolution of the late '90s threw off the dead hand of big upfront design. The bloody purge that followed was needed!

Click here to view Flash content.

I only got through the first 45 minutes but so far I like where he is going. He definitely describes some situations we have experienced ourselves.

Friday, June 11, 2010

Readability - An Arc90 Lab Experiment

link -> Readability - An Arc90 Lab Experiment
Readability is a simple tool that makes reading on the Web more enjoyable by removing the clutter around what you're reading.
Awesome bookmarklet. Gets rid of everything but the actual article you are reading

Tuesday, June 8, 2010

Finger on nose: how to make fast decisions « Scott Berkun

link -> Finger on nose: how to make fast decisions « Scott Berkun
There is an old adage in leadership circles: sometimes it doesn't matter what you decide, as long as you decide quickly and take action. Standing in front of an
Funny way of playing "Not it"

Thursday, June 3, 2010

Rietveld, or “How to revamp your code review process”

link -> Rietveld, or “How to revamp your code review process”

For me, code reviews have traditionally been one of those aspects of software development that fall into the “good idea; bad execution” category. It’s something that I know we’re supposed to do but when someone says, “let’s do a code review”, my first reaction is usually to make a cross with my fingers and start yelling “THE POWER OF CHRIST COMPELS YOU!” at them.

code reviews without meetings, uses software to track comments on revision diffs

YouTube - RSA Animate - Drive: The surprising truth about what motivates us

link -> YouTube - RSA Animate - Drive: The surprising truth about what motivates us
Please Please Watch this one. This explains really well why we need our team to be self organizing and why we can't let the command and control norm to continue. Plus the drawings our cool and fun.

Wednesday, June 2, 2010

C#5 and Meta-Programming

link -> C#5 and Meta-Programming
We've been extremely busy the last months in order to have a well polished release of NDepend v3 completely integrated in VS 2010, 2008 and 2005.

Now, having NDepend as a companion in all my VS instances makes each of my programming day bright Smile. But it is already time to think about what's next. We have tons of plans and you are welcome to publish all your secret wishes for NDepend vNext in the comment of this post.

eval c# sweet

Sunday, May 30, 2010

alphaITjournal: Breidenbach - Getting to a Hire Level, Part Deux

link -> alphaITjournal: Breidenbach - Getting to a Hire Level, Part Deux
like the idea of asking them to code something before they come

Summary . Agile Transitions . User Groups . Thoughtworks Studios Community

link -> Summary . Agile Transitions . User Groups . Thoughtworks Studios Community
Agile Transitions is an open forum that allows community members to discuss a range of executive-focused topics, including IT governance, organization, budgeting and financing, risk management, HR issues and enterprise adoption and integration.

Monday, May 24, 2010

Webcasts

link -> Webcasts

I will be doing a series of webcasts starting tomorrow at 12:00 EST

I figured this timing is the best because it allows people from Europe to the Pacific to have it within "working" hours.

 

The first webcast will be "The Ubiquitous Language is not ubiquitous". To join the meeting come to https://global.gotomeeting.com/join/153015861. It will also be recorded and placed online (viddler maybe?) to be posted on the blog after.

I will be doing one of these every week or two until further notice. Feel free to drop ideas here in comments for future webcasts

 

Greg Young podcasts

Fluent NHibernate 1.1 Released - Fluent NHibernate

link -> Fluent NHibernate 1.1 Released - Fluent NHibernate
Fluent NHibernate, a statically compiled alternative to NHibernate's standard hbm xml mapping.
I hope they added some support for the things we found missing.

Tuesday, May 18, 2010

But Sometimes Ask

As a followup to my previous post, the book Growing Object-Oriented Software Guided by Tests makes the point that you can't always tell sometimes you do have to ask.

Some reasons for asking include

  • getting information from values and collections

  • using a factory to create new objects

  • asking objects about their state when searching or filtering


When asking though it is important not to expose the internal structure of your object. For example instead of this code


carriage.getSeats().getPercentReserved() < percentReservedBarrier


Try this.


carriage.hasSeatsAvailableWithin( percentReservedBarrier )


The method hasSeatsAvailableWithin asks the question you really want answered instead of asking for the information to help you figure out the answer yourself. Or in other words you write a query that describes the intention of the calling object not just the implementation. Doing this moves the behavior to the most appropriate object, gives it an explanatory name, and makes it easier to test.

Monday, May 17, 2010

CraftyFella's Blog: Syntax Highlighting with Blogger Engine

link -> CraftyFella's Blog: Syntax Highlighting with Blogger Engine
Wanted to paste some code in my blog without losing indenting

Train Wreck Code

I read something funny today in Growing Object-Oriented Software Guided By Tests. They were explaining the Law of Demeter (Tell Don't Ask) and they called it train wreck code. For example they showed this code


((EditSaveCustomizer) master.getModelisable()
.getDockablePanel()
.getCustomizer())
.getSaveItem().setEnabled(Boolean.FALSE.booleanValue());


They called it train wreck because the getters are chained together like the carriages in a train. I have never heard that before but I thought it was pretty funny.

They recommended changing the code to something like this


master.allowSavingOfCustomisations();


They made a good point about the method name. They said it should say something about "what the method is for" not just "how it is currently implemented".

I ran into an example of this the other day. We trying to make a conditional more expressive so we changed this code


if (property !== "query")
{
key.addProperty(property);
}


to this


var isNotQuery = property !== "query";
if (isNotQuery)
{
key.addProperty(property);
}


The explaining variable what was put in to try and explain why we needed the conditional. When we looked at the code though it didn't really add much so we changed it to this


var isNotExtReservedWord = property !== "query";
if (isNotExtReservedWord)
{
key.addProperty(property);
}


Now you can see that "query" is a reserved word so it was filtered out.

Wednesday, May 12, 2010

The Myth of the Super Programming Language

link -> The Myth of the Super Programming Language
Good Quote "dumbfounded by the towering monument to mental masturbation"

Eliminating Comments: the Road to Clarity

link -> Eliminating Comments: the Road to Clarity

I used to think commenting my code was the responsible thing to do. I used to think that I should have a comment for just about every line of code that I wrote. After my first read of Code Complete, my views changed pretty drastically.

The proper use of comments is to compensate for our failure to express yourself in code. Note that I used the word failure. I meant it. Comments are always failures.

My team keeps breaking their promises. What can I do?

link -> My team keeps breaking their promises. What can I do?

Execution – actually having the team get things done– requires people to :

  1. Say what they will do 
  2. Mean it (be committed)
  3. Do it

Everyone likes to do #1. Only some do #2. Great teams also do #3.

This must have been in my subconscious when I asked the team to switch reporting continuous learning goal progress to the Friday stand up instead of one on one.

Tuesday, May 11, 2010

James Shore: "Art of Agile" Training Courses This October

link -> James Shore: "Art of Agile" Training Courses This October
James Shore consults and writes about high performance software development for teams who are willing to be great.

How does TDD affect design

I have heard many times the claim that you should try TDD because it helps you improve the design of your code. In fact many people claim the design benefit is more important the benefit you get from having an automated regression suite. However I have never been able to pin down how TDD helps your design. Reading Growing Objected-Oriented Code Guided by Tests I saw the first explanation of how TDD can actually improve design.


Thorough unit testing helps us improve the internal quality because, to be tested, a unit has to be structured to run outside the system in a test fixture. A unit test for an object needs to create the object, provide its dependencies, interact with it, and check that it behaved as expected. So, for a class to be easy to unit test,
the class must have explicit dependencies that can easily be substituted and clear responsibilities that can easily be invoked and verified. In software engineering terms, that means that the code must be loosely coupled and highly cohesive—in other words, well-designed.
When we’ve got this wrong—when a class, for example, is tightly coupled to distant parts of the system, has implicit dependencies, or has too many or unclear responsibilities—we find unit tests difficult to write or understand, so writing a test first gives us valuable, immediate feedback about our design. Like everyone, we’re tempted not to write tests when our code makes it difficult, but we try to resist. We use such difficulties as an opportunity to investigate why the test is hard to write and refactor the code to improve its structure. We call this “listening
to the tests”


So admittedly I don't think I understand all of this, but it gives me hope that the book will teach me more about these ideas as I go and I will learn to build better designs.

External vs Internal Quality

More information from Growing Objected-Oriented Code Guided by Tests. The book talks about external vs internal quality. External quality is how well the system meets the needs of its customers and users (is it functional, reliable, available, responsive, etc.). Internal quality is how well it meets the needs of its developers and administrators (is it easy to understand, easy to change, etc.).

It goes on to talk about how the different types of tests fall into these categories


Running end-to-end tests tells us about the external quality of our system, and writing them tells us something about how well we (the whole team) understand the domain, but end-to-end tests don’t tell us how well we’ve written the code. Writing unit tests gives us a lot of feedback about the quality of our code, and running them tells us that we haven’t broken any classes—but, again, unit tests don’t give us enough confidence that the system as a whole works. Integration tests fall somewhere in the middle.


I am not sure what type of test you would call our tests. My guess is it would be acceptance tests. The focus of our tests are mainly on making sure the software does what we would expect it to. The focus of our tests has not been on making sure the internal structure of our code is clean.

Wednesday, May 5, 2010

Behavioral Interview Question Database

link -> Behavioral Interview Question Database
Behavioral Interview Question Database
Good example questions

Unit vs Acceptance Test

Found another good idea from Growing Object-Oriented Software Guided by Tests

When we’re implementing a feature, we start by writing an acceptance test, which exercises the functionality we want to build. While it’s failing, an acceptance test demonstrates that the system does not yet implement that feature; when it passes, we’re done. When working on a feature, we use its acceptance test to guide us as to whether we actually need the code we’re about to write—we only write code that’s directly relevant. Underneath the acceptance test, we follow the unit level test/implement/refactor cycle to develop the feature


We have had the question come up a couple times about whether we should be writing unit tests and acceptance tests and what happens if they overlap. It seems like the book is advocating you do always do both. You write the acceptance test to guide you on whether you actually need the code you are about to write. The acceptance tests also show demonstrable progress on customer features. The unit tests support the developers by helping them write high quality code and protecting against regression failures while refactoring.

The book also recommends that acceptance tests should be end-to-end tests meaning they interact with the UI and not call directly into the code. On every check-in they

1) check out latest version
2) compile code
3) run unit tests
4) integrate and package system
5) perform a production like deploy into a realistic environment
6) exercise system through external access points by running acceptance tests

Tuesday, May 4, 2010

TDD Why Not?

Starting reading a new book "Growing Object-Oriented Software Guided by Tests"

The catch is that few developers enjoy testing their code. In many development groups, writing automated tests is seen as not “real” work compared to adding features, and boring as well. Most people do not do as well as they should at
work they find uninspiring.
Test-Driven Development (TDD) turns this situation on its head. We write our tests before we write the code. Instead of just using testing to verify our work after it’s done, TDD turns testing into a design activity. We use the tests to clarify our ideas about what we want the code to do. As Kent Beck described it to us, “I was finally able to separate logical from physical design. I’d always been told to do that but no one ever explained how.” We find that the effort of writing a test first also gives us rapid feedback about the quality of our design ideas — that making code accessible for testing often drives it towards being cleaner and more modular.


On all the teams I have been on "Tests" have always been a dirty word. Something you do because you are supposed to not something you do because you take pride in it. I hope the book goes into more about how TDD can help your designs. I think most people I work with do take pride in their designs and are always looking to improve in that area. Seeing TDD as a technique to improve designs might be something people could be inspired by. I think it will take more evidence though than just one statement.

Wednesday, April 28, 2010

2010 BLogic: Sufficient Design

link -> 2010 BLogic: Sufficient Design
This muddies the waters for me but I can kinda see what he is saying. My head hurts from too many lemon bars.

Thursday, April 22, 2010

Comic for April 22, 2010

link -> Comic for April 22, 2010

This reminds me of a discussion I had the other day about bugs. As long we can redefine what success is we don't have any problems. :)

Wednesday, April 21, 2010

Shhh. We’re Hunting Yabbits | Situated Geekery

link -> Shhh. We’re Hunting Yabbits | Situated Geekery

Yabbitting is when people go through a sequence of resistance statements, where each statement begins with the words, “Yeah, but…”.

Like this: “Yabbit, our shop does shrinkwrap, so what works for some web app isn’t gonna work here.” or “Yabbit, we all work 80 hours a week, so we don’t need slack.” or “Yabbit, if you write tests + code, that’s more code than if you just write code”.

Let’s try again: Ever get the yabbits when introducing a new idea?

Yes, I thought so.

Whoops this always gets me. I need to start writing down the list and memorize some short canned responses.

Monday, April 19, 2010

Coaching The Projector Rule | Situated Geekery

link -> Coaching The Projector Rule | Situated Geekery
You are done refactoring when you’re ready to project the code onto the wall for the whole team to see.
I love the part about nine year olds and his comment to actually project your code.

James Shore: Alternatives to Certifications: How to Hire the Agile Way

link -> James Shore: Alternatives to Certifications: How to Hire the Agile Way
James Shore consults and writes about high performance software development for teams who are willing to be great.
How to hire someone. Timely.

Friday, April 16, 2010

James Shore: Singed Egos

link -> James Shore: Singed Egos
We still got flamed in the forums, but they went from "you're obviously stupid," to "I'm not convinced." By Internet forum standards, that's high praise.
That is a funny comment. I am going to shoot for "I'm not convinced" from now on in our design discussions.

Sunday, April 4, 2010

Don't get all your stories done?

Read something interesting today in Scaling Software Agility

But at the high end, which looks like excellence incarnate, additional tuning may be required, because if a team truly hits 100 percent of stories on every iteration, then it is likely taking on too little work or deferring technical risk-laden stories until a later time. Effective agile teams typically run between 60 to 90 percent story acceptance, and even that percentage will vary significantly from iteration to iteration.


I have never read this before. I always thought you were supposed to get all of your stories done. He makes a good point that we are probably deferring technical debt to a later time. I thought you were supposed to do this though. I will keep looking around and see if other people agree with his statement.

Saturday, April 3, 2010

How I Learned to Let My Workers Lead

link -> How I Learned to Let My Workers Lead
It took me additional years to learn the art of coaching, by which, in a nutshell, I mean communicating a vision and then getting people to see their own behavior, harness their own frustrations, and own their own problems.
I like this quote too. 6 months ago I would thought coaching meant something very different then what this quote defines. I still don't how to do what he is saying, but I guess knowing what I want to learn how to do is a good start. Yay for progress!

How I Learned to Let My Workers Lead - Mark Needham - CodeBetter.Com - Stuff you need to Code Better!

link -> How I Learned to Let My Workers Lead - Mark Needham - CodeBetter.Com - Stuff you need to Code Better!
Every system is perfectly designed to get the results it gets.
I like this quote. Reminds me of Norm Kerth's prime directive. Don't blame people. Fix the process.

Thursday, April 1, 2010

James Shore: Stumbling Through Mediocrity

link -> James Shore: Stumbling Through Mediocrity

I wasn't really being asked "Does Agile scale?" (By now, though, we know the answer: yes.) What I was really being asked was, "Does Agile work in large, dysfunctional organizations? Can I keep doing all of the ineffective things I'm required to do and still say I'm Agile? I can't have a co-located team--it's out of my control. I can't have active, involved product managers--they're too busy. I can't create cross-functional teams--it would disrupt our reporting hierarchy. How does Agile scale to my situation?"

It doesn't... at least, not well. Welcome to Mediocrity.

Long way of saying you can't get something for nothing.

Important function of developers testing

Read this quote today from Scaling Software Agility by Leffingwell

There is another subtle benefit at work in the philosophy of agility. When developers are forced to think through how the code will be tested, or better, when developers realize that they themselves will have primary responsibility to assure that it passes the test, a new psychology emerges: developers write the code differently than they otherwise would have. In other words, the developers build systems that are inherently testable by building in the interfaces and methods they need to see inside their components to assure they work as prescribed. This is one of the key benefits of agile methods, and these inherently testable systems exhibit higher overall quality.


Lately I have been feeling like every time we write tests before we write the code we end up writing higher quality code. I have no real way to prove that through logic though. It just seems like having to write the test forces you to decouple your code and simplify your interfaces. This process of decoupling and simplifying gets your mind working and you end up writing better code.

Maybe we should start calling it DTT (Design Through Tests) instead of TDD. People might be more willing to give it a shot if they thought they were focusing on design instead of focusing on tests.

Strengthening your domain: Avoiding setters

link -> Strengthening your domain: Avoiding setters

As we start to move our domain model from an anemic existence towards one with richer behavior, we start to see the aggregate root boundary become very well defined.  Instead of throwing a bunch of data at an entity, we start interacting with it, issuing commands through closed, well-defined operations.  The surface of our domain model becomes shaped by the actual operations available in our application, instead of exposing a dumb data object that lets anyone do anything, and consistency and validity are a pipe dream.

Cool series

Sunday, March 28, 2010

Mary Parker Follett on Leadership

link -> Mary Parker Follett on Leadership

Came across this quote today–seems a propros the discussion of management and leadership.

It seems to me that whereas power usually means power-over, the power of some person or group over some other person or group, it is possible to develop the conception of power-with, a jointly developed power, a co-active, not coercive power.

If leadership does not mean coercion in any form, if it does not mean controlling, protecting or exploiting, what does it mean? It means, I think, freeing.  The greatest service [one person] can render another is to increase his freedom–his free range of activity and thought and his power of control.

Leader and followers are both following the invisible leaders–the common purpose.

Mary Parker Follett

What comes up for you when you read this?


Post to Twitter

I need to start reading this quote in the morning before the work day starts. I believe it. I just have a hard time sometimes remembering it in the moment.

Monday, March 22, 2010

John Resig - JavaScript Testing, Performance Analysis, and jQuery 1.4

link -> John Resig - JavaScript Testing, Performance Analysis, and jQuery 1.4
John Resig (of jQuery et al) presents a summary of the 2009 landscape of JavaScript test automation frameworks, including on build automation for CI. Also covers measuring JavaScript performance.
The transcript for this video talks about all kinds of testing frameworks I have never heard of. Pretty cool find. Thanks Jason for sharing this.

Saturday, March 20, 2010

Code Bubbles - A very interesting coding UX

link -> Code Bubbles - A very interesting coding UX

You never know where you are going to see something really interesting. I was passed this URL today: http://www.youtube.com/watch?v=PsPX0nElJ0k. You can read more about this research here. It never ceases to amaze - the level of creativity and ingenuity that exists in technology. Based on this guy's CV, he has worked a few internships at Microsoft. If Microsoft is smart, they will him a job asap! The idea of being able to break a class apart into multiple "bubbles" is interesting. What really intrigued me was that not only is there a big WOW factor in the UI's, usability was clearly a core design principle. I was wondering how debugging worked. No sooner did that thought cross my mind, and just like that, the demo turned to how breakpoints can be set for debugging.

 

Different way to build and IDE. Pretty cool

HunabKu: ConfORM: “Mapping” Asp.Net Membership

link -> HunabKu: ConfORM: “Mapping” Asp.Net Membership
Looks like ConfORM has ways to map classes that don't follow the normal conventions

Insights You Can Use » Blog Archive » Real-time Feedback

link -> Insights You Can Use » Blog Archive » Real-time Feedback
It sounds so simple when she says it. Not sure why I have trouble being more specific.

Thursday, March 11, 2010

Shu-Ha-Ri Considered Harmful? - Agile Coaching

link -> Shu-Ha-Ri Considered Harmful? - Agile Coaching
I'm uncomfortable with approaches that force students to follow agile practices without questioning. These approaches seem to violate the first value of the Agile Manifesto "Individuals and interactions over processes and tools." I question whether introducing agile software development techniques to people is anything like martial arts training. Software development is knowledge work and our aim is to build a team of reflective practitioners. To do this we need to engage with how people think about their work. Are techniques from physical arts that build muscle-memory really applicable here?
I like her ideas about not forcing and encouraging questioning, reflecting, and thinking for yourself. I also like Ron Jefferies ideas that they are called practices for a reason. You have to have done them. Practice makes perfect.

The Truth about BDD

link -> The Truth about BDD
Some of the brightest minds in our industry, people like Dan North, Dave Astels, David Chelimsky, Aslak Hellesoy, and a host of others, have been pursuing the notion that if we use a better language to describe automated requirements, we will improve the way we think about those requirements, and therefore write better requirements. The better language that they have chosen and used for the last several years uses the Given/When/Then form which, as we have seen, is a description of a finite state machine. And so it all comes back to Turing. It all comes back to marks on a tape. We’ve decided that the best way to describe the requirements of a system is to describe it as a turing machine.
Interesting theory

SpecFlow - workflow

link -> SpecFlow - workflow
Another fitnesse competitor

Acceptance Test Excel Addin

link -> Acceptance Test Excel Addin
Acceptance Test Excel Addin is a tool to author, execute and analyze acceptance tests in Excel. The tester write tests using Given-When-Then (Gherkin language). Developer implements the test steps in C# classes using attributes. It makes BDD fun for testsers and developers.
Pretty cool idea

Gojko Adzic » Concordion: Agile Acceptance Testing with free-form text

link -> Gojko Adzic » Concordion: Agile Acceptance Testing with free-form text
Fitnesse competitor

Wednesday, March 10, 2010

What is Projection? - Chris Missal - Los Techies : Blogs about software and anything tech!

link -> What is Projection? - Chris Missal - Los Techies : Blogs about software and anything tech!
I'm a Software Developer, a testing advocate, blogger, speaker (kinda), nerd, and disc golfer. I try to create quality, solid software and write about it when I think I've done something good.
I like this word projection

Strengthening your domain: Encapsulated collections - Jimmy Bogard - Los Techies : Blogs about software and anything tech!

link -> Strengthening your domain: Encapsulated collections - Jimmy Bogard - Los Techies : Blogs about software and anything tech!
Los Techies - Code like a rabid donkey!
Cool. We are already doing some of this stuff.

Elegant Code » Soft Skills are Actual Skills

link -> Elegant Code » Soft Skills are Actual Skills
Soft Skills are Actual Skills
More on giving feedback

Announcing Ext JS 3.2 beta – Multisort, Transitions and Composite Fields — Ext JS Blog — JavaScript Framework and RIA Platform

link -> Announcing Ext JS 3.2 beta – Multisort, Transitions and Composite Fields — Ext JS Blog — JavaScript Framework and RIA Platform
Love the multiple sorting, composite fields, and unit testing

Tuesday, March 9, 2010

How TDD and Pairing Increase Production | Situated Geekery

link -> How TDD and Pairing Increase Production | Situated Geekery

Sometimes I feel like some of these folks try too hard to soft-sell the excellent way presented by test-driven development (TDD) and pair programming (PP). A lot of alleged agilists make this argument:  you see, by PP’ing and TDDing, you will greatly increase your quality, so even though your productivity goes down, you get the coolest glow by knowing in your heart of hearts that you are a good citizen of the coding world.

I call bullshit.  Not only is it not true that you can trade internal quality for more features, it’s actually the exact opposite case:  the more productivity you seek, the higher you should raise your standard of internal quality.

Best one yet. Send this to every programmer you know.

Coaching Kicking and Screaming | Situated Geekery

link -> Coaching Kicking and Screaming | Situated Geekery

So.  We’re damned if we follow team or methodology rules too rigorously, and we’re damned if we just quietly ignore them.

The trick then, is hidden in that word quietly. What if we went ahead and broke a rule from time to time, but never break a rule quietly?

Another good point from Situated Geekery. Break rules when you have to but do it openly and learn from it.

Coaching Minor Mistakes | Situated Geekery

link -> Coaching Minor Mistakes | Situated Geekery

If You Yourself Fear Making Mistakes,

You Won’t Help Anyone Else.

I really like this blog. I do fear making mistakes and I see now that my attitude is not helping. I will work on this.

Sunday, March 7, 2010

Ownership

One of the concerns that comes up on my team when we talk about switching pairs is that people want to finish what they started. I read this quote today and made me think about this problem.

I like to break stories into tasks that individuals take responsibility for
and estimate. I think ownership of tasks goes a long way towards satisfying the human need for ownership.
—Beck [2005]


It got me thinking that if we could make our tasks small enough that these task could be completed in 3 hours then people would be able to finish their work before they switched pairs.

Can PHP read the hash portion of the URL? - Stack Overflow

link -> Can PHP read the hash portion of the URL? - Stack Overflow
So hash tags are never even sent to the server. That makes them pretty useless for booking marking links to widgets. Those bookmarks would only work if you were already logged in.

How to elegantly handle ReturnUrl when using UrlRewrite in ASP.NET 2.0 WebForms - Stack Overflow

link -> How to elegantly handle ReturnUrl when using UrlRewrite in ASP.NET 2.0 WebForms - Stack Overflow
protected void Application_EndRequest(object sender, EventArgs e)
{
   
string redirectUrl = this.Response.RedirectLocation;
   
if (!this.Request.RawUrl.Contains("ReturnUrl=") && !string.IsNullOrEmpty(redirectUrl))
   
{
       
this.Response.RedirectLocation = Regex.Replace(redirectUrl, "ReturnUrl=(?'url'[^&]*)", delegate(Match m)
       
{
           
return string.Format("ReturnUrl={0}", HttpUtility.UrlEncode(this.Request.RawUrl));
       
}, RegexOptions.Singleline | RegexOptions.IgnoreCase | RegexOptions.ExplicitCapture);
   
}
}
I tested the checked solution at the bottom. It gets rid of the lookingglass stuff out of our URL when you get redirected to the login page. Still can't figure out how to get a hash tag on the server. ASP seems to strip them out of the URL even without forms authentication or URL rewriting.

ASP.NET Routing… Goodbye URL rewriting? « Chris Cavanagh’s Blog

link -> ASP.NET Routing… Goodbye URL rewriting? « Chris Cavanagh’s Blog
Been trying to figure out to get hash tag into the return url when you bookmark a link to a specific widget, right now the hash tag is getting stripped off. Maybe I can get rid if the URL rewriter all together.

Monday, March 1, 2010

Signing nightmares - HORN Development | Google Groups

link -> Signing nightmares - HORN Development | Google Groups

I found this horrible hack on the web:

Solution of the assigning the strong name to the third part DLL by using
following command on visual studio command prompt.

E.g. Lets say the name of the third party DLL is myTest.dll.
Step 1: Dis-assemble the assembly
        ildasm myTest.dll /out:myTest.il

Step 2: Re-Assemble using your strong-name key
        ilasm myTest.il /res:myTest.res /dll /key:myTest.snk
/out:myTestSN.dll

This code work perfectly to assign strong name.

for verification you can use following command,
sn -vf myTestSN.dll
I was able to patch the lucene.net into the build and nhibernate.search and
more importantly castle.activerecord build now.

This is a short term and horrible hack.  If anyone fancies mentioning the
signing capability to nhibernate then I would be grateful.

Cheers

Paul Cowan

Hack for the signing problem?

I found this horrible hack on the web:

Solution of the assigning the strong name to the third part DLL by using
following command on visual studio command prompt.

E.g. Lets say the name of the third party DLL is myTest.dll.
Step 1: Dis-assemble the assembly
ildasm myTest.dll /out:myTest.il

Step 2: Re-Assemble using your strong-name key
ilasm myTest.il /res:myTest.res /dll /key:myTest.snk
/out:myTestSN.dll

This code work perfectly to assign strong name.

for verification you can use following command,
sn -vf myTestSN.dll
I was able to patch the lucene.net into the build and nhibernate.search and
more importantly castle.activerecord build now.

This is a short term and horrible hack. If anyone fancies mentioning the
signing capability to nhibernate then I would be grateful.

Cheers

Paul Cowan

Alternatives to Acceptance Testing

link -> Alternatives to Acceptance Testing

Saturday, February 27, 2010

James Shore: Large-Scale Agile

link -> James Shore: Large-Scale Agile
reusable software will form a new bounded context that will likely need its own team for ongoing enhancements and support. Users of the code won't be able to make changes when they need to. Instead, they'll have to make a hand-off to the other team and wait for the change, which increases delay and error. Even the team that originally developed the code will likely slow down, because the component will now be outside of their bounded context too.
Seems like we just talked about this on Friday with the stash

The Problems With Acceptance Testing

link -> The Problems With Acceptance Testing

Thursday, February 25, 2010

Being Agile?

I started reading Scaling Software Agility after finishing Scaling Lean and Agile Development. Here is a quote from the forward to Scaling Software Agility

We say “agile processes,” but actually the process, whether formally described or tacit in people’s heads, is not agile in itself. People can be agile; teams or organizations can be agile. You do not “do agile,” you “are agile.” If you only do agilewithoutbeing agile,you will fail and not know why, and you will be left blaming some book.


I could have sworn I read that same quote in Larman's book. I confess I still don't understand exactly what it means. Probably something like don't just follow the practices blindly. Try to understand the underlying principles and values and make sure you are staying true to them.

I am not sure which camp I fall into being or doing. I am working on it.

James Shore: The Art of Agile

link -> James Shore: The Art of Agile
James Shore consults and writes about high performance software development for teams who are willing to be great.
trying to determine if I am using the work slack properly

James Shore: The Art of Agile

link -> James Shore: The Art of Agile
James Shore consults and writes about high performance software development for teams who are willing to be great.
trying to determine if I am using the work slack properly

a better team

link -> a better team
our agile quiz online, only works for one person not a team though

XP Practice: Slack | Agile Software Development

link -> XP Practice: Slack | Agile Software Development
trying to determine if I am using the work slack properly

Cal Poly Supermileage Team Develops Car That Gets 2752.3 MPG | Inhabitat

link -> Cal Poly Supermileage Team Develops Car That Gets 2752.3 MPG | Inhabitat
A Green Design Blog, Sustainable Design Blog, Future-forward design for the world you inhabit - your daily source for innovations in sustainable architecture and green design for the home.
4 gallons would last me a year

Tuesday, February 16, 2010

Sunday, February 14, 2010

Andy Palmer » Making Feedback More Effective

link -> Andy Palmer » Making Feedback More Effective
Feedback is hard. This helps.

Current Project

link -> Current Project
FitNesse Narratives When we first heard of the "Given When Then" structure for writing acceptance tests, we knew instinctively that it was a better way of writing executable examples (wrapped in the structure of an automated test to reduce ambiguity). It was presented by Dan North and Joe Walnes at XP Day 2006 Since then a number of frameworks have risen up using that structure. Many of these can be written in plain text. Despite this, there are still many teams using FitNesse and the new table parsing Test System called SLIM. Unfortunately, the way FitNesse is used is, too often, as an .automated testing. tool rather than as a tool that documents desired software behaviours in a customer-friendly way (using automated tests). There is a substantial difference in practice, despite such subtle difference in the words. FitNesse own acceptance tests require explanation text surrounding the tables. We liken this to having comments in code, they are at risk of not being maintained and becoming disconnected from the executable content. They also add clutter to the page making it harder to understand the intent than if the descriptive words themselves were executable. For this reason - and because we find the "includes", variables and hierarchical wiki features of FitNesse useful, we wanted to give FitNesse users the opportunity to use the "Given When Then" style whilst enjoying the benefits of FitNesse.ht
This sounds cool. I wonder if they ever got it working. http://www.testingreflections.com/node/view/8142