Thursday, December 01, 2016

JSBin.com not working with Backbone

 Don't we all love JS Bin?  Yes!
But to get backbone to work takes a little extra.
Using the default libraries I get this error:

"error"
"Script error. (line 0)"
"error"
"@nuhipe.js:17:10

But if you replace JSBin's imported javascript libraries:

 
<script src="//jashkenas.github.io/underscore/underscore-min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/backbone.js/1.1.2/backbone-min.js"></script>

with these in the head element:
 

<script src="https://code.jquery.com/jquery-3.1.0.js"></script>
<script src="https://cdn.jsdelivr.net/lodash/3/lodash.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/backbone.js/1.1.2/backbone-min.js"></script>
<script src="//jashkenas.github.io/underscore/underscore-min.js"></script>


JSBin works like a charm.

Wednesday, November 09, 2016

Software Estimation with Hours or Story Points in Scrum (aka the Eight Bloodsucking Ticks of Estimation)

Should you estimate with hours or Story Points when starting a scrum?

I've done both here in the great state of Texas and here's my thoughts:

Starting out I always liked hours.  Hours are comfortable, you can understand them, and they are  simple.  How many hours to make that widget?  Seven.  Easy.   You can touch hours, look them up in the dictionary, and explain to your boss what an hour is.  But "hours" have a dark side.

At the beginning of a sprint, we estimated we could work 6 hours a day,  with 2 hours for email and meetings.  How many stories can we put in a sprint?  Well, we've got two weeks, that's six hours times 10 days equals 60 hours of work per developer.

But our estimates were always way low for the work, about half of what they should be.  Frustration mounted as we missed features due to poor estimations.   Slowly, like a rattler sneaking up on a rat,  I realized the problems with estimating in hours.

When estimating hours we miss these eight bloodsucking ticks:

1.  Additional parts of the task we didn't think about.

2.  Some tasks are harder than we thought.

3.  Task Interruptions.  "Hey, I know you are in the middle of a scrum, but production has this huge problem and the big boss says to drop everything and fix it now."

4.  Unexpected tool problems.  At the most inopportune time, your drive will crash, Visual Studio will get corrupted, and the new guy will demolish the entire Git repository.

5.  Too many meetings.

6.  Developers are natural optimists.  "I really can do that in seven hours."

7. Pride.  You don't want to look bad in front of the ScrumMaster (tm)  and other developers, so you estimate low hours.

8. No time for bug fixes.  QA will find bad code, but we don't estimate time for it.

After seeing hours not working well we switched to story points.  How much is a story point worth?  We started with a rough guess of half a day.  (I know story points are suppose to be complexity, but, ... yeah, whatever, we started with two a day).

After a few sprints we got our velocity - about one story point a day - and it worked well.

The magic of story points is that they subsume the 8 Bloodsucking Ticks of Estimation into them.


Tuesday, November 08, 2016

Tips on Selecting the Lowest Electricity Rates in Texas Using PowerToChoose.org

 Looking for the cheapest electric rates in Texas?  The shocking truth is that it's not easy.
Start by visiting http://www.PowerToChose.org.

This will list the "cheapest" plans, but it's not quite that simple.  Companies have hidden costs, like a surcharge if you don't use 1,000 Kilowatt-Hours in a month so you just can't get the lowest price per KWH.

Here's a simple three step strategy for finding the best price for you.

Step 1:  Find out how much electricity you used each month for the last year.
You can find this by looking at your old bills, or, if you have a smartmeter, visit https://www.smartmetertexas.com .

Here's my chart from SmartMeter.com from last year:
And the details


Step 2:  Get the average for the months in these bands:  below 500, 500-1000, 1000-2000, above 2000 KWHs.
I had 9 months between 500 and 1000 KWH with an average of 570 KWH, and 3 months above with an average of 1,100 KWH.

Step 3:  Call the companies with a rating of four and five stars that seem to have the best rates from PowerToChose.org and ask them to tell you how exactly much a month with your average usage in those bands would be.

(Make sure their numbers include everything except taxes.  Two reps on different days from one company quoted me just the "electric charge", and neglected the $9.99 penalty for not reaching 1,000 KWH in a month until I asked if it included that charge.)

 Then multiple those monthly rates times the number of months in that band to get your yearly cost.

 Here's my spreadsheet.  I had 9 months below 1,000 KWH and 3 above.




