Search This Blog

Sunday, January 31, 2010

Feature Teams

From Scaling Lean and Agile Development

Yet what is the journey of the software developer in many large product groups? After graduating from university, a young developer joins a large company and is assigned to a new or existing component. She writes the original code or evolves it, becoming the specialist. There she stays for years—apparently so that the organization can “go faster” by exploiting her one specialty—becoming a single point of success or failure, a bottleneck, and learning only a few new things. The university did not teach her good design, so where did she learn good from bad? How can she see lots of different code? How can she see opportunities for reusable code? How can she help elsewhere when there’s a need?


I have seen a lot of this. This was one of the main reasons I wanted to try an agile method at my job. I hate getting stuck being the expert on one thing. After a while I feel like you stop learning.

Perhaps the greatest irony of component teams is this: A mistaken belief behind their creation is that they yield components with good code/design. Yet, over the years we have looked closely at the code across many large products, in many companies, and it is easy to see that the opposite is true—the code in a component maintained by a single-component team is often quite poor.10 For example, we will sit to start pair programming with a component team member (who knows we’ll be looking for great code), and with a slightly apologetically grin the programmer will say, “Yeah, we know it’s messy, but we understand it.” What is going on?


I am guilty of this. There are definitely parts of my code that I would have to apologize to the person that has to come behind me. A lot of things we have identified solutions for but haven't made the time to fix them.

Product groups that repeatedly rely on single-skill specialists are limiting learning, reducing degrees of freedom, increasing bottlenecks, and creating single points of success—and failure. That does not improve long-term system throughput of highest market-valued features or the ability to change quickly.


Whenever I hear someone say we can't move this person because of this engine or that engine, I wish I could respond with quote as elegant as this one. The book makes some good arguments for what it calls feature teams. Teams that are comprised of individuals with varying skill sets that can take a feature and complete it from beginning to end. The teams stay together for years at a time so they can jell. The team works on one feature at a time to avoid the overhead of multitasking. The features the teams work on do not necessarily have to be for the same component instead they should work on the features that add the highest value for the customer.

Why is it hard to learn new areas of the code base? Usually, the symptom is incredibly messy code and bad design—a lack of good abstraction, encapsulation, constant refactoring, automated unit tests, and so forth. That should be a warning sign to increase refactoring, unit tests, and learning, not to avoid new people touching fragile code—to strengthen rather than to live with a weakness.


The common argument for component teams is that it is too hard for developers to learn new code. Here is a good reason why this is so hard. I like the idea of confronting the issue and solving the real problem instead of hiding the symptom.

Successfully moving from solo to shared code ownership supported by agile practices doesn’t happen overnight. The practice of component guardians can help. Super-fragile components (for which there is concern16) have a component guardian whose role is to teach others about the component ensures that the changes in it are skillful, and help remove the fragility. She is not the owner of the component; changes are made by feature team members. A novice person (or team) to the component asks the component guardian to teach him and help make changes, probably in design workshops and through pair programming. The guardian can also code-review all changes using a ‘diff’ tool that automatically sends her e-mail of changes. This role is somewhat similar to the committer role in open source development.17 It is another example of the lean practices of regular mentoring from seniors and of increasing learning.


This is an awesome idea on how to transition from the knowledge silos to collective code ownership. I think this could really help my company. He gives a bunch of other cool ideas as well including an architecture code police who continually reads the code looking for problems to bring up. Another idea is a lead architect who is initiator of a community of practice that keeps all the other architects talking. There is a similar role and community for other positions including testers, product managers, and coaches. Joint design workshops are used to tackle tough architectural problems.

This was an awesome chapter. It really gave a lot of good solutions. The beginning of the book was hard to read because of all the theory. I think it is worth it but I am scared people will give up before they get to this part of the book.

Saturday, January 30, 2010

Secret for success

According to Scaling Lean and Agile development the secret is good people and keeping things as simple as possible

there is a mass of statistics in product development identifying poor practices—poor in the sense of correlated with more failure, lower productivity, more delay, and so forth. For example, the COCOMO data shows that the capability of development people is the single most important factor for productivity, and low complexity the second most important. So, hiring lots of weak developers is not good for productivity. Executing a long sequential life cycle with a massive batch transfer of requirements (higher complexity) is not good for productivity. Research shows that iterative and incremental life cycles (for example, as used in Scrum) are correlated with less cost and schedule overrun than sequential development; therefore a large batch and long sequential life cycle case is not good for cost and schedule goals.


It is hard to argue with that. There is a huge difference in how easy it is to work with one person's code over another person's code. I would go so far as saying the best way to define a weak developer is one that does not understand how important it is to simplify their code and make it as readable as possible. Of course knowing you should do it and having the ability and determination to do it is another thing. My determination is growing but my ability is still trailing.

Systems

More from Clean Code

It is a myth that we can get systems “right the first time.” Instead, we should implement only today’s stories, then refactor and expand the system to implement new stories tomorrow. This is the essence of iterative and incremental agility. Test-driven development, refactoring, and the clean code they produce make this work at the code level.


Before we started this agile project I always felt guilty when I didn't get it right the first time. My managers would down their noses at me and make me feel like crap. I need to understand this stuff better so I can explain to them why they don't want me to try to build it right the first time.

Friday, January 29, 2010

Classes

More from Clean Code. I am loving this book.

We want our systems to be composed of many small classes, not a few large ones. Each small class encapsulates a single responsibility, has a single reason to change, and collaborates with a few others to achieve the desired system behaviors.


I have heard this one many times. I strive to accomplish this but I have not been very successful.

Classes should have a small number of instance variables. Each of the methods of a class should manipulate one or more of those variables. In general the more variables a method manipulates the more cohesive that method is to its class.


I have never heard of this before or even thought about it. It makes a lot of sense though. I wish I had of thought of it.

Just the act of breaking large functions into smaller functions causes a proliferation of classes. Consider a large function with many variables declared within it. Let’s say you want to extract one small part of that function into a separate function. However, the code you want to extract uses four of the variables declared in the function. Must you pass all four of those variables into the new function as arguments?

Not at all! If we promoted those four variables to instance variables of the class, then we could extract the code without passing any variables at all. It would be easy to break the function up into small pieces.

