Friday, April 29, 2011

Link Vs. Dark Link (A Spiritual Battle)

Consider how Link did journey on to the Great Palace. After he defeated the Thunderbird, he was allowed entrance into the Triforce Room. The Old Man looked at him, saying, "There must be a test!" And the Old Man and the Triforce of Courage disappeared.

Then, Link was alone and the room was made as dark. Out of the darkness emerged an enemy that Link had never fought, but engaged many times. Verily, that enemy was Link's dark side. If Link is the Legendary Hero who is incapable of fear in the face of Ganon or any other such manner of evil, then Dark Link is the one who cowers before Ganon, saying, "I am too fearful to pursue that which is right." If Link would save Hyrule from the Evil One, then surely Dark Link would surrender and aid Ganon for fear of annihilation.

Link engages Dark Link and the battle begins to fare poorly. Dark Link knows who the Hero is, but the Hero does not understand who Dark Link is. It is as if Dark Link knows his every move, but Link does not know the moves of Dark Link. Terrified, Link begins to cower in the corner of the locked room. Then, Link thinks about who Dark Link is. He says to himself, "Dark Link is part of me." and he knows he must overcome the fear his shadow embodies. Then, before death calls his name, Link begins to voraciously swing his sword in a stance of half cowardice.

This was the manner in which the Hero achieved his greatest triumph. The Triforce was made whole once more, and the Princess at long last awakened.

Friday, April 22, 2011

Some Things to make FB more secure

It's seems like every other day I hear about a friend whose had some robot log into his/her facebook account and start spamming everybody, so I thought I'd mention some of the basic things people can do to lower the risk of having their accounts hacked.

Password Strength: Now, if my close friends and family members are any indication, most people use very basic passwords that often consist of one word. I've never considered hacking into anyone's Facebook account, but if I did, one of the first things I'd try would be to write some sort of script that iterates through words in the dictionary. Facebook probably keeps you from guessing passwords after so many tries, but a persistent soul will succeed. You can easily circumvent efforts like that by having a really long and complex password. It can consist of (multiple) words, but throw in a few capital letters and a special symbol like !, _, or some such.

Watch Your Address Bar: If you see a facebook login at the URL www.hackyourfb.com or whatever, it's probably a bad sign. Make sure you're logging into Facebook.com each time you login. Most browsers can read security certificate from companies like Verisign, DigiCert, GoDaddy, and others. So look for that if your login attempt fails. But the main thing is to make sure you're logging into Facebook.

See's who has been logging in: If you click Account, Account Settings, then Account Security, you can see where your logins come from. This isn't 100% reliable as it's related to your IP address (which, depending on your ISP could be, anywhere), but it's one of the best places to look if your account has been compromised.

Check your apps: I imagine there's a good chance much of this spam originates from installed apps. Facebook doesn't really regulate who makes apps (outside of what gets in the directory). http://www.facebook.com/editapps.php will allow to remove spammy or suspicious apps. If you're having problems like of this nature, there would be a good place to look.

Firewall: This really more for your PC, in general, but be firewalled. Head on over to Grc.com, run their shields up test, and see if you have any open ports. Ideally, they'll all read stealth. Most firewalls inside of routers can accomplish this.

Thursday, April 21, 2011

Kaepora Gaebora: What is he?

I'm doing a three heart run of OoT (just to brush up on the story for a fanfic, really. three hearts is only for the added frustration). As I was running out of the Kokiri Forest, the familiar owl, Kaepora Gaebora, gave his greeting. He finishes his "Yada yada yada... you're on an adventure... blah blah blah..." speech, and I move onto Hyrule Castle.

In Castle Town, I stop speak to Malon (next to the fountain), then waste no time heading toward the Castle. Then, there's Kaepora Gaebora, again! He seems to understand how the game's time mechanic flows. So, I head on and speak to Zelda and hear one of the key parts of the story I wanted to, and then head to Kakariko. Of course, I forgot that you had to talk with Saria first. So, I journey back to the Kokiri Forest and into the Lost Woods.

