15 January 2010

Pokemon Simulation and Me (and You) Pt. 5

Part 1
Part 2
Part 3
Part 4

It was January of 2009 when OPENPKMN really lived again. My undergrad career was drawing to a close. I had less work to do. I set up a server in my dorm and Ilya and I had our first match in the brave new world of OPENPKMN. It was both good and bad. Comprising the good was the fact that the server side portion this thing was pretty solid. A lot of stuff worked right off the bat, no testing. The stuff that didn't typically had a pretty obvious fix. The game mechanics were nearly solid. The process that allowed users to challenge each other needed some critical fixes, but nothing has baffling or awful. The bad was the fact that the interface had taken a step back because, really, I had no interest in sinking time into it. At one point, things were so slipshod that you'd make your Pokemon, then have to do an SQL query to look up their id numbers in the database and then give the server a list of id numbers to form them into a team. But really the bad was nearly completely cosmetic.

So after many battles with Ilya, I decided I had a real winner on my hands. Ladies and gentlemen: the only open source Pokemon simulator that supports the classic Red/Blue/Yellow/Stadium 1 Pokemon games. Please, hold your applause until the end. And please ignore the fact that it took the better part of a decade.

Now let's do a quick refresher on the state of Pokemon community. Smogon now had its own official Shoddy Battle server. Though Smogon no longer supported it or ran a server, NetBattle had undergone a bit of a revival. (It was now operating as NetBattle Supremacy which I guess would make this version of OPENPKMN OPENPKMN Supremacy. Not happening.) This seems like it had done bad things to the number of people who played anything but the most recent Pokemon games. The Smogon NetBattle server was huge. I don't think anything approaching it ever came to be in the NetBattle Supremacy days. Whereas the older games had a decent following in the NetBattle days, in these times battling Pokemon online was understood to be using Shoddy Battle.

So I though, why not spruce up OPENPKMN a little and get the word out. So I threw about a month of sprucing into it. And it was ok. It was not really intuitive or pretty, but with some documentation you could use it to have Pokemon battles that had a reasonable expectation of working. Now promotion was a harder thing for me. Would posting about it be considering unwanted advertising? Would I get banned, censured, or otherwise criticized? Nevertheless on February of 2009 I made a post on Smogon talking about it.

In retrospect, I did a horrible job. My post was a big oration: big huge paragraphs, no prominent link, nothing that would make it appealing to read. And then I basically up and left for two days after I posted it because I had to work non-stop to meet a deadline for an my capstone project.

The response was weird. It was definitely positive. I got kudos for perseverance and definite signs of interest. But people seemed to be treating it as though it was some theoretical thing, or an announcement of something to come. Meanwhile, though users seemed to have signed up, the server seemed as empty as ever. I naturally and probably rightly assumed that people were finding it to be a bitch to use, so I asked for feedback and offered any help that I could muster given my schedule. Requests for help here light. Still no battles. I asked Ilya to post about it on 4chan. And that got us some snarky responses and a guy who would without fail attempt to crash the server at around 5 AM (and for the first couple of days succeed), but still no battles

In late February, I thought I had my trump card. I had hunkered down and wrote a GUI. It was clunky and required Java 6, but it amped the usability way up. Or so one would thing. Instead, the thread fell quiet. I was too busy to care. The thread got sporadically bumped by interested users in the subsequent months, but each time I had to tell them that I didn't have the time to run a server.

Meanwhile, I presented OPENPKMN at a symposium for undergraduate computer science. I tried to spin it as a project that applied many of the components of an undergraduate computer science education. The reaction to it was fairly pretty subdued. I thought there would be more nostalgia for something like this. (At one point two girls seemed to be eying my poster from a distance with a combination of amusement and interest, but some middle aged dude would not stop asking me questions about it and they moved on. Fuck you man!)

So my semester finished and for a while I wanted nothing to do with programming. My capstone project burned me out. In the last two weeks of the term I pulled three all nighters. It wasn't healthy. But eventually I did come around. And thus, another summer session of OPENPKMN programming began. But I couldn't run a server at my folks' place. So I basically forgot about the old Smogon thread.