Unfortunately, this also means that our classes lose cohesion because they accumulate more and more instance variables that exist solely to allow a few functions to share them.

But wait! If there are a few functions that want to share certain variables, doesn’t that make them a class in their own right? Of course it does. When classes lose cohesion, split them!


This is very well written and ties together a lot of concepts from previous chapters.

The code in each class becomes excruciatingly simple. Our required comprehension time to understand any class decreases to almost nothing. The risk that one function could break another becomes vanishingly small. From a test standpoint, it becomes an easier task to prove all bits of logic in this solution, as the classes are all isolated from one another.


We want to structure our systems so that we muck with as little as possible when we update them with new or changed features. In an ideal system, we incorporate new features by extending the system, not by making modifications to existing code.


Here are the reasons why we bother with all this hard work. I always have to change my code to add new features, and I usually break something. I always remember when someone comes up with a design that handles a new special case without having to rework everything. Those are truly impressive feats by gifted programmers.

If a system is decoupled enough to be tested in this way, it will also be more flexible and promote more reuse. The lack of coupling means that the elements of our system are better isolated from each other and from change. This isolation makes it easier to understand each element of the system.


This is why I think TDD is so important and wished we practiced it in my group. Not because TDD will guarantee you never have bugs, but because TDD forces you to create designs that are decoupled enough to allow testing. These decoupled designs will end up being easier to understand than a design where you never had to consider how you would test it.

NHibernate new feature: No proxy associations

link -> NHibernate new feature: No proxy associations
Yay! They should make this the default.

Thursday, January 28, 2010

More Clean Code

Some more quotes from Clean Code

If you are tempted to return null from a method, consider throwing an exception or returning a SPECIAL CASE object instead.


I like this idea. I have heard them called Null Objects before as well. Every time I read about them they sound like such a great idea. I struggle many times to implement them though. I think null pointer exceptions are difficult to keep from happening so I am going to keep trying to learn how to use these guys.

Code at the boundaries needs clear separation and tests that define expectations. We should avoid letting too much of our code know about the third-party particulars. It’s better to depend on something you control than on something you don’t control, lest it end up controlling you.


I like this idea of boundaries. We are trying to figure out how one team can customize the work of another team. My wish is that the customization team would create a boundary around our code and write all of their customizations around that boundary. This would allow us to continue to refactor and improve our code without worrying about breaking them.

It is unit tests that keep our code flexible, maintainable, and reusable. The reason is simple. If you have tests, you do not fear making changes to the code! Without tests every change is a possible bug. No matter how flexible your architecture is, no matter how nicely partitioned your design, without tests you will be reluctant to make changes because of the fear that you will introduce undetected bugs.


This is a great quote. I can remember many times the fear they are talking about. I was scared to make things better and just kept hacking away making things harder to understand.

Perhaps a better rule is that we want to test a single concept in each test function. We don’t want long test functions that go testing one miscellaneous thing after another.


I worked on the mother of ugly tests the other day. It had a crazy event callback that would allow it to test fourteen completely different scenarios all in the same test. It was so complicated and hard to understand.

Unit tests should be written just before the production code that makes them pass. If you write tests after the production code, then you may find the production code to be hard to test. You may decide that some production code is too hard to test. You may not design the production code to be testable.


I have heard this argument so many times that X type of code is just not testable. I agree with the author. We just sometimes choose to write code in a way that is not testable.

sp_trace_create (Transact-SQL)

link -> sp_trace_create (Transact-SQL)
Might be able to use this to run traces on one of our databases and setup an automated job of tracking if we have a query with a high duration, reads, CPU, or n + 1 problem.

Wednesday, January 27, 2010

Queuing Theory

I have been reading the book Scaling Lean and Agile Development. This chapter I am on is deep, and my head is spinning. It is all about queuing theory.

As utilization goes up in a system with lots of variability, average cycle time gets worse, not better.


I think what he is talking about here is that it is better to not try to push your people to be 100% utilized. If you do this you will actually get less work done. Imagine an interstate where you need to get 50,000 cars home from work. It is better to stagger them and only let so many go at a time. If you put them all on the road at the same time, no one is going to go anywhere. You will just sit there in a traffic jam. So it is better to waste a little time by staggering because you will more than make up for the waste in the long run. The same thing goes with scheduling people. You need to give them a little slack time to keep things running smoothly.

As work-item size or batch size increases, variability increases. ... The reality is a nonlinear increase in cycle time.


What he is saying here is that you can prove mathematically that you need to keep your stories small. There is non-linear increase in how long takes to build something if you increase the size of the story. So if you had an 8 point story that normally takes a week and increased that to 80 points, it would take a lot longer than 10 weeks to complete. His estimate is that if your people are 50% utilized then it could take as long as 50 weeks.

To reduce average cycle time, all apparently ‘single’ large items (requirements) in the Product Backlog need to be (eventually) split into many small and roughly equal-sized items. This is easily achieved by representing backlog items as user stories.


So this is basically saying that large items are bad and variably sized items are bad. You need to chunk everything up into little equally sized nuggets.

If you are a business person who has invested ten million euros to create a gigantic pile of partially done Stuff sitting on the floor, not making any money, you walk by it and see it and you feel the pain and urgency to get it moving. And you think about no longer making big piles of partially done stuff. But product development people do not really see and feel the pain of their queues.


Basically he is saying here to not build a big pile of functional specifications or a big pile of code that is not in production. It is better to build a small piece of functionality and get it out there instead of letting your investment sit there wasting away. This is why we use cards in release planning so people can see how much work they are asking for. When you put these requirements in a computer system it is hard to see the vastness of what you are asking for. Cards on a wall don't lie though.

A metaphor shared in lean education: lake and rocks. The depth of the water may represent the inventory level, batch size, iteration length, or cycle time. When the water is high (large batch or inventory size, or iteration length), many rocks are hidden. These rocks represent weaknesses.


This is a cool metaphor. If you develop your code for too long without releasing there will be big problems lurking under all that code. If you release soon you won't have anywhere to hide those problems and you will have to deal with them early.

