Sunday, August 29, 2010

Time keeps on slippin'

     In the August 26th Sports section of the WSJ, there is a side-bar on page D8 that discusses the practice of fouling late in close NBA games.  In particular, the article talks about whether or not a team that is up by three should foul the opposition in order to keep them from launching a three pointer and tying the game.  According to John Ezekowitz at the Harvard Sports Analysis Collective, it doesn’t really matter.  

     Clock management will continue to be a metric on which coaches and players are judged.  Several of the major NBA statistics sites have a category for "crunch time" shooting percentage, which is, how well does a player shoot in the waining seconds of a close game.  Of course, baskets scored in the first quarter count just as much as baskets late in the game, but the excitement isn’t the same.  It makes sense to take clock management in the waning seconds of a game seriously, but it was not always so.  At one time, end game clock management started a lot sooner.  Sometimes at the beginning of the 4th quarter.  Sometimes midway through the third.  Let me take you back to a time when the game moved...a...whole...lot...(wait for it)...slower.

     On November 22nd, 1950 fans of the NBA were treated to the lowest scoring game in the history of the league.  Final score: 19-18.  That's four full periods of professional basketball.  The record still stands.  The court was narrower than it is today, the players were bigger and there was little finesse to the game.  Conservative coaching styles made it worse.  Players such as Bob Cousy of the Boston Celtics were masters at holding the ball and dribbling out minute after mind numbing minute.  During that futile game, each team scored four baskets (the rest of the points came from the free throw line).  Four total points were scored in the final twelve minutes.  

     Enter Danny Biasone, the owner of the Syracuse Nationals.  In addition to having the perfect last name for an NBA owner, Mr. Biasone knew that something needed to change.  If things kept up, parents were going to start sending their kids to NBA games as punishment.  Groups of Zen students started showing up to games for Zazen in the gym nights (notice the thought, return to the game, notice the thought, return to the game...) He felt the game needed to be sped up.  A lot.  So, rather than allowing a team to hold onto the ball for as long as it literally could hold onto it, he decided a team had to attempt a shot within a predetermined amount time.  The device he came up with that tracked how many seconds remained before a team had to take a shot was called the Secondary Horologicaly Optimal Timepiece or S.H.O.T. clock.   

     According to the article History of the Shot Clock on NBA.com, Mr. Biasone came up with 24 seconds as the magical, league saving interval, by taking the total number of seconds in an NBA game and dividing that by the average number shots attempted by both teams.  This is incorrect.  What Mr. Biasone did was look through the box scores of games that he had enjoyed immensely, and took the average number of shots attempted in those games.  Masochist disasters like the like the one that happened on November 22nd, 1950 were not used.  Mr. Biasone calculated that exciting games that people enjoyed watching were ones where each team attempted about sixty shots each.  That came to one hundred twenty shots per game.  Take 2,880 seconds and divide by 120 and you get...24 seconds.  

     Twenty four.  It was perfect.  It was the number of hours in day, the number of carats in pure gold, the number major and minor keys in Western tonal music.  It was the number that saved the game of professional basketball.

     By the end of the 1958-1959 season, every team in the league was averaging at least one hundred points.   The NBA never looked back.  It was not long before NCAA basketball games had shot clocks as well.
Had it not been for the genius of Mr. Biasone, we would not have the excellent game we have today. Without the shot clock the NBA would have probably died out somewhere in the 60s with the final few games resembling the movement of tectonic plates.  Thanks to Mr. Biasone we no longer confuse the final score of basketball games with baseball and hockey final scores.  The history of the shot clock everyone.  I hope you’ve enjoyed this week’s article.  

     What will we have next time?  The die roll is a...10.  Coming up, a short fiction piece.

Wednesday, July 21, 2010

Facebook Value

Just a quick one question poll.  Just pretend it's radio buttons instead of check boxes.  I only meant to allow one answer.  That's what you get for making a poll on an iPhone.



Friday, July 2, 2010

Installing a Windows Service

There are already numerous posts on the web that explain how to do parts of this.  Unfortunately, few of them have all of the steps in one post.  Windows services are great, but they ain't all that easy to install once you are done developing them.

The following assumes Visual Studio 2008.

To create a windows service:

Start a New VB Project

