Tom 7 Radar: all comments

[ next 25 ]

9007. Adam (c-71-236-65-235.hsd1.pa.comcast.net) – 23 Aug 2009 18:53:18 Sans Pellegrino and a bug ]
chip error: 100% brilliant
 
9006. Tom 7 (h-69-3-248-56.phlapafg.dynamic.covad.net) – 21 Aug 2009 01:04:27 Erie and Zurich ]
Wow, thanks for the tip! That game looks really neat and I love the art. I wish my font were in the actual game, but prolly not.
 
9005. Tadbot (12-175-119-20.yellowbook.com) – 20 Aug 2009 22:53:01 Erie and Zurich ]
Random Divide By Zero Font Spotting:
One Constant used on Scribblenauts downloads coming soon page:

http://games.kidswb.com/scribblenauts/index2.html#/?cc=en&page=downloads
 
9004. Anonymous (c-71-57-233-3.hsd1.pa.comcast.net) – 20 Aug 2009 22:03:21 BAD SAT SCORES ]
i really want to get into temple.

i only took the sats once as a junior and got

Writing : 470
Math: 370
Reading : 470

am i completely screwed?

i have about a 2.6 gpa and plan on taking the sats again as a senior.
 
9003. Tom 7 (ip67-152-86-163.z86-152-67.customer.algx.net) – 16 Aug 2009 03:17:02 New! Escape 200704130 ]
Not a bad idea. I guess I was assuming that touching the game area would scroll the map, but maybe something else could be arranged for that.
 
9002. Bekah (c-24-20-249-126.hsd1.or.comcast.net) – 15 Aug 2009 16:45:28 New! Escape 200704130 ]
Instead of directional keys, you could do something like I've seen in other apps: you slide your finger in the direction you want to go. I guess you'd have to specify for how far you have to slide to count as an instruction, or how long it has to last. And if you keep holding after the slide, it could count as holding down the button.
 
9001. Sophia (c-65-96-221-143.hsd1.ma.comcast.net) – 14 Aug 2009 10:58:08 Album-a-day #24: Baking about architecture ]
I'll Be Acquitted my favorite. Lyrics so clever make chuckles too.

I think new recording set-up is a win!
 
9000. Sophia (c-65-96-221-143.hsd1.ma.comcast.net) – 14 Aug 2009 10:35:37 Theme from Zürich ]
Yeah I mean more musically than sonically. So even more realistic than the real thing!
 
8999. Tom 7 (ip67-152-86-163.z86-152-67.customer.algx.net) – 13 Aug 2009 11:43:17 Theme from Zürich ]
Thanks! But as for realism, you think it sounds more authentic than my actual NES-tracked songs like Hero Abuse or Giant Stone Space Station? Or maybe it's not so much about the sounds as the tune.
 
8998. Sophia (c-65-96-221-143.hsd1.ma.comcast.net) – 11 Aug 2009 22:54:08 Theme from Zürich ]
I really like this one. Also I will say that I think this may be the first T7ES song where, when it is first starting, I actually think it is music from an old Nintendo game. Super-realism.
 
8997. Sophia (c-65-96-221-143.hsd1.ma.comcast.net) – 09 Aug 2009 09:47:30 Erie and Zurich ]
I will add my voice to those who were perpetually delighted during reading this post.
 
8996. Anonymous (63.161.156.65.customer.sprintlink.com) – 03 Aug 2009 16:13:37 emacs lost-mode ]
I think all the encoding stuff is finally straightened out, btw.
 
8995. Donna (c-71-199-114-80.hsd1.pa.comcast.net) – 03 Aug 2009 15:54:16 Erie and Zurich ]
p.s. Also I loved this post.
 
8994. Donna (c-71-199-114-80.hsd1.pa.comcast.net) – 03 Aug 2009 15:54:04 Erie and Zurich ]
Ohhhh that is such a neat idea (the Leightning L3).

