My Blog
After getting upset that I could not sync my Google Calendar with my iPod Touch (on linux), I developed a program to assist me with doing just that. If you are interested, continue reading...
This program is for linux users who want to sync their iPod/iPhone's calendar, but do not want to boot into Windows. You can now easily update your calendar information by using this program and executing a few other commands. I intend to eventually have this program run on the iPod/iPhone alone as a native app. The program is designed to read in an iCalendar file, and generate an iPod Calendar database for use by the Calendar program.
You will need a jailbroken iPod/iPhone with OpenSSH on it. Try googleing around for "JailBreak" for more information on how to unleash the power of your iPod Touch/iPhone. Also note that this is not a windows application. If you want to do this through Windows, you don't even need my application -- Microsoft Outlook and iTunes will do it for you.
You can download the file at:
http://ePowerservices.com/personal/ical2sqlite-0.1.tar.gz
Once downloaded, extract the file and follow the instructions in README file.
Eventually I will move this application on to the iPod/iPhone itself so you can sync by WiFi to your online calendar. Perhaps in a later release though. This program will probably be only helpful to about 3 people on the face of the planet, but that's OK -- it has done wonders for me!
Which one is real and which one is fake?
I was amazed when I saw the real picture because it looked so similar to Half-Life 2.
In case you are curious, the picture on the left is of the Georgia riots (
more information here) and a picture of Half-Life 2 with the Combine in view.
Perhaps someone in Tbilisi's police department plays Half Life 2? I don't know...
Happy Halloween Everyone!
How many are trick-or-treating? I'm not, unfortunately. Does buying 5 pounds of assorted candy count and then saying trick-or-treat to the clerk during checkout? No? Darn.
Before you head out, did you know the history of Halloween?
"Traditionally, the festival [of Halloween] was a time used by the ancient pagans to take stock of supplies and slaughter livestock for winter stores. The ancient Gaels believed that on October 31, the boundaries between the worlds of the living and the dead overlapped and the deceased would come back to life and cause havoc such as sickness or damaged crops. The festivals would frequently involve bonfires, where the bones of slaughtered livestock were thrown. Costumes and masks were also worn at the festivals in an attempt to mimic the evil spirits or placate them." (Wikipedia: Halloween)
Now that you know that, I think it's time to prepare you for maybe the most shocking thing in the world:
The Smiley Face
I mean, really, what does he have to be so happy about? He's the craziest shade of yellow ever, has no nose and big oblong eyes. What can he be so happy about? Obviously, then, one can deduce he has probably eaten up tons of trick-or-treaters and gets some sort of sick pleasure out of it. BEWARE, if you ever see this person around, call your local authorities. He will attack your children, or maybe even you; who knows what this guy is capable of... he obviously can grin wider than physically possible.
Another word of advice: make sure to avoid the Halloween parties. A real man (for example, me) does his homework and gets his monthly blog in for the site he works at. Remember, if you ever are in doubt about going to a party just think "What would Wayetender do?" That will give you the most insight you will ever need, and maybe just enough to make you rich.
Have a safe and fun night trick-or-treating everyone!
Interested to see where people click on the SpawnPoint site? Well, someone on staff was, so we now have some cool graphics about where people like to click. Here's where people like to click on the header:
I don't do any of the interpreting, but I'd say that looks pretty cool to say the least. You can interpret that how you want.
As a note, these data were only sampled on the main page.
Update 9/28:
It seems that a new click pattern has emerged...
I'm not sure how to interpret that...
Well I am now finally all moved into college. It's the same place the iPhone unlocker is going to. There haven't been as many updates recently just because I've been slightly busy. The good news is that league planning and development has been green-lighted.
But Where's Clans??? They're on their way. Just need testing and tweaking and what-not. Unfortunately I am not paid to twiddle my thumbs. Although I am paid to tap on the keyboard.
Anyhow, I leave you with one last nice little snippet of code. Have you ever wanted to generate links (a tags) in user input? Ever just give up when you realize that there might be HTML input in there as well, and your simple attempt fails when someone does something like: <a href="http://www.google.com">http://www.google.com</a> and your link generator ends up creating: <a href="<a href="http://www.google.com">http://www.google.com</a>"><a href="http://www.google.com">http://www.google.com</a></a>. Well, fear not, with a bit of advanced regular expressions, I came up with this solution:
function Linkify($input) {
return preg_replace('/ (http:\/\/|[^\/]www\.)([a-z0-9]+[a-z0-9\._%,#&-;?\/:]+)(?!<)/i', '<a href="http://\\2" rel="nofollow" target="_blank">\\1\\2</a>', ' ' . $input);
}
Anyhow enjoy!
A problem on most sites that allow user-submitted HTML is verifying that the HTML is valid (won't break the page, mess up the formatting, etc). Unfortunately there isn't a lot of help on the Internet from what I've seen short of just suggesting locking down almost all HTML tags. On blogs, this isn't such a great idea because people like to express themselves and stay away from just the content.
Well, here's a specific problem I have seen little about: closing mismatched and unclosed tags. For example, if you leave in one <div> or </div> you could totally wrek a page's layout. Another problem is removing nasty attributes on a tag, like onClick or onHover where potential XSS exploits could surface.
So without further discussion, here's a nice function in PHP I have been working on that can clean the structure of an XHTML input and clear illegal tag attributes:
function clean_tag_structure($input, $badAttributes = '') {
$i = 0;
$tagStack = $matches = array();
preg_match_all("/(.*?)<([^\s>]+)(.*?)>([^<]*)/", $input, $matches, PREG_OFFSET_CAPTURE | PREG_SET_ORDER);
for($t = 0; $t < count($matches); $t++) {
$output .= $match[1][0];
$match = $matches[$t];
$tag = strtolower(trim($match[2][0]));
if($tag{0} == '/') {
$tag = substr($tag, 1);
if($i != 0) {
$output .= "</{$tagStack[$i]}>";
$i--;
}
} else if($tag{strlen($tag)-1} != '/') {
$tagStack[++$i] = $tag;
if($badAttributes != '') {
$match[3][0] = preg_replace("/($badAttributes)=\"[^\"]*\"/", '', $match[3][0]);
$match[3][0] = preg_replace("/($badAttributes)='[^']*'/", '', $match[3][0]);
}
$output .= "<{$tag} {$match[3][0]}>";
} else {
$output .= $tag;
}
$output .= $match[4][0];
}
for($j = 1; $j <= $i; $j++)
$output .= "</{$tagStack[$j]}>";
return $output;
}
Here's a sample of it at work:
$input = "</b>This <em><strong>TEST</strong></em> </div> <b> is <em onHover=\"deleteIT()\"> a </b></em> test! <div align=\"left\" onClick='deleteHardDrive();'> <div align='left'> </b>";
<div align="\"left\"" onClick='deleteHardDrive();'><div align="left">echo "Before: $input \n";
echo "After: " . clean_tag_structure($input, "onclick|onhover");</div></div>
Output:
Before: </b>This <em><strong>TEST</strong></em> </div> <b> is <em onHover="deleteIT()"> a </b></em> test! <div align="left" onClick='deleteHardDrive();'> <div align='left'> </b>
After: This <em ><strong >TEST</strong></em> <b > is <em > a </em></b> test! <div align="left" > <div align='left'> </div></div>
Cool!
Starting now, when you upload a demo on the report hacker page, you can monitor the progress of the file upload with a nice progress bar and a percentage readout while you wait. It should also notify you immediately if the upload has failed (too large, or some other reason).
Oh, and clans are about 95% complete.
.jpg)
People can now upload images into their blog posts.
Along with it comes a cool new editor. This change came from the complaints we got from people pasting text from Word. IE users can now automatically clean up the formatting when they paste. Firefox users will have to press the "Paste from Word" button. Or they can just straight paste it. It gets straightened out by the time you "publish" it. Anyhow, enjoy.
Now, back to other developments...
I think it's about time we go into some of the more interesting tools clans will have at their disposal: one of them is clan matches.
The general idea we wanted to get with clan matches is that it would be the central base to see if the clan has upcoming matches, if they have enough players, and some information about past matches. We also wanted members to be able to publicize the event and add some extra content to it, like screenshots or demos.
Who's Playing, and what's the IP?
A common question in my old clan. We plan on addressing this issue by making it possible for a clan member to create a match with all of the important information: league, map, time, server, etc. The creator will have the option to notify certain people (or all) and an email will be sent asking them to RSVP. Clan members can login, go to the match info page, and check if they are going to attend, maybe attend, or not attend. They also can post comments in a discussion thread for the match. You could talk about possible strategies, the starting five, and so on. We also take privacy into consideration, so only a small amount of information will be available to guests until the match is reported, and then the discussion thread is still hidden to only clan members.
"Oh no we've been disputed!" "Did you see John's Ace?"
Need or want someone's demo? Within the match info page, members will be able to add screenshots or their demos, or whatever they want to the match. They can also choose whether or not to make the file public or visible to members only. The file will be listed on the match info page for easy downloading and viewing.
The goal is to provide a one-stop shop for clans, so they can use SpawnPoint not only to show off their cool clan, but to keep track of it as well.
If you look at my blog (which is State of the SpawnPoint Art by the way), you'll notice I have a few screenshots at the bottom of my post. Starting now, all users can attach screenshots to their posts or to their blog. A keen observer will also note that under "My Pages" on the right, all users now have a page called "Screenshots." This page is dedicated to all of the screenshot uploads made by the user.
Wait, I thought I was supposed to be working on clans? Well, the screenshots feature was requested for clans (specifically clan matches), but we also decided to throw them on to blogs as well -- call it a leftover from the clans development (which is going well).
Notice my cool artwork below - made all by myself back when I fiddled with Photoshop!

