(and design changes and implementation changes) is not well enough understood as a factor that makes code development expensive and in some cases infeasible.
Relative Kolmogorov Complexity is, roughly speaking, a quantitative measure of the informational (descriptional) difference between a bitstring (e.g. program) A and another bitstring (e.g. program) B.
What we really need to understand is the complexity of the difference in the expected input to output patterns of a program, after someone specifies or makes a certain change to the program.
Often, a requirements change that sounds to a layperson as very simple actually results in a very large informaitonal complexity of the difference in the program and intermediate data structures needed to achieve the change, compared to the previous program and data structures.
Usually, programmers have some inkling of this complexity of change, and managers/executives/customers do not.
For a software program to be well-architected and well designed means, among other things, that it is explicitly designed (via appropriate patterns and abstractions) to make many hypothetical future changes to the behaviour of the program be achievable with low Relative Kolmogorov Complexity of the software change. The program's form must also be constantly minded by a software architect so that it retains this low-complexity adaptability property.
The opposite of this is known technically as a "hairball" codebase, and unfortunately is what the overwhelming majority of programs turn into in very short order after a small number of changes from the original conception (initial requirements understanding) are implemented.
Formally, a hairball codebase has almost no changes in its external behaviour (appearance or logic of the output or process) that can be made without an infeasibly high relative Kolmogorov Complexity. The "hairball" program structure is encrusted with special-case "warts" that lead to geometrically multiplying complexity of the program's logic, and consequent multiplying complexity of changes to the program.
Oh I suppose it is important to mention that the relative Kolmogorov Complexity of a software change will be highly correlated with the cost and likely bug introduction rate of that change.
Until this (admittedly very) theoretical notion is understood by the authority figures (PHBs, managers, executives, and customers) who make the executive decisions controlling the conduct of software projects, disaster will almost always loom.
The PHBs and customers need to ACTUALLY LISTEN to the software architects who say we should spend some time and money up front crafting a maintainable, adaptable program, and we should spend some time and money throughout the lifetime of the program to keep it that way. The architects, grokking as they do at least the essence of the "RKC of change" problem, are actually wisely trying to SAVE money (and maximize the chances of project success, in the medium and long term) but are usually incorrectly perceived as being geeks with "no sense of business" if they are foolish enough to bring these issues up in meetings with PHBs.
As Ray Ozzie says, "complexity kills", and the "relative Kolmogorov complexity of software change" theory (aka "hairball entanglement theory") should tell us exactly when, why, and how much.
In a world where there is so much software to choose from and so many different applications to use from time to time, a user should not be required to become an expert in any piece of software in order to get good use of it. Most software should have the universal appeal of chocolate rather than the appeal to the connoisseur of fine caviar.
Specific Principles:
1. The Default Shall Be Good.
2. There Shall Be Only One Place (or Name, or Form) For Each Thing.
(applies to data standards as well as code and user interfaces.)
4. Everything needed shall be automatically and unambiguously found
on the Internet.
If you don't want your material hyperlinked to, might I humbly suggest that you not put your material on the worldwide web (web: (n) - a network of interlinked strands) and perhaps not render your material in HYPERTEXT markup language (HTML) and perhaps not make it available with a HYPERTEXT TRANSPORT protocol (HTTP) server.
Seriously, though: Putting your material on the web implies consent to have it linked to by any other site or web browsing tool. This judge is ignorant of the nature and intent of the web, or is just a general dufus.
Ok it's late in the game and I'm getting sucked into this blatant troll, but anyways...
I hate Microsoft because it has become immensely rich and powerful by selling mediocre to poorly designed product to masses of people who don't know any better. And that makes me mad because it illuminates something sad about the human condition.
I hate Microsoft because they popularized the piece-of-shyte computer architecture that was the early x86 computer. This architecture was a nightmare of incompetent, inelegant hardware design. The ONLY thing it had going for it was that the plans were somehow made public so they could be copied by offshore pirates to give us all dirt cheap computers. That was the first real case of open source, I suppose. But still... Segmented memory architecture, non-orthogonal instruction set... supplemented by bizarre hacks to make programs fit into memory. Gads...
Oh and wasn't it cool how Microsoft assumed that everyone would surely only want to run one program from one vendor on their computer. If you had more, they'd stomp on each other's shared libraries. Perhaps if we had, say, an OPERATING SYSTEM, it could sort things like that out for us, hmmm?
And of course only one hardware device too, because if you wanted more, chances are they'd stomp on each others' interrupts with the OS blithely ignorant of this and the subsequent lock-ups.
Oh and how about the cool way they asphyxiated Java on the client by distorting it and refusing to adhere to standards, and refusing to make it easy to get a java program running on your computer.
Software is a field where there are few constraints on making incredibly elegant solutions that will constrain complexity and lead to easy to understand and easy to improve software, and yet, and yet... Microsoft has held the field back to banal, wart-ridden, C++ implemented ugliness for generations now.
But hate is too strong a word. Queasiness is more like it. And a tendency to RUN FOR YOUR LIVES whenever you have an opportunity to use anything other than it for any serious computer work.
As the Internet evolves, more and more of everyday data storage for a variety of needs from storing family albums to medical histories to corporate databases will be done in (highly encrypted and massively distributed) data clouds, including P2P-hosted data clouds. And more and more computing will be done in on-the-fly compute farms in grids, and some of this computing will no doubt be hosted on legions of small P2P edge-of-net computing resources.
With such a scenario, how is it a good thing to allow ISPs to peer inside this cloud of encrypted and fragmented and dynamically coalescing data to somehow exercise traffic cop (or border patrol) authority over it.
That sounds to me like the worst possible idea.
This idea is effectively the same as saying the ISPs should be staring over my shoulder as I surf or work over the net and vetoing which websites or webapps I look at or use. No way. The net must be neutral to what it's carrying, or it just won't work. And the P2P-based net of the future must have the same properties of neutrality to traffic that the current general internet does (or should have.)
There are mathematical ways of using strong encryption (digital signatures and all-or-nothing encodings and the like) to prove that all the votes got included in the count, and for an individual, if they have an encrypted receipt code, to submit that code to a process that can verify that that vote, as entered, was included in the final result.
So then we have the complaint: "But I wouldn't understand how that worked so I wouldn't trust it."
What if all the code - including the encryption code and - the all-or-nothing proving code - and of course the code that proves which version of the vote gathering and counting software
was running throughout the election were open source and inspectable by anyone?
What if you were given access to an online forum where only people with masters degrees or phds in math, logic, computer engineering, or computer science could supply the answers to general or specific questions posed by each other and by any voter about the integrity of the system?
I think the combination of open source code and clever use of encryption for verification, should be able to make systems that are trustable by rational people.
I suppose now the problem is to convince all of the irrational people. Now that's a problem.
Because similar technical processes go on in e-commerce, e-banking, e-government services etc.
I guess we just care more about election results.
Are they really saying there is, theoretically, no mathematically and logically sound cryptographic solution for ensuring the validity of this kind of process, or just that we don't know how to do that yet?
You are right. Having reliable soldiers delivering
truckloads of ballotboxes from reliable regions to our safe
central counting center (and reliably burning
truckloads of ballotboxes from those other regions...)
A wise zen monk went into a fast-food joint and said "Make me one with everything."
An even wiser zen monk didn't go into a fast-food joint, and said "Make me one OF everything."
One standard version of core Java things like the language definition, bytecode definition, and the annointed standard libraries is absolutely ESSENTIAL to Java's continued success.
Because "one of everything" means that a java app and library code-sharing culture and a shared and reusable expertise can flourish. Fragmentation of the core standards will lead to disintegration of the core value proposition of Java.
I hope that this issue can be dealt with as Java is opened.
Perhaps by trademark protection means? Break (fork) the standard if you want, but if you do you can't call it Java.
Or perhaps just by a consensus-agreed committee approval structure like the java community process.
Can you imagine if everyone were free to fork the XML standard and still call it XML. Sheer pointless chaos.
Java forked in its core standards and libraries is the same.
Basic tenets: Simplicity and uniform, predictable extensibility at the core levels of something
are essential to manageability of complex systems built on top of that core.
Java has held to this better than any other computing platform to date.
OOPS! EXCEPT LISP OF COURSE - MY BAD
Open sourcing java might be ok, but we should realize that a significant part of its predominance and popularity in fact comes from its rigidity and lack of variation between implementations, platforms etc.
Basic tenets: Simplicity and uniform, predictable extensibility at the core levels of something are essential to manageability of complex systems built on top of that core.
Java has held to this better than any other computing platform to date. And it is a very important part of its success. Once you know Java, and its core libraries, you're set, and you're skills are portable to all kinds of uses of Java, and you don't have to keep re-learning or debugging variants of the basic core.
So it is essential that compliance tests (and a BDFL) are allowed to put a stamp on what is to be called "Java" going forward. Variants can be called "java-like" or java-lite" or something but the simplicity and control of variation is THE ESSENTIAL CHARACTERISTIC of the Java brand, in programming.
Cyc has an ontology of general conceptual terms, and represents the precise logical way in which those concepts interrelate. In other words, it emulates an aspect of the pure rational part of human reasoning about the world.
But it's known that humans are not dispassionate rational agents. And indeed that there probably is no such thing as a dispassionate rational agent. Commander Data and Spock are very ill-conceived ideas of robot-like reasoners. Passion (emotion, affect) is the prioritizer of reasoning that allows it to respond effectively (sometimes in real time) to the relevant aspects of situations. Without the guidance of emotion, no common-sense reasoning engine would be powerful enough, no matter how parallel it was, to process all of the ramifications of situations and come up with relevant and useful and communicable and actionable conclusions.
So how do we give CYC passion? Or at least a simulation of it? Well the key would seem to lie in measuring the level of human concern with each concept, and with each type of situational relationship between pairs (and n-tuples) of concepts.
How could we do that? How about doing a latent semantic analysis from google search results. Something similar to Google Trends, but which measures specifically the correlation strengths of pairs of concepts (in human discourse, which Google indexes). The relative number of occurrences (and co-occurrences) of concept terms in the web corpus should provide a concept weighting and a concept-relationship weighting.
If we then map that weighting on top of the CYC semantic network, we should have a nicely "concern"-weighted common-sense knowledge base, which should be similar in some sense to a human's memory that supports human-like comprehension of situations.
Combining a derivative of google search results with CYC is my suggestion for beginning to make an AI that can talk to us in our terms, and understand our global stream of drivel.
Google is based on a network of x-number (say 500,000) of low-grade server pcs. They layer on a highly redundant, fault tolerant, hot-computer-swappable, massively distributed file system.
This is a much smarter solution for reliability than centralization. Further decentralization (even across corporate boundaries) would lead to even less risk of information loss.
Consider that one single corporation, even with massive decentralization, is still vulnerable to a single legal attack by a single misguided corporation or government.
A distributed, encrypted, cache-migrating filesystem layer on top of millions of anonymous peer computers would be even more secure and reliable.
The fact that 1 expensive Sun computer can be replaced by 2 or 3 (or 10 or 20) commodity pcs networked together is what is causing the death of Sun. And make no mistake; unless Sun reinvents its business model to FULLY recognize the power of commodity-computing and decentralization, it WILL complete its long death spiral, or live out a weak, pathetic old age selling replacement Sun "mainframes" to technically locked-in fortune 500 customers.
Note: You can re-introduce a layer that creates virtual "centralization" and "registration" on top of a fully decentralized, encrypted, and migrating filesystem layer, if you need to. Google already does this. So the argument made in the article is specious.
Presumeably, this whole collection is actually interesting and informative data about peoples' patterns of interest. Yes, the privacy violation of including any personally identifying searches is terrible, but that's water under the bridge now.
Here's a question. Are we, collectively, afraid of finding out what human beings are really like? What our statistical behaviour actually suggests, as opposed to what sanitized morality-focused religious "education" would have us believe about peoples' nature?
The "shocked and appalled" tone of the responses certainly suggests that we are afraid of finding out the truth about ourselves. Some of the negative reaction is, justifiably, about the dumb release of identifying information, but what of the rest of the negative reaction? Surely it would be fascinating to do some statistical socio-psychological research on this data, and other data like it, and find out answers to questions like "what are people interested in, in general, and relatively how much are they interested in various topics, and various connections between topics. This would tell us a lot about the behaviour of the human animal."
Well if you're ever up in Canada, you can come and use Slashdot at my space. (And I promise not to have a hidden video camera staring over your shoulder.)
I used a cirque (cat?) touchpad with some success when I had right-hand tendonitis from mouse-use.
Other factors that help: 1. Use the touchpad with the opposite hand 2. Make sure it is down almost as low as you can reach (on a side table, not on the desk.) 3. Clean the finger-grease off it regularly. A greasy one requires strong repeated movements to move the pointer so contributes to the RSI. 4. Get a Microsoft ergonomic (split and raised in middle) keyboard. (I don't work (nor will ever work) for MS.) 5. Mix up your work so you can take it easy on the computer use for several months. i.e. Don't write a big program, a large work of fiction or other documentation project. Do some design work or management for a while.
A combined solution is required. This worked well for me.
Neutrality toward packets is a fundamental and essential feature of the architecture of the Internet. Only temporary exceptions, such as defensive measures against denial-of-service attacks, can really be contemplated.
It depends what we think the contract of the middle of the net is. And for it to remain scalable, the middle must remain ignorant of the semantics of the content of the packets. Anything else just becomes unworkably complex and a barrier to application level evolution. Anything else will have complex and unpredictable dynamics. Think L.A. at rush hour.
A non-neutral Internet is not the Internet. It's something else. We could call it digital TV perhaps. As such, if the U.S. gets too silly in its non-neutral internet architecture, then the rest of the Internet will just have to treat it like trouble and route around it.
How about a programming contest where you get 6 months, and the winner is the program judged most elegant, applicable, comprehensible, extensible, and all the other ibles. Oh, and has the cleverest recursive acronymic moniker of course.
This is an important issue. Our natural tendency is to form hierarchical societies, with a few thought-and-action leaders, and large flocks of mostly compliant followers. Television is a technology whose 1-n broadcast architecture is perfectly suited to being a top-down control communications medium for such a hierarchy. "Iraq bombed the towers". Need I say more on that?
A neutral, peer-to-peer internet has the potential to allow a human future where the power of hierarchies can be mitigated by free and open competition for our attention from competing compelling individuals and groups. Yes, if their rise was unchecked, these individuals and groups would themselves become rigid hierarchies over time, but the point is that an architecturally-flat, n-to-n, neutral internet provides a fair tournament field where "may the most effective, focussed, supported hierarchy (on a given jurisdictional or economic topic) win." The hierarchies that prevailed in such a game would be appropriate and responsive, and generally constrained to civilized behaviour. The governing or prevailing hierarchies would be the product of the "free will" of constituents possessing unbiased knowledge.
Allowing the internet to become a 1-to-n broadcast architecture like television, is like letting the currently prevailing hierarchy control and tilt the playing field. Control-directed communications and directed mass opinion formation are the PRIMARY TOOL for the perpetuation and expansion of hierarchical organizations. Allowing any small group of such organizations to control the medium of communication grants them permanence and corrupting levels of power.
I use my 12" iBook on the bus on the way to work. It's only the size of an 8 1/2 x 11 piece of paper, and 4.6 pounds. Makes it feasible to do that, and barelyfeasible to drag it around with me all day in the city, googling and slashdotting wherever I go, on whatever wifi happens to be around.
The new, larger and heavier Macbooks, with a screen that doesn't seem like it would perform in high light conditions, is not an advance for me. The quiet and long battery life of my ibook, along with the portability, are the keys, and the performance is just fine, even for watching DVDs and other bittorrent wares.
My ideal mac at this point would be a small thin one with a 1024x768 screen but able to drive an external monitor at higher resolution. That would be my livingroom and bus and coffeeshop and bedroom and kitchen computer all in one.
Scientific systematic pragmatic environmentalists
on
Tilting At Windmills
·
· Score: 1
Observation 1: We really are badly messing up the ecosystems and climate of the planet, so dissing environmentalists; those who have noticed this and are justifiably concerned about it, is inappropriate.
Observation 2: Environmentalists need to be scientific in their assessment of what are the most serious problems, and what are the most likely effective solutions.
Observation 3: The biggest obstacle to solving anthropogenic environmental problems is a problem of scientific education, philosophical education, and values inculcation. The technical problems and solutions that would work are much easier than solving the knowledge and motivational gaps.
Observation 4: Environmentalists need to have bottom lines in that they have to insist on effective solutions and they need to call "greenwashing" when it occurs, as it usually does, but above all, they need to be pragmatic, and accept some trade-offs.
So environmentalists who oppose windmills really do need to get their heads examined. But this does not characterize the vast majority of more level-headed environmentally concerned people who would of course prioritize non-GHG-emitting and perpetual energy sources over a few viewscapes. Windmills look cool and elegant and almost biological, anyway.
Is Intellectual Property a Crime?
(and design changes and implementation changes) is not well enough understood as
a factor that makes code development expensive and in some cases infeasible.
Relative Kolmogorov Complexity is, roughly speaking, a quantitative measure of the
informational (descriptional) difference between a bitstring (e.g. program) A
and another bitstring (e.g. program) B.
What we really need to understand is the complexity of the difference in the expected
input to output patterns of a program, after someone specifies or makes a certain change
to the program.
Often, a requirements change that sounds to a layperson as very simple actually results
in a very large informaitonal complexity of the difference in the program and intermediate
data structures needed to achieve the change, compared to the previous program and data
structures.
Usually, programmers have some inkling of this complexity of change, and
managers/executives/customers do not.
For a software program to be well-architected and well designed means, among other
things, that it is explicitly designed (via appropriate patterns and abstractions)
to make many hypothetical future changes to the behaviour of the program be achievable
with low Relative Kolmogorov Complexity of the software change.
The program's form must also be constantly minded by a software architect so that it
retains this low-complexity adaptability property.
The opposite of this is known technically as a "hairball" codebase, and unfortunately
is what the overwhelming majority of programs turn into in very short order after
a small number of changes from the original conception (initial requirements understanding)
are implemented.
Formally, a hairball codebase has almost no changes in its external behaviour (appearance
or logic of the output or process) that can be made without an infeasibly high relative
Kolmogorov Complexity. The "hairball" program structure is encrusted with special-case "warts" that
lead to geometrically multiplying complexity of the program's logic, and consequent multiplying
complexity of changes to the program.
Oh I suppose it is important to mention that the relative Kolmogorov Complexity of a software
change will be highly correlated with the cost and likely bug introduction rate of that change.
Until this (admittedly very) theoretical notion is understood by the authority figures
(PHBs, managers, executives, and customers)
who make the executive decisions controlling the conduct of software projects, disaster will
almost always loom.
The PHBs and customers need to ACTUALLY LISTEN to the software architects who say we should
spend some time and money up front crafting a maintainable, adaptable program, and we should
spend some time and money throughout the lifetime of the program to keep it that way. The
architects, grokking as they do at least the essence of the "RKC of change" problem, are actually wisely
trying to SAVE money (and maximize the chances of project success, in the medium and long term)
but are usually incorrectly perceived as being geeks with "no sense of business" if they
are foolish enough to bring these issues up in meetings with PHBs.
As Ray Ozzie says, "complexity kills", and the "relative Kolmogorov complexity of software change"
theory (aka "hairball entanglement theory") should tell us exactly when, why, and how much.
Oops.
3. What do you think the missing principle should be?
In a world where there is so much software to choose from and so many different applications to use from time to time,
a user should not be required to become an expert in any piece of software in order to get good use of it. Most software
should have the universal appeal of chocolate rather than the appeal to the connoisseur of fine caviar.
Specific Principles:
1. The Default Shall Be Good.
2. There Shall Be Only One Place (or Name, or Form) For Each Thing.
(applies to data standards as well as code and user interfaces.)
4. Everything needed shall be automatically and unambiguously found
on the Internet.
5. Occam's Razor.
If you don't want your material hyperlinked to, might I humbly suggest that you not put your material
on the worldwide web (web: (n) - a network of interlinked strands) and perhaps not render your material
in HYPERTEXT markup language (HTML) and perhaps not make it available with a HYPERTEXT TRANSPORT protocol
(HTTP) server.
Seriously, though: Putting your material on the web implies consent to have it linked to by any other site or
web browsing tool. This judge is ignorant of the nature and intent of the web, or is just a general dufus.
Ok it's late in the game and I'm getting sucked into this blatant troll, but anyways...
I hate Microsoft because it has become immensely rich and powerful by selling mediocre to poorly
designed product to masses of people who don't know any better. And that makes me mad because
it illuminates something sad about the human condition.
I hate Microsoft because they popularized the piece-of-shyte computer architecture that was the
early x86 computer. This architecture was a nightmare of incompetent, inelegant hardware design.
The ONLY thing it had going for it was that the plans were somehow made public so they could
be copied by offshore pirates to give us all dirt cheap computers. That was the first real case of
open source, I suppose. But still... Segmented memory architecture, non-orthogonal instruction
set... supplemented by bizarre hacks to make programs fit into memory. Gads...
Oh and wasn't it cool how Microsoft assumed that everyone would surely only want to run
one program from one vendor on their computer. If you had more, they'd stomp on each
other's shared libraries. Perhaps if we had, say, an OPERATING SYSTEM, it could sort things
like that out for us, hmmm?
And of course only one hardware device too, because if you wanted more, chances are they'd
stomp on each others' interrupts with the OS blithely ignorant of this and the subsequent lock-ups.
Oh and how about the cool way they asphyxiated Java on the client by distorting it and
refusing to adhere to standards, and refusing to make it easy to get a java program running on
your computer.
Software is a field where there are few constraints on making incredibly elegant solutions that
will constrain complexity and lead to easy to understand and easy to improve software, and
yet, and yet...
Microsoft has held the field back to banal, wart-ridden, C++ implemented ugliness for generations
now.
But hate is too strong a word. Queasiness is more like it. And a tendency to RUN FOR YOUR LIVES
whenever you have an opportunity to use anything other than it for any serious computer
work.
As the Internet evolves, more and more of everyday data storage for a variety of needs from storing family albums
to medical histories to corporate databases will be done in (highly encrypted and massively distributed)
data clouds, including P2P-hosted data clouds.
And more and more computing will be done in on-the-fly compute farms in grids, and some of this computing will no
doubt be hosted on legions of small P2P edge-of-net computing resources.
With such a scenario, how is it a good thing to allow ISPs to peer inside this cloud of encrypted and fragmented
and dynamically coalescing data to somehow exercise traffic cop (or border patrol) authority over it.
That sounds to me like the worst possible idea.
This idea is effectively the same as saying the ISPs should be staring over my shoulder as I surf or work over the net and
vetoing which websites or webapps I look at or use. No way. The net must be neutral to what it's carrying, or it just
won't work. And the P2P-based net of the future must have the same properties of neutrality to traffic that the
current general internet does (or should have.)
There are mathematical ways of using strong encryption (digital signatures and all-or-nothing encodings and the like)
to prove that all the votes got included in the count, and for an individual, if they have an encrypted receipt code,
to submit that code to a process that can verify that that vote, as entered, was included in the final result.
So then we have the complaint: "But I wouldn't understand how that worked so I wouldn't trust it."
What if all the code
- including the encryption code and
- the all-or-nothing proving code
- and of course the code that proves which version of the vote gathering and counting software
was running throughout the election
were open source and inspectable by anyone?
What if you were given access to an online forum where only people with masters degrees or phds in math, logic,
computer engineering, or computer science could supply the answers to general or specific questions posed by
each other and by any voter about the integrity of the system?
I think the combination of open source code and clever use of encryption for verification, should be able to
make systems that are trustable by rational people.
I suppose now the problem is to convince all of the irrational people. Now that's a problem.
Because similar technical processes go on in e-commerce, e-banking, e-government services etc.
I guess we just care more about election results.
Are they really saying there is, theoretically,
no mathematically and logically sound cryptographic solution for ensuring
the validity of this kind of process, or just that we don't know how to do that yet?
You are right. Having reliable soldiers delivering truckloads of ballotboxes from reliable regions to our safe central counting center (and reliably burning truckloads of ballotboxes from those other regions...)
is SO much better. So much more... reliable.
When I was studying textbooks on how to do this in undergrad comp sci.
A wise zen monk went into a fast-food joint and said "Make me one with everything."
An even wiser zen monk didn't go into a fast-food joint, and said
"Make me one OF everything."
One standard version of core Java things like the language definition, bytecode definition,
and the annointed standard libraries is absolutely ESSENTIAL to Java's continued success.
Because "one of everything" means that a java app and library code-sharing culture and a
shared and reusable expertise can flourish. Fragmentation of the core standards will lead
to disintegration of the core value proposition of Java.
I hope that this issue can be dealt with as Java is opened.
Perhaps by trademark protection means? Break (fork) the standard if you want, but if you do
you can't call it Java.
Or perhaps just by a consensus-agreed committee approval structure like the java community
process.
Can you imagine if everyone were free to fork the XML standard and still call it XML.
Sheer pointless chaos.
Java forked in its core standards and libraries is the same.
Basic tenets: Simplicity and uniform, predictable extensibility at the core levels of something are essential to manageability of complex systems built on top of that core. Java has held to this better than any other computing platform to date. OOPS! EXCEPT LISP OF COURSE - MY BAD
Open sourcing java might be ok, but we should realize that a significant part of its predominance
and popularity in fact comes from its rigidity and lack of variation between implementations,
platforms etc.
Basic tenets: Simplicity and uniform, predictable extensibility at the core levels of something
are essential to manageability of complex systems built on top of that core.
Java has held to this better than any other computing platform to date. And it is a very
important part of its success. Once you know Java, and its core libraries, you're set, and
you're skills are portable to all kinds of uses of Java, and you don't have to keep re-learning
or debugging variants of the basic core.
So it is essential that compliance tests (and a BDFL) are allowed to put a stamp on what is
to be called "Java" going forward. Variants can be called "java-like" or java-lite" or something
but the simplicity and control of variation is THE ESSENTIAL CHARACTERISTIC of the Java
brand, in programming.
Cyc has an ontology of general conceptual terms, and represents the precise logical way in which
those concepts interrelate. In other words, it emulates an aspect of the pure rational part of
human reasoning about the world.
But it's known that humans are not dispassionate rational agents. And indeed that there probably
is no such thing as a dispassionate rational agent. Commander Data and Spock are very ill-conceived
ideas of robot-like reasoners. Passion (emotion, affect) is the prioritizer of reasoning that allows
it to respond effectively (sometimes in real time) to the relevant aspects
of situations. Without the guidance of emotion, no common-sense reasoning engine would be powerful
enough, no matter how parallel it was, to process all of the ramifications of situations and
come up with relevant and useful and communicable and actionable conclusions.
So how do we give CYC passion? Or at least a simulation of it?
Well the key would seem to lie in measuring the level of human concern with each concept, and with
each type of situational relationship between pairs (and n-tuples) of concepts.
How could we do that? How about doing a latent semantic analysis from google search results. Something
similar to Google Trends, but which measures specifically the correlation strengths of pairs of
concepts (in human discourse, which Google indexes). The relative number of occurrences (and co-occurrences)
of concept terms in the web corpus should provide a concept weighting and a concept-relationship weighting.
If we then map that weighting on top of the CYC semantic network, we should have a nicely "concern"-weighted
common-sense knowledge base, which should be similar in some sense to a human's memory that supports
human-like comprehension of situations.
Combining a derivative of google search results with CYC is my suggestion for beginning to make an AI that can talk to
us in our terms, and understand our global stream of drivel.
I wish I had time to work on this.
Google is based on a network of x-number (say 500,000) of low-grade server pcs.
They layer on a highly redundant, fault tolerant, hot-computer-swappable,
massively distributed file system.
This is a much smarter solution for reliability than centralization. Further
decentralization (even across corporate boundaries) would lead to even less risk of
information loss.
Consider that one single corporation, even with massive decentralization, is still
vulnerable to a single legal attack by a single misguided corporation or government.
A distributed, encrypted, cache-migrating filesystem layer on top of millions of
anonymous peer computers would be even more secure and reliable.
The fact that 1 expensive Sun computer can be replaced by 2 or 3 (or 10 or 20)
commodity pcs networked together is what is causing the death of Sun.
And make no mistake; unless Sun reinvents its business model to FULLY recognize the
power of commodity-computing and decentralization, it WILL complete its long death
spiral, or live out a weak, pathetic old age selling replacement Sun "mainframes" to
technically locked-in fortune 500 customers.
Note: You can re-introduce a layer that creates virtual "centralization" and "registration"
on top of a fully decentralized, encrypted, and migrating filesystem layer, if you need
to. Google already does this. So the argument made in the article is specious.
Let's step back a minute.
Presumeably, this whole collection is actually interesting and informative data
about peoples' patterns of interest. Yes, the privacy violation of including any personally identifying searches is terrible, but that's water under the bridge now.
Here's a question. Are we, collectively, afraid of finding out what human beings are really like? What our statistical behaviour actually suggests, as opposed to what sanitized morality-focused religious "education" would have us believe about peoples' nature?
The "shocked and appalled" tone of the responses certainly suggests that we are afraid of finding out the truth about ourselves. Some of the negative reaction is, justifiably, about the dumb release of identifying information,
but what of the rest of the negative reaction? Surely it would be fascinating to do some statistical socio-psychological research on this data, and other data like it, and find out answers to questions like "what are people interested in,
in general, and relatively how much are they interested in various topics, and various connections between topics. This would tell us a lot about the behaviour of the human animal."
Are we ready to know these answers?
Well if you're ever up in Canada, you can come and use Slashdot at my space.
(And I promise not to have a hidden video camera staring over your shoulder.)
I used a cirque (cat?) touchpad with some success when I had right-hand tendonitis from mouse-use.
Other factors that help:
1. Use the touchpad with the opposite hand
2. Make sure it is down almost as low as you can reach (on a side table, not on the desk.)
3. Clean the finger-grease off it regularly. A greasy one requires strong repeated movements
to move the pointer so contributes to the RSI.
4. Get a Microsoft ergonomic (split and raised in middle) keyboard. (I don't work (nor will ever work) for MS.)
5. Mix up your work so you can take it easy on the computer use for several months. i.e. Don't
write a big program, a large work of fiction or other documentation project. Do some design work or
management for a while.
A combined solution is required. This worked well for me.
Neutrality toward packets is a fundamental and essential feature of the architecture of the Internet.
Only temporary exceptions, such as defensive measures against denial-of-service attacks, can really
be contemplated.
It depends what we think the contract of the middle of the net is. And for it to remain scalable,
the middle must remain ignorant of the semantics of the content of the packets. Anything else just
becomes unworkably complex and a barrier to application level evolution. Anything else will have
complex and unpredictable dynamics. Think L.A. at rush hour.
A non-neutral Internet is not the Internet. It's something else. We could call it digital TV perhaps.
As such, if the U.S. gets too silly in its non-neutral internet architecture, then the rest of the Internet
will just have to treat it like trouble and route around it.
except to ADD gamers.
Quality not quantity is what counts.
How about a programming contest where you get 6 months, and the winner is the program
judged most elegant, applicable, comprehensible, extensible, and all the other ibles.
Oh, and has the cleverest recursive acronymic moniker of course.
This is an important issue. Our natural tendency is to form hierarchical societies, with a few thought-and-action leaders, and large flocks of mostly compliant followers. Television is a technology whose 1-n broadcast architecture is perfectly suited to being a top-down control communications medium for such a hierarchy. "Iraq bombed the towers".
Need I say more on that?
A neutral, peer-to-peer internet has the potential to allow a human future where the power of hierarchies can be mitigated by free and open competition for our attention from competing compelling individuals and groups. Yes, if their rise was unchecked, these individuals and groups would themselves become rigid hierarchies over time, but the point is that an architecturally-flat, n-to-n, neutral internet provides a fair tournament field where "may the most effective, focussed, supported hierarchy (on a given jurisdictional or economic topic) win." The hierarchies that prevailed in such a game would be appropriate and responsive, and generally constrained to civilized behaviour. The governing or prevailing hierarchies would be the product of the "free will" of constituents possessing unbiased knowledge.
Allowing the internet to become a 1-to-n broadcast architecture like television, is like letting the currently prevailing hierarchy control and tilt the playing field. Control-directed communications and directed mass opinion formation are the PRIMARY TOOL for the perpetuation and expansion of hierarchical organizations. Allowing any small group of such organizations to control the medium of communication grants them permanence and corrupting levels of power.
Crawl back into your hole.
I use my 12" iBook on the bus on the way to work. It's only the size of an 8 1/2 x 11 piece of paper, and 4.6 pounds. Makes it feasible to do that, and barelyfeasible to drag it around with me all day in the city, googling and slashdotting wherever I go, on whatever wifi happens to be around.
The new, larger and heavier Macbooks, with a screen that doesn't seem like it would perform in high light conditions, is not an advance for me. The quiet and long battery life of my ibook, along with the portability, are the keys, and the performance is just fine, even for watching DVDs and other bittorrent wares.
My ideal mac at this point would be a small thin one with a 1024x768 screen but able to drive an external monitor at higher resolution. That would be my livingroom and bus and coffeeshop and bedroom and kitchen computer all in one.
Observation 1: We really are badly messing up the ecosystems and climate of the planet, so dissing environmentalists; those who have noticed this and are justifiably concerned about it, is inappropriate.
Observation 2: Environmentalists need to be scientific in their assessment of what are the most serious problems, and what are the most likely effective solutions.
Observation 3: The biggest obstacle to solving anthropogenic environmental problems is a problem of scientific education, philosophical education, and values inculcation. The technical problems and solutions that would work are much easier than solving the knowledge and motivational gaps.
Observation 4: Environmentalists need to have bottom lines in that they have to insist on effective solutions and they need to call "greenwashing" when it occurs, as it usually does,
but above all, they need to be pragmatic, and accept some trade-offs.
So environmentalists who oppose windmills really do need to get their heads examined.
But this does not characterize the vast majority of more level-headed environmentally
concerned people who would of course prioritize non-GHG-emitting and perpetual energy
sources over a few viewscapes. Windmills look cool and elegant and almost biological,
anyway.