Archive for the ‘Essay’ Category.

Three Things (and a Boot to the Head)

A somewhat meandering essay on the limits of parallel pursuits, namely about three. Containing examples of how this applies, how it doesn’t apply why three may be quite wrong. Woven in with a long overdue account of recent events, which have some small bearing on the topic at hand, and why I’ve been preoccupied and silent for a rather long time

Idea put down 2008-02-22 and slightly expanded 2008-07-06; most writing from 2008-09-20 and 21.

I have a theory of sorts, that a person can really only do three things at a time with any degree of quality. (You might have seen an indirect reference earlier.) This was based on simple empirical observation. In college, programming got replaced with game playing. Afterwards, working and martial arts pushed out game playing and then game making. The harp didn’t long outlast getting more involved in the Condo association.

In spite of this, I was trying to do four again; five if you count general reading and education.

During the winter I had a pretty good run at CGD. However, despite the fact that I enjoy the programming, it seemed like I was always running a little behind on everything else. Now, the CGD project was a deliberate attempt to do more programming and less of everything else, so I can’t complain too much, but it does point to the limits of multiple pursuits.

Furthermore, that backlog made things almost, well, stressful. I’ve begun to theorize maybe it really is four things, but the fourth is leisure, which everybody needs a little bit of to stay sane.

The CGD project actually got put on hold for a while. Up until late August I was in the shadow of martial arts testing again. Since then I’ve been alternately recovering, catching up, or simply out of the habit of writing and several other things. I did attempt to learn from the last testing eclipse two years ago, by starting to work on a bit of new curriculum, the Kwon Bup – a set of 57 specific defense techniques derived from Kenpo. I successfully wrapped my head around it in a couple of months, using a few minutes each day, which did have benefits, in terms of being able to teach the material. When it was decided to make our 5th form a combination of the Kwon Bup (making for a huge form) my preparation also laid the foundation for putting the pieces together in a fit of inspiration into the optimal processes – a combination of cards to record the results and computer programming to calculate the future.

That brings us up to November 2007. This was about the time I started getting serious about programming. With the immediate task of the Kwon Bup out of the way, I mostly didn’t think about the martial arts stuff too much. Finally, earlier this year (you might notice that a lot of these essays were conceived around February, and are still getting written) I started looking at the latest version of test curriculum and realized that one of the changes was huge – 34 Kenpo techniques – and probably wouldn’t be covered in class. I did start working, on my own time, early. There was a bit of a lull at work at the time, and I did wrangle the particular beast that concerned me. However, the test was still ‘six months away’, so I continued with my original plan of making a great tour of all the material I knew.

Then my paid employment got busy, amidst the rest of the summer onslaught. By the time the next lull came along, the test was immanent and I hadn’t yet gotten to the specific material I was due to be tested on. One of my lessons from this experience is to do the essential stuff first. In any case the other ‘things’ started getting pushed out, and by the last month I was pretty solidly in 2-thing mode.

The test itself went fairly well, with only a few small slip ups; many of my weakest areas never showed up. The preparation was the real killer. I don’t plan on testing again for some time after this; it just takes too much time. The funny thing is I do kind of like to focus in on things, but there is no balance to take up the slack – there are classes almost every week now, and some weekends.

Despite enjoying focus, I must have some tendency towards being a jack-of-all-trades, because I picked up the harp again after the test was over. Music is something kind of foreign to me; I think one of the main attractions may be that I don’t like having a hole in my understanding. However, it puts me up to six things, without counting leisure.

I’m not a very good jack though – I usually find myself caught up short in conversation because the few topics on which I’m fluent in aren’t of general interest. I’ve considered that perhaps I ought to find a like minded social network, but of course that would make seven. It also runs against my homebody tendency; South Elgin doesn’t exactly evidence being a hotspot for programmer types, and something has always bothered me about traveling for companionship.

Am I contravening my own law-of-three? We’ll I’m cheating a little bit. Leisure is still a bit up in the air. I’ve gone to a 4-day work work, and I’m contemplating 3. Some things, like the condo association, come in short bursts, and others, like reading, are highly elastic; things like programming and harping are elastic in a pinch.

It’s interesting to draw a distinction between the things that are (or feel) hard, and those that are elastic. The hard ones I barely dare touch involve other people – employment and martial arts. Employment also touches on another sort of virtual thing, which, like leisure, is so pervasive that it hardly counts. Survival. Eating, sleeping, showering, finding shelter and food.

The elastic, or soft, ones only ‘matter’ to me. If I stop, I don’t die (unless we give an awful lot of weight to stress or depression) and the only reproach I fear is my own. Still, they matter, to me, and since I’m the one one making my decisions, I’m attempting to arrange my affairs so that I can pursue them.

There is a deep conflict here, or at least I feel one, between the things society values – the products of my labor which I’m paid for, and teaching at the martial arts school, which taught me and forms, unfortunately, my only real community, on one hand, and things only I value on the other hand.

