Home
Blog is a Four-Letter Word [entries|archive|friends|userinfo]
Joshua

[ userinfo | livejournal userinfo ]
[ archive | journal archive ]

Bishop Allen [Feb. 6th, 2006|11:05 pm]
[mood |asleep]

A new EP every month until Clementines. http://bishopallen.com/ . Buy things from them and make them rich.
link4 comments|post comment

Identity [Jan. 5th, 2006|12:37 am]
When is a thing not itself? Is my deck still mine if it is replaced one board at once; is my body mine if the cells change guard?

The proper solution is to identify a thing with both a state and rules governing its evolution. This is bound to be somewhat arbitrary, and one thing may have many rules and break one but not another ("you're not the man you used to be" -- but still a man). The rules may themselves point to ill-defined constructs, but that's not the argument's fault.

The deck is no longer mine if my rules preclude changing planks (though electrons change at will, and must); my body is still mine because the exchange of cells is part of my rules (besides, if it stops I'm likely dead!)

How do I identify a cell? It functions the same as before, transformed by rules (particularly Newton's). How do I identify an electron? Good question.
linkpost comment

Practical! [Jan. 3rd, 2006|09:43 pm]
[music |Mirah]

This is a dvorak keyboard. It may look the same to you, but I can't type past twenty-some words-per-minute. A good thing to learn: just above braille and just below Latin and Lisp.

(Kjg; g; a h.soav vdtnsaohe Gk mat pssv kjd ;amd ks tsfeee)
linkpost comment

Three thoughts [Dec. 12th, 2005|10:11 am]
[music |Eels]

1) You live one life and, in sum, experience one thing. Choose it well.

2) In iniquity truth cannot defend itself and the upright are cast down. Only iniquity is worth fighting by force of arms.

3) Searle's argument supposes that brain causes mind and, by contradiction, proves that it doesn't.
linkpost comment

Chinese Room [Dec. 9th, 2005|07:55 am]
[mood |jussive]
[music |Sambassadeur]

The Chinese Room (wikipedia) is, I think, my least favorite argument in the world. Which isn't fair, on my part. I can't be sure that Mr. Searle really conflates the several meanings of consciousness the way that ph|1050ph32z who reuse his argument do.

In one sense, anything might be conscious; this is the sense in which we are surprised that we really see the things we see, and frankly, this is surprising: but we have no necessary way to tell whether anything has this. Even, frankly, ourselves: because if we didn't have it, we'd still say we did. We'd still believe we did. Maybe in some way I know for sure, or maybe I just might as well believe it, because it matters more than anything else.

In the other sense, anything that is as aware of itself as of the external world, and can respond to both, is conscious. We certainly are. Computers certainly will be. Will computers be conscious the other way, too? As likely as we are.

Still unconvinced? Try this: what if the man in the room had a list of the laws of physics instead, no input, no output, and just computed the universe? (peculiarly, the differences between this case and reality might account for consciousness.)
linkpost comment

Economics and economists [Dec. 4th, 2005|01:43 pm]
Economic theory is right. It's built on the basis of game theory. It's right. But economists are wrong.

The problem is subtle: game theory allows for completely arbitrary assignment of utility (worth) to outcomes.

For now, think about ants. A single ant has no concept of a hive. It sees a piece of dirt and thinks, "I want to pick that up." It sees a pile of dirt and thinks, "I want to put this there." It smells a smell and thinks, "I want to walk that way" or "I want to bite!" Ants are entirely selfish but follow rules that build colonies.

1) As long as each economic actor defines utility only for events smaller than the building of a hive, and even without assuming any coherence between the desires of different actors, hives will be built. "I want that sweater!" "I want to work here." In this way, we build a society, but not quite a hive.

2) Those nowhere societies, like ideal socialism, are less like ants. Ideally: each actor assigns utility to the condition of building a hive and judges actions accordingly. Every actor has the same hive it wants to build. The result is more like ant hives than our capitalist system, but the method is entirely different. The queen does not control the workers: but Bureaus do. Of course, real Bureaus don't control workers: they just kill them.

3) Now, each economic actor can have a vision as big as the scale of a hive and yet have a vision incoherent with other actors. This approach can explain behaviors that economists can't easily explain. Because most people fall in the ant-hill scenario (1), economic descriptions usually work. But the exceptions tell us more.

And here is the problem with economists. There is an assumption that every assignment of utility is on a strictly personal level; that no person can assign utility to someone else's happiness or to the attainment of some 'ideal' situation, regardless of pain and pleasure. Utility=pleasure, they assume. They are wrong.