And then sure enough, grad school started. Development slowed, then stopped, as I realized the graduate algorithms class was a full time job. Ilya started running a server on his desktop, which he left on all day anyways. Then, in early November, out the blue the Smogon thread was revived. I told them about Ilya's new server, and gave a very basic sketch of how to connect. But I kept the post short this time! I was too busy for orations. The response I got was different his time around. There was the requisite interest. But there were two posts of real interest.

The first asked if it jut be easier to run a NetBattle server. My response to that was it would, but OPENPKMN was all nice and open source and didn't need Windows to run. The second was one that said I should check out the Shoddy Battle source and start contributing. It's worth noting two things about Shoddy Battle at this point. First is that Smogon and Shoddy Battle had formed a close affiliation. Second there was a big push underway to release Shoddy Battle 2, which would make it much easier to modify Shoddy in order to support any Pokemon game. I found the point to check out Shoddy Battle to be really interesting. After all, did the world really need two open source Pokemon simulators? Isn't he real fruit of open source collaborative software that turns out better than a fractured developers doing their own things? Still, the idea of leaving OPENPKMN saddened me quite a bit. In many ways, compared to Shoddy Battle, OPENPKMN was a turd, but it was my turd, and I liked how it smelled. So I wrote up how I felt, yes, I would check out Shoddy Battle, but in the mean time, why not play some OPENPKMN. Yes it was a new and different program, but it was the most accessible classic battler that existed. Why not give it a shot?

The topic went wildly off course. People got all excited about the possibility about RBY in Shoddy 2 rather than the actuality of RBY in OPENPKMN. I returned after finals were over to try clear the air. I got a bit more aggressive in soliciting feedback and pointing people to the documentation. I was free from algorithms and I wanted my turd to sprout wings.

Things got a little better. One day I battled with someone other than Ilya. It was totally awesome. I had harvested the first fruits of my labor. I sent the user a private message of how thankful I was, but never got a reply back. I probably creeped the poor kid out. And I did get feedback. But there was something really unsatisfying about it. People wanted chat in the client. I thought setting up an IRC channel as a well-known place to coordinate battles would suffice. But that school of though had died when NetBattle was released with integrated chat. I mean don't get me wrong, I got some good feedback too. But the amount of battles remained low. I got pretty discouraged. OPENPKMN, combined with its documentation was usable. The issue was critical mass. If people were signing onto OPENPKMN, seeing no one to battle with, and immediately signing off, nothing would ever happen. I decided I needed to get OPENPKMN out of its backwater subforum and into the spotlight.

I sent a private message to a Smogon administrator. I made it clear that I thought the future of simulation was Shoddy Battle 2, but suggested either I run a server under a Smogon subdomain or they host an official OPENPKMN server. This would drive people to OPENPKMN while giving Smogon an official RBY battling simulator that was under active development by a community member who was attuned to the needs of the community. The idea was politely shot down, due to concerns about OPENPKMN's maturity and the need of people to maintain the server, with more advice to contact the Shoddy Battle developers.

I was discouraged, but hardly surprised. I understood the argument, but I felt that in some ways I had been blown off. How would assigning a subdomain to an OPENPKMN server and putting some Smogon staff in another IRC channel really hurt them? Why was the community content to wait on something when an immediate solution could be patched in and then scrapped when it no longer had purpose.

I mean part of this is the mentality surrounding Smogon. This is not me shitting on Smogon, because it's a good site. The real goal behind Smogon is to be the best at what is does. And it generally succeeds. Many other competitive Pokemon sites start strong, but die out. Due to an incredible ability to delegate and transfer power and what seems to be an amazing content management system, the site has operated at a high level for a sustained period of time. And that's something. And maybe that sort of reputation can't be compromised by associating with an RBY simulator with some warts. I personally disagree, but it's not my site. One of the reasons why Smogon was slow to transition to Shoddy to begin with was holding out for Competitor to get done.

