Sunday, February 27, 2005

That's a Wrap

So thats it! O_O
The end of three months holidays!
Melbourne Uni students start back again tomorrow (Monday Feb 28) so no more getting up at 12 (or later O_O) and going to bed at 4am (or later O_O). No more day-long programming sessions for me. Now I'm back at uni studying Software Engineering, the amount of time I am programming will be severely limited!

Seriously, really looking forward to going back. This year I have two programming subs (instead of one) and no physics, or electric circuits, so I am basically planning to enjoy the whole lot. I'm also really looking forward to seeing all my dear friends every day. I've been missing the insane games of Go Fish!

But it's also sad that my great work is, at this stage unfinished. These holidays, which I will always remember as "The Summer of Anatomy," I've been spending most of my time writing a tremendous 30-file MC++ character graphics library. You can see one of my earlier tests here. But despite the fact I didn't quite get this finished, I have done so so much, and learnt so so much, and have also done a hellava lot of other stuff too.

So here's my holiday list-of-acheivements. It's not a brag (well, not really :D), it's a feelgood list to prove that, for once, I didn't waste my holidays at all. It's in roughly chronological order.
Since November 2004, I've:

  • Got a blog, and managed to do a decent job at updating it.
  • Learnt two new languages: MC++ and C#.
  • Passed my first year of uni.
  • Turned nineteen, and at the same time...
  • Completed a game I've been working on for four years, Snorlack's Treasure.
  • Worked on upgrading Toria's website for her.
  • Been to numerous social events with the guys from uni. Thanks for organising it, everyone!
  • Managed to push my sleep times out to 4:30 AM on many nights over the past few months! O_O
  • Had a Merry Christmas with World of Warcraft, managing to become totally obsessed with the game for a month, then (even more impressively) having enough resolve to not resubscribe for the next month.
  • Read the entire Hitchhiker's Guide to the Galaxy trilogy-of-five, and loved every bit of it.
  • Spent two weeks researching and programming the Anatomy Smooth Skinning Test in C#, which confirmed that what I'm doing is working, and also forced me to make some crucial design changes for the master work.
  • Become involved in the Wikipedia community, making several key contributions and wasting away many a night.
  • Obtained and setup my new Summit Interactive Forums, which recieved a resounding three or so posts. (Damn, they don't even seem to exist any more! sif!)
  • Played dozens upon dozens of games of Warcraft III with my good friend and teammate Jeremy, getting some significant ownage done, reaching level 28, at at one point, being ranked (jointly) under 500 in Lordaeron.
  • Written a script for a 20-minute short film that may never be made - SuperDood II (The sequel to my award-winning 2003 media film, SuperDood). But had a great time doing it.
  • Had a hellava time reading about, designing, discussing, and implementing Esoteric Programming Languages with Tim and Andrew.
  • Spent several days learning about how to write HTML the correct way, and also the finer points of CSS. Thanks, Tim, for all your help on that.
  • Written a new version of my HTML templating program, SiteBuilder, in good ol' Visual Basic 6, making some significant improvements to the algorithm, the interface, and the resulting HTML.
  • Written a three-minute piece of music for my new secret game, which I am very proud of. Pity nobody will hear it for a year or more.
  • Begun writing a story - not a crappy little one, but a huge fantasy-comedy story. It's already twelve-thousand words, and has plenty of room for more!
  • Also written, in between games of Warcraft III, many a hilarious one-word-at-a-time story with Jeremy. Unfortunately they were lost as soon as the text scrolled off the screen.
  • Grown awfully sick of my parents telling me I've been sitting around doing nothing all holidays!
  • By some strange miracle, been accepted back into the Children's Performing Company of Australia (ie. Drama) for a third year, despite the fact that I am now nineteen. Well, it's too much fun to complain.
  • Written and received one thousand and forty-nine emails. (I counted :D) That doesn't include hotmail, spam mail, lyst mail or mail to myself. Phew. I've spent a LOT of time on email!!! Particularly backs-and-forths with Tim and Toria!
  • And last, but not least, written a great deal of a program (which I've been designing on-and-off for three years) which presently has 9738 lines of C++ and MC++ code, in thirty-four code files, which will be known as Anatomy. It is the third-largest and most definitely the most complex, advanced program I have ever written, and tops off one of the coolest summer's I've ever had.
  • And I didn't even have to leave my house (much!)

So, that's it! As I said, I think I had an extremely productive holiday, but now that it's over, I look forward to returning to uni. I might see you there!

Now... edit for the Simpsons quote!
Toria had a nice quote on her blog which relates to trying/failing:
(why does that make me think of try { ... } catch(.) { ... } ?)
"To try and fail is more a success than never trying at all"
But umm... although I don't agree with this (the following), I gotta quote Homer on this:
"I don't know Marge, trying is the first step towards failure."
- Homer Simpson

Wednesday, February 23, 2005

Timetable Nightmare

<rant>
Anyone who's survived a semester at Melbourne Uni will know what a nightmare the timetable system is. Timetables were opened for editing last night at midnight and there was such a tremendous flurry of users that the entire system went down in the first ten minutes and only blipped up intermittently (for a few seconds) until 2am, when everyone obviously gave up and went to bed.

Now I don't mind this... obviously the server is going to strain if its opened at midnight and everyone is in a hurry to get on and change their times before all the classes fill up. (See quote at bottom). (Although this idea in itself could use some work).

What I do mind, is when some stupid person or subject or computer somewhere decides it'll be fun to see what happens if we create an utterly immovable timeslot, and see what sorts of hell it unleashes on one's timetable when it blocks you from moving all sorts of other things around.

I'm referring to the subject 433253 - Algorithms and Data Structures, which has a one-hour prac. This prac has NINE, (count 'em) NINE different time slots. Pretty damn flexible. The only problem is, for some stupid reason, every single one of them is completely filled up. And has been since midnight. (Note: For outsiders, we don't "sign up" for classes, we are automatically assigned them and then have to change if we want to. So this problem ISN'T a result of being too slow to sign up.) Therefore, no matter what anybody wants or does, nobody can change or swap from their automatically-assigned one to another.

For me, this means I can't move a lecture stream into that position and will have to suffer a four-hour gap every monday. (Yay). I've emailed the damn alloc8 system but haven't got a response. And frankly I'm getting more pissed off with this system every time I use it. Its no wonder, when you read the date stamp:
Created:       2 November 1995
Last Modified: 15 July 2004
Yay. This thing almost predates the Internet. Stay tuned later this year when we celebrate its TENTH ANNIVERSARY! And hopefully its LAST. Stupid thing.
</rant>

"Attention, students. It's time once again to choose a gym class for the coming term, so let's all prove how adult we can be by filing to the gym in a calm and orderly manner... even though it's first-come, first-served, and the most popular sports fill up fast."
- Principal Seymour Skinner
(The school is then flooded by a wave of rioting students swarming their way to the gym)

Sunday, February 20, 2005

Thus spake the master programmer

Ahh, here I have stumbled upon a fine piece of literature, which every programmer should read hence. For there are those who seek to program for the benefit of the self, or for the benefit of others. There are those who are lost in the technical specifications, or such unnecessities as syntax. By the harsh confines of the schedule, and the budget. To them, I do not waste dignity.

He who is enlightened does not concern himself with such earthly matters. For I am enlightened by the Tao. I see the code before me, I let the code flow through me, and I let the code pour fourth from me. I program for no master, and I let the program show me where to go. I move from one program to another freely, for the Tao is above all of this.

Here I conquer space and time, but to the Tao, I am a humble servant. The program and I are one.
The Tao of Programming.

[I also recommend the other pages on this site, for they know their place well within the Tao.]
[On a related topic, this language knows it's order in the Ascension of all things.]

The Magician of the Ivory Tower brought his latest invention for the master programmer to examine. The magician wheeled a large black box into the master's office while the master waited in silence.

"This is an integrated, distributed, general-purpose workstation," began the magician, "ergonomically designed with a proprietary operating system, sixth generation languages, and multiple state of the art user interfaces. It took my assistants several hundred man years to construct. Is it not amazing."

The master raised his eyebrows slightly. "It is indeed amazing," he said.

"Corporate Headquarters has commanded," continued the magician, "that everyone use this workstation as a platform for new programs. Do you agree to this?"

"Certainly," replied the master, "I will have it transported to the data center immediately!" And the magician returned to his tower, well pleased.

Several days later, a novice wandered into the office of the master programmer and said, "I cannot find the listing for my new program. Do you know where it might be?"

"Yes," replied the master, "the listings are stacked on the platform in the data center."

Thursday, February 17, 2005

The Question to the Ultimate Answer

What? I don't know what it is!

But I am (like I'm sure many nerds around the galaxy are) getting very excited about the upcoming movie The Hitchhiker's Guide to the Galaxy due to the launch of the official trailer today on Amazon.com.
(Thanks to Toria for pointing this out)

It's a must see... some time in the past hour it changed from Flash to WMV format which is a relief because, well, encoding a movie in flash is generally a bad idea.
Here it is.
I'm not even going to bother with a low-bandwidth link, the hi-bandwidth is teensy enough.

Watch the trailer before reading on...

But it looks fantastic. Looks like Zaphod does after all have two heads (in a somewhat limited capacity.) Some interesting points though:

  • We knew Ford was American. I didn't realise Zaphod and Trillian were also American. The only bloomin' person who's British is Arthur, innit, innit? Well, Ford and Zaphod I can understand. They're aliens. But Trillian is from London. Oh well they do look like good actors, and they look a lot of fun.
  • Gah stupid trailers, always have to have American voice-overs dont they?
  • For all the showcasing of the phrase "DON'T PANIC", if you pause on the shot where the Guide is opened, it doesn't seem to actually have the writing on there. I thought the words "DON'T PANIC" were supposed to appear when the Guide is activated.
  • "It's the guide. It's got everything you need to know to survive in the universe." Umm, isn't it the Hitchhiker's Guide to the Galaxy?
  • What's with the Men In Black music at the end? lol.
  • Did u catch the stars arranged in the shape of "42" in the top left corner when u see the main logo?
  • Looks like the date's been advanced from May 5 to April 29. Well thats good. I can't help but notice... May 5 was a Thursday, April 29 is a Friday. (hehh)

Yay!
Incidentally I just finished reading the fifth book last night. Despite what some people have told me, I thought the ending was quite good. It'd have to be wierd or it wouldn't be HHG.

Oh and, does anyone know how Arthur was able to communicate with all the aliens in the fifth book? He took the Babel fish out of his ear at the beginning of the fourth!

Oh and by the way: Leetness!!!!!! (At time of writing, we're 469th in Lordaeron!)

"(Arthur) had just read an entire book in which the main character had, over the course of a week, done some work in his garden, played a great deal of netball, helped mend a road, fathered a child on his wife and then unexpectedly died of thirst just before the last chapter. In exasperation Arthur had combed his way back through the book and in the end had found a passing reference to some problem with the plumbing in Chapter 2. And that was it. So the guy dies. It just happens.

"It wasn't even the climax of the book, because there wasn't one. The character died about a third of the way through the penultimate chapter of the book, and the rest of it was just more stuff about road-mending. The book just finished dead at the one hundred thousandth word, because that was how long books were on Bartledan."
- Douglas Adams: Mostly Harmless

Sunday, February 13, 2005

Loradon's 2nd Anniversary

The 12th of February is the second anniversary of a little game called Loradon Online. It's a nice community-driven free MMORPG, based on the old Nintendo classics, which has managed to gain some popularity over its time.

Today the game's design lead, "Zero", gave a nice nostalgic speech about the history of the game. He posted it to the website which you can find here:
Loradon Online

I happen to have a special attachment to this game because I wrote the music. So now it's time for me to tell my little nostalgic story.
Back in December 2003 I got my shiny new keyboard - the Yamaha PSR-550, for writing music for my games. In around February 2004 I stumbled upon Loradon on vbgamer.com, downloaded it and played it. This was back when it was single-player. You can try a version similar to the one I played back then on the downloads page. (choose Loradon Classic).

The game showed great promise, but it had no music. I went back to the site and read the story. (I believe it's since been taken down). Zero's story was a fantastic tale of fantasy and adventure. That night I sat down at my keyboard and recorded a piece which came into my head as a result of that story, calling it "Legends Theme" (which I later discovered was the title of the World of Warcraft theme... oops). The next day, I thought, "what the hell..." this game has no music, here I have music which I wouldn't have had if I hadn't read that story anyway. So I emailed Zero and sent him a MIDI sample of the first few bars of the piece, and by three o'clock that day I found myself in the position of Composer for Loradon Online. My nickname was "Legend" and the song was now called "Loradon Theme"... you can now hear it in the game's menu screens.

I had a great time working with the team, and ended up writing seven pieces for the game before uni got the better of me. So although I'm no longer really writing music for the game, we're still good friends, and I hope I can work with Zero again some day.

Here's what he said about me in his speech:
Legend our best musician to this day and a great friend - A man with music in his heart, glad you could make it.

Aww... thanks Zero, buddy!

So best of luck to the Loradon team with their future developments. I advise everyone to have a go at the game - it is fr*ee after all (heh heh). And I hope you enjoy the score.
Download Loradon Online
Cult member: "Can I interest you in our free weekend session?"
Homer: "When is this weekend?"
Cult member: "It's this weekend"
Homer: "Oh, I see... and how much is this free weekend?"
Cult member: "Uh... it's free"
Homer: "Uh huh, and when is this weekend?"
Cult member: "It's this weekend"
Homer: "And how much are you charging for this free weekend, it's free right?"

Saturday, February 12, 2005

Matrixism: A religion?

Now heres a piece of craziness!
I love the Matrix. Its a great film with an excellent underlying philosophy. I've even got the Ultimate Matrix DVD Collection and have watched the two guys on commentary chat about the various philosophies and themes of the films. It was very interesting.

But a religion? Well I guess fans will do anything these days:
Matrixism: The Religion of the Matrix
Strange... very strange...
Q: Do I necessarily have to take psychedelics to be a matrixist?
A: No. All that is necessary is for one to recognize psychedelics as a valid method of spiritual practice. Conversely you don't have to necessarily give up drinking alcohol, quit smoking marijuana or stop taking anti-depressants to be a matrixist. What is important is recognizing what these "blue pills" do to your mind.

Oh thats good to know. "Sit down and take your red pill!"
Well, good luck to them.

In other news, I just sat down to watch the second of Ten's two-part Battlestar Galactica "mini-series". (Having never seen Battlestar Galactica before, but of course being aware of the famous Simpsons quote below.) When it got to the last fifteen minutes it didn't really seem like the Cylons were going to be destroyed all that soon. Then it turned out there was a full series coming soon. Yay now I have to watch that too.
Well I won't say its false advertising, but its pretty annoying being "tricked" into watching a two-part series, then having to watch a hole lot more!

And finally, has anyone else been getting spam emails with the word "free" written like this: "fr*ee" ... this is a very dodgy yet clever way to get past the spam filter! And it worked too. (On the gmail spam filter! O_O)

"Tag-team robot wrestling! It's the mighty robots from Battlestar Galactica, versus the gay robots from Star Wars!"
- TV announcer, in the Simpsons
(This is followed by footage of R2-D2 and C-3PO being smashed to pieces in the ring by the Cyloids from Battlestar Galactica)

Web page design woes

The past few days I've been learning HTML/CSS.
For the unlearned, they are the two languages you use to make a webpage.
It's not like I didn't know it before. Or even that I didn't know a LOT about it.
It's just that I've been going about it all the wrong way.

It seems for example, you don't actually use tables to layout a page! You use <div>s! And you use CSS to setup the layout. Also, theres a whole lot of tags and attributes that are deprecated, and shouldn't be used. And worse, some are beyond deprecation, they're just gone and you certainly shouldn't use those!

These discoveries may sound like the ravings of a noob, but I have in fact created at least two major websites: Summit Online and EMS Relto.
The problem is if you run them through the W3C validator, they are in fact, not valid.

The W3C validator is very strict, it forces you to make your pages 100% perfect. (If you choose "strict"). So what did I do? First of all I spent a whole lot of time reading the complete HTML and CSS specifications. Then I studied how to make pages using divs, etc, which I will certainly do in future. Then I spent a whole day updating the template software I wrote to fit the "correct" strict standards. Then I finally opened up EMS Relto and spend a couple of hours making all 31 pages valid, quite an effort.

I run them all through the validator, and bingo, they are 100% perfect (granted, not strict, but transitional. Still I have the right to bear the W3C logo, it tells me, "to show your readers that you have taken the care to create an interoperable Web page". And I have.
Only problem is, when I upload it to geocities,
1) It puts a whole lot of code at the top and bottom of my page. This is understandable, it has to display ads. Unfortunately the bastards have NOT taken the care to create an interoperable ONE PATHETIC LINE so all my pages are now INVALID again as soon as I upload and there's nothing I can do about it.
2) The minute I upload, someone at geocities thinks the world would be a better place if, instead of having a little square in the top right corner, if we had a huge panel on the right hand side which squashed up my page, made it into a hideous frames page and prevented you from seeing the whole screen.

ICK!!! This has happened before, and went away. So I'm crossing my fingers that it will go away again.
(If anyone knows anything about why they have changed it, please let me know by posting a comment!)
Here's the site with 100% beautiful HTML 4.01 Transitional code except the crap geocities added.

On a more cheerful note, I must redirect everyone's attention to The CSS Zen Garden. This wonderful site shows off the power of CSS. If you click the links on the right, it shows you the exact same HTML page, with different CSS styles. Wow, can they do some amazing changes to what is exactly the same root page! If you are using Firefox (highly recommended), you can turn off styles to see what its like without any CSS by choosing View -> Page Style -> No Style.
(Or in any browser, just Save As the page and choose HTML only, then open up your local copy).

If you are serious about web design, it's highly recommended that you download the HTML and a couple of styles to see how the Zen Garden grows.

Here's one of Jeremy's favourites:
Lionel Hutz: "Oh no! We've drawn Judge Schneider! ... He's had it in for me ever since I kinda ran over his dog."
Marge: "You did?"
Hutz: "Well, replace the word 'kinda' with 'repeatedly', and the word 'dog' with 'son'."

Now... leave a comment! Blogger have upgraded the comment system, and it looks great! (No doubt they've been working very hard on the HTML and CSS to bring it up! It's not valid - I just ran it and its got 44 errors, but hey, at least they're confident enough to ask for XHTML 4.01 STRICT! O_O)

Sunday, February 06, 2005

Esoteric Home Languages

[Beware... it's definitely a long'un!]

Here's an interesting concept, for programmers bored with the mundane logic and common sense of conventional languages like C++ and Java. I stumbled upon this wiki and entered the world of Esoteric Programming Languages!

Esoteric: ["Es@tErIk]
adj.
Intended for or understood by only a particular group

The esoteric languages are semi-jokes which make the source code appear obfuscated. They also pride themselves on having extremely long source, even for simple programs like Hello World. One of the earlier languages, the controversially named Brainf*** has source code using only characters such as '>', '+' and '['. The Hello World program for this language is as follows:

++++++++++
[
    >+++++++>++++++++++>+++>+<<<<-
]
>++.
>+.
+++++++.
.
+++.
>++.
<<+++++++++++++++.
>.
+++.
------.
--------.
>+.
>.
Which is pretty cool. See the Brainf*** wiki (and be careful, it uses the letters 'u', 'c' and 'k') for an explanation on how this code works.

While Brainf*** is very low level, there are some other, more creative languages. David Morgan-Mar A.K.A. "DangerMouse" has designed a number of hilarious and clever languages.
DM's Esoteric Programming Lanaugages
All of them are jokes (most of which actually can be useful languages), and they're all worth a look. Beyond this, some of them actually represent some new programming paradigms, which, while mostly impractical, are cleverly designed.
In particular, Chef and Haifu are some high-level languages with impressive source code. The former makes your code look like a recipe, while the latter makes it look like an asian-philosophy haiki poem.

BIT makes for some highly ridiculous-looking programs, Piet's source code is a bitmap, and LenPEG represents a compression algorithm millions of times greater than normal ones (on certain cases).

HQ9+ is a great idea. Since people will often note a language's ease-of-use by looking at the Hello World program, the designer of HQ9+, Cliff L. Biffle, created a language with the shortest possible Hello World program:
H
As the name states, the program has just four commands: H, Q, 9 and +. The "Q" command does something extremely difficult in most languages: prints out a "Quine" or a copy of the program's own source code. The "9" prints the words to the song "99 Bottles of Beer", and the "+" increments the accumulator. As you can see, the language makes certain tasks extraordiarily easy. All other tasks are impossible.

The other language I wanted to point out was Shakespeare. This one seems to be one of the most well-fleshed out. Their website is a little out of commission at the moment, but you can still download the interpreter and the documentation.
Shakespeare Programming Language (SPL)
This language's code appears as a Shakspearean play. It forms very realistic-looking code, as demonstrated by this Hello World:
    Act II: Behind Hamlet's back.

    Scene I: Romeo and Juliet's conversation.

[Enter Romeo and Juliet]

Romeo:
 Speak your mind. You are as worried as the sum of yourself and the difference between my small smooth hamster and my nose. Speak your mind!

Juliet:
 Speak YOUR mind! You are as bad as Hamlet! You are as small as the difference between the square of the difference between my little pony and your big hairy hound and the cube of your sorry little codpiece. Speak your mind!

[Exit Romeo]
Update: This is actually only part of the source! The full Hello World is about four times longer and can be found here. (In case anyone's wondering why I didn't see this link on the wiki earlier, it's because I just added it myself!)

So... Esoterics are all-in-all completely useless when compared to actual programming languages, but this in no way stops them from being fun and clever. Definitely worth a long look.

Note: For anyone interested in what a normal Hello World program is for comparison, this is the standard C Hello World:
#include <stdio.h>

int main(void)
{
    printf("Hello World!\n");
    return 0;
}
The Hello World program simply prints the text "Hello World!" to the screen. Read more examples here.

"Well, that was fun. Useless, but fun."
- Dalboz of Gurth, Zork Grand Inquisitor

Thursday, February 03, 2005

The Power of the Horde

Wooooohyeah! My Warcraft III buddy Jeremy and I got up to some serious 0wnage last night, so I thought I'd blog about it. We've been playing this game as a team (2v2 AT) for over a year now, and we've had many ups and downs. Last night though, we got on battle.net and stormed through nine games, winning SEVEN of them! This finally got us up to level 27 (which we had been trying to achieve for months now), saw us pass the 50% win-loss ratio line for just the second time, and earned us the rank of 634th in Lordaeron (one of the four-worldwide servers)!!!

One of the highlights was an epic base-exchange (in which they destroyed my base as we were destroying one of their bases) which ended up in an exciting 1v1 game with Jeremy eventually taking it out.

Here's my profile.
Here's Jeremy's profile.
And here's us sitting on the ladder at 634!
(Of course those pages will change in the future)

The night ended remarkably well when we were planning to play one more game. Then we decided that it was getting a bit late and we wouldn't. So we didn't hit the "Play Game" button. Then, due to a massive storm, the power went out on both our computers. So we were both incredibly relieved we had not hit the "Play Game" button.

Here are some shots of the mashage:
My entire army chases down one very annoying Death Knight. Eventually we got him!
A tremendous battle, one of many that we won.

So there you go. We own. :P Look out, battle.net!

"Can you feel it, Thrall? It's like the old days. Like the demons are near!"
- Grom Hellscream