Next Year Jerusalem; this year Hungary

I had another go at the rockmite last night on 40 meters. I tuned the LDG tuner to 7.028 with the Kenwood B2000 and then substituted the rockmite for input; antenna was the 43 foot tree-slung vertical wire. The LDG has latching relays, so it stayed tuned even when the drive was removed. I started calling around 18:30 EDT (22:30 Z) and was answered by W2XB, Don in Lakeview, New York (a bit south of Hamburg, along the shore of Lake Erie). Don was using an Elecraft K3 and gave me a 349. His signal was weak but copiable (after I asked him to QRS down to around 15 wpm), so I gave him a 359. The rockmite is not very selective and there were signals up and down probably a khz, so most of the filtering was done  between yours truly’s ears. This contact went back and forth three times, and I can’t say that I copied every last letter, but the signal was quite stable. So, that is QSO number 3 for the rockmite, 282 miles (~450 km) on 550 mW.

After listening to the rockmite for a while more, my head was beginning to swim. I craved the narrow filtering… no, make that any filtering whatsoever, so I fired up the Kenwood and sent a QRL on 40m. I was answered immediately by a “?”, so I cq’d, and was surprised when HA3OD, Arpi, came back to me. I believe he said that he was operating at 30W from a location near Pecs, Hungary. So, about 4600 mi (7400 km) on 5W — even better than the rockmite.

I’m pretty happy with QRP performance last night. Propagation conditions were not particularly great (prediction for the band was “fair”), but noise was less of a problem than usual. I am considering building some sort of audio filter to narrow the rockmite experience. I know that there was a rockmite filter, but I don’t believe it is still available. I’ll have to look around a bit.

Rocky Road

Yesterday, my brain was mush, so I didn’t attempt anything at the workbench. I turned on the radio and tuned around the ten meter band, not expecting to hear much. However, I did hear considerable activity from South America, calling with “MM TEST”, which turned out to be the Manchester Mineira contest. Since the contest originated in Brazil, it wasn’t surprising to hear so many stations from that country. I had my first contacts with Peru and Ecuador, and logged a few with Columbia, Aruba, Cuba, Mexico and a few U.S. stations. I heard Chile and Panama, but didn’t manage to land them. I only caught the last couple hours of the contest and did not try running at any point.

Afterwards, I plugged in the 550 mW rockmite 40 and tried calling for a bit. The signal went through my LDG tuner and then my 43 foot vertical wire in the backyard. The band conditions were not great last night, but the activity level was relatively high.  I tried for about an hour, and stopped around midnight. I figured that I might have more luck the next morning, with fewer competing signals (but also fewer listeners awake). I started calling around 6:30 and went about 45 minutes. Local sunrise was 06:27 EDT / 10:27 Z, so 40m was fading towards the end of that period. I didn’t get any responses, but I was picked up at reasonable levels on the reverse beacon network, by stations from Massachusetts and Georgia.

reverse beacon network listing showing ai4sv picked up from 7 to 20 dB above noise

At one point this morning, my ears were nearly blasted off by a New York station operating on 7.031-something. I cranked the RF gain all the way down on the RM40, but it was still loud. The reverse beacon network registered the station at 51 dB above background in Illinois and Maryland — that’s about 10,000 times stronger than my 500mW signal, so I have to guess that the station was using either a linear amplifier or had one heck of an antenna. Even operating more than 3 khz away, he cooked me.

So, no cigar so far on the higher-power RM, but I am sure that the signal is getting out. Maybe I need to keep an eye on the QRPspot site.

Honey, I blew up the amplifier

Actually, let’s start on a bright note, and then we’ll get to the part involving smoke.

Inside view of the rockmite 40 installed in a mity box
The Rockmite 40

My main reason to build the amplifier was to get a bit more power out of the rockmite. Part of the problem in getting the amp working was also likely low driving power. The basic design of the rockmite uses the prototypical bipolar NPN for the “final” amplification — a 2N2222.  There are variants that use other transistors and get the power above a watt, and there are also some tricks to increase the drive, but the stock rockmite should yield a nominal half watt or so with no mods. So, I took off the cover of the rockmite and poked around, checking all the part values. I had already made one substitution: C8 was decreased in value from 0.1 uF to 0.01 uF to knock the side tone volume level down to something tolerable.

Sure enough, I saw the problem — I had used 47 pF (marked 47J) instead of 470 pF (marked 471) for C15 and C17, which are on the output side. Yes, the “1” and the “J” looked similar. I stuck the right value capacitors in, and power output using a 13.2V supply was 550 m. Not too bad.