What earbuds do you use? I'm considering these $70 apple ones (http://www.amazon.com/exec/obidos/tg/detail/-/B001N9YIJG/ref=ord_cart_shr?_encoding=UTF8&m=ATVPDKIKX0DER&v=glance) mainly because they double as a headset and have an up/down volume control, but I'm on the fence.

And Apple-- for not putting earbud-type headphones on display. I mean, wouldn't a disinfecting wipe or whatever (cleaning the rubber part, that is) solve any problems?
 
8993. Tom 7 (h-69-3-248-152.phlapafg.dynamic.covad.net) – 02 Aug 2009 20:11:34 Album-a-day #24: Baking about architecture ]
PS2: Attributes are "As Long As The Block Is Black" by GBV, "Brick is Red" by Pixies, "Flux = Rad" by Pavement, and "Cow Cud Is A Twin" by Aphex Twin.
 
8992. Tom 7 (h-69-3-248-152.phlapafg.dynamic.covad.net) – 02 Aug 2009 20:04:22 Album-a-day #24: Baking about architecture ]
Joke's on id3v2, not you

PS thanks I invented that
 
8991. Chris C (c-76-124-60-57.hsd1.pa.comcast.net) – 02 Aug 2009 18:35:47 Album-a-day #24: Baking about architecture ]
also your stream-of-consciousness long sentences thing really does help make mundane things seem more entertaining
 
8990. Chris C (c-76-124-60-57.hsd1.pa.comcast.net) – 02 Aug 2009 18:35:15 Album-a-day #24: Baking about architecture ]
Today I was sorting MP3s because I'm transferring them to this other computer where my housemate will be able to see all the ridiculous cruft that has accumulated in my music directories over time and I decided to clean out some of the one-off genres that idiots on the internet have written on things I have downloaded from them and so I discovered the joke here which made me happy but then I looked at other mp3s of yours and discovered this is but a refinement of a joke you've already made and I'm not sure how I feel about being played like that.
 
8989. Donna (c-71-199-114-80.hsd1.pa.comcast.net) – 02 Aug 2009 16:52:03 JavaScript rant ]
Anon (do I know you?),

You seem to be making broad, sweeping generalizations while exhibiting what I can only describe as a "studious ignorance" of the field. ;) One of the first papers about information hiding was Parnas's seminal paper--and, guess what--it was a software engineering paper. Before you say that he wasn't the first to discover this concept, I'd like to point out that even PL researchers cite that paper (though not as often as they should, I think).

Several SE researchers that I know personally have a quite solid grasp of the theoretical foundations. They aren't ignoring them, they are simply pointing out that there are design tradeoffs.

If SE research is doomed, why is it having more immediate impact?

You seem to be equating "beauty" with "creative insight." I would agree, if a particular piece of research has neither, then, yes, there isn't much point. But, the seminal works in SE, and those that are highly regarded 5 or 10 years after-the-fact, do indeed have creative insight.

The "crap to not-crap" ratio may very well be higher in SE than in other fields, but I would argue that the "elgegant-but-useless to useful" ratio in PL is also a little too high for my taste.
 
8988. Anonymous (pool-68-162-144-150.pitt.east.verizon.net) – 02 Aug 2009 14:32:26 JavaScript rant ]
Much or all of SE "research" is conducted with a studious ignorance of the theoretical foundations of the programming because, well, to do otherwise would be for the subject to go away, and we can't have that.

And notice that systems researchers have nothing whatsoever to do with SE either. I would say that they have even greater contempt for the "field" than do PL researchers, but that's just my opinion.

SE is all about trying to be relevant by accepting the status quo and papering over technical errors by erecting huge social and management structures designed to obscure them. It's doomed.

And never once have I seen anything beautiful or elegant emerge from SE. If something isn't beautiful, if there's no creative insight, then why bother with it?
 
8987. Donna (c-71-199-114-80.hsd1.pa.comcast.net) – 02 Aug 2009 13:36:45 JavaScript rant ]
Tom: "I really wish I could figure it out, because it's very sad to me to see great ideas wasted (in computing and elsewhere) because they are unable to penetrate."

Agreed.