Economists explain soldiery and voting in terms of social pressure. "Why vote?" Why indeed! If I operate under (1), I vote only if it directly affects me; which it doesn't, probably, unless I want to be seen voting, or maybe want the druggish high of being civil. If I operate under (3), I vote because it's a small step towards a larger ideal I hold, regardless of my specific impact.

In this vein, casual economists are worse. "The market will fix it" they say of everything -- and the market will. But they take the "market" as stock exchange. Really the market's methods include every possible event: genocide, starvation, epidemic, and on. These all decrease demand and prices settle down. They are not good solutions.

This suggests that some of the market's more mundane solutions may be bad, too. "Free market" means everyone else does what they want and you can't stop them. Why can't you? You just can't. Hmm. Suspiciously like (2).
linkpost comment

Call a spade the Queen of Hearts [Nov. 22nd, 2005|07:46 pm]
[mood |optative]
[music |Mirah]

I protest every linguistic movement I know from the Victorians on. Caroll had them all too neatly nailed with his Humpty Dumpty: "'When I use a word ... it means just what I choose it to mean -- neither more nor less.'"

So I will use words always rooted as deep as I can know them, in writing as far back as I can read. I will choose every word in accordance with a metaphor that starts at the root and ends at the stem. I will learn, however long it takes, to treat words fairly.

I say: Do not uproot words. Whose meaning do you give them? To which master shall they bow? Let words serve no second master.
link1 comment|post comment

Reusing structure [Nov. 18th, 2005|10:56 am]
[mood |subjunctive]

Structure reuse, not code reuse, is key.

Edsger Dijkstra wrote in How do we tell truths that might hurt?: "In the good old days physicists repeated each other's experiments, just to be sure. Today they stick to FORTRAN, so that they can share each other's programs, bugs included."

The structure of the program is the experiment setup. You can verify quickly that it should work, and then you can go about writing your own code to implement it.

A program built on well-defined structure can be optimized automatically. It can be stored with its parts compiled and in source, to be recompiled when necessary. It can be stored with bytecode for different machines, source code in different languages or multiple versions, and networking can be inserted in the middle of its parts. Any attribute that can be measured on each part and then combined can be measured in whole: security, trust, useability, accuracy, memory use. Finding the answer to the program is just a special case of running a structure.

A Google Sawzall program has two parts: one that takes a single record and processes it, and one that takes the results of all the processing and combines them. This is well-defined structure. A Sawzall program can run on one machine, but because it has a well-defined place to insert networking, it can be parallelized.

Functional programs have tree structure: you can evaluate the leaves in any order; LISP is largely functional. Closures provide structure quite like objects. But more than those, LISP has this: a LISP program is structure. Because every symbol is free, every symbol can be redefined. They can be redefined to imply an analysis of the symbols; for security, for data, for anything. It's very hard to do, but this accounts for the obsession of the LISP-fanatics and lies behind good LISP style. It lies behind the perceived superiority of LISP to other languages ("All languages tend towards LISP" quoth they).

Computer programs, by their very being, are about the reuse of structure. A program, in Turing's or Post's definitions, has one well-defined output. A computer program takes input which is used to create a single, well-defined, Turing-style computer to produce an answer. Input becomes a problem when it can change a program in a way it's not meant to (embedding SQL commands in HTTP requests, bytecode in buffer overflows, etc.). This is a telltale sign of structure. There are specific cells in these Turing tapes to which symbols can be written and produce well-defined outputs. Then there are cells that are not meant to be written to.

In other words: there is a simple, Turing-style program the job of which is to insert data into other programs, so that its target programs don't look like Turing-style programs anymore. This program is called 'input'. Its purpose is structure. Its redefinition changes structure.

Find a general description of this, implement it as a program, and the perfect OS is written.
linkpost comment

Legislation well worth reading [Nov. 10th, 2005|09:21 am]
[mood |Imperative]
[music |Bach]

http://www3.state.id.us/oasis/HCR029.html gives the full text of the Idaho House Concurrent Resolution 29.

WHEREAS, any members of the House of Representatives or the Senate of the Legislature of the State of Idaho who choose to vote "Nay" on this concurrent resolution are "FREAKIN' IDIOTS!" and run the risk of having the "Worst Day of Their Lives!"

Seriously. It's real. It passed. Read it.
link3 comments|post comment

Thinking of Tag OOP [Nov. 3rd, 2005|12:23 pm]
[mood |indicative]
[music |Chicago]

My hastily and badly written entry on "Post Tag Systems and OOP" has proved immensely useful in my analysis of computer systems.