Next, I plugged the RM into the Texas Topper. I didn’t power it right away, though, because I was interested to see what sort of insertional loss the Texas Topper introduced when it was not active. Power output was about 400 mW. This probably wasn’t an entirely fair test because the Tx Topper was still on the bench top, with tack-soldered connections to the BNC connectors.

Texas Topper before final install

I removed the extra N4148 from the amplifier, because I figured it probably had enough drive now to work without extra bias. Power output was measured as 2.2W, so about 6dB gain.  While I could live with that (and, in retrospect should have), I was curious what would happen if I bumped the bias back up a bit. The N4148 went back in, raising the bias voltage from about 2.05 to 2.75V. Power output was now 7.7W — 11dB gain. I measured roughly 7Vpp in, 20Vpp out, so roughly in agreement.  Part of the increase in gain might also have been due to switching from using alligator clips to apply power to using a thicker wire terminated on one end with a power pole connector and on the other end with a type N coaxial plug.

So, at this point, I was actually (hah) thinking of introducing a one or two dB attenuation pad, although the idea of burning off power in  a QRP rig feels inelegant. More inelegant, however, was trying to bend the FET forward so the heat sink would fit in the enclosure. When I pushed it forward (yes, with power applied), there was a bit of sizzle and then a bright flash from the LED. I don’t know if something arced before the LED toasted, but I was left with the acrid and no doubt carcinogenic aftertaste of stupidity wafting through the shack.

I inspected the board around the FET and couldn’t see an obvious short. The parts in that area do share some close quarters, and the heat sink is right next to both transformer coils. I took out the LED (shorted now) and yanked the FET. Good thing I had a bag of them on hand….as will soon be even more evident.

With a new FET, a new LED (not quite the same type, but close), and another diode, I was back in business. Everything was fine until I tried to stuff the heat sink into the enclosure. This time, not under power. The problem is, though, at some point, you have to apply power, or the whole thing is just a paperweight. Zot. Sizzle. Flash. Puff.

Yeah. So, at this point, I’m out of FETs and thinking that maybe I need to do something more creative regarding the strained relations between the heat sink and the enclosure. The heat sink should be applied right to the metal tab on the FET, which is the drain. The case is aluminum, and at ground potential, so that particular twain shouldn’t meet.

I tend to only order from Mouser when I get enough items on my “want” list to make the shipping work out, so it might be a bit before I replace the burnt out components, but I’m sure I will in the next couple weeks. The board has held up very well to my repeated soldering/unsoldering, and I really don’t have any complaints about the Texas Topper per se. This is more a mechanical issue at this point — all the electronic bits seem to do a fine job of amplifying. I may, in fact, order another one just to play on another band.

Even without the Texas Topper, doubling the output of the Rockmite should make it more usable. I’m looking forward to rolling both it and the TenTec 1320 out next week for the QRP to the Field Event.

Texas Topper QRP Amplifier

I seem to be doing well enough running the Kenwood B2000 at 5W or the TenTec 1320 at around 4 watts, but I haven’t made many contacts with my Rockmite, which on a good day puts out around 250+ mW, but less when the battery runs down a bit. A while back, I had ordered the Texas Topper (a.k.a. Tuna Topper) amplifier (nominally 5W out) from For $25 it’s a good deal. The design lends itself to flexibility and experimentation, allowing the user to choose whether to use onboard/offboard options, a tuna-shaped round or altoids-shaped rectangular form factor, a range of input powers (using fixed or variable attenuator, if necessary), fast/slow switching, and transceiver or xmtr/rcvr configuration.A round Texas Topper printed circuit board, unpopulated

I put the kit together last week, made an enclosure, stuck it in, connected everything up, and … nothing. Well, not quite nothing. My WM-2 wattmeter read about 50mW output. Not good — the amplifier was doing something, but not in the direction that I had hoped.

The amplifier is well-documented on Chuck Carpenter’s website, which provides a parts list, pictures of the board, schematics and helpful advice. From the circuit diagram, it’s apparent that there are two halves to the pc board — one that controls switching through a relay, and the business end of the amplifier that centers on a MOSFET followed by a filter network.  As far as I could tell, nothing was shorted.  In the “receive” state, signals fed straight through from input to output connectors. When I keyed down the rockmite, I could hear the relay click in, and I was able to verify that the input signal was being appropriately routed over to a 4:1 transformer to feed to the MOSFET.A constructed Texas Topper on the bench top for troubleshooting

