Category Archives: Uncategorized

Google App Engine Talk

Today I went to a talk at UMBC on the Google App Engine, a product from Google that came out earlier this year. The talk was given by an old friend of mine from Grad School who now works at Google. I was his partner for an Operating Systems project where we built a distributed file system using Bamboo and for a Database project where we built an Amazon-like online grocery store. He’s a pretty smart guy and is usually on top of the latest stuff, so I figured it’d be a really good talk.

The Google App Engine basically allows web app developers access to some neat Google API’s and to have Google servers to host their application and its data. The main things I got out of the talk were:

  • Relational Databases don’t scale well. If you create an insanely popular app, your Relational Database could end up becoming a bottle neck. Google got around this by creating their own Database Management System called BigTable. The Google App Engine lets you use BigTable for you apps.
  • BigTable uses GQL, an SQL-like query language.
  • Using the Google App Engine is free, however, there are certain storage and bandwidth limitations. I’m assuming that in the future they’ll charge users to go beyond the set limits, however, currently you cannot buy more space or bandwidth.
  • If your application requires users to verify themselves, you can set things up so that users log in with their Google username and password.
  • The same Google API’s that are available to in-house Google developers are available to you.
  • Currently all Google App Engine apps have to be written in Python, which kind of sucks since it adds a barrier to entry. They do plan to support other languages, but that will be at some unknown point in the future.

I came away from the talk pretty impressed, however, I think I’ll wait to see what other languages they’ll support before trying it out.

Besides the talk, it was neat to walk around campus again. It was a nice cool Fall day and everyone walking around seemed pretty laid back. I miss being able to get up at noon and then to waltz over to the food court to get some lunch. Everyone looked really young too, I wondered if I looked old to them. The experience reminded me of when another friend of mine stayed in my dorm room for St. Patrick’s Day after having been out in the working world a year. It seemed refreshing for him to be out walking around the campus again. He kept joking about wanting to be a life long college student and to get all of the degrees the school offered, which I think would be a lot of fun, if it paid well and people didn’t age (you wouldn’t want to be the old creepy guy living in the dorms).

Anyway, if you have any thoughts or opinions on the Google App Engine feel free to share them. Right now I can’t recommend it one way or the other, since I haven’t tried it, but from all appearances, it looks really cool.

Keyboard Layout Analyzer Now A Mashup

I just finished a very small glass of Disaronno, an Italian liqueur. I’m never sure if you’re supposed to take shots of liqueurs or if you’re supposed to drink them straight. I don’t think I’d want to do a shot alone, and Disaronno is really tasty, so I figured I’d use it as a night cap. Anyway, it’s almost 1:30 and tomorrow I have a doctors appointment at 8 so I should probably get to bed really soon. However, I’m having a hard time getting myself to hit the hay since I’ve been almost finished with my Keyboard Layout Analyzer for a few days now (I decided to rename it from Typing Analyzer since its really analyzing the layout and not the typing).

I’ve had a lot of ideas over the past two weeks, and rather than go in depth on every detail I’ll give you a really quick run down of this app’s updates:

  • Pie chart statistics were added for finger, hand, or keyboard row usage. The pie charts were created using Plotkit, an awesome javascript library that uses Mochikit. I don’t know much about Mochikit, but according to Google Trends and its website’s own lack of updates, its future doesn’t look too promising. Which is a shame, since Plotkit is really cool.
  • The hot spot visualization was fixed for IE6 users. Apparently IE6 does not like transparent PNG files.
  • A tab view was set up to make viewing the data easier. The tab control comes from Yahoo’s kick ass YUI library.
  • A fade-in/fade-out effect was added when processing data. I figured this way of displaying information would make more sense to the user. I noticed when I showed my parents to app my mom didn’t realize she needed to scroll down to see the output. This feature doesn’t work 100% of IE yet, but I’m deciding it works “good enough” for now.

To see the app just click the following link: Keyboard Layout Analyzer

Let me know if you have any problems or have any suggestions.

I Feel Kind of Nerdy

So I was thinking to myself today, “When would I ever use the Typing Analzyer?” The only situation I can think of would be if I got into some kind of argument over which keyboard layout was best, and even then I think I’d be kind of hesitant to play that card. Oh well, I think this project is one of those ones that is neat to make, but isn’t really that useful. Hopefully it can give passer-byers a couple minutes worth of amusement or possibly get someone to check out an alternative keyboard layout.

