Sunday, October 07, 2007

This post is a continuation of two previous posts: Solving the Measuring Paradox and If You Measure This Then Your Children Will Be Next.

When setting quantity-based goals or metrics, it is usually better to measure over a period of time that is long as possible.
Consider the following example: suppose you want to motivate developers on your team to resolve as many bugs as possible. So you start measuring the number of bugs closed by developer and set the following goal: each developer must resolve at least two bugs a day.
Here’s what will happen: Alice, a developer on your team resolves her second bug of the day at 2PM. By 4PM she already has a fully tested solution to her third bug. Alice, being the perfectly logical creature she is and aware of the goal you set, will not check in her fix but rather wait until the next day. This way she will make it easier for herself to reach her goal tomorrow as well. In fact, your developers will start accumulating these “spare” bugs “just in case”.
I’ m against the measurement tactics altogether, but if you have to id it, it is much better to define the metric for a longer term.
Suppose that instead you define the goal to be “40 resolved bugs per month” (I’m assuming 20 work days per month here). This way, your developers still have more of an incentive to work on bugs throughout the period, because “good days” (with lots of resolved bugs) will balance with the “slow days”.

“What’s the difference?” you say. “This way or the other, 40 bugs have to be resolved over the month”.
Not exactly: first – the fact that bug fixes are being “held up” for later, stalls other things (such as other people waiting for the fix). Second – under the first version of the metric, a developer who already has a few bugs “reserved” has less incentive to work hard on new bugs, whereas under the second version of the metric, assuming the metric is not much less than the developer “usual” throughput, the “slow days” balance out the “good” ones and the developer has motivation to work on bugs to meet the long-term goal.

Here are two interesting analogies from the world of sports:
The football championships in Argentina have a unique (and genius IMO) system for relegation from and promotion to the top league: instead of relegation based on the performance in the last season (number of points) like everywhere else, teams are relegated based on their performance over the last three seasons. This avoids the common scenario where teams placed in the middle of the table have “nothing to play for” at the end of the season and games involving these teams tend to be rather boring.

Another example: players’ contracts often consist of a base salary and some performance based bonuses. These bonuses are always set based on a long period (e.g. average points scored over the whole season) and not a single game (bonus for scoring over X points in a single game).

Monday, October 08, 2007 6:40:23 AM (Jerusalem Standard Time, UTC+02:00)  #    Disclaimer  |  Comments [0]  | 
 Saturday, October 06, 2007
Rotshild St.

I finally caved and got the Flickr "Pro" account.
So now everything, old and new, is available here.
Sunday, October 07, 2007 3:56:32 AM (Jerusalem Daylight Time, UTC+03:00)  #    Disclaimer  |  Comments [0]  | 
 Wednesday, October 03, 2007

That was fast.
Oren wins a beer correctly answering the quiz.
Not exactly what I had in mind, but the rules didn't say anything about googling it.

Solution:
MySQL thinks that in my time zone (Jerusalem) daylight savings time starts on March 30th every year (which is not exactly true) and on that day the clock goes from 01:59:59AM straight to 03:00:00AM. So all the datetime values between 30/3 02:00:00 and 30/3 02:59:59 are considered invalid.

Also funny how another person who ran into this thought it was quiz material.

Thursday, October 04, 2007 6:50:30 AM (Jerusalem Daylight Time, UTC+03:00)  #    Disclaimer  |  Comments [0]  | 

First correct answer to win 1 free beer!(List of beers available upon request)
Post your answer in the comments.

The question:
I am trying to enter the value "30/03/2007 02:15:00" into a datetime column in MySQL and get the error "incorrect datetime".
What's wrong?

*update* Hint #1: format is okay, MySQL knows that 30 is day, 3 is month, 2 is hour and so on.
*update*: Solved! Answer here.

Fine print:
1. The free beer prize is available only within 25 miles of Ramat Gan. No beer-by-mail.
2. Shlomo may not participate.

Wednesday, October 03, 2007 11:11:07 PM (Jerusalem Daylight Time, UTC+03:00)  #    Disclaimer  |  Comments [4]  | 
 Thursday, August 23, 2007

Zoominfo is a website that exposes a database of companies and people. Zoominfo builds this database automatically by software that crawls the web and extracts structured data from unstructured web pages (for example, "about" pages in company websites and press releases) using natural language processing algorithms.
A while ago, I posted a little satirical "press release" about me, the CTO of pashabitz.com, purchasing a burekas from "sammy burekas".
A couple of weeks ago zoominfo's crawler reached that "press release" and now I am listed as the "chief technology officer of pashabitz.com".

Just a reminder of how hard it is to code anything related to AI.
Computers just can't get a joke.