I checked DC voltages with a DVM, and verified that the bias voltage (determined by the forward voltage drop across an LED that conveniently also serves to let you know power is applied) was 2.05V. The voltage on the MOSFET’s metal tab (the drain) was about the same as battery voltage, as it should be.  Unfortunately, I didn’t have an RF probe on hand for tracing of RF voltages — the probe was lost in the last move. It would be easy enough to build one (see nice plans on W5ESE‘s site), but I didn’t have a suitable diode on hand and apparently Radio Shack no longer carries the 1N34 in stock. No problem — I have something better, although not quite as portable: an oscilloscope.

The incoming signal was about 8Vpp, and 4Vpp after the 4:1 input transformer. I expected to detect something on the drain of the MOSFET, but all I got was hum (maybe just background).  Probing beyond the MOSFET, I didn’t get much. I was stumped at this point, and starting wondering if I had done something wrong during construction.

It seemed to me that there were two likely places that I could have screwed up — in winding the two bifilar transformers (which, I recall I did while watching an episode of “No Ordinary Family”, so maybe I was distracted), or maybe in installing the MOSFET. I had placed a mouser order at the same time as the kit order, so I had a couple extra MOSFETs to play with. Using static-free everything (mat, wrist band, soldering tip, etc) and low heat, I replaced the MOSFET. No change. The kit comes with 22 and 26 gauge red magnet wire for winding toroids. To be extra careful, when I rewound the two bifilar transformers, I used on strand of red, and a strand of another color. Radio Shack does carry a magnet wire set, which conveniently includes 22, 26 and 30 Ga lacquered wire, and the 22 is gold and the 26 is green. The transformers look much better when wound with two color wire, and it’s easy to verify at a glance that the correct wires are tied together and that they all end up where they should. Again, though, no change.

I tried replacing the MOSFET one more time, as I thought that perhaps I had not had the right load on the amplifier when I tested it the first time, but again, no change.

The Texas Topper laid out for testing on the benchtopAfter  I looked at the data sheet for the FET and noted that the gate threshold voltage is listed as a minimum of 2v and max of 4v. The transfer function graph showed the drain current picking up sharply above 4v. My rockmite has lower output than most, and it occurred to me that I might be at the lower end of this amplifier’s design — not enough umph to drive the FET’s gate. To up the bias voltage, I stuck a 1N4148 diode between the stock LED and ground. This bumped the bias from about 2V up to 2.75V. Result: 1.5W output. On the oscilloscope, the waveform was a bit distorted on the FET’s drain, but smoothed out in the filter and was well formed at output.  Going from 250 mW to 1.5W is somewhere around 7dB gain — not quite the 10 dB gain typical for this amp, but a huge improvement over my rockmite’s usual output.

So, now I am playing around a little to see what happens when I run this system with a fully charged battery and play a bit with the bias voltage. Hopefully, I’ll have a chance to try out the rockmite-on-steroids this weekend.



No QSOs in Boca Raton

This started as more of an IF (interactive fiction — not intermediate frequency) blog, but it does make a lot of sense to consolidate other topics here as well, since most of the time when I have to list a “blog” or “web site” link, I list this one. So, consider the flood gates opened. That probably means a flurry of excited posts followed by intermittent (on a geological time scale) dry spells. Let’s face it: that’s just how I am about updating websites. Maybe postings will be more regular if I can broaden the scope of the posts to just about everything and if the blog posts are useful to me as a sort of lab notebook.

Along these lines, one topic I’d like to document is ham radio trips, which I will conveniently define as any time I am not at home and get to play radio. Since I take a lot of trips for work, and since I almost always take a radio along, there should be a bunch of these.  Very often, the conditions aren’t optimal, and I don’t have a lot of time on trips, so more often that not, I probably won’t make that many contacts, but it’s more the effort than the QSO count.

Rather than recount projects and outings to date, I’ll just start from here forward. This weekend, I spent a couple days in Boca Raton. Scratch that. That’s how it is listed on the map — it is actually Deerfield Beach, Florida.  It’s only a beach if you consider concrete to be beach-like. It’s inland a few miles, and the view was of route 95. The conference I was attending was held at a resort that actually *is* in Boca Raton and overlooks the the ocean, but  I’m travelling at government rate, and that only goes so far.