Besides questioning the relevance of what I’ve been doing, I’ve also made a few updates:

  • Added “Left Hand Dvorak” and “Right Hand Dvorak” layouts
  • Updated layout graphics
  • Added the Shift and Tab keys into the calculations
  • Fixed the IE issues (I’ve gotten in the bad habit of only checking my work in FireFox)
  • Added a personalized keyboard layout to the output

I stole the last idea from Tritonio, who created his own app for layout generation. I thought the idea was really really cool so I put it in (I’ll make sure and give you a link on the app’s page, once I straighten out the “Other Typing Resources” section). Right now the generated layouts are kind of silly, though they have some semblance of being correct.

I aim to finish up this app next week. I’m going to tweak a few things and then add in some stats and pie charts on finger usage. After that I’m going to move onto a new web app. After a brainstorming session earlier this month I’ve got a collection of neat ideas I want to explore. Part of me wants to do a web app a month until the end of the year, but I don’t want to set goals I’m not sure I can complete. I’ll do the next one and then decide where to go from there.

New Web App: Typing Analyzer

I’ve created a new web app that allows you to analyze and visualize the typing patterns you create when you use a Qwerty, Dvorak, or Colemak keyboard layout. You can find it here: Typing Analyzer.

If you have no idea what I’m talking about, the keyboard layout you’re currently isn’t the only one that’s out there, and not all keyboard layouts are created equal. Some are better for your wrists and allow you to type faster and with more comfort. Here are the layouts of the keyboards I mentioned above:


Qwerty


Dvorak


Colemak

My interest in keyboard layouts came after I read a Discover magazine article entitled “The Curse of QWERTY”. The article tells the story of the Qwerty and Dvorak keyboard layouts and makes a compelling case for switching from a Qwerty layout to a Dvorak layout. Here is a quick summary of its most important points:

  • The Qwerty layout was created in the early 1870’s before touch typing and without speed or comfort in mind.
  • The Dvorak layout was created in the 1930’s and is based on years of research. It takes speed and comfort into account.
  • On average, the left hand does 56% of the typing when a Qwerty layout is used. With a Dvorak layout, the right hand does 56% of the typing.
  • The Dvorak layout forces you to alternate hands more frequently when typing, this causes you to type faster.
  • Users type fastest on the home row. With a Qwerty layout, only 32% of your typing occurs on the home row. With a Dvorak layout, 70% of your typing occurs on the home row.
  • It’s hypothesized that the Dvorak layout will make it less likely that you’ll develop Carpal Tunnel Syndrome (CTS).
  • Anecdotally, people who develop carpal tunnel syndrome seem to find relief when they switch from a Qwerty layout to Dvorak layout.

There are more reasons, but those were the ones that stuck with me. I was so convinced by what I read that I switched my work and home keyboard layouts to a Dvorak layout by configuring some Windows XP settings in the control panel (to see how click here). This lasted for about 6 days (3 of those were over the Labor Day weekend), and then I had to switch back since learning the Dvorak layout was slowing me down at work. I also discovered that the Dvorak layout made all the nice Qwerty keyboard shortcuts (Undo, Cut, Copy and Paste) virtually unusable. This was a big minus since I use those shortcuts constantly. The Dvorak layout also over worked my right pinky. I found myself having to take typing breaks, something I hadn’t done since high school.

After talking to someone who had Carpal Tunnel Syndrome (something I’m worried about getting), I learned about yet another improved keyboard layout that preserved Qwerty’s bottom row short cuts and didn’t put massive amounts of stress on the right pinky. This layout was known as the Colemak. Unlike the Dvorak, the Colemak layout is relatively new (developed within the last 5 years), doesn’t have a lot of research behind it, and it doesn’t have a very large following (online estimates put the number of users between 650 and 1,300). It also wasn’t on my computer at work (I can’t install things on my work computer) so in order to use it, I’d have to talk to some sys admin people. However, the layout looks really promising.

All of this research is what motivated me to create the Typing Analyzer. I wanted to visually compare my typing patterns with the different layouts and get some stats on what hand and which fingers I was using the most (a feature I’ll put in soon).

Hopefully the user interface is straight forward enough. Its in the same vein as the Image Color Palette Generator and the Color Fader, but with some adjustments. I decided to start the page off with a section explaining which fingers you use for which keys, since I know a lot of people don’t know the exact fingerings. In fact, I know people who constantly use a computer yet still hunt and peck for keys. After the chart comes the application’s controls and after that comes a section for the output.

I have more features in mind for this program, but I figured I’d release what I had now just to see how it’d be received and to see if anyone had any suggestions. The other ideas I have in mind are:

  • Allowing a user to enter in a feed URL, so that the program can analyze all of their blog posts instead of having the user paste the text into the text box.
  • Give stats on finger and hand usage. Possibly also include pie charts.
  • Give recommendations to the user on which keyboard layout would benefit them the most.

