Posts tagged ‘philosophy’


One of my long-delayed thoughts is that appearances had no small part in my actions when I was being pressured for money.

Essentially, each person has to choose what names he will put up with being called. Given the choice between foolish and hard-hearted, I couldn’t stand the thought of head-hearted, even at steadly diminishing odds.

At times, I thought it strange that I, a person who never gambles, should be making such increasingly unlikely ‘bets’. What I’ve realized, as I write, is that the money was incidental – the real bet was trust, and from that view my reaction was quite chracteristically conservative. The only way to ‘lose’ was to refuse a genuine request for help, and that was never a risk if I never refused. Remaining unimpeachable carried more weight that what might appear to be common sense.

People are Impure

Which is a very bad title. This is something of an essay about viewing people through the lenses of programming langauge concepts; I make no comment on any other interpretation ;^)

There is a programming langauge paradigm called ‘functional’. Some functional langauges include ML, Haskell, and sometimes Lisp/Scheme. Functional languages often define themselves in terms of the lambda calculus, which is a mathematical system based around The Allmighty Lambada; the abstraction of the process of punching a hole in an expression so you can plug different values in (i.e. apply or call the function)

One thing you can do with functional programs is talk about whether they are ‘pure’, which is to say, stateless. ‘State’, if it isn’t clear, is principlly evident in variable assignments; the closest pure functional programs come to assgnment is matching function parameters with actual arguments. Most programs/langauges are not pure; writing recursive fibinocci functions is cute and all, but most real world programs find it very difficutly to get by without state.

Not that people don’t try – academics will talk your ear off about all the nasty problems of state. Not that they are wrong, just that there aren’t a lot of terribly attractive alternatives most of the time. The poster child for pure functional languages is Haskell; I’ll have to write about the hoops they jump through to do things like I/O and call it pure, but I’m on enough of a tangent just now. Haskell is also ‘lazy’ (technically, ‘normal order’), meaning that a value is only computed if it is actually needed, which like everything else can be either really good (you may never need to calculate it) or really bad (un-evaluated computations fill up your memory) depending on the program and data structure.

Anyway, pure functions can in principal be memoized (I know I’m spelling that wrong), better known as cached. If f(5) = 27, f(5) always equals 27, and you don’t need to do the computation again. Yes, this is much the same thing as GET under REST. But if you can’t guarantee that ‘f’ is a pure function, successive calls might return 28, 0, NaN, or ‘frog’ (if your language isn’t statically typed)

And people, you see, are most definately not pure. Having once asked a question or otherwise ascertained some other property, there is no guarantee that any later test will return the same value. Human interactions are, propertly speaking, completely uncacheable, and yet our entire society is built around the expection that certain values (big ones being marriage, employement, friendship, not shooting me in the head, etc.) will at least remain stable for sufficiently long periods of time for the larger structures to persevere.

Not only are people statefull, but human systems have a hard 100% uptime requirement for the life of the system – whereas one can often run a program repeatedly to try and isolate faults, there is no rewinding a person or even a conversation to try and figure out where it went wrong and make it right. Sure, most people are tolerant of interactive debugging and overwritting erroneous state, but there is a complete log – I think the greater risk involved has something to do with my reluctance to speak.

I talked some of this over with schwartzboy, who offered this anecdote:

stupid logging. Just for the record in case you ever need to know this? Wedding rings come with embedded SpouseLogger 7.5 and a microscopic RAID setup that has terabytes of free space.

Love the One You’re With

No, not quite the usual context. Perhaps ‘Love the place you’re at’ would be more appropriate.

There is certainly no denying that I am something of a homebody. After college I pretty much put down roots and stuck where I landed. And of course there are those small dissatisfactions with any situation. A fact, which would not, of course, change had I gone someplace else.

Still, when gazing at the greener grass, there a few basic options: move on, stay put and muddle along, or try to make the place the you are at more like the place you want to be. The first option always felt like abandoning the place to it’s doom, so I’ve usually muddled along while thinking I should be improving things.

One of the prices of working at a small company is that I don’t really have a mentor; the other people I work with are either younger and not single-class programmers, or have experience that lies less in the theoretical direction I tend to take. For the most part, we just muddle along doing only what needs to be done.

So, I’m attempting to make it better. Somewhere, I’ve read tha sucessfull companies spend about 10% of something (net? gross? not sure) on R&D. Now, we have no budget, but we have our time, and can take an hour or two a week trying to learn something new.