Queuing theory predicts that irregularly loading large high-variability batches of big requirements onto groups and then pushing for high levels of utilization or multitasking increases cycle time. Avoid that. On the other hand, queueing theory predicts that utilization can be higher without negative cycle-time impact if there was leveling or removal of variability in all elements.


This sums up all he has said before. I should have just posted that in the first place. If you go back to the highway example, imagine a world where everybody drove Honda Civics at the speed limit and stayed in their lanes driving responsibly. We could get home a lot faster.

the journey of applying “basic Theory of Constraints” is to find that one dominant constraint or bottleneck, reduce it so it is no longer dominant, and then look for the new primary constraint. Repeat forever.


I love this theory. I have tried to apply it to all kinds of problems. The book warns against it. I don't completely understand why. It advocates removing queues all together instead of just trying to manage and reduce them.

Tuesday, January 26, 2010

Commas

link -> Commas

You Have To Buy It Twice Before It’s Cheap

link -> You Have To Buy It Twice Before It’s Cheap

One of the most common sources of tension between product owners and developers is when product owners are surprised at how high an estimate for a story might be. Usually this tension is easy to resolve by reiterating that the product owners really have no concept of how much something should cost. However, there is one scenario I see over and over again: when a product owner protests the estimate of a story because it seems, to the PO, like it’s simply re-using an aspect of the system somewhere else.

Old Farmer's Advice

link -> Old Farmer's Advice
Your fences need to be horse-high, pig-tight and bull-strong.

Keep skunks and bankers at a distance.

Life is simpler when you plow around the stump.

A bumble bee is considerably faster than a John Deere tractor.

Words that soak into your ears are whispered…not yelled.

Meanness don’t jes’ happen overnight.

Forgive your enemies; it messes up their heads.

Do not corner something that you know is meaner than you.

It don’t take a very big person to carry a grudge.

You cannot unsay a cruel word.

Every path has a few puddles.

When you wallow with pigs, expect to get dirty.

The best sermons are lived, not preached.

Most of the stuff people worry about ain’t never gonna happen anyway.

Don ‘t judge folks by their relatives.

Remember that silence is sometimes the best answer.

Live a good, honorable life.. Then when you get older and think back, you’ll enjoy it a second time.

Don ‘t interfere with somethin’ that ain’t bothering you none.

Timing has a lot to do with the outcome of a Rain dance.

If you find yourself in a hole, the first thing to do is stop diggin’.

Sometimes you get, and sometimes you get got.

The biggest troublemaker you’ll probably ever have to deal with, watches you from the mirror every mornin’.

Always drink upstream from the herd.

Good judgment comes from experience, and a lotta that comes from bad judgment.

Lettin’ the cat outta the bag is a whole lot easier than puttin’ it back in

If you get to thinkin’ you’re a person of some influence, try orderin’ somebody else’s dog around..

Live simply. Love generously. Care deeply.

Speak kindly. Leave the rest to God.

Sunday, January 24, 2010

Objects vs Data Structures

Here is another one from Clean Code

Objects hide their data behind abstractions and expose functions that operate on that data. Data structure expose their data and have no meaningful functions.


I will put this one in the category of I wish I was doing this but I really don't know how.

Comments

I am reading Clean Code with a friend of mine. This is a great quote

The proper use of comments is to compensate for our failure to express ourself in code.


Imagine if you were reading a novel and the author scribbled in a handwritten note to explain a complicated paragraph. How silly would that be?

Thursday, January 14, 2010

Enhancement vs. Defect: More Than Pedantry » Absolutely No Machete Juggling

link -> Enhancement vs. Defect: More Than Pedantry » Absolutely No Machete Juggling
Change is inevitable in the world of software. In fact, the need for change and the related need to adapt to change are the driving forces behind the agile
This makes sense. We need customer acceptance criteria.

Tuesday, January 12, 2010

[CES 2010] RCA Airnergy Charger Harvests Electricity From WiFi Signals

link -> [CES 2010] RCA Airnergy Charger Harvests Electricity From WiFi Signals

http://www.rssmeme.com/story/851443/ces-2010-rca-airnergy-charger-harvests-electricity-from-wifi-signals Shared 25 times.

DSC_3385

By Evan Ackerman

This thing is, seriously, the highlight of CES for me (so far) this year. 3D TVs and eBook readers are fine, but there’s nothing amazing about them.

The Airnergy Charger is amazing.

This little box has, inside it, some kind of circuitry that harvests WiFi energy out of the air and converts it into electricity. This has been done before, but the Airnergy is able to harvest electricity with a high enough efficiency to make it practically useful: on the CES floor, they were able to charge a BlackBerry from 30% to full in about 90 minutes, using nothing but ambient WiFi signals as a power source.

The Airnergy has a battery inside it, so you can just carry it around and as long as you’re near some WiFi, it charges itself. Unlike a solar charger, it works at night and you can keep it in your pocket. Of course, proximity to the WiFi source and the number of WiFi sources is important, but at the rate it charges, if you have a home wireless network you could probably just leave anywhere in your house overnight and it would be pretty close to full in the morning.

DSC_3384

Here is the really, really unbelievable part: RCA says that the USB charger will be available this summer for $40, and a battery with the WiFi harvesting technology will be available soon after. I mean, all kinds of people are pushing wireless charging, but this would hands down take the cake… It doesn’t need a pad and it’s charging all the time, for free, in just about any urban environment.

We didn’t think you’d believe all this, so we made RCA explain it all on video:

Yeah, we’ll definitely be keeping you updated on this one.

  • Eduo said: El futuro llegó mientras compartíamos tetas.
  • TJ said: This is probably the coolest thing I've seen all year.
  • Chris said: a battery with WiFi harvesting should eventually mean: No charging anything ever again.
  • Alex said: this ... is amazing!
  • Derek said: This is pretty rad!
  • Dylan said: SO. COOL.
Maybe they will make one powerful enough to charge my laptop

Sunday, January 10, 2010

Wednesday, January 6, 2010

SOLID Development Principles – In Motivational Pictures - new ThoughtStream("Derick Bailey"); - Los Techies : Blogs about software and anything tech!

link -> SOLID Development Principles – In Motivational Pictures - 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, including: Kanban, Theory of Constraints, .NET, Agile, Lean, C#, Domain Driven Design, Lean Coaching, Agile Coaching, Messaging, SOLID, Design, Principles, Management, Philosophy, etc.