Select Windows






    Select Windows Service









    The once it's created, double click the service1.vb file in the project explorer (or whatever you want to name it).

    There are only two sub routines in this file, OnStart() and OnStop().  There are comments inside each subroutine telling you how they should be used.

    In order to debug this service, you need to add the following sub routine to the file:

    Public Sub New()

    ' This call is required by the Windows Form Designer.

         InitializeComponent()

         ' Add any initialization after the InitializeComponent() call.

         If Debugger.IsAttached = True Then

              Dim tempargs() As String

              Me.OnStart(tempargs)

              System.Threading.Thread.Sleep(System.Threading.Timeout.Infinite)

         End If

    End Sub


    When you debug your service, you’ll actually be able to debug it like a regular console/winforms application.  You can leave this code in the application when you release it, since it won’t run if there is no debugger attached.

    Now comes the fun part.  Services don’t install the regular way:  Once you are done with your project, you need to add an Installer to your windows service project  Open the designer for the service class.  It will look something like this:








    Right click somewhere in the gray area and select Add Installer:
















    Give it a NAME!  Don’t leave it as Installer1.vb.  Call it Install.vb or something like that.  Double click your new install file (it’s in the solution explorer) and look at the designer view.  You should see a message stating that you should add components.  Right click the tool box and select “Choose Items”

    Wait a while so that VS can come up with the list of components.  This make take a bit.  There’s no progress bar so you’ll just have to wait.

    Once the list comes up, scroll down to the S’es and select ServiceInstaller and ServiceProcessInstaller.  Click okay and you should see them in your tool box.


    1. Drag a ServiceInstaller to the Designer
    2. Drag a ServiceProcessInstaller to the Designer
    3. Click on the ServiceProcessInstaller1 control
      1. Make sure the Parent Property is set to the name of your Installer Class (It’s the installer file you added to the solution explorer).  If you click Parent you should see a drop down list of classes.  Choose the installer class you added.
    4. Click the ServiceInstaller1 control
    5. Make sure the Parent Property is set to the name of your Installer Class (It’s the installer file you added to the solution explorer).  If you click Parent you should see a drop down list of classes.  Choose the installer class you added.
    6. Type the description of the service. (This will show up in the Services MMC window with all the other installed services).
    7. Type the DisplayName. (This will show up in the Services MMC window with all the other installed services).
    8. Type the ServiceName. (I believe this is the name of the process that will show up in Task Manager)
    9. Set the Startup Type (Automatic, Manual or Disabled)  You’ll probably want Automatic.
    10. Change the compile option from Debug to Release.
    11. Now you are ready to compile and install.
    12. Build the application.  Do no publish it.
      1. Make sure that the server you will run this on has .NET 3.5 SP1.  If it does not, you’ll have to install it on that server before continuing.
    13. Copy your release directory to that server.
    14. RDP to that server and open a command prompt.
    15. Change directory to C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727
    16. That is not a mistake, it should be the v2 directory.
    17. Run the following command:
    18. Installutil.exe (followed by the path to the exe you setup in step 13).
    19. If you selected the service to run as a User you’ll get a pop up asking for the user credentials.
    If everything installed correctly, you should see a bunch of text that ends with this:





    Open up the Services MMC and you should see your service installed.

    Be sure to start it.

    There you go.  Now you can run windows services instead of constantly writing console applications that are fired off every five minutes from the Windows Task Scheduler.

    Wednesday, May 12, 2010

    I'm on iPhonegraphy today!

    Just a quick note:  I've really gotten into the iPhone photography thing here lately.  The good folks at iPhoneography were kind enough to show my stuff in one of their reader showcases.  You can find their site here.

    I do have lots of software related posts to do, but they take a while to prepare.  I'll get back to the main mission soon.

    Friday, May 7, 2010

    Learning about Twitter

    I was going to write a long post about Twitter and how useful it is. I've spoken to several people who think it's all celebs and teenagers. There's a fair amount of that, but there is so much more. Lots of people are using it for very useful purposes.  Twitter demographic statistics can be found here.

    Anyway, like I said, I was going to write a post about Twitter, but the post I wanted to write has already been written by Scott Hanselman.  If you aren't on Twitter or don't know much about it, I highly recommend you read this post.

    Interested?  Sign up here.  If you do, then follow me.

    Also check out his video about Life with Diabetes and find out how you can make a contribution to help find a cure.



    Tuesday, May 4, 2010

    Starting a blog

    Starting a blog is easy.  Making sure you always have new (and somewhat interesting) content is hard.  I'll make you a deal, I'll give you some pointers on how to make a blog and leave the content up to you.  I do the easy part and you can do the hard part.  Fair enough?

    Actually, there can be lots to just starting a blog.  There are many different ways of doing this and there are multiple companies that provide similar services.  I have no strong feeling one way or the other for most of these.  This just happens to be what i use.  One more thing, you don't need any of this stuff to have fun blogging (other than the first step...creating a blog).  Let's begin.
    • Create a blog on Blogger (owned by Google).
      • I suggest Blogger but only because I'm  used to it.  WordPress is also one of the better known services.  
      • There are lots of settings within blogger that you can mess around with.  I'm not going to go into detail on each of these but Blogger is well documented.  Help pages abound.
    • Google Analytics (owned by Google)
      • Google Analytics is a free service provided by Google that tracks your blog's visitors.  You can get their location down to the city, what browser they are using, screen size, what pages they visited on your site, how long they stayed there, what operating system they were using...it's all there.  
    • Feed Burner (owned by Google)
      • Lots of people use RSS readers instead of visiting individual sites.  You should enable the RSS feed for your blog.  The only problem is, RSS readers don't register as site visitors since they are only reading the RSS feed, not the site itself.  Enter FeedBurner.  It's like Google Analytics for RSS feeds.  You don't have to do this to have an RSS feed.  All blogs provide one.  But you can use FeedBurner to track RSS subscribes so you can have a better idea of your true audience.
    • TwiterFeed
      • I could write an entire post on Twitter alone (and I probably will).  Even if you don't use Twitter, you want to link your blog to a Twitter account.  Why?  Because people who use Twitter share things they find with other people on Twitter.  So if they like your content, it's like free advertising.  So create a Twitter account that sounds something like your blog.  Fill in the blog's web address in the Twitter profile.  Then go over to TwitterFeed and link your blog's RSS feed to the Twitter account.  Once you have done this, each time you create a new blog post, it will automatically show up with in your Twitter feed.  It'll put the title and a bit.ly link back to the full page.  What is bit.ly?  Read on...
    • Bit.ly
      • There are many different URL shorteners (more info).  Bit.ly just happens to be the one I use.  Bit.ly kind of builds off TwitterFeed and Twitter.  Since Twitter is limited to 140 characters, often times your entire Tweet is taken up by the URL alone.  Bit.ly takes the long URL and gives it a short one.  And...if you create a bit.ly account and then link it to your TwitterFeed account, you'll be able to track who,what, where, when people are clicking your bit.ly links from tweets auto generated by TwitterFeed.  
    • Addthis.com
      • Addthis provides a handy little snippet of JavaScript (don't be afraid, the directions are easy to follow) that puts group of links at the bottom of your posts that allow people to share the link on Twitter, Facebook, Myspace, and several other social networking sites.  This is huge.  Why?  Because people who search for content like yours and find it often know other people who are interested in the same thing and if you make it easy for them to share what they found on your site, they will probably get more eyeballs on your content.
      • Sharethis.com provides a similar service.
    • Facebook Page
      • If you're on Facebook, I would consider making a Facebook Page that imports it's wall content directly from your blog's RSS feed (a la Twitterfeed).  This allows people on Face Book to become a fan of it and then their friends see it an potentially join and so on.  You can also add a few other things to the page, like a calendar for events and a link back to the main blog.
    • Custom URL
      • You can register a URL that links to your blog so that, for example, the address bar says, "http://www.jonwear.com" instead of "http://jonwear.blogspot.com".  It makes you look a little more stable.  This is the only thing in this lists that costs money.  Usually you can get a URL for around $10 a year. This involves a little know how involving things like DNS and A Name records and the like.  There's lots of documentation on the web on how to get this done, but you might want to bring  in a knowledgeable friend to get this setup.  I'm sure you know one.
    • Money!
      • First off...you probably aren't going to make much (or any) money with your blog.  But you might, who knows...you might make pennies from the masses and retire.  Both of these services  integrate well with Blogger.  I suggest:
        • Google's Adsense (You get very small amounts of money when people click ads on your site)
        • Amazon Associates (You get a cut of purchases that people make through your site)

    Wednesday, April 28, 2010

    iPhone Images

    I'm experimenting with the iPhone camera and some of the little photo apps that you can get for it.  I'm not sure if I'm taking good photographs or not, but I'm having a fun time with it.  Hard to believe that it has all these imaging capabilities...and it's a phone too.

    As is my usual MO, I setup a whole other blog devoted to just my iPhone masterpieces.  Common sense finally took over and I decided to do just a post about it instead.  I may do others and if I'm still into this several months from now then maybe I'll spin off another blog then.

    I've enjoyed working with the limitations of the iPhone.  I have to look for places with good lighting or else trick them up some way with the editing software.  The constraints are quite liberating so far.  Anyway...here they are.  I'll keep uploading new images to this Flickr album (RSS):