I hate being broke

Well, I’ve been putting it off all month but… my Sharp Zaurus SL-5500 Linux PDA is now on eBay so I can pay this month’s rent. I bought it a few years ago from Staples. The guy that sold it to me was really cute, and he was all like “You know it runs linux, right?” and I’m all like “yeah.”. Of course, Staples no longer sells PDAs, so I wonder what happened to the cute guy that used to be behind the counter. Perhaps he’s unemployed like me.

Anyway, it’s been really fun. Because it runs Linux, there are so many things it could do. Something about knowing I could have a wifi webserver in my pocket was just really cool.

Anyway, I hope someone buys it. eBay charged me $3.50 to list it, which they’ll take from my credit card at an undisclosed time. With my luck, this will be after interest has accrued for the month, pushing me over my limit, and giving me a nice $30 over limit fee. yay. <sarcasm>I bet my credit report is in amazing shape now</sarcasm>

-Sam

Allez Cuisine!

Fuki-san: With one last final to go, this looks like it should be an exciting event! Now entering GITC-1400 stadium, it’s the Iron Coder: Sam Steele! Sam is 19 years old and comes from the city of Newark. Now lets have a look at our challenger: an IT201 Final exam! Not much is known about this exam yet, it has been top secret until now! One man! One Exam! The HEAT will be ON!!

Fuki-san: Now entering GITC-1400 stadium, it’s the Chairman Marc Sequeria!

Chariman: [japanese text, not subtitled]

Fuki-san: With us today, we have Japanese pop-star AnnoyingGirl, food export Dr. KnowItAll, and japanese fortune teller I.C.Future.

KnowItAll: Greetings. It’s a pleasure to be here today. You know, back in some time period noone’s heard of, the ancient japanese used to take exams, too.

AnnoyingGirl: That’s so interesting! I’ve never been so interested! Tee Hee!

Chairman: ALLEZ CUISINE!!!!!

Fuki-san: The chairman is now handing out the exams, and … what’s this? Ohta, can we get a close up on what he’s handing out?

Ohta: Yes Fuki-san! He appears to be handing out a traditional NJIT essay booklet.

AnnoyingGirl: Ah…

KnowItAll: That’s right, no multiple choice here! ha ha ha. I’ve seen this type of booklet before, he’s probably going to have to write an essay, or maaaaybe… short answer?

AnnoyingGIrl: Short answer?

KnowItAll: Right. Fill-in-the-blank.

AnnoyingGirl: Oh! I get it now. Tee Hee.

Fuki-san: Ohta, can you get a comment from Sam before the exam starts?

Ohta: Sure. Sam, how do you think you’ll do on this exam?

Sam: Who are you, and what are you saying? I dont understand japanese! Where’s the translater lady? Aren’t these exams supposed to be quiet and closed?

Fuki-san: Alright, Sequeira-san is now handing out the exam sheets. Yes! It looks to be both short answer and fill in the blank.

Fortune: You were right!

KnowItAll: Yes. No essay though. ha ha ha.

Fuki-san: What’s this the Iron Coder is pulling out of his pocket?

Fortune: It looks like a wooden stick?

KnowItAll: That’s a writing implement, known as a pencil. These are commonly used to take ScanTron tests, as well as essays and other sorts of exams.

Ohta: You’re right, the Iron Coder has just taken out a Number Two Pencil.

AnnoyingGIrl: Ahh.. number two! So exciting!

Fuki-san: He appears to be.. yes! He’s filling in the answers!

Fortune: He sure knows his stuff.

AnnoyingGirl: Is he hesitating?

KnowItAll: No, I think he’s just concentrating hard.

Fuki-san: He appears to have turned the pencil upside down, and is rubbing it vigerously across the page! I’ve never seen such a technique!

Ohta: Yes, he appears to have misspelled a word, and is erasing the mistake from the page

AnnoyingGirl: Ahh

KnowItAll: You know, erasers are made of rubber.

AnnoyingGirl: That’s so interesting! Tee Hee!

*Female announcer* 5 minutes to go!

Fuki-san: With five minutes left, how do you think he’ll do? Will he finish on time? Let’s find out!

AnnoyingGirl: I hope he’s doing ok, I’m so excitited! Tee Hee!

KnowItAll: Yes, he appears to be on the final problem.

*Female announcer* 5 seconds! 3! 2! 1! *gong*

Fuki-san: That’s it! The time is up! The IT201 final exam is OVER!!!!