Announcing Pablo’s E-Books! Book #1: Pablo’s SOLID Software Development - new ThoughtStream("Derick Bailey"); - Los Techies : Blogs about software and anything tech!

link -> Announcing Pablo’s E-Books! Book #1: Pablo’s SOLID Software Development - 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, including: Kanban, Theory of Constraints, .NET, Agile, Lean, C#, Domain Driven Design, Lean Coaching, Agile Coaching, Messaging, SOLID, Design, Principles, Management, Philosophy, etc.

Bowling Game Kata in Ruby

link -> Bowling Game Kata in Ruby

The Flat Tire Principle for Source Control - Eric Hexter - Los Techies : Blogs about software and anything tech!

link -> The Flat Tire Principle for Source Control - Eric Hexter - Los Techies : Blogs about software and anything tech!
Los Techies - Code like a rabid donkey!

Colin Jack's Blog: Dependency Injection And The Domain

link -> Colin Jack's Blog: Dependency Injection And The Domain

Is the Supremacy of Object-Oriented Programming Over?

link -> Is the Supremacy of Object-Oriented Programming Over?

Profile’s in StructureMap - Jeremy D. Miller -- The Shade Tree Developer - CodeBetter.Com - Stuff you need to Code Better!

link -> Profile’s in StructureMap - Jeremy D. Miller -- The Shade Tree Developer - CodeBetter.Com - Stuff you need to Code Better!
ALT.NET dotnet .NET C# Agile BizTalk ASP.NET

Free Programming Books

link -> Free Programming Books
Free Programming Books - list of freely available programming books: Ada, Assembly, Basic, C, C#, C++, CGI, JavaScript, Perl, Delphi, Pascal, Haskell, Java, Lisp, PHP, Prolog, Python, Ruby.

CodeIdol - Thinking about Applying Domain-Driven Design and Patterns: With Examples in C# and .NET

link -> CodeIdol - Thinking about Applying Domain-Driven Design and Patterns: With Examples in C# and .NET

Better Domain-Driven Design Implementation

link -> Better Domain-Driven Design Implementation

Inversion of Control Freak: DDDD: Didn’t You Get The Message?

link -> Inversion of Control Freak: DDDD: Didn’t You Get The Message?

Comparing .NET DI (IoC) Frameworks, Part 1 » Blog Archive » I Think It’s Interesting

link -> Comparing .NET DI (IoC) Frameworks, Part 1 » Blog Archive » I Think It’s Interesting

Kanban, Flow and Cadence « AvailAgility

link -> Kanban, Flow and Cadence « AvailAgility

Quicker Frameworks | Domain-Driven Design Community

link -> Quicker Frameworks | Domain-Driven Design Community

Colin Jack's Blog: Domain Model Validation

link -> Colin Jack's Blog: Domain Model Validation

freeenergycar.com

link -> freeenergycar.com

Security Fix - Microsoft Update Quietly Installs Firefox Extension

link -> Security Fix - Microsoft Update Quietly Installs Firefox Extension
A routine security update for a Microsoft Windows component installed on tens of millions of computers has quietly installed an extra add-on for an untold number of users surfing the Web with Mozilla's Firefox Web browser. Earlier this year, Microsoft...

New Version of Skype Adds Screen Sharing

link -> New Version of Skype Adds Screen Sharing
Skype, the popular VOIP client formerly owned by eBay, just released a new beta version of its Windows client. The new version finally brings screen sharing to the ...

InfoQ: How TDD and Pairing Increase Production

link -> InfoQ: How TDD and Pairing Increase Production
"Test-driven Development" and "Pair Programming" are two of the most widely known of agile practices, yet are still largely not being practiced by many agile teams. Often, people will cite being "too busy" to adopt such practices as TDD and pairing; in essence, implying that striving for high code quality will reduce productivity. Mike Hill explains how this logic is seriously flawed.

Anti-Patterns and Worst Practices – You’re Doing it Wrong! - Chris Missal - Los Techies : Blogs about software and anything tech!

link -> Anti-Patterns and Worst Practices – You’re Doing it Wrong! - 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.

Visual Studio 200X (IDE) - Regular Expressions

link -> Visual Studio 200X (IDE) - Regular Expressions

Always Valid - Greg Young [MVP] - CodeBetter.Com - Stuff you need to Code Better!

link -> Always Valid - Greg Young [MVP] - CodeBetter.Com - Stuff you need to Code Better!
ALT.NET dotnet .NET C# Agile BizTalk ASP.NET

InfoQ: REST – The Good, the Bad and the Ugly

link -> InfoQ: REST – The Good, the Bad and the Ugly
There are endless debates in the industry and among developers on merits and drawbacks of REST. A new post by Arnon Rotem-Gal-Oz provides some thoughts on both REST’s “goodness” and “badness”.

Domain Driven Design: Domain Services or Method on an Entity? | Javalobby

link -> Domain Driven Design: Domain Services or Method on an Entity? | Javalobby
There has been much discussion on the DDD list regarding where to put the business logic control, whether in a service or entity. Being more specific, in order...

Clean Code and Battle Scarred Architecture

link -> Clean Code and Battle Scarred Architecture

Defining and refining conventions - Jimmy Bogard - Los Techies : Blogs about software and anything tech!

link -> Defining and refining conventions - Jimmy Bogard - Los Techies : Blogs about software and anything tech!
Los Techies - Code like a rabid donkey!

NHibernate Search -The fastest way search manuals, blogs, code and articles

link -> NHibernate Search -The fastest way search manuals, blogs, code and articles

Home | NHibernate Query Analyzer | Assembla

link -> Home | NHibernate Query Analyzer | Assembla

The Hottest ExtJS 3.0 Feature You’ve Never Heard About | VinylFox

link -> The Hottest ExtJS 3.0 Feature You’ve Never Heard About | VinylFox

NoBA Book Reviews: The One Minute Manager Builds High Performing Teams

link -> NoBA Book Reviews: The One Minute Manager Builds High Performing Teams

microsoft.public.dotnet.languages.csharp | Google Groups

link -> microsoft.public.dotnet.languages.csharp | Google Groups

