Any file which is created by human work must be limited in the amount of information it contains. A typist at two characters per second cannot enter more than 60 kilobytes of information into the computer in a typical working day. Of course the file format may end up being much bigger, but in principle you could store a few major versions and every keystroke in between, then just 'replay the journal' to 'roll back' to any prior revision. If you'll excuse the silly terminology:-).
VMS had multiple versions associated with each file but AFAIK this was like current Unix version control systems: each revision is separate. There isn't a constant stream of changes which you can undo and redo as far back as you want.
I was proposing saving all editing, and allow the user to tag particular revisions as interesting, but still keeping the complete history.
It might be better to unify the 'undo' and 'save/load' functions, so that loading an older version is a kind of undo. But there needs to be a better way to navigate back to these old versions.
IMHO all desktop apps should have built in version control, so instead of File->Save you do File->Tag this version and give it a description. All editing changes are saved to disk immediately they are made (this is only a few bytes per second, no problem on modern machines) and you're prompted to make another version tag before quitting the app.
There's no longer any disk space argument against saving all versions of the document, all the time. At least not for wordprocessing and most 2d graphics, small spreadsheets etc.
Collaborative working with merging in different sets of changes (a la CVS) would be tricky to implement, depending on the application: it might require storing a list of commands executed rather than the current state of the document.
It's up to TiVo if they want to have a business model where they lose money on the boxes (or at least undercharge) with the hope of getting subscription money. They certainly don't owe me anything.
But my choice is to stay away from such pricing models. I'd far rather they charged a decent price for the box with its software, enough to pay their programmers, and then left it at that. Charge a decent price for a decent product, then it's mine and I don't need to subscribe to keep using it (or to get 'updates' of dubious value; consider that TiVo can remotely disable your ability to skip advertisements or do anything else they want).
Yeah, when I first started reading Slashdot I was excited by the 'Break RC4' (or whatever it was) contests. I thought it meant break the algorithm for all time by finding a way to decrypt for all possible keys, or something like that. I was a bit disappointed when it turned out to be just a brute-force attack on a single message. The only 'breaking' that has been done is to demonstrate that the algorithm doesn't withstand the amount of brute force that you can reasonably expect a cipher to these days. Which is worthwhile, but not the same as 'Breaking X' where X is some algorithm name like 'DES'. Better to say 'Breaking message 140123780175012729104729174214728193274320', but that doesn't sound as glamorous.
Why does it need to upload usage and debugging data? And why should I pay a monthly subscription for the privilege of doing that? Software upgrades, well, perhaps: but many other appliances have software too, and they don't require a subscription.
An Ethernet port and all that stuff is great. But it needs to be optional. You should be able to plug the box in, have it get the EPG data from broadcasts, and start using it. All these wonderful software features like tracking the shows you prefer are very handy, but no justification for paying a monthly fee. You might as well say that use of MS Word requires regular payments to Microsoft to keep the ability to open your Word documents, er, wait...
Once you have rich enough TV listings data, the TiVo software features you describe are pretty trivial. Maybe enough to merit a $29 shrinkware package from the computer shop, but certainly not a monthly subscription. I can appreciate they're very useful, and if you enjoy watching TV you may get $10/month worth of benefit from them, but to me as a programmer it seems rather a rip-off. I'd rather have the listings data in a parsable format and write tortuous Perl scripts to choose what to watch.
I think that fundamentally, I object to the idea of the thing having a modem:-P. It would be far better if no expensive 'infrastructure' were needed at all - I don't have to pay for an infrastructure to use my oldstyle VCR or microwave oven, so why do it for hard disk video recorders?
I'm sure the money that TV networks get by restricting access to their listings is piddling at best. It would make much more sense for an EPG to be broadcast alongside each channel, then anyone could make tivos without the need for banks of modems and technicians to keep it all running.
"Who do you think you are kidding, Mr Torvalds, if you think we're on the run? We know the way to cut off your little fun, just wait until all your hardware's Palladium! So who do you think you are kidding, Mr Torvalds, if you think that Redmond's done?"
"Mr Gates, whom everyone hates, has been in quite a fret. But he'll be in control again: we're rolling out Dot-Net! So who do you think you are kidding, Mr Torvalds, if you think that Redmond's done?"
(Overheard at Microsoft's secret Walmington-on-C# development headquarters)
Yeah I meant their business plan from the beginning should have been to sell boxes and not get involved with listings feeds. Although I think I see the flaw now - where else do the listings come from? You'd think that TV channels would broadcast an EPG (electronic programme guide) alongside every one of their channels. It looks like this is unfortunately not yet the case in all of TiVo's markets.
I didn't know you could use the box without a subscription, I'll consider getting one in that case. (Although even the biggest hard disk cannot compete for storage capacity with a huge stack of VHS tapes; I sometimes backlog up to two months' TV viewing.) I wonder if it has PDC support (Programme Delivery Control; an signal sent by the broadcaster at the time programmes start and stop, since they may not run exactly to timetable).
Part of the difference between Xerox and Hoover is that the former is based on a real word - xerography, writing with light (IIRC) - while the latter is just a surname. If a publication in Britain uses the noun or verb 'hoover', they are liable to get a letter from the company's lawyers trying Canutely to defend the trademark (in Private Eye these letters are printed under the heading 'What a pathetic way to earn a living...').
Interesting that the verb is 'to hoover' and not 'to hoove'. Perhaps that gives you a clue that the folk etymology of 'crap' (from Thomas Crapper and his name printed on WCs) is false. Maybe when surnames are verbed the -er is always kept. Anyone know of other examples?
TiVo's problem is surely their attempt to follow a subscription-based model rather than just selling boxes. It might have been better to manufacture PVRs, sell them at a reasonable price (which is still far above what they cost to manufacture, given the price drops in components over the past few years) and when the market peters out, just retire gracefully and return the profits to shareholders.
Trying to build up a base of paying subscribers may look good on the company's accounts, but shareholders are surely not under any illusions that these subscribers are guaranteed to stay around forever. Meanwhile potential customers (like me) stay away from TiVo because we don't want to pay a subscription for something (TV listings) which is available for free anyway, and the box will become useless once TiVo goes bust or discontinues service. The idea of PVRs is bound to take off, but you can't take that to mean that any particular company will survive.
Just sell the damn things like toasters, pocket the money, and stop making them when it becomes unprofitable. That's all there is to it.
Your mention of dependencies made me think of ccache which is memoization for the C compiler (based on the older 'compilercache'). It means you can just recompile all the files, all the time, and while the performance won't be as good as having a makefile which only does the minimum compilations necessary, it will be almost as fast and a lot less hassle to maintain.
Another AC pointed out that name mangling stops you mixing C++ object files from different compilers. I just echo that here because nobody has so far moderated up his post.
Instead of different makefiles for each compiler, why not write wrappers for the various compilers to give them all the same interface? Then at least for compiler invocation you could have the same makefile for all four platforms, just set CC=cc_wrapper which is a shell script (or.cmd script on Windows, or Perl or whatever) which mangles its command-line options into whatever weird syntax this platform's compiler expects.
With more fundamental issues like differences in the code accepted by different compilers, you can use #ifdefs in the code, which is not elegant but probably much better than makefile hacking.
Some suggested switching to gcc on all platforms, but then others said it might produce slower code. Well, you won't know until you benchmark. It's possible (just) that you might decide to compile most of your object files with gcc, to eliminate most of the compiler-specific hackery, and just compile those parts of the program that are speed-critical using the native compiler. This assumes that the object formats used by gcc and the native compiler are compatible, but in principle there's no reason they shouldn't be. (Perhaps not in practice, but give it a try.)
Yeah, and I thought it was a pressed CD because it had printed writing on it. I can't complain about cheesiness because I got the disc for free at some conference.
If you think that voting power in parliament should depend solely on the proportion of votes a party got in the last election, then yes the British-style electoral system is pretty bad. If OTOH you are concerned with what delivers a capable government, and maybe other things like having representation for identifiable constituencies rather than anonymous blocks of votes, then it's not so clear. You can argue of course that the large parliamentary majorities and two-party system encouraged by 'first-past-the-post' voting make for bad government (as opposed to a proportional system like Italy, with lots of smaller parties) but it's not automatic.
It's true that 'safe seats' where the candidate nominated by the dominant party is guaranteed to get in are rather an affront; an STV system would let voters choose between different candidates from the same party (without 'letting the others in' as would happen under the current system if votes for the leading party get split).
There was an alternative-vote system in the elections for London mayor (not full STV, just a first and second preference) but the British political parties did not want to recommend second preferences to voters. 'I think it's a myth that politicians have armies of voters they can direct', said the Tory leader. They must have thought the electorate would find it a bit fishy to recommend second choice votes; it clouds the message of 'vote for us'. Perhaps the Australian electorate is more sophisticated and not put off by politicians giving long lists of preferences. In the end the current mayor won solely on first choices, so it wouldn't have mattered anyway.
Why not have both SRAM and DRAM on the same chip - so every bit is duplicated? More transistors (how many more compared to just DRAM?) but you can cut the power whenever you want. And when the power is on you get the faster response times of DRAM, at least for reading. (Maybe for writing the DRAM could be updated first, then the perhaps-slower SRAM would be updated asynchronously, and there'd be an output 'ok to turn the power off now' which becomes true only when such changes have been committed.) OTOH I have no idea what I am talking about. Does the idea make any sense?
A bootable Linux CD like Knoppix can be very handy when you are stranded out of reach of a Linux box.
Case in point: I went away this weekend to a fairly remote part of the north Devon countryside, armed only with a Win98-powered Toshiba laptop with built-in modem (and an external modem). I hoped that I'd be able to dial up to my ISP (handy emergency ISP for those in Britain: 0845 206 6050, username totalserve, password totalserve), download the Putty ssh client and read my mail. I was expecting some maybe-important messages.
In one of the bizarre screwups that occasionally reminds me why I normally use Linux and not Windows, I could dial up and ping things but not make HTTP connections to any host. I tried to investigate but there wasn't much I could do. Definitely a software problem (like I said, DNS and pinging were fine), and hard to investigate with only vanilla Win98 tools.
Realizing this I remembered the Knoppix CD I had at home. If only I had brought it with me! So I telephoned home and spoke to my brother, asked him to find the CD ('what? you don't keep it in a case? won't it get scratched?' - no, CD cases are AFAICT superfluous) and post it to me. 'Stick it to a bit of card', I said, 'and post it to me first class'.
That was on Thursday evening and I knew that the CD could not arrive until Saturday - that's today. I thought it had failed to arrive, but it eventually got here late in the morning. Sure enough the disc was stuck on to an octogon of cut-out cardboard using a single strip of masking tape across the diameter. (That's the kind of rough yellow tape that doesn't stick on very hard.)
I eagerly peeled off the masking tape, it was a bit harder to remove than I had expected but I peeled off the tape up to the hole at the centre of the disc. Then I peeled from the centre towards the other edge - and instantly the tape ripped off and with it the silver backing of about a quarter of the CD. I'm left with just transparent plastic where the silver has peeled away. I know that CDs have insane levels of error correction, but of course it would be futile to try sticking the tape back again in roughly the same place and seeing if the CD still works. (I tried it anyway.)
Like that story where the last man on earth's glasses get smashed when he enters the library. That's the cliche that came to mind.
So the moral of the story is: Debian and Knoppix may be very stable and robust Linux distributions. But the CDs on which they are distributed are quite literally 'flaky'. Don't try sticking them on to things with tape!
Epilogue - I found that the Windows installation sensibly had the original.cab and setup.exe files lying around in c:\windows\options, so I reinstalled Win98 from that. That is how I am able to post this message to Slashdot.
Any file which is created by human work must be limited in the amount of information it contains. A typist at two characters per second cannot enter more than 60 kilobytes of information into the computer in a typical working day. Of course the file format may end up being much bigger, but in principle you could store a few major versions and every keystroke in between, then just 'replay the journal' to 'roll back' to any prior revision. If you'll excuse the silly terminology :-).
VMS had multiple versions associated with each file but AFAIK this was like current Unix version control systems: each revision is separate. There isn't a constant stream of changes which you can undo and redo as far back as you want.
I was proposing saving all editing, and allow the user to tag particular revisions as interesting, but still keeping the complete history.
It might be better to unify the 'undo' and 'save/load' functions, so that loading an older version is a kind of undo. But there needs to be a better way to navigate back to these old versions.
IMHO all desktop apps should have built in version control, so instead of File->Save you do File->Tag this version and give it a description. All editing changes are saved to disk immediately they are made (this is only a few bytes per second, no problem on modern machines) and you're prompted to make another version tag before quitting the app.
There's no longer any disk space argument against saving all versions of the document, all the time. At least not for wordprocessing and most 2d graphics, small spreadsheets etc.
Collaborative working with merging in different sets of changes (a la CVS) would be tricky to implement, depending on the application: it might require storing a list of commands executed rather than the current state of the document.
It's up to TiVo if they want to have a business model where they lose money on the boxes (or at least undercharge) with the hope of getting subscription money. They certainly don't owe me anything.
But my choice is to stay away from such pricing models. I'd far rather they charged a decent price for the box with its software, enough to pay their programmers, and then left it at that. Charge a decent price for a decent product, then it's mine and I don't need to subscribe to keep using it (or to get 'updates' of dubious value; consider that TiVo can remotely disable your ability to skip advertisements or do anything else they want).
Yeah, when I first started reading Slashdot I was excited by the 'Break RC4' (or whatever it was) contests. I thought it meant break the algorithm for all time by finding a way to decrypt for all possible keys, or something like that. I was a bit disappointed when it turned out to be just a brute-force attack on a single message. The only 'breaking' that has been done is to demonstrate that the algorithm doesn't withstand the amount of brute force that you can reasonably expect a cipher to these days. Which is worthwhile, but not the same as 'Breaking X' where X is some algorithm name like 'DES'. Better to say 'Breaking message 140123780175012729104729174214728193274320', but that doesn't sound as glamorous.
Why does it need to upload usage and debugging data? And why should I pay a monthly subscription for the privilege of doing that? Software upgrades, well, perhaps: but many other appliances have software too, and they don't require a subscription.
An Ethernet port and all that stuff is great. But it needs to be optional. You should be able to plug the box in, have it get the EPG data from broadcasts, and start using it. All these wonderful software features like tracking the shows you prefer are very handy, but no justification for paying a monthly fee. You might as well say that use of MS Word requires regular payments to Microsoft to keep the ability to open your Word documents, er, wait...
Once you have rich enough TV listings data, the TiVo software features you describe are pretty trivial. Maybe enough to merit a $29 shrinkware package from the computer shop, but certainly not a monthly subscription. I can appreciate they're very useful, and if you enjoy watching TV you may get $10/month worth of benefit from them, but to me as a programmer it seems rather a rip-off. I'd rather have the listings data in a parsable format and write tortuous Perl scripts to choose what to watch.
Quite, I think that is a perfectly cromulent point.
I think that fundamentally, I object to the idea of the thing having a modem :-P. It would be far better if no expensive 'infrastructure' were needed at all - I don't have to pay for an infrastructure to use my oldstyle VCR or microwave oven, so why do it for hard disk video recorders?
I'm sure the money that TV networks get by restricting access to their listings is piddling at best. It would make much more sense for an EPG to be broadcast alongside each channel, then anyone could make tivos without the need for banks of modems and technicians to keep it all running.
"Who do you think you are kidding, Mr Torvalds,
if you think we're on the run?
We know the way to cut off your little fun,
just wait until all your hardware's Palladium!
So who do you think you are kidding, Mr Torvalds,
if you think that Redmond's done?"
"Mr Gates, whom everyone hates, has been in quite a fret.
But he'll be in control again: we're rolling out Dot-Net!
So who do you think you are kidding, Mr Torvalds,
if you think that Redmond's done?"
(Overheard at Microsoft's secret Walmington-on-C# development headquarters)
Yeah I meant their business plan from the beginning should have been to sell boxes and not get involved with listings feeds. Although I think I see the flaw now - where else do the listings come from? You'd think that TV channels would broadcast an EPG (electronic programme guide) alongside every one of their channels. It looks like this is unfortunately not yet the case in all of TiVo's markets.
I didn't know you could use the box without a subscription, I'll consider getting one in that case. (Although even the biggest hard disk cannot compete for storage capacity with a huge stack of VHS tapes; I sometimes backlog up to two months' TV viewing.) I wonder if it has PDC support (Programme Delivery Control; an signal sent by the broadcaster at the time programmes start and stop, since they may not run exactly to timetable).
Part of the difference between Xerox and Hoover is that the former is based on a real word - xerography, writing with light (IIRC) - while the latter is just a surname. If a publication in Britain uses the noun or verb 'hoover', they are liable to get a letter from the company's lawyers trying Canutely to defend the trademark (in Private Eye these letters are printed under the heading 'What a pathetic way to earn a living...').
Interesting that the verb is 'to hoover' and not 'to hoove'. Perhaps that gives you a clue that the folk etymology of 'crap' (from Thomas Crapper and his name printed on WCs) is false. Maybe when surnames are verbed the -er is always kept. Anyone know of other examples?
TiVo's problem is surely their attempt to follow a subscription-based model rather than just selling boxes. It might have been better to manufacture PVRs, sell them at a reasonable price (which is still far above what they cost to manufacture, given the price drops in components over the past few years) and when the market peters out, just retire gracefully and return the profits to shareholders.
Trying to build up a base of paying subscribers may look good on the company's accounts, but shareholders are surely not under any illusions that these subscribers are guaranteed to stay around forever. Meanwhile potential customers (like me) stay away from TiVo because we don't want to pay a subscription for something (TV listings) which is available for free anyway, and the box will become useless once TiVo goes bust or discontinues service. The idea of PVRs is bound to take off, but you can't take that to mean that any particular company will survive.
Just sell the damn things like toasters, pocket the money, and stop making them when it becomes unprofitable. That's all there is to it.
Your mention of dependencies made me think of ccache which is memoization for the C compiler (based on the older 'compilercache'). It means you can just recompile all the files, all the time, and while the performance won't be as good as having a makefile which only does the minimum compilations necessary, it will be almost as fast and a lot less hassle to maintain.
Another AC pointed out that name mangling stops you mixing C++ object files from different compilers. I just echo that here because nobody has so far moderated up his post.
Instead of different makefiles for each compiler, why not write wrappers for the various compilers to give them all the same interface? Then at least for compiler invocation you could have the same makefile for all four platforms, just set CC=cc_wrapper which is a shell script (or .cmd script on Windows, or Perl or whatever) which mangles its command-line options into whatever weird syntax this platform's compiler expects.
With more fundamental issues like differences in the code accepted by different compilers, you can use #ifdefs in the code, which is not elegant but probably much better than makefile hacking.
Some suggested switching to gcc on all platforms, but then others said it might produce slower code. Well, you won't know until you benchmark. It's possible (just) that you might decide to compile most of your object files with gcc, to eliminate most of the compiler-specific hackery, and just compile those parts of the program that are speed-critical using the native compiler. This assumes that the object formats used by gcc and the native compiler are compatible, but in principle there's no reason they shouldn't be. (Perhaps not in practice, but give it a try.)
What's the point? Everyone knows that Word documents are the only interchangeable document format you'll ever need.
Yeah, and I thought it was a pressed CD because it had printed writing on it. I can't complain about cheesiness because I got the disc for free at some conference.
How long until we can set up Bayesian by-word filtering on Slashdot comments?
If you think that voting power in parliament should depend solely on the proportion of votes a party got in the last election, then yes the British-style electoral system is pretty bad. If OTOH you are concerned with what delivers a capable government, and maybe other things like having representation for identifiable constituencies rather than anonymous blocks of votes, then it's not so clear. You can argue of course that the large parliamentary majorities and two-party system encouraged by
'first-past-the-post' voting make for bad government (as opposed to a proportional system like Italy, with lots of smaller parties) but it's not automatic.
It's true that 'safe seats' where the candidate nominated by the dominant party is guaranteed to get in are rather an affront; an STV system would let voters choose between different candidates from the same party (without 'letting the others in' as would happen under the current system if votes for the leading party get split).
There was an alternative-vote system in the elections for London mayor (not full STV, just a first and second preference) but the British political parties did not want to recommend second preferences to voters. 'I think it's a myth that politicians have armies of voters they can direct', said the Tory leader. They must have thought the electorate would find it a bit fishy to recommend second choice votes; it clouds the message of 'vote for us'. Perhaps the Australian electorate is more sophisticated and not put off by politicians giving long lists of preferences. In the end the current mayor won solely on first choices, so it wouldn't have mattered anyway.
If this is the Tadpole laptop, just how much RAM will the Frog model have?
Perhaps it is a server. The FrogServer 450PX.
Why not have both SRAM and DRAM on the same chip - so every bit is duplicated? More transistors (how many more compared to just DRAM?) but you can cut the power whenever you want. And when the power is on you get the faster response times of DRAM, at least for reading. (Maybe for writing the DRAM could be updated first, then the perhaps-slower SRAM would be updated asynchronously, and there'd be an output 'ok to turn the power off now' which becomes true only when such changes have been committed.) OTOH I have no idea what I am talking about. Does the idea make any sense?
A bootable Linux CD like Knoppix can be very handy when you are stranded out of reach of a Linux box.
.cab and setup.exe files lying around in c:\windows\options, so I reinstalled Win98 from that. That is how I am able to post this message to Slashdot.
Case in point: I went away this weekend to a fairly remote part of the north Devon countryside, armed only with a Win98-powered Toshiba laptop with built-in modem (and an external modem). I hoped that I'd be able to dial up to my ISP (handy emergency ISP for those in Britain: 0845 206 6050, username totalserve, password totalserve), download the Putty ssh client and read my mail. I was expecting some maybe-important messages.
In one of the bizarre screwups that occasionally reminds me why I normally use Linux and not Windows, I could dial up and ping things but not make HTTP connections to any host. I tried to investigate but there wasn't much I could do. Definitely a software problem (like I said, DNS and pinging were fine), and hard to investigate with only vanilla Win98 tools.
Realizing this I remembered the Knoppix CD I had at home. If only I had brought it with me! So I telephoned home and spoke to my brother, asked him to find the CD ('what? you don't keep it in a case? won't it get scratched?' - no, CD cases are AFAICT superfluous) and post it to me. 'Stick it to a bit of card', I said, 'and post it to me first class'.
That was on Thursday evening and I knew that the CD could not arrive until Saturday - that's today. I thought it had failed to arrive, but it eventually got here late in the morning. Sure enough the disc was stuck on to an octogon of cut-out cardboard using a single strip of masking tape across the diameter. (That's the kind of rough yellow tape that doesn't stick on very hard.)
I eagerly peeled off the masking tape, it was a bit harder to remove than I had expected but I peeled off the tape up to the hole at the centre of the disc. Then I peeled from the centre towards the other edge - and instantly the tape ripped off and with it the silver backing of about a quarter of the CD. I'm left with just transparent plastic where the silver has peeled away. I know that CDs have insane levels of error correction, but of course it would be futile to try sticking the tape back again in roughly the same place and seeing if the CD still works. (I tried it anyway.)
Like that story where the last man on earth's glasses get smashed when he enters the library. That's the cliche that came to mind.
So the moral of the story is: Debian and Knoppix may be very stable and robust Linux distributions. But the CDs on which they are distributed are quite literally 'flaky'. Don't try sticking them on to things with tape!
Epilogue - I found that the Windows installation sensibly had the original
Maybe there should be two distinct moderation options, 'Slashdot funny' and 'actually funny'.
But where is the 'Reading By Example' that tells you how to read this book?