Older blog entries for MichaelCrawford (starting at number 27)

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.

Performance tip for software on modern processors.

Summary: make better use of the cache, avoid really bad cache access patterns.

Are you an American citizen? Over 18? Then VOTE.

Otherwise you have no one to blame but yourself for what happens to this country.

18 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!