My room was on the third floor of the hotel, right near the front entrance, which made antenna placement challenging.  On the first evening, I bid my time until there were no cabs or cars in the oval driveway, and then lobbed a 65′ long wire over a palm tree. I had attached it to a water bottle, and A long wire antenna running from the window to a palm treecouldn’t see where it landed after I gave it a toss. There were a couple tense moments when I went looking for it outside and found it dangling 20′ above the driveway, over the heads of some oblivious guests. I managed to yank it back a bit and get it into the bushes. Later that night, after dark, I guyed it down more substantially. Most of the antennas was elevated at about 35′, with the distant end down lower. I ran a 35′ counterpoise around the room and tuned the whole thing with a Hendricks SLT+ tuner.

The rig du jour was the 40m Rockmite, with the 7028.0/7028.9 crystal, running from a 7.2 Ah absorbed glass fiber lead acid battery. A picokeyer was built into the rockmite, and morse code was generated by a Palm Paddle which was duct taped to the battery. Where the wire crossed the metal window frame, I wrapped some duct tape around the wire as padding and then closed the window snuggly. Luckily, the hotel cleaning crew didn’t mind wires sticking out the window, and left the whole thing intact while I was attending my meeting on Saturday.

So far, I have had two — count them, two — contacts on the rockmite, but considering that it only puts out 300mW, that’s not too bad. Both have been from home using my 43′ vertical antenna (which is nothing more than a vertical wire radiator slung into a tree plus a few ground radials). One contact was across town, the other was to Michigan.  In the Michigan case, I was responding to a CQ call, and it was a difficult QSO.

I had no problem hearing other stations calling on 7.028 plus or minus 1 khz. Powerful stations would cut across both of my frequencies, and I had to wait them out. I heard strong signals from Italy, Slovakia, Slovenia, Germany, Croatia, France, and around sunset, from Columbia. Some strong local signals (SC, GA) were zero beat, but I could not work them. I called for a few hours intermittently, but had no responses. Well, maybe some qrz’s, but I am not sure to whom they were replying.

This was the first I had tried out the SLT tuner with the rockmite. Interestingly, the rockmite is powerful enough to illuminate the LED that tells you when the system is resonant. I would have wondered if my signal were getting out at all, if I had not had some confirmation from the reverse beacon network. Apparently, I was just above noise for a few of the stations, but at times, my signal was pretty decent (also, though, taking into considerations that the receiving systems for some of these reporting stations have high gain antennas).

So, no bites, not even nibbles, but considering that the antenna was somewhat of a compromise, I’m not writing off the rockmite. I am, however, strongly considering finishing the Texas Topper amplifier, which would boost the signal nearer to 5W and give me a fighting chance when my antenna options are limited.

IF Comp 2010

IF Comp 2010 is open and it looks like it will be an amazing year. My plan is to play through a few games at a time, say five, with transcript on, taking notes, and to complete Conrad Cook’s surveys right after each game. These surveys are not the basis for my scoring of games, but they address at least some of the criteria that I consider in rating a game, and I think they’ll provide some useful feedback for authors. As I complete each bunch of games, I’ll write them up on the blog and the move on to the next handful of games.

Lessons Learned, part II: Rules

Continuing my over-analysis of TWIFcomp, which is now several times longer than all of the code in the competition combined, I thought I’d take a look back on the rules and see how they panned out. I thought that a comp about short works should have a short list of rules, that they should be posted quickly, and that they should not drift during the competition. I did get the rules up in 24 hours, and for the most part they didn’t change over the course of the competition, except by additions where clarifications were necessary. Obviously, I didn’t plug every loop hole.

Rule 1: Dates

For such a small comp, I didn’t require any declaraction of entry. It wouldn’t have really helped me anyhow. If no one entered, I was up a roll of duct tape and a package of noodles. Conversely, if it was wildly popular, I have a closet full of duct tape and noodles, so no big loss (actually, they are kept in separate closets, but still). Times: GMT confused some people, but in the same way that you don’t deserve to rule the world if you can’t stick the megabucks stickers on the poker chips, a little technical darwinism never hurt anyone. The announcement of results excluseively by tweet was a gimmick specific to the TWIFcomp, but for future comps, it couldn’t hurt to push out the results by various feeds. Actually, this is probably something that would happen anyhow, with or without the involvement of the organizer.

Rule 2: Games

