My name is James Bigler. I am a software developer. This blog is mostly a collection of links related to software programming and technology.
Search This Blog
Wednesday, December 22, 2010
Monday, December 13, 2010
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...
Friday, December 10, 2010
Yesterday's news | What's new in NHibernate 3.0 GA
Sunday, December 5, 2010
Brown bags, Circles, Top Code and Lanterns: Knowledge Management in Scrum - a session at Øredev 2010
19 1/2 Things to Make You a Better Object Oriented Programmer - Greg Young on Vimeo
Saturday, December 4, 2010
Agile Release Planning from Top to Bottom - a session at Øredev 2010
Friday, December 3, 2010
Math Geek Coder: Advanced Domain Model queries using Linq
Thursday, December 2, 2010
Client-side properties and any remote LINQ provider » DamienG
A .NET developer in Redmond
Tuesday, November 30, 2010
Wednesday, November 24, 2010
Examining the Agile Manifesto
Tuesday, November 23, 2010
Thursday, November 11, 2010
Savvy Duck: Javascript Classes: Design Patterns, MVC and Ext 2.0
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.
How to apply a MVC architecture to a ExtJS project ? - Stack Overflow
Wednesday, November 10, 2010
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.)
Thursday, November 4, 2010
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.
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.
Wednesday, November 3, 2010
SOLID Motivational Calendar - new ThoughtStream("Derick Bailey"); - Los Techies : Blogs about software and anything tech!
The LosTechies blog of Derick Bailey. Discussing all things progressive, in the .NET arena, with tendencies towards Ruby and other environments.
Friday, October 29, 2010
http://martinfowler.com/articles/itsNotJustStandingUp.html
Thursday, October 28, 2010
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.
Thursday, October 21, 2010
I'm getting an SQLite "at most 64 tables in a join" error in my tests.. do I do anything wrong? :) #nhibernate #sql
I'm getting an SQLite "at most 64 tables in a join" error in my tests.. do I do anything wrong? :) #nhibernate #sql
Wednesday, October 13, 2010
HunabKu: Improving ADO exception management in NHibernate
Wednesday, September 29, 2010
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.
Tuesday, September 28, 2010
jamesshore: Reminder: my Art of Agile training courses start in two weeks. Limited seats. Register http://bit.ly/cr8SlE Discount: SAODISC
jamesshore: Reminder: my Art of Agile training courses start in two weeks. Limited seats. Register http://bit.ly/cr8SlE Discount: SAODISC
Wednesday, September 1, 2010
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.
Friday, August 27, 2010
ExtJs. Preconfigured class. « Andrew Golik's blog
Monday, August 9, 2010
Container-friendly domain events - Jimmy Bogard - Los Techies : Blogs about software and anything tech!
Los Techies - Code like a rabid donkey!
Tuesday, August 3, 2010
The shortest amount of time that could possibly work | ext.IT
How to shrink your iterations to find the shortest time-frame in which you can get something of value to the business done.
Friday, July 30, 2010
HunabKu: NHibernate LINQ provider extension
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
Wednesday, July 28, 2010
Solitude and Leadership: an article by William Deresiewicz | The American Scholar
If you want others to follow, learn to be alone with your thoughts
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
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.
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#.
Wednesday, June 30, 2010
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.
Monday, June 28, 2010
Friday, June 25, 2010
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.
- All the original code for my website (which my demo was based upon) can be found on my GitHub account. This includes the JSpec specs as well as the Cucumber specs. The JSpec specs are in /public/jspec/unit/ where the page (Dom.html) that executes it is located one level higher. The JavaScript file under test is in /public/javascripts/ and the page containing it all is /public/index.htm.
- My actual website, so you can see the results, and also the JSpec specs and the JSLint output.
- JSpec is the JavaScript testing framework of my choice
- The slightly adjusted Dom.html page that includes a timer to facilitate the continuous testing.
- My own addition to better deal with animations, as the JSpec library doesn’t really threat these correctly.
- JSLint is a cool tool to get rid of smaller syntax errors and check the code quality.
- My JSLint execution page, not very special, but hey here it is.
Questions?
If you have any questions, then please let me know, I am more then happy to help where I can.
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.
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.
Monday, June 21, 2010
Using FxCop: A Short Tutorial
An in-depth tutorial on customizing Microsoft FxCop.
Wednesday, June 16, 2010
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.
Tuesday, June 15, 2010
Domain Language /Model Exploration Process
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.
Friday, June 11, 2010
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.
Tuesday, June 8, 2010
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
Thursday, June 3, 2010
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.
YouTube - RSA Animate - Drive: The surprising truth about what motivates us
Wednesday, June 2, 2010
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 . 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.
Sunday, May 30, 2010
alphaITjournal: Breidenbach - Getting to a Hire Level, Part Deux
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.
Thursday, May 27, 2010
Monday, May 24, 2010
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
Fluent NHibernate 1.1 Released - Fluent NHibernate
Fluent NHibernate, a statically compiled alternative to NHibernate's standard hbm xml mapping.
Tuesday, May 18, 2010
But Sometimes 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
Train Wreck 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
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.
My team keeps breaking their promises. What can I do?
Execution – actually having the team get things done– requires people to :
- Say what they will do
- Mean it (be committed)
- Do it
Everyone likes to do #1. Only some do #2. Great teams also do #3.
Tuesday, May 11, 2010
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
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
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.
Monday, May 10, 2010
Lessons Learned: Five Whys
Saturday, May 8, 2010
Wednesday, May 5, 2010
Behavioral Interview Question Database
Behavioral Interview Question Database
Unit vs Acceptance Test
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?
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
Thursday, April 22, 2010
Comic for April 22, 2010
Wednesday, April 21, 2010
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.
Tuesday, April 20, 2010
Monday, April 19, 2010
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.
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.
Sunday, April 18, 2010
Friday, April 16, 2010
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.
Sunday, April 4, 2010
Don't get all your stories done?
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
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.
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.
Friday, April 2, 2010
Thursday, April 1, 2010
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.
Important function of developers testing
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
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.
Sunday, March 28, 2010
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?
Thursday, March 25, 2010
Monday, March 22, 2010
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.
Saturday, March 20, 2010
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.
HunabKu: ConfORM: “Mapping” Asp.Net Membership
Insights You Can Use » Blog Archive » Real-time Feedback
Wednesday, March 17, 2010
Coding Instinct: NHibernate Tip: Use set for many-to-many associations
A Past-Blast: Think Less, Act More, Stay Awake, Ship Code | Situated Geekery
Towards a Way of Excellence
Thursday, March 11, 2010
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?
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.
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.
Wednesday, March 10, 2010
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.
Strengthening your domain: Encapsulated collections - Jimmy Bogard - Los Techies : Blogs about software and anything tech!
Los Techies - Code like a rabid donkey!
Elegant Code » Soft Skills are Actual Skills
Soft Skills are Actual Skills
Announcing Ext JS 3.2 beta – Multisort, Transitions and Composite Fields — Ext JS Blog — JavaScript Framework and RIA Platform
Tuesday, March 9, 2010
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.
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?
Coaching Minor Mistakes | Situated Geekery
If You Yourself Fear Making Mistakes,
You Won’t Help Anyone Else.
Monday, March 8, 2010
The Socratic Method
Coaching: The Perfect Rational Argument | Situated Geekery
Awesome line - Is this obviously stupid?
Socratic Method Considered Dangerous When...
The companion website for the book Agile Management for Software Engineering - applying the Theory of Constraints for Business Results - by David J. Anderson published by Prentice Hall PTR
Sunday, March 7, 2010
Ownership
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
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);
}
}
ASP.NET Routing… Goodbye URL rewriting? « Chris Cavanagh’s Blog
Monday, March 1, 2010
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
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
Sunday, February 28, 2010
Is Fit Dead? A debate on Twitter « Eric Lefevre-Ardant on Java & Agile
Saturday, February 27, 2010
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.
Friday, February 26, 2010
Microsoft Word - Agile Survey Results [2].doc - Powered by Google Docs
Thursday, February 25, 2010
Being Agile?
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
James Shore consults and writes about high performance software development for teams who are willing to be great.
James Shore: The Art of Agile
James Shore consults and writes about high performance software development for teams who are willing to be great.
XP Practice: Slack | Agile Software Development
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.
Wednesday, February 24, 2010
Tuesday, February 16, 2010
setmy.browsersize.com
A nifty online tool for setting your browser size while doing Web design.
Sunday, February 14, 2010
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
Saturday, February 13, 2010
Business Primitives (1/2) - Dru Sellers - CodeBetter.Com - Stuff you need to Code Better!
Bookmark this on Delicious - Saved by joesegars to computer programming ddd design - More about this bookmark