A few steps into the Lost Woods and... there's that owl again! Here he is, expounding upon the nature of the Sacred Forest Meadow. You're near the Sacred Forest Meadow, a special place where few people have ever been.(Note: The Sacred Forest Meadow comment raises an interesting question about Beta version of OoT. In that version of the game, the Temple of Time is in the lost woods. One has to wonder whether the owl was indirectly referencing that.) But at any rate, here the owl is again, explaining things that owls shouldn't know about.

And after you speak with Saria, the owl appears again in the Lost Woods, explaining things that are obvious to the player, but things that Link might not necessarily understand. This is another peek into the apparent 'deeper knowledge' of Kaepora Gaebora. And it gets better: This owl seems to know where you are at all times. On top of Death Mountain, the owl will be there. If you head to the Gerudo area as a child, the owl is there. If you head to Lake Hylia, the owl is there. The last two are areas that are completely unrelated to the quest.

And it gets better. Kaepora Gaebora follows Link through his adulthood, as evidenced by the brilliant "flying away" scene in front of the Desert Colossus (Or as Kaepora Gaebora called in while speaking to Saria, the Shrine of the Desert Goddess.. or something).

The Gossip Stones say of Kaepora Gaebora, (paraphrased) "Kaepora Gaebora is the reincarnation of an ancient sage." It's probably that and nothing more, but in light of hearing his apparent larger than life understanding of Hyrule, and seeing him immediately after hearing the creation of Hyrule, I actually entertained the idea that he could be some sort of avatar for a deity.

Another, more popular, theory is that Kaepora Gaebora is Kasuto, the "missing" Sage. All the other Sages, save Zelda, have names from AoL Towns. The one unused town is called Kasuto, who seems to have been replaced by Zelda in this game. Perhaps the most 'mainstream' interpretation of Kaepora Gaebora is that he's Rauru, but that has problems. (Or... he could just be a helpful game mechanic explainer. :P)

Anyway, I'm going to continue paying close attention to him as I play this run through. If I happen to see something about him in a new light, I'll update this post.

Wednesday, April 20, 2011

The Good Things WebTV Had

It's a dinosaur now. Browsing the web with a 56k modem sounds... abominable, impossible, even. However, there were some things you had to love about the box. In a moment of nostalgia, I thought I'd sing a few praises:

Music: WebTV had some excellent midi files. I loved its renditions of classical music. The rendition of Mozart's Symphony #40 was mindblowing. Other good tunes like the Flight of the Bumble Bee and stuff I can't remember rocked too.

Email Beep: Compare WebTV's email beep to the AoL 'You've got... poor voice synthesis' of the era. WebTV will win every time. Of course, I'm predisposed to loves of all clicks, beeps, scratches, and things of that sort. I think they have a rhythm.