The current project, and in no small part the inspiration, are the freely-available video lecture series for The Structure and Interpretation of Computer Programs, related to the book of the same name (also available online)

I gather that this is based on the introductory computer science course at MIT many years ago. Supposedly the course was taught at HP at point, pehaps it was there? In any case, yes, it is based on Lisp. Given Lisp almost legendary status, I don’t know if this is really bad, just not as likely to be directly usefull. At lot of the concepts are showing up in lanaguages, so a lot can actually transfer.

Anyway. The course starts from first principles, and then procedures to cover almost every major concept in computer science – iterative, recursive, functional, objects, delcarative, state, streams, compilation, and more. Eah concept is introduced from a motivating example – here is why we have this construct – it solves this problem.

Hopefully repetition will do me some good – I watched the videos, read the book, and now I’m watching them again (and taking notes) about one hour a week.

One persistant theme is ‘metalinguistic abstraction’, or embedding other languages in Lisp. Today this is popularized as DSLs or Domain Specific Languages. The repetition may have infected me, because I’ve been thinking about languages a fair bit lately. But that is a whole ‘nother post, and the is at least one more to set that up.

The Doctrine of Unoriginal Sin

This is something that has plagued me for quite a while. Almost everything I encounter is the work of someone else. There is nothing new in it. Whatever I may accomplish is only the result of a voracious appetite for input, and a steady reliance on Google. There is nothing new under the sun, and the ancients have stolen all the good ideas.

And anyway, who wants to compete with the not-quite-infinite monkeys trying desperately to stuff the internet pipe? ;^)

Well, I may not be the first or the last to encounter something, but by golly I did encounter it. I don’t know if I actually have anything to say, but perhaps I should leave others to make that judgment. If I actually manage to follow through on this, I’m afraid this journal will be a little noisier than you may be accustomed to. Most of it will probably about software, which will only interest some of you. Watch for tags like ‘life’ (is it possible to filter yet?) if technology doesn’t interest you.

“[T]he woods would be silent if no bird sang except the best.” – Henry Van Dyke

A Perfectly Rational Dog

One of many interesting things in the Structure and Interpretation of Computer Programs, amidst much other technical insight, is this reference to a ‘a perfectly rational dog.’ “The fundamental phenomenon here was originally observed by the fourteenth-century French philosopher Jean Buridan in his commentary on Aristotle’s De caelo. Buridan argued that a perfectly rational dog placed between two equally attractive sources of food will starve to death, because it is incapable of deciding which to go to first.” -SICP

Actually, later research shows this to be species swap of Buridan’s Ass, where the ass was a parody of Buriden’s writing on the De Caelo, where the example was a man torn between hunger and thirst. At least, if you believe Wikipedia.

Somehow I like the dog variation better however; perhaps Ableman ans Sussman (authors of SICP) did as well. It may simple be that dogs are more common than donkeys in the modern world.

However, I have so far managed to not mention why I’m mentioning this. You see, I am like a perfectly rational dog. Not that food is a specific problem, but I had already begun to suspect that somehow I enjoy the agony of indecision, for why else would I do it so much? At least Buriden seems to be with me here. His position (for which he drew the ass analogy) was that it was perfectly legitimate to withhold judgment until the situation becomes clearer.


Summary: a while ago I read The Glass Bead Game. I use it for some reflections on my life. We might hit some minor spoilers along the way.

The book The Glass Bead Game has something of a cult following, mostly for the idea of the glass bead game contained within it. I found about it through these means in boad game circles, though some people take very seriously.

There are several additional short stories attached to the book; they are placed in the context of the novel as works written by the main character. But notes attached to the edition I read give the real story: the work started out as a collection of short stories of which The Glass Bead Game was but one. However, it took on a life of it’s own and eventually absorbed the rest.

In the process of so growing, it may have taken on many themes. I’ve forgotten many of the details, but when I looked at the the collection as a whole, I saw one theme tying them together: service. Knecht means servant in german (the books original language) and is the name of the main character; a fact directly referred to in conversation within the text.

The book is set in the fictional future society of Castalia, a sort of ivory tower devoted to intellectual pursuits. Within this society, people are appointed to posts of office. One of the stated principles of this society goes something like this: “From time to time you may be called upon to performa an office. Understand that this is not a granting of power but a restriction of freedom.”