Oh…

And I haven’t forgotten about patrickgillespie.com. I’m just not as excited about it as I was 10 days ago. I’m going to let myself mull over some more ideas before I take any action. I still don’t think I have the right idea for it yet.

Thinking Out Loud

Right now my plan is to make patrickgillespie.com a depot for random projects and ideas. I was thinking that it might make sense to move some of my more random content (the miscellaneous section and Javascript games) this new site. That’d allow me to narrow the focus here to tools and programming.

For this new site’s interface, the main idea I was throwing around in my head was for the user to see a bunch of images floating through space. Each image would represent a piece of content and none of the content would be related. The idea would be that this was just a bunch of random stuff floating through cyberspace.

I whipped up a quick prototype using Van Halen album covers, which you can see by clicking the above link, and was unimpressed with the outcome. The movement ended up being pretty jumpy, and I’m not sure I like how the images just disappear when they “hit the screen” (when they do that they’re reset to way back in the distance). I’m starting to think that this kind of stuff is best left to Flash. There’s also some other issues, but since this is just a prototype I didn’t bother with certain details.

Right now I’m thinking of stealing my slider puzzle’s interface for patrickgillespie.com since I liked how that came out and nobody ever uses that thing anyway.

I’m Not Dead

I’ve had a hectic past few weeks. Not the normal kind of “oh man I’m stressed”, but the “holy shit I’m stressed” kind of weeks. Things appear to be calming down now though. I’ve been thinking about new things I can do for this site, but all I’ve got so far are a bunch of half finished ideas and projects. Things coming in the near future (next month or so): A new version of the Image Color Palette Generator, the source code to that project, and a rough draft of patrickgillespie.com. The patrickgillespie.com project is the most fun, so that may be out first.

Web App URLs

I’ve decided to change the URLs to my web apps so that they are one level down. Basically, I think having someone type “patorjk.com/software/taag” is a little much. It’s easier to remember “patorjk.com/taag”. The “software” text doesn’t really add much value. I haven’t moved them all yet, and when I do I’ll 301 redirect the old links, but I figured I’d let people know my reasoning for doing this.

Exits

Months ago I removed my links page. I did this because I was replacing it with the links you see in the left panel under the headings “Interesting Blog Links” and “Programming/Hacking Links”. I’ve now decided that it was a mistake to do this. I’m going to keep the links in the left hand panel, but I’m also going to add the links page back in. It will now be called “Exits“. I haven’t had time to fully populate this page, but you can expect the Exits page to grow over the next few weeks. In the mean time, if you’re bored, here are some amusing sites to waste your time with:

Where is Bob? Tales of an Absentee Manager – A really funny blog about a manager named Bob who terrorizes his IT employees. I get the feeling this is fiction, but it’s still a fun read.

The Trolls Among Us – One of the most fascinating articles I’ve read in recent memory. A reporter dives down into the world of internet trolls.

Riddle Me This

Lately I’ve been exchanging riddles / mind puzzles with some coworkers of mine. I’m not really sure how it started, but one ended up on my white board at work and before I knew it everyone wanted to know the answer or had their own riddle to challenge me with. I’ve collected up some of my favorites. If you’re unfamiliar with one and you solve it, feel free to post your proposed solution as a comment.

As far as site updates go, I have some coming, but I’ve had a distracting past couple of weeks. Since January I’ve been suffering from tinnitus (ringing in the ears), but it didn’t really get bothersome until the middle of last month. I ended up going on a huge research quest for a cure, but it appears there are only things you can take to prevent tinnitus (NAC, antioxidants) and nothing that’ll really cure it. Right now it’s at a volume I can deal with, so I’m fine, but I want to caution everyone and let you know its important to take care of your hearing. Also, avoid things that are too good to be true. There seems to be a lot of snake oil out there when it comes to tinnitus.

Anyway, enough of my personal problems, on with the riddles…

1) In front of you there are ten boxes of books and a digital scale large enough and strong enough to hold all of the boxes when they’re filled with books. Inside of each box is ten books. In nine of the boxes, the books weigh 1.0 pounds each. In one of the boxes the books weigh 0.9 pounds each. Using the digital scale only once, how do you determine the box that contains the books that weigh 0.9 pounds? You may take the books out of the boxes and you can assume the weight of each box is 1 pound.