I think your comment about "contempt" was right-on, and perhaps also the refusal to acknowledge the main point in the "worse is better" argument.

I think what the PL community (in general) sorely lacks is collaboration with other sub-disciplines, such as software engineering (yes, I know what you think of that...), HCI, etc. Figuring out all these formal properties is indeed interesting and necessary, but without someone to pick up these ideas and turn them into something closer to might possible be consumable by "the masses," then the research will continue to stay on the dusty bookshelf.

The situation is particularly unfortunate at CMU, where there are great researchers in both software engineering and HCI, for instance. This culture of contempt for anything "inelegant" leads to myopia and ultimately hurts the stated research goal.

Now, Tom, what I like about your thesis is that you were practical as well as theoretical. In particular, you considered domains *other* than program analysis tools and compilers. :) I wonder if your experience with the "tower of garbage" helped here.

 
8986. Tom 7 (h-69-3-248-152.phlapafg.dynamic.covad.net) – 02 Aug 2009 12:06:56 JavaScript rant ]
I guess I can blame only myself that the code in the previous post is not indented.

Anon: It's sure true that there's a lot of crap out there. This is why I refer to it as the "tower of garbage". Just because it is doesn't mean that it ought. I think the Definition of Standard ML stands as a good example of what is possible if you think and plan very carefully and actually design something rather than accrete features and bug compatibilities. It does have warts, but they are really pretty minor compared to the abominations found in the depictions of JavaScript, C++, or even C (this one I actually think is a decent and clean language, just way overused). There are a number of ongoing projects at CMU and elsewhere to figure out how to set the bar even higher, by creating exquisitely detailed descriptions of languages that automatically lead to reference implementations, and that allow for machine-checkable proofs of properties (and therefore freedom from certain kinds of mistakes).

Let me also say that my pedigree suggests a certain impracticality to my thinking, so I want to be clear: My first love is using computers to do cool things, and I think that the tower of garbage, however smelly and unstable, really is pretty impressive. It keeps getting taller. I live in it, indeed. One of the things that the bearded and austere programming language community has not figured out how to do is to make their work appeal to garbage architects. In my modern cynical viewpoint I think this is because we actually lack some important quality that is necessary for success in the weird software social ecosystem. (cf. the famous "Worse is Better" argument, but I don't think that's it. I think it's more like "contempt".) I really wish I could figure it out, because it's very sad to me to see great ideas wasted (in computing and elsewhere) because they are unable to penetrate. It's never too late: there are lots of plausible strategies for retrofitting the tower with some nicer parts, they just need cooperation.

I don't think I was claiming what you think I might have been ("that elegance is impossible in JavaScript"), but let me clarify. I think JavaScript the language itself is clearly inelegant. There are lots of deep reasons (I listed a few in the opening of my rant), and I take some cheap shots, but the cheap shots are really just examples among hundreds. I don't think it's fair to consider idealized JavaScript with warts removed (it's not clear to what extent that's possible while retaining its nature) when evaluating "JavaScript is elegant". Elegance is a broad quality.

However, I definitely think it's possible to write an elegant program in almost any language, including JavaScript. (I think I've written a lot of nice JavaScript code.) An example that's close to my heart is the 2006 ICFP programming contest that we ran. In it we created five or so programming languages that were explicitly designed to be ridiculous and broken, where the challenge of the contest was to program in these languages despite their deficiencies. It was really remarkable (though not that surprising) that several of the best teams wrote really "good" programs in these languages, like programs that embodied the spirit of the language, and that struck me as elegant. My favorite example was probably in the Balance language, which had a preposterous four-instruction vocabulary, each of which carried out multiple operations simultaneously (a yin and yang to "help" the programmer achieve "balance"), like when you add it always simultaneously subtracts some related quantities. The goal was to write programs (with really simple specifications, like "halt without crashing") that worked around this annoying "feature". The contest-winning team, Team Smartass (from the Goog) had an implementation of multiplication that struck me as really elegant; it was only a few instructions long and it actually *used* the simultaneous add/subtract behavior in a natural way rather than working around it. (They thought I had set this up on purpose, but really it was 100% their cleverness.) This fact is one of the main reasons I still find it fun to use computers despite really feeling like there's so much crap around. I don't totally understand the tower of garbage, but I do know that one of our most effective coping strategies is magnificent concrete pours of hermetic abstractions that contain the smell beneath and allow us to build still yet higher. Abstraction is what allows us to contain our vertigo. Only when I contemplate the whole, as a result of someone casually describing it as "elegant", do I need to feel that unsettling sensation. The dizziness can cause rants and/or vomit.
 