That is pretty much how I feel lately. I’m president of the condo association, relatively senior student at the martial arts school, de-facto leader of the software department at work (by virtual of seniority and lack of initiative on the whole) participant in a game design group that might not make quota without me, lover of books, harp player, and cooker of most of my meals. In short, a little bit torn.

I’ve come to understand the buddist idea that desire is the root of unhappiness. I want to support all the people and groups I interact with. I also want to dive into the internet, read a book a day, and develop a unified programming system. It’s getting to the point where it seems like I should drop something. In the past I’ve left, MUDs, role playing, and video games for all practical purposes. The problem is there isn’t really much left that can be passed off as pure entertainment; I’m either supporting an institution of some sort, or contributing to my own growth and health.

Except, of course, that stress and worry aren’t very healthy, by most accounts.

Ideas are Cages

Ideas are like cages, with which we try in vain to pin down the world. Too often we catch ourselves instead.

No Oath of Office

I’ve had a tendency to distrust technology, which is probably one of the things contributing to my ‘past orientation’ post some time back. Amidst all the wonders, there is also a continual reminder of technology’s pitfalls. Violence, greed, and social and environmental degradation sometimes seem like hallmarks of our age.

I was thinking about my concept of power and responsibility, and I realized that technology is simply power. But it has no oath of office. There are no intrinsic responsibilities required for it’s use. In same cases (such as some chemicals and many weapons) laws will attempt restrict irresponsible use, but for the post, the power is free for the taking.

If I (ha!) had time, I thought I could write book. I would be set in fantasy world where magic and technology coexist. The plot would center around tracking down a rouge mage who had broken his oaths. Meanwhile, there would be repeated, casual, interactions with people using technology in worse ways then the mage’s abuses of magic.

A game could also be effective. Probably something in the genre of Final Fantasy, where advancing in magic requires the swearing of oaths that have real in game impacts, while technology is free to anyone who can pay money for it. An interesting idea I just had – use speech recognition to actually have the player swear the oath. If he comes close to breaking it, the reminder is to play back the recording, in his own voice.

Power and Responsibility

Power shall be used for any enhanced capability directed by a person. It includes powers direct, indirect, and material. Direct powers would be talents, skills, and knowledge. Indirect would be ability to command the services of others, be it through respect, persuasion, or threats. Material sources include raw materials, tools, and capital (money).

Responsibility shall be used for some action or function that person is expected to execute. It may be a personal responsibility (eating well, avoiding danger) More often responsibility is used for a function that is a common good for at least a small group of other people.

A police officer has the responsibility to maintain the peace. He has the powers to arrest or harass (fine, etc) those that disturb the peace, as well as training to handle expected situations.

A government has the responsibility to protect it’s citizens safety and provide for the common good. It has the powers to make and enforce laws, maintain armies, and usually tax.

A CEO has the responsibility to keep a corporation functioning and profitable. He has wide powers to command and direct the resources of the corporation towards these ends.

The key concept in all these examples is that power is given to enable to execution of responsibilities. This the right relation. To give power with the hope that it will be use responsibly puts great faith in the character of the recipient. Responsibility without power is helplessness. Power without responsibility is tyranny.

The Void

A while ago I had a small epiphany about the void as a fundamental creative force. I was thinking about my long term employed status versus some of the entrepreneurial enterprises I am involved in.

The place where I work would probably have to called a small to medium sized business; not huge but not ‘mom and pop’ either, probably about 80 employees in two locations. The business literally started in the owners garage. After a few jobs that didn’t work out and a few joint ventures that fell apart, the owner figured ‘Well, I can’t do any worse than these other guys’ and set out on his own.

Because that business has survived since, I’ve had a steady paycheck and a short commute for several years. My boss had a void to fill, I haven’t.

My martial arts instructor has a similar story. The martial arts school he started out in ended up closing amidst scandal – the certificates even turned out to be fake. He went to extraordinary measures to complete his black belt, and then floated around for a while, eventually coming to a series of teaching positions that got organized under the name his own school. If his original school had been stayed open, I might be training there instead, and the Academy of Hosinsul would never exist.

In the marital arts themselves, the void shows up. If you want to put someone on the ground, you often need to make a place for him to fall. A hole in one’s defenses could be described as a void as well.

Years ago, I did a lot of things to fill the void – programming and game design mainly. Now, my life is rather full, and these interests compete with myriad other pursuits.