Any programming language, any human language, white space doesn’t count, has to be interactive.  I had anticipated that the definition of interactivity would have been debated, but it was the white space rule that got the most discussion. I really appreciate that some of the participants were purists and held to an absolute 140 byte limit. However, with different encoding schemes, operating systems, etc., length is a slippery concept. Also, you can’t tweet a tab or carriage return. I believe that the most tweetable entry, as submitted, would be Doug Orlean’s Manifest Destiny, written in PLT Scheme. Even with spaces, it fit the length limit, and it had no white space other than single spaces. So, bravo, Doug.

Now, regarding the white space. Here, I realized that I was giving authors a loophole, but it was a non-trivial one. I figured that if someone really could make clever use of white space, that in itself would be a worthy goal. I’m only one vote, though, so if other people didn’t agree, that would have been reflected in the voting. It is obvious from the results of the competition, that people appreciated Adam Thornton’s ingenuity in turning a game of less than 140 characters into a half-gigabyte monstrosity (and I say that affectionately). In the first comment on TWIFcomp, someone had joked about writing a game in white space, and I countered with a dare to write a z-machine. Adam went one step further, squishing the entire inform development system into the invisible world between printable characters.

Conclusion: Some rules are made to be cleverly interpreted.

Rule 3: Submission

Nothing special here. Everyone sent their game in, and I didn’t get a lot of requests to update games during the comp (which is good, since the submission by email system was a little unwieldy). I guess not many people felt much urge to update a 140 character game (although I notice that Alexandre Muniz came out with a revised “Make All Sad” that manages to shave off enough characters to allow addition of new features.

Rule 4: Behavior during the comp.

The rules explicitly allowed discussion of anything during the competition, and I didn’t even care if people posted the games on their own sites as long as they pointed people towards the version on the TWIFcomp site as the canonical version for judging. I did not have time to set up an Author’s Club, as had been done for the last two years for IFcomp — it seemed like overkill for such a short competition. Even so, some author-to-author discussion took place in blog space.

I was happy to find that during the entire comp, I didn’t see any flame wars, insulting posts, etc., on any forum. It was downright civil.

Rule 5: Voting.

I had hoped for a stronger showing in terms of votes, mostly because I was afraid that some games would not get enough votes to make the average reliable, and that one outlier could strongly skew the results. The game with the least number of votes received five, and the game with the most received 15. The votes were relatively consistent, particularly for the top-placing games.  Everyone recused themselves appropriately, and I did not detect any kind of cheating or favoritism in the voting. So, quantitatively poor, but qualitatively good.  I had considered setting a threshold number of votes below which a game would not be evaluated, but given the low numbers and consistency of voting, I went with a simple average.

Rule 6: Prizes.

From duct tape to pokemon. I was very pleased to see enthusiasm for a comp that did not offer cash prizes. I’m sure part of this is that the games were so short, and so little time was invested in writing. On the other hand, in the bigger comps, the amount of the cash prize cannot possibly compensate people for the time they sink into those projects. It is clear from TWIFcomp that peer recognition can be a substantial motivator for online competitions.

Rule 7: Intellectual property.

This was mainly a “I don’t want to get sued rule.” The more the comp went along and people asked if me if their code could be considered as infringing on someone else’s IP, the more I realized that it would be very hard to do so in 140 characters. Even if someone lifted text verbatim out of some other work, it would be a very short quote and probably fair use. Most instances also would have been considered a parody of the original work.  Since there was no way of making any kind of profit in TWIFcomp, I would assume that the waters are not sufficiently chummed to attract lawyers.

The mega-supplemental rule about libraries. This arose as a FAQ, and was tweaked a couple times. This rules was a distant second to the whitespace rule in terms of abuse. The prime offender (and most entertaining example) was Adventiture which took the entire original adventure game as a library. The library had been published before the comp, was online, and freely available, so I have to say that this was entirely within the rules. I am a little surprised that this was not abused by more authors, actually.  If I were to run something like TWIFcomp again, I would probably not allow external libraries in the same way, but restrict the entry to “core” tools for each language (either defining them explicitly or requiring that entrants run their proposed tools by me for approval).

OK, I will now stop obsessing about TWIFcomp. No, really.

TWIFcomp: Lessons Learned, part I

I have never run an IF comp before, and in the aftermath of TWIFcomp, I thought it would be a good idea to write down what worked and what didn’t in case the urge to run another comp ever returns.  I’ve divided this into what I would do differently, and what I would do the same.


  • Lead time. TWIFcomp was organized at the drop of a hat. Spontaneity is nice, but people had little notice that it was coming. Despite that, turn out was good in terms of the number of game submitted and even in the number of authors submitting games. The small size of the games and the limited effort required to write a game likely mitigated the short deadline, but this would not be expected in other comps requiring greater effort on the part of the participants.
  • Website. Luckily, I had a dormant website sitting around, waiting to be reconfigured and populated by data from the comp. On day one of the comp, when I wrote the rules, I wasn’t sure how functional the website would be two weeks later, so I asked everyone to mail in their submissions and later their votes. Never again. It all worked out fine, but it would have been a thousand times better to let game submitters and voters create an account on the website, complete with username and password. While this is kind of a pain for the end user, it would have meant that some of the data entry could have been divided among the participants, and that voting could have been performed online rather than by submitting a spreadsheet. I only received votes from about fifteen people, and I assume this was the result of a short voting period, but also the awkwardness of needing to fill out and email a spreadsheet. Commenting would also have been easier with user accounts, and would have obviated the need for a captcha aside from at the time of account creation. I think such a system would have yielded a more vibrant discussion, although I was generally happy with the way commenting went. Since everyone is drowning in usernames and passwords, one thing to consider in the future would be to implement OpenID, or at least allow people to use credentials that they have created for other comps (assuming that we could all agree on a common system).
  • Links. Must check the links on the website before going live. I think the first ten comments were, “Hey — this link doesn’t work.”  Doh.
  • Links to Text. A link was provided to download each game, but because some games were distributed as text files (i.e., to be run through an interpreter or run as a command line script), the default behavior of left clicking on the link opened the text in a new browser window, exposing the source, and potentially spoiling the experience of playing the game. My assumption was that users would know which files were and were not text files, and would right click the link to download. This was not a good decision, and after a couple days, I replaced the plain text files with zipped versions of the files, so that it would be difficult to accidentally reveal their contents.
  • Binaries. On the other hand, I was reluctant to post binaries, particularly windows *.EXE files. Had I been able to compile the games myself in a sandboxed Windows VM, I would have posted binaries for all the URQ and QSP games, and if there were any problem with the EXEs, I would hopefully have seen it myself. In the worst case, if I generated bad *.EXEs, I would be at blame rather than the game authors. Unfortunately, when I attempted to install the software, I ran up against installation screens full of uninterpretable characters.  I’m sure these characters mapped to cyrillic letters, probably on the Windows 1251 code page, but I didn’t see an easy way to get my installation of windows to make them legible. I believe that it’s not a matter of changing region/language settings, but of having a Russian install of Windows, which I don’t. With more time, I might have had more options, but I didn’t see any alternative here.
  • Timing. Since this was such a short competition (three weeks from announcement to awards), I thought I could slip it into the yearly comp rotation without really interfering with the regularly scheduled games. If I were to do this again, I might move it just a bit earlier to put more time between it and IntroComp.


  • Getting the word out. I posted announcements to both RAIF and, and noted that while I saw a lot of page views on the forum, I actually got more feedback (and not all of it flames) from the newsgroup. The old girl still has some kick left in her. I also experimented with posting on Russian and French forums, figuring that language couldn’t matter too much in a 140 character game. Both forums took up the idea, and these communities contributed games in both Inform and other systems. Just as the one-room competition is based in Italy but run globally, in any future comps, I would definitely market internationally. While language is somewhat an issue, some authors can write in more than one language, and non-English speaking IF communities are large enough to provide ratings on games in their native languages.
  • Programming Language. The comp threw the gates open in terms of writing system, and this is something I would do again. Some of the CYOA systems in this competition were quite elaborate, and gave the authors some interesting options in terms of story telling. While I agree that the world would not be a better place if everyone wrote a custom parser, I think the option for experimentation should be open.
  • Show all work. TWIFcomp was more about source code than most IF comps will be, but I like the principle of requiring submission and public display of source code. The game is not the only thing to be admired in a comp — the way it is written is just as important to me. I learned a lot of interesting tricks in reviewing the code in TWIFcomp.
  • Online games. I wasn’t sure that I’d be able to get Parchment working smoothly within the drupal CMS  framework, but it came together in the days before the site went live — many thanks to Andrew Plotkin and the People’s Republic of IF website from which I sucked the majority of the code and layout. It sounds like the new version of Inform will make it even easier to generate web-ready content. Additionally, the JACL and ChoiceScript games could be played directly online. All of this instant gratification made the comp itself more interactive and engaging.

TWIFcomp: Some analysis

TWIFcomp, with its first prize of duct tape, was never meant to be a very serious competition, and I am pleased to say that most people took it at face value. Nonetheless, a number of very clever and even thought-provoking works were submitted. This is a post about the entries. In a couple days I’ll post another one about lessons learned in running a comp. Note: The final scores just went up on the main TWIFcomp page.

I’ve noted a few comments in blogs that the games are not much fun as games, and I don’t think that is much of a surprise given the constraint (with the obvious exception of one game which gleefully found a way around the size limitations). However, I would say that almost all the games are playable in some sense. When I wrote the rules, I had thought that the one that would draw the most debate would be: “The game must be interactive.” I guess everyone is at least intuitively onboard with Crawford at this point, and we all recognize interactivity when we see it. In looking over the voting, I have the sense that there is a strong correlation between interactivity (as I understand it) and score.

For me, what set one game apart from the next in TWIFcomp was wizardry. Every game in the comp accomplished the unlikely feat of coding a game in 140 characters. However, some games went a step further, continuing past “unlikely”, and moving into “improbable”, “impossible”, and “ZOMG, how the hell did they do that?” categories. It wasn’t enough to write a game in TWIFcomp, but to write a game with style. It’s not just a game, it’s an aesthetic. As the games began to drift in during the first week in increasingly exotic and densely written code, I was put in mind of the realm of obscure and obfuscated coding described in a paper by Nick Montfort. A lot of the TWIFcomp games have a similar mixture of playfulness and technical virtuosity.

The game METEOR could have been coded in any language, but it was written in BASIC — in all capital letters. Aside from the nostalgic appeal of BASIC, the capital lettering shouts at you. METEOR! The world is facing fiery annihilation, so this only seems natural. The player’s only option is the one that is required to start every BASIC program. Expression is so limited in 140 characters that the choice of language itself becomes a statement. The medium, or in the case its encoding, is the message.

A number of the games take advantage of the player’s expectation of IF. They print a “>” prompt and await input. However, these games are not backed up by the full weight an IF development language like TADS or Inform, they just look the part. The prompt is a facade, and the game either ignores the input, twists it programmatically, or parses out a narrow set of keywords. My favorite example is Travel, which the author describes a comprehensive travel simulator, allowing travel anywhere. It doesn’t really have much of a sense of what you enter, but it does manage to convey an impression of understanding. A-small-casual-game… also does a good job in keeping the player busy, and includes a termination condition. Neither of these is a sophisticated ELIZA-like conversation simulator, and the Turing Test has nothing to fear from these games, but considering the severe restriction in program length, they do an amazing job. The game I have hands and I’m ready to LOOT! satisfies the typical player’s natural urge to take everything in sight — and it gets super-extra points for implementing the game as a series of MS-DOS batch files.

Early in the comp, Andrew Plotkin had posted that he suspected there would be a limited number of types of story that could be told in 140 characters, and this seems to more or less be the case. I’ve tried to bin the games into categories. Some do not fit these categories, or at least not comforably, while others fit into more than one category. This system is not as classy as Jungian archetypes, nor as comprehensive as TV tropes, but here you go:

1) Life’s a bitch – You do something and then you die. It’s interactive in a fatal kind of way. This game can be written in almost any game system or general language, where there is provision for input and for termination of the program. It may convey meaning, but it’s unlikely to be a fan favorite or have much replayability. The games in this category includes those where you invariably die (predestination, nihilism: Short-Lived, Roulette, Untitled, Raison d’être, raison de ne pas être), those where you have some agency to decide your fate but lack information to make a rationale choice (absurdity: Burning, DecisionsDecisions, The Mourning Do in Pinellas Park, Buttons), and those where you can choose to live or die (free will: 43 and the closely related To be or not to be). I’d venture that the last category isn’t really free will in the sense that players, being curious, will inevitable kill themselves to either see what happens or end the game.

