SEO Considerations on AppEngine

In moving to AppEngine I also put in a bit of effort to make my site more SEO friendly and searchable. Hopefully it helps. I detail some of it in this post.

Read more at SEO Considerations on AppEngine

This is now running on Google's AppEngine

I recently changed the backend of this website from a Rackspace cloud server to Google's AppEngine, and I really appreciate the one click deploy. It's been a long time coming, but advances in tooling made it super easy.

Read more at This is now running on Google's AppEngine

Flurry of Posts

I will be making a series of posts. Basically, I find the stuff I write on twitter is hilarious :D And it's only available on twitter.

Also, I was working on a guitar project. I am a huge fan of The Kinks. So I recorded myself playing guitar along with the entire Kinks - We Are The Village Green Preservation Society album. It's my favorite. The project was: Record myself playing guitar, figure out the songs that same day (usually, I did know a few already), it would have to be recorded on my cell phone, and mistakes are allowed!

So generally, the quality is bad and the playing is ok. The music is still great though. Here it is, the Village Green Office Sessions

For twitter posts, I'd probably like to write something that scans twitter for my posts tagged with a certain tag and import them automatically as posts. But I'm in a transition period on this site. Basically I want to learn Google's Cloud suite of tools and rebuild it there. So updates will have to wait.

Got you

Last month, I had a massive bill from rackspace for my servers. Apparently the server acquired a trojan that was constantly downloading new versions of itself. At rackspace, pricing is $0.12 per GB of transfer. My server, after slowing to a crawl for a few days, sending out data, did about 3 TB worth of data in December, racking up my charge for that month to over $400.

After I found it I reimaged the server that was infected, after moving all of my databases and everything over to my backup next gen server, and it was clear. For a month.

Yesterday, I found the same virus running on both of my servers. This time, dedicated to tracking it down, and also having time to, I found it. More importantly, I found out how to get rid of it, but I haven't found out how exactly it found its way onto my server, or how to protect against it.

It is the Linux / DDOS trojan. It has an embedded rootkit. It is impossible to find by googling "Linux virus" as part of your search, as the only results returned are in relation to how Linux doesn't get viruses...

That article wasn't written at the time of the previous infection, and luckily I came across it this time. Otherwise, I would have had to re-image both servers, causing lots of down time. That was a pain, but at least now I know what was causing it, if that bastard finds his way onto my servers again.

I don't write good

I mean, I could, if I really cared about the writing I would sit and think up some points, counterpoints, develop a story, engage the reader.

But instead, I spend that time and effort writing code and I just want to put code samples up with some description of what's going on, so my writing has taken a severe hit over the past decade or so. Although I was reading through some of my old posts and some genuinely made me laugh out loud.  So I write for me, is one aspect of it. Also I structure some sentences weirdly... "So I write for me, is one aspect of it".  This is just evidence of a severe lack of thought process in writing. However, I believe my code is pretty nice.

I remember a writing class I took in college, I had started out, my first paper was a D+ or C-, something bad like that. These were 4-5 page papers on whatever subject with a pre-determined theme. By the end of the semester, I was cranking out As because I learned so much about writing in such a short time. That professor was very good, and I forget his name.

All memories of what I learned in that class are long gone, and you're stuck with dealing with unstructured ramblings with snippets of code strewn about, but at least the image at the top of the page changes every time you refresh the page. So life goes on.


I have made my site a bit prettier.  I brought in bootstrap for some UI elements, like tag list and the year accordions on the right side, as well as the fixed header. I don't know how much more I plan on using Bootstrap for this site though, but I use it a lot in other places.

I was messing around with the fonts and decided I could use big bigger post titles as well as a different overall body text font.

Since I'm not the best with colors, I tend to just pick greyscale and use different combinations of various intensities of grey, black and white to get the job done. The header images are where the color is :)


I should write more Node.js posts

They are consistently my top rated posts from an SEO standpoint. Also, according to Google Analytics, they lead to an average of a good 5 minutes on the site.  I will come up with more, but I feel like I'm not doing anything noteworthy or extraordinary with Node.js at the moment. I've put a lot of time and coding into the foundation of my site and other sites I've written, and I've already written a lot about building up that foundation.  I will come up with some other stuff to write about, it's what the people want!

Update to CKEDITOR

Recently I've updated my admin section of the site to use the CKEditor. It is pretty nice. Previously I was using NicEdit. It inserted DIV when I pressed enter. This one inserts paragraph tags, so I was manually editing a lot of HTML source. That's one major benefit. Plus there's a built in HTML source viewer/editor.

It should be easy to make clean content now.

This is a h2.