2) You’re one an island and you want to get off of it. There are two caves off the island. One leads to certain doom while the other leads off the island. In front of the caves there are two guards. One always tells the truth and the other always lies. You do not know which one is which. You may ask one question which they both will answer. What question can you ask that will guarantee you pick the right cave to get off of the island? [Editors Note: After much discussion, we discovered there were actually multiple answers to this question, so if you know the answer, try to come up with another one]

3) Four men are standing in a row. They are ordered tallest to shortest. The tallest man is facing west while the other three men are facing east. Each man is wearing a hat that is either black or white. Each man knows that there are 2 black hats and 2 white hats, however, they do not know the color of the hat that they are wearing. The tallest man cannot see anyone’s hat, the next tallest man can see the hat color of the two men in front of him, the next tallest man can see the hat color of the man in front of him, and the shortest man can see no one’s hat color. Imagine that the hat ordering from tallest to shortest is: black, white, black, white. Where the tallest person is wearing a black hat and the shortest person is wearing a white hat.

None of these men can move around, however, they can talk to each other – though they do not have to be truthful when answering each other’s questions. As soon as a man figures out his hat color he screams it out (and he cannot scream unless he really knows his hat color). Which man can figure out his hat color and why? [Editors Note: This one is easier if you draw it]

4) You have 25 runners. When raced, they always perform the same, and no two runners perform identically. You can only race 5 at a time, and once a race is over, the only information you get is the order that they finished in. How do you determine the fastest, second fastest, and third fastest runner using only seven races?

5) This was the puzzle that started it all. No one I’ve told it to has been able to figure it out. And it always takes a while for the answer to make sense.

Did Yahoo Punish Me For Reporting Spam?

I’m a little prone to conspiousy theories, so I might be jumping the gun here, and I may end up looking totally silly, but I think Yahoo deleted my Color Fader from of their index after I reported some spam in their search results.

A little background: For some reason most of the pages on this site don’t rank well in Yahoo. For the month of May, only 1.87% of my visitors came from Yahoo. That’s compared to 46.37% that came from Google. The Color Fader was the only page that really pulled in visitors from Yahoo. It used to rank #1 for the search phrases “Color Fader” and “Online Color Fader”. Those phrases only brought in around 20 visitors a day, but that’s better than nothing.

Anyway, seeing as these are the only phrases that bring me anything from Yahoo, I check them out every once in a while to see where I am. Around 3 weeks ago I noticed a new site was #1 for them (not unusual – the results tend to get shaken up every so often). However, this new site had the exact same title as my site, so I was a little curious. I opened it up and discovered the page was just auto-generated gibberish with lots of ads.

I was annoyed, but figured I’d just report the site to Yahoo’s Customer Care. In my note I said something like “I was searching for my site when I discovered one that had the exact same title. This site turned out to be auto-generated spam with lots of ads.” I’m not sure why I mentioned I was searching for my own site, I guess I was just typing off the top of my head.

After I submitted my report, I got an email confirmation saying it’d be processed within 48 hours. I checked back twice within that time period. The first time both sites were there, although mine had recaptured the #1 spot. The second time I checked back, both sites were gone.

At first I thought they’d just done some reindexing and I’d fallen a bit. However, after some pretty thorough searching, I found that my app, along with that spam page, was gone from their index. I quickly filled out a resubmit form explaining what I thought had happened – that the reviewer had accidentally deleted my site. I read my message over a couple of times to make sure it was short and polite and then sent it off. A day or so later I got back this reply:

Hello Patrick,

Thank you for writing to Yahoo! Search.

If you are not seeing your pages in the Yahoo! Search results, they may
not have been indexed or they may not be in the top results for the
searches that you are conducting. Here are some Yahoo! Help resources
for submitting your page to Yahoo! Search:

http://help.yahoo.com/l/us/yahoo/search/indexing/indexing-06.html

and for improving your site’s ranking:

http://help.yahoo.com/l/us/yahoo/search/ranking/ranking-02.html

in the Yahoo! Search results. There are no current indications that your
pages have been blocked from the Yahoo! index. Please note that all
pages are at all times subject to Yahoo!’s Content Quality Guidelines
located at:

http://help.yahoo.com/l/us/yahoo/search/basics/basics-18.html

Thank you again for contacting Yahoo! Search.

Regards,

Carmen

So according to that email I wasn’t blocked, which was good. However, something still didn’t seem right to me. It seemed like too much of a coincidence that my app and the spam page would disappear from the index at the same time. So I decided to check out Yahoo’s Site Explorer to see what it had on my Color Fader. This is what I found (note: searching with the “www” brings up additional links):