Months below
1000 kwh
Months above
1000 kwh




93Annual Cost


Average KWH5701,100






CompanyPhone NumberPlan Name


Green Mountain(844) 854-2260Pollution Free Conserve 12 Choice$38.00$67.00$543.00






Discount Power(866) 584-7776Saver 12$45.16$85.00$661.44






Reliant(855) 350-8650Reliant Conservation (SM) 12 plan$45.24$83.77$658.47






Power Express877) 400-0232Sustainable 12$61.00$111.15$882.45


Apt 18$43.00$112.34$724.02






Source Power and Gas(888) 557-0065









TXU(855) 847-6135Discount Texas Choice (12)$75.00$130.00$1,065.00


Smart Discount for 12 months$65.00$86.00$843.00






Mid America(800) 342-3346









Ambit(877) 282-6248Texas select 6 month term$52.85$82.72$723.81


Lone Star Select 6 month$51.14$79.42$698.52

For my usage patterns the best offer I found was from https://www.greenmountainenergy.com.

Step 4: Have someone else do the heavy lifting.  A few options:

A.  Spreadsheet at www.xlhelp.com/Excel/Electric.htm .  It only works in Excel, and I use a Mac, so I cannot verify if it works, but it does look promising.

B.  EnergyChoiceExperts.com will tell you the cheapest plan based on their algorithms.  The cost is $35, but can easily save you that money.

C.  GeekYourRate.com/ will also calculate your best plan.  It's free for a while and they will charge money soon.  It's a beautiful website with wonderful graphics and an easy to follow process to get your best rate.
Here's a pic of my results:




Additional notes:
1.  At the PowerToChose.org web site you can get the exact formula the company uses for the different plans.  I tried to calculated what the customer rep should quote me before calling.

2.  It appears every company in the OnCor  region has to pay OnCor $5.25 base plus
-->$0.036384 per KWH.  Many companies charge a rate for electricity in the different bands, e.g., 7.5 cents for each KWH below 1,000 and 9.2 cents for above 1,000 KWH plus a base charge plus the OnCor charges.Other companies have a "bundled rate" and they roll the OnCor charges into a higher per KWH rate.

3. A good article about the process is at www.star-telegram.com 

Good luck!

Let me know if you find additional helps in picking providers.  I've thought about making a web site to roll all this up into a simple grid.  Would that be helpful to you?