So I took things underground. I've stopped caring if the server is in some indeterminate, unplayable state. In some ways, it's more fun. I get to fuck around with things without answering to anyone. I've been tinkering with a much improved client over my winter break. Maybe if OPENPKMN had gotten popular I'd be too busy triaging bugs and focusing on day-to-day maintenance to rip the client to shreds and put it back together. But at the same time it's unsatisfying. What has my time investment been for? Something that no one uses?

So my opinion of what to do with OPENPKMN changes with the wind. Some days I want to contact the Shoddy Battle people and ask where it would be most helpful for me to contribute. Other days I feel like it would feel like pure work to learn someone else's code base. Some days I think another attempt to drum up interest on 4chan would be worthwhile. Other days it just seems like stupid self-promotion. I've thought about formulating some research questions and having 20 battles with the handful of people who would be willing and testing things. If in a battle a user has a critical hit rate/move hit rate/secondary chance hit rate/full paralysis rate/average battle damage random number that is higher than expected for the given moves and Pokemon in a battle, how strongly does that correlate with them winning? With OPENPKMN, this should be doable with several SQL queries. Maybe if I posted something like that on Smogon people would see the utility. But who knows if the right people would see it?

Even I have mixed feelings on OPENPKMN. I like it. I spend a lot of time on it. I learn neat things because of it. A colleague of mine thinks for most people it takes about 10 years to 'get the bad code out of them'. I totally see that when I look at the history of OPENPKMN.

But I hate it. It's an addiction. It's something that I go to when I should be trying new things. And 'new things' is a broad term. Maybe I could focus more heavily on my graduate research, maybe I would learn something really neat by working on Shoddy Battle. Maybe without OPENPKMN, I'd be able to get bored and be forced to do other things like actually get the motivation learn how to play my guitar or to be more sociable. But maybe I'd just sit around and vegetate, but who knows? OPENPKMN is a time suck, and I have such bad self control that I can't easily pull myself away. OPENPKMN does not make me interesting as a person but to very small group of people. It's not something that's easy to talk about to groups or new people. It's not exciting to most anyone. And it's a lot of who I am.

And, to me, there's some unsettling pseudo-psychology about what OPENPKMN really is. It's a sad attempt to be a hero to be a community of strangers where I see no other avenues of get established and fitting in. Couldn't the same thing be said about me offering to run the Marble Palace server? Social interaction on the internet is worse for me than normal in-person social interaction. When I know no one, I feel lost. I need to use others that I know better as a way to develop my personality to others. Either that or I need I need someone to sort of continually interact with me to establish a level of comfort. An internet message board does not have a notion of neighbors or roommates or classmates to force the latter. Yeah I have things to work on.

So what do I do? I'm not sure. Will this semester bombard me with enough work to make duality of my feelings on OPENPKMN moot? Do I make a clean break, keep trying, or what? Has the Pokemon community passed OPENPKMN by? Does it need that random big break? Is it just another Supertime Radio? At this point it's all unclear.

* Azure Heights still exists! The site is basically the same it was in late 2001, with the forum receiving the occasional post in the random discussion board. More amazingly still is that Azure's PBS is still up, still very much a living museum of early online Pokemon battling.
* There's still an old copy of Marble Palace living on. This one sprouted up when one of the administrators got broadband and could host it, but was made defunct with the purchase of real web hosting. Now it lives on frozen in time. I've recently seen an old MP admin lurking at Smogon, but he has not returned my messages. Hey fuck you, N-Man! (I kid, I kid, please get in touch with me if you see this!)
* I don't think anyone runs the gsbots anymore. But you can find a site about it in the internet archive.
* NetBattle has a community associated with it and a development site.
* Smogon is as alive as ever.
* Work on Shoddy Battle 2 seems to be progressing. I mean I could (as could anyone) easily check out the source and take a look.
* Last but not least, tell all your friends about OPENPKMN!

And that's my story.

09 January 2010

Pokemon Simulation and Me (and You) Pt. 4

Part 1
Part 2
Part 3

