Peter Gfader's brain noise
No-cost desktop software development is dead on Windows 8

If you want to develop desktop applications—anything that runs at the command line or on the conventional Windows desktop that remains a fully supported, integral, essential part of Windows 8—you’ll have two options:

1. stick with the current Visual C++ 2010 Express and Visual C# 2010 Express products, or

2. pay about $400-500 for Visual Studio 11 Professional.

#sad

Nice novel about “deliver something faster” via @clarkeching

Great free book that introduces the “core of Agile” (if there is such a thing):

Deliver customer value faster

Get it here

Rocks into Gold - Biztech parable
http://www.rollingrocksdownhill.com/

Is the database your center of the architecture? via @unclebobmartin

Do you need a relational SQL store? 

Great story from Uncle Bob about his experience with databases and architecture.

NO DB
http://blog.8thlight.com/uncle-bob/2012/05/15/NODB.html

Interesting points:

We certainly didn’t need a process with a multi-megabyte footprint sitting in memory and burning cycles. (Remember, this was the ‘80s)

Relational databases are huge beasts. Consider other options. Flat files work as well!

The center of your application is not the database. Nor is it one or more of the frameworks you may be using. The center of your application are the use cases of your application.

Ask yourself: Why are we building this? What problem do we solve for our customer?

Here’s what an application should look like. The use cases should be the highest level and most visible architectural entities. The use cases are at the center. Always! Databases and frameworks are details! You don’t have to decide upon them up front. You can push them off until later, once you’ve got all the use cases and business rules figured out, written, and tested.

The database is just a detail that you don’t need to figure out right away.

Attribute based routing in ASP.NET Web API

kodefuguru:

http://dlvr.it/1d6MY1

Great idea, but I see a maintenance nightmare with URLs sprinkled all over the place…

When I google for a great idea I have and it already exists, I’m like
Test names can have whitespace #fsharp

How awesome is that!


 open NUnit.Framework 
   let [] ``This is a test with some whitespace`` () = Assert.IsTrue(true)

Tests are not DRY
  public class TennisGameSpecs
  {
    [TestFixture]
    public class GetScores
    {
      [Test]
      public void NewGame_Player1_ShouldReturn0()
      {
        TennisGame tennisGame = new TennisGame();  // = "NewGame"
        
	Assert.That(tennisGame.Player1.Score, Is.EqualTo(0));   
      }
    }
 

Test Names and the actual tests contain duplication. 
In the example above “NewGame” in the name of the test and the actual code… 

I think that is the reason why we had a discussion about Naming Tests

XUnit wins over MSTest, expecting an exception

// XUnit 
[Fact]
public void ThrowsException__PassingNegativeValues()
{
  Assert.Throws<ArgumentException>(() => sut.Add("-1"));
}
 
// MSTest
[TestMethod]
[ExpectedException(typeof(ArgumentException))]
public void ThrowsException__PassingNegativeValues_()
{
  sut.Add("-1");
}

Do you use microtypes / explicit types? via @NotMyself

As per my other entry it makes sense to use MicroTypes to improve readability and to avoid errors.

Bobby Johnson blogged a nice way on how to use the “implicit operator” to create new structs

Using the Implicit Operator in C# for Maximum Nerdy Good Times
http://iamnotmyself.com/2012/03/28/using-the-implicit-operator-in-c-for-maximum-nerdy-good-times/

Have some Nerdy Good Times!

Do you focus on the details? via @codinghorror

Great post about paying attention to the details to delight your customers.

Best bits

Getting the details right is the difference between something that delights, and something customers tolerate.

This Is All Your App Is: a Collection of Tiny Details
http://www.codinghorror.com/blog/2012/05/this-is-all-your-app-is-a-collection-of-tiny-details.html

Bad API. SQLCommand.CommandTimeout doesn&#8217;t say in which time unit.
You can find the details in the help file
public override int CommandTimeout { set; get; }
    Member of System.Data.SqlClient.SqlCommand

Summary:
Gets or sets the wait time before terminating the attempt to execute a command and generating an error.

Returns:
The time in seconds to wait for the command to execute. The default is 30 seconds.


Better would be to name it: CommandTimeoutSeconds

Bad API. SQLCommand.CommandTimeout doesn’t say in which time unit.

You can find the details in the help file

public override int CommandTimeout { set; get; }

    Member of System.Data.SqlClient.SqlCommand

Summary:

Gets or sets the wait time before terminating the attempt to execute a command and generating an error.

Returns:

The time in seconds to wait for the command to execute. The default is 30 seconds.

Better would be to name it: CommandTimeoutSeconds

Recognize hand gestures with a mic and speaker

From Microsoft Research

SoundWave: Using the Doppler Effect to Sense Gestures

http://research.microsoft.com/en-us/um/redmond/groups/cue/soundwave/

How do you measure customer satisfaction? #proscrum

A couple of options that I would consider:

  • Just ask
    But how? Surveys? Online polls?
  • Measure system usage 
    Time spent using the system, Features used, Returning user, Referrals, Sign up via friend… 
  • Money 
    Did you make more money this month? -> Satisfaction increased!?


How do you measure customer satisfaction? 

What else? What do you do?
SQL Server: script to get database size and single table size
CREATE TABLE #t 
	(name SYSNAME, 
	 rows CHAR(11), 
	 reserved VARCHAR(18), 
	 data VARCHAR(18), 
	 index_size VARCHAR(18), 
	 unused VARCHAR(18)) 
 
EXEC sp_msforeachtable 'INSERT INTO #t EXEC sp_spaceused ''?'''

SELECT *, 
		CONVERT(INT, SUBSTRING(data, 1, LEN(data)-3)) as datasizeInKB 
FROM #t 
		ORDER BY datasizeInKB desc, name 

DROP TABLE #t

SQL Server: script to get database size and single table size

CREATE TABLE #t 
	(name SYSNAME, 
	 rows CHAR(11), 
	 reserved VARCHAR(18), 
	 data VARCHAR(18), 
	 index_size VARCHAR(18), 
	 unused VARCHAR(18)) 
 
EXEC sp_msforeachtable 'INSERT INTO #t EXEC sp_spaceused ''?'''

SELECT *, 
		CONVERT(INT, SUBSTRING(data, 1, LEN(data)-3)) as datasizeInKB 
FROM #t 
		ORDER BY datasizeInKB desc, name 

DROP TABLE #t
WCF Data Services, now with more releases!

kodefuguru:

http://dlvr.it/1Y0hfp

Great to see more teams from Microsoft embracing Semantic versioning