[Update:  As it turns out my cheapest plan was from Gexa Energy, which both GeekYourRate.com and EnergyChoiceExperts.com found, but I did not research.  I would have saved about $80 a year if I'd used their advice.]



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 scrum.org 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.
Scrum.org 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 AdNug.org.  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"
http://github.com/couchbaselabs/restful-angularjs-dotnet
Nickel tutorial at http://query.pub.couchbase.com/tutorial/
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"?

Tuesday, September 27, 2016

Visual Studio Plugin for "Favorite Documents"

I was missing the "Favorites" folder from the file browser while inside Visual Studio.  After looking for 30 seconds I found an excellent plugin for VS, it's called simply, "Favorite Documents".

Inside Visual Studio, select "Tools/Extensions and Updates...".  Then search "Online" for "Favorite Documents." and download.

Once installed it adds a "Favorites" menu with all the functionality you'd expect:


Enjoy.

Thursday, September 22, 2016

Red Gate's SQL Search

I just downloaded SQL Search from Red Gate.
It's a great addin for Sql Server to let you search for strings within tables or columns.
This is especially useful when starting to work with a large unfamiliar database.

Tuesday, September 13, 2016

Why Smart Teams Make Dumb Decisions - Agile Austin Sept 13, 2016

Ken Howard presented "The Psychology of Error: Why Smart Teams Make Dumb Decisions" to 60 people at the monthly Agile Austin.
Here's a few pics:







 Ken wrote Individuals And Interactions: An Agile Guide, teacher at SMU.

My random notes:
We are affected by our emotions more than we realize and it hurts our productivity.

Illusionary Superiority - our minds feel we are above average
Error blindness - we don't see our errors as soon as we should.

It's best to honestly confront not ignore our limitations.

Need an environment of trust so we can admit and correct errors earlier.

Primed for future bias - first impressions, age gender bias, leading questions, initial project estiatmes stick with us.

implicit.harvard.edu - shows our bias

Emotions drive us more than we realize.

Beware when emotion-based opinions overshadow facts.

False memories can occur recalling our user stories.

Iteration blindness - we ignore last iteration's lessons.

When we run out of time we stop improving and planning.  We just work.

If you don't make your goals, it has an emotional effect on team members.

Avoid "Yes" addition.

If your Product Owner is bandwidth constraint, it causes real problems.

Dunning Kruger Effect

Einstein:  Ego = 1/knowledge

Sunk Cost Theory -

Hyperbolic Discounting - the longer the time it takes to achieve the goal, the less we value the goal

Our instinctive behaviour - want vs. should
We need discipline
Behavioural Habits - mood, boredom, work ethic, distractions at home, noise, lack of skill, other people.

If you have jerks, slackers, or depressive co-workers on a team - that person needs to be dealt with by a boss or a co-worker otherwise the bad apple infects the other team members.

AgileIntrovert.com











Monday, August 08, 2016

Pitfalls of Continuous Delivery - Austin .Net Users Group

Jeffrey Palermo, founder of ClearMeasure.com, spoke to 35 people at the August .Net User's Group (adnug.org).






ClearMeasure has a sample solution: 
 https://github.com/ClearMeasureLabs/ClearMeasureBootcamp

My notes:
Do not set up a shared database server for the team.  It's the same as a global variable that can get hammered.
Use independent non-shared databases created from a script in source control.
To facilitate continuous delivery with no downtime, add columns to a database so older and newer version of your code can run. 
If using a database table as a shared API between systems, use a separate sharable table.
Do not put more than on application in one solution because branching and versioning are coupled.
Share code between teams via a nuget package.
Do not let a build remain broken - fixing the build is everyone top priority.
Put server configuration into version control.
Do not clone virtual machines to create a new test machine, use versioned scripts.
Everything should go in source control - except passwords.  This makes continuous delivery possible.

You should have at least three Continuous Delivery Environments
Dev environment, only used by dev team
Customer test
Production

Do not add security patches to your live servers.  Instead spin up new server, add security patches, install your software and deploy.

Puts lots of disk space in build servers so you can keep old builds for testing and redeployment.

Use SpecFlow to automate Gherkin language tests ("When I log in","When I am on the site")

PhantomJS is a headless browser that can be used so IE doesn't pop up all the time.

















Thursday, July 28, 2016

How To Export A Sql Table As A Series Of INSERT Commands in Sql Server 2012

Occasionally as developers we need to copy the contents of a database table to another remote sql server that we cannot access.  We can export an Excel spreadsheet and email that to our counter parts at the remote machine.  Another option is to create a file of SQL insert commands that will transfer the data. 
In Sql Server Management Studio right click on the database containing your table,
Select "Tasks/Generate Scripts"

 
 Skip the intro screen and then select the table to export
 

Click "Next"
 Then select "Advanced" and set "Types of data to script" to be "Schema and data" (or only "Data" depending on your needs).

 Select "OK" in the panel.  Then enter a "File  name:" and then "Next>".



Then select "Next>"

And then "Finish".
And now in your export file "~/Documents/scripts.sql" are the commands to create and fill your table.



USE [MyPets]
GO
/****** Object:  Table [dbo].[MYPETS]    Script Date: 7/28/2016 1:51:31 PM ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
SET ANSI_PADDING ON
GO
CREATE TABLE [dbo].[MYPETS](
    [Age] [int] NOT NULL,
    [Animal] [char](10) NOT NULL,
    [Name] [varchar](30) NOT NULL
) ON [PRIMARY]

GO
SET ANSI_PADDING OFF
GO
INSERT [dbo].[MYPETS] ([Age], [Animal], [Name]) VALUES (1, N'Dog       ', N'Rover               ')
INSERT [dbo].[MYPETS] ([Age], [Animal], [Name]) VALUES (82, N'Turtle    ', N'Yurtle              ')
INSERT [dbo].[MYPETS] ([Age], [Animal], [Name]) VALUES (5, N'Llama     ', N'Rama                ')



Enjoy.