Friday, August 24, 2007 12:59:16 AM (Jerusalem Daylight Time, UTC+03:00)  #    Disclaimer  |  Comments [0]  | 
 Tuesday, August 21, 2007

As I've mentioned, I left Clarizen a couple of months ago.
Now about the new thing:
I joined a new startup company - Semingo.
During the past year I got certain that what I want to do right now is develop ideas "from scratch" in a startup environment. So when Sagie, who is one of the founders of Semingo and my friend from the army days invited me to join - it was a perfect fit.
The idea we're working on is very exciting and the people on the team are very bright.
Oren and Tomer are also blogging from a few feet away (and more bloggers coming soon!!).
We've only just started but it's been a lot of fun already.
About the product: all I can say right now is that it's related to social networks (just because that's what the press release says) and it's as cool as ice (before global warming). Don't worry, we're planning to release soon, so you'll be able to use it in no time (touch wood) - stay tuned!

Wednesday, August 22, 2007 5:09:25 AM (Jerusalem Daylight Time, UTC+03:00)  #    Disclaimer  |  Comments [0]  | 
 Monday, August 13, 2007

Flash:



Mitch:



And yours truly:

Tuesday, August 14, 2007 4:31:47 AM (Jerusalem Daylight Time, UTC+03:00)  #    Disclaimer  |  Comments [0]  | 

ASP.NET provides an easy way to write custom http handlers. You simply implement the IHttpHandler interface and register your handler in the "web.config" section under system.web like this:

<httpHandlers>
  <add verb="*" path="*.my_extension" type="MyHanlders.Handler, MyHandlers" />
</httpHandlers>

This registers a class named Handler to handle requests to URLs with extension ".my_extension".
You still need to let the web server know about this extension, and configure it to pass processing of files with this extension to ASP.NET.

To do it in IIS7, add the following to your web.config, under the "configuration" section:

<system.webServer>
  <handlers>
    <add name="handler_name" path="*.my_extension" verb="*" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework\v2.0.50727\aspnet_isapi.dll" resourceType="Unspecified" />
  </handlers>
</system.webServer>

Monday, August 13, 2007 9:25:33 PM (Jerusalem Daylight Time, UTC+03:00)  #    Disclaimer  |  Comments [0]  | 
 Thursday, August 02, 2007

I couldn't find this all in one place, so, here's how you enable developing and debugging an asp.net app under IIS7 on Vista:

1 Install windows features in "turn windows features on or off". You need these things (which are not installed by default):
Under "web management tools":
a. IIS metabase and IIS 6 configuration compatibility
b. IIS management console
Under "Application Development Features":
a. ASP.NET
Under "Common Http Features" - check everything.



2 Open the web application project in VS, go to proprties, under "Web":
 2.1 Select "Use IIS Web Server".
 2.2 Click "Create Virtual Dir" (this actualy creates an application, not virtual directory on IIS 7).
3 Open IIS manager:
 3.1 Make sure the default web site is started.
 3.2 Select your application:
  3.2.1 Click "basic settings...", choose under "Application Pool" the option "classic .Net AppPool"
  3.2.2 Under "authentication" enable "anonymous authentication"
  3.2.3 If you use windows/forms/passport authentication in your asp.net app. - you need additional configuration.
4 In VS set your startup page (right click on desired page in solution explorer)
5. Run

Note: debugging still shouldn't work at this point, only "start without debug".
Note 2: many places say that you must run VS as administrator (not the default way under Vista), but for me it seems to work when running not as admin as well.

To enable debugging:
1. Install this hotfix. Download here.
Now debugging should work also.


Related on pashabitz.com: SSL in ASP.NET - part I | SSL in ASP.NET - part II.

Thursday, August 02, 2007 4:43:48 PM (Jerusalem Daylight Time, UTC+03:00)  #    Disclaimer  |  Comments [0]  | 
 Tuesday, July 31, 2007

I should've posted on this a while ago, but it's been crazy lately. Better late than never.
A month ago I left my place of work at Clarizen. It's not been long, but it was definitely a great time for me.
I learned a lot and had so much fun.
Most importantly, I had a chance to work with some very talented and wonderful people - Eyal, Eli, Dudu, Sasha, Asher and many many more.
I participated in the development since a relatively early stage in the product's life and seen the release of the public beta.
Do take a look at what came out in the end - www.clarizen.com.

p.s. Clarizen-friends: don't forget to buy me a beer when the IPO comes!!!

Wednesday, August 01, 2007 6:08:28 AM (Jerusalem Daylight Time, UTC+03:00)  #    Disclaimer  |  Comments [0]  |