First: security settings are bizarre. A program is a Tag machine with queues at each end. Calling a system function is writing a symbol to the output queue. Running a program with output only to a text queue, or a bitmap, or sound output, or a window system should be quite possible; it should be possible to select, program by program, or even instance by instance, exactly what a given object should have access to. The familiar feature-by-feature duality of "Admin" and "Non-admin" is painfully useless.

Second: all major operating systems suffer from premature optimization. They shave off nanoseconds and sacrifice minutes. If they would take the time to follow a natural and coherent order in running objects, instead of their messy approach to processes, they could benefit from a variety of reflective optimizations. They're getting better at this now, but they're doing it the hard way.

Third: user input is always programming. The programs are simple, but they are programs, and interpreting them that way is advantageous. Among other things, interfaces could be made independent of the programs they control; you could always close a window, even if it can't close the program quite yet; you could always click cancel, even if the process doesn't know how to stop. You could feed limited views of filesystems and databases to programs. You could save partially completed settings or have macro support system wide. You could take badly formed output from an experimental program through a simple filter for prototyping, improving development times dramatically

Fourth: computing institutions are climbing towards a local maximum that's globally quite low. There's a lot of good computer science out there, but the big players are ignoring it. Their image of object orientation is as badly structured as procedural languages ever were. Better can be done.
linkpost comment

Post Tag systems and OOP [Nov. 1st, 2005|10:17 am]
[mood |conditional]
[music |Irish]

Abstract: Tag systems are described. Tag systems are more useful for analyzing modular programs than Turing tapes are. Tag systems with multiple queues can describe OOP objects. With these systems we can look at the faults in the use of modern OOP.

Emil Post introduced a notation for computation as general as Turing's well before Turing did. Post's system is simpler, but Turing's lends itself to certain proofs (noncomputability is easy to prove on a Turing machine; it's just a diagnolization argument). Post named his system Tag because the head and tail of a queue play tag. A series of symbols is written and a head reads the first symbol, changes its state, and writes to the end of the queue. When the head reads a stop symbol ("end of program") the computation is over and everything left on the queue is the output.

Talking about general Turing machines and Tag systems muddies things up. It's much easier to think of a program as being written in the head of the machine. The state of the machine can be thought of as the current line number in a BASIC program, or as the return stack in a language like c or Forth, or as the entire tree of frames in a language with continuations. The point is, the program doesn't have to be written on the tape; the fact that it can be is beautiful and lovely theoretically, but once you have von Neumann computers (as we have), and you already represent data and code the same way, you can forget about it. In other words: I can write a BASIC program to interpret Python, but who cares?

So OOP is all about setting up a bunch of little Turing tapes and writing data from one's output on another one. But that is really a pretty confusing way of thinking about it and it's hard to do much with it.

It's much easier to think of them as a bunch of little tag systems, where one object gets its input from another's output (as soon as the stop code is written the tag system starts writing output). In fact, because the entire class code is in the machine's head, it can start writing output immediately. So if you're writing output right away, why not just split into two separate heads? One queue in, one queue out.

But then you can split up your queues in and out by what the queues are for. Suddenly you have a full object oriented system with different interfaces stuck on each side of an object, but approaching it this way it is obvious what the ilk of c++ and java do wrong.

Passing objects, or references to objects, may sound innocuous, but quite simply it's not ok. Your language has to have a way to pass data, sure, and data can be described by "objects", but doing that cheapens the solution and waters it down. You really want to think that you are passing around data meaningful to objects. Your data has no meaning outside of what those objects do with it, but the data itself is not an object. [data is an object, of course, in a different system. it's just not useful to call it that. you will have to treat your objects as data at some point, and at other times it might be useful to treat your data as objects, but this is not that time. it is not the time to write a Python interpreter in BASIC.]

Essentially, I'm arguing that successful OOP needs to distinguish more clearly between objects and the data they use; current OOP is really rather fuzzy about that boundary.
linkpost comment

Gameability [Oct. 29th, 2005|01:11 pm]
Gameability happens when a social player is asked to make a decision as to what he wants and that decision is not necessarily the best for achieving its stated goal. If voting for B will make A win, any supporter of A should vote for B. In fact, frankly, the ballot is clearly mislabelled. Mislabelling is one problem with any gameable system.

For a system not to be gameable it must first define a full range of possible actions on the part of each participant. Then, allowing each participant to want to achieve any particular aim (for the system should not pretend to limit what can be wanted), the system needs to be solved (as by game or economic theory) to find equilibria. A ballot should request precisely enough information to determine a player's strategy and the place in the final system. A voting system with its full set of rules should have only one point of equilbrium; this is the hardest point.