Ohta: Sam, how do you think you did?

Sam: Well, I think I did ok.

Ohta: So, you did your best?

Sam: I did my best.

Is it over yet?

3 more finals to go! I finished my IT201 final project today, it’s a silly little Flash presentation about a fake company. You can view the flash presentation here. I’m probably gonna take my online MIS final tonight, since I have 2 in-class finals tomorrow, and then it’s winter break time!!!!!

DDR Bass! DDR Bass!

All your bass are belong to DDR Solo – Bass Mix. We took Brian to Jersey Gardens so he could go christmas shopping, on the condition that he let us stop by the arcade to play DDR. The arcade has a machine called “DDR Solo – Bass Mix” which has corner arrows along with the regular 4 panels, making it a lot harder. Anyway, I finally passed a non-stop megamix, and got this really neat online score password thing:

I love my camera phone 🙂 Anyway, as we were about to leave, I noticed Jay still had 1 song to go, and it had superstar! I failed after like 2 seconds because I suck at hitting the diagonal panels, but it was fun, and I love that song.

Also, I got bored of doing my final project for IT-201 in Flash, so I made this little animation for Jay. Noone else will get the joke, but it was fun. Anyway, I guess I should get back to this project..

-Sam

Welcome to Newark

Ok, so I don’t know if this is funny or sad, or just Newark. I’m staring out the window of my apartment, when an Ambulance (or some other vehicle with sirens and lights, my glasses weren’t on) comes up to the gate to enter the parking lot. But the guard wasn’t around to let it in. So it’s sitting there, lights flashing, making funny siren noises for at least a minute or two, trying to get the attention of someone to open the gate. It’s not like there was noone out there, either. i saw plenty of people walking around out there, just noone cared enough to let the vehicle in. I’m glad to know that if I suffer some horrible accident, the ambulance will have to spend several minutes sitting outside the parking lot instead of helping me. Welcome to Newark.

-Sam

gobble gobble

Happy day after turkey day.

LEFTOVERS!!!!!!!!!!!!!!!!!!!!!!!1111

-Sam

Let’s Dee Dee ARRR!!!

ok, so FedEx brought us an extra-special present today, our no-solder PS2 mod chip! It’s pretty neat, we just pop in the Magic Swap 2.0 disc, wait for it to say “Insert Disc”, hold down the eject button and throw in DDR Extreme and push X!

Jay and I have been playing DDR Extreme all day. It doesn’t have as many songs as the Arcade version, but it still has a lot! It also has the cutest backgrounds ever! The dancing cactuses and the latin guys with the maraccas just crack me up!

Anyway, it doesn’t work with Playstation 1 games, so next time at home I’m gonna grab my GameShark so we can do the PS1 swap trick. Maybe at some point we’ll get a real mod chip for the PS1 too, but since we’re all poor this solution works for now 🙂

-Sam

Would you like fries with that?

Ok, so my roommate Rich brought home a ton of frozen hamburgers today. Apparently, since we live in an apartment, we can’t just fire up a grill — the smoke detectors see to that. So i had my first experience with cooking a burger in a frying pan. I now know that you’re not supposed to spray the pan with oil for this, because it splatters everywhere and burns you. It would be nice if there was some kind of warning about that on the packaging, but there isn’t.

So after I’m done cooking my burger, and my arm, I lift this thing out of the pan. It is literally DRIPPING with grease. Note to self: don’t oil the pan first next time, non-stick means non-stick! Mmm, less healthy than a fast food burger, with twice the wait! So i wrap the burger in a paper towel to absob some of the oh-so-unhealthy grease and start assembling my burger. I’ve been living off bologna, ramen, and cereal for the past few months, so I totally forgot about the whole shaking the mustard before you squeeze it concept… first squeeze, i get a BLAST of liquid all over my burger, followed by a few spurts of mustard. Yuck. At least I didn’t make the same mistake with the ketchup.

All things considered, it was a pretty good burger. We don’t have any lettuce, or tomato, or onion, because jay doesn’t believe in vegetables, but we did have american cheese to top it off with. Tasted pretty good. #1 item on christmas wish list: george foreman grill.

Perhaps I’ll stick to the microwavable, racecar-shaped chicken “fun” nuggets we picked up in the store today.

-Sam

Sam Steele: Origins

Hi Journal!
(high pitched voice)Hi Sam!(/high pitched voice)
Woah. That was weird. I don’t even have my speakers on… and why does my imagination speak with HTML tags, anyway?

