It could be that Owen considered droids beneth notice - the classic "They all look alike to me". As such, the only reason he would consider C-3P0 special were the memories that were erased. Upon meeting the wiped 3P0, nothing would be present to trigger any familiarity.
Well, of course, that's why you don't let people see your data structures, and why you provide accessor functions to use structure values, so all this kind of thing is encapsulated.
This is great in C++ (where HN makes even less sense) but in C it is a little hard to make accessor functions.
Plus, I could argue that if you are going to write foo->piBar = 0, that you should also write foo->piBar() - after all, isn't it important to know the return type of the function at a glance?
As to your rules: I'd rather have my code like this:
int option_count = 0;
than this:
int c_option = 0;
As for distinguishing between members and non-members, static, global and local, function parms and non-parms:
1) Globals very bad. File Statics bad. The number of globals and statics should be small enough that you have no problem remembering who's who. Also, the names should be VERY distinctive. If you need a convention for identifying globals or file statics you are ALREADY doing something wrong.
2) Members are either accessed off an object or within an object. In the first case it is very apparent they are members, in the second case the only things you could confuse them with would be locals or function parms.
3) Locals should be limited in scope enough that you can see the whole scope at one time. Therefor you don't need a way to differentiate them.
4) Functions should be small enough that you can see the whole function. The parmeter names should be obvious anyway.
Did it strike anyone else that the Forbes article was a complete waste of bits?
Where did the author get these ideas? Did he actually do any research - contact some N geeks, narcissists, etc., and ask them? Or was the entire article removed from the author's nether orifice, and slapped still dripping onto the Forbes website?
While an article like this might have seemed at home on The Onion, or some other humor site, for a magazine like Forbes it seems wildly out of place.
For example, let's look at the geek items. Clone yourself 500 times? That sounds more like the narcissist to me. A true geek would first secure his future, then buy his way onto the top ten supercomputer list (followed shortly by achiving the top ten on SETI and DistributedNet), donate large sums to the FSF, EFF (and depending upon the particular geek the NRA or HCI), buy several top programs and then OSS them (Delorme, anybody?) (Or better still, fund the development of OOP DCOM for Wine).
Or how about donating a large amount of money to your alma mater, on the condition that they terminate all athletics programs? Now that seems a geekly thing to do, IMNSHO.
First of all, have YOU ever heard of it refered to as "search and destroy"? Quite frequently such operations end up screwing things up because the SnR tool got confused.
Second, you are driving changes in files that you shouldn't have to change. As a result, you clutter up your revision control system with a bunch of crap.
Third, if you deal with any kind of QA department, they will insist upon verifying all code that you've changed - "But it was a simple search and replace" won't cut it (nor should it!). So you will have QA time being spend on verifying a bunch of things that you shouldn't have to verify.
The whole idea behind ANY programming methodology, be it OOP, Hungarian notation, extreme programming, team programming, or whatnot, is to make things easier. Anything that adds more work than it saves is a loss. I assert that the time saved by being able to tell that piFoo is a pointer to integer is much less than the time costs Hungarian notation imposes.
Consider a large program, in which we manipulate lots of ints. We have lots of pointers to ints, so our code looks like: .... int *piFoo = &bar; *piFoo += 1; *--piFoo = 5;
and so on.
Now, we discover that ints aren't big enough - we need to use longs. .... long *piFoo = &bar; *piFoo += 1; *--piFoo = 5;
...
OK, now we have two equally bad choices: 1) We leave the variable names alone. But now they are lying, and therefor are introducing more errors. 2) We change the variables. Now what SHOULD have been a simple change is rippling all over the code.
Even if you do as you should, and use a typedef, things are still bad: .... typedef int Thingy;
Thingy *pThingy_mythingy = 0;/* ????? */
....
How do you create the "warts" for typedefs without creating ambiguity?
It gets even worse if you have structures: ... struct Narf {
int *pi_Poit; };
.... *narf.pi_Poit = 5;
....
Now, you have to rev all the items that reference that structure, all documentation that refers to that structure, etc.
I can somewhat understand the use of a leading "p" to indicate "pointer to...." but otherwise the notation creates more problems than it is worth.
The proper place to trace variable types is not in the name of the type! It should ideally be traced by your editing environment, along with the location of the variable's definition, the location of it's instantiation, the location of it's initialization, and any comments that you want to assign to the variable.
...but MS has the specs shipped to them in lead-lined boxes with motion-detecting turrets mounted 360 degrees.
Hence my point - that ATI is really only screwing themselves by continuing to allow that sort of favoritism.
And under Linux, all I have to to is tell the game that it is talking to my native libGL, and the differences are handled there. That's what libGL is - the ultimate HAL.
Ditto for 2D stuff: new stuff would be linked against a version of libX11 that know how to access the extended color depths - and all that would do is pass the requests on to the X server.
In short - we actually have it BETTER than the Windows people in this regard, if the damn vendors would just throw us a bone!
Actually, I make a very good living as a software engineer, thank you very much.
I have worked both with MS WinNT and with Linux. I have written low-level drivers for both. I have designed systems of great complexity.
I can trivially turn your points around by pointing to Linux, to Mozilla, to Apache, to Sendmail, in fact to all of Sourceforge.
The single biggest thing holding back drivers under XFree is the fact that talented individuals such as myself cannot get the programming documents for boards like the ATI without signing an NDA - and to be given the opportunity to do so requires you to ALREADY be a "registered" XFree developer. Can you say Catch-22?
Several things jumped out at me in the beginning of the article:
Card can do 30 bit color. ATI has no drivers for Windows that can do this, however.
Card has floating point for color mapping. ATI has no drivers for Windows that can do this, however.
And so on. In short, there are many cool things in the hardware that do you no good right now, because they aren't supported in Windows.
<voice character="biff">McFly! Hello!</voice> Were ATI to release the interfaces to this things to the XFree86 guys, they could have an environment in which all of this cool stuff was supported very quickly. And since you can get access to the XFree86 code easily, supporting things like 30 bit color depth becomes a great deal easier than doing so under Windows. Yes, you might have to modify (GTK|QT) to get full support, and you might have a few apps asking for a 24 bit visual because they don't support 30 bit, but imagine if you had (Gnome|KDE) running 30 bit depth, running The Gimp.
Imagine running Q3, UT, or RTCW in 30 bit color with floating point shaders.
Imagine the pain on MS's collective faces when the boot logo of the demonstration machine is not broken glass but rather flightless waterfowl.
I've placed some email addresses for Delorme, as well as their snail-mail address, as well as a starting letter to send them in my journal.
I would appreciate anyone who emails or hard mails Delorme writing a brief note about what they did as a comment in that journal entry. I've been pestering Delorme for several years, and they've often responded with "Yours is the first request we've ever had for this." I'd like to build up some evidence to refute that assertion.
I'm very glad that Delorme was responsive to your needs, but your story tends to confirm my hypothesis.
Consider the nature of the feature you asked for - given a simple file format, for each object in file, create an icon on the map. Since they already have the "create an icon" code, the rest of this feature is a pretty simple one to implement.
Unfortunately, the code to implement what I want (Linux support) is NOT already present in their code base. And given some of the other replies to my posts, my conjecture about the nature of the code base seems to be correct - they would have great difficulty porting to anything that isn't MS Windows.
I was thinking about this more after I posted the previous comment.
First, I'd like to ask everyone who actually takes the time to contact Delorme to drop a line in my journal. In the past, when I've contacted Delorme about this, I have been told "Yours is the first request we've ever had for this".
I think what happens is the marketing types who handle such requests just discard anything that does not fit their preconceived notions, so all requests for Linux support get trashcaned.
Secondly, I think I may have an insight as to how we can persuade Delorme to work with the Free Software Movement. What follows is conjecture on my part, based on observation - if anybody from Delorme is reading this and wants to disprove me, go right ahead - but you'd better provide an (@delorme.com) address or I will ignore you.
From what I can see of the DLLs that the various Delorme products install, I would conclude their software is written in a mix of Visual Basic and Visual C++ - VB for most of the UI, C for the core functions.
From the rate at which they add new features to the programs, and the nature of the features so added, I would conclude that Delorme has a fairly small number of programmers - I would guess about 5 or so. This isn't surprising - they are mostly cartographers, not bit slingers.
Now, if these two inferences are correct, then I would not be surprised if Delorme's codebases are kind of crufty - the reason they don't knock new features out fast is that the codebase is too brittle and non-extensible to do so. If that is correct, then the ideal way in which Delorme could support non-Windows OSs would be with a code base rewrite to a more portable framework (e.g. Qt) and a more flexible design. The fact that this would allow Delorme on Zarius and other high-end palmtops as well as making Embbeded Delorme easier would be a plus.
Now, if I were the Lead Software Engineer at Delorme, my decision would be based upon the cost of a rewrite (both in terms of raw programmer hours, and in terms of opportunity costs - the cost of NOT shipping a new version every few months) vs. the benefits of such an action (being able to release MacOS versions right along with Windows, to add new features faster, etc.) What I would have to be able to present to management would be a way to do this with as little risk and as much profit as possible.
Perhaps a team of Free programmers could offer to do this rewrite for Delorme? It would have to be done under NDA initially, but the terms could be that once the deliverable code was ready and approved, Delrome would allow a dual license for the code. Were Delorme to refuse the code, then the code would revert to the programmers (minus any proprietary databases and such).
This would allow Delorme to continue as they have, but if the code delivered was of high enough quality they could jump to the new model quickly.
Again, Delorme's value added is the database, not the program to access it. As such, it might be possible to convice them that a Free program to access the data INCREASES the value of the data to the consumer, and thus gives Delorme more profit potential.
I concur that the mapping and trip planning software for any OS:(OS != Windows) is pretty poor. Yes, there are mapping programs out there that will show you where you are, but there are few trip planning programs that will help you select your route, identify items of interest along your route, and help you schedule your time. Of the Windows programs that I've used I have to give the nod to the various Delorme packages. However, Delorme is pretty much Windows only (yes, they do have MacOS versions of some of their programs, but the Mac versions lag the Windows version significantly).
As I see it, the problem is that creating a trip planning program is hard - not only do you need the map data (which is available), you need the route computing algorithm, you need the map drawing algorithm, you need the database of attractions, rest stops, gas stations, restaurants, and hotels. You need to pull all of that together. A proper trip planning program would be a project of greater magnitude than a good word processor.
While I would definitely agree that the best solution would be a Free Software solution, with a Free Software database, if you look closely at my ID you will notice that I'm Wowbagger, not RMS - I will accept a closed solution.
Unless someone is (actually, severel someones are) interested in creating a project on Sourceforce for this, I think the best solution is to bring pressure to bear on the vendors. Imagine if Delorme's suggestion box were/.'ed with requests for a Linux version (or even a Wine version) of their software - they might actually consider it. (In point of truth, setting here on my desk is a mailing from Delorme for their newest Street Atlas program - I am going to reply nicely to it and inform them that until such time as they can tell me truthfully that I can run their program under Linux they can remove me from their mailing list).
I have to wonder if the "give away the razor, sell the blades" model would work for a Delorme - make the actual mapping program Free Software, and make the old versions of their maps freely available (a la the AlladinSoft Ghostscript model), but sell access to the latest maps. This way, we could create a good mapping program under Linux, and have access to a database to feed it, but Delorme could still make money off their value-added - the up to date databases.
What I'd like to have is a scriping interface - so that I could write my planning script to say "Don't bother looking for hotels along the way - only look within 50 miles of a nighttime stop. Look for GOOD attractions within 100 miles of the route, mediocre attractions within 25 miles, and whatever within 5 miles. I want to leave at 17:30 Friday, I want to stop around 21:00 +/- 1 hour, start my days at 07:00, and stop for lunch around 12:00+/- 1 hour. Try to schedule stuff around those times." In other words, let my script generate trial routes, query the database relative to that route, and make changes.
Also, give me the ability to plug in my own databases (something Delorme is lacking in) - I want to get the database of 2 meter and 70 cm repeaters from the ARRL and plug that in too.
Buy a removable hard disk bay - preferably an external FireWire bay. Buy an appropriately large second drive - if you have 100G of stuff buy a 160G drive.
Place second drive in bay. Connect bay to computer. Start to copy data, using normal OS copy tools. Go to bed.
In morning, remove bay from computer. Power down bay, remove drive. Put drive in static sheilding baggie that it came in.
Drive to off-site storage (e.g. friend's house, bank, whatever.). Place drive there, still in baggie.
Voila! You've just backed up your data. Assuming a firewire bay, card, and 360G drive at the listed prices, this costs about US$500.
If your system at home (craters|gets r0073d|gets a virus) then you can clean your system and immediately use the backup drive, while copying the data back over.
If you go over to the Spamcop newgroups (www.spamcop.net and search for Felton, you will see that he is not always on the side of the angels.
He started a silly rant about how Spamcop "shut down his web site" because they assert he is a spammer. Which is completely false. Rather than repeating it all here, I suggest you go read it yourself - Here's the relevant archive month on Spamcop - unfortunately their search system sucks.
Were I designing such a board, what I would do is use an FPGA that had an available PCI core with scatter/gather support. That way, you could feed the parts with buffer lists in main memory, and get a pretty high bandwidth to and from the parts.
I'd also put a FIFO between the parts and the bus controller, so that brief contention with other devices wouldn't drop samples.
Lastly, I'd suggest using LVDS to talk to the DAC/ADC - that way you can get them OUT of the computer case and away from all the noise.
That's why I suggested the FSF make a board around the Intersil 50217 - 4 digital quadrature modulators, 4 256 tap FIR filters, all in 1 chip, running at 60 Msample/sec at 16 bits per sample.
And the Intersil 50216 is 4 quadrature demods, 4 filter banks, 1 chip.
The Nevada results are interesting, but I have 2 questions:
1) Is the NOTA option binding? In other words, had NOTA won in Nevada, would Nevada's electors been prohibited from voting for Bush and Gore? 2) Was the low turn-out for NOTA due to the fact that it wasn't nation wide? In other words, had NOTA been on all ballots, and had people known it was on all ballots, would the results been different?
If NOTA in Nevada is NOT binding, then I find it astonishing that even 8% of people would vote that way.
Actually, you DON'T need to sample a 10.7 IF at double speed.
The Nyquist theorm states you must sample your signal at not less than twice the bandwidth of your signal. You can limit the 10.7 IF to 60 kHz bandwidth and then sample it at 120 kHz just fine - this is called subsampling.
In effect your analog to digital converter becomes an additional mixer in the processing chain. If you think about it, sampling is just multiplying the signal by a stream of Dirac impulses in the time domain, which corrisponds to convolution by a Dirac impulse in the frequency domain - just like an analog mixer.
HOWEVER - you HAVE to bandwidth limit your IF correctly - if you sample at 120kHz and you have stuff leaking through at a bandwidth of 70 kHz you are screwed - your signals will fold over in the frequency domain.
For those who are interested, look up the Intersil 50216 - it is a dedicated chip that does much of the signal processing for you.
What would be COOL would be for the FSF to sell PCI cards with a 50216, 50217, and an FPGA - then you could really do some cool stuff.
The GNU radio page is a little thin on the hardware requirements to run the code - could you spell them out?
I realize this might be complex, and that the answer might be of the form
to demodulate a 16QAM signal at 115.2kBaud, you would need an XYZ digitizer card reading the 455 kHz IF and a AAA GHz Athlon CPU. To recover standard multplex FM, you would need a 123 digitizer reading the 455 kHz IF and a BBB GHz Athlon. To decode GSM you need a FFF digitizer reading the 10.7 MHz IF and a quad Athlon.
But as both a ham and one who designs SDRs, I'd like to know where this resides on the Home Hacking Scale....
I thought this was so a mess of democrats couldn't all vote for, say, Pat Buchanan (or Pat Robertson -- remember that?) for the republican nomination with the intention of completely f*cking up the republican primary. And vice versa. How would you prevent this scenario?
Simple - I wouldn't. If the (Dems|Reps) want to vote en masse to screw up the (Reps|Dems), then let them. The whole point of this exercise is to WEAKEN the 2 party system.
However, consider this - if the (Dems|Reps) are able to get enough people to vote for a bad (Rep|Dem) candidate, then they have enough people to vote for a GOOD candidate. Would it not make more sense to try to have 2 good candidates on the ballot - that way you win either way.
In many ways, the scenario you propose is already happening - each party tends to select the more extreme candidates, the better to lock in their own people. True moderates have about as much chance of being selected in the primaries as RMS has of getting a tongue kiss from Bill Gates.
I agree with you that the system is broken, but I disagree with you as to the solution - what we need is not campaign finance reform but rather campaign reform.
Let me lay out my assertions: 1) Supply and Demand - Supply always equals Demand, or rather Supply(price) = Demand(price), so solve for price. 2) Laws cannot significantly change Demand(price), all they can do is change Supply(price). Demand(price) is set by the consumers.
Now, in the case of campaigns, "price" isn't money, rather it is the availability of money. Demand(price) measures how much candidates (a.k.a. the consumers) and political parties are willing to sell favoratism for money, and Supply(price) is how much money donors are willing to give to get that favoritism. The Demand(price) curve is set largely by the political parties, while CFR would only change Supply(price) by making it harder for donors to fork over money.
The idea of CFR is that lowering the money supply, you will somehow make the candidates more responsive to the people. What will ACTUALLY happen is the big spenders will be able to ask for more favors for the same amount of money. They will find a way to funnel the money in - look at what happened when we started regulating "hard money" (money given directly to a candidate for him to use directly) - the big spenders simply invented "soft money" (money given to political parties and political action committees) to get around it. When we started regulating soft money, the big spenders simply started donating valuable services (while claiming the services weren't valuable).
OK, if you accept my premise, then CFR won't work. What would?
Remember, Demand(price) is set by the political parties. A candidate must run for two elections - the primary and the general election. Thus he must spend roughly twice as much money (increasing Demand(price)). Remember that the primary is not defined in the laws governing election - it is purely a party function (ther are laws regulating the primary, but there is no law mandating its existance). In my state (Kansas) you CANNOT vote in the primary unless you are registered with that party - thus I cannot pick a Democrat and a Republican that I like.
And that is how the parties control your options - when you vote in the primary, you can only select for one party, and when the general election comes around, you take the options you are given by each party. And so I assert that the primaries are part of the problem, and should be removed from the system.
Since there is no law creating the primaries, how can we get rid of them? First, do NOT allow the parties to use public facilities for the primaries unless they allow every eligible voter to participate. If they wish to exclude all non-party members, then let them use their own damn machines in their own damn locations!
Second, do not allow the parties to ask anything other than "Are you eligible to vote in this district?" Don't let them see if I am a registered Republican or Democrat. It's none of their damn business!
These two steps would greatly de-emphasize the importance of the political parties and their primaries (which is WHY you will never hear a Republican nor Democrat offering this idea up). It would lower the bar for independants, and it would remove a great deal of the cost of getting elected (lowering Demand(price)).
Next, how do we insure that the general election is more responsive to the people?
Binding None Of The Above
Require that for every race, one entry on the ballot be "None Of The Above", and that if there is no plurality (no candidate gets more votes than the others) or if NOTA gets the plurality, then all candidates in that race are disqualified from running for that office this term (that's the "binding" part).
I'd require the second election to happen within 1 month of the first - that way they cannot stall for time.
Consider the last US presidental election. Many of the people who voted for (Bush|Gore) were really voting against (Gore|Bush). Even within their own parties many people said "I really don't like (Bush|Gore), but I won't vote for (Gore|Bush), and I won't throw my vote away". Now, if one of the entries had been BNOTA, how would YOU have voted? I assert that we would have disqualified both Bush and Gore.
Now, some people have said "Yes, but then we might NEVER elect someone". I don't think so - the political parties aren't stupid. Again, consider the last presidential election: Had BNOTA been the law of the land, the Democrats would have said "Yes, he's the incumbent VP, but people don't like him. If the Republicans run anybody worth a damn they will win, and if they run Bush, then NOBODY wins. We'd better run somebody people will like." The Republicans would have reasoned simillarly.
Also, BNOTA makes it easier for third parties to come in. Let's say both the Republicans and the Democrats had run Bush/Gore. Individuals like Nader could have sat back and NOT entered the first race. Instead, they could have spent their efforts convicing people to vote NOTA. When Bush and Gore were knocked out, THEN they enter and campaign. Meanwhile the big parties are scrambling to get another set of candidates ready.
Now, back to the Demand(price) curve -when you have only a month to run your campaign, you are limited in what you can do - there's only so much ad time on the air, so many events you can go to, so many HOURS until the election. A smaller party can blitz just as effectively as a big one.
OK, that's my opinion. If you've read down this far, please think about it before hitting that reply button.
It could be that Owen considered droids beneth notice - the classic "They all look alike to me". As such, the only reason he would consider C-3P0 special were the memories that were erased. Upon meeting the wiped 3P0, nothing would be present to trigger any familiarity.
This is great in C++ (where HN makes even less sense) but in C it is a little hard to make accessor functions.
Plus, I could argue that if you are going to write foo->piBar = 0, that you should also write foo->piBar() - after all, isn't it important to know the return type of the function at a glance?
As to your rules: I'd rather have my code like this:
int option_count = 0;
than this:
int c_option = 0;
As for distinguishing between members and non-members, static, global and local, function parms and non-parms:
1) Globals very bad. File Statics bad. The number of globals and statics should be small enough that you have no problem remembering who's who. Also, the names should be VERY distinctive. If you need a convention for identifying globals or file statics you are ALREADY doing something wrong.
2) Members are either accessed off an object or within an object. In the first case it is very apparent they are members, in the second case the only things you could confuse them with would be locals or function parms.
3) Locals should be limited in scope enough that you can see the whole scope at one time. Therefor you don't need a way to differentiate them.
4) Functions should be small enough that you can see the whole function. The parmeter names should be obvious anyway.
Did it strike anyone else that the Forbes article was a complete waste of bits?
Where did the author get these ideas? Did he actually do any research - contact some N geeks, narcissists, etc., and ask them? Or was the entire article removed from the author's nether orifice, and slapped still dripping onto the Forbes website?
While an article like this might have seemed at home on The Onion, or some other humor site, for a magazine like Forbes it seems wildly out of place.
For example, let's look at the geek items. Clone yourself 500 times? That sounds more like the narcissist to me. A true geek would first secure his future, then buy his way onto the top ten supercomputer list (followed shortly by achiving the top ten on SETI and DistributedNet), donate large sums to the FSF, EFF (and depending upon the particular geek the NRA or HCI), buy several top programs and then OSS them (Delorme, anybody?) (Or better still, fund the development of OOP DCOM for Wine).
Or how about donating a large amount of money to your alma mater, on the condition that they terminate all athletics programs? Now that seems a geekly thing to do, IMNSHO.
First of all, have YOU ever heard of it refered to as "search and destroy"? Quite frequently such operations end up screwing things up because the SnR tool got confused.
Second, you are driving changes in files that you shouldn't have to change. As a result, you clutter up your revision control system with a bunch of crap.
Third, if you deal with any kind of QA department, they will insist upon verifying all code that you've changed - "But it was a simple search and replace" won't cut it (nor should it!). So you will have QA time being spend on verifying a bunch of things that you shouldn't have to verify.
The whole idea behind ANY programming methodology, be it OOP, Hungarian notation, extreme programming, team programming, or whatnot, is to make things easier . Anything that adds more work than it saves is a loss. I assert that the time saved by being able to tell that piFoo is a pointer to integer is much less than the time costs Hungarian notation imposes.
Hugarian notation is EVIL, and here's why.
....
....
...
....
/* ????? */
...
...." but otherwise the notation creates more problems than it is worth.
Consider a large program, in which we manipulate lots of ints. We have lots of pointers to ints, so our code looks like:
int *piFoo = &bar;
*piFoo += 1;
*--piFoo = 5;
and so on.
Now, we discover that ints aren't big enough - we need to use longs.
long *piFoo = &bar;
*piFoo += 1;
*--piFoo = 5;
OK, now we have two equally bad choices:
1) We leave the variable names alone. But now they are lying, and therefor are introducing more errors.
2) We change the variables. Now what SHOULD have been a simple change is rippling all over the code.
Even if you do as you should, and use a typedef, things are still bad:
typedef int Thingy;
Thingy *pThingy_mythingy = 0;
....
How do you create the "warts" for typedefs without creating ambiguity?
It gets even worse if you have structures:
struct Narf
{
int *pi_Poit;
};
....
*narf.pi_Poit = 5;
....
Now, you have to rev all the items that reference that structure, all documentation that refers to that structure, etc.
I can somewhat understand the use of a leading "p" to indicate "pointer to
The proper place to trace variable types is not in the name of the type! It should ideally be traced by your editing environment, along with the location of the variable's definition, the location of it's instantiation, the location of it's initialization, and any comments that you want to assign to the variable.
Hence my point - that ATI is really only screwing themselves by continuing to allow that sort of favoritism.
And under Linux, all I have to to is tell the game that it is talking to my native libGL, and the differences are handled there. That's what libGL is - the ultimate HAL.
Ditto for 2D stuff: new stuff would be linked against a version of libX11 that know how to access the extended color depths - and all that would do is pass the requests on to the X server.
In short - we actually have it BETTER than the Windows people in this regard, if the damn vendors would just throw us a bone!
Actually, I make a very good living as a software engineer, thank you very much.
I have worked both with MS WinNT and with Linux. I have written low-level drivers for both. I have designed systems of great complexity.
I can trivially turn your points around by pointing to Linux, to Mozilla, to Apache, to Sendmail, in fact to all of Sourceforge.
The single biggest thing holding back drivers under XFree is the fact that talented individuals such as myself cannot get the programming documents for boards like the ATI without signing an NDA - and to be given the opportunity to do so requires you to ALREADY be a "registered" XFree developer. Can you say Catch-22?
Several things jumped out at me in the beginning of the article:
Card can do 30 bit color. ATI has no drivers for Windows that can do this, however.
Card has floating point for color mapping. ATI has no drivers for Windows that can do this, however.
And so on. In short, there are many cool things in the hardware that do you no good right now, because they aren't supported in Windows.
<voice character="biff">McFly! Hello!</voice>
Were ATI to release the interfaces to this things to the XFree86 guys, they could have an environment in which all of this cool stuff was supported very quickly. And since you can get access to the XFree86 code easily, supporting things like 30 bit color depth becomes a great deal easier than doing so under Windows. Yes, you might have to modify (GTK|QT) to get full support, and you might have a few apps asking for a 24 bit visual because they don't support 30 bit, but imagine if you had (Gnome|KDE) running 30 bit depth, running The Gimp.
Imagine running Q3, UT, or RTCW in 30 bit color with floating point shaders.
Imagine the pain on MS's collective faces when the boot logo of the demonstration machine is not broken glass but rather flightless waterfowl.
I've placed some email addresses for Delorme, as well as their snail-mail address, as well as a starting letter to send them in my journal.
I would appreciate anyone who emails or hard mails Delorme writing a brief note about what they did as a comment in that journal entry. I've been pestering Delorme for several years, and they've often responded with "Yours is the first request we've ever had for this." I'd like to build up some evidence to refute that assertion.
I'm very glad that Delorme was responsive to your needs, but your story tends to confirm my hypothesis.
Consider the nature of the feature you asked for - given a simple file format, for each object in file, create an icon on the map. Since they already have the "create an icon" code, the rest of this feature is a pretty simple one to implement.
Unfortunately, the code to implement what I want (Linux support) is NOT already present in their code base. And given some of the other replies to my posts, my conjecture about the nature of the code base seems to be correct - they would have great difficulty porting to anything that isn't MS Windows.
(I shoulda done one more Preview.... oh well).
I was thinking about this more after I posted the previous comment.
First, I'd like to ask everyone who actually takes the time to contact Delorme to drop a line in my journal. In the past, when I've contacted Delorme about this, I have been told "Yours is the first request we've ever had for this".
I think what happens is the marketing types who handle such requests just discard anything that does not fit their preconceived notions, so all requests for Linux support get trashcaned.
Secondly, I think I may have an insight as to how we can persuade Delorme to work with the Free Software Movement. What follows is conjecture on my part, based on observation - if anybody from Delorme is reading this and wants to disprove me, go right ahead - but you'd better provide an (@delorme.com) address or I will ignore you.
From what I can see of the DLLs that the various Delorme products install, I would conclude their software is written in a mix of Visual Basic and Visual C++ - VB for most of the UI, C for the core functions.
From the rate at which they add new features to the programs, and the nature of the features so added, I would conclude that Delorme has a fairly small number of programmers - I would guess about 5 or so. This isn't surprising - they are mostly cartographers, not bit slingers.
Now, if these two inferences are correct, then I would not be surprised if Delorme's codebases are kind of crufty - the reason they don't knock new features out fast is that the codebase is too brittle and non-extensible to do so. If that is correct, then the ideal way in which Delorme could support non-Windows OSs would be with a code base rewrite to a more portable framework (e.g. Qt) and a more flexible design. The fact that this would allow Delorme on Zarius and other high-end palmtops as well as making Embbeded Delorme easier would be a plus.
Now, if I were the Lead Software Engineer at Delorme, my decision would be based upon the cost of a rewrite (both in terms of raw programmer hours, and in terms of opportunity costs - the cost of NOT shipping a new version every few months) vs. the benefits of such an action (being able to release MacOS versions right along with Windows, to add new features faster, etc.) What I would have to be able to present to management would be a way to do this with as little risk and as much profit as possible.
Perhaps a team of Free programmers could offer to do this rewrite for Delorme? It would have to be done under NDA initially, but the terms could be that once the deliverable code was ready and approved, Delrome would allow a dual license for the code. Were Delorme to refuse the code, then the code would revert to the programmers (minus any proprietary databases and such).
This would allow Delorme to continue as they have, but if the code delivered was of high enough quality they could jump to the new model quickly.
Again, Delorme's value added is the database, not the program to access it. As such, it might be possible to convice them that a Free program to access the data INCREASES the value of the data to the consumer, and thus gives Delorme more profit potential.
I concur that the mapping and trip planning software for any OS:(OS != Windows) is pretty poor. Yes, there are mapping programs out there that will show you where you are, but there are few trip planning programs that will help you select your route, identify items of interest along your route, and help you schedule your time. Of the Windows programs that I've used I have to give the nod to the various Delorme packages. However, Delorme is pretty much Windows only (yes, they do have MacOS versions of some of their programs, but the Mac versions lag the Windows version significantly).
/.'ed with requests for a Linux version (or even a Wine version) of their software - they might actually consider it. (In point of truth, setting here on my desk is a mailing from Delorme for their newest Street Atlas program - I am going to reply nicely to it and inform them that until such time as they can tell me truthfully that I can run their program under Linux they can remove me from their mailing list).
As I see it, the problem is that creating a trip planning program is hard - not only do you need the map data (which is available), you need the route computing algorithm, you need the map drawing algorithm, you need the database of attractions, rest stops, gas stations, restaurants, and hotels. You need to pull all of that together. A proper trip planning program would be a project of greater magnitude than a good word processor.
While I would definitely agree that the best solution would be a Free Software solution, with a Free Software database, if you look closely at my ID you will notice that I'm Wowbagger, not RMS - I will accept a closed solution.
Unless someone is (actually, severel someones are) interested in creating a project on Sourceforce for this, I think the best solution is to bring pressure to bear on the vendors. Imagine if Delorme's suggestion box were
I have to wonder if the "give away the razor, sell the blades" model would work for a Delorme - make the actual mapping program Free Software, and make the old versions of their maps freely available (a la the AlladinSoft Ghostscript model), but sell access to the latest maps. This way, we could create a good mapping program under Linux, and have access to a database to feed it, but Delorme could still make money off their value-added - the up to date databases.
What I'd like to have is a scriping interface - so that I could write my planning script to say "Don't bother looking for hotels along the way - only look within 50 miles of a nighttime stop. Look for GOOD attractions within 100 miles of the route, mediocre attractions within 25 miles, and whatever within 5 miles. I want to leave at 17:30 Friday, I want to stop around 21:00 +/- 1 hour, start my days at 07:00, and stop for lunch around 12:00+/- 1 hour. Try to schedule stuff around those times." In other words, let my script generate trial routes, query the database relative to that route, and make changes.
Also, give me the ability to plug in my own databases (something Delorme is lacking in) - I want to get the database of 2 meter and 70 cm repeaters from the ARRL and plug that in too.
Mr. Dewclaw, you too can ENLARGE....
Buy a removable hard disk bay - preferably an external FireWire bay. Buy an appropriately large second drive - if you have 100G of stuff buy a 160G drive.
Place second drive in bay. Connect bay to computer. Start to copy data, using normal OS copy tools. Go to bed.
In morning, remove bay from computer. Power down bay, remove drive. Put drive in static sheilding baggie that it came in.
Drive to off-site storage (e.g. friend's house, bank, whatever.). Place drive there, still in baggie.
Voila! You've just backed up your data. Assuming a firewire bay, card, and 360G drive at the listed prices, this costs about US$500.
If your system at home (craters|gets r0073d|gets a virus) then you can clean your system and immediately use the backup drive, while copying the data back over.
If you go over to the Spamcop newgroups (www.spamcop.net and search for Felton, you will see that he is not always on the side of the angels.
He started a silly rant about how Spamcop "shut down his web site" because they assert he is a spammer. Which is completely false. Rather than repeating it all here, I suggest you go read it yourself - Here's the relevant archive month on Spamcop - unfortunately their search system sucks.
Were I designing such a board, what I would do is use an FPGA that had an available PCI core with scatter/gather support. That way, you could feed the parts with buffer lists in main memory, and get a pretty high bandwidth to and from the parts.
I'd also put a FIFO between the parts and the bus controller, so that brief contention with other devices wouldn't drop samples.
Lastly, I'd suggest using LVDS to talk to the DAC/ADC - that way you can get them OUT of the computer case and away from all the noise.
That's why I suggested the FSF make a board around the Intersil 50217 - 4 digital quadrature modulators, 4 256 tap FIR filters, all in 1 chip, running at 60 Msample/sec at 16 bits per sample.
And the Intersil 50216 is 4 quadrature demods, 4 filter banks, 1 chip.
Nice....
The Nevada results are interesting, but I have 2 questions:
1) Is the NOTA option binding? In other words, had NOTA won in Nevada, would Nevada's electors been prohibited from voting for Bush and Gore?
2) Was the low turn-out for NOTA due to the fact that it wasn't nation wide? In other words, had NOTA been on all ballots, and had people known it was on all ballots, would the results been different?
If NOTA in Nevada is NOT binding, then I find it astonishing that even 8% of people would vote that way.
Actually, you DON'T need to sample a 10.7 IF at double speed.
The Nyquist theorm states you must sample your signal at not less than twice the bandwidth of your signal. You can limit the 10.7 IF to 60 kHz bandwidth and then sample it at 120 kHz just fine - this is called subsampling.
In effect your analog to digital converter becomes an additional mixer in the processing chain. If you think about it, sampling is just multiplying the signal by a stream of Dirac impulses in the time domain, which corrisponds to convolution by a Dirac impulse in the frequency domain - just like an analog mixer.
HOWEVER - you HAVE to bandwidth limit your IF correctly - if you sample at 120kHz and you have stuff leaking through at a bandwidth of 70 kHz you are screwed - your signals will fold over in the frequency domain.
For those who are interested, look up the Intersil 50216 - it is a dedicated chip that does much of the signal processing for you.
What would be COOL would be for the FSF to sell PCI cards with a 50216, 50217, and an FPGA - then you could really do some cool stuff.
I realize this might be complex, and that the answer might be of the form
But as both a ham and one who designs SDRs, I'd like to know where this resides on the Home Hacking Scale....
Simple - I wouldn't. If the (Dems|Reps) want to vote en masse to screw up the (Reps|Dems), then let them. The whole point of this exercise is to WEAKEN the 2 party system.
However, consider this - if the (Dems|Reps) are able to get enough people to vote for a bad (Rep|Dem) candidate, then they have enough people to vote for a GOOD candidate. Would it not make more sense to try to have 2 good candidates on the ballot - that way you win either way.
In many ways, the scenario you propose is already happening - each party tends to select the more extreme candidates, the better to lock in their own people. True moderates have about as much chance of being selected in the primaries as RMS has of getting a tongue kiss from Bill Gates.
I agree with you that the system is broken, but I disagree with you as to the solution - what we need is not campaign finance reform but rather campaign reform.
Let me lay out my assertions:
1) Supply and Demand - Supply always equals Demand, or rather Supply(price) = Demand(price), so solve for price.
2) Laws cannot significantly change Demand(price), all they can do is change Supply(price). Demand(price) is set by the consumers.
Now, in the case of campaigns, "price" isn't money, rather it is the availability of money. Demand(price) measures how much candidates (a.k.a. the consumers) and political parties are willing to sell favoratism for money, and Supply(price) is how much money donors are willing to give to get that favoritism. The Demand(price) curve is set largely by the political parties, while CFR would only change Supply(price) by making it harder for donors to fork over money.
The idea of CFR is that lowering the money supply, you will somehow make the candidates more responsive to the people. What will ACTUALLY happen is the big spenders will be able to ask for more favors for the same amount of money. They will find a way to funnel the money in - look at what happened when we started regulating "hard money" (money given directly to a candidate for him to use directly) - the big spenders simply invented "soft money" (money given to political parties and political action committees) to get around it. When we started regulating soft money, the big spenders simply started donating valuable services (while claiming the services weren't valuable).
OK, if you accept my premise, then CFR won't work. What would?
Remember, Demand(price) is set by the political parties. A candidate must run for two elections - the primary and the general election. Thus he must spend roughly twice as much money (increasing Demand(price)). Remember that the primary is not defined in the laws governing election - it is purely a party function (ther are laws regulating the primary, but there is no law mandating its existance). In my state (Kansas) you CANNOT vote in the primary unless you are registered with that party - thus I cannot pick a Democrat and a Republican that I like.
And that is how the parties control your options - when you vote in the primary, you can only select for one party, and when the general election comes around, you take the options you are given by each party. And so I assert that the primaries are part of the problem, and should be removed from the system.
Since there is no law creating the primaries, how can we get rid of them? First, do NOT allow the parties to use public facilities for the primaries unless they allow every eligible voter to participate. If they wish to exclude all non-party members, then let them use their own damn machines in their own damn locations!
Second, do not allow the parties to ask anything other than "Are you eligible to vote in this district?" Don't let them see if I am a registered Republican or Democrat. It's none of their damn business!
These two steps would greatly de-emphasize the importance of the political parties and their primaries (which is WHY you will never hear a Republican nor Democrat offering this idea up). It would lower the bar for independants, and it would remove a great deal of the cost of getting elected (lowering Demand(price)).
Next, how do we insure that the general election is more responsive to the people?
Binding None Of The Above
Require that for every race, one entry on the ballot be "None Of The Above", and that if there is no plurality (no candidate gets more votes than the others) or if NOTA gets the plurality, then all candidates in that race are disqualified from running for that office this term (that's the "binding" part).
I'd require the second election to happen within 1 month of the first - that way they cannot stall for time.
Consider the last US presidental election. Many of the people who voted for (Bush|Gore) were really voting against (Gore|Bush). Even within their own parties many people said "I really don't like (Bush|Gore), but I won't vote for (Gore|Bush), and I won't throw my vote away". Now, if one of the entries had been BNOTA, how would YOU have voted? I assert that we would have disqualified both Bush and Gore.
Now, some people have said "Yes, but then we might NEVER elect someone". I don't think so - the political parties aren't stupid. Again, consider the last presidential election: Had BNOTA been the law of the land, the Democrats would have said "Yes, he's the incumbent VP, but people don't like him. If the Republicans run anybody worth a damn they will win, and if they run Bush, then NOBODY wins. We'd better run somebody people will like." The Republicans would have reasoned simillarly.
Also, BNOTA makes it easier for third parties to come in. Let's say both the Republicans and the Democrats had run Bush/Gore. Individuals like Nader could have sat back and NOT entered the first race. Instead, they could have spent their efforts convicing people to vote NOTA. When Bush and Gore were knocked out, THEN they enter and campaign. Meanwhile the big parties are scrambling to get another set of candidates ready.
Now, back to the Demand(price) curve -when you have only a month to run your campaign, you are limited in what you can do - there's only so much ad time on the air, so many events you can go to, so many HOURS until the election. A smaller party can blitz just as effectively as a big one.
OK, that's my opinion. If you've read down this far, please think about it before hitting that reply button.
Just wondering, how are our own .com^H^H^Horg millionares doing? How about it, CmdrTaco|Hemos?
I cannot wait until the Bastard Operator From Hell gets in on this....
Snag the chip out of one of these, and hide it in the, ummm, "personal relaxation device" of a friend of yours.
"No - Post A goes into Slot B"
<screams>