2) Existence – Closely related, there are a number of games, where there is no central choice of living or not. The player’s state is alive, but without meaning. I was a little surprised that no one reworked “Waiting for Godot” in this category. Both Void and the TWIFplus game Space are very much in this vein, though. Dementia an epilogue also fits this category and suggests that meaningless existence leads to madness.

3) The Surreal – IF worlds may be creative, but they usually follow enough of the rules of the real world to allow the player to interact with the story and appreciate causal relationships. Andrew Plotkin throws a monkey wrench in the guts of Inform to produce You see chaos here. Other games used surreal imagery and unusual goals to convey a distorted world view including Dementia: An epilogue, Burning, and COD.

4) Exploration – Location and movement are central concepts in IF. The simplest game in Inform requires that the player be in a room object. A natural extension of location is movement, and a number of games trigger some terminating condition on either the attempt (as in LP0 and Ocn bttm) or the completion of specific movements (SWEDUN, Manifest Destiny). Navigator takes this further, giving the player an infinitely large canvas to explore, although there is understandably little detail in the world model beyond location (in that regard, this game reminded me of my first fifteen minutes playing GATOR-ON, Friend to Wetlands! from the 2009 IFcomp). Tumbleweed Hero is even more free form in its exploration of the world, but provides no feedback about where you are. Considering that the main activity of a tumbleweed is tumbling around, that it has no sensory apparatus to distinguish one location from the next, and that tubmleweeds are not particularly goal-directed, this seems like an uncannily accurate simulation. It also straddles the line between this category and Existence, as it can be argued that the tumbleweed’s life is not particularly meaningful (although perhaps a tumbleweed would argue otherwise).

