It is terribly hard to build your first few nanites. Then you have to look at the replication ratio. How many more of itself can a self-replicator build before it fails? You've got to get the ratio above one.
The likely scenario is that the self-replicators are not robust and we never develop the technology to the point at which the ratio is solidly above one. So civilisation potters along quite wealthy for 50 years, then problems with contanimation, vibration, temperature, something, result in the nanites dying off. It could take decades to recover the lost art of building the first few, decades of great hardship for a society that has come to depend on nano-technology.
As opposed to the small leakages of nuclear power, which are a kind
of health tonic
This wise-crack got me confused. People sometimes say that there is no safe level of radio-activity, not realising that this is a methodological assumption, rather than an empirical fact.
When scientists have tried to investigate this, using the natural variation in background radiation and existing epidemilogical data, they have found that radiation is a health tonic!
Some scientists have speculated that this might even be a real effect, not a statistical artifact. Their idea is that damage from free radicals is a much bigger deal than damage by background radition. Cells have repair mechanisms that get turned on in response to increased metabolism and the consequent rise in free radicals. Lags in the regulation of repair are responsible for much of the damage caused by free radicals, and if radiation upregulated the repair mechanism that could more than compensate for the actual damage done by the radiation.
My guess, from having done research on speech recognition, is that most scientists just don't get how hard it is to do statistics right, and the "tonic" effect of radiation will turn out to be an artifact, probably due to incorrect compensation for regional variations in cigarette smoking.
Meanwhile Bruce Sterling's attempt at sarcasm is a bit of a disaster, revealing that the controversy over the dangers (or otherwise) of low levels of radiation has passed him by.
That is your mistake right there. Don't have her reading a book. Sit her at the Read-Eval-Print-Loop and have her type at it.
(+ 2 2) => 4
(sort "elbow" (function char< )) => "below"
You are there to give personal tuition, so she doesn't need to use a book.(You may need to!)
The other thing you need to do is wear boxing gloves. Then you have to tell her which keys to press, which means that she automatically stops you going too fast for her by stopping typing when she gets confused.
I'm reading currently on page 25 of SCIP. I'm
reading it because I what to learn about Metalinguistic Abstraction. Page 359 here I come!
I think it is simple in the sense that the definition and semantics are kept simple so that top students at an elite technical university can top off their computer programming course by writing their own implementation of the language that they are learning. That is a different notion of simple than "keep it simple so that your mum can learn it". For example CL has a loop macro. It is supposed to make it easy to write simple loops. To add the numbers from 1 to 10 you write
(loop for i from 1 to 10 sum i)
Does this actually help terrified mums? I don't know. The reason that Scheme doesn't have something like it is that implementing it is busywork. It would take MIT's students time to put it into their implementations, but they would not be learning anything of deep importance while they were doing so. So Steele and Sussman are right to leave out loop, and thus make Scheme simple in the sense relevant to their goals. But perhaps terrified adults find loop easy to use. In that case CL would be simpler than Scheme for teaching iteration to terrified adults.
I thought the reviewers comment about it being hard to add up 1 - 1/3 + 1/5 - 1/7 +... was a little odd.
Here is how to do it in CL
(* 4 (loop for i from 1 by 4 below 100000
sum (- (/ (float i)) (/ (+ i 2))))) => 3.1413836
The issue is the order in which subjects are taught. Simple use of computers, such as adding up simple series, is concrete, while calculus is abstract and therefore harder to learn. It makes sense to learn the easier, concrete stuff first, then have it available as a resource to help with the abstract stuff, by grounding it in examples. So there is something wrong about a calculus course for the 21st century that don't assume the student can write simple computer programs and use them in the examples.
I'm not afraid of DMX. I'm an adult. I know better than to take such stuff. Result: complete protection.
But what about the children? What we need are age limits, like we have with alcohol. When GreyWolf3000 says
The reason no one cares is because we're too busy dealing with pot.
the subtext is that we are so busy because we are trying to forbid cannabis to adults.
He is admitting that current policies sacrifice child protect on the altar of adult prohibition.
It is ironic that the GPL, which really rattels the libery saber, is out libertied by the BSD licences, which generally do no
such saber ratteling.
When a Roman freed a slave it was called manumission. The slave really became free, with the all rights of a free man, including owning slaves himself.
When Lincoln emancipated slaves during the Civil War, they did not become free in that sense. Yes they were no longer slaves, but they could not themselves become slave owners.
I see BSD licences as parallel to maunmission. Derived works may be closed source, with oppressive licencing. I see GPL licences as paralleling emancipation, because derived works cannot become closed.
Is BSD or GPL true liberty? You can guess my opinion by the way I've spun the issue.
When you set up a spread sheet, you say that this cell is the sum of that cell and the other cell. So you are using variables.
When you use a search engine, you look at your results, make/trivial/ changes to your search string and try again. This is an alien concept to ordinary folk. If you are asking a librarian there is no concept of distinguishing between searching for
"dogs" "and" "cats"
or
"dogs and cats"
A basic hurdle to computer use is grasping the idea that although the computer is useful, it is just an impersonal mechanism, and much more stupid than it appears. So to use it, you have to watch carefully to see what the mechanism is doing, and make small adjustments to the source file/search string to get the clockwork to unwind in the way you desire.
Your conclusion in predetermined by your choice of analogy. You draw the parallel
computing --> programming languages
motoring --> drivetrain knowledge
But introduction of motoring did make intellectual demands. If you wanted to get the benefit of your car you needed to upgrade your map reading skills far above the pedestrian. Previously you could load stuff onto your cart without worrying about wind resistance. Steam cars and battery cars didn't have gears. Once the industry opted for the internal combustion engine every drvier needed to grasp the basics of gear ratios. If you are pushing a broken down car on level ground, it soon builds up plenty of momentum. Those with no grasp of Newtonian mechanics end up crushed against walls.
What are the corresponding intellectual demands of the computer era? Obviously programming in C, calling malloc and free, opening sockets, etc, is not for the general public. On the other hand, programming concepts are reaching the general public in spread sheets, style sheets, search engine strings, database queries.
The basic point of a computer is that it automates stuff. It is a pocket calculator and typewriter, plus automation. It is not that programming is merely what is under the hood making it go. Programming it, to repeat the calculation on different data, or to send slightly different letters to different customers, based on information in the data base, is the point of the tool.
If you assume that it is +40 C at the equator and say -50 C at the pole, thats one degree centigrade per degree of latitude. Now a degree of latitude is over 100Km. So if it all averages out over a long time and you have an icesheet on level ground then the edge of the ice moves 1km for every hundredth of a degree change in long term average temperature.
Any claim about a glacier depends on local circumstances making it less hyper-sensitive that icesheets in general.
Classic example, floating point arithmetic is complicated because it is inexact, so = doesn't work like you hope. Every so often some-one has the bright idea of building a tolerance into =, so that it works like it should and programming becomes simpler.
So you still have to be aware of rounding error and build a bigger tolerance into your code when appropriate, but now you also have to cope with a non-transitive = so sometimes a=b, b=c, yet c != a. Over-simplifying made it more complicated.
Second example, SOAP, the Simple Object Access Protocol, uses the same port as http. This make things simpler for the system administrator. He doesn't need to open an extra port in his firewall to let SOAP through. How does he block SOAP without blocking http? Ah well, simplifying things has made them awfully complicated.
Mega-example: You have two distinct concepts in assembler, skipping optional code, and choosing between alternatives
TEST COND JUMP alternative OP1 OP2 JUMP rejoin alternative OP3 OP4 rejoin OP5 etcetera
We could have had language keywords opt(ional) and alt(ernative) which would look like this
opt(boolean)statement;
alt(boolean)statement1;statement2;
but to make things simpler, languages just have one word keyword, if, instead of two, opt and alt. So they look like this
if(boolean)statement;
if(boolean)statement1;else statement2;
Except of course they don't. There is now a dangling else problem, so we all resort to defensive programming and write
if(boolean){
statement; }
or
if(boolean){
statement1; } else {
statement2; }
Computing would be a lot simpler if we were more understanding and accepting of complexity. Then we could concentrate on spotting and reducing the complexity we can do something about, rather than adding to the complexity with misguided over-simplifications.
I shouldn't have made light of the serverity of this issue. Having a University education swept out from under you is a big deal.
But here's the problem. Imagine that the p53 gene stuff leads to a successful recombinant DNA therapy for half of cancers. They get cured like curing infections with antibiotics. So half the nations oncologists are out of work.
If you don't like that example, consider tort law reform. Outlawing champerty is possible, we haven't had it in the UK since medieval times. Outlawing it in the US would put half the lawyers out of work
Stuff like this really happens. What became of all the vets who cared for the horses and other draught animals? A profession massacred by the mechanisation of transport. Look at jazz and big band music in the 50's. Along come the 60's and rock and roll. The whole second tier of jazz and swing musicians had their livelihoods wiped out in under a decade. That was a change of taste, a quite separate issue from the impact of recording on live music or films on theatre.
Closer to home, check out a WWII bomb aimer. There was a whole industry of mechanical controls, controlling everything from washing machines to automated machine tools with elaborate mechanical mechanisms. The micro-processor took the food off a lot of mechanical engineers plates. Go back to university and spend four years learning electrical engineering. Closer still, try getting a job designing analogue electronics. Sure analogue is fundamental. There will always be some jobs there, but it must have really sucked to live through the transition to digitise, signal process,DAC.
Which brings me to my subject line, the nature of education. Ones elders have seen it all before and know that University is for growing intellectually and developing transferable skills. Suppose the Andy Groves of this world succeeded and something was done. Suppose that laws protected skilled people from having their jobs whipped out from under them. Then the nature of university education would change. Instead of acquiring transferable skills, one would go to be trained in job specific skills. As narrow as possible, the better to secure your job-for-life.
To an extent that has already happened. You go to university to train to be an accountant and make a living exploiting loop holes in GAAP. If the basis of US accounting were changed from following the rules, to the British model of "true and fair", if the thick rule book on lease accounting were replace by the single sentence "all uncancelable obligations must be capitalised", years of obscenely expensive full time university classes would go up in smoke.
Investing in narrow technical education is a business venture. You may lose your investment.
So Americans wants $2billion worth of IT services. Well, the world doesn't owe America a living. If Americans want $2billion worth of IT services they are going to have to work for it. Either they can do it themselves, or they can do other work, making jet planes, medicines, semiconductors, cars, etc, to the earn the $2billion and buy the IT services from abroad. There is $2billion work of work to be done in America either way.
Ah, but what if outsourcing saves money? What if Americans do $2billion worth of other work, but get to buy their IT services for $1billion? Well, they get to keep the other $1billion, all those jet planes, medicines, etc stay in the USA. Getting stuff cheap makes you better off!
Bastiat explained all this very nicely 150 years ago, but human ignorance is invincible.
Children who have been born into the caste of software developer are forbidden by religious law from taking other employment, so have only a life time of destitution to look forward to. I guess out sourcing sucks for them.
I'm learning Xlib at the moment. I've learned to write my code to respond to expose events by redrawing the window.
However, the server automatically draws the exposed area with the background pixel value or pixmap. Pixmaps are drawables. So, presumably I can draw on the background pixmap, thus shifting
the entire refresh burden to the server.
I understand what stopped programmers doing this in 1990, the server would run out of memory to store the pixmaps; but what stops me doing it this way in 2003, when RAM is $200 per Gigabyte?
It is wrong to say that "Patentability of hardware is a well accepted principal." There are fundamental problems with patents on hardware. The European Pariliament should be fixing them first before considering software.
Without patents, inventions are public goods. A businessman puts up money for research, but without patents the invention belongs to everyone, so the businessman cannot get a return on his investment. He doesn't repeat his mistake - result: lack of money for research.
Pay attention, this is where it gets difficult. The number of owners is a number. How big does that number have to be before the businessman finds that he cannot get a return on investment?
I reckon no more than a dozen. If a product is covered by more than a dozen different companies' patent portfolios, it is a write-off. The holders of the junk patents will leach the return from those who made the investment to come up with the key inventions.
So the patent system, even for hardware, only rewards business for successful research if the threshold for inventiveness is so high that few, preferably only one, patents cover each sellable product. Much work is needed to reform the current system for hardware.
Software comes in packages and suites. Even a single program is created by a linker, linking many object files. It is unrealistic to imagine a patent system that will reward businessmen for investing in research in computer software.
Notice that the patents system does force companies to have research departments, so that they can build up defensive patent portfolios. But the vision behind the patent system is that it rewards success. The license fees go to the company that finds a filament for an electric ligth bulb, or a way to transmit sound by electricity. That is the central point. Rather than having government funded research that consumes lots of money but never comes up with anything much, you privatise research, via the patents system, and those who don't come up with anything important lose their investment. But the way the system works today is based on quantity not quality. Companies build defense patent portfolios on the basis that they can use them to tie rivals up in court. The patent system in practise is a frictional cost, not an incentive system. Why throw grit into the wheels of the software industry?
This is such a key point. EBooks are expensive gadgets. They have to do something that paper books don't. Reflowing the text, for different screens sizes and font sizes isn't a killer app, but leave it out and you've just thrown away a major feature.
PDF is such a nineteenth century format. I find it infuriating.
It is terribly hard to build your first few nanites. Then you have to look at the replication ratio. How many more of itself can a self-replicator build before it fails? You've got to get the ratio above one.
The likely scenario is that the self-replicators are not robust and we never develop the technology to the point at which the ratio is solidly above one. So civilisation potters along quite wealthy for 50 years, then problems with contanimation, vibration, temperature, something, result in the nanites dying off. It could take decades to recover the lost art of building the first few, decades of great hardship for a society that has come to depend on nano-technology.
This wise-crack got me confused. People sometimes say that there is no safe level of radio-activity, not realising that this is a methodological assumption, rather than an empirical fact. When scientists have tried to investigate this, using the natural variation in background radiation and existing epidemilogical data, they have found that radiation is a health tonic!
Some scientists have speculated that this might even be a real effect, not a statistical artifact. Their idea is that damage from free radicals is a much bigger deal than damage by background radition. Cells have repair mechanisms that get turned on in response to increased metabolism and the consequent rise in free radicals. Lags in the regulation of repair are responsible for much of the damage caused by free radicals, and if radiation upregulated the repair mechanism that could more than compensate for the actual damage done by the radiation.
My guess, from having done research on speech recognition, is that most scientists just don't get how hard it is to do statistics right, and the "tonic" effect of radiation will turn out to be an artifact, probably due to incorrect compensation for regional variations in cigarette smoking.
Meanwhile Bruce Sterling's attempt at sarcasm is a bit of a disaster, revealing that the controversy over the dangers (or otherwise) of low levels of radiation has passed him by.
That is your mistake right there. Don't have her reading a book. Sit her at the Read-Eval-Print-Loop and have her type at it.
(+ 2 2) => 4
(sort "elbow" (function char< )) => "below"
You are there to give personal tuition, so she doesn't need to use a book.(You may need to!)
The other thing you need to do is wear boxing gloves. Then you have to tell her which keys to press, which means that she automatically stops you going too fast for her by stopping typing when she gets confused.
I'm reading currently on page 25 of SCIP. I'm reading it because I what to learn about Metalinguistic Abstraction. Page 359 here I come!
I think it is simple in the sense that the definition and semantics are kept simple so that top students at an elite technical university can top off their computer programming course by writing their own implementation of the language that they are learning. That is a different notion of simple than "keep it simple so that your mum can learn it". For example CL has a loop macro. It is supposed to make it easy to write simple loops. To add the numbers from 1 to 10 you write
Does this actually help terrified mums? I don't know. The reason that Scheme doesn't have something like it is that implementing it is busywork. It would take MIT's students time to put it into their implementations, but they would not be learning anything of deep importance while they were doing so. So Steele and Sussman are right to leave out loop, and thus make Scheme simple in the sense relevant to their goals. But perhaps terrified adults find loop easy to use. In that case CL would be simpler than Scheme for teaching iteration to terrified adults.I thought the reviewers comment about it being hard to add up 1 - 1/3 + 1/5 - 1/7 + ... was a little odd.
Here is how to do it in CL
(* 4 (loop for i from 1 by 4 below 100000
sum (- (/ (float i)) (/ (+ i 2)))))
=> 3.1413836
The issue is the order in which subjects are taught. Simple use of computers, such as adding up
simple series, is concrete, while calculus is abstract and therefore harder to learn. It makes sense to learn the easier, concrete stuff first, then have it available as a resource to help with the abstract stuff, by grounding it in examples. So there is something wrong about a calculus course for the 21st century that don't assume the student can write simple computer programs and use them in the examples.
I'm not afraid of DMX. I'm an adult. I know better than to take such stuff. Result: complete protection.
But what about the children? What we need are age limits, like we have with alcohol. When GreyWolf3000 says
the subtext is that we are so busy because we are trying to forbid cannabis to adults. He is admitting that current policies sacrifice child protect on the altar of adult prohibition.When a Roman freed a slave it was called manumission. The slave really became free, with the all rights of a free man, including owning slaves himself.
When Lincoln emancipated slaves during the Civil War, they did not become free in that sense. Yes they were no longer slaves, but they could not themselves become slave owners.
I see BSD licences as parallel to maunmission. Derived works may be closed source, with oppressive licencing. I see GPL licences as paralleling emancipation, because derived works cannot become closed.
Is BSD or GPL true liberty? You can guess my opinion by the way I've spun the issue.
When you set up a spread sheet, you say that this cell is the sum of that cell and the other cell. So you are using variables.
/trivial/ changes to your search string and try again. This is an alien concept to ordinary folk. If you are asking a librarian there is no concept of distinguishing between searching for
When you use a search engine, you look at your results, make
"dogs" "and" "cats"
or
"dogs and cats"
A basic hurdle to computer use is grasping the idea that although the computer is useful, it is just an impersonal mechanism, and much more stupid than it appears. So to use it, you have to watch carefully to see what the mechanism is doing, and make small adjustments to the source file/search string to get the clockwork to unwind in the way you desire.
Your conclusion in predetermined by your choice of analogy. You draw the parallel
computing --> programming languages
motoring --> drivetrain knowledge
But introduction of motoring did make intellectual demands. If you wanted to get the benefit of your car you needed to upgrade your map reading skills far above the pedestrian. Previously you could load stuff onto your cart without worrying about wind resistance. Steam cars and battery cars didn't have gears. Once the industry opted for the internal combustion engine every drvier needed to grasp the basics of gear ratios. If you are pushing a broken down car on level ground, it soon builds up plenty of momentum. Those with no grasp of Newtonian mechanics end up crushed against walls.
What are the corresponding intellectual demands of the computer era? Obviously programming in C, calling malloc and free, opening sockets, etc, is not for the general public. On the other hand, programming concepts are reaching the general public in spread sheets, style sheets, search engine strings, database queries.
The basic point of a computer is that it automates stuff. It is a pocket calculator and typewriter, plus automation. It is not that programming is merely what is under the hood making it go. Programming it, to repeat the calculation on different data, or to send slightly different letters to different customers, based on information in the data base, is the point of the tool.
If you assume that it is +40 C at the equator and say -50 C at the pole, thats one degree centigrade per degree of latitude. Now a degree of latitude is over 100Km. So if it all averages out over a long time and you have an icesheet on level ground then the edge of the ice moves 1km for every hundredth of a degree change in long term average temperature.
Any claim about a glacier depends on local circumstances making it less hyper-sensitive that icesheets in general.
Classic example, floating point arithmetic is complicated because it is inexact, so = doesn't work like you hope. Every so often some-one has the bright idea of building a tolerance into =, so that it works like it should and programming becomes simpler.
So you still have to be aware of rounding error and build a bigger tolerance into your code when appropriate, but now you also have to cope with a non-transitive = so sometimes a=b, b=c, yet c != a. Over-simplifying made it more complicated.
Second example, SOAP, the Simple Object Access Protocol, uses the same port as http. This make things simpler for the system administrator. He doesn't need to open an extra port in his firewall to let SOAP through. How does he block SOAP without blocking http? Ah well, simplifying things has made them awfully complicated.
Mega-example: You have two distinct concepts in assembler, skipping optional code, and choosing between alternatives
TEST
COND JUMP skip
OP1 optional code
OP2
skip: OP3 mandatory code
etcetera
TEST
COND JUMP alternative
OP1
OP2
JUMP rejoin
alternative OP3
OP4
rejoin OP5
etcetera
We could have had language keywords opt(ional) and alt(ernative) which would look like this
opt(boolean)statement;
alt(boolean)statement1;statement2;
but to make things simpler, languages just have one word keyword, if, instead of two, opt and alt.
So they look like this
if(boolean)statement;
if(boolean)statement1;else statement2;
Except of course they don't. There is now a dangling else problem, so we all resort to defensive programming and write
if(boolean){
statement;
}
or
if(boolean){
statement1;
} else {
statement2;
}
Computing would be a lot simpler if we were more understanding and accepting of complexity. Then we could concentrate on spotting and reducing the complexity we can do something about, rather than adding to the complexity with misguided over-simplifications.
I shouldn't have made light of the serverity of this issue. Having a University education swept out from under you is a big deal.
But here's the problem. Imagine that the p53 gene stuff leads to a successful recombinant DNA therapy for half of cancers. They get cured like curing infections with antibiotics. So half the nations oncologists are out of work.
If you don't like that example, consider tort law reform. Outlawing champerty is possible, we haven't had it in the UK since medieval times. Outlawing it in the US would put half the lawyers out of work
Stuff like this really happens. What became of all the vets who cared for the horses and other draught animals? A profession massacred by the mechanisation of transport. Look at jazz and big band music in the 50's. Along come the 60's and rock and roll. The whole second tier of jazz and swing musicians had their livelihoods wiped out in under a decade. That was a change of taste, a quite separate issue from the impact of recording on live music or films on theatre.
Closer to home, check out a WWII bomb aimer. There was a whole industry of mechanical controls, controlling everything from washing machines to automated machine tools with elaborate mechanical mechanisms. The micro-processor took the food off a lot of mechanical engineers plates. Go back to university and spend four years learning electrical engineering. Closer still, try getting a job designing analogue electronics. Sure analogue is fundamental. There will always be some jobs there, but it must have really sucked to live through the transition to digitise, signal process,DAC.
Which brings me to my subject line, the nature of education. Ones elders have seen it all before and know that University is for growing intellectually and developing transferable skills. Suppose the Andy Groves of this world succeeded and something was done. Suppose that laws protected skilled people from having their jobs whipped out from under them. Then the nature of university education would change. Instead of acquiring transferable skills, one would go to be trained in job specific skills. As narrow as possible, the better to secure your job-for-life.
To an extent that has already happened. You go to university to train to be an accountant and make a living exploiting loop holes in GAAP. If the basis of US accounting were changed from following the rules, to the British model of "true and fair", if the thick rule book on lease accounting were replace by the single sentence "all uncancelable obligations must be capitalised", years of obscenely expensive full time university classes would go up in smoke.
Investing in narrow technical education is a business venture. You may lose your investment.
So Americans wants $2billion worth of IT services. Well, the world doesn't owe America a living. If Americans want $2billion worth of IT services they are going to have to work for it. Either they can do it themselves, or they can do other work, making jet planes, medicines, semiconductors, cars, etc, to the earn the $2billion and buy the IT services from abroad. There is $2billion work of work to be done in America either way.
Ah, but what if outsourcing saves money? What if Americans do $2billion worth of other work, but get to buy their IT services for $1billion? Well, they get to keep the other $1billion, all those jet planes, medicines, etc stay in the USA. Getting stuff cheap makes you better off!
Bastiat explained all this very nicely 150 years ago, but human ignorance is invincible.
Children who have been born into the caste of software developer are forbidden by religious law from taking other employment, so have only a life time of destitution to look forward to. I guess out sourcing sucks for them.
I'm learning Xlib at the moment. I've learned to write my code to respond to expose events by redrawing the window.
However, the server automatically draws the exposed area with the background pixel value or pixmap. Pixmaps are drawables. So, presumably I can draw on the background pixmap, thus shifting the entire refresh burden to the server.
I understand what stopped programmers doing this in 1990, the server would run out of memory to store the pixmaps; but what stops me doing it this way in 2003, when RAM is $200 per Gigabyte?
It is wrong to say that "Patentability of hardware is a well accepted principal." There are fundamental problems with patents on hardware. The European Pariliament should be fixing them first before considering software.
Without patents, inventions are public goods. A businessman puts up money for research, but without patents the invention belongs to everyone, so the businessman cannot get a return on his investment. He doesn't repeat his mistake - result: lack of money for research.
Pay attention, this is where it gets difficult. The number of owners is a number. How big does that number have to be before the businessman finds that he cannot get a return on investment?
I reckon no more than a dozen. If a product is covered by more than a dozen different companies' patent portfolios, it is a write-off. The holders of the junk patents will leach the return from those who made the investment to come up with the key inventions.
So the patent system, even for hardware, only rewards business for successful research if the threshold for inventiveness is so high that few, preferably only one, patents cover each sellable product. Much work is needed to reform the current system for hardware.
Software comes in packages and suites. Even a single program is created by a linker, linking many object files. It is unrealistic to imagine a patent system that will reward businessmen for investing in research in computer software.
Notice that the patents system does force companies to have research departments, so that they can build up defensive patent portfolios. But the vision behind the patent system is that it rewards success. The license fees go to the company that finds a filament for an electric ligth bulb, or a way to transmit sound by electricity. That is the central point. Rather than having government funded research that consumes lots of money but never comes up with anything much, you privatise research, via the patents system, and those who don't come up with anything important lose their investment. But the way the system works today is based on quantity not quality. Companies build defense patent portfolios on the basis that they can use them to tie rivals up in court. The patent system in practise is a frictional cost, not an incentive system. Why throw grit into the wheels of the software industry?
This is such a key point. EBooks are expensive gadgets. They have to do something that paper books don't. Reflowing the text, for different screens sizes and font sizes isn't a killer app, but leave it out and you've just thrown away a major feature.
PDF is such a nineteenth century format. I find it infuriating.