8985. Tom 7 (h-69-3-248-152.phlapafg.dynamic.covad.net) – 02 Aug 2009 11:14:58 JavaScript rant ]

J: Re: "crazy", you're overreacting here. This is a personal blog post in response to a Facebook status message, not some an ad hominem attack in an academic capacity. You'll notice I called your remark "casual" and did not even mention who you are, because the post was not about attacking you personally. The point is to write a fun critique of JavaScript and maybe start a good-natured flame over it. I'm proud to reinforce CMU's reputation of being vigorous defenders of good taste and making passionate arguments for the things we care about, backed up by technical reasoning and made entertaining with hyperbole.

Re: "Take an ML program, make all variables refs, and it will behave the same way too." This isn't true. Concretely,

(*
(ML does not have a DOM interface. Let's pretend:)
type element
createElement : unit -> element
propertyString : string -> element -> string ref
propertyHandler : string -> element -> (unit -> unit) ref
alert : string -> unit
*)

fun installHandlers () =
let
val i = ref 0
fun loop () =
if !i < 20
then let
val elt = ref (createElement())
in
propertyString "innerHTML" (!elt) := Int.toString (!i);
propertyHandler "onclick" (!elt) :=
(fn () =>
alert (!(propertyString "innerHTML" (!elt))));
i := !i + 1;
loop ()
end
else ()
in
loop ()
end

I'm trying not to be too snarky in the code about "make all variables references" because there are several variables here (e.g., the functions) for which it would be so completely awkward and useless to make references. This is also a silly way to write ML (looping by mutating a ref cell) and the code is very ugly as a result, but using something like tabulate or even Util.for might obscure the point. This code does not replicate the behavior in JavaScript. Why would it? Notice that elt is just a variable bound to a ref cell; we only read from it and in fact it would be easy to optimize away that ref from this program. It does nothing except make the program more roundabout.


If what you really meant to argue was that JavaScript could be made into a small dynamic language based around hash tables, by lancing all its boils and throwing out most of its baggage, then I do not disagree. That it would be elegant would be mostly a matter of taste then. It would certainly not be efficient. (I don't know where you get the idea that it's easy to compile it?) I think in large serious application development, programmers would still impose type regimes checked by frontends/compilers (as they often do now), because it is so easy to make costly mistakes otherwise. Personally I don't see what the point would be even of idealized JavaScript. IMO the language's only positive quality is that it is linked into the DOM and is ubiquitous on an important platform (web). If we were to make incompatible changes, we might as well replace the whole thing with something that better suits the purposes to which it is put.
 
8984. Tom 7 (h-69-3-248-152.phlapafg.dynamic.covad.net) – 02 Aug 2009 11:05:51 New! Escape 200704130 ]
I have an iPhone and I'd love to make a iPhone/touch version of this game, but haven't found the time yet. I dislike the iPhone SDK, personally. :( Also, I worry about finding a good control scheme; I really want real keys. But it may happen.

Gary: I think you might be thinking of the other game called Escape by Nuclear Nova. It is strangely similar to mine and I think has an iPhone version; I hope that people do not get them confused. :( For the record, my Escape first came out in 1996, wayyyy before his. There's no iPhone version of Tom 7 Escape, but maybe some day.
 
8983. Gary (220.255.7.237) – 01 Aug 2009 23:45:25 New! Escape 200704130 ]
There would be instructions of how to play on the iPhone version of this game, but there are control instructions in the iPhone version.
 

[ next 25 ]