Nothing’s that simple of course – the general reading has indirect feedback effects on my job for instance, but in it’s broadest sweep, you have the things I do of my own volition, and the things I do for money or peer pressure. This is a pretty deep topic, and I think it deserves it’s own essay – I suppose writing is another ‘thing’, which I’ll have to fit in somewhere.

More Time Shifting – A Quest for Longer Essays

2008-02-10 to 2008-03-11, esp 2008-02-24

When I introduced Naked Javascript, I talked a bit about my difficulties with Javascript in general – some nice things going on, but the implementation that got standardized is a little half baked. Then I thought of several things which I forgot to mention, and made a second post. later I thought of yet more things, but I didn’t make another post. I’ll tell you why in a minute.

While I might claim that my recent attempt to discuss the merits and faults of Javascript could be chalked up to sickness, meandering writings have been an unfortunate trend of late. One after another, a storm of ideas gets put off, and off, and off again. By the time I get down to writing about it, I’ve forgotten half of it and end with a little tiny post that peters out with an unexciting whimper.

We’ve got (at least) two problems here: 1. short, boring posts, which are 2. probably due in no small part to procrastination. I actually hadn’t thought about that second part before, but let’s push that on the stack for a moment. and talk about the content problem.

A while back, I saw someone writing that long blogs are better. It’s based on a very simple idea: small blogs don’t stick. They fit in short term memory. You have to ramble on long enough to blow your reader’s stack and force them to start swapping your ideas out to longer term memory.

I’m not going to be belabor that point. There’s a very long post about it if you’re interested. If you want to go read it, a few of my ideas are on the stack, so it might work just as well ;^)

Consequently, I’m going to be aiming for meatier articles. Something with, perhaps, a little more content than your average powerpoint slide. (Perhaps that’s aiming too low ;^) Would comparing some of my previous posts to a list of tenuously connected bullet points be a little too harsh?) Anyway, before I get into how I plan to accomplish this, we’ll have to return the memory problem for a bit.

As a simplification, let us say that any piece of writing has to begin with an idea. The idea is then subject to the forces such as expansion, connection, and forgetfulness. If the idea makes it into writing, that writing has to be done at some time. Lets break it down into a fairly conventional three periods.

If the writing is done ‘at first blush’, it can benefit from the initial energy and enthusiasm. The writer is still within the first avalanche of connection and expansion, so the ideas flow fast and easy, probably helped along by the writing process. Unfortunately, the ideas also aren’t mature, and many of the elaborations won’t occur right way.

If the writing is done a little later, the ideas can benefit from a little development. Unfruitful branches will have been trimmed away, but few possibilities may have also been forgotten, and others may not yet be fully explored. All and all it’s not a bad time, but some later elaboration by still be necessary to get the complete picture.

If the writing is done much later, there probably won’t be a whole lot needs to be added later – except perhaps the things that were forgotten (if you were lucky enough to remember them again) There has been greater opportunity for connection, discussion, and perhaps even some application and results, with the benefits of reflection.

What I’m going to try to do is get the best of all these worlds. Write something down as soon as possible. Don’t be afraid to change it. Continuously update as time and thought permit. Keep working at it until the ideas settle down reach a coherent form, and all the threads pan out (or die off).

Of course, I can’t get stopped up on one idea if I’m going to get everything started right way – I’m going to be keeping a couple of pots boiling at once. I’ve got almost a dozen of them so far – if you haven’t seen anything except Disk Clock updates lately (not all that unusual, really…) it’s because the lead time underwent a discontinuous change, not because there is nothing to say.

Now I’ve just got that procrastination issue to address (remember that?) Conceptually I’ve already addressed it by saying that getting something written down in the earliest stages is essential to help combat ‘oops, I forgot one thing…’ Now there is just that small matter of the difference between saying and doing. My writing cache so far is mostly filled with a few short paragraphs and bullet points; I was actually worried worried about this article itself getting off to a weak start, but it seems to be growing up somewhat nicely, so there is hope.

So, I guess it’s been more than a minute. My lesson for the day is don’t put off writing stuff down. As for that Javascript thread, it will be back, probably recovering most of the same ground for the sake of making a coherent coverage of the topic. I don’t recall the specific things I forgot to mention, but hopefully I’ll get to them in the course of a few writing passes.

Letter To Aspiring Game Designers

One of my relatives has a son interested in game design. Though I’m not much involved, I’ve watched it enough to be able to give something of an answer:

Unfortunately, the company doesn’t do many games anymore; those we have been done were coin-operated, and often redemption (tickets; chuck-e-cheese type stuff)

I presume by the involvement of software that you are referring to computer/video games. (I’ve also dabbled in board games, but very few people are able to make a career of it) I’ve watched the industry a bit at times, but never really been involved in it. What aspect is interested in? There is programming, art, sound, production, and even ‘design’ is specializing into story/writing and mechanics (possible called ‘game design’) Aiming smaller at the casual/web/downloadable market might be an environment were multiple talents would be more common. Things may have completely changed by the time he’s making a living on it, but that could be a place to start now.