So, if I gonna start using this thing, I suppose I should get used to the interface. Today has been pretty uneventful, so we’re going to take a little trip through memory lane together. I’m hoping this will allow me to become comfortable with the GNOME LiveJournal client’s UI, as well as with myself, and you all, too.

Lets start out with a little bit about myself. I’m a 20 year old computer geek living in an apartment in Newark with my friends Jay and Rich. We all go to NJIT, which is about 3 blocks away. I originally met jay on PlanetOut, but that’s the focus for another story.

Today I want to share my geeky side. I never really thought of myself as a “geek” until recently. In fact, I remember back in 1999 my friend Charley invited me to join “geekdom”, and I turned him down. I have, however, always been fascinated by computers. I’ve been a computer programmer since I was like 3, but I was never part of the whole geek culture. I never played DnD, never read books, only used MS-DOS and Windows, and only programmed in BASIC.

BASIC.. that brings me back. Beginners All-Purpose Symbolic Instruction Code. Top-down program design (who uses GOSUB/RETURN anyway?), interpreted, and a memory limit of anywhere from 8kb to 64kb, depending on your system and interpreter.

My first experiences with BASIC were with GW-BASIC and QBasic on my dad’s IBM XT. All I really did was play around with CIRCLE and LINE, but it was an amazing experience. Here I was, telling the computer what I wanted it to do, and it did it! And it was graphical. Unlike what college tries to teach us, programming is art, not science. I don’t care what formula is used when I say LINE (3,3)-(5,5), I just know that it draws a white line.

Sadly, in 1992, my parents divorced, and my mom moved us to the USA. Without a computer. After a few months, she bought us an old IBM XT from a yard sale. It had MS-DOS 3.0, with a 10MB harddrive, and a double-density (360K) 5.25″ floppy drive. Programming on that just didn’t feel right though. It was on a desk in our basement, where it was cold, and dark, and it smelled funny. Eventually, our babysitter let us borrow her son’s old Commodore 64.

I WAS IN HEAVEN!!!!!111

The Commodore 64 is the most fun, amazing, warm, fuzzy, bestest in the world computer I’ve ever had the pleasure of programming with. The interface has a calming blue color scheme, and it greets you with the following, exciting message:

*** COMMODORE 64 BASIC V2 ***

64K RAM SYSTEM 38911 BASIC BYTES FREE

READY.

READY it says. READY for me to type something, to command it, to make it do something exciting! And exciting stuff I did! The Commodore’s keyboard is especially powerful. When programming on a PC, if I want to change colors, I need to issue a COLOR command. With the Commodore, I simply push the Commodore key + 2, which is clearly labled on the keyboard as “RED”. Right in the middle of my print statement, I could change colors, move the cursor, clear the screen, and all kinds of things! The commodore also had a whopping 16 colors, which was amazing compared to the 4 colors my CGA adapter could produce in the IBM XT.

Another amazing feature of the C64 was its hardware sprite system. By age 10 or so, I knew binary, simply because the manual had one little example of a grid, filled in with dots, with the numbers “2 4 8 16 32” at the top. They told you that if a dot was black, you added the value, and put the sum at the end of the line. At the time, I didn’t know how those went into RAM and were displayed on the screen, but I knew that, if I added up the dots, and POKEd them into memory, my pretty picture would appear. And because it was a sprite, I could move it! And it would automatically check for collisions! Now that was fun, but I didn’t like to do math. My C64 came with a disk labeled “Commodore C64 Disk Bonus Pack”, which included a sprite editor that let me visually draw a sprite, which was much more useful and fun.

By now, it’s 1995 – 1996. I’ve been using the Commodore, as well as the XT, for about 3 years. I’m in the Melvin H. Kreps middle school in East Windsor, NJ. I’ve been selected for a “new program” for “special” students who weren’t doing so well in classes. I did very poorly in 6th grade, didn’t do homework, had a lot of emotional problems, etc. So in 7th grade, they put me and my friend Shariq into the Kreps Acadamy, which was an alternative learning experience taught by Mr. Schreiber and Mrs. Hill. Mrs. Hill was an 8th grade history teacher, and she came to our room every day to teach history only. The rest was done by Mr. Schreiber. He was an amazing person, he was one of the “cool” teachers that rode a motorcycle and all that, but he was also a computer geek! We were given a lot of freedom in the kreps academy, and we had a lot of time to ourselves. He brought in his 386 computer with a VGA adapter for us to play with. It had MS-DOS 6.22 with Windows 3.11 for Workgroups. It was nice, but it was no Commodore. So I told him I was interested in programming, and that I had a commodore at home, and he said I could bring it in! So here I was, in school, being allowed to program in my free time on the platform I loved! This is when I started my first real project: EZ-Commodore. EZ-Commodore was a point-and-click based application launcher for the Commodore. It used a hardware sprite for the mouse, a cute little arrow I drew myself in the sprite editor. The rest of the display was made up of text, using the Commodore’s large amount of “graphical” characters that put the IBM ASCII character set to shame.

