The ability to mouse and hit enter key could easily be accomodated by having that key on the left side, where your left thumb could hit it (and rest quite comfortably I might add).
If someone makes such a keyboard, please let me know! I want one!
Why are the PgUp/Down, Arrow Keys, and Number Pad on the right side anymore? That is where I put my mouse/trackball. Those keys should be on the left. That way, my arm would not have to be turned at an odd angle to reach the pointing device. Instead, it would be comfortably straight out in front of me. Having those keys there really bothers me. Am I the only one?
A little commenting can go a long way to helping someone else understand the system.
A lot of comments can be a burden. Why?
Nobody updates them, and lots of people don't read them. Additionally, it takes a long time to write lots of well-written comments - time that is usually better spent re-architecting the system to make it easier to understand.
Every day I come to realize more and more that comments are, on the whole, a waste. Sure, a little comment here and there when something non-standard is going on, or unintuitive. But it is neither feasible nor necessary to comment all the code in a large system - just write better code!
Note that this is NOT meant to say that documentation is worthless. On the contrary, in my experience, the most useful documentation is that which describes the system as a whole, the assumptionst that are made, how the subsystems interlock, etc... Those are things that are not easily gleaned from code, no matter how well written.
Additionally, lots and lots of comments get in the way for the coder navigating the source. It can be a serious slowdown if comments are used too much.
And web developers are still upset that PNG didn't include animation. To them, GIF is good enough, and nobody has hassled their site yet. Why should they change to something less compatible with less features?
Why didn't the government just own and regulate the last mile? This is a point I have never understood, and it seems that if it had been done, things would be so much simpler today.
I remember before 911 was in place, we learned local emergency numbers eary in school, and made cute sticks to place on or near the phones with these on there.
About 3 years later 911 hit and all that was forgotten.
(No, there was NO WAY to get DSL without getting phone service. And I didn't have a TV, so cable modem wouldn't have been cheaper.)
This is the thing that irks me the most.
Around here, in Dallas, cable modems are terrible. So the only real option for broadband is DSL. However, I hate having to pay for a landline telephone to get it.
FCC should mandate offering DSL service without making the customer pay for landline telephone service. It shuts out VoIP.
I'd be interested to hear what techniques you use to debug your distributed apps, and on what sort of scale you deal with them.
My apps were relatively small (around 10 nodes) being part of a semester university course and all. I found that the debugger was effective of course for verifying small blocks of code and overall program flow, but I quickly got frustrated with it trying to debug the system as a whole.
The problem with log files was of course the parsing stage. At one point I toyed with the idea of make a perl script that could verify correctness, but I decided that was more risky than just reading the logs by hand to make sure things were correct or to find out where the problem was.
I agree 100%. Speaking from my own experience, printf() or other log-based debugging was only effective on projects up to about 3000 lines of code. Beyond that, the debugger was the only way to go (and it is certainly the only way to debug very large systems with 100k+ loc).
One place I did find logging to be better than the debugger though was in debugging distributed applications. I had a couple of university assignments in a distributed OS class; log files were really the only way to go because of the nature of the interactions between the processes (many of the bugs were time-dependent, and you just couldn't catch them in a debugger).
wrap malloc/free or whatever your memory interface is with one that tracks the location and initial parameters of the allocation.
Set breakpoints on this code when needed, and viola, you can track exactly what goes on. It's quite simple to do, and there is no need for the debugger to really do this.
I don't understand the insistence that printf() is the only way to go, and those that use automated tools are surely lazy or doing something wrong.
As I said in another post, why not let the computer do what it does best, so that people can focus on what they do best?
The biggest problem with printf() debugging is the code littering process, and the constant recompiles. Say you have a bug in a subsystem that is writted in approximately 20,000 lines of code. How do you determine where the bug is? You insert printfs() into all the functions/methods to find the culprit(s), and then gradually refine the inspection until you locate the problem. Fine, this is quite similar to how one uses the debugger. The problem is, inserting all those printf() statements is quite time consuming, and removing them and modifying them is even more time consuming. Additionally, it is possible that the printf() statements themselves can cause additional problems or mask the true nature of the problem. Finally, each time you update the printf() statements, you need to recompile the code. That step alone can prove to be a real bottleneck manytimes. The programmer using the debugger can simply inspect values as much as he likes at runtime, without many of the time-consuming problems.
In short, the programm with a debugger works just as you do, but is typically much more productive because the computer is doing the tedious steps for you.
Sure, pens and paper are useful, but I think the poster was trying to say he felt that a lot of this could be automated by the machine. And frankly, he's right in many ways.
Why not let the computer do what it does best (collect and process data to generate different representations) and let people do what they do best (take varied data and past experience, and through a process of logical reasoning, deduce where the problem is)?
I would love for the debugger to be able to assemble, rearrange, etc... all that data of my choosing with the push of a button. It would save me the time (and errors) in doing it myself.
How many ppl here are clamoring for conditional breakpoints, when VS.NET can do this already?
Or clamoring for the ability to see what changed your variable, no matter where it was changed? Breakpoints on memory can do this too. In VS.NET I just set a breakpoint on a given memory address, and anything the address changes, it takes me right to the instruction (or statement, if it has src) that changed it. Absolutely critical feature for tracking down memory corruption.
Easy plugins I want to easily be able to load my own custom code into the debugger. For example I might want a custom routine to conveniently display a custom datastructure, or even give a graphical representation of some data.
It's worth nothing that Visual Studio already has this capability, at least to some degree.
A couple people have noted the exemption made for calls to individuals whom the company represented by the telermarketer has an existing or prior buisness relationship with. These people make this loophole out to be a huge problem or glaring flaw with the legislation.
However, I contend that the loophole is really relatively minor. Think about it like this. An individual signs up for the DNC list. In doing this, he has sent a clear message that he does not want calls. Furthermore, this message is backed by a set of punitive damages for violations of his intention, as outlined by the law. Now, a company with a prior business relationship is technically exempted by the law, and is allowed to call the individual. However, it does not make sense for this company to call this individual for a number of reasons:
1) He will likely consider this call annoying, even if it is legal. Remember, the individual took the time to exempt himself from calls he considers annoying. An annoyed potential customer is unlikely to make a purchase.
2) Even if the call is legal, some percentage of these individuals will not fully understand the law, and waste the telemarketer's time trying to explain that the call is illegal. The telemarketer would then have to explain that the call is in fact legal due to the business relationship. However, at this point the sale is clearly lost.
3) As others have noted, these laws may serve to increase yield of the telemarketers by creating a statutory filtering system. In effect, the govenment is doing a great deal of filtering for the telemarketers. Now, if a company with an established business relationship still calls without respect to the list, they are practically guaranteed to lower their yield (for the reasons stated above).
Thus, I believe that there will not be rampant calls made under this category, because it just doesn't make economic sense to for the telemarketer.
Rather, this exemption exists for the protection of more legitimate calls to the customer directly related to a business relationship which the customer would most likely find agreeable otherwise . That is, even if the DNC list did not exist, the average customer would not object to these calls. Therefore, the creators of the legislation were careful to protect this.
(Note that I do NOT believe this reasoning applies to charities or other non-profits; I believe people are willing to 'cut some slack' for the charities, and put up with the calls to help our their fellow man.)
I had the same experience (I live in Texas). I moved into a new apartment with a new phone number, and within 3 weeks the calls were already too much. 2-3 a day at least. As soon as my number was activated on the DNC list this past September, the calls dropped off instantly.
I have gotten a few since then (mostly I answer the phone when there is no caller ID and I hear a computer beeping). Anyone know what these calls are?
Finally, how would I report calls that didn't respect my DNC wish? And how would I report calls like the one I mentioned above where I have no phone number and no human to talk to?
The problem with online gambling is regulation.
How do you ensure it is fair for the people who choose to take part in it?
I also switched this year, and in the registration comments for TaxCut, I wrote something to the effect of:
I switched from TurboTax because of their lame DRM schemes. As long as you don't do this, I'll keep buying your software.
Here's hoping they listen.
The ability to mouse and hit enter key could easily be accomodated by having that key on the left side, where your left thumb could hit it (and rest quite comfortably I might add).
If someone makes such a keyboard, please let me know! I want one!
What irks me is the overall layout of the device.
Why are the PgUp/Down, Arrow Keys, and Number Pad on the right side anymore? That is where I put my mouse/trackball. Those keys should be on the left. That way, my arm would not have to be turned at an odd angle to reach the pointing device. Instead, it would be comfortably straight out in front of me. Having those keys there really bothers me. Am I the only one?
Wonderful idea.
"Can someone please steal this and put it in GCC for free???"
Way 2 go.
I think it is interesting to note that this is precisely the reason that XML is poorly suited for any task that requires human intervention.
To be fair, commenting code is a slippery slope.
A little commenting can go a long way to helping someone else understand the system.
A lot of comments can be a burden. Why?
Nobody updates them, and lots of people don't read them. Additionally, it takes a long time to write lots of well-written comments - time that is usually better spent re-architecting the system to make it easier to understand.
Every day I come to realize more and more that comments are, on the whole, a waste. Sure, a little comment here and there when something non-standard is going on, or unintuitive. But it is neither feasible nor necessary to comment all the code in a large system - just write better code!
Note that this is NOT meant to say that documentation is worthless. On the contrary, in my experience, the most useful documentation is that which describes the system as a whole, the assumptionst that are made, how the subsystems interlock, etc... Those are things that are not easily gleaned from code, no matter how well written.
Additionally, lots and lots of comments get in the way for the coder navigating the source. It can be a serious slowdown if comments are used too much.
Don't comment, but DO document.
I was also pretty skeptical of the lines of code quoted.
"If we assume that he needs a minimum of 6 hours of sleep per night, that brings it to ~115 lines of code per hour..."
That doesn't even take into accout debugging - that number would have to be doubled at to maintain the same pace. Maybe tripled.
....but its been slow to take hold.
Why? App support and developer inertia.
Photoshop 7 still has crappy PNG support.
IE still doesn't support alpha right.
And web developers are still upset that PNG didn't include animation. To them, GIF is good enough, and nobody has hassled their site yet. Why should they change to something less compatible with less features?
You have to pay for the extra features, and they alerady have your address on file for the service.
I bet they just correlate that in their DB.
Government exists to serve the people.
Shouldn't the people remind government of that, to get what the people want?
Why didn't the government just own and regulate the last mile? This is a point I have never understood, and it seems that if it had been done, things would be so much simpler today.
I remember before 911 was in place, we learned local emergency numbers eary in school, and made cute sticks to place on or near the phones with these on there.
About 3 years later 911 hit and all that was forgotten.
(No, there was NO WAY to get DSL without getting phone service. And I didn't have a TV, so cable modem wouldn't have been cheaper.)
This is the thing that irks me the most.
Around here, in Dallas, cable modems are terrible. So the only real option for broadband is DSL. However, I hate having to pay for a landline telephone to get it.
FCC should mandate offering DSL service without making the customer pay for landline telephone service. It shuts out VoIP.
I'd be interested to hear what techniques you use to debug your distributed apps, and on what sort of scale you deal with them.
My apps were relatively small (around 10 nodes) being part of a semester university course and all. I found that the debugger was effective of course for verifying small blocks of code and overall program flow, but I quickly got frustrated with it trying to debug the system as a whole.
The problem with log files was of course the parsing stage. At one point I toyed with the idea of make a perl script that could verify correctness, but I decided that was more risky than just reading the logs by hand to make sure things were correct or to find out where the problem was.
What techniques do you use?
I agree 100%. Speaking from my own experience, printf() or other log-based debugging was only effective on projects up to about 3000 lines of code. Beyond that, the debugger was the only way to go (and it is certainly the only way to debug very large systems with 100k+ loc).
One place I did find logging to be better than the debugger though was in debugging distributed applications. I had a couple of university assignments in a distributed OS class; log files were really the only way to go because of the nature of the interactions between the processes (many of the bugs were time-dependent, and you just couldn't catch them in a debugger).
There is that, but there is also a plugin interface so that the debugger can call a function to provide a custom representation of the data.
This is already possible:
wrap malloc/free or whatever your memory interface is with one that tracks the location and initial parameters of the allocation.
Set breakpoints on this code when needed, and viola, you can track exactly what goes on. It's quite simple to do, and there is no need for the debugger to really do this.
I don't understand the insistence that printf() is the only way to go, and those that use automated tools are surely lazy or doing something wrong.
As I said in another post, why not let the computer do what it does best, so that people can focus on what they do best?
The biggest problem with printf() debugging is the code littering process, and the constant recompiles. Say you have a bug in a subsystem that is writted in approximately 20,000 lines of code. How do you determine where the bug is? You insert printfs() into all the functions/methods to find the culprit(s), and then gradually refine the inspection until you locate the problem. Fine, this is quite similar to how one uses the debugger. The problem is, inserting all those printf() statements is quite time consuming, and removing them and modifying them is even more time consuming. Additionally, it is possible that the printf() statements themselves can cause additional problems or mask the true nature of the problem. Finally, each time you update the printf() statements, you need to recompile the code. That step alone can prove to be a real bottleneck manytimes. The programmer using the debugger can simply inspect values as much as he likes at runtime, without many of the time-consuming problems.
In short, the programm with a debugger works just as you do, but is typically much more productive because the computer is doing the tedious steps for you.
Sure, pens and paper are useful, but I think the poster was trying to say he felt that a lot of this could be automated by the machine. And frankly, he's right in many ways.
Why not let the computer do what it does best (collect and process data to generate different representations) and let people do what they do best (take varied data and past experience, and through a process of logical reasoning, deduce where the problem is)?
I would love for the debugger to be able to assemble, rearrange, etc... all that data of my choosing with the push of a button. It would save me the time (and errors) in doing it myself.
You are dead on here.
How many ppl here are clamoring for conditional breakpoints, when VS.NET can do this already?
Or clamoring for the ability to see what changed your variable, no matter where it was changed? Breakpoints on memory can do this too. In VS.NET I just set a breakpoint on a given memory address, and anything the address changes, it takes me right to the instruction (or statement, if it has src) that changed it. Absolutely critical feature for tracking down memory corruption.
But how many people know about these facilities?
Easy plugins I want to easily be able to load my own custom code into the debugger. For example I might want a custom routine to conveniently display a custom datastructure, or even give a graphical representation of some data.
It's worth nothing that Visual Studio already has this capability, at least to some degree.
A couple people have noted the exemption made for calls to individuals whom the company represented by the telermarketer has an existing or prior buisness relationship with. These people make this loophole out to be a huge problem or glaring flaw with the legislation.
However, I contend that the loophole is really relatively minor. Think about it like this. An individual signs up for the DNC list. In doing this, he has sent a clear message that he does not want calls. Furthermore, this message is backed by a set of punitive damages for violations of his intention, as outlined by the law. Now, a company with a prior business relationship is technically exempted by the law, and is allowed to call the individual. However, it does not make sense for this company to call this individual for a number of reasons:
1) He will likely consider this call annoying, even if it is legal. Remember, the individual took the time to exempt himself from calls he considers annoying. An annoyed potential customer is unlikely to make a purchase.
2) Even if the call is legal, some percentage of these individuals will not fully understand the law, and waste the telemarketer's time trying to explain that the call is illegal. The telemarketer would then have to explain that the call is in fact legal due to the business relationship. However, at this point the sale is clearly lost.
3) As others have noted, these laws may serve to increase yield of the telemarketers by creating a statutory filtering system. In effect, the govenment is doing a great deal of filtering for the telemarketers. Now, if a company with an established business relationship still calls without respect to the list, they are practically guaranteed to lower their yield (for the reasons stated above).
Thus, I believe that there will not be rampant calls made under this category, because it just doesn't make economic sense to for the telemarketer.
Rather, this exemption exists for the protection of more legitimate calls to the customer directly related to a business relationship which the customer would most likely find agreeable otherwise . That is, even if the DNC list did not exist, the average customer would not object to these calls. Therefore, the creators of the legislation were careful to protect this.
(Note that I do NOT believe this reasoning applies to charities or other non-profits; I believe people are willing to 'cut some slack' for the charities, and put up with the calls to help our their fellow man.)
I had the same experience (I live in Texas). I moved into a new apartment with a new phone number, and within 3 weeks the calls were already too much. 2-3 a day at least. As soon as my number was activated on the DNC list this past September, the calls dropped off instantly.
I have gotten a few since then (mostly I answer the phone when there is no caller ID and I hear a computer beeping). Anyone know what these calls are?
Finally, how would I report calls that didn't respect my DNC wish? And how would I report calls like the one I mentioned above where I have no phone number and no human to talk to?
Oh the irony of asking Slashdot for something unique and original...........