Work on OPENPKMN became somewhat feast or famine. During my semesters, I largely ignored it, swamped with classwork. Then during my winter and summer breaks, I would break it out and start some pretty hardcore development. And this would be after programming all day at work. I wish I could be more descriptive, but really all of 2007 in terms of OPENPKMN development was pretty light on permanent records. One thing I did do pretty early in the year was rewrite the battle engine from the ground up. I basically did not allow myself to copy any code from the old engine. The result was actually pretty nice! Not everything turned out that great though. After taking a class on network security, I developed a rather elaborate authentication scheme which was based on Kerberos. It was overly ambitious and totally unnecessary, and all my work that was sunk into it was scrapped.

Meanwhile Smogon was chugging along, truly an unmitigated success. It was rapidly collecting users rapidly and was developing quite a reputation as the preeminent competitive Pokemon site. With work focused largely on improving site, Competitor was nowhere in sight, however. Then, in the summer of 2007, the landscape of online battling was changed again. A new battling client called Shoddy Battle came out.

What was the significance of Shoddy Battle? I'm going to start on things that I fully understand. For one it was open source. It was also written in Java, which meant it wasn't Windows-only like Netbattle. Now it's important to note that in many ways the world of Pokemon had passed me by. I only actually owned the first, second, and third generation of Pokemon games. I only played the first and second generations of games to completion. I only battled with the first generation mechanics online. I think Shoddy Battle had support for the fourth generation of games when NetBattle's support was somewhat lousy. But don't quote me on that. In any event, uptake of Shoddy was slow at first, particularly at Smogon where people were holding out on Competitor. Then NetBattle seemed to start crumbling. I think the domain lapsed and development from the core team slowed down. The version number seemed stuck at .96, but maybe there were patches. I couldn't use the thing anyways. So really I don't know. In any case, Shoddy became the big man on campus sometime in 2008.

I found Shoddy Battle to be an interesting, but not profound, development. Another open source Pokemon simulator! But in any event, it only supported the latest games, which I didn't know shit about, so I didn't really give it much thought. So in my mind OPENPKMN still had a reason to live.

In late January of 2008, I set up an SVN account on Source Forge and started pushing OPENPKMN updates out to there. After a few updates, I took nearly a year break from publishing anything. I'm not sure why that happened. I worked on it some that summer, but there are no commits until late December 2008.

Basically all of 2007 and 2008 were pretty undistinguished, but a lot got done. While to the end user it would look like a lot changed between now and then, late 2008 OPENPKMN was structurally very similar to the OPENPKMN that exists today. The battle engine is essentially the same. There were the skeletal beginnings of encryption and extensive logging of battle data in a database. Even the Java based-client, which looks radically different, came into existence during this era. So, really, a lot happened, but it wasn't exciting stuff. No egregious glitches. No terribly poor coding decisions. A lot of forward progress. But everything was happening in the dark.


06 January 2010

Pokemon Simulation and Me (and You) Pt. 3

Part 1
Part 2

While my interest in OPENPKMN was at an all time high, my interest in the Pokemon community was at an all time low. My first semester, I don't think I went to any Pokemon site once. I didn't think I did my second semester either, but some OPENPKMN code from the era contains a Smogon link, so I definitely swung by at some point. In any case, I largely tuned out from that scene and lost contact with the people from Marble Palace that I knew the best.

It turns out, I missed something really huge. Remember NetBattle, which had the word "cesspool" associated with its user base? Well, few things remain downtrodden forever. By some combination of the development of a competent NetBattle user base, people from the IRC battling bots migrating to NetBattle, and the seeming constant power struggles that the bots seemed plagued with, a large, mixed community had settled in at Smogon which had transitioned from laid-back shit-shooting to attempting to become the preeminent competitive Pokemon battle site for English speakers (and shed its Nazi Koffings in the process). Or so I surmise. Remember I wasn't there at the time. (Unfortunately, another thing that I missed was basically the golden age of non-English-speaking people trying to speak English in the NetBattle chat, with hilarious results. If you've ever heard me reference "chariots of barn" or "the mother of chaos's mother making sex with three mans oh no" this era was responsible for these.)