5) Central Riddle – There’s always been a balance in IF between story and puzzles. In 140 characters, there’s only so much you can say in terms of narrative unless you pull in additional resources. However, it is possible to implement one puzzle of the sort that might appear in a longer work. The puzzle may literally be a riddle, as in Why? or Ring, involve manipulation of an object (or text) as in Make All Sad and Escape, or consist of a classic logic puzzle as in Monty Hall.

Matt Weiner’s Sin seriescould be considered puzzle-oriented in that the reader probably brings the social context of “deadly sins” to the game, and can then try to elicit each one by guessing the corresponding action in each game. The goal of Matt’s game reminds me Jim Aikin’s Heavenly entry in the JiG CGDC#7 earlier this year, where the player is motivated to find a way to sin. I suppose that the player in both cases must be considered an anti-hero given his goal. Games with a central moral decision could be considered a subset of central riddle. The ChoiceScript games (Love, Money) by Dan Fabulich and the Sin series by Matt Weiner comprise this category.

6) Redux of a larger work (and testing the boundaries of the competition) – The most notable entry in this category was Mentula Macanus: Apocolocyntosis, which managed to pack not only a full game into characters, but also the entire Inform development system. The entry that was submitted was actually a perl script which decompressed white space characters in the perl script itself to yield scripts, folders, to install and execute the game. In my opinion, this was damn clever, and within the rules. Yes, it was something of a perversion, but I think the author would be proud of that designation. Adventwiture also plays with the rules a bit, effectively including the entire original adventure game as a library by the TWIFcomp game. It’s a bit of the tail wagging the dog, but again entirely legal by TWIFcomp rules.Duel in the Snow: Abridged Version vaguely fits into the category as a reworking of the earlier IFcomp game.  The game does capture some of the atmosphere of the original, but I’m more inclined to put this game into the Existence category. LP0 riffs on the the current Hollywood trend of making prequels, and is presumably the (very short) story leading up to Lost Pig! Finally, a number of works draw on either external works (Daigoro, Ramirez, Zed)  or real world events (The Mourning Do in Pinellas Park) for context.