Dealing with matters of collusion (as by parties) and the changing of conditions (as by running clone candidates) should be included, if possible. It is an open question of which systems can avoid being gamed. My rating system (as proposed earlier) is ungameable to the limits of user registration.
linkpost comment

Input mapping [Oct. 16th, 2005|10:34 pm]
[mood |late]

I want an input mapping language. This idea has played at my mind for a while, but it's closer now than before to existing. My weird continuous language of months ago was an early attempt. Here are some thoughts.

It must not be Turing complete because every program must halt. It should be possible to graph the language: that is, it should be easy to describe the mapping in terms of the input mechanisms (what happens when I click this?) and in terms of the output mechanisms (how do I close this?). The extent to which this limits the language is evident, but it's very well worth it for the properties that are guaranteed.

Think of it as filling a finite set of cells on one tape with an admixture of cells from another tape.
linkpost comment

Voting and ratings [Oct. 11th, 2005|01:36 pm]
[music |Röyksopp]

I've been thinking about rating systems. Some sites have simple up/down systems where you can vote a link up one point or down one point; and if you think it's high enough already, you can leave it. Many websites use averages of votes on a scale; the problem here is that when you have enough people voting, it's always in your favor to vote 1 or 10, to move it as much in your direction as possible.

Simplify things by using the interval [0, 1]. An up/down system can be normalized by the number of enfranchised users; start at .5 and move it up or down by .5/n for each vote. An averaging system gets votes on [0, 1] and, again, normalizes each vote by dividing by n. It's obvious that even though the averaging system seems to represent more, it actually does less than the simple up/down system; rating at 0 or 1 is the same as up/down. In other words: a vote in the middle counts less than a vote at the edges. Not acceptable.

Help me think about this )

Any thoughts?
link1 comment|post comment

(no subject) [Oct. 4th, 2005|05:09 pm]
Made a maté cola; I can't carbonate my own water and I didn't want to commit my efforts to a syrup, so I chose maté for steeping in club soda. Flavored with cassia oil, lemon oil, vanilla extract, almond extract, nutmeg, caraway, ginger; sweetened. Pleasant, not at all chalky (no caramel, no acid). Brief time expenditure. Worthwhile.
link2 comments|post comment

Animaris Rhinoceros [Sep. 26th, 2005|07:24 pm]
[music |Of Montreal]

This has been around for a while; if you haven't seen it, see it. http://www.strandbeest.com/animaris%20rhinoceros%20transport_en.html . There's a movie.
linkpost comment

(no subject) [Sep. 18th, 2005|08:49 am]
[mood |Intentional]

To make a language better than c++ is not hard. c++ conveniently skirts most usefulness, has a lot of notational overhead, and is rather difficult to write smart compilers for. Most of the work it saves the programmer is the easy human work; the hard work, better left to a computer, it dumps on him.

c++ rant )
link1 comment|post comment

(no subject) [Sep. 15th, 2005|08:23 pm]
The new version of MS Office will have "graphical command tabs" that try to anticipate what a user wants. This is, they say, instead of menus and toolbars. It will be a truer type of Hell than Gehenna.
linkpost comment

Intellectual Authority [Sep. 8th, 2005|11:43 am]
I don't believe in intellectual property. The analogy is nonsense. Still, anyone with a slightly practical mind can see that authors and makers of works need some manner of authority over it. But that's precisely it: they need authority, not ownership. Ownership is one form of authority, and rather an extreme one.

Essay )

The point isn't that people shouldn't get to control their work; it's that we must not pretend it's property. There are a lot of vagaries and open questions if you leave that fiction behind -- daunting questions. But they need to be asked and they need to be answered. Some of them can be answered constitutionally, some of them reasonably, some of them only by practice: but they absolutely must be answered.
linkpost comment

News channels [Aug. 30th, 2005|12:25 pm]
[mood |anti-trust]
[music |Strokes]

Revoke their broadcasting licenses. All of them. Now.

They're incompetent. They're inaccurate. It's not just a pro-US bias as we thought with earlier disasters. They play unattributed video footage with background music, use images of suffering in video montages and for background movement, discuss irrelevent and obvious issues ad nauseum, fail to show actual developing news (the breaking dikes? the mayoral press releases?), fail to find actual information ("We don't know how many helicopters they have out there...", "We don't know whether they're getting water to the Superdome..."), and fail to respect human dignity or human sensibility.

With a monopoly you can at least get angry and apply governmental pressure. What can you do when they pretend they're independent?
linkpost comment

navigation
[ viewing | most recent entries ]
[ go | earlier ]

Advertisement