Thursday, October 27, 2016

How to Show the Local Build Time on .Net Web Pages

Grant Erickson has a great post on how to display the compile time in a razor page by editing the AssemblyInfo class.  This technique was first pioneered by
 Jeff Atwood here.
 This shows the GMT date which is true, but sometimes not as helpful when everyone has to translate that to their local time.

You can convert the time to local time, and display the local time zone on the layout page with this tiny bit of razor code:

[For Testing Only - Compile time: @(My.Namespace.WebUI.Properties.AssemblyInfo.Date.ToLocalTime().ToString("dddd MMMM d, hh:mm tt",CultureInfo.CreateSpecificCulture("en-US")))
            (@TimeZone.CurrentTimeZone.StandardName)  on @System.Environment.MachineName]

  Here's the resulting human readable time stamp:

[For Testing Only - Compile time: Thursday October 27, 03:20 PM (Central Standard Time) on US-ATX-Mordor022]

 This is helpful for QA personnel scattered over the world to know the build date of the system they are testing.

Thursday, October 20, 2016

Distinguished Speaker Series - Scrum Turns 21, what is next?

Dave West spoke to 30 people at Agile Austin in the Distinguished Speaker Series.  Dave is the CEO of and "product owner" of the Scrum process.  Dave was formally the product owner of the old Rational Unified Process so he knows what makes a good process and what is too heavy.  Dave was a pleasure to hear speak about software development since he has such extensive knowledge of software and a good sense of humor.  Here's a few pics:

twitter handle:  @davidjwest
Scrum was originally unveiled in Austin 21 years ago.

SCRUM was originally all-caps because Ken Schwaber had to shout it out to be heard.  After SCRUM gained an audience, it crept back down to lowercase.

Evolution of Agile Organizations:
Agile Alliance founded in 2001 as a charity which made it to difficult to monetize.
Scrum Alliance founder 2004 was not non-profit, and able to certify Scrum Masters. was founded in 2009.  Mission:  "Improving the profession of software development."

Building software is an empirical practice with engineering foundation.  Which means we need lots of real world data to see what is working and what is failing.

Scrum is doing great with 70,000 professional Scrum Masters, 12 Million people doing scrum everyday, 100+ books with Scrum in the title.  Time to celebrate?  Maybe not.
In 2011 39% of projects were successful, in 2015 it has dropped to 36%.  Software isn't easy.

Changes to scrum:
It's a "Daily Scrum", not "Stand Up" anymore - since some people can't stand.
No Ceremonies anymore, use Events.

Jeff and Ken thought Scrum would spread organically.  But bureaucracy thwarted Scrum.  Amorphous Blob of Middle Management, ABoMM, stands in the way.

Martin Fowler coined the term "Flaccid Scrum".

Scrum is not a democracy, it's a kingdom.  The Product Owner makes decisions.  PO is the hardest job in the world.  Don't have a committee running things.  PO is a leadership role, not a management role.  POs don't write user stories, the dev team does with the PO providing guidance.

We need to step back from velocity and look more at value.

If we don't have the right measurements, it's hard to be empirical.

Nexus(tm) is an exoskeleton to deal with multiple teams.

Ideal scrum team size is 7 plus or minus 2.  Same with the number of teams.  Over 100 people doesn't work.  The overhead is more than you can sustain.

"The Scrum Guide" by Jeff and Ken
Values added on July 7th:
Commitment - dedicated to delivering working software
Focus - concentrate on what is important
Openness - frequently inspecting through delivering
Respect - cross-functioning self-organizing teams
Courage - we admit we do not know everything.

Product Owners are typically either available or powerful.

What's coming next?

Time is right for a "Scrum Studio", a completely separate entity from existing IT organizations.
Not project oriented, but product oriented with these characteristics:

1. Agile Culture
2. Product-oriented
3. Planning through Operations
4. All services and administration provided.
5. Onboarding qualified products
6. Value based measurement and management
7. Persistent team and tribal culture
8. Methodology driven development
9. Modern, proven tool sets and infrastructure
10. Professional software

Build an organization that can delivery working software.

Business wants a pill that makes them skinny and good looking.  Scrum takes work.  You can't buy Agility.  Only way for Scrum to succeed is in an environment that encourages it, hence the need for a new, separate organization focused on software providing value quickly.

What we are doing today isn't working, especially in IT.  For scrum to flourish, it has to be moved into a walled garden.

3 Important Characteristics that make good agile teams:
1. Great Product Owners
2. Technical Excellence in teams. Code reviews are important, paired programming helps.
3. A good team with good scrum master that helps a team get better.  Co-location helps.
4. Product orientation (pardon the off-by-one error)

Monday, October 10, 2016

Pics from Austin .Net Users Group: Full Stack Development with .NET and NoSQL

Matthew Groves, @mgroves,  gave an interesting presentation to 35 people at the October Austin .Net User's Group meeting.  Come join us next time details of future events at  Free pizza was provided by a recruiting sponsor. 

My Notes on #Couchbase:
Mongo is the most popular NoSql db.
Couchbase is not related to CouchDB.
NoSql is not a particularly useful term since it only tells you what it isn't.
Couchbase has built-in managed Cache and does key-value store, but mostly used for a document database.
Couchbase is open-source and has free licenses.
Couchbase scales easily.
 Instead of SQL uses N1q1 ("Nickel") which supports SQL-like syntax.  Supports indexes.

Supports Upsert() operation "Update"+"Insert"
Nickel tutorial at
linq2Couchbase is a open source project to merge linq and Couchbase.
var query = from x in bucket.Query() select x.Name

Does not support typical transactions, but can be done by use of a design pattern.
No stored procedures, but has MapReduce patterns.
Supports on the fly resharding across multiple database servers.

 Couchbase Lite is an embedded db (400K) for mobile devices, desktop apps, and IOT.


Tuesday, October 04, 2016

Adventures in UX

Since our team is starting to use Git, I just downloaded SourceTree and this popup gave me pause:

So, does "Cancel" equal "No"?  Or does "Cancel" mean, uh, "Cancel"?