I shortened the page load times on the Utah Open Source Planet by bringing the number of posts down from 60 to 40.
OK, so that’s a little dramatic, but still, my blog’s google placement for certain keywords has suffered sorely and it troubles me.
It all started with comment spam. I installed a spam eating plug-in to keep the flood from pouring over my blog, and it worked well - too well. At first, I was delighted to see that my INBOX was no longer filled with emails alerting me to the fact that posts needed moderating. After a while, it seems that they tapered off all together. “Great!” I thought, “This thing must really be learning what spam looks like.”
After some time, I googled “AGI” and noticed my site wasn’t in the result list. I thought that was odd as the keyword “AGI” had always included my blog in the top 10 or so (this is just a guess as my vanity googling was never very formal). I thought my page rank must have gone down, so I checked…
“Ahhh! Blank pages everywhere!”
Somehow the plug-in had jacked the WP “loop” and the result was blank pages - lots of them. For some reason, the problem didn’t manifest itself until sometime after installing the plug-in.
I’m no PHP hacker, but I did my best to follow the code. I was never able to figure out what was happening; I suppose if I knew more about WordPress, I could’ve figured it out as the PHP was fairly easy to follow. I didn’t want to dive into WP more then I already had (I’m going to replace it with a homespun Django blog anyway), so I decided to just update it to the latest WP version and see if that would fix it. It did.
Now, I find that google has nearly dropped my blog off the face of the earth. Check the search results…
Gundy 1st — 6th
Gabe Gunderson 1st — 340th
Gunderson ~15th — 392nd
Gabriel ~35th — 931st
Gabe ~35th — 871st
AGI ~10th — 291st
Asterisk C# 1st — 313th
The traffic graph seems to back it up:

Anyway, If I’m not in your blogroll, you can add me to it and help stop this search engine injustice! Or, if you need less lofty motivation, you can just do it to throw a dog a bone!
P.S. I’m now using Akismet to fight spam (on the recommendation of others).
A year ago, I gave wordpress a spin and started sharing with the world some of the many things that interest me. This tends to be stuff about Open Source/Free software. The cool thing about Open Source software is that it seems to have universal appeal. This map shows typical geographic locations of my site’s visitors.

Anyway, it’s fun to think that as I sleep, there are people in Asia or Europe browsing the web server that warms the space under my stairs. :)
Two things about this site are bound to change this year. One, I’ll be writing my own blogging system (in Django). Two, I’ll be working on making the information here more helpful to those who visit. It won’t be a big deal; I’ll just be making an effort to think about what the reader may need to know, giving better links, invite questions, etc.
Here’s to a great new year!
This should lead to some interesting search results. If so, I’ll share what I’ve learned 5 or 6 weeks from now.
- basketball coach
- championship
- conference
- dawson
- defense
- final four
- finals
- friars
- game
- head coach
- houston
- jeff van gundy
- mcquaid jesuit high school
- nazareth college
- nba
- nba broadcasts
- new york knicks
- playoff
- points
- providence
- rochester
- rochester new york
- rockets
- rutgers
- seasons
- turner sports
It’s kinda like setting a trap. Analytics - that’s some fun stuff :)
I never thought I would see this day…

That’s how you know you’re following too many mailing lists.
But sadly, it’s unusable for me. It really, really bums me out.
The bugs responsible are here and here. There’s related reading in Google Groups and also a related ticket here.
I want to put out a bounty for this bug, but I don’t want to step on the toes of the developers. Any fix that would be worth paying for would have to be one that the developers would approve of. I don’t even know what work might already be done on it. I guess I haven’t browsed the source yet to see what’s happening lately. That will be the next step.
Does anyone know if any work is being done on this? I have a few projects that I want to get started using Django, but this has taken the wind out of my sails. :(
Today’s screenshot is brought to you by the Django Admin interface:

For those of you who don’t recognize this, it’s the GNOME System Monitor applet. The dark blue basically represents CPU usage for Django (more accurately - caused by Django). The model validates [1] and the tables/Models are shown in the front page of the Admins interface. Most of the Models are represented well and work as one would expect. However, there is one table/Model that doesn’t work as expected. It works OK when you go to add an additional record [2], but when going to view items before changing them [3], it causes the CPU to spike and three minutes later I have my results. Before I edited the table/Model to remove one of the ForeignKeys, I would get a PostgreSQL error because Django passed it a SELECT statement with *over* 1664 entries [4]! Well, it seems that by editing the table I was able to keep the entries under the 1664 limit and PostgreSQL would process the SELECT, but it takes forever to finish it.
I guess that technically, the CPU is being eaten up by PostgreSQL, but that’s not really the point. The point is that Django really doesn’t have any business sending it a SELECT statement with some 2000+ entries in it (especially for such a simple, simple request.) OK, so maybe it has a bug, limitation or whatever, I’m cool with that - it happens. The frustrating part is that I can’t confirm that this is a known problem or find the answer. The answer I’m looking for should be simple, but I have not been able to find it. IRC and #django was a bust and the mailing list yields nothing yet.
I was pretty enthusiastic about Django, but maybe it’s to soon. It’s a cool project and I wish them luck. I’m just wondering if all the time spent so far porting one of my apps to the Django framework was time wasted or not.
1) -
./manage.py runserver
Validating models…
0 errors found.
2) http://localhost:8000/admin/App/Model/add/
3) http://localhost:8000/admin/App/Model/
4) -
Request URL: http://localhost:8000/admin/core/stagedorder/
Exception Type: ProgrammingError
Exception Value: ERROR: target lists can have at most 1664 entries SELECT
I don’t have a ton to say right now (really, I don’t have a lot of *time* to say it), but first impressions of Python and Django are very positive. The admin interface is a great little tool to get things going FAST. I’m really, really impressed. The CREATE TABLES are clean, the SQL is clean and the DB API is clean (different, but I can learn to like it); I’m really enjoying it. How often can you say that?


Extra points for:
- PostgreSQL as preferred database.
- Template system that strikes a good balance.
- Powerful and clean URL handling.
- Modular design.
Needs work:
- Namespace support for PostgreSQL (app_table vs. app.table).
- Keeping data model and DB schema synced (this might be in a better state then I know; I need to read up on it).
Seeing this makes me want to put into action my plans to revamp the Utah Open Source Planet. Wish I would have thought of it first :(
The humble server that I use to host a few (11) web sites is getting updated. It’s not going to be that big of a deal (99% idle instead of 97% idle).
The big deal will be the addition of Xen, LVM and RAID. I’m thinking about setting up a small domU that will act as a firewall. It will also run Apache as a reverse proxy and Postfix as a transport relay to the domains that will get their own DomU (3 currently). Normally I would also have it run Asterisk to avoid NATing with SIP, but since I switched to IAX with my voice provider, I don’t think it will be necessary.
Anyway, the lights might go out for a little while. Don’t be alarmed.
Recent Comments