Meanwhile, how was I doing? It was becoming readily apparent by the end of the semester that OPENPKMN was a mess. Certain classes of moves never seemed to work right (trapping moves were particularly notorious, leading to "Fix Wrap!" becoming a constant rejoinder to basically any OPENPKMN bug). Attempting to fix something would almost certainly cause something else to break. OPENPKMN was dirty. It was designed to be efficient in both code and data. A lot of variables got reused in certain battling conditions that seemed similar, but it turns out were quite different. There was a lot of fruitless hacking. Furthermore, the system was not partitioned into logical chunks at all. Code that did low level reads from the disk were interspersed with code that created the user interface. This was anathema to any sort of organized system design.

Then, to some extent, I found religion. I got a summer internship at a very small company that made a networking stack for embedded systems. They had this big massive C codebase, that (obviously) dwarfed OPENPKMN, yet it seemed perfectly maintainable. My boss told me I had to split my lines of code at 80 characters. I was most likely responsible for the company sending out a mass email with the programming style conventions of the company. I saw a lot of clean code. By the end of the summer, I realized that something needed to happen with OPENPKMN.

But by then I had no time. The semester was in full swing and my life essentially became my operating systems class. And actually that may have been a good thing. It gave some time for the ideas I picked up from my job to really sink in and marinate in my mind. It gave me the opportunity to play with sockets a little. Meanwhile, though, I had been going on Pokemon sites a little bit more frequently. My crazy freshman life had died down some, and to some extent the internet reentered my life. One day during the first semester of my sophomore year the founder of Smogon (who is known as chaos, and who you may remember from the former parenthetical remark regarding the promiscuity of his grandmother) made a topic seeking out programmers for the sites battling simulator project, Competitor. I couldn't commit to it, but I did provide a link to my existing code in hopes that it could be of some use (and with a warning about it's current state). Competitor never came to be (more on that later), and I sincerely none of that OPENPKMN code was responsible for that. I hope they saw it for what it is was, because it was that bad.


04 January 2010

Pokemon Simulation and Me (and You) Pt. 2

Part 1.

Meanwhile, in the world of online Pokemon, more change was afoot. In mid-2002 a simulator known as NetBattle came out. It was a bit of a departure from the web-based PBS and the IRC based gsbot, This thing was an honest to god visual basic application with what appeared to be considerably more polished than anything the wide world of online Pokemon had seen. And in addition, this whole dog and pony show had a built in chat client.

So now we had forums, IRC chat, and chatting over NetBattle. Was the community at risk of being spread too thin? Well, not immediately, as NetBattle seemed slow to win the hearts and minds of the old school competitive Pokemon crowd. For many years NetBattle was derided as a cesspool of low skill players.

Meanwhile, Marble Palace suffered through several hosting changes, and by the time I was finishing up high school apathy was taking a definite toll on the community. One day, sometime in mid to late 2004, one of the main admins posted a topic that said something along the lines of "this is a good pokemon site" and had a link to a place called Smogon. I think it's fair to say that at that point Marble Palace was essentially through. Major bummer.

But what was Smogon? In those days it was a bunch of the 'IRC crowd' starting a discussion board to shoot the shit. (It was also delightfully politically incorrectly festooned with Koffings that had the poison symbol replaced with a swastika, Smogon being the German name for Koffing, of course.) But if Marble Palace was dying and the fine people of Marble Palace were to move on to Smogon, who was I to protest. Remember that I had been born into and raised on the "your message board is your nation" archetype, so Smogon was for all intents and purposes my "new home" lest I become a stateless person.

Soon this all became moot, because I was heading to college. And this marked the beginning of a transition in my life. Pokemon was not this thing to be hidden on the internet. Pokemon Stadium matches would break out left and right in my dorm room. And my fervor about my simulator was at an all time high.

Now you're probably asking yourself, "why?". From when I started programming my simulator, two full-featured simulators, ones that simulated the newest Pokemon games rather than just the classics that I focused on had come out. Meanwhile I couldn't even get something running. Why the heck was I even trying?

