They want to hire me. What should I do?

This company is not one of those hop-or-top startups that either grow huge or fail. It is rather one that has a strong technical USP and will definitely get it’s sales if they manage to ship a solid product. Their product is priced like a sports car and they have already a handful of beta systems out there that are used by key customers. So far the feedback is great. With some thousand sales in mind they aim at a valuation in the middle tens of millions within 5 years. Of course that is idle speculation but so far everything looks good.

Two month ago i was introduced into this company as a freelancer. Their dev team consisted of a hardware technician, a maths genius who creates their USP and one guy, who integrated hardware and math and developed the existing UI on top of it. They told me about a trade fair four weeks later and that they needed to show their product with a new, fancy UI. They wanted to have this metro style kind of thing with tiles and touch friendly and stuff like that. And since they weren’t able to build it on their own, they needed me – desperately. I asked for an attractive salary and they happily accepted. So i went back to my office and within two weeks i knocked up a complete application with everything they wanted. We needed the other two weeks to integrate their existing algorithms and hardware and the trade fair was a huge success. Well, of course i just put together pieces from my earlier projects and restyled the whole thing according to their CI, but hey, for them i am the rock star programmer.

Then darkness was setting in. Their only programmer resigned. Within four weeks this company would have algorithms that are far superior to their competition but nobody who can build the software that moves the data around. Nobody who turns the algorithms into a product. Their current application was still far from being a product. In the following three weeks i helped them to fix things and incorporate new features for the next fair and then they realized their situation: No finished product and nobody who can build it. It is their only true product and obviously they need somebody who takes responsibility of it. For them i am still the rock star programmer and i already worked myself through the whole system. And they have only one week left to replace their resigned developer.

Needless to say that they asked me to stay. They want as much commitment as i can give and they want me to be part of the company. They offered shares and assured immediate budget for another developer. I shall be the one who build their dev team.

So where is the problem? First, i have my own two-man company and my own clients that sometimes need my time. I certainly won’t let them down. Second, i have (of course) some ideas for new products that i want to try. And third, i doubt that they can afford me if i would work full time at the current rate.

So i made up my mind and decided that i can only ensure three days a week. That doesn’t mean i wouldn’t work full time in case there is justified demand, but certainly not on a regular basis. At the same time, i think this company has potential. I kind of believe in their success and therefore i would love to take the ride and join them. Basically i want to tell them: Hey, i don’t want to give more than three days and a verbal assurance that i help as much as i can, i want to work for the same rate as i did as an external and yet i want to be part of your company and get a piece of the cake. I know that i have a very strong position to negotiate but the above claim sounds like i get everything and you get nothing. What could be a reasonable compromise? What is a good strategy to negotiate?

EDIT: read comments on hackernews if you like.

Progress of Resyncing the Raid not shown

Just to share my experiences. No specific finding except that MS operating system s*cks – again. And well, I also tell you how to get the progress of your software Raid resyncing the disks.

I recently found that on my MS Server 2008 R2 the Highest Active Time of my Disk in the Ressource Monitor is constantly at 50%. This obviously annoyed for two reasons: a) it slowed the system down a lot and b) i needed to know the reason for this since this server hosts several production applications.

Resyncing the raid lead to permanent activity of both Disks.

Resyncing the raid lead to permanent activity of both Disks.

I quickly figured the reason: A recent hardreset of the windows maschine forced it to resync the whole Raid 1. However, it seemd to take way to long, so i wanted to know the progress of the resync process. About an hour of google and frustration later i was sure, it is again a bug or missing translation or whatever in the OS. All hints from google led me to Control Panel -> Administrative Tools -> Computer Management -> Disk Management (or just search for Disk Management in Windows start menu). The Disk Management is supposed to show the percent of syncing. Not so in my case. Some hints told me to press F5 or right-click -> Refresh or Action -> Refresh or clicking on the Disk, then on More Actions then on Refresh… Nothing helped. So i decided to not spend more time and give the sync just one more day.

No progress report of the resync is shown

No progress report of the resync is shown, no matter what i tryed

When i came back to work 30 minutes later, the progress was magically there! And it was not just good luck, I actually was able to reproduce this behaviour. The Panel does not show the progress untill it changes a full percent! Well, 1 full percent of a 3TB Disk may need some time, in my case about 30 minutes (given the system is not in complete idle).

So my advice is: Just open the Disk Management and … wait. After 30 minutes or so you should get the information you need. Thanks Microsoft!

After 30 minutes the needed information appeared magically!

After 30 minutes the needed information appeared magically!

Another great MS feature is that there is no build in tool to get informed about the health state of your software raid. In my next post i show you how to get email informations if something with your raid gets wrong.

Entity Framework Migrations: Default Value for added Columns

Entity Framework is nice to rapid prototype and work with databases. The addition to have migrations of different database versions is a quite usefull extension if you work with already deployed databases that need to be changed without loss of data.

Well, i just added a column to an existing Table in my Database. The added Property

public virtual int ExtryLockingPeriod { get; set; }

in my Entity results in the migration

public override void Up()
{
AddColumn("dbo.AssetSettings", "ExtryLockingPeriod", c => c.Int(nullable: false));
}

And now the trick to tell the Entity Framework the proper Default Value:

public override void Up()
{
AddColumn("dbo.AssetSettings", "ExtryLockingPeriod", c => c.Int(nullable: false, defaultValue: 10));
}

Simple is that!