Fighting technical debt with the wall of pain - Jimmy Bogard - Los Techies : Blogs about software and anything tech!

link -> Fighting technical debt with the wall of pain - Jimmy Bogard - Los Techies : Blogs about software and anything tech!
Los Techies - Code like a rabid donkey!

ColoRotate

link -> ColoRotate
ColoRotate is a 3D tool for viewing and editing colors.

Linq to NH progress (or lack thereof) - nhibernate-development | Google Groups

link -> Linq to NH progress (or lack thereof) - nhibernate-development | Google Groups

American Airlines Web Site: The Product of a Self-Defeating Design Process | Design & Innovation | Fast Company

link -> American Airlines Web Site: The Product of a Self-Defeating Design Process | Design & Innovation | Fast Company
Designer Dustin Curtis was so disgusted with the American Airlines Web site that he redesigned it, and posted the results as an open letter to the company

Delayed execution with yield, or “How to abdicate, cede, and relent” - Kyle Baley - The Coding Hillbilly - CodeBetter.Com - Stuff you need to Code Better!

link -> Delayed execution with yield, or “How to abdicate, cede, and relent” - Kyle Baley - The Coding Hillbilly - CodeBetter.Com - Stuff you need to Code Better!
ALT.NET dotnet .NET C# Agile BizTalk ASP.NET

The absolute bare minimum every programmer should know about regular expressions - I’m Mike

link -> The absolute bare minimum every programmer should know about regular expressions - I’m Mike

TypingWeb Offers Free Typing Lessons - Typing - Lifehacker

link -> TypingWeb Offers Free Typing Lessons - Typing - Lifehacker
Whether you're an able but slow touch typist, or you never graduated beyond hunting and pecking, TypingWeb is a free and easy to use online typing tutor that will help you hone your keyboard chops.

Top 10 Firefox 3.5 Features - Firefox 3.5 - Lifehacker

link -> Top 10 Firefox 3.5 Features - Firefox 3.5 - Lifehacker
Firefox 3.5 is a pretty substantial update to the popular open-source browser, and it's just around the corner. See what features, fixes, and clever new tools are worth getting excited about in the next big release.

If You're Looking for Nothin But .Net . . . - That Other Guy . . . - Los Techies : Blogs about software and anything tech!

link -> If You're Looking for Nothin But .Net . . . - That Other Guy . . . - Los Techies : Blogs about software and anything tech!
Los Techies - Code like a rabid donkey!

Brian Groth's Life at Microsoft : Call a Web Service from a Command-Line

link -> Brian Groth's Life at Microsoft : Call a Web Service from a Command-Line
For all you command-line freaks out there, I hope you know about Microsoft's scripting technologies. Hopefully you are also aware that web services is the hot new thing and is certainly a great way to architect solutions these days. So, combining those

MF Bliki: ObjectMother

link -> MF Bliki: ObjectMother

Programming Basics: The for loop can do more than increment an integer - John Teague's Blog - Los Techies : Blogs about software and anything tech!

link -> Programming Basics: The for loop can do more than increment an integer - John Teague's Blog - Los Techies : Blogs about software and anything tech!
Los Techies - Code like a rabid donkey!

Top 100 Best Software Engineering Books, Ever - NOOP.NL

link -> Top 100 Best Software Engineering Books, Ever - NOOP.NL
Ladies and gentlemen... In this post I proudly present the Top 100 of Best Software Engineering Books, Ever. I have created this list using four different criteria: 1) number of Amazon reviews, 2) average Amazon rating, 3) number of Google...

Amazon.com: Object-Oriented Software Construction (Book/CD-ROM) (2nd Edition) (0076092003090): Bertrand Meyer: Books

link -> Amazon.com: Object-Oriented Software Construction (Book/CD-ROM) (2nd Edition) (0076092003090): Bertrand Meyer: Books
Amazon.com: Object-Oriented Software Construction (Book/CD-ROM) (2nd Edition) (0076092003090): Bertrand Meyer: Books

NHibernate – Automatic change tracking for aggregate roots in DDD scenarios

link -> NHibernate – Automatic change tracking for aggregate roots in DDD scenarios

LINQ to NHibernate, part IV

link -> LINQ to NHibernate, part IV

Set-Based Concurrent Engineering

link -> Set-Based Concurrent Engineering

Simplest versus first thing that could possibly work - Jimmy Bogard - Los Techies : Blogs about software and anything tech!

link -> Simplest versus first thing that could possibly work - Jimmy Bogard - Los Techies : Blogs about software and anything tech!
Los Techies - Code like a rabid donkey!

NHibernate Unit Testing

link -> NHibernate Unit Testing

Notes from a Tool User: Agile Mailing Lists

link -> Notes from a Tool User: Agile Mailing Lists
Twitter is fun, c2.com is almost dead and blogs have a lot of great ideas, but the best discussions about Agile still occur on the mailing list. Yet I keep coming across people in interested in learning about Agile who...

The Composed Method implementation pattern - Jorge Manrubia

link -> The Composed Method implementation pattern - Jorge Manrubia
Personal Page

The Dynamic Programmer - Yellow sticky notes for your watched variables in the new VS 2010

link -> The Dynamic Programmer - Yellow sticky notes for your watched variables in the new VS 2010

Storage Size And Performance Implications Of A GUID PK - new ThoughtStream("Derick Bailey"); - Los Techies : Blogs about software and anything tech!

link -> Storage Size And Performance Implications Of A GUID PK - 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, including: Kanban, Theory of Constraints, .NET, Agile, Lean, C#, Domain Driven Design, Lean Coaching, Agile Coaching, Messaging, SOLID, Design, Principles, Management, Philosophy, etc.

MOQ Mothers | Elegant Code

link -> MOQ Mothers | Elegant Code
MOQ Mothers

The Law of Demeter Is Not A Dot Counting Exercise

link -> The Law of Demeter Is Not A Dot Counting Exercise
Phil Haack attempts to infuse technology and software development with humor and a pragmatic eye... Attempts.

Agile Fails Better - Ian Cooper - CodeBetter.Com - Stuff you need to Code Better!

link -> Agile Fails Better - Ian Cooper - CodeBetter.Com - Stuff you need to Code Better!
ALT.NET dotnet .NET C# Agile BizTalk ASP.NET

