Friday, June 05, 2009

The new Demo showing XAML for Windows CE is really, really impressive.  This is non-WinMo, meaning CE no longer is a second-class citizen  in the device market.  If only I knew how to do design work....

6/5/2009 6:48:26 PM (Eastern Daylight Time, UTC-04:00)  #    Comments [0]  | 
 Tuesday, May 12, 2009

Admittedly this isn't really mobile related, but the guys over at CI Advantage are giving away T-Shirts with every download of the eval version of Deploy Now (which we do use and love here).  If you have desktop installations of anything, including mobile software or tools (we use it for testing the SDF installer scenarios, among other things) - it's a major time saver.

5/12/2009 10:01:04 PM (Eastern Daylight Time, UTC-04:00)  #    Comments [0]  | 
 Wednesday, January 07, 2009
I just discovered a site that I think is invaluable for any of us that answer a lot of public questions.

1/7/2009 12:36:32 PM (Eastern Standard Time, UTC-05:00)  #    Comments [2]  | 
 Thursday, November 06, 2008
So a few months ago we released our CAB Installer SDK, and we decided to try out value-based pricing as a social experiment.  Our thinking was that developers make their living - and typically a more comfortable living than flipping burgers - and that the would a) understand the value of code and time saved and b) be willing to compensate us for the SDK based on their perceived value of the product.

We here we are a full four months later, and how is this experiment going?  Well here's a graph that says it all:




What this says is that we've sold 51 "value units" to 37 customers, meaning that over 80% of you who bought it only paid $5.  Now assuming you're a low-paid, entry-level guy making only $40k a year that means you felt it's worth just over 15 minutes of your time (and keep in mind this thing comes with full source code).

What this tells me is that one of these must be the case:

1) The SDK sucks and has no value
2) People don't understand "value-based" pricing
3) Developers are cheap bastards who will pay as little as possible for something

Well #1 is probably not true, as we've used it on a few projects and it works well.  I think we descibed value-based pricing pretty clearly, and it's not a tough concept.  So all I can conclude is, well, #3 must be true.  Now we can't really hold it against you, after all we did allow you to buy it for $5 and some people simply have low moral standards.  I'm just surprised it's so many of you.

Will we change the pricing model?  Well I have two thoughts on that.

1) the current pricing includes zero support, so it's no "work" for us to just leave it as-is
2) moving it to fully open source might increase the number of people using it

I'm inclined to go with #1, simply because moving it to open source requires a bit of work on our part.  In short, we'll keep it out there as an apparent $5 product because I'm too busy to do anything else with it, but the likelihood of it getting any additional features is pretty slim.  It was an experiment that yielded data, and as such I'd say that it was valuable.  It certainly shows that it's a pricing model that can't be used to support a business.

11/6/2008 10:13:06 AM (Eastern Standard Time, UTC-05:00)  #    Comments [6]  | 
 Wednesday, September 10, 2008
Every now and then (much less now that .NET languages have been around are are pretty mature) I see people who are moving into .NET programming and they ask "which is better, C# or VB.NET."  Generally speaking there is no "better" but there are some things available in one language but not the other.  Typically I've always thought that C# had just a little more - it has the ability to support unsafe code, which I like and use occasionally.  I could never come up with something VB had that C# didn't.  Until today.

A friend asked me how he could use the Contains() method of a string inside a case statement, and it reminded me of an old VB 6 construct that I'd used, so I tried it to be sure VB.NET still supported it, and sure enough, it works fine:

        Dim myvar As String = "My Test String"

        Select Case True
            Case myvar.Contains("not there")
                Debug.WriteLine("Contains 'not there'")
            Case myvar.Contains("Test")
                Debug.WriteLine("Contains 'Test'")
            Case myvar.Contains("Other")
                Debug.WriteLine("Contains 'Other'")
        End Select

However the construct won't work in C#.  It won't even compile because C# expects case labels to be constants.

        string myvar = "My Test String";

        switch (true)
        {
          case myvar.Contains("not there"):
            Debug.WriteLine("Contains 'not there'");
            break;
          case myvar.Contains("Test"):
            Debug.WriteLine("Contains 'Test'");
            break;
          case myvar.Contains("Other"):
            Debug.WriteLine("Contains 'Other'");
            break;
        }

