Viewing Category: Development
I've been slugging it out with C# and Managed DirectX for the past couple of months, and haven't made as much progress as I'd like. My conclusion: I need people to jam with to develop momentum. I am pretty much building my development process up from scratch, as it's been years since I've done this full time, and I miss having other people to talk to about technology, game design, and interactive ass-kicking.
There possibly is a group already meeting that does this; I should check out the long-running Boston Post Mortem again, our local area game developer social group to see what's going on. I figure there's got to be a few people in Southern New Hampshire / Metro Boston North--and it only really takes a few--who are motivated and skilled enough to tackle some game development topics and develop best practices. The ideal candidate already knows one of the following so they can bring some skill to the table:
- C# / Microsoft Programming Environments
- Game Development, especially tool chains and workflow
- Object Oriented Programming
- DirectX 9 / Win32 Programming
I used to work in the game industry, so I know something of the second topic though it's pretty out of date. I'm a decent-though-workmanlike programmer, something of a architectural purist that's learned to make concessions to just getting things done. I love documenting APIs for some reason. And I dig algorithms, version control tools, debugging, and Joel on Software.
If you're interested in forming a local study group, let me know and let's get together. If long distance is workable through online collaboration tools, then we can try that too. This is related to my main project for 2008 to develop a large-scale museum exhibit, so I will be working on this full time. I'm not out to create the next cutting-edge graphics demo; I just want to have a decent architecture built on some good tools.
Drop me an email via my contact form or leave a comment here. To maintain high signal-to-noise, I will classify interested parties as either a contributor or a subscriber:
Contributors are developers with experience in one of those three areas I mentioned, and are genuinely interested in understanding the technology to apply it to their active projects. We expect results from each other, in other words, though we are all working on our own projects.
Subscribers are people who are interested in what we're doing, but may not have the requisite time or experience to contribute knowledge and code. Nevertheless, they want to know what's possible, and maybe learn something about how they could start doing what we're doing. 3D and 2D Artists, interactive developers who use Flash/scripted environments, museum exhibit designers, advertising technologists, and experience designers would probably fall into this category. The input from this group of people is a necessary part of developing anything that has life in it, and communicating how this stuff is technically achieved will provide valuable insight. Or so I hope.
Of course, this presumes that people are actually reading this and care :-) At least I tried :-)
Yesterday I extolled the joy of writing down nuggets of information as a way of "binding the magic" to yourself in a modern spellbook. My goal has been to get past my noob database status and start creating a new spellbook for myself. Since a lot of the SQL information is already on the web, I'm planning on pulling it all together first in this wiki page.
If you are already registered for the PCEO wiki, you can also add your own notes and suggestions. For everyone who's offered to help, here's the place you can do it. Just heap the stuff in, and I'll structure it as I go.
The end result, I am hoping, will be a very concise set of commands that are suitable for hand-transcribing into a spellbook. And possibly, this will also serve as the foundation for a very nice downloadable PDF booklet.
» Dave's SQL Spellbook Development Wiki Page
If you want write access to the wiki, you will need to register first.
Note: If you're confused by the "Guild" stuff as you click around, it's because the wiki is on the same site that our World of Warcraft Business Networking Guild. I'll be fixing this as I transition my entire site to Expression Engine over the next month or so.
I've put a few additional domains on my Media Temple (dv), and it's been great. One thing that was bugging me was not having an easy way to tell which domains were generating which scripting errors. When it was just my site, things were easy to follow, but with the addition of a BBS and a couple other WordPress installations, it was getting difficult to tell who was complaining about what.
Solution
You can configure PHP to have a separate error log file for each VirtualHost definition. The trick is knowing exactly how to set it up, because you can't touch the configuration directly without breaking Plesk.
Every domain name on your (dv) has its own directory in /var/www/vhosts. A typical directory has the following top level directories:
cgi-bin/
conf/
error_docs/
httpdocs/
httpsdocs/
...and so on
You'll want to create a vhost.conf file in the domain directory's conf/ folder with the following lines:
php_value error_log /path/to/error_log
php_flag display_errors off
php_value error_reporting 6143
php_flag log_errors on
Change the first value to match your actual installation. After you're done editing the vhost.conf file, test the configuration from the console with:
apachectl configtest
And finally tell Plesk that you've made this change.
/usr/local/psa/admin/bin/websrvmng -a
Web-Based PHP Error Log Browsing
On my old host, FutureQuest, they had a nice built-in PHP Error Log viewer in the control panel. I thought it would be neat to make something similar, so I created a portable PHP script to help me monitor each domain separately.
To try it out, first download the script, unzip it, and then copy the entire folder to some place on your webserver. Then, point your browser to the folder and follow the directions. You can also read the README.TXT file for directions. The script does some tests to make sure things are set up correctly, going so far as to insist that you password protect your directory. You can disable this check in the script directly, but you should probably do this to at least keep casual visitors from nosing around the sensitive parts of your server.
» Download error_log.zip
Related Links
I was just chatting with Scott at ZenLinuxNH, and he reminded me that a New Hampshire Ruby on Rails user group meeting is coming up this Tuesday, January 16, over at UNH Durham. New Hampshire represent, yo!
After I getting linked by several high-profile websites, the increased traffic has forced me to move twice. These notes describe my own experiences with WordPress and its needs. Individual WordPress installations vary in complexity, so your mileage may vary.
An Introduction to Blog Hosting Requirements
I was originally on Pair Networks, a reliable host that I've been with for almost 10 years. My website presence was largely for personal and business use, handling email only. This changed in late 2004, when I started my blog Better Living through New Media. Readership was up to about 100 people a day, through organic search and friends visiting, and Pair's inexpensive Advanced web hosting plan was quite adequate. At $17.95/month, it is considerable more expensive than other popular WordPress hosts like DreamHost, BlueHost, A Small Orange and TextDrive, but it was the host I've been with for years. The WordPress developers have a list of webhosts also that you may want to look at.
When you are starting out, your needs will be pretty basic:
Disk space, measured in megabytes (MB) or gigabytes (GB, which is 1000MB). The WordPress install only takes 3MB, and custom themes may add another megabyte. If you're hosting lots of photos, podcasts, or videos, you'll want more space, but just about any hosting plan will give you enough space. My entire WordPress install is about 500MB currently.
Bandwidth, measured in GB/month or TB/month (terabytes, which is 1000GB). For a site getting started, you'll probably see less than 1GB a month of "normal" use. However, it's the abnormal conditions that you'll have to look out for.
Apache, MySQL, and PHP are the base requirements to run WordPress on a web server. In the case of Pair, the cheapest plan that includes PHP and MySQL is the plan I was using.
The focus of this note is not installing WordPress, but on the traffic levels and server load issues that may drive you to move. For installation help, visit the WordPress Codex.
Getting Started: Low Levels of Traffic
As I've said, you can get started with just about anything. When I started blogging, I installed StatCounter and used this to monitor the amount of traffic I was getting. One nice thing about StatCounter is that is also gives you a nice way of exploring the patterns within the traffic, which gives you an idea of what people are looking at. The three fundamental stats of web traffic are pageviews, unique visitors, and referrals. A pageview is a page loaded with all the accompanying graphics and text. A unique visitor is a person who's been looking at your pages. A referral is where the person "came from", for example another website or perhaps a search engine.
While these stats are all interesting, the one that matters when it comes to choosing a hosting plan is pageviews. When I got started, I had a count of about 10-20 pages a day, which rose to around 100-200 pageviews over the next year. The site remained responsive and snappy...though the pageviews were a lot to me, the server handled this without any problem.
First Sign of Strain: 500 Pageviews A Day
The first sign of trouble was when I hit the 500 pageview-a-day mark, when I noticed the server becoming noticeably slower in delivering webpages. I attributed this to WordPress, which is a dynamic web application. Unlike a regular HTML page, WordPress pages are created "from scratch" every time someone requests one by pulling data out of a database and formatting it on-the-fly. This can become very slow, especially if you've added plugins like Markdown that reprocess all your text.
To deal with the problem, I had two choices: move to a faster server and pay more money, or address the inefficiencies of the WordPress page model. I chose the latter approach, installing the WP-Cache plugin that essentially stores copies of your pages so WordPress doesn't have to create them from scratch. This reduces the strain by a significant factor, and allowed me to stay with Pair for another year.
Time to Move: 1500-2000 Pageviews a Day
I started experiencing more serious problems when I hit the 1500-2000 average pageviews-a-day mark, particularly during peak hours. This is the time of day when the most people are visiting your website at the same time. Your server has to work its hardest, handling many simultaneous requests for web pages with what it has. It's just like rush hour: too many cars on limited road space results in slower traffic flow for everyone. With shared web hosting, there are also other websites sharing your machine, so peak effects can be multiplied.
I started noticing that webpages were taking a long time to come up, and that logging into my admin page to write posts sometimes failed. I also started seeing database connection errors, which indicated that I had exceeded my allotment of bandwidth to the database server. While looking up information about the Pair database servers, I saw that the general consensus was that they are slow compared to other hosting companies. Also, the use of the Mint real-time web traffic statistics package, which had replaced StatCounter for my daily use, was expressly forbidden by Pair's terms of service. They hadn't said anything about it, but the additional database strain added by Mint was probably taking away from overall site performance. It was clearly time to move.
Host Evaluation: Pair shared hosting is great if you're serving lots of static web pages or a small number of dynamic pages through PHP/MySQL.
Picking the New Host
Pair is one of the best web hosts out there, in my experience very responsive and reliable. One caveat: I'm more technical than the average person when it comes to this kind of stuff, familiar enough with server administration that I don't need to ask for a lot of help. I wanted my new hosting provider to have comparable quality of service at an affordable price.
As I looked around, I was struck by many of the complaints and horror stories that were going around practically every host I've mentioned. The only two exceptions were Pair (almost nothing bad said about it, but then again it caters to a more technical crowd) and FutureQuest, which was described as having even better customer support with faster database servers. I did another gut check, which was to google for the phrase "Futurequest sucks". If you try the same thing with other popular hosts, you'll usually see a lot of complaining. Not the case with FutureQuest, so that's who I went with. I moved my files over, restored my database, and I was back in business.
The main issues with FutureQuest were much lower bandwidth and disk space allocations. At the time I moved my main website from Pair, I was on their Webmaster plan for $29.95/month. Bandwidth allocation was 200GB/month, and disk space was 3000MB. My new plan at FutureQuest was $26.95 a month, and included only 20GB of transfer bandwidth and 700MB of disk. At the time, my website was averaging about 15GB of transfer (checkable through the monthly web logs), so I figured I was OK.
The months I spent with FutureQuest were very good. Although I had a few issues with the older version of MySQL they use, once that was cleared up I found the website back to its snappy self. The customer service was everything I had heard, incredibly responsive and proactive. The account control panel, which allows you to do things like set up email accounts and check the status of your service, was also superior to what Pair has in place. I was serving 2500 pageviews a day on average without noticing any degradation in service.
Handling Big Traffic Spikes
The first sign of trouble struck in mid December 2006, when I released a new version of my yearly calendar. It was picked up by the popular site LifeHacker, which immediately drove thousands of people to a particular page on my website during peak hours. The proactive technical staff at FutureQuest noticed immediately that the server was being strained, and promptly emailed me a notification. After 15 minutes, the server was about to completely meltdown, so they disabled my account to keep the websites from the other customers from being dragged down. They emailed me a second time to get back to them as soon as possible.
One problem with having your account disabled is that you have no way of accessing your website or your email. Fortunately I keep my computers running instead of turning them off, so I had a few email reports about incoming traffic that allowed me to see where the unexpected traffic was coming from. I told FutureQuest this, and described the course of action I would take:
- Upload a static version of the webpage, so WordPress wouldn't have to deal with it. Most people following a link will just visit the first page.
- Move the downloadable files associated with the webpage to my old Pair account, which I had maintained because I host other small personal websites there for friends and family.
FutureQuest re-enabled the site within minutes of receiving my email, and I stepped in and made the changes immediately. This allowed the website to stay up with acceptable levels of server load, which is measured in reference to the number 1. Anything less than 1 is a "lightly loaded" server; you can see this number by typing uptime if you're logged into the server with a terminal program. Anything greater than 1 and 2 is "moderately loaded", and if you start seeing numbers greater than that you can expect some sluggishness. In the case of my website, it was causing load spikes of 20-100. After applying the changes, it went back down to a more acceptable 4 to 6: still bad, but not catastrophic. I saw my highest traffic spike ever for the day: 25,000 pageloads.
Typically, the first two days of a spike like this are the highest, and after about a week traffic settles back to normal. The days afterwards you will see elevated levels of traffic from all the secondary linking that occurs from other websites and blogs. All that linking does not go unnoticed by search engines, which raises your site profile in their ranking algorithms and drives increased traffic through search. Because of this extra burst of popularity, I was in danger of exceeding my bandwidth allocation by 5GB. FutureQuest sent me an email based on their predictions, and I upgraded to the next higher-level plan for $35.95/mo. This plan's traffic allocation was 30GB, 10GB more than my old plan.
After all this excitement I thought things would settle back down, but I got linked again a week later, this time to a different part of my website. This time, FutureQuest told me that I needed to either upgrade to a dedicated server ($200 setup, $200/month) or move to avoid these continuing "chronic" problems caused by my website. They also warned me on a separate occasion that my projected bandwidth use was going to be more than double my plan, which would cost me an additional $150 in overage charges if that happened.
I still am very impressed by how their customer service, though in my case it was bad news, was handled so well. I completely understand that being on a shared host with other people entails a certain accountability; I was using far more than my fair share of the server and compromising the level of service for everyone. It was time to move again...$200/month is far too much for me to afford. And $35.95/month for a mere 30GB of transfer is way too low. Compare that to the 100-1000GB allocations you get with other hosting.
Host Evaluation: FutureQuest has phenomenal customer service and technical monitoring for a shared host. However, it's expensive. If you have a smaller website or can afford to pay, it's pretty great. I was sad to leave.
Aside: Website Efficiency
When you get a lot of traffic in a day (and 25K isn't even that high) you really stress the available resources in your service. I had gotten some large spikes before, but nothing on this level. It exposed several inefficiencies in my setup:
The Mint stats package I was using was the source of the server spike. A third-party plugin I had installed was doing some simple download counting in a very inefficient manner, which caused memory use to skyrocket. Removing this plugin brought things down to an acceptable level.
Secondly, increased levels of comment spam were causing high loads on the server as well. I was getting well over a thousand comment spams a day, sometimes as many as 3000, in a single day. Those 3000 spams each have to be filtered by the anti-spam plugins I have running, which themselves burn up server resources. The stats package I'm using does not count these as pageviews, but they do create spikes of use that are problematic.
As a website grows and becomes more feature-laden, your traffic and server load problems increase. If you don't have the time or inclination to learn how to deal with it, it's going to cost money. Either you buy a big dedicated or managed server package ($100-$300/month) or hire someone to handle your server administration for you.
It's important to note that most hosts are not as proactive as FutureQuest. The 15-minute email turnaround time for FutureQuest in handling my website downtime is incredible; you'd have to wait 24 hours to 3 days before getting someone to work with you to resolve your problem. And that bandwidth usage warning email? Most hosts will charge you AFTER you've incurred the overage, which you had no idea was happening, and then you're screwed.
Moderate Levels of Traffic: 3000-5000 pageviews a day
I'm still experiencing increased levels of traffic from those recent surges, and am averaging around 3000-5000 pageviews a day. This is considered by people I've talked to as "significant" website traffic. I was thinking it was time to get away from shared hosting.
When you hit 3000-5000 pageviews a day, you're also at the point where shared hosting isn't enough anymore. Your only option, short of finding a buddy to give you free server space, is to buy dedicated hosting. You get an entire server devoted to your site, but since you're not longer sharing the machine with other people you have to foot the entire bill. Typically, it's between $100-$200 a month, and you're also responsible for keeping it running. There is an even more expensive kind of dedicated hosting called managed hosting, where not only will you get the entire machine to yourself, they'll also run it for you and guarantee its operation.
Since I don't have the hundred bucks a month to spend, I went with Media Temple's dedicated virtual hosting for $50/month. Media Temple is a mainline hosting provider, and provides much more generous disk and bandwidth allocations. MT also offers another hosting plan called the Grid-Server, which takes shared hosting to another level by sharing hundreds of servers with hundreds of websites. Normally, a shared server has a number of customers assigned to it, with each server's resources distinct from each other. With the grid-server technology, the granularity is finer, and the resources from all servers can be put into one common pool. Theoretically, this means you can get fantastic power and value for one low cost. However, this is a new technology and MT is still working out the bugs. I decided to stay with dedicated virtual hosting.
Dedicated virtual hosting is like getting an entire machine to yourself, but in actuality it's a form of shared hosting. The server is actually a software "container" that looks like a stand-alone server, sort of like when a large house is divided into several condominiums. You are guaranteed a certain amount of memory, and if there's any left over you can "burst" to use what's available. Another advantage of dedicated virtual hosting is that you can easily backup your entire server (it's virtual) and you can configure anything you want on it. That's also the downside, because you're also responsible for keeping the thing running. In general this isn't as bad as it sounds, as you can administrate your server using a web-based control panel. However, since I'm using the very cheapest level of dedicated virtual server, I find that there's still some things I need to do to ensure it runs well.
Media Temple sells three levels of dedicated virtual servers, the (dv) Base (which is what I'm using), the (dv) Rage, and the (dv) Extreme. Each server doubles the resources available from the previous level, so the (dv) Rage has twice the memory and disk storage of the (dv) Base. The Base has 256MB of memory, which I know from experience is plenty to run a small server that doesn't have to use graphics. What I didn't know was whether this server would be capable of handling my 3000-5000 pageview-a-day habit.
After a few days of struggling with it, I have it at the point where I'm pretty confident that it'll handle 5000-10,000 pageviews a day without problem. The problemw as this: while the (dv) is set up and ready to go the moment you order it, my particular installation was configured to use as much memory as it could. As I mentioned before, the Base has 256MB of memory, but this is "guaranteed" memory. The virtual server system that is managing all these (dv) virtual servers has a LOT more memory than 256MB, and this is a pool that everyone can draw from. That means if my server needs more than 256MB, and the memory is available, it can get it. If it's NOT, then the memory request fails. The ideal case, from my perspective as someone who wants my server to run well all the time, is to have it all work within my guaranteed memory allocation. From MT's perspective, if the server is telling me I am running out of memory, I am more likely to upgrade to a more expensive server package.
My solution was to spend several days going blind learning how to do basic linux server administration. I configured the mysql database engine to work within 128MB, and limited the number of simultaneous web connections to something reasonable while trimming the number of "modules" loaded by the web server. I also discovered several inefficiencies in the way my WordPress installation was set up relating to poorly-written plugins. I've been monitoring the server live for a few days now, checking the load average as page requests roll in, but these are all subjects for another article.
Another advantage of the (dv) is that you can resell web service. The number of domains you can add to your site, for example, is up to you. You can add up to 30 before you need to buy an additional "Plesk license"; theoretically, I think you can work around this by manually configuring the server. It normally costs money to add new domains to your web account with shared hosting. With 20GB of space, you can afford to bring a few friends on and offset the cost of your hosting, if you're willing to do the administration. The Plesk control panel, which allows you to adminstrate the various functions of your server, can also be configured to show your clients whatever features you think they need. It's a very nice system, and I'll write up my impressions at a later date.
Host Evaluation: Media Temple offers a great value, and they're quite well known in the community. I happen to also get a discount on the service through the 9rules affiliate program, so this makes the service comparable to what I was paying for FutureQuest.
The Next Level
I haven't yet been able to test my server under higher loads. I would guess that's the 10K pageviews-a-day level. If my (dv) holds up to it, then I'm set for a while.
What might change the equation is if I start hosting other websites or add some web applications to the mix. As it is now, I'm running just a single application---WordPress---on this server. If I added a busy BBS or commerce site, then I'll be pushing the limits of the server again, and will be forced to upgrade. At that point, though, I would hope to be making enough money from the Web to justify the cost of a real dedicated server.
Here's how my pageviews vs hosting worked out. Your numbers may be different, based on the number of downloads and images you're hosting on your website.
| PV/DAY |
MAX EST. BW |
PLAN |
| 1-250 |
< 1GB/month |
cheap shared |
| 251-1000 |
5GB/month |
cheap shared |
| 1000-2000 |
10GB/month |
shared |
| 2000-3000 |
30GB/month |
shared |
| 3000-10000 |
100GB/month |
dedicated virtual |
| 10000+ |
100GB+/month |
dedicated? |
So that's my thoughts on the subject. This page will be updated as I learn more. Enjoy!
I've added a few interim debug console commands for the Emergent Task Tracker Online prototype. You will need to pull up the debug console by typing CTRL-SHIFT-TILDE to pull up the console window.
Modifiable Alarm Loop Count -- You can now use set alarmloop to specify a number between 1 and 12 for the default chime. Currently, the default count is 7, but for those of you who want a shorter reminder chime, you can set it to 1.
Modifiable AlarmURL -- You can use the set alarmURL command to specify your own custom MP3 file. I'd use something short. You must host the MP3 file on your own web server or page somewhere.
Restart Command -- This is more for my own testing, but if you want to start with a fresh day, you can issue the command lso clear followed by restart.
Yesterday Command -- Another testing command, by typing in yesterday, the day counter is decremented by one day. This is sometimes useful if you want to see the previous day's data, but it does not update the current date display.
I also added another bubble type: the slash (/). I use this to indicate when I'm doing more than one thing in the same time period as my "main" task. This is just something I was goofing with quickly between projects, so it's likely to change. However, it does lay in the infrastructure to support multiple bubble types like fractional minutes.
Known Bugs
- There is a data-saving bug related to the order in which Flash is firing events, causing saving to occur only on the next modification you do. So I have to rework the event model a bit to capture this better.
Upcoming Features
The short-term goal is to get data saving / loading to work from a server, so I can access the same data from any browser. I don't have an ETA on this.
I have basic SOAP communication working with a very simple NuSOAP-based webservice, and have been playing with EZ-SQL (the same database wrapper that WordPress uses). I also have to think now about user authentication and account tracking will work. Rather than roll my own, I'm wondering if anyone has a recommendation for a simple-to-use "user administration" library in PHP. I probably just need to make one up, but if anyone has a recommendation for how to approach this, I'm all ears!
After this are some GUI updates: drag and drop reordering of tasks, easier multi-day navigation of data, adding the "hourly summary" column, and figuring out a way to manage whole classes of tasks. I'll probably stick with Flash for this in the short term, because the ability to run the Flash projector OUTSIDE of a browser is a capability I'd like to retain.
So that's where things are right now. Thanks for using the tool, glad that people are finding it useful.
For the past couple of weeks, I've focused on making the website a little easier to grasp. It's been a fairly organic process, which in itself is something of a breakthrough for me; in the past, I would have obsessed about getting everything just right first, but then I wouldn't have had a website. And that's the way it was for 5 or 6 years: a few half-finished, empty shells taking up space on a server.
I thought it would be interesting to catalog what I've done. Being in business for myself is continuously challenging, exciting, and at times scary. I find sharing what I've been up to be a good way of reviewing and assessing what I've done.
The Challenge of Attracting Traffic
I've been pretty fortunate that The Printable CEO has been popular, and it still seems to be maintaining some interest in the community. The people who have taken the time to comment on their blogs or message boards have helped drive traffic steadily upwards since the site launched in October 2004. It's been an interesting grassroots education in "Eyeballs 101", and it's a good foundation for me to understand Marketing from a personal perspective.
On an average day, I currently get about 600-700 unique visitors and a 1700-1800 page views. About 33% of that traffic is from Google, maybe 10% comes from the [9rules Network][9rules], another 30% are from people who ride hyperlinks in from other sites/blogs, and maybe 10% are people who come to the website directly now that they know it's here.
If I was interested in expanding the total number of daily visitors as rapidly as possible, I'd probably focus on Search Engine Optimization, aggressively pursuing link opportunities and tailoring what I write toward a) linkability and b) popular keyword searches. However, I'm more interested in that last 10% of the people who like hanging out here. The analogy that comes to mind is that I'm creating a nice public space where people can chill out and maybe connect with other people. Why? Because these are the people that I think are most likely to create some kind of synergy with, and synergy is something that I really am seeking.
There IS another class of content that I am considering, and that's a kind of Encyclopedia of Dave that's written FOR the search engines. They will be outside the context of the blog. I plan to do a more factual kind of writing there, as opposed to the more conversational style. By keeping advertising only to those pages, I may be able to the blog part of the site free of those distractions.
The Challenge of Connecting
Every once in a while I like to walk instead of drive. The richness of one's experience tends to be proportionate to the amount of time spent passing through it. While driving allows us to get a pretty good sense of a neighborhood quickly, walking a neighborhood gives one a whole new level of detail that's accessible to human context. You don't get that when you drive, since everything is distant and "out there". When you walk, you're also much more likely to stop and check something interesting out. Boston is a great city for this kind of exploration, but you can find this in every town. It's amazing what you will see, and who you might meet.
I'm interested in that last 10% of people that I can connect with, and part of the challenge is to "connectable" and "accessible". 90% of this site's visitors are here for a specific purpose: a headline on a web agregator, maybe a link to The Printable CEO, or perhaps a random web search. Those are the people who are "driving by". What I want to encourage is stopping by for a spell to check out what else is here, quickly and conveniently. That means better signage and clearer boundaries between types of content.
The Challenge of Being Seeable
Another realization is that I need to be more proactive about meeting people, as I wrote about increasing my social surface area in The Printable CEO V: Makin' Rain. The idea behind "surface area" is that the more of you there is (surface area), the more opportunities for interaction exist for you to be seen.
Everyone you meet, in any avenue or walk of life, represents a unique opportunity to exchange personal experience, stories, and information. And therein lies the first hurdle: how do you break the ice? The first step of that, I wrote, was just to be seen and noticed in the first place.
Reducing Challenge to Practice
So here's what I'm doing specifically on the website to address those three challenges.
Add Social Bookmarking Convenience Links
One of the first things I did was add those social bookmark links at the bottom of every post. You know, to sites like del.icio.us and Digg, those teeming marketplaces of attention.
I think adding these convenience link may had added a few additional bookmark events a week. This may not seem like a lot, but consider that each one of those bookmarks is connected to an individual who has friends, who themselves have friends, and so on. Who knows what random opportunity may arise? It's like putting treasure maps into bottles, and releasing them into the ocean.
Show instead of Tell, or Getting Away from Text
You know what they say: a picture is worth a thousand words. I've got way too many words, so I needed to address that.
After re-discovering Flickr, the popular photo-sharing service, I started noticing that a lot of blogs were pulling their photos out of Flickr directly. I installed the FAlbum plugin to add the same capability, and then it occured to me that I could actually put my portfolio on Flickr. I would gain the advantage of Flickr's funner photo interface, and I also may get some interest in my work from random encounters. Additionally, you can tell a LOT about someone by their photos; more visual people can figure me out much quicker through browsing my pictures.
I split the photo groups into two: a portfolio section that shows examples from my information graphics / interactive design photoset, and a random picture section that pulls from the entire photo library. I also put links to other articles and information about me near these photos, thinking that they may benefit from "spillover attention". Not sure if it's effective or not, but it seems there's been a slight uptick in pageviews per unique visitor. I could be imagining it though.
An improvement I might make to my Flickr setup is to add my website URL to every photo description. I think that would be overkill and in poor taste; I already link photos to relevant posts on the blog.
Make it Easy to Subscribe to RSS
I was surfing links from ToDo or Else and ended up on CopyBlogger, an interesting site about writing effectively for blogs. The article Four Simple Steps to More Blog Subscriptions caught my eye; apparently, making subscription easy will lead to more subscriptions. A simple but powerful insight. I made a subscription badge and stuck it prominently at the top of the sidebar. This happened to displace the two "About Dave" and "Contact Dave" badges that were there before, but I had never liked them; people weren't really seeing them anyway, from what I have been able to gather.
Liberate My Personal Identity from the Sidebar
My sidebar is way too long. The site design is based on an old WordPress 1.2 template that I adapted from an even-older Movable Type design, and the legacy two-column framework is getting pretty long in the tooth. The cool blogs have all moved away from this long ago, so I am following suit by adding a third section to my site, at the bottom of the page.
With just two zones, I had a main text area, and more text in the sidebar. Pretty boring, and by having so much information in each zone I was de-emphasizing the importance of each element within them. By adding the new "identity zone" at the bottom of the page, I separated out my name and personal information, which theoretically makes it much easier for people to find.
The implementation so far is pretty crude: my name and expertise, with supporting portfolio, resume, and biographical links. By including this information, I am essentially trying to say, "Yes, I'm available for project work" without beating people over the head with it. This replaces the old "contact dave" link at the top of the sidebar. Below this are two simple banners that highlight other attractions that search engine visitors ("drive by visitors) might find interesting: The Emergent Task Timer and The Printable CEO. This was also an interesting exercise in copywriting, because I had to come up with two slogans that could, in a glance, impart something salient to the drive-by visitor. You know, the equivalent of seeing a sign like ICE COLD COCA COLA or FRESH-SQUEEZED LEMONADE on a hot day.
The next stage, which I'm still working on, is writing a much more accessible version of The Printable CEO introduction so people can immediately see its benefit. How to measure effectiveness of these, I'm not sure yet. There are some options in Google Analytics related to "campaigns" that might be useful.
Create a Google Sitemap
To help Google index my entire site, I installed Arne Brachhold's Sitemap plugin. It generates a giant XML file that Google parses to find everything on my site. This helps keep some of the "dead content" alive in the search engine. Back when I used to have the full archives link, this wasn't an issue, but I removed them some time ago because they took up a lot of space for little benefit.
I've noticed that a lot of the dead links that were still in the search engines have now been cleaned up. It probably helps with search engine ranking for some pages as well, but that's pure speculation.
Leverage Other Social Networks
I have been using StumbleUpon for a few years to keep track of my interesting bookmarks. What I like about it compared to Del.icio.us or Digg, is that I can surf one-site-at-a-time instead of being overwhelmed with a huge list of cool things to look at and blowing my whole afternoon. StumbleUpon also recommends links to you based on who else seems to be linking to the same stuff, so the likelihood of finding something interesting through the Stumble button is fairly high.
The relevance to my site is that my Stumble History (the sites I bookmark through StumbleUpon) forms an interest signature that other people can find and follow through the service. Since I have a link back to my website in my profile, this creates an opportunity for people to find my website. Since we share interests, there's a higher probability that they will find the site interesting. I don't see many hits from StumbleUpon, but it just would take ONE million-to-one connection to pay off. If you want to win the lottery, you have to play the game.
I could probably DIGG my own articles and get away with it for a while, but that just doesn't seem very sporting. Having this attitude may be against my better interest, but I really like releasing content in the wild and watching how it floats out on the Internet. There was an old film I saw in elementary school called Paddle to the Sea, in which a toy wooden canoe was released on a river. The film covers the journey of the toy through the world, into the ocean, and then it somehow makes its way back to the original carver. Every time I get a referrer back from another blog or website from something I've written, I feel a similar thrill; I don't think it would be the same if I'd planted the return route myself.
In Conclusion
So that's what I've been doing here and there in the past couple of weeks, and while it's hard to say whether any of it is paying off, I feel like I'm getting a little better at this web stuff without obsessing so much over it. As a bonus, my knowledge of PHP is slowly growing because I've had to customize each of the plugins to work nicely with my theme. Not a bad way to spend my time, but I should take a page from my own book and go outside once in a while. Meeting people, of course, is the entire point of this exercise.
This is a geeky posting; some of you may wish to avert your eyes :-)
I'm running my Subversion server off my cable modem connection, using dynamic DNS to allow outside peeps to get in. I'm thinking of hosting some source code examples publically, and am thus seeking a hosted subversion solution that's:
- Inexpensive (w/ multiple users and multiple projects)
- Reliable (availability, backed up)
- Usable web interface (that is not ugly or confusing)
- Issue tracking a bonus (if it doesn't suck)
Thought I'd ask to see if anyone had any strong opinions on this. Assume inexpensive means free to maybe 10 bucks a month. A service that has multiple levels of service and ease of upgrade/downgrade would probably be ideal.
I'll post what I find in a few days.
Rick Benavidez sent me a link to a pure CSS markup version of the Task Order Up that he put together. It doesn't do anything, but it's still cool if anyone wants to make something fancy out of it.
Thanks for sharing, Rick!
UPDATE: added a link to Rick's post about it.
I did something sort of bad to my CSS stylesheet, to fix a long-standing bug in the right sidebar for Internet Explorer 6. Geeky notes follow.
The HTML for this site is based on a really old Movable Type template. I used MT for about a day, before deciding I liked WordPress better. However, I liked the MT template better, and moved it over. Since I didn't really know what I was doing, I just mushed it around until it looked about right. That was a couple years ago.
Since meeting all manner of skilled web designers at SXSW this year, I've been motivated to finally read up on CSS and Semantic HTML. For the first time I'm actually excited about web design and development, and am slowly putting together a list of best practices.
All that reading, however, wasn't quite enough to make me redo the HTML for the site; that will wait for the redesign. So instead I just stuck a negative left margin in with a _margin-left: -8px for the #menu ul declaration, which gets seen only by IE. Im my mind, I'm hearing dogs barking, mortar fire, and cars smashing into telephone posts!
You are reading page 1 of 2
Go to Next Page >>