0.07% of the World’s Population Plays World of Warcraft
December 19, 2005 | 17 Comments
World of Warcraft has increased in numbers since my last post. 0.07% of the World’s Population play WoW. Thats crazy. Doesn’t seem like much? Well, its 5 million people. What will that number be after Christmas? And yes, WoW has gained me as a subscriber once more…
Script.aculo.us Is My New Best Friend
December 18, 2005 | 22 Comments
Ajax is great. DOM manipulation is sexy. I'm fairly new to the Ajax world having only developed with with it since July. MasterWish was my guinea pig and continues to be my playground for all things Web 2.0. Luckily, my manager Ken is pumped up about this whole Web 2.0/Ajax thing which has allowed me to experiment with my projects at work as well and PSU should expect to see some sweet apps roll out over the next year!
Since July, I've been developing my Ajax applications and examples using SAJAX (Simple Ajax), a PHP/Javascript framework for Ajax development. It was great at first glance...a lot easier than building Asynchronous Javascript transactions from scratch. But despite its ease, it was a bit clunky. Last week I was stumbling around the web looking for anything new to suck up and found a beauty of a tool. Script.aculo.us.
Script.aculo.us is a Javascript Effects and Control framework developed by Thomas Fuchs, a software architect living in Vienna, Austria who, like me, was disappointed by current web application frameworks that made no sense to him. His framework is 3 things: Easy to Use, Simple, and Easy to Use. His libraries - built off of the Ajax framework, Prototype - blow SAJAX out of the water! Let me give you an example to, say, update a news title on an article (I won't include the HTML markup as that is trivial):
Here's what needs to be done to build a SAJAX call:
Step 1: Create a SAJAX Call Function
-
function x_updateTitle()
-
{
-
sajax_do_call('/process_ajax.php',"x_updateTitle", x_updateTitle.arguments);
-
}
Step 2: Create a server side function to handle the update
-
<?php
-
function x_updateTitle($news_id,$news_title)
-
{
-
//do some database calls to update the title;
-
}
-
?>
Step 3: Edit the server side SAJAX file (process_ajax.php) and add x_updateTitle to the list of valid call functions
-
<?php
-
include('sajax.php');
-
addFunctions('x_updateTitle');
-
handleClientRequest();
-
?>
Step 4: Call the SAJAX Javascript function from somewhere (in an onClick, onSubmit or something)
-
<a onClick="x_updateTitle(1, document.getElementById('news_title').value, 'callbackFunction');">asdfdf</a>
Here's the equivalent in Script.aculo.us
Step 1: Create a server side function to handle the update
-
<?php
-
function x_updateTitle($news_id,$news_title)
-
{
-
//do some database calls to update the title;
-
}
-
?>
Step 2: Call the Script.aculo.us Javascript function from somewhere (in an onClick, onSubmit or something)
-
<a onClick="new Ajax.Request('/process_ajax.php', { asynchronous:true, parameters:'news_id=1&news_title=$(\'news_title\')', onSuccess:callbackFunction });">asdf</a>
Thats it! Its a big difference. Thats just the tip of the iceberg. Script.aculo.us has many features for implementing Drag and Drop with one line of Javascript code; fancy display/hide functions; dynamic DOM Element creation/deletion; field autocompletion; and various other visual effects. It slick. And to top it off, the Script.aculo.us website is pretty sweet! Luckily the documentation is excellent and is in wiki format. As Plymouth State moves into the Web 2.0 world, I'll be pushing for Script.aculo.us/Prototype to be our Ajax standard. I have seen the light and it is good.
Ajax, More Than A Buzz Word
December 16, 2005 | 7 Comments
Ajax the development technique, not to be confused with Ajax the cleaning solution, is taking the web by storm. What is it?
Ajax stands for Asynchronous Javascript And XML. Its an architectural methodology on the interactions between a number of different technologies in a way that provides a more seamless user experience between user-to-server communication.
There are tons of blogs and articles out there that rant and rave of its use as savvy site designers implement Ajax into their web applications, and rightly so. However, through my blog skipping and digg watching I have seen numerous complaints of "OMG, Ajax is stupid....its just a fad/buzzword/etc" or "Ajax is just overhyped, don’t know why people use it!!" I have a couple words that describe those people: cynical, ignorant and, well...squirrel handed. Wake up people. Ajax isn't a fad, its an architectural change in the way that web applications function. A focus on application speed and uninterrupted user interaction.
What's so great about it? Why do I pee my pants with glee every time I use a web app that makes use of the technology?
I'm a developer. I've been developing database driven web applications for a number of years now and have seen the clear line between a desktop application and a web application. Desktop applications are highly interactive and responsive to the user, where web apps (in the past), were fairly static locations (however dynamic the content) to provide information/entertainment to the user, where user interaction required page loads in order to store information to a database/write to a file.
Next came Flash, an excellent tool but tends to require a much more artistic flare and is much more time consuming with general maintenance than its worth.
The reason Ajax is so sexy is that it bridges the gap.
The average-Joe browser may not be aware when they stumble upon a site that makes good use of Ajax, but that average Joe can feel something right about it. To the avid browser, however, an Ajax site is more readily obvious; you can interact with elements on a page and save settings without reloading; pages are highly resposive to user input with minimal wait times.
Gmail and Google Maps were the applications that really brought Ajax into the limelight. (They weren't the first, just the first major apps). The world saw what Google could do and followed suit. The world saw that it was good. The Ajax revolution was born. It has birthed a whole new breed and boom on the internet, bringing forward a multitude Ajax enabled sites and applications:
And thats just the tip of the iceberg. I look forward to what will become of our expectations of web applications. You won't see me sitting idle during this evolution. I will be innovating and participating all along the way.
Amusing WoW Video
December 15, 2005 | 8 Comments
I'm a fan of Machinima and often find myself watching videos that were created using World of Warcraft and have even created one myself. Well, here is a pretty sweet and extremely hilarious WoW video that is a must see! It features a female Tauren lead singer and her fellow horde members.
Naked Chicks on the Internet
December 15, 2005 | 14 Comments
Go here -> http://nakedchicksontheinternet.com/ You'll thank me later.
UPDATE: DOH! It seems that whoever owns that webcam (of chickens) has password protected it. Sorry folks.
Google Widgets
December 14, 2005 | Leave a Comment
In my recent post on Windows Live Gadgets I shot down Google because they hadn't already created their own widget/gadget engine for creating hosted...well...widgets. It seems they were waiting because they could do it better. Today I found out through Slashdot that Google released their version.
Their widget API is available here. At first glance it seems that the Google widgets are a bit more robust and versatile than the Microsoft gadgets. I'll be playing with these shortly to see what I can come up with and do a thorough compare/contrast. These are the differences I see (at first glance, mind you) between the two companies' implementations of the same idea:
- Google Widgets are aimed at a completely web-centric approach. They do not offer local Widgets like Microsoft Gadgets does. This is actually a win in my book.
- Microsoft is using RSS syntax for their XML with some external javascript loaded along with it. (I'll get more technical when I learn a bit more about the process). Google, on the other hand is using what appears to be their own proprietary markup with the inclusion of external javascript as well.
- Microsoft's implementation prevents the use of the id tag which makes doing some sweet dynamic stuff...well...painful. Google allows it, and goes a step further. They include a sweet little feature called __MODULE_ID__ that you can tack on to the end of your id tags so things will work fine with multiple instances of your widget on the same page. Another win for Google.
Like I said with the Windows Live and MSN Start post, I'll be doing some heavy research into these widgets and gadgets and bring forth more details and some example code.
MSN Start & Windows Live Gadgets
December 14, 2005 | 3 Comments
MSN Start and Windows Live, which are competitors for Google/ig have jumped ahead of google and are now offering a repository for developers to create XML/javascript based 'gadgets'!
There are two types of gadgets. A remotely hosted gadget, where a site like MasterWish would create a gadget and make the URL to the gadget's XML file publicly available; the user then enters the URL and viola! The gadget is added! (after a confirmation) The second type of gadget is the locally hosted gadget, where you can store a gadget on your machine (Windows only). You load the gadget in the same way you do a hosted gadget...There seem to be a few catches with the local gadgets:
- First and foremost, its not web centric...the gadget is on your machine. If you head on over to a friend's house, that gadget won't be available to you.
- The local gadgets must be coded as such.
- Windows only
The benefits with the locally hosted gadget? Well, you can do some more advanced stuff with them like messing with your local applications. For example, there are some gadgets out there that manipulate the data from iTunes...the gadgets are pretty sweet. Local gadgets are neat...but I'm not sold on them.
What really throws me for a loop is that Microsoft implemented gadgets before Google...you'd think Google would see this coming. tsk tsk tsk. All the same, I'm going to do some little experiments with gadgets and see what I can come up with.
Star Wars, Backstroke of the West
December 13, 2005 | 3 Comments
Engrish. Gotta love it. It seems that there is a copy of Star Wars: Revenge of the Sith floating around on DVD that is a recording from the theater when it aired. As luck would have it, it was dubbed to Chinese, then had English subtitles placed across the bottom. The great news? Well, the english subtitles were translated from the Chinese. The results are hilarious. Check out this article to see the images.
Its also nice to see that General Grievous calls Anakin a "Smell boy" and threatens to feed dog to his troups. We also see extreme battle strategy infused lines like: "Like, reach the man, Good good good let us counter-attacking." and "You two careful he is big." And one of my favorites: "The Presbyterian Church like enjoys you not."
Here are a few rough translations:
Troops becomes Troopseses
Premonitions becomes Pregnancy
Jedi Council becomes Presbyterian Church
They're all over me becomes He is in my behind
Check out my Backstroke of the West photo set on Flickr.
|
|
Alexa Search Data For The Masses
December 13, 2005 | Leave a Comment
Alexa - for those of you that don't know - is an Amazon owned subsidiary that tracks "valuable information about the web, how it is used, what is important and what is not." For example, you can search Alexa for amazon.com and find traffic information, related links, etc. Alexa is a hugely useful tool for developers that want to watch their traffic and compare against competing sites. While combing sites and gathering statistics (which it does by the use of the Alexa toolbar as well as piggy backing onto the back of various other toolbars), Alexa has amassed huge amounts of data...and when I say huge amounts of data...I'm serious! Alexa spiders 4 billion to 5 billion pages a month and archives 1 terabyte of data a day.
They've been stockpiling search data since its inception in 1996. The great news? They are now opening it up to the public as a pay to play access to their data! Its called the Alexa Web Search Platform. Wired News writes:
To illustrate the new service's potential, Alexa developed a photo search engine that allows users to query photo metadata normally hidden from standard keyword searches, such as the date the photo was taken or the camera used.
[...]
From computer scientists to web hobbyists, [Alexa CEO Bruce] Gilliat predicted Alexa's inexpensive services will spawn numerous creative results.
And Slashdot writes:
The Alexa framework is not for the weak of heart -- expect to learn how to use their C API, and expect to pay micro-amounts for requests and CPU cycles used -- but it also seems to be more powerful than the rival APIs from Yahoo and Google.
While I have no huge reasons to sign-up and pay (however cheaply) for this service just yet, I look forward to seeing what comes of it! Having that much data available at your fingertips is a huge boon to the development and marketing community!
Make Me a Sandwich
December 13, 2005 | 1 Comment
This site made me bust a gut laughing. I sent it to my wife...she wasn't impressed.
Electric Chicken Cup
December 13, 2005 | 1 Comment
Jon over at LifeAfterCofee raided my office and took a picture of my Electric Chicken Cup then blogged about it. I figured I'd steal his blog post and put it on BorkWeb as well :D What is an Electric Chicken Cup? Well, its a rubber chicken shoved in a coffee mug with an electrical cord shoved in the chicken's mouth and plugged into the wall. I'm selling them for $8,002.57 a piece. Get them while supplies last.

Update: It has been asked by a few people and I figure I'd clarify...Watering the Electric Chicken Cup (tm) will void the 8 minute warranty.
Blingo is Google with Perks!
December 13, 2005 | 3 Comments
I run around all day shouting 'Google' this and 'Google' that. I'm not going to stop. Its a cool company. So whats Blingo and whats so great about it?
Blingo is a search powered by Google. Its results ARE Google results, so for those of you that swear by Google and its excellent filtering of sites, well, you won't lose anything by using Blingo. So whats the benefit of using the it? To put it simply...they give prizes. As you search through Blingo, you become eligible for prizes (that they give daily!). In addition, sign up through my link and we are forever hooked as friends. This means whatever either of us wins we both win it.
Sounds a lot like a scam, but here’s the thing, Blingo makes a pile of money off adsense advertising and they share a bit of that with us, their users. Simple concept, great execution. Don't really believe me? Well, here are the flickr images tagged 'Blingo'.
Anyway, go signup, it couldn’t hurt…
MasterWish WordPress Plugin
December 7, 2005 | 13 Comments
I am pleased to announce the arrival of the MasterWish WordPress plugin! Anyone that has an account on MasterWish and runs a WordPress blog can aggregate their publicly viewable lists. For an example of how I have it set up, check here.
Get the MasterWish WordPress plugin v1.1!
Setup Instructions:
Installing the Plugin:
| 1. | Download and unzip wp-masterwish.zip |
| 2. | Place masterwish.php in your wp-content/plugins directory |
| 3. | Log in to your WordPress admin panel and activate the plugin, then visit the MasterWish submenu of the options tab. |
| 4. | Enter your MasterWish username and click 'Update Options' |
| 5. | If you want a default list to be selected, select a list from the List drop-down menu and click 'Update Options.' |
| 6. |
Create a new Template for your wishlist in your wp-content/themes directory.
In the body section of that template, we suggest you place the following function calls:
|
| 7. | Create a new Page in WordPress and set its template to the template you just created in the previous step! |
MasterWish Plugin Functions:
- masterwish_get_list
retrieves items from a list
Usage:
masterwish_get_list({list_id},{display_images},{maxresults},{random});list_id is the wishlist id number that is being browsed. Leaving this with a blank string '' pulls the default list set in the MasterWish Plugin's options tab.
display_images specifies whether the item images are displayed. Default is false. Available options: (true/false).
maxresults is the maximum number of items you want displayed in a given list. Setting this value to 0 displays all items in a list.
random shuffles your item list around. - masterwish_list_title
retrieves the current list title
Usage:
masterwish_list_title({list_id},{return},{before},{after});list_id is the wishlist id number that is being browsed. Leaving this with a blank string '' pulls the default list set in the MasterWish Plugin's options tab.
return specifies whether you want the title returned or echoed. Default value is false, available options (true/false).
before is what you want prepended to the wishlist title.
after is what you want appended to the wishlist title. - masterwish_list_url
retrieves the current list url
Usage:
masterwish_list_url({list_id},{return});list_id is the wishlist id number that is being browsed. Leaving this with a blank string '' pulls the default list set in the MasterWish Plugin's options tab.
return specifies whether you want the title returned or printed on the screen. Default value is false, available options (true/false). - masterwish_lists
retrieves the user's publicly viewable lists
Usage:
masterwish_lists({list_id},{before},{after},{return});list_id is the wishlist id number that is being browsed. Leaving this with a blank string '' pulls the default list set in the MasterWish Plugin's options tab.
before is what you want prepended to each wishlist title.
after is what you want appended to each wishlist title.return specifies whether you want the lists returned or printed on the screen. Default value is false, available options (true/false).
When Good Monks Go Bad
December 5, 2005 | Leave a Comment
My friend Al sent this video along to me. You have to check it out! It rocks :D I love the animation style...be warned, there is blasphemy contained therein ;)
Web Expressions - Save files to your M:Drive from your dorm
December 2, 2005 | 11 Comments
If you have a desire to save files to your M:Drive from your dorm or apartment. All you need to do is:
- Open Internet Explorer
- Type: ftp://username@oz.plymouth.edu (replace username with your username)
- Enter your password (same as your myPlymouth password)
- Click Ok
- Drag and Drop as normal!


