Thursday 22 January 2009

What is this blog?

Those of you who have happened upon this blog for the first time may be wondering what it is.

Three weeks ago, I took over as CTO of MoveMe.com (a London-based start-up). I am committed to agile development practices and amongst the changes I am bringing to the development team are two practices that deliberately place the value of knowledge at the heart of the team:

  1. Weekly, voluntary, brown bag lunch sessions (alternating between presentations and Coding Dojo’s)
  2. A Knowledge Nugget at the Daily Stand-Up

The rules for the Knowledge Nugget are simple:

  • The nugget must be written (legibly) on one side of an index card.
  • At the end of the Stand-Up, the nugget is simply read out by the author
  • No questions about the nugget inside the Stand-Up (to avoid wasting time)
  • When the nugget has been read, someone volunteers to do the next nugget (they do not need to say what it is about)
  • The index card is placed in team view until the next nugget is done (pinned to a board, or blue-tacked on the wall)

On top of this, I decided to blog the nuggets for posterity :-)

PNG (Portable Network Graphics)

  • The PNG format was created to improve upon and replace GIF (Graphics Interchange Format) which was limited to 256 Colours.
  • An image format embodying lossless data compression (known as deflate).
  • PNG offers a variety of transparency options; most notably allowing the addition of an alpha channel thus greatly improving transparency quality with no need for matting.
  • Improved transparency allows improved layering and visual effects in web design.
  • Greater colour depth gives greater precision and clarity and improves the quality of fades.
  • PNG has better image clarity than JPEG when used for text or images with sharp transitions.

Monday 19 January 2009

View SQL Server Metadata

SQL Server stores metadata about all objects in a database.

Highlight the object name and press Alt+F1.

The Common Closure Principle

Classes that change together, belong together.” (Robert Martin)

This principle advises which classes should be packaged together based on patterns of change.

The classes in a package should be closed together against the same kind of changes.

A change that affects a package affects all the classes in that package.

Wednesday 14 January 2009

The L in SOLID

The Liskov Substitution Principle

Tuesday 13 January 2009

The D in SOLID

Dependency Inversion Principle

  1. High-level modules should not depend on low-level modules. Both should depend on abstractions.
  2. Abstractions should not depend upon details. Details should depend on abstractions.
Advantages
  • Re-use high-level modules in different contexts.
  • Reduces coupling and increases cohesion.
  • Increases separation of concerns.
  • Makes unit testing easier as it allows low-level module injection; for example Mocks.
The technique by which low-level objects are injected into high-level objects is called dependency injection.

Inversion of Control (IoC)

Objects do not create other objects on which they rely to do their work. Instead they get their dependencies from an outside source.

IoC Frameworks:

See also: “What is S.O.L.I.D?

301 Moved Permanently

Use the 301 status code when:
  1. You know the the URI requested is never going to be available again
  2. You know where the replacement URI can be found
Example response message:

301 Moved Permanently
Location: http://example.com/new-location
Cache-Control: public
Expires: {Now + 1 year}

Followers

Contributors