It's funnier when you actually do it
Things are moving along well; more updates soon.
I see some of you are interested in the league play - all still in planning. By matches, I mean the ability to report a scrim or maybe a match in another league so you can keep track of everything/show off.
Alright, here's the update on what is done, what needs to be done, and what I'm thinking about...
What's Done?
- Clan creation
- Clan domains (yourclan.spawnpoint.com)
- Roster page
- Clan management panel setup
- Manage ranks
- Manage rosters
- Invite
- Join clan/Accept invite
What's next?
- Validate permissions when promoting/demoting -- Going to be weird with the draggable list items and the rank drop boxes.
- General page permissions for the clan panel
- Edit clan info
- Edit about page
- News display
- About page display
What's still on my mind?
Matches. Matches. Matches. I'm trying to make the system flexible enough to allow any type of match to be reported. However I also want to make it generic enough so it can be extended for the league code. Going to be interesting; I still haven't thought of the best way, but time will tell.
Another important issue will be file uploads. I'd like to have them be able to be tagged to a match, with different types (demos, screenshots, etc.). That one requires less thought than the matches one.
Things are moving at a nice pace though -- A little slower than I wanted but reasonable.
Some of you may be wondering what's happening with clans. After all, it has been some time since we added the teaser page for "Clans" and "Ladders." Although they are not ready for release yet, I thought I'd take a few minutes out of my celebrity-like life of developing to talk about some of the cool features you can look forward to.
Clan?
Clans are basically a way for people to unite and play games together. I think a lot of people use the word "team" now, but I think you'll find that our Clans are the same thing. The plan is to allow clan members to post news, upload files (demos), report their matches to keep a record, manage their roster, and eventually play in Spawnpoint sponsored matches (on ladders).
I want a Clan!
Anyone can create a clan. The process will be pretty simple. You enter your desired clan name, your tag, and some other information about your clan (IRC channel, website, etc.) You will also be asked for a "friendly name" or domain name. Similar to how you access your blog (like wayetender.spawnpoint.com), you access your clan page by going to [friendlyname].spawnpoint.com. Because of the possible collisions, Clans cannot have friendly names that match a username, nor can new users have a username that matches a pre-existing clan friendly name.
I have a Clan, Now What?
Once you create your clan, you'll find some interesting options: manage ranks, add officer, report match, post news, upload file, and perhaps more. Immediately upon creation of a clan, two unique Ranks are made: member and leader. What is a Rank? A Rank is a way of designating the clan's hierarchy. You can manage all the Ranks and change who is allowed to do what to the clan. The default group, member, has no privileges and the leader group has all the privileges. Of course you can always change all of the ranks to suit your clans hierarchy. A nice UI touch will be the ranks can be adjusted with a nice sortable list, so you can change permissions with a simple drag-and-drop.
Growing My Army
When you first create your clan, you will be asked how you want your users to join. The possible options are invitation, and using a join password. You are allowed to enable or disable a join password whenever you want. It may be useful when you first create your clan to just use a join password. However, the choice is up to you. When you want to invite a user, you can just simply enter their email address or username. If they don't belong to Spawnpoint, an email will be sent showing how they can register and then join the clan.
How Do I Know When Something Happens?
Well, we do know people like to stay connected, and this issue is a large concern for all of Spawnpoint. A nice feature that we are working on is a unified notification system. Anything from a profile update, someone making a comment on your blog, or someone leaving your clan can all be adjusted in the new notification system. Also, how you receive updates can be changed; anywhere from being emailed immediately, to looking at a feed that shows all relevant information that you would find interesting. Perhaps in the future it will send you a text message? I think I'm thinking too much...
There are many things you can do in a clan, but not enough to make it cumbersome. It is a nice way to show off your clan with statistics on your matches, manage your roster so you can send messages to everyone easily, and eventually have some fun playing matches on the Spawnpoint ladders.
More updates soon, but I must get back to work!
Like my new banner image?
You can have one too. Click Manage Your Blog, and under options, select "Banner Image."
Be warned it removes the title and tag line.
So, I think I have just mastered my strategy of killing everyone nonstop.
Here it is...
as GDI, create tons of APCs while upgrading to get a tech center and command post. Make sure you have two war factories (or three if you want to deploy some surveyors early on to create a few tiberium rapers). Then when you have about 25 APCs you should be ready to make the BFT (Big Freagin' Tanks). Make about 5-10 of those and then attack your enemy. I would challenge any takers except for some reason I can't do Internet games..
Anyhow, back to sleeping...
Going to call it now:
Command and Conquer 3 will be better than Starcraft 2.
Lucas "Wayetender" Waye
Code and Development Team
Lucas lives in New York as a student. He started out as a hobby coder but is now majoring in Computer Science in university. Lucas has programming experience in C++, Java, C#, and PHP, but has recently specialized in embedded systems programming in C. He has also had a passion for gaming since he was 11 years old.'
Well my blog is up and the site is now live. It seems everyone can relax now!
I hope everyone likes the profile scroller.