So there you go VB lovers - score on point for your side.  I'm not saying that I'm going to start writing all my code in VB now (not that I have anything against VB, I mean I did co-author a book on it, I'm just really rusty) but here's some fodder for what some consider a religious debate.

9/10/2008 11:55:08 AM (Eastern Daylight Time, UTC-04:00)  #    Comments [0]  | 
 Thursday, January 17, 2008
We've had a little bit of a brand confusion problem for a while now.  Many people incorrectly refer to our Smart Device Framework library as "OpenNETCF" - so you hear things like "I'm using OpenNETCF version 2.1" which is a bit annoying.  OpenNETCF is the company name.  We have multiple products.  You're not using Microsoft 8.0 are you?  "Hey look at how smart I am!  I listen to music on my Apple 4.0."

But it seems to have gotten worse.  A friend just sent me a clip of a resume he received.  Of course it seems to have way more on it than a person probably would know having graduated probably 2 or 3 years ago (it's clipped, but I assume that the candidate was at UT for probably 2 years) but note the list of technologies.


1/17/2008 5:48:13 PM (Eastern Standard Time, UTC-05:00)  #    Comments [0]  | 
 Thursday, March 08, 2007

And so ends the debate of whether you can time an engine by ear or not.

 

3/8/2007 9:00:38 AM (Eastern Standard Time, UTC-05:00)  #    Comments [0]  | 
 Tuesday, February 13, 2007

Now this is a great way to pay your bills.

 

What now indeed.  For you non-math people, the value is roughly $1.002. If you're interested in the story behind it (and the audio really is worth listening to) you can find it here.

2/13/2007 12:10:09 PM (Eastern Standard Time, UTC-05:00)  #    Comments [2]  | 
 Friday, June 30, 2006

Check this out!  Software stored on 12-inch vinyl.  That's insane.

6/30/2006 1:29:24 PM (Eastern Daylight Time, UTC-04:00)  #    Comments [1]  | 
 Tuesday, May 30, 2006

As I get older and busier I've found that I seem to have a hard time keeping up with artists that produce music I like.  The radio only plays familiar new stuff over and over and is a poor way to get informed, and I don't really have the time to go blog hunting to find someone with similar tastes and then look at their play lists, then look at each band.  I want simplicity.

Today I found Pandora, and I found it works beautifully.  Basically you put in a group or song you like and it just starts playing random songs that it thinks you might like based on that.  You can tune it like a TiVo - telling what you do and don't like (though I've not had to say no to anything yet).  Even more impressive is that it will give you an explanation of why it picked the song it's playing.

They have a revenue model as well - you can buy the song directly from iTunes or the entire album from Amazon from the interface, which means that they may stay around a while to continue bringing us music.

 

5/30/2006 12:09:53 PM (Eastern Daylight Time, UTC-04:00)  #    Comments [1]  | 
 Monday, May 29, 2006

For those interested in the quick version of how I got where I am, I just posted my partner profile at OpenNETCF.  If you want a more detailed version you'll have to catch me in person and buy me a beer.

5/29/2006 3:19:41 PM (Eastern Daylight Time, UTC-04:00)  #    Comments [0]  | 
 Saturday, April 29, 2006

So OpenNETCF Consulting is growing and as such I decided to get a business number and fax line through Vonage.  We get and send very, very few faxes (maybe 1 a month if we're busy) but the line was free, and when you need it send or receive a contract, NDA or whatever, you just have to have it. 

Well we had been using the eFax service but since the fax line was free I figured there was no point in spending the $12 a month for the service we didn't need.  Mind you I never had a problem with them.  Service was fine, the product met our needs when we needed it, it just has become unnecessary.  So I decided last night I'd cancel it.  This is where the journey began...

Step 1 - Log in.  Well I don't use the service often, so I had to find my PIN.  Of course I recently changed jobs, so my PIn was in an email that was in a PST archive saved off from another PC.  Search through boxes to find the righ CD, then search through the CD for the PST, then search through the PST for efails from eFax, then search through those for a PIN.  I've now burned an hour.

Step 2 - Cancel service online. Scoured their site - every logical (and even not so logical pages) to find something that allows me to stop the service.  Found ways to alter my billing info, pay yearly instead of monthly, change my PIN to somethign I might remember (would've been useful a while ago), but nothing for stopping service. Another 30 minutes or so down the drain.

Step 3 - Email customer service.  Searched the site for an email for customer service.  Nothing.  Sent an email to their sales staff becasue it was the only email I could find.

Step 4 - Call customer service. I hate calling when an email or online form will do, but a call is what it must be.  Sorry, it's after their business hours, please call later.

Step 5 - Call customer service again.  Waited til the next day (got the feeling Saturday won't be too helpful, but I'm wishful).  Actually listened to automated menu this time and found that you cannot cancel service over the phone.  You must do it online (nice eh?).  Fortunately the message gives the URL: www.efax.com/cancel. There is absolutely no link on their site to this (believe me, I went back and looked) - it's an orphan page.

Step 6 - Cancel service online.  To cancel service you must chat with a live representative. Why can't I just click a damned button?  Now I'm getting irritated.  The representative needs my eFax number and PIN - fortunately I dug through the boxes yesterday to get it.

Step 7 - Chat with representative and try to simply cancel service.  Rep obviously is eitehr cut and pasting or has an app that posts responses or they have Clark Kent on the help desk.  Green are comments, not chat text.

Welcome to chat.
The session has been accepted.
 
{eFax Rep} Hello, Chris. Welcome to j2 Global online support. I am <rep name>, your online live Support Representative. How are you doing today? 
(at least he's friendly)
{ctacke} fine 
{ctacke} I have an account that I'd like to cancel 
{eFax Rep} I'm sorry to hear that you wish to cancel. Could you please provide me your Fax number and the PIN for verification purposes? 
{ctacke} the number is <number> 
{ctacke} pin is <pin> 
{eFax Rep} Thank you for the information. Please give me a moment while I quickly check your account. In the meanwhile, may I ask why you wish to cancel your fax account? 
(understandable.  always good to know why someone is leaving)
{ctacke} We installed a land line for faxes 
{ctacke} Basically we've grown and now have a permanent office 
{eFax Rep} Chris,I have just checked your account. Our records indicate that you have been a long time customer. We value your business and relationship with us. I would like to mention to you an exclusive offer.
(here comes the soft sell - now I know why I can't just bush a button)
{eFax Rep} Chris, It is always good to have a alternative faxing service as you may not know when the need for faxing may arise.
In the current scenario, as a special consideration and gesture of goodwill.Your eFax account will be credited with $25.90 so that you may utilize our services without being billed our monthly fee for the next two billing cycles. 
{eFax Rep} Hence, you will be able to use our service to its fullest capabilities and re-evaluate it for your faxing needs. During this credit period, you will not be charged any monthly fees. 
{eFax Rep} If however, you still feel that you do not have any use for our services by the end of the two months credit period, then you can always contact us back anytime. 
{ctacke} No thanks. I'd like to just cancel it. 
{eFax Rep} During this two months credit period, you can keep this service active and if you use it once in these two months we will be more than happy that we were able to serve you. Trust me there are no hidden traits and you will not be charged any monthly fees for this account during this period. 
(What part of "cancel it" does he not get?)
{eFax Rep} As a good will gesture to continue our association we will offer you an additional gift balance of $10 along with the monthly credit which will enable to send up to 100 additional fax pages free of cost anywhere in USA & Canada. 
{eFax Rep} Chris, all you need to do is contact us once before the two months credit period ends if you do not wish to continue with the service. There is certainly no obligation to stay back after the two months credit period ends. You can contact us anytime. We are available 24 x 7.
(24x7 if you know the magic way to get here maybe)
{ctacke} Yes, I understand that, but as it is I forget things. For example, I installed my land line almost 2 months ago and kept eFax just in case we had issues. We haven't, so I'm comfortable with just keeping the land line. 
(really, I'm forgetful and the last thing I want is to get another charge in 3 months because I forgot to find my PIN, come to this magic page and get this same sales pitch again)
{ctacke} So I would like to cancel my eFax account. Thanks. 
{eFax Rep} All right, I will cancel the account for you now. 

So what's going on here?  It's just like many other companies.  They count on you being forgetful or not closely monitoring your bank account.  I obviously don't need a second fax line, but if they can get me to keep the service, even for free for a few months (zero cost to them to do that) then maybe after that period I'll forget to cancel and they can charge me at least once before I can cancel again.  Sure, it's only $12, but it adds up.

4/29/2006 11:35:57 AM (Eastern Daylight Time, UTC-04:00)  #    Comments [1]  | 
 Sunday, April 16, 2006

Some people who know me say that my sense of humor is a bit skewed. I agree and as proof, here's something I find hilarious. In fact most of the cartoons on their site quite funny.

 

4/16/2006 12:35:06 PM (Eastern Daylight Time, UTC-04:00)  #    Comments [1]  | 
 Tuesday, February 28, 2006

So today I'm working at home listening to a new found online 80's radio station from somewhere on the other side of the pond and on came a song that actually somewhat shocked me.  I mean I'm not offended - I thought it was funny as hell, and being offended is what being free is about anyway. 

Anyway it was a guy I'd never heard of before: Ivor Biggun.  Now I imagine if you're from that side of the pond you've heard of him - he's been around for decades and has loads of albums out, but after reviewing a little of it - just scanning track titles even - I think I know why I've never heard him before.

Long live the uncensored world of online radio.

2/28/2006 4:52:42 PM (Eastern Standard Time, UTC-05:00)  #    Comments [1]  | 
 Friday, November 11, 2005
You Passed 8th Grade Science
Congratulations, you got 8/8 correct!
11/11/2005 10:53:31 PM (Eastern Standard Time, UTC-05:00)  #    Comments [0]  | 
Your IQ Is 125
Your Logical Intelligence is Below Average

Your Verbal Intelligence is Genius

Your Mathematical Intelligence is Exceptional

Your General Knowledge is Exceptional
11/11/2005 10:53:10 PM (Eastern Standard Time, UTC-05:00)  #    Comments [0]  | 
 Wednesday, June 01, 2005

So I was going through my office the other day and accumulated a small pile of stuff, which included a full copy of Studio 2003 Pro still in the box.  Of course I could eBay it all, but what fun is that?  I'm thinking I need to have some sort of competition or giveaway or something.  I don't want to go through the hurdles of our last competition, so I'm up for ideas.  What should I do with it all?

6/1/2005 2:37:03 PM (Eastern Daylight Time, UTC-04:00)  #    Comments [3]  | 
 Wednesday, May 18, 2005

Sorry, couldn't resist the pun.  Here's an article I did for .NET Developer's Journal this month.  It's a peek at what I've been working on the last couple months.

5/18/2005 6:10:42 PM (Eastern Daylight Time, UTC-04:00)  #    Comments [0]  | 
 Saturday, May 07, 2005

My wife and I head to Vegas in the morning for MEDC and a little R&R.  It'll be nice to get a break to recharge from a very hectic last 6 months (though things are still going better than for Neil it appears).

Once I'm back I'll post some stuff on what I've been up to lately as well as some status info on the long awaited SDF 1.3 (it's good news, I promise).

5/7/2005 9:58:19 PM (Eastern Daylight Time, UTC-04:00)  #    Comments [0]  | 
 Thursday, April 07, 2005

OpenNETCF has a budget of about zero.  We've paid for absolutely no marketing whatsoever, so any “market awareness” is purely by word of mouth and search engine results. 

So tonight I got to wondering, many compaies pay thousands for search engine ranking and hire teams to better themselves.  I wonder how we're faring. Here are the results from some quick Google tests.  I list the search term and the placement we got:

Compact Framework : #2
Compact Framework Code : #1 (beating Microsoft even)
Compact Framework Samples : #15 (surprisingly low based on the last 2)
.NET Mobile : Not in first 50 (though DePaul University has a CF course, neat!)
Managed Code Mobile : #49
Pocket PC VB : #12
Pocket PC C# : #28
Pocket PC Managed : not in top 50
CE Managed Code : #7
Compact Framework Consulting : #4

So it seems that we've got pretty good placement for what I'd think are common search terms. I'd love to see higher ranking on some, but it seems we're getting more than we pay for.

4/7/2005 10:40:13 PM (Eastern Daylight Time, UTC-04:00)  #    Comments [2]  | 
 Thursday, March 10, 2005

A transmission rate of 10 Mbps implies that each bit is sent in 0.1 microseconds. For a coaxial cable, the speed at which the signal travels along the cable is approximately 0.77 times the speed of light (3.0E8 m/s). A bit therefore occupies 23 meters of cable. That means the smallest frame would be 13.3 km long.

For those who no longer use 10-baseT and gave up coax for twisted pair years ago, propagation speed in twisted pair is much slower - roughly 0.59 times the speed of light.  I'll let you do the math for a frame.

3/10/2005 10:48:07 PM (Eastern Standard Time, UTC-05:00)  #    Comments [1]  | 

So I'm in the process of writing a couple classes that wrap a stream interface driver.  Specifically I'm writing a class for a PCA9555 I2C chip, which inherits from a generic I2C class that inherits from the StreamInterfaceDriver class.  I come the the Read function and I realize that as the data parameter I have to pass a byte array, but the actual driver I'm talking to wants this to be a structure.  To make it more fun the structure contains a pointer to a byte array, so the struct is 16 bytes, 4 of which are a pointer to an array of unmanaged data.

To make a long story short, I ended up writing a new Read function in the I2C class that hides the base version so I can manage the unmanaged data.  Well I then needed to call the FileEx.ReadFile function, which needs a port handle.  The handle is a private member of StreamInterfaceDriver - oops, guess I didn't consider this in my original base class design.  Fortunately the SDF is shared source, so time from bug detection to when the publicly available code was fixed (making it protected) was about 2 minutes. 

If you've got customers concerned about using 3rd-party libraries I'd think examples like this would help ease their fears.

3/10/2005 4:58:11 PM (Eastern Standard Time, UTC-05:00)  #    Comments [0]  | 
 Tuesday, March 01, 2005

Another personality preview for those bored with the work they should be doing.

 

Cattell's 16 Factor Test Results
Warmth ||||||||||||||| 46%
Intellect |||||||||||||||||||||||||||| 90%
Emotional Stability ||||||||||||||| 50%
Aggressiveness |||||||||||||||||| 54%
Liveliness |||||||||||||||||| 58%
Dutifulness |||||||||||||||||| 58%
Social Assertiveness |||||||||||| 34%
Sensitivity ||||||||| 30%
Paranoia |||||||||||| 38%
Abstractness |||||||||||||||||| 58%
Introversion |||||||||||||||||||||||| 78%
Anxiety ||||||||| 26%
Openmindedness ||||||||||||||||||||| 70%
Independence |||||||||||||||||| 58%
Perfectionism ||||||||| 26%
Tension |||||||||||| 38%
Take Cattell 16 Factor Test (similar to 16pf)
personality tests by similarminds.com
3/1/2005 11:23:43 PM (Eastern Standard Time, UTC-05:00)  #    Comments [0]  | 
 Wednesday, February 09, 2005

If you've done much with the CF, then you're likely aware that NDOC doen't much like any namespace that's outside of the standard FFW (like the Microsoft.WindowsCE stuff).  While that's been an annoyance for documenting parts of the SDF (leaving holes in the docs), I just ran into a place where it prevents me from generationg any docs - when targeting the TinyCLR.

So, has anyone found anything that can generate decent looking docs without exploding on stuff it doesn't see (or maybe asking for the reference)?  I know NDOC is open source and I could get it working, but I'd rather do actual work.

2/9/2005 11:18:19 PM (Eastern Standard Time, UTC-05:00)  #    Comments [2]  | 
 Wednesday, February 02, 2005

Pop quiz, what does this code do?

DS1307 d = new DS1307(Cpu.Pin.GPIO20_VTU_TIO1A, Cpu.Pin.GPIO21_VTU_TIO2A);
d.SetRTC(new DateTime(2005, 2, 2, 21, 22, 0, 0));
for (int i = 0; i < 10; i++)
{
    DateTime dt = d.ReadRTC();
    Debug.Print(dt.Hour + ":" + dt.Minute + ":" + dt.Second);
    System.Threading.Thread.Sleep(2000);
}

Okay, so it's not too exciting, until you realize that what it calls - an I2C driver - is written in C# as well.  Yes, I've achieved a managed code driver.  Next question - what's it run on?  I'll give you a hint - it's not a Pocket PC.

2/2/2005 10:33:41 PM (Eastern Standard Time, UTC-05:00)  #    Comments [4]  | 
 Tuesday, December 21, 2004

So I finally ordered Halo II.  I put it off becasue I've had an unbelievably busy month and I knew that if I ordered it, productivity in getting the new house unpacked and all the other work I need to do would suffer, But I finally opened it up Friday night.  I finished the game last night - not bad considering I put in about 10 hours of coding on Sunday and didn't play at all.

Best part of the game?  Laura Prepon does the voiceover for a Marine and when she called one of the Covenant a jackass after shooting him I just about fell out of my chair.  I had no idea she had done a voice in the game, but it was unmistakably her.

12/21/2004 12:41:08 PM (Eastern Standard Time, UTC-05:00)  #    Comments [2]  | 

Following Mike and Neil, I took the “What OS Am I” online quiz and found that I'm Slackware Linux.

Interesting.  I used to be a diehard Slackware user in '93-'94, in fact in my recent move I found the old distribution CDs.

12/21/2004 12:34:12 PM (Eastern Standard Time, UTC-05:00)  #    Comments [0]  | 
 Tuesday, August 03, 2004

Here's an article I found while browsing Casey's blog, and I must say it's quite simple as well as insightful.  Now as any good Linux advocate would do, Paul maligns Microsoft - I'm not here to say that's good or bad, my views have already been stated - but the overall observations are right on target.  I know several great developers, and every one of them fits this model.

8/3/2004 1:23:30 PM (Eastern Daylight Time, UTC-04:00)  #    Comments [1]  | 
 Monday, August 02, 2004

Relative newcomers to the software industry, as well as a lot of people looking to get software done often ask some variant of the question “why does it cost so much to contract a developer?”  It might be disguised as “Why would I pay that much for a 3rd party component?” or “I can hire a junior programmer for a year for what they want for this!” but it always boils down to a misunderstanding of a value equation.

If a contractor quotes you $80 and hour you might be quick to say “that's about $160k a year!  Screw that!” but that misses a lot of things.  Leave out the fact that the contractor has to pay insurance, workers comp, FICA and all the overhead of a business.  Lets focus on what you're buying. 

You're not just buying an hour of that person's time.  You're buying the years of experience doing other work they have.  They're going to have seen far more problems and srewed up applications than a junior programmer will see in even their first 2 years.  You're buying access to a portfolio of base code they can draw from that is largely tested and true.  You're buying the late nights that they spent on past project pulling out their hair so that pitfalls are quickly avoided on your project.  Essentially you're paying for a much better ability to control the cost and schedule of your project.

So you're still thinking “it still seems expensive” are you?  Well face it, you can't sell an hour more than once.  If the contractor is selling you a product, you're getting a pro-rate on the hours spent developing the product because you're sharing the development hour with all of the other people buying the product.

Does it always make sense to contract out?  Of course not, but next time you're project has shot past a delivery deadline or gone overbudget and think about the experience base you have working on it then ask yourself “would having this project where the GANTT chart says I should be be worth the cost of a consultant?”

8/2/2004 11:25:22 PM (Eastern Daylight Time, UTC-04:00)  #    Comments [1]  | 
 Monday, July 26, 2004

I'm installing Platform Builder 3.0 so I can do some legacy support and when it prompted for Disk 10 it occurred to me that those of us who bitch about how long it takes to install Studio 2003 need to do a sanity check.  Remember the days when Office was something like 30 1.44 floppies?

Thank goodness for Virtual PC - I'll only have to do this once.  If you're a developer and not familiar with VPC, go check it out.  I think it gives Studio competition as one of the top productivity tools for developers.  Hell, I have half a dozen PCs without having to buy all the hardware, and it's easy to load to a known configuration.

7/26/2004 5:49:36 PM (Eastern Daylight Time, UTC-04:00)  #    Comments [0]  | 
 Saturday, July 17, 2004

Well I shut down commenting a while ago due to blog spammers.  I'm turning them back on and we'll see if it remains a problem.

7/17/2004 4:20:18 PM (Eastern Daylight Time, UTC-04:00)  #    Comments [0]  | 
 Thursday, July 15, 2004
7/15/2004 12:01:10 PM (Eastern Daylight Time, UTC-04:00)  #    Comments [0]  | 
 Thursday, July 08, 2004

Neil covered some great mechanisms for getting 10,000 records into a device database:

<quote>
1. Tie one end of a piece of string to the WiFi antenna, if your device has
one, and tie the other end to a tin can. Enumerate the 10,000 records on
your desktop computer and verablly dictate each record into the tin can.

Performance: slow;
Success rate: zero.
Implementation: easy peasy lemon squeezy.

2. Purchase a flock of carrier pigeons, 10,000 in number. Hand-write each
record onto a piece of paper and attach to the bird. Aim the bird at the
device and release.

Performance: slow:
Success rate: zero.
Implementation: possibly very messy.

3. Move to SQL Server. RDA and Merge Replication are your friends.

Performance: good!
Success rate: >1,000,000,000 pigeons.
Implementation: well documented.

4. Hire 10,000 people and get them to memorize one record each. Get them to
follow the device wherever it goes.

Performance: In theory, should outperform Oracle for record access. In
reality, you're statistically likely to get a few "slow" records
Success rate: Depends on the demographics of your recordset.
Implementation: costly, just like Oracle :)

5. Populate the DataSet on the server and transmit as a DataSet object using
Web Services ().

Performance: suffers from a serialization/deserialization overhead which is
costly with 10,000 records.
Success rate: Jackpot, baby!
Implementation: piece of cake.

6. Re-architect your solution. No one should need 10,000 records on a
device. Don't even think about loading that into a ListView either :)

Performance: the best yet.
Success rate: it's the pot of gold at the end of the rainbow.
Implementation: requires some research and reading of those folded paper
thingies.... (books)
</quote>

7/8/2004 12:56:46 PM (Eastern Daylight Time, UTC-04:00)  #    Comments [0]  | 
 Monday, June 21, 2004
6/21/2004 2:00:14 PM (Eastern Daylight Time, UTC-04:00)  #    Comments [0]  | 
 Wednesday, June 02, 2004
How's this for interesting - Microsoft has put WTL into SourceForge themselves!  Man have been skeptical of their "shared source" initiative, but this gives food for thought to even the most critical.
6/2/2004 7:09:32 AM (Eastern Daylight Time, UTC-04:00)  #    Comments [0]  | 
 Friday, May 28, 2004

I've now been running SpamBayes for a little over a week.  I've trained it with about 6000 known good and about 600 known spam emails.  According to SpamBayes it should be equal for best results, but I didn't have 6000 known-spams lying around for training, but I ran it this morning against a single one of my email accounts (IDSS) for just the emails received between the time I went to be and the time I woke up.  This is what I got:

Out of 46 total emails:

  • 1 (2%) was caught by Symantec's AV
  • 26 (66%) were spam caught by SpamBayes
  • 3 (7%) were spam missed by SpamBayes
  • 16 (25%) were valid emails (high only due posts from a yahoo group)

So far it's the best spam filter I've tried, and it's still learning.

5/28/2004 10:32:03 AM (Eastern Daylight Time, UTC-04:00)  #    Comments [1]  | 
 Friday, May 21, 2004

I remember playing Adventure on my Sears Atari-2600 clone.  Today's kids would probably get bored in the first 30-seconds, and I can only imagine what it'll be like when my kids, both under 2 now, start playing.

Here's a pretty entertaining "interview" with kids playing some of the classics:

http://www.egmmag.com/article2/0,2053,1487038,00.asp

5/21/2004 9:34:17 AM (Eastern Daylight Time, UTC-04:00)  #    Comments [0]  | 
 Thursday, May 20, 2004

Since I'm fairly prolific on the web with newsgroup posts, articles, forum posts and the like, I get an inordinate amount of Spam - on the order of 400-500 spams a day.  I've been fighting it for a few years now, and until now it's always seemed like the Spammers were winning.

I installed SpamBayes just two days ago and it is now correctly identifying about 80% of the crap.  I've got it set to not do anything with suspected items, only definitive Spam, so it probably could have a much better rate, but I figure why have it mark possible Spam that I have to read in a separate folder?   I mena if I have to read it anyway to verify if it's Spam, just leave it in my Inbox. 

Most importantly, it has not incorrectly marked or deleted any valid email, even when it had zero training.  I figure with a month of training this thing may be over 90%, saving me potentially a few hours a week.  And best of all, it's free.

5/20/2004 1:21:06 PM (Eastern Daylight Time, UTC-04:00)  #    Comments [2]  | 

I've really got no free time to speak of, but when a couple DVDs arrived in my mailbox yesterday, I just had to run the install.

For the record, when using Virtual PC, 128MB or RAM is not a large enough allocation for Longhorn.... :) It could only do 4-bit color at 640x480 and was slooooooooooowwwwwwwwwwww.  With a 600MB allocation on a 3.8GHz machine it's not bad (considering it's a very early release and hosted on Server 03) . 

Now to install Whidbey.  Unreleased products running on unreleased products.  That's a recipe for a crash if I've ever seen one.

5/20/2004 12:45:32 PM (Eastern Daylight Time, UTC-04:00)  #    Comments [2]  | 
 Monday, May 10, 2004

So now NASA is considering using robots to repair Hubble instead of a manned mission.  The primary reasoning being that it is safer and more cost effective.  While laudible reasons, I think that using robots should be the preferred method for a completely different reason.

Let's face it, putting a man up there and doing repairs, maintenance and upgrades isn't technically challenging (though it is rocket science).  We've done it all before, and doing it again really doesn't teach us anything or push the boundaries of space exploration for us.  Using a robot, on the other hand, is a new advancement.  We've not done it before and by pursuing it we'll be improving our ability to understand the complexities of the job.  THis will further our ability to make robots that repair other craft and machines even further from Earth.

So by all means, scrap an astronaut visit. It's costly, risky, and just plain boring.  If we want to push further in our abilities to explore space, we need to push our abilities to do work locally, and in this seemingly rare case what is good for science may also be good politically.

5/10/2004 5:33:44 PM (Eastern Daylight Time, UTC-04:00)  #    Comments [0]  | 
 Tuesday, April 27, 2004

One of my co-workers has a set of "rules" posted on his wall.  Basically quips that he's made up, and he uses them in conversation regularly.  Things like "Don't confuse a problem with a desirable situation."

i hadn't thought much about it, but I have my own list, it's just not on paper.  It came up when I used one of my "rules" and he asked if he could use it.  Not like I'm trying to patent them or something like "You're fired" (what a jackass).  At any rate, here are two of them:

It's better to have something and not need it than to need it and not have it.

This one started when someone asked me ages ago why I was buying my Glock, but I now like to use it for power tools, hardware accessories, car parts, and just about anything I want but don't need.  Of course my wife still doesn't buy it.

"Idiot proof" is unattainable.  They'll always invent a better idiot.

This comes up a lot when trying to decide just how far to take a sample or how much to document something.  Trying to satisfy the dumbest possible user just can't be done, so now I simply try to cover the upper 80-90% (depending on my mood).

4/27/2004 11:28:11 PM (Eastern Daylight Time, UTC-04:00)  #    Comments [0]  | 
 Thursday, April 22, 2004

I've been hearing the buzz about the Seinfeld/Superman commercial for a while now and decided to check it out.  I thought it was pretty damned funny, but did it make me want to get an AmEx card?  No.  Obviously it must deliver some revenues, or they wouldn't be working on "sequels" and I think it's an interesting way to market.  No annoying pop-ups or injections into my space.  I went to it, not the other way around.  Maybe we'll see more of this.  I hope so, it's better quality, more entertaining, and less obtrusive.  Hell, I might apply for a card just to encourage the behavior.

 

4/22/2004 10:57:41 PM (Eastern Daylight Time, UTC-04:00)  #    Comments [0]  | 
 Wednesday, April 21, 2004
For those of you who have devices custom manufactured, Intel has declared the SA-1111 companion chip as EOL (end of life).  This chip was commonly used in conjunction with the SA-1110 StrongARM processor (EOLed over a year ago) and the PXA 255 XScale processor in devices.  If you're using them, either start planning a migration path or a inventory purchase.
4/21/2004 9:59:18 AM (Eastern Daylight Time, UTC-04:00)  #    Comments [1]  | 
 Monday, April 12, 2004

Impact events are cool.  This online tool let's you estimate how bad it would be where you are relative to "ground zero" and is somewhat compelling.  I think they missed 3 factors though:

  1. Vibration focus at the impact antipode.  Vibrations tend to concentrate at the point exactly opposite the impact area on the planet.  There's some evidence of this in both lunar and martian geology.
  2. Tsunamis from oceanic impacts (they acknowledge it's missing).  You'd theoretically get waves the depth of the ocean if the impactor was large enough.  Imagine a metor large enough to touch the ocean bottom and still be in the atmosphere - that's only requires ~2 miles in diameter.
  3. Rain and flooding from oceanic impacts. A lot of water would vaporize if the impact broke through to the mantle.  I'd like to see the calculations, but I'm betting it would rain several inches or more almost immediately after the impact, and over a very short period of time.  Essentially you'd get global flash flooding.
4/12/2004 5:11:30 PM (Eastern Daylight Time, UTC-04:00)  #    Comments [1]  | 
 Tuesday, March 30, 2004
Here's an interesting quiz (and an example of someone with great graphics skills and way too much free time).  FWIW I got a 7 out of 10, so maybe HR shouldn't use me in the hiring process...
3/30/2004 5:09:55 PM (Eastern Daylight Time, UTC-04:00)  #    Comments [3]  | 

Finally,  the X-43A has successfully used it's scramjet engine to break the atmospheric speed record by reaching Mach7!

Admittedly it's very early in the cycle, but this will revolutionize air travel.  You could cross the US in well under an hour.

3/30/2004 9:15:50 AM (Eastern Daylight Time, UTC-04:00)  #    Comments [2]  | 
 Tuesday, March 23, 2004
I love cataclysmic geology, so this piqued my interest.  What would the effects of a 100-foot diameter body have on impact?  I doubt it would reach the surface, but a Tunguska type event is surely possible.  Fun!  Well unless you're at ground zero, but it excites me when nature puts man in his place.
3/23/2004 8:03:44 AM (Eastern Daylight Time, UTC-04:00)  #    Comments [0]  | 
 Monday, March 22, 2004

After reading Robert Scoble's latest blog, I got off on a tangent about the morality of selling software.  At any rate, I've excerpted my response below becasue I find the debate interesting.  Be forewarned, it's long.

 

Why is it that the open-source v. Microsoft argument always seems to be so polarizing?  It reminiscent of the two-party political structure, and it really makes me wonder if there is a whole host of "voices" that are in the middle, but since their opinion isn't so exciting you never hear about it?

 

Back in about '93 I got pissed off at my PC.  It's been a while, but I believe it started with too many Windows 3.11 crashes in one hour, so I ordered Slackware CDs, formatted the drive and began a journey. 

 

Now if you're not familiar with Linux at the time, XWindows as in its infancy and was a resource hog, so basically what you has was a command shell.  I had never run anything like it, having graduated from the Vic20, C64 and Amiga, and I'm here to tell you I burned a boatload of time just trying to get it running.  Ah the joys of a 12-hour OS recompile to install a new driver.

 

I did solely Linux for about 2 year and I loved it.  I got a second phone line installed and wrote a simple keep-alive script that essentially got me a dedicated modem connection to the University.  I loved telnet and FTP and thought the Web was just plain stupid when it appeared (did anyone actually find Lynx intuitive?).

 

All was well and good until I actually needed an application.  Chemistry required charts, and I needed to be able to get homework done and drink beer, and I knew one would have to suffer if I kept with an OS that had no applications.

 

So I partitioned the drive and installed Windows 95.  It sucked, it crashed all the time and it was slow.  But it ran Quattro Pro.

 

I used Netscape and tried to uninstall IE.  After that experience, yes, I believe Microsoft was using illegal business practices to stifle competition, and yes, I moved to IE because it was so hard not to.  

 

Linux stayed on my drive, but went from the default boot OS to the option.  Soon I was using it maybe once a week.  Then once a month.  Then I got a new hard drive (still have the old one with the $458 sticker on it!) and decided I could use the space better without Linux.

 

Sure Windows sucked, but I liked it better than a Mac.  After having the power of Linux, the Mac seemed like it was geared toward monkeys and the inept, so I kept going.  I mean really, it was the only OS with apps.  I tried OS/2 - nice, but again no apps.

 

I then moved into the "real world" and got a job - not as a programmer, but as a geologist.  By this time Excel had taken over Quattro for me - it just had better features.  That I chalk up to innovation and a better product.  Quattro got beat in the open market.  I'm fine with that.  My employer agreed and I was off and running.

 

After a fairly roundabout path through VBS and chance encounters, I ended up as a VB6 programmer using Windows 98.  Scoff if you will, but I've never had programming classes, and VB was simple to grasp.  It took me back to my VIC20 days and BASIC.  This is why VB has such a large following - not everyone is a CS major, and business needs to get done. 

 

The balance sheet doesn't give a damn if you use proper code techniques, what's important is that the task gets accomplished, and VB did (and still does) that.  Sure, it's enabled a *lot* of crap code, and many coders who think they know what they're doing, but it was a brilliant move by Microsoft.  The tools were great and it gave the masses the power to create.  Another great Microsoft achievement.  Still the OSes crashed all the time and sucked.

 

Fast forward a few more years and now I'm a mobile developer.  I've had Palm, RIM and WinCE experience.  Hands down I prefer CE.  Palm's OS makes no sense to me, and I charge a 20% premium if I have to even launch CodeWarrior on a project because it sucks so badly.  And it was state of the art when I used it.  So again, Microsoft had the edge with the best tool around.  RIM was smart enough to use the MS tools as the dev environment for their own non-Microsoft OS.

 

Fast forward a couple more years.  Microsoft releases the .NET Compact Framework.  For a 1.0 release I'm surprised.  I expect it to be really buggy, as I've come to expect Microsoft to let users be their testers and fix stuff later, but it was quite solid.  And of course it came wrapped all nice and neat in Studio, which is hands-down the best development IDE ever.  If you think otherwise you're deluding yourself.  Command-line compiling may make you a purist, but you're a slow purist and marked for redirection into /dev/null.

 

But of course the CF is missing lots of stuff (shocker, compress 80MB into 1.5 and you lose functionality) and being the person I am, I co-found a shared-source project called OpenNETCF.org.  We provide free source code for anyone who wants to use it, but the catch is it's all for a Microsoft product.  Yes, shared source targeting a Microsoft OS and Microsoft tools - even a Microsoft language.

 

We decided shared is better than open source because we think the GPL is crazy.  If someone makes an app that uses our stuff, why should they have to publish their IP?  People need to make a living, pay the mortgage, things like that, and you can't get it giving away the recipe for your special sauce.

 

So I've embraced free software, but only as far as I feel it's realistic in a business world.  Capitalism revolves around personal gain as an incentive, and it's that incentive that drives innovation.  Commoditizing everything will kill innovation.  Pure capitalism, however, fosters corruption and stagnation as well. 

 

It's the blend that hits the sweet spot.  Being able to sell a product so you can take a nice vacation gives investors and employers a reason to pay you to create software.  But corporate work is hindered by process and the very organization structure that they require to function.  The open/shared source community can react fast and innovate, but it lacks the ability to fine tune, to get it just right and go the extra mile, because there's little incentive to do so.

 

Is Open Source going to take over the software world?  I seriously doubt it.  There's no incentive, and if someone can get paid for a body of work or give it away, I'm willing to bet a majority will take the paycheck.

 

Is Microsoft stagnant and withering?  Hardly.  Look at the Whidbey/Yukon/Longhorn triumvirate.  If you think there's no innovation there you're seriously myopic. 

 

Do they always beat open source? Hardly.  I’m a huge fan of Firefox, and once again am refusing to use IE.

 

Did Microsoft break the law in the past?  Probably with IE and maybe with Media Player as well.  I don't follow it because I don't use it. 

 

Me, I'll keep on the same path as always - that which pays my mortgage, feeds my family and allows me to have fun.  Do I hope to make enough to retire early?  Sure!  Will I do it giving away software?  Never. I've made a grand total of $0 from OpenNETCF.org in the year it's existed, but I'll continue to work on it because I learn from doing it, which in turn makes me better, which make it more likely someone will *pay* me to do work for them.  Is that immoral?  You made that decision before you read this far. 

 

The point is that I like some of what Microsoft has done, and I don’t like others.  I like some aspects of free software, but others I don’t.  I can’t be the only person that thinks that getting the job done and making a living doing so can be done without rabidly following one side of this debate.  Can I?

 

3/22/2004 11:21:46 PM (Eastern Daylight Time, UTC-04:00)  #    Comments [0]  | 
 Thursday, March 18, 2004
Well I became a father once again at 00:10 this morning with the birth of my son Garrett.  Don't expect much activity from me for at least a little while....
3/18/2004 12:06:48 AM (Eastern Daylight Time, UTC-04:00)  #    Comments [0]  | 
 Sunday, February 22, 2004
I think that if hackers spent less time trying to steal from people, they really could do some constructive work.  Take a look at this sample of visual spoofing.  It could fool even fairly sophisticated web users (note the https URL and "golden lock" in the status bar).
2/22/2004 12:13:00 AM (Eastern Standard Time, UTC-05:00)  #    Comments [0]  | 
 Monday, February 16, 2004

Once again I spent time during my commute thinking about stuff....

  1. OpenNETCF.org really should pull apart the SQLCE CAB files and post the component files and the registry settings.  I've asked Microsoft to do this but have seen nothing.  The reason I think it needs to be done is so that SW developers can make a single-CAB install for their application rather than having to use a CAB for SQLCE and a CAB for their app.
  2. Alex's newest article on auto-updating is a great idea.  A couple of things that were missed (undoubtedly becasue articles require brevity, not because Alex didn't consider them):  The "updater" needs to ensure the app being updated is stopped before doing the update and the ability to update only pieces rather than an entire CAB is probably preferrable many cases where data is transferred in a pay-per-byte communication paradigm.
  3. I rarely (first time in probably 6 months) eat McDonald's anymore, but stopped on my way in today.  Why do they insist on making the coffee so f'ing hot!?  I got half way to work before it was even remotely drinkable without peeling the skin off of the roof of my mouth.
  4. I really hate having a cold - I can't hear, my balance is off, and my peripheral vision gets wacky from DayQuil.  Probably not a great condition to be driving in.
  5. I think I'll start a managed wrapper around the CAN bus driver today - that should be interesting.
  6. If the dollar continues to drop, how will that effect the elections in November?
  7. Passing laws to prevent offshoring software development sounds good, but does it really fix anything?  I mean the underlying reason that any job moves overseas is that you get a lower overall price for the same product.  The only way to really protect ourselves is to ensure a higher quality product, and education is the key.  Still, we spend billions we don't have in places few of us will ever see and teachers, who spend more waking time with our children than many parents, are underpaid, understaffed and overlooked.
  8. I really need to pour a concrete pad and build steps into my shop.  I wonder how long this cold is going to last.
2/16/2004 10:44:07 AM (Eastern Standard Time, UTC-05:00)  #    Comments [1]  | 
 Monday, February 09, 2004
A classic example of why ActiveSync 3.7 was quickly replaced with 3.7.1can be found here.
2/9/2004 6:33:13 PM (Eastern Standard Time, UTC-05:00)  #    Comments [1]  | 
 Monday, December 15, 2003

After reading Neil Cowburn's resolutions, I feel compelled to lay out my own:

  1. I will learn better how hardware and data buses work by learning PIC programming
  2. I will finish my Pocket Excel wrapper
  3. I will resist the temptation to always start new projects when I have unfinished ones on my plate
  4. I will overcome my loathing for web programming and try out ASP.NET
  5. I will get off my lazy ass and learn how the DataSet class works

Of course I should add to that the fact that I need to place more effort into some project that provide me financial benefit, otherwise my wife is going to get a bit fed-up with me burning so much personal time.  Anyone need any small project help or side work done?  :)

12/15/2003 1:09:41 PM (Eastern Standard Time, UTC-05:00)  #    Comments [0]  |