Sadly, I hit a wall. My program used too much memory for the poor Commodore’s 64KB of RAM. Both the tokenized program, as well as all my RAM requirements, had to fit into 64KB, and sadly my source was too big, and my RAM usage was too high, so eventually the Commodore overwrote my program with my variable data, and all was lost.

This is when I moved to Mr. Schreiber’s 386. I took the same concepts, and put together EZ-IBM, which was a TUI (Text user interface) menu system. It used the PC’s arrow keys to move a pointer around, which was simply a big yellow block. It wasn’t as pretty as the arrow I got to make for the Commodore, but it was functional. This was also the days before Windows 95 took off, and alternative user interfaces, such as Microsoft Bob, were the “next big thing”. I remember seeing an interface that used “houses” and “buildings” to represent things. I thought this was a really neat idea, and I designed a system that had ASCII-art buildings and “rooms” that you could “click” on things using my yellow, arrow-key controlled blocky cursor. It was called “SamWorld”, and I viewed it as my entire universe in which I could create anything I wanted, just by coding it. It had hand-coded animations. When you “clicked” (ok fine, pushed the space bar…) on a door, it would animate opening. It was fun. It was functional. It was art. The “rooms” were designed using a tool called ANSIPaint, which I got off my friend Aaron’s shareware disks. To this day, I’ve never been so comfortable with a drawing program. It was so simple and easy to use, yet so powerful. It allowed you to “draw” in ASCII, allowed you to pick colors (all 16 of them!), and included tools for line drawing, flood filling, and copy / pasteing sections.

In 8th grade, my friend Shariq introduced me to ZZT. ZZT is an ASCII Game Creation System. It was like ANSIPaint, but in a game! It allowed you to create objects, and it even included an object-oriented scripting engine. This was my first experience with a non-BASIC language besides LOGO, and my first experience with Object Oriented Programming. Instead of top-down, I was now thinking about message passing and events! ZZT was fun, but I was more interested in QBasic.

In the summer between 7th and 8th grade, I had my first experience with “the internet”. The Mercer County Library System had a BBS that allowed access to their library catalog, as well as the text-based browser, Lynx. I used this to visit qbasic.com, and downloaded a program called “chat.bas”. This program was a fake AI, which used a bunch of IF statements to reply to what the user typed. I was dazzled by this! I decided I had to create my own! And thus, CHIP was born. Computerised Human Interface Program. Now, whenever someone asks me why I used to use the nickname Chip, I’ll just send them here. I always say, “It’s a long story”, and it is. How many pages have I written so far? Anyway, CHIP was fun, but he wasn’t useful. I’d say “hi”, he’d say “hi” back, it was a thing we had… anyway, it was time CHIP earned a living, so I designed an “office secretary” based on him. He was later named Nexus by my friend TJ, a certified geek. Nexus was multiuser, he could leave “memos” for other users to read later, he could do math, and he had a simple natural-language based knowledge storage / retrieval system. He could also print text files, including memos, if you had a printer. Nexus had a graphical (well, ASCII) “creature” that would blink and move around and just be cute while he did his secretary work. The graphic I used was originally taken from a TRS-80 BASIC book, but I redrew him a little nicer, and adapted him to the PC’s display.

Ah, time for highschool. When I graduated 8th grade (they make a big thing about this in my school district), my mom bought us a “real” PC. It was an AMD-K5 PR75 that ran at 133mhz. We got ripped off big time, but it was a computer, and it had VGA! I decided it was finally time to revive EZ-Commodore in a form that would do it justice. I wrote up some library functions that immitated the Windows 95 GUI, with buttons and title bars. EZ-IBM became a graphical file manager, complete with icons. However, I again hit a wall. Because QBasic is a DOS application, it only has access to 64KB. While this is much more than the Commodore’s 32KB of BASIC RAM, it is still pretty limited. After loading all the icons and graphics, there wasn’t much room left in memory to load in a directory, and if you had too many files, it would run out of RAM and crash.

