Pessimist thinking may be reasonable, but... "it might very well cost us that billion dollars" in the future, with 1000:1 USD-EUR exchange rate as well:) Thing is you map all the known space junk on all further spaceship orbits and just avoid it. No more than $10 per piece of space junk and per satellite/spaceship. (delay the launch by 0.1s or so, use up 20-30kg of fuel more in rare case it gets on the route). We're not talking about leaving 2 millions pieces of space junk up there, but 1 piece. In 20 years it will mean even less of an obstacle than now. And in 50 or so, due to its historical value, it will be worth more than billion dollars, even completely broken. And never bring it down. I think orbital museum will be one of the most valuable pieces of the space exploration history.
Disable whatever could bring it down then... "natural" deorbiting will take many years, probably enough to provide space flights cheap enough to just move it to some museum or such.
1. Mr. Wildstein, the journalist who stole the list, got fired. Now the journalist community boils about this apparent "limiting of free speech". (imo free speech is the right to reveal your own opinions, not stealing others' secrets)
2. The problem with the list is that it contains hardly more info than just names. It is known to contain names of active agents, names of those who cooperated, and names of people, who were observed and potentially viable for "recruitment" even though the contact between the secret service and them never happened. All mixed together and not distinguished from each other in any readable way (just keycode(hash) used in others, non-leaked documents). So the presence on the list may mean trouble to many innocents, because paranoid employes, friends and such may suspect them even if they are not guilty of anything.
Right... but even if the gyroscope fails, make it rotate slowly or make it at a fixed orientation to Earth, rotating with it, and just observe whatever it points at. Still a lot to see. And even if all the optics fail, still controlling a satellite would be cool. i.e. make it run Linux:)
IMHO dropping MIR was a crime. It should have been lifted to a higher orbit and left there for further generations, as a museum piece. Yes, space junk, but a mapped one, so no problem. And there's a LOT of space in space:)
Well, the point of getting the obsolete hardware to work is to make it as useful as it can get, without spending any more money. The only way I could upgrade them would be to pay from my own pocket. If I told my boss "can't be done, we need to buy a bigger drive" he would just sigh and tell me to dump it all. But I -wanted- them working, as we were always short one or two xterms, and whenever a spare one was needed, they would ask me to make my personal box available. It worked fine for others, but NOT for me.
Or I live in a country where decent salary of a sysadmin is way lower than cost of new hardware. I was earning the country's average (quite overblown in my country, due to salaries of few managers of banks, politicians etc - average way above median) and a new SUN costed about two years worth of my salary. A bigger SCSI harddrive - two months or so. Not everyone lives in the US and not everywhere "upgrade to newer hardware" is the most cost-efficient option. And FYI, it was one of bigger universities in the country, and one of more respected departments. Unfortunately, budget for universities here is rather low, so we have to live with what we have and avoid wasting money on useless upgrades if the same results can be achieved with some work. That computer was WAY obsolete then, and only user comfort was why it was still useful. Upgrading it would be definitely a waste of money. And to that... 1) I maintained the systems well enough that I had quite a bit of spare time 2) Boss doesn't like good (even if old) hardware to waste. 3) I wanted to learn something new. (that diskless part was completely optional) 4) I could finally get all the visitors to sod off, shoving them to the new xterms whenever they wanted me to check mail or something on my personal box.
Yes, funny units. My biology teacher elaborated how incredibly huge amount of data is contained in human genome, how awfully many pages of books it would take to write it down. I recalculated that and found it would fit on 2 CDs leaving some spare place.
Uncompressed movies. 3D raster images (based on "particles", not vectors - photorealistic 3D scenery for games) Complete backups (instead of incremental) Multi-DVD albums Data like global maps, global phonebooks etc. Same old contents, smaller disks (half-inch DVDs anyone?) Single-use encryption keys.
At 1TB/disk you can afford a lot of redundancy. Decrease data density to 10%, the medium will remain readable after ages, and at 100GB/disk it's still reasonable backup/archive medium.
Oh, sure, on x86. No problem. Find a lightweight distro for SPARC. I remember one that supported it was RedHat, I don't remember the other but it was nearly as big. "standard" Linux is helluva big, you have actively work to make it small enough to fit on such small systems. (plus don't bull me that your Slack on your 386+16M works at any reasonable speed under X. Even on 486 it's not really acceptable, even console gets slow at times.) The thing with NetBSD was that I actually didn't have to fight for space. I was happily browsing the binary tree and kept adding components. It felt on that 200M drive, about the same as Linux on 20G one. Kernel sources, compiler tools to recompile it, NFS demons, TFTP, BOOTP, all that was needed to compile the kernel and run the diskless workstation, and if I was short on diskspace, I was just shrinking its swapfile (from original 64M to 20M or so in the end. Still left the user with some 5M for personal data...)
How is the 2.6.x kernel compilation running on your 386?:)
If you want, just subsitute your favorite dead platform (Atari, Amiga, 68k Mac, etc) for the Alpha, and I think you'll see that NetBSD will probably never die.
Never say never. It will die when all the platforms die out completely. That is maybe in 30-50 years, maybe longer, but maybe not. Unless of course OpenBSD hackers embrace new markets stronger than Linux ones. I'm really surprised to see iPod, XBox, Playstation etc running Linux and not NetBSD. Why? 18 platforms isn't all that much...
We got an old SUN. 200M harddrive, poor CPU, not too much RAM, GREAT monitor, nice keyboard and mouse. A dream machine for an X terminal for our servers. But what to run on it? I tried Linux. It would barely fit. No way to fit X, a desktop manager and enough to comfortably use it. It was still possible to mount a drive over NFS and pull some binaries from there, but it was way too slow. In short, Linux sucked for it. I looked what else would work on that architecture. NetBSD? Let's give it a shot. I installed it, installed X, some basic software so it could work as a standalone workstation, not just terminal, then found enough spare diskspace, that I set up root directory and all demons necessary to run YET another SUN, a diskless workstation with equally great monitor from it (even with SWAP memory accessible over NFS, swapfile on that small drive...) So, two very nice terminals on exotic architecture, all off a 200M harddrive.
Linux vulnerablities reports appear at about the same frequency as Windows ones. But where Linux vulnerablities are reported one per report, with Windows you get a 3-15 bundles with Windows... Maybe this kind of tactic, you hear about Linux problems at least as often as about Windows, so it leaves you with impression they are the same level...
When was the last time Linux developers shipped 13 different vulnerablity patches at once?
Beta does not denote lack of stability, at least in the OSI world. It is supposed to, yes. But it does not.
Sorry, it's wishful thinking. Sure a lot of Beta is quite high quality. Final shouldn't mean "doesn't crash and no visible bugs". It must mean "tested to and through, under all circumstances". I don't want to find some set of options not working if my job depends on this. Stable is not "released in quite a while" but "no bugs found in quite a while". Of course some of the commercial software gets released as "final" in such a state that every OS programmer would wear a paper bag over his head for releasing such junk as "alpha". But that's a completely different matter.
What you're suggesting is CREATING a new distro, based off Gentoo, with its own package system, common administrative interface, automated update server and so on. You break a large part of the Gentoo philosophy, enough to stop calling it Gentoo. Sure, it's a nice distro. Great for such large networks. Admin-friendly. Fast. Easily customizable. With a nice task separation between machines. Very neat idea. But NOT Gentoo anymore.
1) Really. How many people are there in the team? How many programs are checked in every day? How much time can they sacrifice to each of the programs? How well do they know them all? Of course they WILL be finding bugs. After all, the programs are beta, bugs pop up in different configs. But not once I had emerge world dying on some compile time error (they certainly can't test all the sets of the USE flags) and I don't want to think how many bugs lurk in my system.
2) Of course, your own repository... neat idea and all, but still it must be kept up-to-date and it lasts. Say, you need some program NOW. You didn't need it before. apt-get install gnuplot. Downloading from nearest mirror, installing, done. If it's not in your Gentoo repository though, your system has to compile it first. It lasts. Time flows. Keeping ALL the portage tree binaries up-to-date isn't quite possible. Sooner or later you hit one you don't have and need NOW.
3) So why so many "Do not edit this file. It's generated automatically on boot."?
programs with configurations that are well-tested, generally since the inception of portage.
Certainly the Portage team can't test the program better than the developers. And developers don't usually release programs with known bugs. Though they often release Beta - programs with a lot of UNKNOWN bugs. These land in Portage tree, after testing that they compile cleanly, then start up okay and perform some basic functionality. Nobody in the Portage team can find and correct all the uncaught beta stage bugs. Unstable doesn't mean "crashes every time" or "doesn't compile". It means frequent errors just a bit off the way, where alpha tests didn't catch them.
if the bosses hired you, they should have confidence in your skills and your resourcefulness. THEY may be. After all, they don't have to be tech savvy. What about you yourself? Sure you can work out a lot of problems. Sure given enough time you will learn everything. But if things go wrong and you need them fixed NOW, there's no time to learn. You just call and ask someone who KNOWS.
you would definitely set up a centralized build server, possibly with distcc installed on all of the workstations to mitigate the load, distribute it across the network and speed up compilation times. This build server would also act as a weekly package checkpoint.
Sounds like a lot of work. Sure you CAN make it rapid. But don't you see some difference between doing the above and i.e. apt-getting a binary? Like, cost and workload? KISS and the chance for failure is much lower too. You can make EVERY system to update rapidly. You can make Windows 95 secure. But at what cost?
After you got the initial infrastructure in place, it would be a breeze. Assuming everything works out right.
Wrong assumption. The problem is the system is not designed not to break on update. After successful emerge you get "n files in/etc need updating". And until you update them, some essential services will be down. If you run it from cron, this is bound to end with a disaster. The problem with Gentoo is that each upgrade requires cautious inspection and post-upgrade maintenance. That's the normal way, different from elephantine structures in distros like Redhat, that practically clone all the config to distro-native files, from which it's copied, regenerating "standard" configs on each upgrade. Ugly, heavy, obfuscated, but It Works(tm). Gentoo's way is clean and straightforward. With standard amount of problems attached to it. Nothing serious. Just enough to drive every admin of a really big net crazy.
Standard. Maybe a bit above due to easy, high customizablity.
rapid updates
No. Bleeding edge is not equivalent to rapid. apt-get upgrade apache is rapid - it takes 15s on a fast system. emerge apache isn't rapid. It takes half a hour.
and ease of administration?
Below standard. All typical manual administration by editing standard config files. No centralized "managers".
Don't get me wrong. Typing this from a Gentoo box, and I like my Gentoo. But that's a zealot/fanboy distro. Not a pro admin distro. I keep it because I like it, I can fiddle with it, learn. I can do cool stuff with it. If I was to manage a farm of 200 different of these I'd easily go crazy.
Plus OBSD rules when it comes to security but sucks when it comes to efficiency. Just doesn't scale well for high loads. Sure it often is the best option, leaving all the competition far behind. Sometimes, not, though.
Tony Blair, Bill Gates and Bono walk into a bar. "So, Bill", says Tony, "What about that 80% discount on MS software?" "No way" says Bill. "Bill. Software patents. Just for you. A word to the jury in patent cases." Bill stares at Tony, takes out a pen and starts nervously doodling on a coaster. "No. I can't. Not 80%". "Must be 80%. Just the government. Schools... We'll make it obligatory in schools. No discounts either." "60%, please, Tony, I can't." - Bill bites his lip and staring blankly at the coaster, continues to doodle. "But, Bill. The antitrust. The EU. The monopoly. The fines." "Tony! Don't force me..." Bill gasps, his hand with the pen running in circles over the coaster. "Removal of Media Player." The pen snaps under the pressure. Bill breaks in tears. Tony grabs Bill and supporting him on his shoulder whispers "75" and leads Bill out. Bono quietly hides the coaster in his pocket...
Oh, that's wonderful! Write down every piece of the bullshit the customer says. Then write the program EXACTLY to the specs.
And when they complain, write down everything again, and charge them a nice $$$ for "program extension" over everything that you do that wasn't in the original specs. Point it out exactly.
The original contract was that the software does A, B, C and D, and D is done in X way. (though obviously it's stupid. You might have suggested it's stupid, but accept it if klient disagrees!) Now client decides C is redundant, D should be done in Y way and E and F are needed. So charge them for all that - it wasn't in the first specs...
Next time they will state clearly what they really want.
Remember: A correct program is not a program that does what the user thinks it should do. A correct program is a program which does everything (and nothing beyond) what the specification says. This is the only metrics. If you start guessing, you get the blame.
And to make things even more fun, this file is an .avi containing divx mis-named as .mpg
Pessimist thinking may be reasonable, but... "it might very well cost us that billion dollars" in the future, with 1000:1 USD-EUR exchange rate as well :)
Thing is you map all the known space junk on all further spaceship orbits and just avoid it. No more than $10 per piece of space junk and per satellite/spaceship. (delay the launch by 0.1s or so, use up 20-30kg of fuel more in rare case it gets on the route). We're not talking about leaving 2 millions pieces of space junk up there, but 1 piece. In 20 years it will mean even less of an obstacle than now. And in 50 or so, due to its historical value, it will be worth more than billion dollars, even completely broken. And never bring it down. I think orbital museum will be one of the most valuable pieces of the space exploration history.
And what about people who the government just -used to think viable- for spying on others? Even if they weren't? In this case they are the victims.
Disable whatever could bring it down then... "natural" deorbiting will take many years, probably enough to provide space flights cheap enough to just move it to some museum or such.
1. Mr. Wildstein, the journalist who stole the list, got fired. Now the journalist community boils about this apparent "limiting of free speech". (imo free speech is the right to reveal your own opinions, not stealing others' secrets)
2. The problem with the list is that it contains hardly more info than just names. It is known to contain names of active agents, names of those who cooperated, and names of people, who were observed and potentially viable for "recruitment" even though the contact between the secret service and them never happened. All mixed together and not distinguished from each other in any readable way (just keycode(hash) used in others, non-leaked documents). So the presence on the list may mean trouble to many innocents, because paranoid employes, friends and such may suspect them even if they are not guilty of anything.
Right... but even if the gyroscope fails, make it rotate slowly or make it at a fixed orientation to Earth, rotating with it, and just observe whatever it points at. Still a lot to see. And even if all the optics fail, still controlling a satellite would be cool. i.e. make it run Linux :)
:)
IMHO dropping MIR was a crime. It should have been lifted to a higher orbit and left there for further generations, as a museum piece.
Yes, space junk, but a mapped one, so no problem. And there's a LOT of space in space
Well, the point of getting the obsolete hardware to work is to make it as useful as it can get, without spending any more money. The only way I could upgrade them would be to pay from my own pocket. If I told my boss "can't be done, we need to buy a bigger drive" he would just sigh and tell me to dump it all. But I -wanted- them working, as we were always short one or two xterms, and whenever a spare one was needed, they would ask me to make my personal box available. It worked fine for others, but NOT for me.
Or I live in a country where decent salary of a sysadmin is way lower than cost of new hardware. I was earning the country's average (quite overblown in my country, due to salaries of few managers of banks, politicians etc - average way above median) and a new SUN costed about two years worth of my salary. A bigger SCSI harddrive - two months or so. Not everyone lives in the US and not everywhere "upgrade to newer hardware" is the most cost-efficient option. And FYI, it was one of bigger universities in the country, and one of more respected departments. Unfortunately, budget for universities here is rather low, so we have to live with what we have and avoid wasting money on useless upgrades if the same results can be achieved with some work. That computer was WAY obsolete then, and only user comfort was why it was still useful. Upgrading it would be definitely a waste of money. And to that...
1) I maintained the systems well enough that I had quite a bit of spare time
2) Boss doesn't like good (even if old) hardware to waste.
3) I wanted to learn something new. (that diskless part was completely optional)
4) I could finally get all the visitors to sod off, shoving them to the new xterms whenever they wanted me to check mail or something on my personal box.
Yes, funny units. My biology teacher elaborated how incredibly huge amount of data is contained in human genome, how awfully many pages of books it would take to write it down. I recalculated that and found it would fit on 2 CDs leaving some spare place.
Uncompressed movies.
3D raster images (based on "particles", not vectors - photorealistic 3D scenery for games)
Complete backups (instead of incremental)
Multi-DVD albums
Data like global maps, global phonebooks etc.
Same old contents, smaller disks (half-inch DVDs anyone?)
Single-use encryption keys.
At 1TB/disk you can afford a lot of redundancy. Decrease data density to 10%, the medium will remain readable after ages, and at 100GB/disk it's still reasonable backup/archive medium.
Oh, sure, on x86. No problem.
:)
Find a lightweight distro for SPARC. I remember one that supported it was RedHat, I don't remember the other but it was nearly as big. "standard" Linux is helluva big, you have actively work to make it small enough to fit on such small systems. (plus don't bull me that your Slack on your 386+16M works at any reasonable speed under X. Even on 486 it's not really acceptable, even console gets slow at times.)
The thing with NetBSD was that I actually didn't have to fight for space. I was happily browsing the binary tree and kept adding components. It felt on that 200M drive, about the same as Linux on 20G one. Kernel sources, compiler tools to recompile it, NFS demons, TFTP, BOOTP, all that was needed to compile the kernel and run the diskless workstation, and if I was short on diskspace, I was just shrinking its swapfile (from original 64M to 20M or so in the end. Still left the user with some 5M for personal data...)
How is the 2.6.x kernel compilation running on your 386?
If you want, just subsitute your favorite dead platform (Atari, Amiga, 68k Mac, etc) for the Alpha, and I think you'll see that NetBSD will probably never die.
Never say never. It will die when all the platforms die out completely. That is maybe in 30-50 years, maybe longer, but maybe not. Unless of course OpenBSD hackers embrace new markets stronger than Linux ones. I'm really surprised to see iPod, XBox, Playstation etc running Linux and not NetBSD. Why? 18 platforms isn't all that much...
We got an old SUN. 200M harddrive, poor CPU, not too much RAM, GREAT monitor, nice keyboard and mouse. A dream machine for an X terminal for our servers. But what to run on it? I tried Linux. It would barely fit. No way to fit X, a desktop manager and enough to comfortably use it. It was still possible to mount a drive over NFS and pull some binaries from there, but it was way too slow. In short, Linux sucked for it. I looked what else would work on that architecture. NetBSD? Let's give it a shot. I installed it, installed X, some basic software so it could work as a standalone workstation, not just terminal, then found enough spare diskspace, that I set up root directory and all demons necessary to run YET another SUN, a diskless workstation with equally great monitor from it (even with SWAP memory accessible over NFS, swapfile on that small drive...) So, two very nice terminals on exotic architecture, all off a 200M harddrive.
Linux vulnerablities reports appear at about the same frequency as Windows ones.
But where Linux vulnerablities are reported one per report, with Windows you get a 3-15 bundles with Windows... Maybe this kind of tactic, you hear about Linux problems at least as often as about Windows, so it leaves you with impression they are the same level...
When was the last time Linux developers shipped 13 different vulnerablity patches at once?
Beta does not denote lack of stability, at least in the OSI world. It is supposed to, yes. But it does not.
Sorry, it's wishful thinking.
Sure a lot of Beta is quite high quality.
Final shouldn't mean "doesn't crash and no visible bugs". It must mean "tested to and through, under all circumstances". I don't want to find some set of options not working if my job depends on this. Stable is not "released in quite a while" but "no bugs found in quite a while".
Of course some of the commercial software gets released as "final" in such a state that every OS programmer would wear a paper bag over his head for releasing such junk as "alpha". But that's a completely different matter.
Actually what you suggest is a neat idea, but...
What you're suggesting is CREATING a new distro, based off Gentoo, with its own package system, common administrative interface, automated update server and so on. You break a large part of the Gentoo philosophy, enough to stop calling it Gentoo.
Sure, it's a nice distro. Great for such large networks. Admin-friendly. Fast. Easily customizable. With a nice task separation between machines. Very neat idea. But NOT Gentoo anymore.
1) Really. How many people are there in the team? How many programs are checked in every day? How much time can they sacrifice to each of the programs? How well do they know them all?
Of course they WILL be finding bugs. After all, the programs are beta, bugs pop up in different configs. But not once I had emerge world dying on some compile time error (they certainly can't test all the sets of the USE flags) and I don't want to think how many bugs lurk in my system.
2) Of course, your own repository... neat idea and all, but still it must be kept up-to-date and it lasts. Say, you need some program NOW. You didn't need it before. apt-get install gnuplot. Downloading from nearest mirror, installing, done. If it's not in your Gentoo repository though, your system has to compile it first. It lasts. Time flows.
Keeping ALL the portage tree binaries up-to-date isn't quite possible. Sooner or later you hit one you don't have and need NOW.
3) So why so many "Do not edit this file. It's generated automatically on boot."?
programs with configurations that are well-tested, generally since the inception of portage.
/etc need updating". And until you update them, some essential services will be down. If you run it from cron, this is bound to end with a disaster. The problem with Gentoo is that each upgrade requires cautious inspection and post-upgrade maintenance. That's the normal way, different from elephantine structures in distros like Redhat, that practically clone all the config to distro-native files, from which it's copied, regenerating "standard" configs on each upgrade. Ugly, heavy, obfuscated, but It Works(tm). Gentoo's way is clean and straightforward. With standard amount of problems attached to it. Nothing serious. Just enough to drive every admin of a really big net crazy.
Certainly the Portage team can't test the program better than the developers. And developers don't usually release programs with known bugs. Though they often release Beta - programs with a lot of UNKNOWN bugs. These land in Portage tree, after testing that they compile cleanly, then start up okay and perform some basic functionality. Nobody in the Portage team can find and correct all the uncaught beta stage bugs.
Unstable doesn't mean "crashes every time" or "doesn't compile". It means frequent errors just a bit off the way, where alpha tests didn't catch them.
if the bosses hired you, they should have confidence in your skills and your resourcefulness.
THEY may be. After all, they don't have to be tech savvy. What about you yourself? Sure you can work out a lot of problems. Sure given enough time you will learn everything. But if things go wrong and you need them fixed NOW, there's no time to learn. You just call and ask someone who KNOWS.
you would definitely set up a centralized build server, possibly with distcc installed on all of the workstations to mitigate the load, distribute it across the network and speed up compilation times. This build server would also act as a weekly package checkpoint.
Sounds like a lot of work. Sure you CAN make it rapid. But don't you see some difference between doing the above and i.e. apt-getting a binary? Like, cost and workload? KISS and the chance for failure is much lower too. You can make EVERY system to update rapidly. You can make Windows 95 secure. But at what cost?
After you got the initial infrastructure in place, it would be a breeze. Assuming everything works out right.
Wrong assumption. The problem is the system is not designed not to break on update. After successful emerge you get "n files in
IBM is so much pro-linux. Which distro do they support/recommend?
stability
Below standard. Bleeding Edge, often beta.
high-level support options
None?
security
Standard. Maybe a bit above due to easy, high customizablity.
rapid updates
No. Bleeding edge is not equivalent to rapid.
apt-get upgrade apache is rapid - it takes 15s on a fast system.
emerge apache isn't rapid. It takes half a hour.
and ease of administration?
Below standard. All typical manual administration by editing standard config files. No centralized "managers".
Don't get me wrong. Typing this from a Gentoo box, and I like my Gentoo. But that's a zealot/fanboy distro. Not a pro admin distro. I keep it because I like it, I can fiddle with it, learn. I can do cool stuff with it. If I was to manage a farm of 200 different of these I'd easily go crazy.
Plus OBSD rules when it comes to security but sucks when it comes to efficiency. Just doesn't scale well for high loads. Sure it often is the best option, leaving all the competition far behind. Sometimes, not, though.
Tony Blair, Bill Gates and Bono walk into a bar.
"So, Bill", says Tony, "What about that 80% discount on MS software?"
"No way" says Bill.
"Bill. Software patents. Just for you. A word to the jury in patent cases."
Bill stares at Tony, takes out a pen and starts nervously doodling on a coaster.
"No. I can't. Not 80%".
"Must be 80%. Just the government. Schools... We'll make it obligatory in schools. No discounts either."
"60%, please, Tony, I can't." - Bill bites his lip and staring blankly at the coaster, continues to doodle.
"But, Bill. The antitrust. The EU. The monopoly. The fines."
"Tony! Don't force me..." Bill gasps, his hand with the pen running in circles over the coaster.
"Removal of Media Player."
The pen snaps under the pressure. Bill breaks in tears.
Tony grabs Bill and supporting him on his shoulder whispers "75" and leads Bill out.
Bono quietly hides the coaster in his pocket...
Bill Gates.
An unstable man.
Indeed.
Oh, that's wonderful!
Write down every piece of the bullshit the customer says.
Then write the program EXACTLY to the specs.
And when they complain, write down everything again, and charge them a nice $$$ for "program extension" over everything that you do that wasn't in the original specs. Point it out exactly.
The original contract was that the software does A, B, C and D, and D is done in X way. (though obviously it's stupid. You might have suggested it's stupid, but accept it if klient disagrees!) Now client decides C is redundant, D should be done in Y way and E and F are needed. So charge them for all that - it wasn't in the first specs...
Next time they will state clearly what they really want.
Remember: A correct program is not a program that does what the user thinks it should do. A correct program is a program which does everything (and nothing beyond) what the specification says. This is the only metrics. If you start guessing, you get the blame.
Sure you are doing better. But because you are smarter or because it's just vastly easier than CS?