You actually bring up a better question.
How do we deal with big pieces of steaming ****, I mean spaghetti that get handed to us to maintain.
There are all kinds of processes and theories that if you religiously follow you can be sure to prevent a project from becoming crap. But, always in the life of a project there comes a PHB determined to turn the code bad.
I think we need a lot more attention on how to deal with code thats already in bad shape. We've got refactoring and Code Reading but, little else on the subject of improving existing code bases. A result of this, most dev's tasked with maintenance simply do as little as possible when modifying the code from fear of unwanted consequences. Thus, code rot sets in.
In the original paper, "Managing the Development of Large Software Systems" by Winston Royce, describing the waterfall model, Royce actually points to the flaws of that process. He actually says that it "is risky and invites failure".
It appears that at some point some PHB's saw the paper, looked at the pictures (instead of reading) and decided "we should all use the waterfall development process".
As for iterative development, I couldn't agree with you more. And its also what Royce was really at where each "phase" provides a feedback to the one before it. And if a project follows the steps you outlined for each iteration, as well as doing some refactoring for leasoned learned, you will generally see the bugs go down and the code quality steadily increase.
OTH, trying to suddenly apply a test scafolding around an existing large codebase can be a very painful process. Many time its actually easier to just rebuild using the original app as the basis for the new test cases. And the NIH syndrome weighs heavily.
When I worked at RN and they created their open source project we got black t-shirts. Because, black is the prefered color of open source developers.
Maybe we can't get an ipod for linux because of the color.
Side note: I've never actually used an iPod. Why is a $500 mp3 player better than my $150 one? is it *really* $350 better? $500 is almost a Zaurus, that'll play mp3's as well as a whole host of other things.
Also a link showing why all stats are bunk: http://www.pantos.org/atw/f-35448.html
A google search can find many articles showing Linux gaining over the Mac generally referencing IDC, Gartner, Jupiter Reseach, etc. Visiting those site and seaching for the research gives links to reports costing in the order of $4k+.
Anybody else find any references to actual stats instead of reports on stats? This might help to settle this at least a bit.
Maybe the correct thing to do would be to write a piece of software for all three platforms and judge the diffeerence in revenue received. This wouldn't give "correct" usage stats but, it would give a revenue value to each platform.
If done, then a firewall patch would allow everyone behind the firewall to get free activation. Of course, corporations don't pirate software from each other;)
Proxy servers are another reason not to use this for activation. None of the original machines TCP info is used on a proxied request, as these function much differently than a firewall or NAT.
You might want to actually read the paper. He was able to identify machines even though they were using NTP. Changing the date/time won't help for the same reasons.
I'd be interested in seeing someone pointout the "quartz crystal" in a notebook. You could modify the skew by swapping some chips. The difficulty of this is not great, simply de-solder the old and solder in the new (of course, the avg slashdotter think soldering is some kind of elite skill). The cost on the other hand is another issue.
If someone were really serious, they would as other posters have mentioned, modify their kernel to use a cryptographic randomization of their skew. However, this is only useful if many people were to do it. Otherwise, you are identified as the guy with the random skew.
As for real use. If the FBI were using this to identify the computers used by the guys who craked them. They could then use their "deployed" servers to look for others with the same fingerprint. They would then have a list of suspects to work with.
If I'm a consultant that normally charges $100/hour and I volunteer to work on a political website, does this mean that I'm only allowed to volunteer 10 hours ($1K/contribution limit)?
Perhaps they are going to offer a Calendar based search. Or, perhaps they are writing woftware to evaluate peoples calendars. The software might be able to build a temporal map of when people (groups, not individuals) are using their computers. Advertising rates could be customized on this. Tues from 7-9pm an unusually large number people will be potentially surfing the net. We'll have to charge more for ads in this time frame. Of course, like TFA, this is just plain old conjecture.
Actually, due to a design to keep the structural mass low and due to the mass of the fuel, it can't land safely with a full (or even half) load of fuel. The plane just isn't strong enough. Making the plane stronger would make it heavier, and a heavier plane would require more fuel. Its a compromise that had to be made. On a side note, they actually wanted to use a different turbine that was more fuel efficient but, were unable to locate one. So since the turbine they are using consumes more fuel, more compromises had to be made in the design.
With a flight like this, you have to get rid of every last once of weight possible.
Lately, I've been taking your technique one step further.
During design meetings, I code up the interfaces (Java) and maybe some abstract classes to tie things together. Code, even non-functional code, gives a good validation of the design. Its also easier for other developers and myself to visualize the design with code. If anything is unclear, or we debate some detail, its easy enough to write some simple implementation classes to test these ideas.
A benefit of this technique, it ensures everyone is coding to interfaces instead of classes. This keeps the code simpler and easier to test. At dev time, you just have the developers grab an interface and implement. No one gets assigned to a task that they are not starting immediately. If we bring in other resources, they don't need to understand the whole project. They can simply work on a component.
At the end of the meetings we reverse engineer (using the tool in WSAD) the interfaces and abstract classes into UML diagrams for the PHB's. I've found most UML tools slow and unwieldly to use. For me anyway, its just much faster to code a skeleton and generate diagrams from it.
And to think that I made my cheapo night vision by replacing the led in an led flashlight ($5 wally world) with a high-output IR led from RadioShack ($2). I just use my digital camera to view since the ccd is IR sensitive. Total dev time 5 minutes, total skill required zero.
Greg's project is still pretty cool, I'm just much lazier than he.
I've met one. He was one of those really gifted developers. However, he was also one of those freaks who prefered to use Code Warrior instead of VC++.
<sarcasm>
He also, for some crazy reason, thought that the code should be strict ANSI compliant (crazy talk).
</sarcasm>
I would say that you are a rarity and will probably never be unemployed.
VC++ as environment, not language.
I agree thats the way its supposed to be. But, with the way the tool works and the extensions to the language, it becomes a defacto language. Talk to some VC++ folks and see how many can write a small cross platform ANSI C++ program.
I'm not trying to bash the dev environment. Its actually one of the better ones out there. The problem is because it helps so much, many devs forget the basics. Much how VB isn't evil but, the VB dev environment encourages so many bad practices that it becomes that way.
A VC++ or VB user who can actually use another tool or programming language. Now that is a rarity. I've never even met a VC++ user who could even write C/C++ without the environment.
I agree with your statement but, I'm not sure the target environment is up to it.
One of my previous employers got slammed in the press one day because a code error let a web server comment get leaked into the HTML comments of a page. It said something along the line of being a work around for the whinny mac people. I don't remember exactly but, it was pretty innocent. They got written up in quite a few Mac related news articles as being anti Apple (when they were actually trying to support it).
OTOH, there could also be missing comments. I think we've all entered projects with no documentation or usable code comments; where the lore of the project is passed from dev to dev.
Or, they may have rushed so many projects that they are embarrased for anyone to see the code. Many companies and the military are guilty of this. Maybe they want some time to do a review / refactor.
I forgot to mention that since linux users (on average) tend to be the most technically savy computer users, the support costs for these users should be lower (on average) than that of other platforms.
You actually bring up a better question. How do we deal with big pieces of steaming ****, I mean spaghetti that get handed to us to maintain.
There are all kinds of processes and theories that if you religiously follow you can be sure to prevent a project from becoming crap. But, always in the life of a project there comes a PHB determined to turn the code bad.
I think we need a lot more attention on how to deal with code thats already in bad shape. We've got refactoring and Code Reading but, little else on the subject of improving existing code bases. A result of this, most dev's tasked with maintenance simply do as little as possible when modifying the code from fear of unwanted consequences. Thus, code rot sets in.
In the original paper, "Managing the Development of Large Software Systems" by Winston Royce, describing the waterfall model, Royce actually points to the flaws of that process. He actually says that it "is risky and invites failure".
It appears that at some point some PHB's saw the paper, looked at the pictures (instead of reading) and decided "we should all use the waterfall development process".
As for iterative development, I couldn't agree with you more. And its also what Royce was really at where each "phase" provides a feedback to the one before it. And if a project follows the steps you outlined for each iteration, as well as doing some refactoring for leasoned learned, you will generally see the bugs go down and the code quality steadily increase.
OTH, trying to suddenly apply a test scafolding around an existing large codebase can be a very painful process. Many time its actually easier to just rebuild using the original app as the basis for the new test cases. And the NIH syndrome weighs heavily.
When I worked at RN and they created their open source project we got black t-shirts. Because, black is the prefered color of open source developers.
Maybe we can't get an ipod for linux because of the color.
Side note: I've never actually used an iPod. Why is a $500 mp3 player better than my $150 one? is it *really* $350 better? $500 is almost a Zaurus, that'll play mp3's as well as a whole host of other things.
I can't comment on the data the parent used but here is a link to some stats. Take them at whetever value you care to.
s tats.a sp
Linux: 3.2%; Mac: 2.9%
http://www.w3schools.com/browsers/browsers_
Also a link showing why all stats are bunk:
http://www.pantos.org/atw/f-35448.html
A google search can find many articles showing Linux gaining over the Mac generally referencing IDC, Gartner, Jupiter Reseach, etc. Visiting those site and seaching for the research gives links to reports costing in the order of $4k+.
Anybody else find any references to actual stats instead of reports on stats? This might help to settle this at least a bit.
Maybe the correct thing to do would be to write a piece of software for all three platforms and judge the diffeerence in revenue received. This wouldn't give "correct" usage stats but, it would give a revenue value to each platform.
Someone shoot me for posting in a OS holy war.
s tats.a sp
If you look here
http://www.w3schools.com/browsers/browsers_
It would appear that Linux (3.2%) is on more desktops than Macs (2.9%).
Or as some companies do:
...
if lastDateMoneyReceived today-30
nag
if notMeetingRevenueForTheQuarter
nag
if boatPaymentDue
nag
Yes,
N - Network
T - Time
P - Protocol
N - Network
T - Time
P - Protocol
D - Daemon
One uses the other.
Its the "clock drift" and "inaccuracies" that are being used as the fingerprint.
Don't we need to have "rights online" before we can lose them?
If done, then a firewall patch would allow everyone behind the firewall to get free activation. Of course, corporations don't pirate software from each other ;)
Proxy servers are another reason not to use this for activation. None of the original machines TCP info is used on a proxied request, as these function much differently than a firewall or NAT.
You might want to actually read the paper.
He was able to identify machines even though they were using NTP. Changing the date/time won't help for the same reasons.
I'd be interested in seeing someone pointout the "quartz crystal" in a notebook. You could modify the skew by swapping some chips. The difficulty of this is not great, simply de-solder the old and solder in the new (of course, the avg slashdotter think soldering is some kind of elite skill). The cost on the other hand is another issue.
If someone were really serious, they would as other posters have mentioned, modify their kernel to use a cryptographic randomization of their skew. However, this is only useful if many people were to do it. Otherwise, you are identified as the guy with the random skew.
As for real use. If the FBI were using this to identify the computers used by the guys who craked them. They could then use their "deployed" servers to look for others with the same fingerprint. They would then have a list of suspects to work with.
If I'm a consultant that normally charges $100/hour and I volunteer to work on a political website, does this mean that I'm only allowed to volunteer 10 hours ($1K/contribution limit)?
I knew it was my future self wreaking havok on my present self
Perhaps they are going to offer a Calendar based search.
Or, perhaps they are writing woftware to evaluate peoples calendars. The software might be able to build a temporal map of when people (groups, not individuals) are using their computers. Advertising rates could be customized on this. Tues from 7-9pm an unusually large number people will be potentially surfing the net. We'll have to charge more for ads in this time frame.
Of course, like TFA, this is just plain old conjecture.
Why would I want to lick my monitor?
I think this might shed light into whats wrong with mac fanatics.
Actually, due to a design to keep the structural mass low and due to the mass of the fuel, it can't land safely with a full (or even half) load of fuel.
The plane just isn't strong enough. Making the plane stronger would make it heavier, and a heavier plane would require more fuel. Its a compromise that had to be made.
On a side note, they actually wanted to use a different turbine that was more fuel efficient but, were unable to locate one. So since the turbine they are using consumes more fuel, more compromises had to be made in the design.
With a flight like this, you have to get rid of every last once of weight possible.
Lately, I've been taking your technique one step further.
During design meetings, I code up the interfaces (Java) and maybe some abstract classes to tie things together. Code, even non-functional code, gives a good validation of the design. Its also easier for other developers and myself to visualize the design with code.
If anything is unclear, or we debate some detail, its easy enough to write some simple implementation classes to test these ideas.
A benefit of this technique, it ensures everyone is coding to interfaces instead of classes. This keeps the code simpler and easier to test. At dev time, you just have the developers grab an interface and implement. No one gets assigned to a task that they are not starting immediately. If we bring in other resources, they don't need to understand the whole project. They can simply work on a component.
At the end of the meetings we reverse engineer (using the tool in WSAD) the interfaces and abstract classes into UML diagrams for the PHB's. I've found most UML tools slow and unwieldly to use. For me anyway, its just much faster to code a skeleton and generate diagrams from it.
And to think that I made my cheapo night vision by replacing the led in an led flashlight ($5 wally world) with a high-output IR led from RadioShack ($2). I just use my digital camera to view since the ccd is IR sensitive.
Total dev time 5 minutes, total skill required zero.
Greg's project is still pretty cool, I'm just much lazier than he.
I've met one. He was one of those really gifted developers. However, he was also one of those freaks who prefered to use Code Warrior instead of VC++.
<sarcasm>
He also, for some crazy reason, thought that the code should be strict ANSI compliant (crazy talk).
</sarcasm>
Or I need better job candidates coming into interviews.
My experience is based on meeting more than I'd care to remember.
I wasn't trying to be either. It really happened.
If you care, the server was Roxen, which uses a page markup similar to Cold Fusion however, the pages are interpreted vs compiled.
With a compiled page the issue would never have happened. With an interpreted page and a lax parser almost anything can get through.
I would say that you are a rarity and will probably never be unemployed.
VC++ as environment, not language.
I agree thats the way its supposed to be. But, with the way the tool works and the extensions to the language, it becomes a defacto language. Talk to some VC++ folks and see how many can write a small cross platform ANSI C++ program.
I'm not trying to bash the dev environment. Its actually one of the better ones out there. The problem is because it helps so much, many devs forget the basics.
Much how VB isn't evil but, the VB dev environment encourages so many bad practices that it becomes that way.
A VC++ or VB user who can actually use another tool or programming language. Now that is a rarity.
I've never even met a VC++ user who could even write C/C++ without the environment.
I agree with your statement but, I'm not sure the target environment is up to it.
One of my previous employers got slammed in the press one day because a code error let a web server comment get leaked into the HTML comments of a page. It said something along the line of being a work around for the whinny mac people. I don't remember exactly but, it was pretty innocent. They got written up in quite a few Mac related news articles as being anti Apple (when they were actually trying to support it).
OTOH, there could also be missing comments. I think we've all entered projects with no documentation or usable code comments; where the lore of the project is passed from dev to dev.
Or, they may have rushed so many projects that they are embarrased for anyone to see the code. Many companies and the military are guilty of this. Maybe they want some time to do a review / refactor.
I forgot to mention that since linux users (on average) tend to be the most technically savy computer users, the support costs for these users should be lower (on average) than that of other platforms.
just my 2 cents