2008 Is Coming To A Close…

The end of 2008 is approaching. It’s been a good year for this site. I’ve learned a bunch of new things, and the site grew significantly in its content and daily traffic.

Right now I’m enjoying the holiday, so I don’t have any new content to add, however, I figured I’d post up my patorjk.com-Related Goals for 2009:

  • Get good at JavaScript. It’s been a while since I’ve felt like I was really good at a particular language. At work, I was referred to as a “language person” by my boss several times since I seemed to be able to dive into any language they threw at me. Versatility is good, but sometimes I feel like I spread myself too thin. I could possibly get really good at Tcl, since I do a decent amount of Tcl programming at work, however, Tcl isn’t that fun of a language and it doesn’t easily do the things I would want to do (I could rant on and on about the pros and cons of Tcl, but I’ll spare you all).
  • Learn jQuery. Right now I’m learning Dojo, but I’d also like to learn jQuery, since I know my company uses and it appears to be the most popular JavaScript framework. Being familar with a couple of these frameworks is probably a good thing too.
  • Develop More Web Apps. I only released 4 total this year (not including ones that were re-done). This is well under the number I wanted to release. In the future I hope to release one a month, however, I don’t want to set myself up with an impossible goal, so I’ll just say I want to make more.
  • Read At Least 4 Programming Books. I’m going to leave 2008 having read 2 completely and 4 part way through. Books can be a great motivator and a good source of learning.
  • Join A Programming Community. I wasn’t able to relaunch the patorjk.com forums this year, however, I do still miss the community of the old forums.
  • Write A WordPress Plug-In. WordPress is the name of the blogging software I use. I’ve played around with it a bit, but I haven’t really tried writing my own plug-in.
  • Release Some Programming Examples. It’s been too long since I released one.

It’s 3:30AM right now, so there may be a few I’m missing, but I think those sum up my mind set right now. Professionally I think I’d like to get back into .NET programming (I miss VB, but for a hobby, I want to stay focused on something, and right now I’m more into web programming than I am into Desktop apps). However, I have no idea what I’ll be doing this next year or even how much I’ll be able to say about it.

2009 year should also be a big year for me personally. Right now I’m looking for a house with my girl friend, so I’m really excited about that. Also, my awful case of tinnitus (constant ringing in the ears) has gone down by about 75%-90% thanks to my switching toothpastes from one that contained Potassium Nitrate to one that didn’t (sensitive toothpastes typically have Potassium Nitrate), and I think it may go completely away. If you know anyone with tinnitus, be sure to pass on this bit of info.

Anyway, I hope you all are having a happy and safe holiday and I hope you keep checking back in!

The Dojo Toolkit… Hrm…

A few days after I posted my previous entry on the JavaScript books I was reading, I got an email from a book publishing company asking if I was interested in a free review copy of their latest JavaScript book. I was a little skeptical at first, however, after a brief chat, the only string attached was that I write blog entry on what I thought of the book. This seemed like a fair deal, so I decided to take them up on it.

Since I’m getting something for free, I figured the honest thing to do would be to open about it so people don’t think my opinions are biased, since I do tend to gush about stuff I like (YUI, Google Alerts, etc.). When I don’t like something, I usually just don’t write about it. However, if this book ends up sucking, I will be brutally honest about how much it sucks. Though based strictly on chapter 1, the book appears as if it will be a pretty decent read.

Anyway, the topic of the book is The Dojo Toolkit. Dojo is a free open source JavaScript library that provides a number of widgets and utilities, much like jQuery and YUI. Right now I’m unsure of how it compares to these other frameworks, but it looks very promising based on what I’ve seen so far from various Dojo websites. The charting package looked particularly interesting.

Hopefully I’ll learn a lot of cool stuff about Dojo. I wont pretend to be a JavaScript expert, so the review I’ll write will most likely be in the same style as my last review – though probably a bit more thorough. For those of you who are curious, the book is called “Learning Dojo” (that’s the book’s actual website, this is not a sponsored link and I don’t get anything if you buy the book – not that you shouldn’t buy it, I just want to be clear since that page is mostly about buying the book).

After I finish this new book I’m going to get back to my JavaScript Design Patterns book (which it’s really good so far – though I’d only recommend it to hardcore JavaScript developers). And after that I’m going to get back to writing stuff for this site. Hopefully all of this reading will pay off with some nicer apps, tutorials, and programming examples.

Reading Up On Javascript

Shortly after finishing the beta version of my Typing Speed Test I started to feel like my knowledge of Javascript had some holes in it, especially in the event handling area. It’d been a long time since I’d read a book on Javascript, so I figured I’d pick one up one to help fill in the holes in what I knew.

