Sunday, July 31, 2005
Finally, a good software patent :-)
Technorati tags: ads, software patents
Saturday, July 30, 2005
Rationalist Theology Redux
The problems with this approach are twofold. First, it still requires that there have been a supernatural revelation in order for God's will to become known within the universe. However, it does not require continuing supernatural activity that may be contradicted by empiricism. Secondly, it is a cop-out, and, is theologically akin to deism.
And, now, along with DW, and at the suggestion of Dovid, we turn towards the mystical approach of the Tanya. A first-impressions post is coming soon.
Technorati tags: God, rationalism, theology
Blogging and “freedom of expression”
A blog, though, is just that — a web log. Usually, a blog involves presenting one person's or a small group's views. Some blogs allow comments, some don't. Within the rules of the terms of service of the blog host, though, bloggers are pretty much free to say whatever they want. In that sense, a blog is its author's. Commenters and temporary bloggers are guests in the owner's house. Is the owner doesn't like the mud on the carpet, he can tell the guests to take off their shoes or leave the house. There is, by no means, a dearth of blogspace for people to write their own contradictory opinions, cross-linked, and tracked-back ad-infinitum. In that way, (unless they present themselves as balanced journalism) blogs do not have the same journalistic responsibilities of neutrality as television news or broadcast media. If there is any analogy to the established media, blogs more resemble an unfiltered op-ed or letters page. Blogs also do not have the same power to ban an idea as a repressive government or a repressive religious institution.
What this means is that readers have the rights to comment and complain.... and blog authors have the rights to ban each other as they please. Free expression is in no way hindered. If readers don't like a given blogger's policy, they may simply choose to write on their own, ignore a blog, remove it from their links lists, unsubscribe theie RSS/Atom reader, etc.
Technorati tags: Blogs
Friday, July 29, 2005
This came from the previous tenants in our apartment, who used the room we now use as a walk-in-closet as a shrine to (what we think is) Budda. When they left the apartment (two years ago), they left this hanging on top of the doorway on the inside of the closet. We have no idea what it says or means. For that matter, we don't even know what language it's in. Do you?
Technorati tags: whatzit
Thursday, July 28, 2005
Keeping track of blogs?
Your memory? Is there some great killer-app that I'm missing out on?
Technorati tags: blogs, comments, software
Technorati tags: EFF, laser printer, spyware
Tuesday, July 26, 2005
Internet Explorer issues...resolved?
Thanks to whoever put together this page of Internet Explorer rendering bugs and workarounds.
Technorati tags: CSS, Internet Explorer, rendering
Computer Interfaces III
In the first part, we learned that people tend to work on the terms of machines, with the simple example of the telephone.
In the second part, we learned that computers blindly process numbers (and only numbers!) without understanding anything about their meaning or context. The corrolary is that if there are only two entities in a room, you and a computer, there is only one intelligent being there, and it better not be the computer.
Last time, I showed that a direct interface to all the machine's capabilities would be impractical. But, something's got to tell the machine what to do! Before we can discuss end-user interfaces, then, we'll have to digress into what the computer looks like to a programmer, (hopefully) in a simplified enough sense that an end-user (read: normal person) won't run away before he finishes reading this sentence. Briefly, this is the story of how the computer went from being a machine that could only be used by specialists to one that could be used by everyone.
The machine itself understands some numbers as operations, some numbers as — well — numbers, and some numbers as references to places it can find other numbers (for example, memory!), etc. So, the second-lowest level interface would be a set of word mnemonics that a human might understand that directly correspond to the numbers that are machine-readable. We call that assembly language. In assembly language, there is a one-to-one correspondence between a "mnemonic" and an operation. So, instead of:
1 45 62
I can say:
add var, 62
(note: I don't think this is an actual correspondence on any processor, it's a just a simplified example).
Now, let's say that someone develops a way for the computer to convert the "assembly language" mnemonics — which are gobbledygook to the computer — into the machine language that the computer will actually be able to process (incidentally, that type of program is called an assembler). Now, nobody will ever have to instruct a computer in machine language again. Hooray! The machine's interface has been simplified one step.
Notice that the mnemonics for the operations are now somewhat understandable, but, there's no intuitive way to connect any set of operations to the kind of result one expects out of a modern computer. Even the simplest of "operations" in human terms (say, asking the user to choose two numbers, adding them together and printing the result to the screen) may be hundreds or thousands of lines of assembly language code, meaning hundreds or thousands of machine instructions are executed in order to accomplish the task. Further, programming in assembly language requires very detailed knowledge of the computer internals. And that applies to trivial tasks, like writing one letter on screen. The assembly programmer/user needs to know exactly how the processor talks to the screen and what the screen (another very stupid machine) understands.
Before we can make computer programming a more general task, we'll need two more additions: high-level libraries and high-level languages. Most historical or semi-historical accounts would put high-level languages first, but, for my purposes, I think it's better to start with the idea of libraries. Let's say, for example, that I know how to write a character to the screen and you don't. So, I write a procedure that will write a character to the screen. Once that's done, I pass it to you and tell you how to use it. From then on, you no longer have to worry about the details of writing characters to the screen. You may then extend that concept, and write a procedure to write a whole string of characters to the screen. Similarly, let's say I don't know the details of how the hard disk hardware works, but you do. You can write me a procedure that will do it for me, and I won't have to worry about the hardware details. You can think of it as handing over a job to a specialist. It would be as if DW tells me to fix the air conditioner, retile the bathroom, and reside the house. I may not know how to do any of these things, but, I can call someone who does. Either way, from DW's perspective, the work was done. In the analogy, DW is the programmer who wants to write something complicated. I am functioning as a high-level library, and each contractor is functioning as low-level library that runs sets of machine instructions. DW and I still don't know how to retile the bathroom, but we got it done anyway by passing on the work to someone who does. That's how programmers work. They take basic libraries that are provided for them, and write other libraries that make use of those, and so on. At each step, we gain the ability to do something we couldn't do directly before, and we also lose sight of the details of how it's done.
So far, we've assumed that everything is written in assembly or machine language. But, let's say I could write a program (in machine or assembly language) that would translate even more-human-readable text into machine language. A construct like:
int a = b + c;
declares an integer variable that will hold some data named 'a' as the sum of other named variables 'b' and 'c'. Notice that there is no longer a one-to-one correspondence between the machine language and the high-level language. The machine language may not even have a concept of declaring a variable to be an integer. But, every machine has a different machine language. If I can write a compiler that will translate the high-level language into a particular machine language, though, I can even use the same high-level code on different incompatible machines! This portability comes with the caveat that I myself not use any operations in my program that aren't supported by all machines. That way, as long as I have a compiler that knows how to translate the code, it will work anywhere.
Until this point, the programmer had to know the details of how every component in the computer worked before he could control it. Now, with high level languages and high level libraries, the inner-workings are abstracted and generalized. Details are hidden, but new tools are available for the bigger picture of what the programmer wants the machine to do.
The high-level language is not a human language. Any high-level language construct must be entirely deterministic with no ambiguity. A dumb computer still doesn't understand anything about the context of the strings of numbers that represent the high-level language. And, in order to run it, it must end up in machine language.
I want you to step back for a moment from the details and notice what has been done. At each step, the programmer-computer interface has been abstracted. The nitty-gritty details of how the functionality is achieved have been lost, and entirely new (and useful) constructs have been generated. In the end, all of them get translated into the only language the computer understands -- machine language. Implicitly, by choosing a high level language and high level libraries, the programmer has traded off the detailed control of every operation that computer performs for the ability to spend time not dealing with those low-level details. Next time, I will actually discuss a user interface (really!).
Technorati tags: computers, interfaces
Monday, July 25, 2005
Public Service Notice
Thanks shanna for pointing this out, as I would have never noticed otherwise.
Sunday, July 24, 2005
:-) = Patent infringement?
A method, comprising: selecting pixels to be used as an emoticon; assigning a character sequence to the pixels; and transmitting the character sequence to a destination to allow for reconstruction of the pixels at the destination.
Translated into English that means use of graphical representations of smileys in an instant messenger program. This one adds even more emphasis to what's wrong with the US patent system. It also underscores the danger of some “patent reform proposals” that change the rules for who is entitled to a patent from “first-to-invent” to “first-to-file”. Despite the proposals' best intentions, there will likely be a rush on the patent office with patents on trivial things that will become even harder to challenge (would prior art still matter at all?). While it's good that the procedure for challenging patents may be streamlined, the fact that the filer didn't invent it should be enough to knock down their exclusive use rights. Let alone that this patent covers an obvious extension of being able to send text and images over instant messengers.
Technorati tags: emoticons, Microsoft, smileys, software patents
SPAM! SPAM! SPAM!
Spent time looking on the Internet for ssl accelerator? Seen those sites that use hype to sell their products? You can't miss hype, with its exclamation points, bold and capital letter, with the enthusiasm through the roof. But is all the hype really appropriate and will it really help you with your search for ssl accelerator ?
If you visit a lot of sites on the net regarding ssl accelerator, you'll begin to notice that the majority of them are exactly the same. Yes, they are selling different brands of ssl accelerator, but on top they are about as different as margarine and butter.
It was obviously intended to spam Google searches (and, maybe to comment-spam blogs). But, the quoted meta-spam was particularly entertaining.
Technorati tags: spam
Thursday, July 21, 2005
Dvorak spends about a paragraph wondering why some bloggers/artists differentiate between commercial and noncommercial use. He says:
This means that others have certain rights to reuse the material under a variety of provisos, mostly as long as the reuse is not for commercial purposes. Why not commercial purposes? What difference does it make, if everyone is free and easy about this? In other words, a noncommercial site could distribute a million copies of something and that's okay, but a small commercial site cannot deliver two copies if it's for commercial purposes. What is this telling me?
It's telling you that you can use, distribute and/or modify someone else's work, as long as you don't intend to make money off it. If a third party wanted to use it for profit, they'd have to negotiate permissions with the copyright holder. The agreement might include a share in the profits that party would make off the author's work. If someone just wants a copy, or to improve on the work, no further negotiations required. Seemed simple and fair to me. "Mostly" — don't know where he got that from. Incidentally, it's something I don't do (I don't see anyone selling my blog anytime soon, either), but I can understand it.
The no derivative works (NoDerivs) tag is something he doesn't discuss at all. Again, I don't use it, but I see why it's there. An author may want wide distribution, but may think that derivatives would corrupt his/her work. This is, I think, especially relevant for opinion pieces.
He also makes a big deal about CC:public domain. Looks to me like a lot of words about nothing. Yes, it's true that you don't need CC to assign a work to the public domain. A simple notice will suffice. But, CC does add a recognizable logo and (optional) computer-readable RDF code that identifies a digital work as being in the public domain.
His grand finale really takes the cake though:
Years ago, to gain a copyright, you had to fill out a form and send in the material to the Library of Congress. Now you just use the word "copyright," add your name and a date, and publish it. What could be easier? Apparently simplicity was more than some people could handle, so they invented Creative Commons to add some artificial paperwork and complexity to the mechanism. And it seems to actually weaken the copyrights you have coming to you without Creative Commons.
Firstly, he misstates how one currently obtains a copyright (the real answer: write something down). Secondly, he confuses the “simplicity” for the author with simplicity for obtaining rights to a work. Let's say Dvorak were to run away to a cave tomorrow. How would I obtain rights to redistribute his column? (As if I'd want to). It would remain locked in copyright for nearly two generations.
I'm in full agreement with Dvorak that today's copyright durations are too long, and the terms are overly restrictive. But, until those laws change, choosing Creative Commons is part of the solution.
Technorati tags: copyright, Creative Commons, legal
Wednesday, July 20, 2005
The economics of Microsoft
And, this, despite the existence of alternatives! May I ask who's to blame for the vicious cycle?
Tuesday, July 19, 2005
One simple response would be agnosticism. But, I don't think it's spiritually satisfying. Another is faith based in fundamentalism. To say I am commanded to believe in God, and therefore I do. I can then happily join those who ban all questions of the matter, and on all ideas that may contradict my own preconceptions. But, that is certainly not intellectually satisfying. Must one turn off his brain to believe in a religion so based on study and learning?
As DW observed, one potential answer is that God exists wherever science can't probe (“the god of the gaps phenomenon”). Over time, God will shrink to insignificance.
The turn towards Eastern religions and pantheism is another response. Mis-nagid put it best:
The New Age religions are a response to the god of the gaps phenomenon and the kicking of humans and earth off the self-centered pedestal. The sun is just another sun among trillions? The whole universe is god. Humans are just another animal? All animals are godly or full of "life-force."
As far as I understand it (not very well), a mystical approach separates Godly activity into a separate Divine space which is influenced by what happens in the earthly space. (Yes, I know that Dovid suggested that DW read Tanya, and I'm not rejecting the possibility that maybe mysticism has a better answer than rationalism).
In the end, though, if the concept of God is to have any meaning, He must be able to have some influence over the physical world. At one point, I (and, I assume others) posited that if God exists beyond space and time, He could know all possible outcomes of both seemingly random events and active decisions. Note that this position solves the predestination-free will problem. By knowing all possible futures, God knows the future, and free will is not challenged at all. But, that still leaves the question of how God influences events in the physical world. At the time, I answered that maybe a God who knows all possible futures could make small manipulations that sum up to the result He wanted. I no longer like my answer. It poses a testable (but very difficult to test!) hypothesis, and, may this degenerate into the “god of the gaps” position. According to our understandings of physics, even quantum events that are not deterministic should obey certain probability relations. If God manipulated the probabilities, then the understood physics would be contradicted by experiment.
I've also neglected to mention another possibility: that God does not influence events in the physical world, but that humans should serve Him in order to earn a place in a World To Come. This position begs the question of why we bother making requests that God influence the physical universe in the first place.
I'm sure that there's nothing new in this post; it is the foundation of everyone's basic continuous(?) theological crisis, right? Anyone?
Monday, July 18, 2005
About this blog
In case you're curious (and you didn't already know), I've signed blog comments as "DH" or "elf's DH" since my Dear Wife (DW) starting blogging and referring to me as "DH" (for "Dear Husband") in her posts. The terms come from trashy womens' magazines. And, no, I'm not claiming to be the "Documentary Hypothesis." The origin of the name "The Apikorsus Companion" is quite obvious.
If you're reading this, it is very likely that you know who I am in the real-world. I ask you to please refrain from posting any real-world identifying information beyond what I have previously said about myself. Comments that contain real-life identifying information may be edited or deleted.
Everyone is welcome to comment in, and/or link to this blog. Unless you specify otherwise, I'll feel free to mutually add you to my friends list.
Sunday, July 17, 2005
to your friends list at the bottom of the LiveJournal syndication page. Sorry, I don't have a paid/permanent account, so I can't make a new site feed via LJ.
Oh, for those of you who are scared of hot pink, the color scheme will be changing as soon as I get to it.