Around this time, my I convinced my parents to sign up for AOL, and I ran into a chat program called mIRC. Ahhh… so many hours I’ve wasted chatting on IRC… there, I met my friend Bill, who introduced me to “bots” on IRC. They were like Chip, only they were on the internet, and could talk to more than one person at a time! I did a lot of work with mIRC script, but nothing really amazing. Bill is a year older than me, and decided he was going to NJIT Mt. Laurel, and he also convinced me to go. Sadly, Bill is homophobic, and after he found out I was gay, we kinda stopped talking. I miss him sometimes, he was a really cool guy.

I also met my friend Keinall, or Granitor as his IRC handle was. Keinall was also a C64 fan, and in 1999, we decided we would recreate the Commodore experience on modern hardware, which didn’t have the same charm to it. And thus, project C99 was born. C99 for Commodore 99. Now when someone asks why I use the name “c99”, they’ll no longer have to hear “it’s a long story”, they can read the story for themselves. For historical purposes, original C99 homepage is still available here. The C99 project started out in QBasic. Yep, a BASIC interpreter written in BASIC. It was silly, it was crazy, but it was functional, and it was art. It was saying, I see the strength and weaknesses in QBasic, and I’ll use them to create an environment I’m more comfortable in. C99 got many improvements, it was able to read images of C64 disks, and load C64 tokenized basic files. I soon grew tired of this project, though. It had no focus, no direction, and while it was pretty, it wasn’t as functional or as fun as I had hoped.

So, back to Nexus, mIRC, and my friend Eric Busto. Fed up with the weaknesses of mIRC’s scripting language, I was determined to write an IRC bot. This required me to learn a new language that had internet access, C! Eric helped me out a lot while learning C. He would help me solve problems, and teach me new methods of programming. I decided my first task would be to port C99 to C. The first stage of this involved writing a helper library to simulate the commands I was used to. PRINT, COLOR, LOCATE were all gone. I didn’t know about conio at the time, so I wrote my own that generated ANSI escape codes to manipulate the screen. This was the beginning of libc99, which will be discussed in a little bit. While I did succeed in writing an IRC bot in C, I never really managed to port the BASIC interpreter and integrate it well, and both projects disappeared.

Enter the Dreamcast. Christmas 1999 I got a Dreamcast, and summer of 2000 I got a cd burner, and the copy protection on the Dreamcast had been thwarted! Apparently, there’s a “feature” in the Dreamcast BIOS that will allow it to boot CD-Rs, and now that it was open, we could write software for it! Of course, the very first thing I did was port libc99 to the Dreamcast, using Dan Potter’s libdream. In fact, I still have a binary of C99 that simply executes a PRINT statement saying “See you in the next release!” or so. Finally, the Dreamcast was a system that brought back the spark and enjoyment I got from programming with the Commodore! I brought together all my past experiences, ZZT, SamWorld, libc99 into one little demo, where you controlled a little ASCII happy face that could walk around in a little world. I named this project DreamZZT, and was allowed to work on it for my AP C++ midterm and final. After I graduated highschool, I made the first public release of DreamZZT 1.0, and recieved a lot of requests to make it actually support ZZT files. After months of hacking, DreamZZT 2.0 was kind of functioning. It was poorly designed, and had a lot of “glue” between the DreamZZT 1.0 engine, and the stuff required for real ZZT. It was a mess. I got frustrated and gave it up. The DreamZZT website is available here.

My next project was DCBlap, which was a 3D pong game for the Dreamcast. It was the first time I had used OpenGL, graphical textures, and sound effects. DCBlap was a fun project, and I really wish I had more time to maintain it. Right now it has fallen into the “too messy to deal with” stage, and I’ve begun to get frustrated with it, too. The DCBlap page is located here.

So here we are today. I’ve been improving libc99 ever since it was first created, and I’ve begun work on a rewrite of DreamZZT. This new version is much cleaner, faster, and better. It runs on MS-DOS, Windows, linux, and of course, the Sega Dreamcast. There have not yet been any public releases of DreamZZT 3.0, and I’m sure I’ll be posting more about it relatively soon.

I’ve skipped over a lot of stuff, because I’ve become tired of writing, and Gil is playing DDR and I want to play too, so perhaps some time in the future I’ll decide it’s time to delve into the inner workings of my mind again and share it with you.