Older blog entries for MichaelCrawford (starting at number 29)

27 Nov 2002 (updated 27 Nov 2002 at 14:47 UTC) »

Updated: Please Understand That This is Not a Troll

Despite the fact that it got modded as off-topic, Please Understand Why My Wife Can't Stand Mozilla was meant in all seriousness to help the Mozilla developers succeed in their effort to win the browser wars.

I'd like to suggest that anyone writing software meant for regular users (as opposed to developers) would benefit from reading it.

(Updated yet again: filed this in bugzilla as #182221.

Embedded Systems Programming

... is certainly challenging. Recall my earlier diary entry where I said that despite kroah's warning I thought it would be really cool:

Personally, I would be really thrilled if I could get paid for six months in order to get a beeper not to warble. I've been in that position before, and I loved it. I miss it terribly.

Well, now I'm spending six months trying to get a beeper not to warble. Sometimes it's hard to remember that I'm supposed to be thrilled.

I proposed my current project to my client. I came up with the idea myself, but he has the hardware my idea would need and is in a position to market it.

He was skeptical whether it could be gotten to work, and suggested that before he committed to funding the product, that I write a "proof of concept" that would demonstrate the core features of the product without actually going to the effort of completing a finished product.

"Sure," I said, "no problem. That should take me about a week." So he agreed to pay the amount I'd normally want for a week for the proof of concept to be demonstrated.

Well, I'm going on week six now for my "proof of concept". There have been many late nights. My wife has been very distressed at it all, seeing economic disaster on the horizon. I have to say I've been pretty distressed too, but I've mostly I kept that to myself.

I had thought I could deliver it two nights ago, but once I got the software "feature complete" (for just the features required in this early version) the performance was so slow as to make the product completely unusable. I had planned to leave any optimization for the next phase of development, but I feared that showing what I had to my client would make him decide to cancel the project.

I stayed up round the clock up until late last night hand-optimizing my code, and although I got it to go much faster, it is still too slow to even be presentable, let alone to make a product we're going to charge money for.

Late last night I thought of a different approach I could take to my optimization, and I'm working on that now. I'm pretty sure I can get it to the point that my client will believe in its potential when he sees it. But there will be significant challenges remaining before it can be brought to market.

One thing I have to say, I'm much better at embedded systems programming than I was to start with. That's been part of my problem, not having too much of a clue how to debug complex problems when the target system doesn't have enough ram to support a debugger.

I had spent some time studying how to do embedded programming before I got actual work in it, but I found long ago that I learn most effectively (at least about programming) when I'm being paid to do what I'm trying to learn.

For one thing, I can afford to put real time into the study. An importantly, the sense of desperation that ensues when I don't understand how to do something that I will only get paid if I accomplish it helps me to develop a mental focus that I'm not normally able to accomplish. If I have to understand something difficult in order to continue eating, I'll do whatever it takes to come to that understanding. It's hard to develop that kind of motivation when I'm just studying something out of idle curiousity.

But it's been really painful. I had two individual bugs that took me a week apiece to fix, and one bug that took me two weeks. I had to spend a lot of time reassuring my panicked wife that my business wasn't going to fail, we weren't about to become homeless, because fixing those bugs was "right around the corner" - even when I wasn't so sure myself.

And getting everything done that I had planned to do for my "proof of concept", and getting it all working reliably, only to find it so horribly slow, was simply devastating.

Part of what keeps me going is the simple fact that I just don't have anything better to do right now. The alternative would be to just take some time off and do nothing. I am in discussions with several potental new clients, but setting up new work takes time. So despite all the unpleasantness, I might as well continue the work and do the best I can. At the very least, I'm learning a lot, and there is still the potential that it might pay off well in the end.

I'm sorry to be so oblique about what my product actually is. I know it's not at all in the Free Software spirit, but I want to get the product to market before anyone can start working on a competing product. I will be sure to announce it here once my client announces it on his website, and I'll put a link to his announcement. My current development plans call for the product to be announced in about two more weeks :-/

23 Nov 2002 (updated 24 Nov 2002 at 03:25 UTC) »

Update: Writing for Ransom?

To pick up again on my previous entry where I wondered whether I should copyleft one of my articles, I just read this interested /. piece on Ransoming code. Basically the idea is that rights in software remain restricted until a certain amount of money has been raised to pay for releasing it as open source.

Aside from the advertising benefit of reserving an article only to my own website, another reason I am reluctant to copyleft them is that they take a lot of work to write, and require a significant amount of time off from doing billable work for my clients.

In terms of time I could have spent consulting, Pointers, References and Values cost me about $5000 to write. Most of my articles don't take nearly as much work, but one or two thousand dollars worth of time is typical.

I don't think I would require the full amount of that in "ransom" to copyleft an article, as the publicity the articles would continue to generate would be worth a lot, but it would take quite a bit of money if that were all that was put forward to motivate me to copyleft one of my articles.

Let me ask you then, what would you pay me to copyleft any of my writing? Have a look at some of my articles, and email me at crawford@goingware.com to tell me what you think you'd pay to get me to copyleft an article. Would you pay up-front, or at least commit to paying, for articles I haven't written yet, based on my past performance?

You can find my proprietary articles here and here. I also have some copylefted articles here (so you can see I'm not completely mercenary about it).

Something to keep in mind is that, while most of my articles are proprietary, I've been posting everything I write on the web where anyone can read them for free. The copylefting would just allow them to be distributed more widely, allow modifications (usually) and facilitate translation into foreign languages.

Also, I write like this any chance I get. The problem is that I have a hard time finding the time to write. My goal for the last year has been to write one new article each month, but I have never achieved that because I've been so busy just making a living. Getting paid to write would make it much easier to make time away from my development work. I'd do some writing anyway, but I'd do more if I could get paid for it.

I have also wondered about getting grants to write articles (not from individuals, as in the Ransom model, but from charitable foundations or corporations).

I do plan to try writing for magazines, where I would be paid outright, but it would be pretty unusual for the magazines to allow the articles to be copylefted.

Shameless Plug

My wife Bonita has started a new web design business. Her first project for her first clients went online Thursday evening. Check out the folk-rock duo The Divine Maggees at www.divinemaggees.com.

MP3's aren't available yet but will be soon. You could always order their new CD, "Way Back When".

They will be playing an east coast (usa) tour early next year.

Help Me Decide Whether to Copyleft My C++ Article

I have written a number of technical articles which are copylefted. But I have written even more which aren't.

One reason I don't copyleft everything is that some of my pieces are almost pure opinion pieces, and other articles are very popular, and draw traffic to my website, which helps to advertise my consulting business.

A discussion started today on a Linux Documentation Project mailing list about what some describe as poor quality in The C++ Programming HOWTO. Some feel it should be removed until it can be rewritten, and some have suggested that it has little content that can be salvaged at all.

Take a look in particular at Pointers are Problems. He just says not to use pointers if you can possibly avoid them, and to use references instead. I admit I hadn't read the document before it came up today, but the document looks like it was written by a Java fan who is trying to dress up C++ to look like Java, which I think is really inappropriate. There are strengths and weaknesses to both languages - if you don't like C++ and prefer Java, you should just program in Java rather than trying to make C++ something it is not.

In particular, pointers are required in C++. What looks like a reference in Java is really a pointer, it just has restrictions placed on it to avoid common problems. You can rebind a "reference" in Java, but you can't in C++, so you have to use pointers. But the author of the C++ HOWTO says "Pointers are not required for general purpose programming.".

So it occurred to me today that I have a wonderful opportunity to step in and do some good, if I were to relicense Pointers, References and Values under the GFDL and contribute it to the Linux Documentation Project. But I'm very hesitant about it. The reason is that the document is one of the most-visited web pages on my whole site, and everyone who reads it gets to see my banner ad at the top of every page.

Last month, the first page of Pointers, References and Values got 736 hits. So far this month, it's gotten 526. That's quite a lot of traffic for a website for a one-man consulting company. When I published a condensed version at Kuro5hin traffic to my whole site doubled for a month. Lots of people link to it too, guaranteeing me future visitors and helping the page to place highly in search engine rankings (the first fellow programmer I met in the state of maine found me by searching Google for C++ help).

I know that I could help a lot more people if I copylefted my article, but I fear that allowing people to read the article elsewhere would reduce the visibility of my consulting business. I'm sorry to say that, I know we are all here for Free Software, and I support it as best I can (and I think I can do more good with my writing than with any software I might write), but I worked long and hard to write the article and the dot-com crash has been particularly difficult for consultants.

Here's how I could be convinced to copyleft "Pointers, References and Values": tell me how copylefting it would benefit my consulting business more than it would to have the current proprietary copyright where people have to visit my website to read it.

Probably if the Linux Documentation Project is to carry my article they would want me to remove this section at the end.

If you don't want to post your response here you can email me at crawford@goingware.com.

Embedded systems programming

Well I think I am over the difficult obstacle I was having with my project, which involves customizing the firmware for an embedded firewire device. However, it does not appear to work reliably, I get I/O errors when communicating any really large amount of data with a host. But modest tests seem to work fine. Before I couldn't get it to work at all so I'm happy for the time being.

What I will do is write some test tools that exercise the device more extensively than what I had been doing, and then try to debug failures of the more rigorous tests.

However, I had hoped to deliver this milestone tonight. That's disappointing, it will take me a couple more days at least because I'm taking off tomorrow for the Embedded Systems Conference.

Here's how to do an assert in an embedded program. Suppose you have a function called LightLED that lights up an LED on your board, and you need to call ResetWatchdog periodically to avoid having the watchdog timer reset the CPU:

if ( !ConditionThatMustBeTrue() ){
    LightLED();
    while ( 1 ){
        ResetWatchdog();
    }
}

so if your assertion fails, the LED will light up and the board will stop processing.

It's Snowing!

About an inch has fallen so far this evening. I just put the car in the garage.

It's not the first snow of the season, we had a little snow a couple weeks ago, but it didn't stick.

It's coming down pretty hard, we might get quite a bit.

In other news, a nasty bug I've been stuck on for almost a couple weeks in my embedded project has been fixed. I should be able to finish my milestone by tomorrow evening.

Monday I'm going to the embedded systems conference in Boston, to pass out my business card to the vendors there and hit them up for consulting business.

15 Nov 2002 (updated 15 Nov 2002 at 06:10 UTC) »
Update:

Looks like The Linux Quality Database got scooped by the OSDL.

Well, more power to them. I guess I'll settle for writing more articles.

Got a security clearance?

I've been seeing a lot of job postings for military computer jobs for a while. Here's the first time I've seen an advertisement for a cryptologist on a job board. This individual must have heavy math skills in order to be able to write programs to figure out difficult problems..

I have a job search agent at HotJobs.com that emails me a few openings each evening. A few months ago, Lockheed started posting dozens of new openings every day. Raytheon is way up there too.

A search for "secret" at Monster yields 587 matches. Here's a contract for an INFOSEC engineer with a top secret clearance that is advertised at $70 per hour. That's pretty good for today's economy.

hub, you might enjoy reading my Important Note for Recruiters and Contract Agencies as well as Market Yourself - Tips for High-Tech Consultants.

In the four and a half years I've been consulting full-time, I've only found one contract through an agency. I relaxed my policy somewhat since the dot com crash, but I have not had any paying work through agencies as a result, just a couple interviews.

If I depended on the agencies to make a living, I'd be a dried up pile of starved bones by now.

Most job openings are never advertised. You would do better to locate companies that you might want to work at, and mail them your resume and cover letter unsolicited. Using the web helps to locate the prospects, but I think a paper letter is the best way to approach them, because they get spammed with so many email resumes.

13 Nov 2002 (updated 13 Nov 2002 at 11:28 UTC) »

Updated: LinuxQuality

I was stoked just now to find that a Google search for linux quality yields The Linux Quality Database as the number one search result and LinuxQuality's articles section as the number two search result.

It's good to get recognized.

However, I am saddened by two things - I have not had much time to work on the site and haven't done anything at all with the database I propose, so I imagine many visitors find their expectations unfulfilled when they visit the site.

And it also distresses me that there isn't more of a focus on quality in Linux - I would have thought that someone else would be so active at it that they'd place higher than my site in google's search results.

Embedded Systems Development

Consider for a moment how you would debug your applications if no debugger were available. That's how it is with many embedded projects. Sometimes one could use a debugger but it requires expensive hardware like in-circuit emulators.

In the project I'm working on now the device doesn't have enough resources that I could run a debugger alongside the firmware. I can turn some LEDs on and off, but that's about it.

It reminds me a lot of the way I debugged early on, before I figured out how to use a debugger. Mostly then I used printf. But in this particular case I can't even print messages. I have found somewhat creative means of finding out the values of variables and such. But it's taken me a while to figure out how to do that.

I'm having a really hard time with this project. Bonita asked me tonight if it was really such a good idea that I should do embedded systems development, but I think despite my difficulties that it is. I'm very determined to complete this project and do more. But it's been hard.

I've been working as a programmer over fifteen years now. There's not a lot of people who do actual coding work for fifteen years; most move into management or marketing or some other job function where they're not pounding out code. But I really don't want to do anything else.

The problem is that most people these days don't want to hire someone with fifteen years experience. I've seen positions advertised for senior software engineers where they expected someone with one-third my experience.

Sometimes when I apply I'm told I'm "overqualified". That's a euphemism for "you're too old". Age discrimination is rampant in an industry where you can get a kid to work 80 hours a week for spare change and worthless stock options. I'm married, I own a house and have bills to pay, and would like to have a life outside of work - that makes me overqualified.

But a number of programmers that I've met in the embedded world have has as much experience as I or even more. When I interviewed a year ago at Sky Computers I was told that all the engineers in the group I was applying for had at least twenty years experience.

So I think there will be some years left in my career if I do embedded work. My experience seems to count for a lot there.

The client I have now is the first I've done anything that could actually be called embedded systems development for, but I still have a lot of memories of my early days when computers had much less memory and CPU power, and the debugging tools were much more primitive.

Mike's New Marketing Slogan?

My wife found the following posted online somewhere. It is probably best that I not give attribution, as it was apparently posted in all seriousness. But I find it somehow inspiring. Do you think I should use it to advertise my consulting business?

I am the best of all that ever was. All of you must bow down before the greatness that is Me.

Ever Faithful,

Mike

Coffee?

If anyone would like to meet at the upcoming Boston Embedded Systems Conference drop me a line at crawford@goingware.com.

I went last year and really enjoyed it, as well as making some valuable contacts for my business. There's a lot of really interesting stuff shown there.

An exhibits pass is free. They say you need to preregister but last year I didn't find out before the deadline, and just showed up, and they let me in free.

20 older entries...

New Advogato Features

New HTML Parser: The long-awaited libxml2 based HTML parser code is live. It needs further work but already handles most markup better than the original parser.

Keep up with the latest Advogato features by reading the Advogato status blog.

If you're a C programmer with some spare time, take a look at the mod_virgule project page and help us with one of the tasks on the ToDo list!