For one, I saw neither simulator as adequate. NetBattle only ran on Windows. And we already know how I felt about gsbot. I was high on the idea of doing computer science academically and thought being surrounded by computer scientists would invigorate my drive to program. Plus, I had rethought my simulator as an open source project that would bring the ability to create any sort of Pokemon-like game to the masses. I christened it OPENPKMN.

And thanks to a load of determination, a long winter break, and a general sense of despondence with my social scene during my second semester, in March of 2006, the first OPENPKMN battles were played. To put it nicely, they were rough. How did one play OPENPKMN? You had to ssh into a server (all the interprocess communication was named pipes rather than sockets), run a process colorfully known as pokedump to generate your Pokemon, and then run another process specifying your team, your name, and your opponent's name (which, ostensibly, you'd know in advance). Then you'd pray it would work. When it crashed it would do wonderful things like a change a Pokemon's status from something reasonable like sleep, or paralyzed to something as illogical as "BELLSPROUT", or randomly pull the string "Linux" out of nowhere and assign it to level 137 Wartortle, or allow you to send out unkillable level 0 Bulbasaurs under basically any circumstances. Never mind the fact that there were some pretty egregious problems with some of the game mechanics. All in all, what had four years gotten me? Something less usable and only slightly beyond the feature level of 1999's PBS. But it was something!

My roommate Ilya, OPENPKMN's second biggest fan, was very instrumental in testing it and exposing some of its more egregious bugs. During a flowchart phase, he created this gem. It's brutally accurate.


03 January 2010

Pokemon Simulation and Me (and You)

A long time ago, the Laquidara family broke away from the shackles of pay by the minute America Online and got broadband. This marked the beginning of me being truly being on the internet (I'm a little embarrassed to admit that in the dialup days, I would basically spend my limited internet time on the Apple website, lusting over computers I couldn't afford).

What was I doing at the time? Playing Pokemon of course. Who wasn't in the glory days of early 2000. At least I think that's true, but my timeframe could be seriously messed up. Anyway I think one day in the summer of 2000 I was looking for Nintendo 64 ROMS, (a fruitless task, emulating the N64 on the hardware of that day was pretty dicey), and somehow I stumbled on the online Pokemon community.

"The what?", you may be thinking (alternatively "You're fucking yanking my chain!").

Well it turns out, largely unbeknownst to me, people were using the internet to do something as crazy as to congregate with peers with similar interests. I know, right? There was more to this internet thing than reading about the G4 Cube or the iMac DV Special Edition. And these Pokemoners were fucking smart. Through collaboration on Usenet and message boards, they'd made incredible observations about the game: they had many of the formulas nearly figured out, they had strategies that seemed so extremely clever when you saw them, but I wouldn't have thought of in a millions years, but the coup de grace was that they had an online simulator of Pokemon battles. Pokemon was released in the US in September of 98 and, in under two years, through largely clean room reverse engineering, the mechanics of the game were well-enough understood to write a simulator and someone actually did it. This is really impressive to me!

So now I'm going to qualify this a little. The simulator that was written, known then and until the end of time as the Pokemon Battle Simulator or PBS, was buggy and incomplete. I don't want to take anything away from the guy that wrote it (I'm, quite frankly, in no position to, as you'll later find out), but the coding was, legend has it, fairly horrendous. These legends indicate that no functions were used whatsoever. (Or perhaps functions were used, but there was no argument passing. There's some dispute regarding this, and while I did have the source code for a brief period of time, I didn't really feel the need to examine this at the time.) But in spite of this qualification, I still think it's an impressive thing.