The Culture: The biggest credit WebTV had was its community. All online communities say, but with WebTV it was actually true. Microsoft wasn't really developing anything for it (though they did provide frequent updates even late into its Classic/Plus life cycle), and most major websites you might try to visit (notably Yahoo! Games) wouldn't support the box. Seeing this, many users built JavaScript and Flash games (though the latter was probably done on a PC :( ), uploaded midis, stockpiled vast collections of images, and brought content to the box.

I'll go on: I rather liked to browse the homepages of WebTV-folk back in the day. There was a lot of personality on community.webtv.net. I made some friends that I still keep in touch with. But anyway... all glory to the box!

Monday, April 18, 2011

Could the moon be alive?

I was driving down the road at about 3 A.M. this morning, and the moon was exceptionally large. I've seen large views of the moon before, but something about this one stuck out. It was positioned directly over the road, almost like something out of a UFO encounter. I kept looking at this while almost disregarding the empty road ahead of me. Then, I did something crazy: I asked the moon, "What?"

Sleep deprivation will send me to an early grave, I'm sure, but at the time, acknowledging the celestial object felt like a completely reasonable thing to do. There was this large object in the sky, and certainly felt as if it had singled me out, out of all the other people in the world. It was like the moon had its own personality for the moment. I'd seen the moon many times, but this was the first time that the moon had took notice of me.

Fortunately, the moon didn't respond. But I'm glad that this episode left me with yet another interesting (but completely meaningless) thing to ponder. In the interests of defending a potentially existent entity, I came up with several completely fallacious appeals (which I won't share here).

So, basically, I was outside, and I realized the moon existed.

Sunday, April 17, 2011

Tornadoes and Hospitals

Two days ago, a series of storms blazed through the area. A tornado seems to have caused a good deal of damage about a half a mile up the road. The good news is that everyone seems to be ok (at least around my neighborhood).

The tornado hit when I was at the hospital with my brother. I hate hospitals as it is (all they're good for is catching illnesses from sick people! amirite?), but I especially hate hospitals on lock-down. I have a fear of dying inside of a hospital. It seems like such a boring place to die. Seriously, if there's an afterlife and I die in a hospital, I'm asking God for a mulligan. But anyway, there I am, trapped in the hospital awaiting whatever fate has in store.

Everyone was pretty worried, but this is Alabama: We get ten or twenty tornado warnings a year. I didn't see what the big deal was. Hell, I still don't see what the big deal was. But, I guess the aforementioned tornado was the big deal. If I had been on the road just a little earlier, I might have had to play dodge the tornado on the highway.

Thursday, April 14, 2011

Oracle Finished! (a concession)

Sometimes, you know the right way to do something, but you're already in the process of doing it the wrong way, so you don't want to stop and do it the right way. A case in point for me would be Beardulax. I knew for a fact that including the script inside of document.write(); html was messing up something for Chrome inside of all.js, but I was determined to get it to work!

Five days later, I gave up, deleted the document.write();'s, stuck in four document.getElementbyId()'s, and it worked like a charm... Bah!

Tuesday, April 12, 2011

Something about IE

Internet Explorer doesn't like my script (for Beardulax, my JavaScript Oracle), and I'm not sure why. All the other major browsers can take the script from the document.write(); just fine. However, IE freezes every single time! I think it must be something about the script's syntax, because IE can load Facebook's all.js inside of document.write();. The script itself contains a function with FB.ui for sharing to the feeds. I had the same result when the function contained stream.publish. Baffling!

Btw, if anyone happened to read the previous post, I was able to get the 'publish' option to work in Chrome, Safari, and Opera by trying a different option (feed, if I recall correctly. It looks a lot like stream.publish. I'm not sure what the difference is.)


For the moment, the script only executes if the browser is not internet explorer. I need to learn a little more about IE's debugger, I guess, but as far as I can tell, the freeze is stopping it from spitting out errors! I suppose I'll research the matter and update this post if I find a solution.

UPDATE: I eventually ended up having to give up on the whole method of using document.write(); and it worked just fine. I think the problem was because the script ran at the start of the second page.

Sunday, April 10, 2011

JavaScript Woes!

More research is required for ole Beardy. The oracle is finished (or at least close enough to being finished), but the facebook javascript sdk parts of the application have been nightmare. All I want to do is just create a little share function that I can call on from an html button. Shouldn't be hard, right? Wrong.

I used the example stream.publish function from the sdk files and modified it to my own ends. It works... in Firefox. Google Chrome finds a javascript error inside of facebook's all.js file. Initially, I thought that maybe Chrome utilized innerHTML in a different manner, but a quick test disproved that notion. I was able to call the same ids from my a test function, so nothing is wrong with the way I'm passing values. The debugger traces it back to line 18 of all.js.

But it gets worse: Internet Explorer stops responding whenever I try to include external javascript files. I must be doing something wrong on that end. I'm really not sure. I've got it in the head section of the document.write html... maybe (like Chrome), it needs the file in the body. This would be odd, as I seem to recall IE crashing for the same reason. Again, confused and frustrated!

But it gets even worse: I just learned that Facebook is in the process of deprecating stream.publish, so even if I get it working, I'll just have to switch it to the graph API (whatever the hell that is).

Friday, April 8, 2011

Passing functions to Document.write()

Be advised, reading this post may result in lulz:

As noted in the past few posts, I'm still perfecting that oracle. I actually want to add an option to make it search the user's string and reply with a relevant (but still somewhat random) response. Anyway, I haven't gotten that far yet because of my stubbornnes. You see, I decided from the beginning that I would make the application load from one page and use document.write() to create the "answer" page.

The above worked great until I decided that I'd get ambitious and make the thing a facebook app. Setting up the JavaScript SDK wasn't hard at all, but getting that SDK to work in the document.write() html was somewhat of a challenge. No matter what I did, I couldn't get the example function provided for FB.ui to post in it. I spent hours readjusting the code placing it in all kinds of different places. I even went as far to redeclare the function fb_publish(); inside of a script within the document.write() html! Then, after that failed, I went around adding backslashes to escape everything in the function. I still don't understand why -that- failed..

As mentioned before, I was being pretty stubborn about the whole "one file" thing. The solution was a deceptively simple one: create an external .js file, include it in the document.write() html's head section. Then, you can call it from document.write(); with impunity! Cheers!




The last question before I start working on making the thing give relevant responses is passing variables to FB.ui (user name, oracle response, etc.). But my host's site is down atm (and facebook won't let that FB.ui execute unless it's on app's site), so I thought I'd take the time to rant about this.

Tuesday, April 5, 2011

onsubmit and Chrome

I happened to take a peek at my javascript oracle from my netbook -- on which I use Google Chrome -- and I was shocked to find out that the application wasn't working. Or rather, it was working, but the page was reloading for no reason. I was pretty confused by it, as the application in question works just fine from Firefox, Internet Explorer, and Opera. So, I did some investigating, and found out the root of the issue:

Chrome seems to reload (or perhaps restore?) the page to its original state after a function is called with onsubmit from a form. If you're whole plan is based on the altered page staying up for the user to read... that's probably not what you intend. Here's what I did:


var chrome=navigator.userAgent.search("Chrome")
if (chrome != -1)
{ event.preventDefault(); }


Of course, event.preventDefault(); is the workhorse there. However, Firefox started messing up on me with that in the code, so I put it one of those nifty if statements.

Addendum (several days later): I was fiddling with that same oracle earlier, and I realized that this post is probably wrong. It seems far more likely that Chrome is reacting to the document.write(); I'm calling on and not onsubmit. At any rate, it worked like a charm. :)

Monday, April 4, 2011

Oracles and Spacemen

I created some kind of (admittedly crappy) oracle. The design is awful. I never was too good with css, and the irritating interface of my web host sort of discourages me from making changes to the uploaded file. I think I might add a "prophecy" option, eventually. You can view the sort of done, sort of not done, work here .

Now, I'm stepping my game up. In the process of creating a game with one of them Space Men! It's just as poorly drawn as that oracle. hehe. More to come on that.

Saturday, April 2, 2011

The Dangerous Dangers of Facebook

Yep. Facebook is -still- blocking batcave.net's array of domain names, and now they're not even giving a reason for it. I know it's probably because of batcave.net's free allowance of php from anybody anywhere, but it's not fair because facebook is probably more dangerous than any site on the web.

Now, I've got maybe a hundred friends on facebook. Most are distant relatives I don't even know, and the rest are people that I actually do know or talk to quite a bit online. Out of that one hundred, at least twenty have had their accounts compromised at some point. My best friend from my childhood was spamming stuff on becoming a sports agent for two weeks, and my ex girlfriend's sister keeps telling me about this ridiculous "video link" that tries to trick me into installing an app. And there are others!

So, clearly, if facebook is concerned about security precautions, the logical choice is for facebook to block facebook.com from being shared.