Manufactoria is to Конструктор as your Theory of Computation class was to your Digital Logic class. Instead of creating tricky silicon circuits to implement various logical operations, you create tricky state machines to modify and accept or reject sequences of colored dots on a paper tape. And just like Конструктор it goes from super trivial (accept every tape, unchanged) to super insane (reds are ones, blues are zeroes, the input tape represents a number, create an output tape with that number plus one).
I’m hoping that in the last level I have to create a state machine that accepts a paper tape with a PROGRAM ON IT and then EXECUTES IT.
Heard of Scratch? My nephew Dante introduced me to it. It’s a really nice visual programming environment, aimed at kids. You create programs that control the movement of sprites by snapping blocks together. There’s an “IDE” (written in Squeak Smalltalk) that you download and install and use to develop your programs, and then you are encouraged to share your programs by uploading them to the Scratch site. On the site, your Scratch program is run in a Java applet. Other users can then download the “source” to your programs, “remix”, and repost them. The people behind it have put a lot of work into both the technology and the community, and it ends up being really fun all around.
I made a few small programs to get the feel of it, like this Mars Lander game, but wanted to see how far I could push Scratch. So I set out to make a LOGO interpreter! It was pretty difficult, since Scratch doesn’t have subroutines, and the only data structure is the array. I ended up with something that supports a small subset of LOGO, including basic turtle graphics, user defined subroutines, and global variables. I also spent quite a lot of effort optimizing it to be as fast as possible within the limitations of Scratch. At first I just wanted to get the simple LOGO program to draw a circle, REPEAT 360 [ FD 1 RT 1 ], to run as fast as a “native” Scratch program to do the same thing. I succeeded beyond my wildest dreams and actually made my interpreter run faster than native Scratch. How I did that is another story, but to give you a hint, -funroll-loops.
Anyway the point of all this is while poking around at how to speed things up in Scratch, I decompiled the Java player that runs Scratch programs on the web. I was at first very confused by the output, because it looked like the source code to a… LOGO interpreter…??!?! I looked harder and found enclosed in the JAR file a LOGO program to run Scratch programs! For whatever reason, maybe because they had a LOGO interpreter in Java lying around, the Scratch team implemented the online player as a LOGO program that runs on Java. So that means when my Scratch LOGO interpreter is running, it’s LOGO, on Scratch, on LOGO, on Java. Neat!
We mentioned to Sharena about 5 years ago that maybe we’d bring her to an amusement park in the summer, but we never did and forgot all about it. She didn’t! So we finally went this year with her and a bunch of other people from Jenny’s family. We learned:
Jenny still can’t go on rides – she didn’t somehow “get better”. Our third ride was the pirate ship, and that did her in for the rest of the day. She was even sitting in the middle!
I still can – according to the kids this means I am not old yet. I liked “THUNDER AND LIGHTNING” and “BOULDER DASH” best.
Somehow the person who was the most game for the scary rides was Alexis, even though she’s only 8! She would go on anything, and even sit right in the front car.
Here are a bunch of stories of really great last minute hacks that were needed to get a game out the door. I have perpetrated my share of these as well. On one project I worked on, we had an upcoming very high profile marketing launch. (how high profile? we rented this room at Lincoln Center – the same one used as the meeting room in the recently canceled bad show Kings) Anyway, just before that launch, we realized that due to some very low level bugs in our messaging infrastructure, some small percentage of messages were being lost. The cause was unknown, and the “real” fix would have taken more time than we had. So instead, I put in a small change. Send every message… no, not twice, that wouldn’t be quite awesome enough… no, I sent every message in TRIPLICATE! Worked like a charm.
Prompted by this entry at Crummy about video game music medleys, I went and listened to some old game music and realized that some of the songs that have stuck in my head throughout the years were accompanied by some of the scariest moments. Here are some that play in my head AT LEAST once per day, in trendy “TOP $N” format:
#3 Scariest Moment: Dracula
Castlevania was the first game I ever played where, when you finally manage to kill the final end guy, after weeks of playing to reach him… HE COMES BACK TO LIFE IN AN INCREDIBLY MORE SCARY FORM and immediately jumps on you with huge sharp claws and you die. This is the music that plays as that happens. It took many more weeks to figure out how to kill the alternate form of Dracula. The secret, which is to use the Holy Water, came to me in a dream. For reals.
#2 Scariest Moment: About that cake…
In Portal, throughout the whole game you have been promised, and I quote, “delicious cake”. When you finally finish the last set of obstacles and your Aperture Science Unstationary Platform rounds a corner, instead of cake you find… the oven.
And the #1 Scariest Moment is: MOTHERBRAIN
Anybody who has played Super Metroid remembers this moment with perfect clarity. You have descended to Tourian, in the depths of planet Zebes, and found Mother Brain, in exactly the same setting as the original Metroid. The same way to destroy it works too: missiles through the glass. It doesn’t even take that many before Mother Brain explodes, and you get ready to celebrate. But then, after an eerie pause, this music begins to play and Mother Brain comes back to life in a screen-filling, and seemingly invincible form. None of your weapons work, and Mother Brain keeps shooting you with an energy draining beam that pins you to the back wall and leaves you immobilized. No matter how many E-Tanks you have, all you can do is sit there and watch them all be drained away. To raise the drama even further, Mother Brain shuts off the beam when you have like 10 energy points left, giving you a few moments to helplessly pound on the buttons, or scream and swing the controller around over your head, depending on your panic level. Lots of games do the “that was only a hologram… now my TRUE FORM” thing with the final end guy, Castlevania was maybe the first, but I say Super Metroid did it the best.
Are you like me? Do you like games that feel like work? Then maybe this game is for you. Конструктор (constructor) has been my obsession since it appeared on Sunday. I’ve had Zachtronics Industries subscribed for a while, after stumbling across some of his oldergames “for engineers”. But this one is my favorite so far. In it, you create chips that meet certain specifications using metal wires and two types of silicon. The red silicon, when powered, can stop the flow of electricity when drawn on top of the yellow. And the yellow, when drawn on the red, stops the flow unless it is powered. That is all you have to work with! Did you ever take a class in “Digital Logic” where you sketched out designs for things like an an adder using simple gates, like NOT or AND or NOR? This game is like the ASSEMBLY LANGUAGE of that. You don’t even have a NOT gate. In fact, your first challenge is to make one! The levels ramp up in difficultly quite quickly from there, and many seem simply impossible at first. I’m now to the point in the game with timing glitches and space to lay out circuits is becoming an issue, and loving it. The last few levels are “Confidential” but I have high hopes given that in the levels leading up to them you implement a shift register, RAM, and a rudimentary ALU.
If I stop showing up to work for the next few days this game is the reason why.
(by the way: the author of the game seems to have neglected to point out one important fact: you hold down the shift key to toggle between paining the two types of silicon. this took me a while to figure out the first time.)
We have arrived in Taiwan and in typical Taiwanese fashion we found that Jenny’s relatives actually rented a TOUR BUS to pick us up from the airport. It brought us to her Uncle’s place (only saw one bing lang girl on the way) where every relative ever had gathered for food and drink. They finally let us go and now they’ve distributed us out to houses with spare rooms for sleeping. We have big plans to get up early tomorrow and get breakfast and check out the area, but I’m pretty sure we owe like 2 or 3 night’s sleep at this point so we’ll see what actually happens.
Tomorrow is a day of relative rest (other than the inevitable banquet-grade dinner) and then the next day we start a 5 day bus trip around the island, to some places we’ve been before, and some we haven’t.
This weekend: Palo Alto! I’ve been casually talking to somebody out there for a while, and now that our conversations are getting more serious (O(lg n) and the like) we’ve decided to meet up in person and see where things lead.
End of February: Taiwan, again! This time with all of them, plus ALL their kids, which will definitely be either fun or “fun”. Hoping for mostly the former.
Remember how I was all “Is there available, on planet Earth, REALLY good C++ training?” The answer turns out to be YES! We (the place where I work) just finished a week of training provided by DevelopMentor, using materials created by Scott Meyers, and presented by Steve Dewhurst. It was absolutely excellent! I had recently been in a phase where there more I learned about C++ the less I liked it, but during the course I think I hit some sort of Tipping Point™ where I started to like it again. You can (and should) complain about a lot of things in C++, but no other language spans a greater range of the abstraction spectrum from the lofty and metaphysical down to gritty opcodes and registers.
We’ll be going back to Taiwan this year, in April! Highlights will be Jenny’s grandfather’s ∞th birthday (and other family type functions), a visit to Sandwich Lady, and going up to the top of the Taipei 101 while it still holds on to the “tallest” title. (The last time I saw the 101 it looked like this!)
This word count bookmarklet searches through the page you’re on, and attempts to report the word count of the selection. It will first look for the text selection, and if there is none, it will search for a textarea that has a selection. It should be working in Safari and Firefox, and possibly even IE and Opera.
Researchers have worked out the neurological trick used by a species of wasp to turn cockroaches into ‘zombie slaves’. The discovery explains why, once stung, cockroaches can be led by a much smaller master towards certain death. Researchers have proven their theory by replicating the effect, and by using an antidote injection to release the cockroaches from their zombie state.
This YouTube video (embedding disabled) shows the view from the cockpit (with HUD) of the last 7 minutes or so of the Space Shuttle Atlantis landing. You can also hear the running chatter back and forth from the shuttle to ground control. The pilot is enjoying himself exactly as much as you would expect, I mean, he’s ACTUALLY FLYING THE SPACE SHUTTLE.
The video seemed to originate from this somewhat broken site which has some other videos, but I haven’t found any that are as good.
And if you want to try this landing for yourself, you can! Just install X-Plane.