7) Pure symbolism – Language itself is bulky and full of fat. Boiling interactive games all the way down yields a few lumps of blacked, charred and (hopefully) meaningful symbols. These games are like the engravings on the Voyager space probe — the author hopes that whoever finds them can figure out their meaning from first principles. Well, in the comp the player gets a little help from the title and the description on the website. My entry “😐” was a deliberate attempt at a purely symbolic game, but the clear winner in this category was “> by @” by Aaron Reed. While I think Aaron’s description was a little tongue-in-cheek, he does manage to tell a nuanced story in pure symbols. In OOP-speak, his game is full of very overloaded operators.

TWIFcomp: Programming Languages

61 games, 18 languages. Just under 8k of code.

Here’s how the programming languages were distributed. A good day for Inform 7, but not a bad showing for URQ and other languages dedicated to CYOA. Also, unix scripting languages and shell tools were well-represented.

Histogram showing number of games per language
Number of Games per Programming Language

Of course, this isn’t very scientific. A lot of the games blended languages or used an interpreter or helper file from another language.  The languages could be group differently, i.e., the two BASIC dialects could be merged, and I6 + I7 could count as the Informs, or I6 + I7 + ZIL as the Z-machines. Also, since people could put in up to three games, having three ChoiceScript, for instance, is more likely to mean that one person put in three games, than that ChoiceScript is roughly as popular as Perl across the board.

It is still interesting, though, to see what tools people reach for under “extreme” programming constraints.