Coincidently, another thing I was into at the time was programming. What this means is I had the Kernighan and Ritchie C Book, had started reading it and stalled out at functions (my 13 year old mind did not see the utility and found parameter passing extremely confusing), and was going to a computer-oriented summer camp. In my mind this made me the ideal person to write a successor to the PBS. And I actually started work on it. Boring, tedious, awful work on formatting information on every Pokemon and move in the game. Once that was done, I started writing some code to handle real basic stuff, like creating Pokemon from the command line. Remember that I had no idea how to use functions. I got about five layers of conditional statements deep and found it unmaintainable. (A little sidebar, primarily for anyone who's a bit familiar with Pokemon, part of this work was decomposing each move into a primary damage value, a secondary effect, a move usage parameter, and an accuracy value, which essentially allows the creation of arbitrary moves based on the recombinations of these components. It sort of baffles me that I had the foresight to design a system were I did not need to create discrete code for each move but could not understand functions!)

So with that initial push out of the way, we return to the Pokemon community, namely a message board called Azure Heights, which was among the first sites I stumbled upon in my encounter with the Pokemon community. Remember those smart people reverse engineered so much about the game? Well if you were looking for them, you probably would find them at Azure Heights. That was awfully intimidating to me. So as I'm wont to do in real social situations, I spend a lot of time observing (on the internet this is known as lurking, in real life it's known as being the weird kid sitting in the corner a the sophomore ring dance). It took me nearly a year to have the cojones to register an account and start making posts on their message board.

And when I did it was anticlimactic, because I was just another face in a the crowd. I was neither butt-stupid nor particularly insightful. But Azure Heights was hardly the only gig in town. Remember this is the roaring pre-tech-bubble-burst days. You wanted free web space with no ads and the ability to run basically any type of CGI you wanted? You went to f2s.net and you fucking had it. So I shopped around and, some time in late 2001, joined a message board called Pokemon Daily, which was sort of in a decline. In a smaller pond, I got noticed a little bit more.

And soon something really significant happened. PokeDaily's decline really accelerated. The database for the message board got corrupted and f2s announced that their free service was ending. The subset of the site staff who still seemed concerned about the message board, in an act of protest towards the seemingly absentee staff who appeared to have left future site in jeopardy set up a new Pokemon Daily and started a grassroots effort to recruit new site staff. Then, back came the old guard to the new PokeDaily, stripping the young blood of their new positions. Long story short, factions formed, a new site called Marble Palace was started, I offered to host it on a 486 I was using as NAT router, got fucked over by port 80 blocking, had no idea what was going on, declared defeat, and ended up site staff at Marble Palace anyway. I was a part of something, however small or trivial or even embarrassing, and honestly, that felt pretty good. So my interest in my aborted simulator was very much reignited.

In truth and retrospect, the fall of PokeDaily and the rise of Marble Palace was not of extremely great significance (even on the minuscule scale of online Pokemon!), because things had shifted. In the olden days, one typically felt an allegiance with at least one major message board. Now, IRC was the place to be. Pokemon Gold and Silver were the state of the art, and the simulator to play them was an IRC bot (the original gsbot and its various progeny). So if you battled on IRC, why not just chat on IRC? The archetype of Pokemon message board as a notion of "nationality" was very much deemphasized.

Marble Palace wanted to buck that trend and no one wanted to help more than I did. In my mind IRC was a scary place where millions of conversations were occurring at once and you had to rush what you wanted to say, and say if in the process of keeping up you fucked up: you'd never live that down. Marble Palace had a couple of good years, as I fruitlessly worked to build the simulator that would now had the dual aims of saving the Pokemon playing world from the bugginess of the PBS and the "terrifying" gsbot. (Some IRC notes: being involved with Marble Palace did eventually break my fear of IRC, but I remained terrified of both gsbot and the large channel that it was run from. Thus I never played beyond the original generation games competitively. So basically it's fairly accurate to say my fear of IRC turned me into the future-hating Pokemon curmudgeon I am today.)

But honestly, High School me was a lousy programmer. Yeah I figured out functions. Yeah I eventually coerced my mind to understand pointers. But along the way I made so many bad decisions. Writing massive amounts of the system in shell scripts. Eventually rewriting them in C, but not having the good sense to do such basic things as put line breaks in reasonable places or not create massive conditional statements whose clauses stretched over four unbroken lines full screen at a fairly high resolutions. Adding to the issue was the fact that I worked my ass off in high school. I feel like a lot of people realize that they can do ok slacking off in high school. I never got that memo, or I was just wasn't smart or ballsy enough to pull it off. So working on my simulator was largely limited to Christmas and summer breaks.