I looked around a little bit before selecting “ppk on Javascript”. I chose this book after reading some of the author’s online articles. They were easy to read and contained a lot of interesting tidbits. I don’t want to turn this entry into a book review, so I’ll just say I enjoyed the book and would recommend it. However, the book admittedly doesn’t cover certain topics like OOP in Javascript. Though even with its omissions, it still ended up covering a lot of ground. The major things I took away from the book were:

  • Event Bubbling vs Event Capturing – I feel bad I didn’t know about this. It answers the question: If an element and one of its ancestors have an event handler for the same event, which one fires first?
  • location.href vs location.replace – It’s best to use “replace”. This is because replace doesn’t create a new history entry in the visitor’s browser. This is a good thing, since you don’t want to make a user’s back button useless.
  • The navigator.userAgent string has an amusing story behind why its value is so convoluted.
  • getElementsByTagName – I didn’t know about this DOM function. It looks like it could be really useful though.
  • DOM Tree Text Nodes – When you create an HTML document, the text between tags and the text inside of a particular tag become text nodes. IE doesn’t support empty text nodes while other browsers do, this appears to make modifying the DOM tree a pain.

There were other things too, but those are what stick out in my head while I type this. I’m really glad I read that book. It reminded me of how useful programming books are (I had gotten too use to just Googling whatever I didn’t know).

Right now I’m a little more than 50 pages into “Pro Javascript Design Patterns”, which covers design patterns and OOP in Javascript. So far it’s really good. I had been meaning to read up on design patterns for a while so I’m pretty excited about this new book. I’m averaging almost 20 pages a night, so I should finish up pretty quickly. Once I finish, I’m going to get back to creating content for this site. I may make some posts in the meantime, but I figured I’d give you all a heads up as to what I was doing so you didn’t think I had forgotten about this site.

Scaling Back Ads

I figured I’d announce that I’ve decided to scale back the ads on this web site. Something about putting ads on this blog has always felt a little odd to me. The extra revenue is nice, but I’m not sure its actually worth the commercialization ads bring.

There are still two ads on the site, the Google Custom Search box on this blog’s sidebar, and an ad on the Text Ascii Art Generator (TAAG). The search box is actually functionally useful and the ad on TAAG will still allow a little bit of change to trickle into the site. I don’t plan on adding any more ads until I need to upgrade hosting services.

Part of me wanted to justify my decision with the idea that “ads turn away visitors”, so I decided to make a chart pitting TAAG (which has an ad) and against the VB Array Tutorial (which doesn’t have any ads). Surprisingly, it appears that the ad on on TAAG didn’t have a noticeable negative impact on the number of visitors it received:

This might be like comparing apples to oranges, since both pages probably appeal to a different group of people. However, TAAG’s ad was added in April, so if it bothered visitors I’d expect its growth to go down after April, but instead it seems to have continued on with the normal growth of this site (the spike in June is due to it being popular on StumbleUpon for a few days). This doesn’t change my opinion on removing ads from the blog, I still feel they add an unwanted commercial element to a personal outlet, however, I figured I’d post up this chart for those of you interested in how ads may/may not effect site growth.

Live.com’s linkfromdomain Operator

Most people are pretty familiar with Google’s Advanced Search Operators. You can use them to more preciously search for web pages or particular data. Anyway, earlier today I discovered that Microsoft’s search engine, live.com, has an amusingly useful search operator that Google doesn’t have. It’s called linkfromdomain. Now, this isn’t new news. I did some Googling and the operator has been around since late 2006, however, since not very many people use live.com, I figured some of you might find this info useful.

The linkfromdomain operator allows you to search the websites that a particular website links to. For example, if you search for “linkfromdomain:patorjk.com“, you’d get a list of all of the sites I link to throughout this website. At first glance this may not seem that useful, however, it allows you to ask some interesting questions as an individual and as a webmaster. Here are some examples:

I don’t think Google currently has the ability to answer any of those questions, which is a little surprising. Anyway, there are probably lots of other neat questions you can form using the linkfromdomain operator. It’s definitely something to keep in mind when you’re surfing the web.

New Web App: Typing Speed Test

I figured a good companion for my Keyboard Layout Analyzer would be a Typing Speed Test. Right now the program is pretty bare bones, however, it does have a few neat configurable options. You can test your typing speed skills against typing words drawn from a database of the 978 most common English words or against words drawn from a database of the 1000 most common “SAT words”. You can also vary the time settings. You can type for 60 seconds or until you’ve finished typing a certain number of words.

In the next week or two I hope to add output stats about which fingers and keys were typed the fastest. I think I also want some more creative text inputs that a user can select from. Maybe programming code, text from popular books, and song lyrics. How fast you can type a given programming language probably isn’t that useful, but it might add to the fun factor. If you have any suggestions or comments about the app please let me know. It was written pretty hastily in my spare time during the past week, so it’s still a little wet behind the ears. However, I did test it in IE 6.0, IE 7.0, FireFox 3.0.3 and Opera 9.24, so it should work fine.

DoFollow WordPress Plug-in