We'll see how it goes.  The other major benefit, and this is just a F$^#$ YEAH to the internet in general, is that the CKEDITOR source is hosted on a Content Delivery Network (CDN), meaning I don't have to junk up my solution and git repository with CKEDITOR scripts and resources. F@#% YEAH INTERNET.

The Moment of Truth

Every morning I have an email from pingdom that my site went down overnight. I've upgraded to node.js 0.10.20 a few weeks ago to take advantage of some other bug fixes and optimizations, and it shows in the Google Analytics page load times (they're all 0 seconds)

I have had no luck tracking down the cause, but I read about how to prevent a server error from bringing down the site. I've implemented the suggested solution using node.js domains, and we will see what's happening tomorrow.

It might be the same thing because when I go into the server, node is still running my webserver, it just appears the socket was destroyed... We shall see. Wish me luck!

Prettier Site

I updated the site by incorporating a random picture that I've taken, pre-cropped, into the header.

As a developer and overall lazy person, finding and cropping 10 images to the size that I want was way too much. I will have to rectify this. I got a flickr API key. Here are my plans:

  1. Obtain Flickr API Key - Done
  2. Take Pictures
  3. Upload them to flickr the normal way
  4. Add a tag to them specifying that they are suitable for the website, like jtccom
  5. Write a service that checks for new photos of mine with that tag, download them, flag them as new
  6. Write an admin interface to show new images, and for now, let me click the important part of the image, so it can crop to the size I need around the specified point. Sizes will be pre-determined (3 sizes for the 3 different breakpoints I have defined in my responsive design (not much to it).
  7. Continuously have an inflow of beautiful headers that will display on my web page

It shouldn't be that bad. Nothing I've mentioned above has me too concerned. It should be fun! For now, though, I have 10 canned images that don't populate directly from flickr. They are random so you have have to refresh more than just 10 times to see them all. Enjoy!

Tag List Added

I recently went about aggregating the tags used on my posts to create a sort of tag cloud. I never liked the display of tag clouds, so I just list them out in order of occurrence, with the most frequent showing first.

This should help me get some traffic. Node.js and MongoDB are super fast. It doesn't even stutter when loading the site, across 500+ posts. Actually, I have no idea how many there are.  Super fast.
Here's the code which pretty much finishes in -5 seconds
var db = require("../db"); this.tagCloud = []; this.initialize = function(site, callback){ var self = this; while (self.tagCloud.pop()); db.getPosts(site.db, {}, -1, -1, function(posts){ var tags = {}; posts.forEach(function(post){ if (post == null) return; for (var i = 0; i < post.tags.length; i++){ if (tags[post.tags[i]] == null) tags[post.tags[i]] = { tag: post.tags[i], count: 0 }; tags[post.tags[i]].count++; } }); for(var tag in tags){ if (tags[tag].count > 8) // arbitrary limit so we don't list like 200 tags with 1 post each self.tagCloud.push(tags[tag]); } self.tagCloud.sort(function(a,b){ return b.count - a.count; }); callback(); }); }

This is a Cloud Server

New "Cloud" Server

I've recently switched over to hosting my sites on a Rackspace Cloud Server. I should save a lot of money on hosting. I have the 2nd configuration from the bottom, at about $0.03 per hour! It's sweet. The management console is awesome. My old host would only allow 10 subdomains across all of my domains, this management interface is just like, "limits? what's that?"

So I've got everything set up, after figuring out that CentOS automatically firewalls port 80, and everything's working. I'll get moved over tomorrow. Check out that site!! It's gonna be the bomb when everyone's posting their shit on there.

Cheaper for Baby's Sake

I'm moving to cheaper everything. Before I was just like "Meh... whatever" but Amanda and I are having a baby!! I have to save up some cash and lower my spending overall! We're due April 26th!! It's exciting!


Piano lessons are going good. I have bouts where I suck, but right now I'm getting pretty good, and I'm understanding the stuff he's teaching me. I'm going the jazz route. He wants to have me be in the recital this year. He's a new teacher, and I've been taking lessons for 3 years and it was never even suggested that I be in the recital... I don't know... I would be a nervous wreck the night before.

Website is Back Up

As you can see.  Very simple, no images, but the bells and whistles are there.  I wrote it up over a weekend, probably 6-7 hours total, converting the original mysql database over to mongodb, and writing some quick code in node.js.

There's only one table, posts, so it was easy.  There is a mechanism for me to edit the posts, and add new ones, but it's very crude!

Take it easy. Peace.

I need to work on this site

But I want to test this thing out first:

Updates since last post: I'm engaged to be married to my love Amanda on 11/13/2010!!! I have an iPad, I fixed my lawn up a little, and I am golfing tomorrow and Saturday. Plus I play StarCraft II a lot with Zatko. Well, not enough.