There are a few game development schools – just don’t confuse development with design. Develop is the whole thing (programming/art/etc.) and very often their brand of ‘design’ is write up a design document and then a bunch of people go build that, whether or not it’s good. Mostly I speculate; I’ve no personal experience and they may have much brighter people than I give them credit for – just make sure they are offering what you want if looking in that direction.

Otherwise, the question of schools comes back to the area he is interested in. For true game design (which I should mention is a touch gig to get) liberal arts may actually be the best bet. See the book Rules of Play (below) for an idea of the breadth required.

I haven’t looked into tools lately. I ran across Squeak EToys recently; it’s designed as a first introduction to programming in an interactive environment. Beyond that, I’d recommend finding a game framework for a dynamic language such as Python or Ruby; I also believe there is a DarkBasic that is focused on games.

Resources:

http://www.gamasutra.com – web site tied in with a publish of game industry magazines and such (you could also subscribe to Game Developer magazine I suppose) News, articles on various topics in design, programming, and trends.

http://www.myhq.com/public/r/a/rauros/#104300261935570145 – my game design bookmarks; some are related to board games or weird abstract things about the ‘meaning’ of games and suchlike.

Books:

A Theory of Fun (Raph Koster) – fairly light essay on fun; illustrated.

Rules of Play (Katie Salen/Eric ZImmerman) – a textbook of game design, but in a broad sense – includes board and playground games in addition to computer.

Patterns in Game Design (Staffan Bjork/Jussi Holopainen) – more focused on computer games, but a little dry and perhaps not the best starter book.

Chris Crawford has written a couple of books; I believe The Art of Computer Game Design is available for free online, along with a lot of other writings. Just be aware, with respect to breaking into ‘The Industry’, Chris checked out of it a while ago, and many of his writings refer to a bygone age. http://www.erasmatazz.com/

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.

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.

LJ and the art of speaking in public

You may not want to read this, if you are at all squeamish with restrooms and related activities.
Continue reading ‘LJ and the art of speaking in public’ »

Knecht

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.

Work Patterns: Get the continuation

Where the continuation is the next step; find out what it is at the beginning, when hopefully you still have access to whatever is giving you a task to begin with.

The term continuation comes from programming, typically functional programming, where the continuation is a procedure to call when the current function is done. Sometimes multiple continuations are passed, where which one gets executed depends on the calculations done. The really fun ones use ‘current continuation’, which makes a closure on the current stack and local variables and then runs it multiple times.

Music as Program

Something is bugging me. Playing music isn’t always fun. So like, what gives? I’m learning a new skill. Learning can be fun, and Raph Koster practically equates the two.

I recall when I was learning to program – typing in BASIC programs (usually games) from magazine listings and then tweaking them.

I realized what the difference is. In the programs, I could make some sense of them. It wasn’t too hard to pick out a statement that read a key, and figure out that x = X + 10 moved a character to the right. I could understand the program so i could change it.

I don’t understand music. It is utterly opaque to me. Since I don’t understand it, I have nothing to direct change; I can’t play around with it. I can’t engage in the process of creation, which I’ve picked out in the past as a key factor in my general mental health. (This entry might do me some good.)

I’ve read a few things. There is tonic, dominant, leading tones, etc. But I don’t see them. I’m sure experienced musicians can see things things. But I’m not experienced. Sheet music is as enlightening to me as (get this) binary machine code.

Yep yep yep. Music is a program, and musical notation amounts to reading a program in hex bytes. All well and good for the machine executing it – which is exactly what a musician is doing with a piece of sheet music. Since sheet music is made for people trying to ‘execute’ it, this works out well enough. It’s also clear as mud. The ability of experienced musicians to see the deeper structures in sheet music equates to ability of hardcore programmers to see the structure in a binary executable. Sure, it can be done, but it doesn’t strike me as especially effective.

Now to be fair, I did set out to learn how to play music, not compose it. I was hoping to pick up some understanding along the way, but my focus thus far has been on execution not understanding. Still, wheres my ‘C’? C++? Perhaps some Lisp, haskell, or ML and nice higher order programming? Something like BASIC wouldn’t be all bad to start out with. Even Assembly would be a step up at this point. I suspect that assembly, or putting mnemonic labels on the machine instructions, equates to identifying the roles (tonic, dominant) and intervals. You have a slightly better idea what is going on, but not really why.

There are still two problems. One, this amounts to disassembly – taking the raw machine code and reversing engineering the meaning. In programming this is always a lossy process* – even just going to assembly you lose labels, symbolic constants, comments, etc. Second, where are those higher level languages? We’re still at the register-transfer level here. Has my education, focusing on playing such as it has, merely been negligent, or is there really nothing out there?

*Edit – technically, it is assembly that is lossy. Disassembly loses no more information, and often adds to it by identifying slightly larger structures.

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.