esther derby's "insights you can use"

link -> esther derby's "insights you can use"

The Pragmatic Bookshelf | Domain-Driven Design Using Naked Objects

link -> The Pragmatic Bookshelf | Domain-Driven Design Using Naked Objects
Domain-Driven Design Using Naked Objects, , by Dan Haywood, 9781934356449, Nov 2009

InfoQ: Code quality for teams

link -> InfoQ: Code quality for teams
Jaibeer Malik has posted an introduction of how to address and introduce code quality within a team. His series of posts may suite you if you are in a situation where you have to either learn more yourself or introduce these ideas to others. The series provides a brief overview of the topic and gives pointers in different directions of where to go to study more.

Fighting Fabricated Complexity - Patrick Smacchia [MVP C#] - CodeBetter.Com - Stuff you need to Code Better!

link -> Fighting Fabricated Complexity - Patrick Smacchia [MVP C#] - CodeBetter.Com - Stuff you need to Code Better!
ALT.NET dotnet .NET C# Agile BizTalk ASP.NET

DDD Sample Application - Patterns reference

link -> DDD Sample Application - Patterns reference

The Rush

link -> The Rush

Fever, A Self-Hosted Feed Reader, Heats Up Your RSS Subscriptions

link -> Fever, A Self-Hosted Feed Reader, Heats Up Your RSS Subscriptions
Fever is a hot new RSS reader that aims to cure second inbox syndrome, unread item guilt, and unbold elbow. In other words, ...

Instapaper Gets Folders And Goes Social

link -> Instapaper Gets Folders And Goes Social
The online bookmarking functionality I use most often isn't Delicious or Google Bookmarks or even my browser's bookmarking area. Instead, I use Instapaper, ...

Where are my Entities and my Repositories ? - Think Before Coding

link -> Where are my Entities and my Repositories ? - Think Before Coding
During Evans’ talk at ParisJug, some attendees where surprised that there was no mention of Entities or Repositories… Quite a lot of people where introduced to Domain Driven Design

Dr. Dobb's | The Development Game | October 1, 2002

link -> Dr. Dobb's | The Development Game | October 1, 2002
You already know how difficult it is to get a development team to change anything, let alone its process. Here's a simple approach that works.

First Impression: Horn « BASICly everything

link -> First Impression: Horn « BASICly everything

A total n00b’s guide to migrating from a custom data layer to Nhibernate: getting started - Tales from the Evil Empire

link -> A total n00b’s guide to migrating from a custom data layer to Nhibernate: getting started - Tales from the Evil Empire

Grid with DataWriter Example

link -> Grid with DataWriter Example

Book Review: Enterprise Integration Patterns | Elegant Code

link -> Book Review: Enterprise Integration Patterns | Elegant Code
Book Review: Enterprise Integration Patterns

A very good introduction to TDD, NHibernate, DDD, NUnit - Jason Meridth - Los Techies : Blogs about software and anything tech!

link -> A very good introduction to TDD, NHibernate, DDD, NUnit - Jason Meridth - Los Techies : Blogs about software and anything tech!
The blog of Jason Meridth

Tutorial:Creating new UI controls - Learn About the Ext JavaScript Library

link -> Tutorial:Creating new UI controls - Learn About the Ext JavaScript Library

Observations on the ‘if’ statement | Elegant Code

link -> Observations on the ‘if’ statement | Elegant Code
Observations on the ‘if’ statement

Poor man’s NUnit + Visual Studio integration « BASICly everything

link -> Poor man’s NUnit + Visual Studio integration « BASICly everything

Ext JS - Blog

link -> Ext JS - Blog

NerdDinner with Fluent NHibernate Part 1 - The domain model

link -> NerdDinner with Fluent NHibernate Part 1 - The domain model

Scott Hanselman's Computer Zen - ELMAH: Error Logging Modules and Handlers for ASP.NET (and MVC too!)

link -> Scott Hanselman's Computer Zen - ELMAH: Error Logging Modules and Handlers for ASP.NET (and MVC too!)
Scott Hanselman on Programming, User Experience, The Zen of Computers and Life in General

How-To: Using the N* stack, part 1 « BASICly everything

link -> How-To: Using the N* stack, part 1 « BASICly everything

How Agile Practices Address the Five Dysfunctions of a Team

link -> How Agile Practices Address the Five Dysfunctions of a Team
Since times immemorial,ideas,objects and experiences of grand stature and lasting economic,social and emotional value have been created by men and women working together in teams.Granted that some

Dilbert comic strip for 08/04/2009 from the official Dilbert comic strips archive.

link -> Dilbert comic strip for 08/04/2009 from the official Dilbert comic strips archive.
The Official Dilbert Website featuring Scott Adams Dilbert strips, animation, mashups and more starring Dilbert, Dogbert, Wally, The Pointy Haired Boss, Alice, Asok, Dogbert's New Ruling Class and more.

Scientific Speed Reading: How to Read 300% Faster in 20 Minutes

link -> Scientific Speed Reading: How to Read 300% Faster in 20 Minutes

Visual Studio Find And Replace Regular Expression Patterns - Paulo Morgado

link -> Visual Studio Find And Replace Regular Expression Patterns - Paulo Morgado
.NET, Software Architecture

LINQ: Distinct() does not work as expected

link -> LINQ: Distinct() does not work as expected

NHibernate Linq 1.0 released!

link -> NHibernate Linq 1.0 released!

Linq to NHibernate Progress Report

link -> Linq to NHibernate Progress Report

Google Wave Team Gives Up on Internet Explorer | Smarterware

link -> Google Wave Team Gives Up on Internet Explorer | Smarterware

Finding the biggest tables in a database - SQLTeam.com

link -> Finding the biggest tables in a database - SQLTeam.com
This quick article includes a discussion on SQL Server tools to determine the size of tables in a database. It also has a downloadable script I wrote to find the largest tables in a database.

Version Control with Subversion

link -> Version Control with Subversion

The Importance Of Enthusiasm In Any Product

link -> The Importance Of Enthusiasm In Any Product
A video took the web by storm today entitled Incredible, amazing, awesome Apple. Basically, it boils down Apple's latest event into a series ...

What the hell is mon and mun? | Saki's Blog

link -> What the hell is mon and mun? | Saki's Blog
I've run across the following code in some of Ext 3.x examples: this.mon(toolsUl, 'click', this.onClick, this); Looks like event handler installation but

CodeProject: User Friendly ASP.NET Exception Handling. Free source code and programming help

link -> CodeProject: User Friendly ASP.NET Exception Handling. Free source code and programming help
A flexible framework for user-friendly ASP.NET exception handling, and automatically notifying developers of problems before users do.; Author: wumpus1; Section: ASP.NET; Chapter: Web Development

Professional NHibernate Support

link -> Professional NHibernate Support

The Z-Index CSS Property: A Comprehensive Look « Smashing Magazine

link -> The Z-Index CSS Property: A Comprehensive Look « Smashing Magazine

Linq to NHibernate Progress Report

link -> Linq to NHibernate Progress Report

NHibernate Profiler v1.0 Released

link -> NHibernate Profiler v1.0 Released

Remote Desktop Services - Frequently Asked Questions - Administration

link -> Remote Desktop Services - Frequently Asked Questions - Administration
Remote Desktop Services - Frequently Asked Questions

has_many :through - Circle of death

link -> has_many :through - Circle of death

Other Companies Should Have To Read This Internal Netflix Presentation

link -> Other Companies Should Have To Read This Internal Netflix Presentation
Ever since Netflix's awesome vacation policy was revealed to the public (basically, there is no policy, it's take the time you think you ...

Horn – how to resolve a circular build dependency « Craig Nicol’s Weblog

link -> Horn – how to resolve a circular build dependency « Craig Nicol’s Weblog

S4ve.as Makes File Sharing as Easy as Sharing a URL - File Sharing - Lifehacker

link -> S4ve.as Makes File Sharing as Easy as Sharing a URL - File Sharing - Lifehacker
Need to share a file quickly and without the hassle of setting up a file server or other dedicated connection between you and the recipient? S4ve.as makes transferring a file as simple as pasting a URL.

Big Visible TeamCity - Joshua Flanagan - Los Techies : Blogs about software and anything tech!

link -> Big Visible TeamCity - Joshua Flanagan - Los Techies : Blogs about software and anything tech!
Los Techies - Code like a rabid donkey!

Driebier.net - Using MSBuild to deploy visual studio 2005 web applications

link -> Driebier.net - Using MSBuild to deploy visual studio 2005 web applications

ResolveReferences does not correctly walk all references in dependent projects | Microsoft Connect

link -> ResolveReferences does not correctly walk all references in dependent projects | Microsoft Connect

Beyond This Point: Managing Unhandled Exceptions in ASP.NET Web Services

link -> Beyond This Point: Managing Unhandled Exceptions in ASP.NET Web Services

Doloto

link -> Doloto

My favorite bug-tracking system - Jimmy Bogard - Los Techies : Blogs about software and anything tech!

link -> My favorite bug-tracking system - Jimmy Bogard - Los Techies : Blogs about software and anything tech!
Los Techies - Code like a rabid donkey!

Smart and gets things done *right* - Scott C Reynolds - Los Techies : Blogs about software and anything tech!

link -> Smart and gets things done *right* - Scott C Reynolds - Los Techies : Blogs about software and anything tech!
A blog about continuous improvement in software development and technology leadership.

Summer of NHibernate Screencast Series

link -> Summer of NHibernate Screencast Series

Beating the duct programmer with generic domains, subdomains, and core domains - Ian Cooper - CodeBetter.Com - Stuff you need to Code Better!

link -> Beating the duct programmer with generic domains, subdomains, and core domains - Ian Cooper - CodeBetter.Com - Stuff you need to Code Better!
ALT.NET dotnet .NET C# Agile BizTalk ASP.NET

The Pomodoro Technique

link -> The Pomodoro Technique

Weston Binford - Journal - Bootstrapping NHibernate with StructureMap

link -> Weston Binford - Journal - Bootstrapping NHibernate with StructureMap

Bigler On Code: DISC model of team roles

link -> Bigler On Code: DISC model of team roles
I am really enjoying this book

200 Page Manual on Inversion of Control (plus or minus 199) « Rob Conery

link -> 200 Page Manual on Inversion of Control (plus or minus 199) « Rob Conery
simple clear explanation in 10 minutes not 200 pages

Employing the Domain Model Pattern

link -> Employing the Domain Model Pattern

Wither the Repository - Jimmy Bogard - Los Techies : Blogs about software and anything tech!

link -> Wither the Repository - Jimmy Bogard - Los Techies : Blogs about software and anything tech!
Los Techies - Code like a rabid donkey!
this makes my head hurt, wish I could understand it

NerdDinner with Fluent NHibernate Part 3 - The infrastructure

link -> NerdDinner with Fluent NHibernate Part 3 - The infrastructure

4pm on some idle Tuesday: NHibernate sql-query with stored procedures

link -> 4pm on some idle Tuesday: NHibernate sql-query with stored procedures

Testing with NHibernate and SQLite - Krzysztof Kozmic - Devlicio.us - Just the Tasty Bits

link -> Testing with NHibernate and SQLite - Krzysztof Kozmic - Devlicio.us - Just the Tasty Bits
Agile .NET ALT.NET

The Inquisitive Coder – Davy Brion’s Blog » Blog Archive » Must Everything Be Virtual With NHibernate?

link -> The Inquisitive Coder – Davy Brion’s Blog » Blog Archive » Must Everything Be Virtual With NHibernate?

Scott Hanselman's Computer Zen - Serializing Objects as JavaScript using Atlas, JSON.NET and AjaxPro

link -> Scott Hanselman's Computer Zen - Serializing Objects as JavaScript using Atlas, JSON.NET and AjaxPro
Scott Hanselman on Programming, User Experience, The Zen of Computers and Life in General
for you jerry

CodeProject: Generate a client-side proxy for a webservice using HTTP Handlers, Mootools and JSON. Free source code and programming help

link -> CodeProject: Generate a client-side proxy for a webservice using HTTP Handlers, Mootools and JSON. Free source code and programming help
We will create code that will generate all the javascript necessary to call a webservice, sending and recieving Json. This will allow us to choose wich javascript library (such as Mootools, prototype, scriptaculous, etc...) to use and still be able to performe this task.; Author: Bruno R. Figueiredo; Section: ASP.NET; Chapter: Web Development
custom json serializer

Robert Tennyson | Getting Started with NHibernate

link -> Robert Tennyson | Getting Started with NHibernate

Bug squash: Untangling the mess: Solr, SolrNet, NHibernate, Lucene

link -> Bug squash: Untangling the mess: Solr, SolrNet, NHibernate, Lucene
file this one away in case we ever have to build a search index

Story points - Wikipedia, the free encyclopedia

link -> Story points - Wikipedia, the free encyclopedia

Tracking a property value changes over time: Temporal property using NHibernate | Lowendahl's Shout

link -> Tracking a property value changes over time: Temporal property using NHibernate | Lowendahl's Shout
Question that needs an answer is: “how did my inventory look 1 month ago?”. This post shows you how to answer that question with C# and NHibernate.

Agile Advocate: Agile vs. Waterfall: The NetFlix analogy

link -> Agile Advocate: Agile vs. Waterfall: The NetFlix analogy
very funny

Marcin Budny 's blog: Typed Expand() for Linq to NHiberante

link -> Marcin Budny 's blog: Typed Expand() for Linq to NHiberante
eager fetching for linq to nhibernate

TargetProcess Day by Day | Agile Development On Real Project: Entity Life-Cycle in NHibernate: IInterceptor Interface

link -> TargetProcess Day by Day | Agile Development On Real Project: Entity Life-Cycle in NHibernate: IInterceptor Interface
good explanation of nhibernate lifecycle

Yesterday's news | NHibernate parameter sizes controversy: happy ending

link -> Yesterday's news | NHibernate parameter sizes controversy: happy ending

The HornGet Project: Bringing "apt-get install" to .NET Projects - Billy McCafferty - Devlicio.us - Just the Tasty Bits

link -> The HornGet Project: Bringing "apt-get install" to .NET Projects - Billy McCafferty - Devlicio.us - Just the Tasty Bits
Agile .NET ALT.NET
this sounds really cool, allows you to download/install all nhibernate dependencies in one command

I Am Not Myself - Vacation of Fluent NHibernate: Monday ClassMaps

link -> I Am Not Myself - Vacation of Fluent NHibernate: Monday ClassMaps
Scrumming out unit tested sprints on the agile tip.
I watched this one tonight. It was pretty good. Mentioned an import statement that I had never heard of.

The Bourne Framework – A High Level Introduction

link -> The Bourne Framework – A High Level Introduction
Weird. I am going to watch this one to see what happens

James Gregory - Fluent NHibernate: Mapping private and protected properties

link -> James Gregory - Fluent NHibernate: Mapping private and protected properties

Derek says:: Implicit polymorphism and lazy collections in NHibernate

link -> Derek says:: Implicit polymorphism and lazy collections in NHibernate

MSBuild Task Reference

link -> MSBuild Task Reference
List of tasks you can use in MSBuild like Copy, AspNetCompiler, MSBuild, etc ...

Brennan’s Blog » Blog Archive » MSBuild: Basics (1 of 7)

link -> Brennan’s Blog » Blog Archive » MSBuild: Basics (1 of 7)
I have spent a good deal of time with MSBuild scripts the past couple of years as I have worked on various projects. As I have attempted to make these scripts bend to my wishes I have gradually improved the sample MSBuild script I carry along to each new project. In this series I will cover various ways to use MSBuild and include some tips on what you can do to make your scripts work better for you.

Data Access: Building a Desktop To-Do Application with NHibernate

link -> Data Access: Building a Desktop To-Do Application with NHibernate
NHibernate on the cover of MSDN

Extreme Interviewing Whitepaper

link -> Extreme Interviewing Whitepaper
this sounds cool, the free stuff section on this site has more whitepapers that sound interesting too

Asynchronous Or Synchronous Http Handler - ASP.NET Forums

link -> Asynchronous Or Synchronous Http Handler - ASP.NET Forums

Asynchronous Http Handlers — Developer.com

link -> Asynchronous Http Handlers — Developer.com
ASP.Net allows developers to easily write server-side modules called Http Handlers in any .NET Language.

Yesterday's news | NHibernate parameter sizes controversy: trust but verify

link -> Yesterday's news | NHibernate parameter sizes controversy: trust but verify
a correction to the correction, problem is back on

Referencing external config files from Web.Config

link -> Referencing external config files from Web.Config
Anybody programming with ASP.NET knows that you can store custom application's settings in the web.config file, under the section, and programmatically read the values through the ConfigurationSettings class. When the application starts, the web.config is read and all its settings ...
I could use this to hold our build number and fix the temporary internet files problem

QueryOver in NH 3.0 - NHibernate blog - NHibernate Forge

link -> QueryOver in NH 3.0 - NHibernate blog - NHibernate Forge
The official NHibernate community site. Download NHibernate. Read blogs. Contribute to the NHibernate Wiki. Find reference documentation.
Will be hard to choose between this and LINQ to NHibernate

Elegant Code » NHibernate and Future Queries

link -> Elegant Code » NHibernate and Future Queries
NHibernate and Future Queries
This allows you to batch multiple queries together

Clarified CQRS

link -> Clarified CQRS
very interesting stuff I wish our stuff worked this way

nhlambdaextensions - Project Hosting on Google Code

link -> nhlambdaextensions - Project Hosting on Google Code
You can get a bunch of the Query Over syntax now with this project

Template Parameters

link -> Template Parameters
Visual Studio Custom Template parameters

Chris Hedgate » From Good To Great Developer – Resources

link -> Chris Hedgate » From Good To Great Developer – Resources
more information about the earlier shared presentation

InfoQ: From Good to Great Developer

link -> InfoQ: From Good to Great Developer
Chris Hedgate makes a difference between a good and a great developer. The former writes code quickly, knows how to solve problems, but his code tends to be hard to maintain on the long run. The good developer keeps an eye on the future trying to make sure the code evolves cleanly. Hedgate advices on how to move from good to great.
Joe Utz sent me this. I thought it was an excellent presentation