So for some odd reason only the style sheet for the Color Fader is in the index, and not the Color Fader page itself. Even though the links it has recorded for the Color Fader URL point to the app itself and not its style sheet. That seems really bizarre to me. My gut feeling tells me that the page was removed and didn’t drop from the index due to algorithmic reasons. I’m guessing it was either removed by accident, the person processing the spam report just glanced at the URLs and decided to remove them both, or the guy processing the request just didn’t like the fact that I was searching for my own site and decided to knock me off too. The last idea is a little cynical, but my mind tends to wonder all over the place when stuff like this happens. I suppose it could also be a quality issue, but I’d be surprised if that was the case since I don’t think I did anything particularly egregious in my design.

I probably shouldn’t care too much, the Color Fader is kind of girly app, but it annoys me when I try to do something good and then ended up getting punished. As thing are right now, I wouldn’t recommend reporting spam pages to Yahoo, since they might remove your content along with the spam.

It’s been over two weeks since I sent them my last email. I may try to resubmit the site again later today, however, if I say blocked, I stay blocked. It’s annoying, especially since I was beginning to like Yahoo, but I’m not going to lose any sleep over it.

Minor Updates and Future Plans

I’ve spent the past couple of hours researching VPS (virtual private server) hosting. It’s apparently the next step up after shared hosting. This site isn’t at that level yet, however, I suspect I’ll probably need to upgrade if I keep creating web apps. Anyway, I’m not sure I really made any progress. There are a lot of VPS hosts that look nice, but they’re either too pricey ($100+ a month) or I get horror stories when I Google things like “[hosting company] sucks”. It’d be nice if my current host offered VPS hosting, though according to their forums, they don’t plan to do that anytime soon.

Anyway, over the past week I’ve made a couple of minor updates. I’ll enumerate them below.

  • The Snake game was updated to use a snazzy YUI loading dialog (see image below). The loading time is strictly taken up by div creation. I create 2000 divs so the snake can grow without any pauses when you “eat” the red dots. There’s probably a better way to do this, but I haven’t thought of it. Also, a lot of little updates were made to the Snake game, however, you probably wont notice the difference since it’s little stuff that only I’d care about. I know I said this before, but I’m now officially leaving this game alone (with the exception of bug fixes and possible significant performance improvements).
  • The dual-thumbed slider bars on the Text Color Fader and Gradient Image Generator were updated so that the thumbs will move when you click on a color.

What’s Next?

I’m thining of making a couple more simple web apps for the site. Right now that’s just what I’m into. I spent a few hours this past week reading some tutorials on jQuery, and it looks really cool. After that I may do some C# or VB stuff. The programming section of this site recently became more popular than the software section, so I’m thinking I should probably try to expand that more – though I’m not sure what angle to take (the old VB stuff is what’s pulling in the visitors). I may make some quizzes, those were fun back in the day and they’re easy to whip up, but I don’t want to get ahead of myself.

I think the forums are officially dead. They had some good exposure. I just don’t think they were targeted right for this site’s audience. Plus there seems to be database issues. Oh well though, there were a couple of interesting topics. I’ll leave them up for the next week or two, but after that I’ll probably take them down.

Rethinking The Color Fader User Interface(s)

I’ve split my color fading app into two new online apps with interfaces that utilize Yahoo’s YUI. You can see them here:

http://patorjk.com/software/colorfader/
http://patorjk.com/software/gradientimage/

The new designs are meant to be more concise, cleaner, and easier to use. I tried to think up a nice way to let the user manipulate lots of colors without it looking cluttered. The old design had the problem where the input colors were stacked vertically. The more colors one decided to use, the longer the page got. To fix this, I decided upon using a two thumbed slider bar and a horizontal row of colors that would shift depending on what your selection was (see image below). One thumb indicated the number of colors the user wanted to use and the other one indicated which color the user was currently editing.

I thought it was a really clever way of handling the problem, however, after watching a couple of people try to use the app, I realized it wasn’t that intuitive. People kept clicking on the colors they wanted to edit. And when that wouldn’t work, they assumed there was something wrong with the thing (no one bothered to read the instructions). Oh well. I made a modification to it to allow “color clicking” selection to work.

Hopefully this is the last time I do a complete redesign this program(s). I’ve been perpetually annoyed with myself over the past 3 design jobs I’ve done with it. I was actually working on something else for a while, but for some reason I got side tracked, oh well. I think I have programmer ADD sometimes.

Anyway, both redesigns were finished tonight, so there may be a few bugs. Let me know if you have any problems (or suggestions). The widgets I used from the YUI were the two slider bars and the color picker dialog.