As a way of saying thank you to people who comment and as a way to encourage more people to comment (as long as they don’t spam), I’ve installed the DoFollow WordPress plug-in. Basically, it makes it so linkjuice is passed onto the websites of people who comment. I will nofollow links of people who I think are being spammy, but I figured I’d be a nice/easy way of saying thanks to the people who do decide to say something.

Happy Halloween

Lastly, since the 31st is approaching…

My pumpkin is on the far left, it’s supposed to be two bats. I should probably stick to programming… it was a lot of fun though. If you have a few extra hours, it’s worth revisiting. For me, it’d been almost a decade since I’d carved a pumpkin.

A Round Up Of Updates

Listed below are some small updates that have happened over the last week.

  • The Color Fader now has a neat fade-in/fade-out interface. I figured this was more intuitive than telling the user to scroll down every time they hit the “generate” button.
  • The Keyboard Layout Analyzer now has information explaining what it is and contains a handy chart mapping fingers to keys.
  • I helped out Franz Tarr on a neat little VB app that lets you set the transparency of windows. It’s pretty simple and comes with its source code. I only helped out and didn’t write the app. Since Franz seemed like a cool guy I told him I’d mention his program in my next site update.

Somehow I felt like I did a little more than that, but that’s all that’s coming to mind right now. New stuff is being worked on, however, I’m not sure when it’ll be ready to be posted up.

Is Someone Pretending To Be You Online?

Hopefully I’m not making myself seem like too much of google fanboy, but the other day I found a neat little tool by them called Google Alerts. Google Alerts allows you to monitor search results for key phrases you input to it. When a new webpage gets indexed for that key phrase, and it ranks above a certain threshold, you get an email telling you about the webpage. Though you can schedule these emails to only come at certain intervals. The idea is that you can get the latest info on topics you’re interested in. I thought it sounded useful, so I signed up for a couple of key phrases.

This morning when I opened by email, I found an alert telling me about this website. When I clicked it I found someone with the username “patorjk” was asking a question about Excel. Below you can see a screen capture of the post, my mouse is hovering over “patorjk”‘s username in this shot.

At first I naively thought to myself “whoa, another patorjk, I wonder if its a married couple or something…” So I clicked the username to see the user’s profile. Lo and behold, the user’s profile stated that their name was “Patrick Gillespie” and that they were from Baltimore. What the hell!? The statistical odds of there being another Patrick Gillespie with the internet pseudonym “patorjk”, who lives near Baltimore and programs computers, are basically zero.

I should also note that I had only been awake for about 2 minutes at this point, so I was kind of groggy. At first I thought it had to be some kind of joke, like that fake presidential candidate video going around, but everything I looked at pointed to it being real. So then I wondered what the exact motive for this person was. Was it sinister? Was it that the person was just lazy? Did the person just latch onto my name for some reason (maybe they have a patorjk shrine in their room)? I couldn’t really tell from their posts, but I did notice that they started signing them with the name “Murali Krishna”. So maybe at some point they decided they wanted to be themselves again. patorjk.com doesn’t get massive amounts of traffic, so pretending to be me is really weird and makes me wonder about the mental state of the person. I’ll report the user to the website’s owner if they don’t voluntarily delete their account or change it so it doesn’t look like they’re trying to be me. However, I figured I’d give them a chance to do it themselves or to at least say their piece, since there may be a mix up of some kind somewhere.

Anyway, besides keeping up with the latest trends, it appears as if this tool can also clue you in on when weird stuff is happening regarding your name or website. Whether its someone talking about you or someone trying to pass themselves off as you – whether they’re trolling, trying to slander you or trying to steal your identity. If you run a website or have an online pseudonym, I’d recommend creating a Google Alert for them. And although this post has focused on the negative, most alerts will probably bring you positive news.

Sept. 2, 2009 Update: About a month after this post was made the site owner contacted me to figure out what was going on. We did a little detective work and discovered that the problem was due to some database issues he had when he moved his site. Apparently I had created an account for his forum around 7 months before making this post, but never made any posts (I probably created an account thinking I’d post something, but then forgot about the site). When he moved the site, some accounts ended up getting mapped incorrectly, and the “patorjk” account ended up being one of them. He had been fixing the accounts manually when people complained, but “Murali Krishna” didn’t come forward wondering about his old posts, so they remained under “patorjk”. When Google saw the newly updated posts had “patorjk” in them, it alerted me via its Google Alerts. So “Murali Krishna” isn’t an impostor, his posts are just the result of a database mix-up.

When what had happened had been figured out, I think the webmaster was kind of embarrassed, though he didn’t say much. I didn’t want to do a post saying “hey, look at this guy’s mistake”, so I figured I’d say what happened if someone asked me. However, this post still gets a little bit of traffic and the “Murali Krishna” posts are still under “patorjk”, so I figured I’d put a small little update in this post for those of you who are curious as to what happened afterwards.

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.