<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/css" href="http://www.metalunderground.com/styles/rss.css"?>
	




	

<rss version="2.0" xmlns:blogChannel="http://backend.userland.com/blogChannelModule">
	<channel>
		<title>dgibson.net</title>
		<link>http://dgibson.net/</link>
		<description>All updates on dgibson.net including Doug Gibson's articles and blog posts from technical to personal.</description>
		<image>
			<url>http://dgibson.net/images/public/dgibsondotnet_125x30.gif</url>
			<title>dgibson.net</title>
			<description>dgibson.net - Home of Doug Gibson, full life-cycle ColdFusion web/application developer</description>
			<link>http://dgibson.net/</link>
		</image>
		<category domain="http://dgibson.net/">Web Development Blog</category>
		<lastBuildDate>Wed, 15 Feb 2012 19:48:40 EST</lastBuildDate>
		<copyright>Copyright 1999-2015 Doug Gibson</copyright>
		<managingEditor>webmaster@dgibson.net</managingEditor>
		<webMaster>webmaster@dgibson.net</webMaster>
		<language>en-us</language>
		<generator>ColdFusion</generator>
		<docs>http://backend.userland.com/rss</docs>
		<ttl>60</ttl>


		<item>
			<title><![CDATA[Internet Explorer Doesn&apos;t Like Domains with Underscores, Won&apos;t Save Cookies]]></title>
			<pubDate>Wed, 15 Feb 2012 19:48:40 EST</pubDate>
			
			<description><![CDATA[
				<p>After many hours of working with securing my cookies on a Mura CMS site for work, clearing cookies, closing the browser, repeat - I could not get Internet Explorer to log in to the staging site. The login form just reloaded, starting a new session each time. This behavior is something I've experienced before when my laptop is low on resources, but it didn't clear up even after closing other apps and finally rebooting.</p><p>
The temporary production site did not have this problem, however, so I synced up the latest secure cookies code and the production site and everything worked as expected in IE. IE is very developer unfriendly for viewing cookies and headers, and I was recommended <a href="http://fiddler2.com/fiddler2/">a tool called Fiddler</a> for debugging the cookies in IE. Upon viewing the cookies in Fiddler, the software itself threw up a warning that read:</p>
				<p><blockquote>!! WARNING !!: Server hostname contains an underscore and this response sets a cookie. Internet Explorer does not permit cookies to be set on hostnames containing underscores. See <a href="http://support.microsoft.com/kb/316112">http://support.microsoft.com/kb/316112</a>.</blockquote></p><p>
So I came away from this ordeal with two important lessons:</p><p>
1. Don't use underscores in your domain names. </p><p>
And...</p><p>
2. <a href="http://fiddler2.com/fiddler2/">Fiddler</a> is a very useful tool for debugging headers and cookies for Internet Explorer.</p><p>
Hopefully someone will read this post and be saved some time. I spent hours troubleshooting this problem, came up empty with a number of searches, and likely would have sunk more time if Fiddler did not alert me to the bug in IE.</p>
				<p><a href="/blog/article.cfm/articleid=43/IE-Doesnt-Save-Cookies-For-Domains-w-Underscores#comments" class="action discuss">Discuss this article &raquo;</a></p>
				]]>
			</description>
			<link>http://dgibson.net/blog/article.cfm/articleid=43/IE-Doesnt-Save-Cookies-For-Domains-w-Underscores</link>
			<guid isPermaLink="true">http://dgibson.net/blog/article.cfm/articleid=43/IE-Doesnt-Save-Cookies-For-Domains-w-Underscores</guid>
		</item>

		<item>
			<title><![CDATA[SXSW Interactive Day 5]]></title>
			<pubDate>Thu, 24 Mar 2011 11:25:23 EST</pubDate>
			
			<description><![CDATA[
				<p>Tuesday, March 15th marked the last day of SXSW Interactive. I got up bright and early to catch ?Long After The Thrill: Sustaining Passionate Users? with Stephen Anderson was by far the highlight of SXSWi for me and I took more notes during that session than the previous four days combined. The gist of his talk centered around engaging users and sustaining users? interests by intrinsic rewards instead of extrinsic rewards. Psychology was central to much of this talk and made it that much more interesting. The talk was actually a followup to last year?s talk that focused on making a game out of goals, which can easily lead down the path of focusing on extrinsic benefits. </p><p>
Mr. Anderson's slide show presentation used some cards from <a href="http://getmentalnotes.com/">getmentalnotes.com</a> and he gave away sampler packs at the end of the session. They look like a great resource that I'd never heard of prior to this talk.</p>
				<p>?Adobe?s Tooling for jQuery and the Mobile Web? was an ok preview of how Dreamweaver and the Flash IDE are being developed to integrate with mobile technologies better. Flash can actually output code that?s not flash now! The talk focused on the tools way too much for my liking, however, as I?m not a fan of either Dreamweaver or Flash.</p><p>
?Merch: The Other White Meat Of Monetization II? was a good panel to put late in the day, as it seemed relevant for musicians who might be attending both segments of the conference as well. The talk was actually very interesting, covering the effectiveness of selling merchandise by a number of sites including <a href=?http://www.livestrong.com/?>LiveStrong.com</a>, <a href=?http://www.collegehumor.com/?>CollegeHumor.com</a>, Despair Inc. and more - so different business models, not just selling a shirt for your site. They covered some of the high level strategies and considerations for merch and social media, as it applies to each of the business models represented. A lot of the focus was on signal and message over the merch itself.</p><p>
Day five was a strong ending to the interactive conference. Overall, I think it was worthwhile as a way to get caught up with all the hot topics (social, mobile, and the convergence of web, marketing, advertising and games in those areas), although there were a lot of panels that were big on talk and light on actual answers. I met a lot of developers there, but felt that the schedule was pretty light on pure development topics. There were a few workshops that I opted to pass on, however, and I was just as happy with the UX focused talks that are just as important to me in creating quality applications and sites.</p><p>
The crowds were noticiably thinner throughout the day and that night, with many people opting to leave on Tuesday. Check <a href=?http://www.metalunderground.com/?>Metalunderground.com</a> for the reports on SXSW Music, spanning the next five days.</p>
				<p><a href="/blog/article.cfm/articleid=41/SXSWi-Day-5#comments" class="action discuss">Discuss this article &raquo;</a></p>
				]]>
			</description>
			<link>http://dgibson.net/blog/article.cfm/articleid=41/SXSWi-Day-5</link>
			<guid isPermaLink="true">http://dgibson.net/blog/article.cfm/articleid=41/SXSWi-Day-5</guid>
		</item>

		<item>
			<title><![CDATA[SXSW Interactive Day 4]]></title>
			<pubDate>Tue, 22 Mar 2011 23:47:32 EST</pubDate>
			
			<description><![CDATA[
				<p>After being out the <a href=?http://www.dgibson.net/blog/article.cfm/articleid=39/SXSWi-Day-3?>previous night</a>, I decided to sleep in and didn?t head out to any talks until 11am. The shuttles seemed scarce and I came into ?5 Steps To Bulletproof UX Strategy? a little late. It was an interesting talk though, discussing how to create a user experience strategy via audit, define, plan, implement, measure (repeat). The example of the <a href="http://rhjr.net/downloads/StrategyOnesheet.pdf">Vision Onesheet</a> seemed like a useful addition to the design process as well.</p>
				<p>?Authentication Fails = ID Thieves Succeed. What?s Next?? was a decent talk that covered many security concerns and ways people have stolen personal information through different technologies, such as unlocked iPhones. There were some interesting password stats from recent data leaks as well. It?s funny that the most common passwords are ?123456? and ?password? still - even at a security firm that was recently hacked. Unbelievable. I was hoping there would be more answers as to the common login scenario on web sites, but alas, there were not - at least none that I hadn?t already heard/put into place (use a salted hash for password storage for the best data security).</p><p>
?Moving the Web onto Mobile Devices? was another canned panel discussing the practical concerns - in their experiences - with moving or replicating the web experience on mobile devices. It was an ok panel. There were some interesting insights, a lot of talk about the myth of what HTML5 really is, but not a lot of questions answered, once again.</p><p>
Finally, I hit up ?DIY Diplomacy: Designing Collaborative Gov? to fill my government-related quota for the day. This one was fairly interesting as well, focusing on the Department of State?s efforts to share information better such as in the Virtual Student Foreign Service and Diplopedia projects. It was interesting to hear about some of the efforts and struggles against government culture, but again, I didn?t take away much relevant to my everyday work.</p><p>
That wrapped up Day 4 of SXSWi.</p>
				<p><a href="/blog/article.cfm/articleid=40/SXSWi-Day-4#comments" class="action discuss">Discuss this article &raquo;</a></p>
				]]>
			</description>
			<link>http://dgibson.net/blog/article.cfm/articleid=40/SXSWi-Day-4</link>
			<guid isPermaLink="true">http://dgibson.net/blog/article.cfm/articleid=40/SXSWi-Day-4</guid>
		</item>

		<item>
			<title><![CDATA[SXSWi Day 3 - The &quot;Death of&quot; Panels]]></title>
			<pubDate>Sun, 13 Mar 2011 20:05:52 EST</pubDate>
			
			<description><![CDATA[
				<p>Day three (Sunday, March 13th) at SXSWi would be a long one. The days are hectic enough and I?d been pacing myself to last all ten days of SXSW by avoiding the night life thus far, but I decided to finally check out the famous 6th Street tonight. But until then, I had a slew of panels and talks to attend starting at 9:30am.</p><p>
?Death of the Relational Database? was admittedly a sensational title (like many here) by Hank Williams of Kloudshare, but it was one of many talks relating to the newer distributed databases in the cloud. He admitted that relational databases are not dead, but perhaps ?dying? slowly as the newer technologies become more viable and take hold in an area that has been the sole property of relational databases for 30+ years.</p>
				<p>SQL is one of my stronger skills, so I thought it would be good to hear where things were heading in this area. Mr. Williams was a good speaker, but I couldn?t get past the many bad analogies that piled up one after another and especially his statement that databases really contained no relationships within themselves - that those were all maintained in the application layer. This is patently wrong for many databases, and bad practice to boot, however. He got my attention back when he spoke of scaling and sharding of data, but never really got into any specifics of these newer technologies than naming a few of the newer cloud database applications, so there were not really any answers to get out of the talk.</p><p>
It was quite a hike to the Sheraton from the convention center to hear ?UX Research and Web Analytics,? but it was an interesting talk about how usability testing and analytics can both be used in different areas, and how they can be used together to validate each other. The bulk of the talk was around specific case studies that illustrated where just usability testing had led the site astray, how analytics could be used to find usability problems (such as conversion rate anomalies), and how they could be used together. </p><p>
?Bloggers Fight Back: Legal Workshop for Music Bloggers? was also in the Sheraton, making the long walk more worthwhile. This session was run by a couple of folks from <a href="http://www.publicknowledge.com">Public Knowledge</a>, including a lawyer, Michael Weinberg and Mehan Jayasuriya. It was an informative session that focused largely on the ?folk copyright? that was perpetuated online and clarified the issues of posting music online for download or streaming (you need permission, and even then, keep an audit trail and make sure the proper decision makers are in the loop). </p><p>
They also talked about DMCA notices and liability if you?re on a self-hosted platform. Anyone in the latter situation should head to <a href="http://www.copyright.gov/onlinesp/">copyright.gov/onlinesp/</a> and cough up $100something bucks to file that form to cover your ass in case users post illegal download links on your site. Otherwise, you are liable and can have your domain stripped without a DMCA notice, as those are technically meant for hosted platforms such as Blogger.</p><p>
It was good to get some proper answers from a lawyer and some practical ones from Mehan when Michael had to hedge too much.</p><p>
?HTML5? The Web?s Dead, Baby? was another sensationalized title. Really? Two ?... is dead? topics in a day? This panel discussion used a statement of this nature by Wired about native mobile apps vs the web as a springboard for discussion by a panel of consultants and two Microsoft folks. The questions were a bit canned like <a href="http://www.dgibson.net/blog/article.cfm/articleid=38/SXSW-Day-2">the CSS panel the day before</a>, but it was definitely more interesting than that one. Still, I took not a single note and there were not really any good takeaway points even though it was an interesting discussion. Native vs. web really depends what you want to do.</p><p>
After heading in to rest up a little and change, I scouted out Emo?s at night, since I would need to know how to get there for SXSW Music - a lot of the metal shows and showcases I want to see will be there. That night they had a ?Beercamp? competition going on. It was fun to watch and cool to be at a bar with all geeks and be able to strike up a conversation with pretty much anyone who didn?t have their face in a mobile device. The club is interesting... It seems a little barren and run down on one hand, but it?s very open and has a certain charm to it. The openness is fantastic for getting some fresh air and not feeling and smelling like you were stuck in a smoke box.</p><p>
There was DJing in the ?Beercamp? area and some decent, catchy alt-rock up front. Once the couple of bands I saw were done, they switched to playing some heavy metal through the sound system, which was cool with me, but that room quickly cleared out. I joked with the bar tender about running everyone out with it (as Slayer was playing) as I finished my free beer.</p><p>
I walked up and down 6th Street to see what else looked interesting. It was like nothing I?ve ever seen. The closest thing I could compare it to is Georgetown (in Washington, DC), but the strip was longer here and there were 18,000 people here for a conference. There were some pizza places that smelled so tempting, but I resisted. I stopped by Maggie Mae?s for a drink at the bar and then called it a night and caught a shuttle back to the hotel.</p>
				<p><a href="/blog/article.cfm/articleid=39/SXSWi-Day-3#comments" class="action discuss">Discuss this article &raquo;</a></p>
				]]>
			</description>
			<link>http://dgibson.net/blog/article.cfm/articleid=39/SXSWi-Day-3</link>
			<guid isPermaLink="true">http://dgibson.net/blog/article.cfm/articleid=39/SXSWi-Day-3</guid>
		</item>

		<item>
			<title><![CDATA[SXSWi Day 2]]></title>
			<pubDate>Sat, 12 Mar 2011 23:52:27 EST</pubDate>
			
			<description><![CDATA[
				<p>Day two at SXSWi started with the unpleasant realization that the official SXSW shuttle service was entirely incapable of handling the capacity it needed to. Waiting for 40 minutes for the shuttle, there were already enough people to fill two vans by the time one arrived. They always say ?there?s another one coming? to appease those waiting, but it?s not coming for another 30+ minutes in reality. But I was glad to have gotten on that shuttle and made it to the convention center a mere five minutes before the first session began.</p><p>
?How Print Design is the Future of Interaction? was an interesting talk by Microsoft Creative Director Mike Kruzeniski that covered past trends in desktop, web and print design and how we can draw more from the principles of print design going forward.</p>
				<p>"Drawing Back the Curtains on CSS Implementation" sounded like something fairly developer-centric, and featured Molly Holzschlag, a big name in the realm of CSS. However, the talk was a dud, coming off as a canned-Q&A that was way to informal and focused on the inner workings and struggles of the working group and product developers as opposed to anything that really applied to developers.</p><p>
By noon, the Screenburn Arcade Gaming Expo had opened up, showcasing a few dozen booths pertaining gaming sites and services, upcoming games, and even most interesting (to me), an upcoming mobile platform based on JavaScript, Kinoma.</p><p>
I ran off to the ?Mistakes I Made Building Netflix for the iPhone? session only to find a line of folks waiting to get in, as it was full. So I gladly returned to the Screeenburn Expo and to track down some lunch until the next session.</p><p>
I felt compelled to go to ?Changing the Web Accessibility Game Plan? due to the mandate of  accessibility at my job and the fact that those techniques are generally a good practice. This was more of a discussion, however, with no solid takeaway points. The question was asked if the web as a whole was becoming more accessible and discussion stemmed in many directions from that. Unfortunately the conversation lead to few solid take-away points, or at least nothing to apply to my job as a developer.</p><p>
The final session I attended was called ?Zombies Must Eat: How Genre Communities Make Money.? It was quite a walk to get there, but it was worth it, especially in the beautiful spring weather. What caught my attention is that it was headed by site owners in the horror movies niche, Skot Leach of <ahref=?http://www.lostzombies.com/?>Lost Zombies</a> and KW Loww of <a href=?http://www.dreadcentral.com?>Dread Central</a>. It focused more on community building than actual monetizing of site traffic, which was fine. The experiences of the presenters were very interesting and mirrors my own in many ways. It was more of a reinforcing discussion than enlightening, but the presenters and subject matter kept it very interesting.</p><p>
Day two of SXSWi was a mixed bag, with a couple of good talks and a couple not so good, but that?s to be expected at any conference. The good definitely made it worthwhile. Let?s just hope the shuttle issues are resolved tomorrow. Rather than leave it to fate, I expect I?ll just plan on getting up even earlier to beat the rush, despite the loss of an hour of sleep tonight.</p>
				<p><a href="/blog/article.cfm/articleid=38/SXSWi-Day-2#comments" class="action discuss">Discuss this article &raquo;</a></p>
				]]>
			</description>
			<link>http://dgibson.net/blog/article.cfm/articleid=38/SXSWi-Day-2</link>
			<guid isPermaLink="true">http://dgibson.net/blog/article.cfm/articleid=38/SXSWi-Day-2</guid>
		</item>

		<item>
			<title><![CDATA[SXSWi Day 1]]></title>
			<pubDate>Fri, 11 Mar 2011 23:00:42 EST</pubDate>
			
			<description><![CDATA[
				<p>Having wanted to attend South by Southwest (SXSW) for more than two years, this year, I finally made it happen. I?ll be reporting on each day of the interactive, film, and music conference. I?m actually only attending the interactive and music portions, so I?ll blog the interactive experiences here on <a href="http://www.dgibson.net/">my personal blog</a>, and the music experiences over on <a href="http://www.metalunderground.com/">Metal Underground.com</a>.</p><p>
I arrived in Austin Thursday evening and the interactive and film portions of the conference officially kicked off on Friday, March 11th. With no talks scheduled before 2pm, I figured I?d go pick up my badge and check out the expo/tradeshow area until lunch time. </p><p>
I got my badge and ?swag bag? and headed off to explore the massive Austin Convention center. The swag bag contained only the basics this year: a SXSW pocket schedule and map (essential), the SXSW Interactive book, and the SXSW edition of the Austin Chronicle. It was commented by a few conference goers that it was lighter on swag than in previous years.</p>
				<p>The Austin Convention Center is large and a little confusing, but not as massive and I thought. But I also wasn?t expecting the convention to actually span multiple hotels, some several blocks away.</p><p>
Unfortunately, the expo doesn?t open until Monday, the 14th, however, but this left plenty of time to roam the convention center and nearby areas, and even relax in the sunny, warm weather on a small strip of grass in front of the Hilton long enough to get some sun on my face.</p><p>
The crowd was very noticeably a geek crowd, seemingly very much made up of geeks in their mid twenties to thirties and older.  Everyone had some sort of smart phone to play with, and with all the down time we had before the session began, the walls were lined with people consumed with using their mobile devices. Luckily I had my ipod touch and a Wifi connection to search the schedule and interactive map via the excellent SXSW Go app, so I wasn?t entirely out of place among the mobile using geek crowd.</p><p>
Two o?clock finally rolled around and I went to the ?Big Brother on the Big Screen? panel, featuring Chris Conley (ACLU), Cindy Cohn (EFF), and Tim Edgar (Office of the Director of National Intelligence). It was an interesting discussion about what the government can and can?t do (physically and legally), using fictional movie clips as springboards for discussion. It was an interesting talk, and there were certainly some eye-opening points - such as the description of the fiber optic splitter in the AT&T building in California making a copy of all cell traffic going through there - but far fewer than one might expect, mostly due to Tim?s cagyness about some topics, however reasonable it might be given his position.</p><p>
The next presentation I attended was ?Location, Location, Location? from Google?s Marissa Mayer. There was nothing else compelling in this time slot, and I figured Google would have some cool stuff to show. And they did. To top it off Marissa was a great speaker. She unveiled some recently released products such as traffic routing, turn-by-turn navigation, Google Maps update to vector-based maps, and even Google Hotpot (local recommendations). Interestingly, Google Maps currently has about 150 million mobile users, comprising about 40% of its traffic. The ways that local and maps have grown is heavily due to mobile usage, and mobile and social themes ran deep throughout most of the sessions offered at SXSWi.</p><p>
Interestingly, despite the lack of very web developer-centric topics, I met quite a few web developers (in the traditional sense) in my downtime.</p><p>
Exhaisted and fighting a headache all day, after a quick bite to eat, I headed back to my hotel. Capping the first day, was an extremely long wait during the shuttle service?s shift change, which happened to be around 6pm, which was terrible timing. Not only was it during one of the busiest times when people were heading back to the hotels, but it was during rush hour. So while vans waited for drivers, others were stuck in traffic, slowing service further. I heard from many people that it?s always crazy and uncoordinated on the first day. I hope this is the case.</p><p>
Overall, Friday seemed like a very optional day. Had I been here before and known my way around the city and the convention center a little, I would have flown in on Friday morning rather than Thursday night. But it is a lot to take in, and having some extra time to do so on your first visit is nice.</p>
				<p><a href="/blog/article.cfm/articleid=37/SXSWi-Day-1#comments" class="action discuss">Discuss this article &raquo;</a></p>
				]]>
			</description>
			<link>http://dgibson.net/blog/article.cfm/articleid=37/SXSWi-Day-1</link>
			<guid isPermaLink="true">http://dgibson.net/blog/article.cfm/articleid=37/SXSWi-Day-1</guid>
		</item>

		<item>
			<title><![CDATA[A History of CSS Resets]]></title>
			<pubDate>Wed, 22 Dec 2010 12:05:10 EST</pubDate>
			
			<description><![CDATA[
				<p>Michael Tuck at Six Revisions has posted an excellent "<a href="http://sixrevisions.com/css/the-history-of-css-resets/">History of CSS Resets article</a>." The article not only discusses the history of CSS resets and techniques, but gives them some context for when and how to ues them. Even better, it's part 1 of 3, so there's more coming.</p><p>
I ran across it after noticing a small spike in traffic due to a link to <a href="http://www.dgibson.net/blog/article.cfm/articleid=10/Meyers-CSS-Reset-v1-0-Doesnt-Play-Well-With-IE#comments">my blog noting some issues with Eric Meyer's reset.css and table striping in IE</a>. You can read <a href="http://www.dgibson.net/blog/article.cfm/articleid=11/CSS-Overcoming-background-transparent-In-IE">further discussion of this problem and solutions</a> in my follow-up post.</p>
				<p></p>
				<p><a href="/blog/article.cfm/articleid=36/A-History-of-CSS-Resets#comments" class="action discuss">Discuss this article &raquo;</a></p>
				]]>
			</description>
			<link>http://dgibson.net/blog/article.cfm/articleid=36/A-History-of-CSS-Resets</link>
			<guid isPermaLink="true">http://dgibson.net/blog/article.cfm/articleid=36/A-History-of-CSS-Resets</guid>
		</item>

		<item>
			<title><![CDATA[Obligatory, Unrecommended &quot;Why I Haven&apos;t Been Posting&quot; Blog Post]]></title>
			<pubDate>Sun, 14 Mar 2010 11:41:42 EST</pubDate>
			
			<description><![CDATA[
				<p>After many years of not updating my personal site, I finally relaunched this site as a home grown blog in 2008 when I had some time on my hands after being <a href="http://dgibson.net/blog/article.cfm/articleid=1/Happy-New-Year-Find-A-New-Job">laid off from my job</a>. For about a year I faithfully updated this blog a couple times a month.</p><p>
I'm quite happy to see that my blog posts have been helpful to people. My "<a href="http://dgibson.net/blog/article.cfm/articleid=11/CSS-Overcoming-background-transparent-In-IE">CSS: Overcoming 'background: transparent' In IE</a>" has been read more than 10,000 times and I've seen it quoted on random forums in response to people encountering this particularly annoying issue with Internet Explorer.</p><p>
...And then the project from hell hit and I was pressed for time to do anything for six months. Here we are almost a year since my last post.</p><p>
To be honest, this blog has always taken a back seat to my main site, <a href="http://www.metalunderground.com/">Metal Underground.com</a>, and it always will. Metalunderground.com is my creative outlet on so many levels and has the potential to grow beyond anything I initially imagined.</p><p>
That said, I've had more opportunities at work to explore the front end of web development once again as well as work with different frameworks and CMSes. I've got a bunch of draft blog posts built up here and hope to return to exploring and discussing web development from front end to the Coldfusion back end stuff soon.</p><p>
I'll be back.</p>
				<p></p>
				<p><a href="/blog/article.cfm/articleid=35/Obligatory-Why-I-Havent-Been-Posting-Blog-Post#comments" class="action discuss">Discuss this article &raquo;</a></p>
				]]>
			</description>
			<link>http://dgibson.net/blog/article.cfm/articleid=35/Obligatory-Why-I-Havent-Been-Posting-Blog-Post</link>
			<guid isPermaLink="true">http://dgibson.net/blog/article.cfm/articleid=35/Obligatory-Why-I-Havent-Been-Posting-Blog-Post</guid>
		</item>

		<item>
			<title><![CDATA[Held Hostage By Craptastic Comcast Service - &quot;It&apos;s Craptastic!&quot;]]></title>
			<pubDate>Thu, 02 Apr 2009 16:09:49 EST</pubDate>
			
			<description><![CDATA[
				<p>Sometimes life just throws all sorts of crap at you. I haven't updated this blog in months because work has been insane. On top of the laundry list of challenges in addition to the heavy work schedule since the start of this year, my Internet went down on Sunday, March 26. I had some issues with it dropping a week or so previous, but on this Sunday when I called Comcast customer service (twice, once that went on for half an hour to no avail), they claimed they had known outages and were working on it. When my service was still not restored on Monday the 27th, I called again and set up a service appointment. The earliest they could give me was Thursday, which I was pretty pissed off about already, but grudgingly accepted. A scheduling conflict became apparent and the next day I rescheduled for the later time slot (11-2) on that same Thursday.</p><p>
Wednesday evening I got the confirmation call, which stated the correct time of the appointment for the following day. Late Wednesday night, Internet connectivity was restored, but I didn't trust it (because it had come and gone a few times in a matter of 15 minutes) and still planned for a technician to come out.</p><p>
On Thursday my connection seemed ok until around lunch time. This would be perfect since the tech was supposed to arrive between 11am and 2pm - and for once, they could actually witness the problem instead of everything mysteriously working during that time...if they actually arrived. At five 'til two, I called Comcast to make sure they <em>were</em> coming, and it turns out they <em>were not</em>. They proceeded to tell me that a technician was out on Wednesday, and then changed the story to "I have no appointment in the system for you." So the lady whose voice is in the confirmation recordings must have called me up personally as an April fools gag, right? The service rep  then proceeded to tell me that they have no openings and the earliest appointment they can give me is Sunday! Talking to a "supervisor" made no difference, and I suspected they just did the age old trick of passing the phone to the person next to them, who doesn't give a damn about you or Comcast service either. They are drones and talking to them only reinforced that, as claims of the ridiculousness of the situation and why I have to pay the price (in time wasted/lost) for the screw-up were dismissed in a monotonous droning voice over and over. Meanwhile I will be waiting a full week with mostly no Internet and substandard TV service (it's been breaking up and dropping sound on and off) before anyone will even come out and look at our issues. And chances are that they won't even be able to fix the problem, since my neighbors have been experiencing similar issues as well.</p><p>
What more could I expect but the usual Craptastic service from Comcast? Don't even get me started on the number of times I was told that if I had upgraded to a business account I would have next-day service. Let's put this into perspective: if I were running a small office on a business account (as it's intended) and had 5-10 people lose a day of work due to a Comcast outage, that would <strong><em>still</em></strong> be unacceptable <em>and</em> I'd be paying much more for the service. There is no way to dress it up - Comcast's service sucks. If they did not have a monopoly in our area, I would drop them in a second - and I plan to the day Verizon gets FIOS service in here.</p><p>
The bottom line is that - yes, losing Internet access sucks, especially when you telecommute and own a website that you need to maintain - but it's excrutiatingly frustrating when other people's incompetence makes life harder on you. And to top it off, they were unwilling to lift a finger to make things right. If there was any competition, Comcast would be gone. The service that we pay for from Comcast - both TV and Internet - is already obscenely overpriced. The customer service that they provide is a disgrace and completely unacceptable even if the service was free. To top it off, no one is accountable. If they were even accountable for their actions or serving customers, then the drone-like attitudes would be gone. In retrospect, it's pretty clear they don't care about a damn thing from "Hello." I guess I should have seen the rest coming then.</p><p>
Comcast is a dinosaur that has long outlasted its time and deserves to be extinct. The more I read about Comcast's strong arm lobbying tactics as well as other underhanded tactics used in court, the more I realize that's the <em>only</em> reason they are still around - they spend all their effort protecting their monopoly, not pleasing their customers or tending to their network.</p>
				<p></p>
				<p><a href="/blog/article.cfm/articleid=33/Held-Hostage-By-Craptastic-Comcast-Service#comments" class="action discuss">Discuss this article &raquo;</a></p>
				]]>
			</description>
			<link>http://dgibson.net/blog/article.cfm/articleid=33/Held-Hostage-By-Craptastic-Comcast-Service</link>
			<guid isPermaLink="true">http://dgibson.net/blog/article.cfm/articleid=33/Held-Hostage-By-Craptastic-Comcast-Service</guid>
		</item>

		<item>
			<title><![CDATA[A Beginner&apos;s Guide To On-Page Search Engine Optimization]]></title>
			<pubDate>Sun, 30 Nov 2008 13:43:19 EST</pubDate>
			
			<description><![CDATA[
				<p>Search Engine Optimization (SEO) is comprised of several facets, and new facets are being added often as the search algorithms get more advanced and smarter. As new layers of complexity get added to these algoritms, the older factets often get forgotten or talked about less because they are not the hot topics any more. But the fact is that often those older facets are still important to the core strategy, and a newcomer entering the web arena who discounts them may have a harder time succeeding. The facets of Search Engine Optimization right now are: <br />  <br /><ul><li><strong>On-page optimization</strong>: was most important in the early days of search (along with meta-tags) but has waned in importance over the years as other factors for ranking have been introduced. However, on-page optimization is still central to any SEO strategy, especially for long-tail searches (the abundance of lower competition search phrases and their frequency of searches based on power laws), as <a href="http://www.seobook.com/googles-relevancy-algorithms-change-keyword">noted here</a>.</li> <br /><li><strong>Link Building</strong>: Google made the link the currency of the web by factoring it so heavily into their pagerank algorithm. After link buying became widespread via link brokers, paid reviews and paid directories, Google has steadily reduced the importance of links alone. Links are still an indication of authority, however, and quality and diversity of links and link text are still important trust/authority indicators, moreso than just total number of backlinks.</li><br /><li><strong>Trust/Authority Ranking?</strong>: Factors to validate a site's authority, such as who links to them, age of the domain, and temporal analysis of content creation and link building are thought to be weighed more heavily now, making social marketing a very effective marketing and SEO strategy currently.</li></ul></p><p>
Start with the basics and make sure you're doing things right for on-page optimization. On-page optimization alone will not earn you great rankings for any competitive keywords, but doing it properly means that you're not handicapping yourself down the road, and it can get you ranked for some low-competition long-tail phrases that accumulate over time to become a significant source of traffic. On-page optimization also cascades over to your link building campaign, since poorly crafted titles or headings can sabotage your efforts to build quality links from social media and other bloggers. On-page optimization is often overlooked these days, as it is not <em>the</em> controlling factor to get ranked on the search engines, but it is, in fact, an important foundation that should not be overlooked or neglected. On-page optimization should not drive content creation to the detriment of making content interesting for human consumption, but should be applied in an intelligent manner to make content work best for both humans and search engines.</p>
				<p><h3>On-Page Optimization Basics:</h3><br /><ol><li><strong>Domain name*</strong>. It's debatable, and may also depend on the type of site or service you are planning. Some will say a brandable domain name is more important than a keyword-filled name, but if you can get both at once, it will help your SEO campaign a lot in the long run, and can give it a definite boost in the early days of the site as well.</li><li><strong>Title</strong>. The page's title is probably the single most important on-page factor to ranking well for search terms. Here are some tips on how to optimize your page titles: <ul><li>Home page: Domain Name + tagline (designed to contain more relevant keywords) - E.g. "Sitename.com - your tagline here"</li><li>Content/Article Pages: Short Title + Site Name (if branding is desired or relevant keywords in site name) - E.g. "This is the article title (Sitename.com)"</li><li>If your site URL contains multiple words without dashes, separate them with a space for display. This lets them be recognized as separate words by the search engines.</li></ul></li><li><strong>Tagline</strong>. Place a well crafted tagline just under your site logo. Even if the tagline is plain text (not a heading, strong, emphasized, etc.), it seems to carry much weight in the proximity of your H1 tag and so high in the page's source. This tagline should also be used in the title of the home page. I have seen interesting search results where sites rank for various combinations of high-competition keyword phrases over time just because the tagline included a couple of important keywords that were not usually included verbatim in much of my other content.</li><li><strong>Heading Tags</strong> <ul><li>H1 may be your site name if it includes relevant keywords (then use H2 for the full article title)</li><li>H1 may be used for your main article title if the site name is not of significant SEO value.</li><li>Use subheadings (h2,h3,h4) for secondary groupings and to break up long articles into readable chunks. These heading tags all carry some additional SEO value over plain text or faux headings marked up with bold or strong tags or CSS alone.</li></ul></li><li><strong>Use CSS and image replacement techniques</strong> for design/page template elements to allow for proper structural (SEO friendly) markup of text, rather than using images directly in your HTML. E.g. The difference between using an H1 tag for your site logo vs an IMG tag could be significant.</li><li><strong>Use a long headline and short headline/title</strong> for articles throughout your site. Small variations make the site look less search engine optimized, while creating slight variations in keywords used and targeted. In looking less intentionally optimized, having a differing title tag and article heading (h1 or h2, as the case may be) is the most important. The SEO value of a page title is high, but only up to around 160 characters. Using a separate, longer article headline allows you to fit some more important details in there while also making it differ from the exact title (short headline). Furthermore, you can vary where these two headlines are used as links: Use the full headline in RSS feeds, which often are auto-linked when displayed on other sites and feed readers. Use the short headline throughout your site to inter-link content via the main blog page and lists of popular and related articles. The short headline is also idea for creating URL slugs for search engine safe URLs.</li><li><strong>Site architecture and friendly (Search Engine Safe) URLs</strong>. Naming subdirectories and pages using useful terminology (keywords) and SES URLs can have some impact on search rankings, as the URL is seen as a factor as well. Using SES URLs may not make or break an established site in search rankings, but can help an startup get more content indexed, as it has been said that Google's limits to how much dynamic content it will spider scale with the site's PageRank.</li><li><strong>Meta-Description</strong>. Create a Meta-description tag for each page. For articles, this can be done by using the long headline or another field such as a summary. The Meta-description arguably may play little to no role in actual search rankings, but is often what is shown in the search engine results pages (SERPs) and then can make the difference between a click through to your site.</li><li><strong>Inter-link related content</strong>. This helps people as well as search engines. Links from your own site are not worth as much in the eyes of the search engines as links from external sources, but linking related content on your own site can help the search engines makes sense of it (using both the link text and subject matter of the page linking to the content) as well as help search engines find your site's early content that may not have been indexed properly when the site was younger. A related articles list may be sufficient, but editorial/in-content links are typically seen as the best location for links, and this may be true for same-site links as well.</li><li><strong>Diversify</strong>. Building and getting links that are diverse looks more natural and may help you more in the long run that a tightly controlled effort to target one or two phrases over and over. Diversifying the places where your content or keywords live may also help to some degree. Having a phrase as the alt-tag of an image may be helpful, as well as emphasised, strong or link text (but don't try to do them all, all the time or you'll ). After these points, you enter the realm of diminishing returns.</li><li>Further optimization may not be useful beyond these items above. The importance of keyword density has largely been dismissed in recent years and spending too much time on on-page optimization beyond these points or on the later points should probably be spent on content creation or other marketing efforts.</li></ol></p><p>
A good CMS will be able to accommodate many of these points out of the box. Some do not and many may require some customizing to get it right, however, which is why on-site optimization is important to get right from the start.<br /> <br /><h3>Keyword Research</h3><br />On-Page Optimization does not happen in a void. Keyword research in essential for naming your site and creating a tagline, targeted content, headlines, links campaigns, etc. Content creation should not revolve around SEO, but keeping in mind your target keywords you're trying to rank for can help your rankings and getting targetted traffic instead of making the mistake of targetting less effective terms.<br /> <br /><h3>Content Creation For People</h3><br />Let's not forget in all this talk of SEO and keywords that content creation should be done for people first. Writing attention grabbing headlines and titles is essential for enticing users to click through on your article from the SERPs, a feed reader or aggregator, your site's home page, or anywhere else your article may be linked using the title text. It is also a direct factor in how successful linking campaigns and social networking campaigns work for any given article. So while on-page optimization is an important baseline to work on, in the end, the content you're trying to get found should be written for people, and the social aspect of the web can take your SEO campaign to the next level. That requires great content and presentation.</p><p>
<h3>Conclusion</h3><br />On-page optimization is often overlooked in SEO circles' discussion because there are so many more cutting-edge SEO topics to discuss. On-page optimization has been discussed since the early days and has changed relatively little in search algorithms in recent years when compared to other aspects of those algorithms. However, on-page optimization and content creation itself are the very core of any SEO campaign and cascade down to other areas of your SEO campaign such as link building and leveraging social networking (which itself helps with link building).</p><p>
<h3>Further Reading</h3><br /><ul><li><a href="http://www.google.com/webmasters/docs/search-engine-optimization-starter-guide.pdf">Google's SEO Starter Guide</a></li><li><a href="http://en.wikipedia.org/wiki/Th_Long_Tail">The Long Tail</a></li><li><a href="http://www.wired.com/wired/images.html?issue=12.10&topic=tail&img=2">Anatomy of the Long Tail</a></li><li><a href="http://demonstrations.wolfram.com/TheLongTail/">The Long Tail Demonstration</a></li><li><a href="http://searchengineland.com/building-seo-momentum-by-using-a-consistant-site-structure-15441.php">Building SEO Momentum by Using A Consistent Site Structure</a></li><li><a href="http://www.seobook.com/">SEOBook.com</a> - I've been reading about SEO for many years, but Aaron's blog and (now discontinued) ebook have been an invaluable source of SEO information. Since changing focus, his blog has been regularly producing in-depth articles on various SEO, SEM, and web publishing topics.</li></ul></p>
				<p><a href="/blog/article.cfm/articleid=30/A-Guide-To-On-Page-Search-Engine-Optimization#comments" class="action discuss">Discuss this article &raquo;</a></p>
				]]>
			</description>
			<link>http://dgibson.net/blog/article.cfm/articleid=30/A-Guide-To-On-Page-Search-Engine-Optimization</link>
			<guid isPermaLink="true">http://dgibson.net/blog/article.cfm/articleid=30/A-Guide-To-On-Page-Search-Engine-Optimization</guid>
		</item>

		<item>
			<title><![CDATA[How Much Can you Trust Google With Your Email?]]></title>
			<pubDate>Tue, 28 Oct 2008 10:19:38 EST</pubDate>
			
			<description><![CDATA[
				<p>Like many people, I've been using Google's hosted email solution for some time. Google is pretty good at filtering spam, so (again) like many others, I let my email go to Google, have them filter the spam, and then pull it down via Thunderbird. When I notice a lull in email, I usually think something is up, and today upon logging in to the hosted email account directly, I see dozens of legitimate emails in the spam folder, including my Google Analytics report from Google themselves. Wonderful.</p><p>
Now my spam folder is thousands of messages large, so it's not really a good use of time to go through them all looking for false positives, but I'll have to sample the last few days at least.</p><p>
Conspiracy threories aside (I've never bought into any of the Google conspiracy theories I've heard), the question that has to be asked is at what point does a free service like this become a liability to your busniness? It's definitely made me think twice about hosting any more domain email accounts with them.</p><p>
I just thought I'd warn some of you about my experience and I'd be interested in hearing if you've experience the same issue lately.</p>
				<p></p>
				<p><a href="/blog/article.cfm/articleid=29/How-Much-Can-you-Trust-Google-With-Your-Email#comments" class="action discuss">Discuss this article &raquo;</a></p>
				]]>
			</description>
			<link>http://dgibson.net/blog/article.cfm/articleid=29/How-Much-Can-you-Trust-Google-With-Your-Email</link>
			<guid isPermaLink="true">http://dgibson.net/blog/article.cfm/articleid=29/How-Much-Can-you-Trust-Google-With-Your-Email</guid>
		</item>

		<item>
			<title><![CDATA[Content Is King, But Marketing Is Queen and The Queen Runs The Household]]></title>
			<pubDate>Tue, 07 Oct 2008 23:01:11 EST</pubDate>
			
			<description><![CDATA[
				<p>Problogger.com recently posted <a href="http://www.problogger.net/archives/2008/09/30/13-gary-vaynerchuck-tips-on-building-a-profitable-blog/">13 Tips on Building a Profitable Blog</a>, derived from Gary Vaynerchuk's Blog World Expo keynote. In this article, one line in particular struct a chord with me:</p><p>
<blockquote>content is king but marketing is queen and the queen runs the household.</blockquote></p><p>
I really like this and I obviously could not have said it better. This statement concisely summarizes what I was trying to say in my recent post, entitled "<a href="http://dgibson.net/blog/article.cfm/articleid=17/Debunking-The-Build-It-And-They-Will-Come-Myth">Debunking The 'Build It And They Will Come' Myth For Websites, and Is Content Really King?</a>."</p><p>
In non-analogy terms, content creation alone is usually not enough to create a hugely successful blog or web site, and the content you do create should be part of and integrate with your SEO and marketing efforts. Marketing is usually what really puts a site over the top in success. Sometimes the marketing and content are one in the same (e.g. linkbait, controversial articles, viral content) and other times the marketing is totally separate.</p>
				<p><object width="400" height="298"><param name="allowfullscreen" value="true" /><param name="allowscriptaccess" value="always" />	<param name="movie" value="http://vimeo.com/moogaloop.swf?clip_id=1813797&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=&amp;fullscreen=1" /><embed src="http://vimeo.com/moogaloop.swf?clip_id=1813797&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=&amp;fullscreen=1" type="application/x-shockwave-flash" allowfullscreen="true" allowscriptaccess="always" width="400" height="298"></embed></object><br /><a href="http://vimeo.com/1813797?pg=embed&amp;sec=1813797">Gary Vaynerchuk Blog World Expo Keynote Speech</a> from <a href="http://vimeo.com/user656034?pg=embed&amp;sec=1813797">David Peralty</a> on <a href="http://vimeo.com?pg=embed&amp;sec=1813797">Vimeo</a>.</p>
				<p><a href="/blog/article.cfm/articleid=28/Content-Is-King-But-Marketing-Is-Queen---#comments" class="action discuss">Discuss this article &raquo;</a></p>
				]]>
			</description>
			<link>http://dgibson.net/blog/article.cfm/articleid=28/Content-Is-King-But-Marketing-Is-Queen---</link>
			<guid isPermaLink="true">http://dgibson.net/blog/article.cfm/articleid=28/Content-Is-King-But-Marketing-Is-Queen---</guid>
		</item>

		<item>
			<title><![CDATA[Miss Teen USA 2007 South Carolina For Vice President?]]></title>
			<pubDate>Thu, 02 Oct 2008 22:52:14 EST</pubDate>
			
			<description><![CDATA[
				<p>Is it just me or does this:</p><p>
<object width="400" height="324"><param name="movie" value="http://www.youtube.com/v/L8__aXxXPVc&hl=en&fs=1"></param><param name="allowFullScreen" value="true"></param><embed src="http://www.youtube.com/v/L8__aXxXPVc&hl=en&fs=1" type="application/x-shockwave-flash" allowfullscreen="true" width="400" height="324"></embed></object></p><p>
remind you of this?:</p><p>
<object width="400" height="324"><param name="movie" value="http://www.youtube.com/v/lj3iNxZ8Dww&hl=en&fs=1"></param><param name="allowFullScreen" value="true"></param><embed src="http://www.youtube.com/v/lj3iNxZ8Dww&hl=en&fs=1" type="application/x-shockwave-flash" allowfullscreen="true" width="400" height="324"></embed></object></p><p>
Oh wait, I just noticed someone actually posted the latter as a response to the former on YouTube, so I guess it's not just me.</p><p>
I really don't care for politics on any level, but Palin sure isn't doing her party any favors with a number of comments I've heard.</p><p>
P.S. 45 minutes of tonight's debate is about all I could take.</p>
				<p></p>
				<p><a href="/blog/article.cfm/articleid=27/Miss-Teen-USA-2007-South-Carolina-For-V-P-#comments" class="action discuss">Discuss this article &raquo;</a></p>
				]]>
			</description>
			<link>http://dgibson.net/blog/article.cfm/articleid=27/Miss-Teen-USA-2007-South-Carolina-For-V-P-</link>
			<guid isPermaLink="true">http://dgibson.net/blog/article.cfm/articleid=27/Miss-Teen-USA-2007-South-Carolina-For-V-P-</guid>
		</item>

		<item>
			<title><![CDATA[More Tips To Reduce Latency and Improve Web Site Performance]]></title>
			<pubDate>Sat, 06 Sep 2008 16:21:47 EST</pubDate>
			
			<description><![CDATA[
				<p>I was catching up on reading one of my favorite web development/performance related sites this weekend, <a href="http://highscalability.com/">High Scalability</a>, and read some more gems on improving performance (perceived speed) of your web site. There's this <a href="http://highscalability.com/latency-everywhere-and-it-costs-you-sales-how-crush-it">massive article about latency</a> to start, in which they state:</p><p>
<blockquote>Latency matters. Amazon found every 100ms of latency cost them 1% in sales. Google found an extra .5 seconds in search page generation time dropped traffic by 20%. A broker could lose $4 million in revenues per millisecond if their electronic trading platform is 5 milliseconds behind the competition.</blockquote></p><p>
That will get your attention. I think the quote itself confuses the matter of latency with load time, and one must wonder how perceived load time of partial page rendering fits into the equation as well.</p><p>
The article goes on to define latency and touch on a number of related topics and links to articles that go more in depth on various facets.</p><p>
Many of these points are related to and boil down to <a href="http://developer.yahoo.com/performance/rules.html">Yahoo's Best Practices for Speeding Up Your Web Site</a>, of which they've <a href="http://developer.yahoo.net/blog/archives/2008/03/yahoos_latest_p.html">added another 20</a> to the original set of 14.</p>
				<p>The original 14 rules were:</p><p>
1. Make fewer HTTP requests<br />2. Use a CDN<br />3. Add an Expires header<br />4. Gzip components<br />5. Put CSS at the top<br />6. Move JS to the bottom<br />7. Avoid CSS expressions<br />8. Make JS and CSS external<br />9. Reduce DNS lookups<br />10 Minify JS<br />11. Avoid redirects<br />12. Remove duplicate scripts<br />13. Turn off ETags<br />14. Make AJAX cacheable and small</p><p>
The additional recommendations are:</p><p>
1. Flush the buffer early [server]<br />2. Use GET for AJAX requests [server]<br />3. Post-load components [content]<br />4. Preload components [content]<br />5. Reduce the number of DOM elements [content]<br />6. Split components across domains [content]<br />7. Minimize the number of iframes [content]<br />8. No 404s [content]<br />9. Reduce cookie size [cookie]<br />10. Use cookie-free domains for components [cookie]<br />11. Minimize DOM access [javascript]<br />12. Develop smart event handlers [javascript]<br />13. Choose <code>&lt;link&gt;</code> over @import [css]<br />14. Avoid filters [css]<br />15. Optimize images [images]<br />16. Optimize CSS sprites [images]<br />17. Don't scale images in HTML [images]<br />18. Make favicon.ico small and cacheable [images]<br />19. Keep components under 25K [mobile]<br />20. Pack components into a multipart document [mobile]</p><p>
<a href="http://developer.yahoo.com/performance/rules.html">This link</a> summarizes them all.</p><p>
There are definitely some interesting items in there that not everyone thinks about. Including your favicon.ico in your caching plan is something many people might not think about (if you even HAVE a caching plan). Avoiding @import and filters in CSS are certainly things one would not think would affect site performance.</p><p>
I've actually used <code>&lt;CFFLUSH&gt;</code> in an app or two to improve perceived load time - and it did considerably - but that was in a non-gzipped environment. I've been a bit wary about combining the two, but I may be worrying for nothing.</p><p>
IMO, the biggest bang for your buck can come from grouping a number of these related items together: split up external assets onto multiple hosts (images, scripts, and css subdomains), serve some from a CDN, and do NOT use domain cookies. That should give any site a serious boost, as it takes advantage of request concurrency while reducing the overhead of cookie requests on potentially a large number of http calls.</p><p>
It sounds like a lot of stuff to remember or a lot of items to actually do, but these are things best integrated into a best practices list and kept in the back of your mind going forward on new projects. Unless you might be leaving money on the table on existing sites, that is.</p>
				<p><a href="/blog/article.cfm/articleid=25/More-Tips-To-Improve-Web-Site-Performance#comments" class="action discuss">Discuss this article &raquo;</a></p>
				]]>
			</description>
			<link>http://dgibson.net/blog/article.cfm/articleid=25/More-Tips-To-Improve-Web-Site-Performance</link>
			<guid isPermaLink="true">http://dgibson.net/blog/article.cfm/articleid=25/More-Tips-To-Improve-Web-Site-Performance</guid>
		</item>

		<item>
			<title><![CDATA[Web Typography and Fonts Still Being Discussed and Parodied Even]]></title>
			<pubDate>Wed, 27 Aug 2008 23:23:08 EST</pubDate>
			
			<description><![CDATA[
				<p>With all the <a href="http://ajaxian.com/archives/the-fight-for-fantastic-fonts-or-lets-give-tahoma-a-rest">recent</a> <a href="http://ajaxian.com/archives/embeddedopentypeandthew3c<br />">activity</a> around typography on the web and font embedding, this <a href="http://www.collegehumor.com/video:1823766">College Humor</a> video (after the jump) was timed perfectly (or at least my <a href="http://www.kooshmoose.com/">friend</a> sending me the link the other <del>day</del> week). I can't believe that someone would put this amount of effort into a video about fonts, but it is very well done and chock full of geek humor.</p>
				<p><object type="application/x-shockwave-flash" data="http://www.collegehumor.com/moogaloop/moogaloop.swf?clip_id=1823766&fullscreen=1" width="640" height="360" ><param name="allowfullscreen" value="true" /><param name="AllowScriptAccess" value="true" /><param name="movie" quality="best" value="http://www.collegehumor.com/moogaloop/moogaloop.swf?clip_id=1823766&fullscreen=1" /></object></p><p>
UPDATE: <a href="http://www.webdirections.org/blog/the-return-of-font-embedding-to-the-web/">John Allsopp</a> just published an extrensive summary of the state of font technologies (via <a href="http://ajaxian.com/archives/towards-using-custom-fonts">Ajaxian</a>).</p>
				<p><a href="/blog/article.cfm/articleid=22/Web-Typography-and-Fonts-Still-Being-Discussed#comments" class="action discuss">Discuss this article &raquo;</a></p>
				]]>
			</description>
			<link>http://dgibson.net/blog/article.cfm/articleid=22/Web-Typography-and-Fonts-Still-Being-Discussed</link>
			<guid isPermaLink="true">http://dgibson.net/blog/article.cfm/articleid=22/Web-Typography-and-Fonts-Still-Being-Discussed</guid>
		</item>

		<item>
			<title><![CDATA[On Coldfusion And SQL Injection Attacks: Metalunderground.com As A Case Study]]></title>
			<pubDate>Tue, 19 Aug 2008 22:35:35 EST</pubDate>
			
			<description><![CDATA[
				<p>To follow up on <a href="http://dgibson.net/blog/article.cfm/articleid=21/Metalunderground-com-Gets-Hacked">my previous message about my site</a>, Metalunderground.com, being "hacked," I thought I'd go into more detail on the attack and what web developers and site owners can do against it. To clarify, I put quotes around "hacked" because it's not really so much hacking as it is a scripted attack, perpetrated by some script kiddie in China, not a "real hacker."</p><p>
If I wasn't so busy of late, I'd have noticed the many blog posts about SQL Injection attacks hitting ColdFusion sites.<br />It seems a <a href="http://blog.wired.com/monkeybites/2008/04/microsoft-datab.html">similar attack</a> swept through MySQL-powered sites earlier in the year, but the recent bout of attacks affecting ColdFusion sites using MS SQL Server hit hard in July with a few as early as June from what I have read. There's a particularly nasty version of the attack (seemingly <a href="http://www.bloombit.com/Articles/2008/05/ASCII-Encoded-Binary-String-Automated-SQL-Injection.aspx">largely perpetrated by a botnet</a>)<br />that appends a cross-site scripting exploit (XSS) into EVERY varchar, nvarchar, text and ntext column in your database. Doing so not only corrupts your data, but can result in data loss beyond cleanup. </p><p>
Fortunately, the attack on Metalunderground.com appears to be more targeted. The attacker injected a 24KB payload of XSS and spam links into each of nearly 40,000 news records. The focus of the injection actually made finding the problem very difficult.</p><p>
To reiterate what's been said around the Coldfusion development community, absolutely make sure you use CFQUERYPARAM on EVERY variable going into your queries - especially URL, FORM, SESSION and COOKIE and CGI variables, which can all be corrupted. You might as well just make it standard practice, because often variables in the local, request, or other scopes are often dumped from cookies or sessions as well (in application code, that is), meaning any tampering could trickle down into those scopes.</p><p>
Also, do not rely on the CFADMIN checkbox for "Global script protection" or any other built-in security. I've always been very skeptical of the built-in protection in ColdFusion or any other black-box code like this, and for good reason. This particular attack uses a DECLARE statement and encoded SQL and payload, failing to trigger the catch-words to invoke the protection.</p><p>
Read on to learn from my experience gained from this attack.</p>
				<p><h3>Troubleshooting the Issue</h3></p><p>
I first noticed something was wrong when I got a down-notice from my server monitor, <a href="http://www.pingdom.com/">Pingdom</a> one day near the end of July around the end of the work day. I could still remote into my server, but web pages were not being served. The issue seemed very weird and I began troubleshooting all sorts of stuff from Apache to ColdFusion and the JVM. Sifting through logs, I saw lots of timeouts from CF and eventually reinstalled CF to no avail.</p><p>
After extensive troubleshooting and research online, I was convinced I was under a Denial of Service attack. As soon as I would start up the server, the TCP connections would queue up at a rate of 5-10 per second. At about 700-800 TCP connections, the server would hang and/or boot me off of my remote connection, requiring a hard reboot to connect again.</p><p>
A few days went by and I had made little progress after tons more reading. Finally, I noticed that my database files were massive, sitting at 2.6GB. I knew they were only a few hundred megabytes not too long ago, and that's when I started looking more closely and discovered that it was the database that was attacked.</p><p>
<h3>Backup Your Data...AND Verify It!</h3></p><p>
At this point I went to check out my backups, only to realize they had not been firing for a couple of weeks. And the ones that were firing before that were timing out for some reason and contained only partial backups, never getting to my database that was affected. I pretty much shit a brick, thinking I had lost a ton of data back to late May, when my last good backup was from.</p><p>
<h3>SQL To The Rescue?</h3></p><p>
After much research, I found a number of stored procs and queries to help me track down the injected text. I wrote a script to clean out the affected table in ColdFusion. All seemed well - the data could be scrubbed, only ntext fields were affected (in my case), it was unlikely that there was any data truncation, and I could close the security holes in my code and be up and running again.</p><p>
I did this, but the database's file size did not change, even after shrinking it multiple times and trying all the options to shrink it. I started the server up again but its performance was still severely degraded. After more research, I found a neat query that displays the physical size of every table in a database.</p><p>
<h3>SQL: Dead and Bloated</h3></p><p>
The news table that was attacked still had a gigabyte of empty space in it and there was no way I knew of to fix it. This was presumably the cause for the performance degradation, especially since news is the main feature of Metalunderground.com.</p><p>
Fortunately, I located a backup of the database I had made manually just a day before the attack. I would lose a little data, but not much by restoring that, so that's what I did. The .mdf file was a mere 360MB for over seven years' worth of data, as opposed to 2.6GB.</p><p>
<h3>Plugging the Holes with CFQUERYPARAM</h3></p><p>
In my early days as a CF developer, I did not use CFQUERYPARAM. The code base for Metalunderground.com is largely over 8 years old. The main barriers to using CFQUERYPARAM are remembering how the data types map (I still don't remember when to use date and timestamp sometimes) and dealing with NULLs and data constraints. These issues are fairly trivial once you go down that road though. CFQUERYPARAM is a necessity these days. Learn to deal with this slightly less friendly tag or you <em>will</em> be dealing with SQL Injection attacks at some point.</p><p>
I had actually updated a good bit of my code recently, and using CFQUERYPARAM was a major priority. But there were probably one or two spots where I still did not use CFQUERYPARAM and that's all it took to leave a loophole open. The main place was on a dynamic ORDER BY clause, because you cannot parameterize those values. The real solution to that case is to validate the data more strictly. Since you are likely passing a alphanumeric tablename and "ASC" or "DESC," validation of the data is fairly straight forward.</p><p>
Pete Freitag has a <a href="http://www.petefreitag.com/item/677.cfm">great writeup on CFQUERYPARAM</a> and how to validate the data in those places where CFQUERYPARAM cannot be used. Additionally, RIA Forge has <a href="http://qpscanner.riaforge.org/">a project</a> to scan your codebase for queries using variables without CFQUERYPARAM. It can give an enormous number of false positives because it will display every query that has hash signs that are not in a CFQUERYPARAM - even those properly validated, in places where CFQUERYPARAM doesn't work, or even commented out! But false positives are better than missing one and leaving a security hole, so I'd say it's worth the time to check out anyway.</p><p>
<h3>It Can Happen To You!</h3></p><p>
Don't think because you're a small blog that you won't get attacked. Many blogs have been attacked. Remember that those tools used to scan for vulnerabilities can be automated by hackers to check for vulnerable sites as well. No one is safe, unless your application is airtight.</p><p>
<h3>Further Reading</h3></p><p>
<ul><li><a href="http://www.mssqltips.com/tip.asp?tip=1559">Recover from a SQL Injection Attack on SQL Server (MSSQLTips.com)</a></li><br /><li><a href="http://www.mssqltips.com/tip.asp?tip=1555">SQL Server Find and Replace Values in All Tables and All Text Columns (MSSQLTips.com)</a></li></ul></p>
				<p><a href="/blog/article.cfm/articleid=23/On-Coldfusion-And-SQL-Injection-Attacks#comments" class="action discuss">Discuss this article &raquo;</a></p>
				]]>
			</description>
			<link>http://dgibson.net/blog/article.cfm/articleid=23/On-Coldfusion-And-SQL-Injection-Attacks</link>
			<guid isPermaLink="true">http://dgibson.net/blog/article.cfm/articleid=23/On-Coldfusion-And-SQL-Injection-Attacks</guid>
		</item>

		<item>
			<title><![CDATA[Metalunderground.com Gets &quot;Hacked&quot;]]></title>
			<pubDate>Mon, 04 Aug 2008 09:27:13 EST</pubDate>
			
			<description><![CDATA[
				<p>If you were visiting Metalunderground.com and you're seeing this message on my personal/web development blog, it's because I'm working on cleaning the corrupted data from a SQL injection attack. Some of the data in our database was corrupted, but Metalunderground.com will be restored and back online today, Monday, August 4. More details soon.</p><p>
Thanks for your patience.</p>
				<p></p>
				<p><a href="/blog/article.cfm/articleid=21/Metalunderground-com-Gets-Hacked#comments" class="action discuss">Discuss this article &raquo;</a></p>
				]]>
			</description>
			<link>http://dgibson.net/blog/article.cfm/articleid=21/Metalunderground-com-Gets-Hacked</link>
			<guid isPermaLink="true">http://dgibson.net/blog/article.cfm/articleid=21/Metalunderground-com-Gets-Hacked</guid>
		</item>

		<item>
			<title><![CDATA[Debunking The &quot;Build It And They Will Come&quot; Myth For Websites, and Is Content Really King?]]></title>
			<pubDate>Wed, 30 Jul 2008 00:35:32 EST</pubDate>
			
			<description><![CDATA[
				<p>One thing that's slowly been beaten into me from recent reading (books and blogs) is the importance of marketing.</p><p>
As a developer, I've had bad experiences with marketing and sales people. They have been the ones who make promises, whether related to features or delivery deadlines, that the developer has to deliver. Often, they don't even have a clue about the technical aspects of a project and are often talking out of their ass. Not to mention these people just seem to talk too much for an introverted developer's (such as myself) taste. So perhaps I ignored those skills and marketing and sales as a whole for some time as a result.</p><p>
But as a freelancer or web entreprenuer, there's really no choice but to learn how to market - market yourself, your services, your products, your web properties, etc.</p>
				<p><h3>The Fallacy of "Build It And They Will Come"</h3></p><p>
I've had the chance to get on my soap box a number of times lately to debunk the myth of "build it and they will come." Unfortunately the mantra "Content is King" seems to propagate this myth to some effect. </p><p>
"Build It And They Will Come" is a developer's (and entreprenuer's) dream, but sadly it is not reality. With millions of sites and URLs on the web, people have to be able to find you and your product. Build it and no one comes. Market it and they will come.</p><p>
<h3>If Content Is King, He's Nothing Without His Heralds</h3></p><p>
My reading has ranged from books and blogs on freelancing to <a href="http://www.seobook.com/">Aaron Wall's SEO Book</a>, to the <a href="http://teachingsells.com/?ref=278328ee">Teaching Sells program</a>, and I've realized that marketing is important on so many levels. These included advertising, presentation, niche-focus, sales tactics and copyrighting among others.</p><p>
Thanks to Aaron's SEO Book (a 350 page e-book that has been discontinued in favor of the Teaching Sells model memebership site that he is making bank off of) I've seen <acronym title="Search Engine Optimization">SEO</acronym> in a new light. SEO is a part of <acronym title="Search Engine Marketing">SEM</acronym>, not a separate task. If you've researched your niche and topic, writing blog posts can be a very effective marketing tool. However, uneducated and untargetted blogging will usually yield minimal results, as many a struggling blogger can atest. </p><p>
But content is only one facet of SEO. Your link building campaign has far greater weight and an exponential effect on the visibility your site may obtain. Link building involves a variety of tasks, including tapping into directories, the blogoshphere (oh, how I hate how that word sounds), social networks/media and other techniques such as linkbait and viral ads and video. Content plays a role in several of these facets as well, however.</p><p>
<a href="http://teachingsells.com/?ref=278328ee">Teaching Sells</a> is a program by Brian Clark (also of <a href="http://www.copyblogger.com/">Copyblogger</a> notoriety) that I got turned on to via my Problogging reading. It focuses on building and making money with membership websites. The exact model may not be for everyone, but almost any site can feasibly have a membership component. I signed up for a $1, 1 week trial, planning to download some stuff and read it, and cancel before the heftier fees kicked in. However, in my trial, I realized not only what a great marketer Brian Clark was, but that he had a wealth of great content on many facets of marketing such as copywriting, pricing, and more. Furthermore, he made it so I couldn't download much of it, thereby sucking me into his membership program at least temporarily. I have to commend him not only on the superb job of marketing the product, but the quality of the materials inside pertaining to marketing such a product - after all the marketing and sales copy/pitch, I was still impressed with the product and it's presentation. (Note, he is <a href="http://teachingsells.com/articles/closing-the-doors/?ref=278328ee">relaunching the system</a> under a new, higher pricing structure on August 1, so check it out now if it sounds interesting).</p><p>
<h3>No Marketing Plan Is Still A Marketing Plan</h3></p><p>
Even if you've chosen not to market your site or product, you have chosen a course of action. Sure it happens sometimes - if a product happens to take off without any outward marketing plan, it will likely be because of word or mouth or social media and/or networking. Mostly likely such a plan was seeded in the first place. But even in the event that it wasn't intended, not nurturing such successful marketing routes is just plain dumb.</p><p>
<h3>Content Is An Essential Part of Marketing</h3></p><p>
Let's not shortchange content's role though. The word has come up countless times in my talk of marketting up to this point. Content is still a large part of your marketing effort, both in SEO and copy writing. Perhaps its title is well-deserved afterall. Content is essential for getting the attention as well as closing the sale. Content is often the main attraction as well as a key part of the marketing material.</p><p>
Let's just be realistic and not fool ourselves into thinking that throwing up a bunch of blog posts and products in a store will bring one riches. You still have to build a quality product and/or write quality blog posts, but you need to market them like hell to ever have a chance of reaching the critical mass needed for success.</p>
				<p><a href="/blog/article.cfm/articleid=17/Debunking-The-Build-It-And-They-Will-Come-Myth#comments" class="action discuss">Discuss this article &raquo;</a></p>
				]]>
			</description>
			<link>http://dgibson.net/blog/article.cfm/articleid=17/Debunking-The-Build-It-And-They-Will-Come-Myth</link>
			<guid isPermaLink="true">http://dgibson.net/blog/article.cfm/articleid=17/Debunking-The-Build-It-And-They-Will-Come-Myth</guid>
		</item>

		<item>
			<title><![CDATA[Just Say No To Kirby&apos;s Free Carpet Shampoo Offer]]></title>
			<pubDate>Sun, 06 Jul 2008 16:33:21 EST</pubDate>
			
			<description><![CDATA[
				<p>I got a call a week or so ago offering a free carpet shampoo for one of my rooms. I usually do not deal with these marketing people or listen to their offers at all. But this seemed simple enough and didn't require much of a committment on my part, especially since I work from home. I realized I would probably have to sit through a sales pitch, but that wouldn't be a big deal since the appointment was set near lunch time.</p><p>
The person on the phone who set this up did not elaborate any further than confirm that I would have to listen to a sales pitch. I had no idea what the company did, but assumed that they were a service company.</p><p>
<h3>Kirby Sells VERY Expensive Vacuum Cleaners</h3><br />When the appointment came, I learned they were selling Kirby vacuum cleaners. I knew they would be expensive as well, but it wasn't until the end that I learned that these were $1,600 vacuum cleaners! If you aren't interested in a $1,600 vacuum cleaner, then take my advice and don't ever set up one of these appointments. The two and a half hours-plus that was wasted on this demo was not worth the free carpet shampoo by any means.</p>
				<p>The experience wasn't horrible at first or I would have kicked the sales people out early on. The lengthy product demo bordering on two hours long could have been shorter though. They spent way too much time interchanging parts to show all the great features of this unit that was much more than a vacuum cleaner. There was so much part switching that I found it to be tiresome and actually a down-side before he was even on to the vacuum cleaner itself. Furthermore, they went on ad nauseum about dust, dust mites and allergens, which I already knew because my oldest son has dust allergies. Mentioning this only made things worse for the sales pitch, however, as the pitch began taking on overtones of guilt. If I could have a cleaner house for my son, I should do everything I can to that end, right?</p><p>
<h3>A Poorly Thought Out Product Demo</h3><br />The worst part of the demo came when the gentleman decided to pour salt on my carpet and grind it in with his shoe. He proceeds to tell me what I already know - that the edges of salt and sand can act like microscopic blades and cut the threads of your carpet, thereby ruining it. He uses my vacuum cleaner - a Dyson for pet owners (we don't have pets, but I got this model because it's more effective than the lower models) and ran over the spot 100 times asking the stupid question if I thought it had got all of the salt. Of course not - he was going to show me how great this Kirby was. As he's vacuuming with the Kirby and getting more salt out, which shows up nicely on the black filter pads he has for this demo, he makes a statement to the effect of "if someone told you the Dyson would not get all of the dirt out of the carpet after 100 times over it, would you buy it?" This is when I had enough of the nonesense and I bitterly commented that I did not appreciate his demo because there's no guarantee that the Kirby will get it ALL out either and he has therefore ruined my carpet. He seemed like he was done with his demo, but my comments prompted him to say "oh, well I'm not done vacuuming." He continued vacuuming that spot for well over 100 times with the Kirby. He switched back to the white filters, so I could not see how much more salt was being picked up before he finally stopped. Right there was proof that even if the Kirby was better than the Dyson, it was only marginally better. </p><p>
They were finally done wasting my time, or so I thought, and they went on to shampoo the carpet. I patiently heard the few minutes demo part and went to get my long overdue lunch.</p><p>
<h3>Bad To Worse Prospective Customer Experience</h3><br />If I wasn't annoyed enough at the loss of two hours and the demo itself, I was even more unhappy when their hard-sell sales lady came in to finally wrap things up. She tried to set things up by hinting that I might want one of these units for each floor of my house! I did not know the actual price, but I knew it was unlikely I <em>wanted</em> much less could afford even one of them. But worse, the overtones of guilt became less subtle as well.</p><p>
Simply put, I don't respond to emotional blackmail and I was fed up with it.</p><p>
By the end of the demo and sales pitch, one would think that you are sleeping in a vat of feces (dust mite feces, of course), and should feel ashamed for letting your kids live in such filth and squalor. I even overheard the lady comment to the demoer, "were you vacuuming outside" as they were cleaning up some of the filter pads with dirt and salt on them. If they were not already cleaning up and on their way out, I would surely have thrown them out then.</p><p>
<h3>The End Result Made No One Happy</h3><br />Would I pay $1,600 for a vacuum cleaner then? If I had that kind of money laying around, I just might. Nah, probably not. I still had trouble getting the price right (through coupons and credit card reward gift cards) to make the Dyson purchase. But the fact is that 1. I don't have that kind of money to spend at all, much less on a vacuum cleaner, 2. I was not impressed enough with Kirby's product to pay as much for it as my Dyson cost  and 3.  I would not buy anything from Kirby and especially these sales people on principle alone after their sales tactics.</p><p>
Backtracking a bit, the guy who first entered my house and introduced the younger guys who would be demoing the product seemed down to earth and commented that even if I didn't want to buy anything today, they were trying to spread the word and hopefully the demo and service would help me remember the Kirby brand.</p><p>
However, the end result is that I now know and will not easily forget the Kirby name, but I would not buy a Kirby or recommend anyone even listening to their sales pitch...unless you really have nothing better to do with your time. If that's the case you can come over and shampoo my carpets and I'll even pay you!</p><p>
And to think they wanted me to buy TWO $1600 vacuum cleaners, which were they were actually able to sell me for the great sale price of $1500! If I knew that before this all began, they would have never set foot in my house, even with a promise of a free carpet shampoo.</p>
				<p><a href="/blog/article.cfm/articleid=20/Just-Say-No-To-Kirbys-Free-Carpet-Shampoo#comments" class="action discuss">Discuss this article &raquo;</a></p>
				]]>
			</description>
			<link>http://dgibson.net/blog/article.cfm/articleid=20/Just-Say-No-To-Kirbys-Free-Carpet-Shampoo</link>
			<guid isPermaLink="true">http://dgibson.net/blog/article.cfm/articleid=20/Just-Say-No-To-Kirbys-Free-Carpet-Shampoo</guid>
		</item>

		<item>
			<title><![CDATA[Sitepoint&apos;s &quot;Web Site Revenue Maximizer&quot;: Why Bother?]]></title>
			<pubDate>Tue, 01 Jul 2008 18:14:56 EST</pubDate>
			
			<description><![CDATA[
				<p>As I've <a href="http://dgibson.net/blog/article.cfm/articleid=19/Get-Sitepoints-Photoshop-Book-As-A-Free-PDF">previously mentioned</a>, I've become a fan of some of Sitepoint's development books lately. However, they've been mailing me about their special promo price for their latest "kit" (book+CD-ROM) called "The Web Site Revenue Maximizer." Their special price (ends today) is $149, and it will soon be nearly $200. For a split second, I thought about ordering before the special expired just to be able to fill in any gaps in my knowledge on this subject. But upon checking out the <a href="http://www.sitepoint.com/kits/revenue1/">table of contents</a> and <a href="http://www.sitepoint.com/kits/revenue1/revenue1-sample.pdf">sample chapters</a>, I was left wondering "why bother?" Sure, price positioning is a decision everyone has to make for products, and Sitepoint's kits are priced fairly high, targetting professionals. Sitepoint can sell a few hundred or thousand of these kits promising that readers will make the money back and make some serious cash. But with the other excellent free resources out there, I don't see the point in buying into this kit in the first place.</p>
				<p><h3>Who Does The Book Target?</h3></p><p>
The book states in the opening paragraphs that:</p><p>
<blockquote>This kit is intended for those who have little or no previous experience with building profit-making web sites.</blockquote></p><p>
Starting up a site with little or no experience takes time to build readership and revenue, so a $150-200 investment on top of the other investments that need to be made is nothing to sneeze at.</p><p>
I was not impressed a bit by the sample chapters. Maybe it's because I've been reading <a href="http://www.problogger.net/">Problogger.net</a> for well over five years now. Problogger.net's content is free and  covers every aspect of getting a site operational to marketing it, growing readership, monetizing it, etc. For those who haven't been reading it for the past five years or more, Darren has even <a href="http://www.amazon.com/gp/redirect.html?ie=UTF8&location=http%3A%2F%2Fwww.amazon.com%2FProBlogger-Secrets-Blogging-Six-Figure-Income%2Fdp%2F0470246677%3Fie%3DUTF8%26s%3Dbooks%26qid%3D1214938333%26sr%3D8-1&tag=metalunderg04-20&linkCode=ur2&camp=1789&creative=9325">released a book</a> that covers each of these topics, and it's <strong>under $20</strong> at <a href="http://www.amazon.com/gp/redirect.html?ie=UTF8&location=http%3A%2F%2Fwww.amazon.com%2FProBlogger-Secrets-Blogging-Six-Figure-Income%2Fdp%2F0470246677%3Fie%3DUTF8%26s%3Dbooks%26qid%3D1214938333%26sr%3D8-1&tag=metalunderg04-20&linkCode=ur2&camp=1789&creative=9325">Amazon.com</a>.</p><p>
<h3>Problogger.net Has All The Free Info You Need</h3><br />If you were already making good money with your web site(s) and wanted to maximize your earnings, $150-200 would be nothing to invest. Unfortunately, that's not who Sitepoint's latest kit targets. But for someone just starting out or thinking of getting into the game, there is plenty of credible, free material on Problogger.net and a <a href="http://www.amazon.com/gp/redirect.html?ie=UTF8&location=http%3A%2F%2Fwww.amazon.com%2FProBlogger-Secrets-Blogging-Six-Figure-Income%2Fdp%2F0470246677%3Fie%3DUTF8%26s%3Dbooks%26qid%3D1214938333%26sr%3D8-1&tag=metalunderg04-20&linkCode=ur2&camp=1789&creative=9325">cheap book</a> to get you started and guide you long after the "getting started" phase.</p>
				<p><a href="/blog/article.cfm/articleid=18/Sitepoints-Web-Site-Revenue-Maximizer---Why#comments" class="action discuss">Discuss this article &raquo;</a></p>
				]]>
			</description>
			<link>http://dgibson.net/blog/article.cfm/articleid=18/Sitepoints-Web-Site-Revenue-Maximizer---Why</link>
			<guid isPermaLink="true">http://dgibson.net/blog/article.cfm/articleid=18/Sitepoints-Web-Site-Revenue-Maximizer---Why</guid>
		</item>

		<item>
			<title><![CDATA[Leveraging CSS is 75% Markup and 25% CSS]]></title>
			<pubDate>Sun, 29 Jun 2008 12:17:14 EST</pubDate>
			
			<description><![CDATA[
				<p>I really planned to do more ColdFusion blogging, but I find myself more intrigued by CSS lately. After all these years there still seems to be some mystique about CSS to some developers and designers alike.</p><p>
Over the past couple of years I've been refining my process for creating site layouts and modular CSS. During that time, most of the refactoring involved has been reworking parts of the markup to be more modular or to use markup that meets my (now) more strict semantic requirements (than when I first started using CSS) and provides all of the hooks for the techniques I may want to apply with CSS. I'm still refining some smaller things here and there, as I discover new techniques.</p><p>
I recently returned to working on the application that I did my very first table-less CSS layout on, and looking at the markup, I can see what a difference semantic markup makes!</p><p>
I've been using CSS since 1998 (more heavily in 1999), but didn't really know the best practices in markup until the last few years, making my initial efforts at CSS layouts frustrating attempts of trial and error - not unlike the experience of using CSS in Netscape 4! I actually abandoned my first attempt at redesigning <a href="http://www.metalunderground.com/">Metalunderground.com</a> in CSS because the layout was too complex for me to pull off. I finally opted for a wrapper table and minimally nested table layout. (Note: Metalunderground.com has since been redesigned twice, first using CSS and then a recent <a href="http://www.metalunderground.com/news/details.cfm?newsid=37052#comments">underlying code cleanup</a>, which helped immensely for general coding and CSS-specific techniques).</p><p>
As many developers and designers can attest, learning CSS itself isn't as hard as knowing which techniques to use in various scenarios, the drawbacks to certain techniques, and how to work around browser-related bugs. Some techniques such as floats versus absolute positioning are purely CSS, but a number of other techniques are based on how you've chosen to mark up your document.</p><p>
Compound that with the sad truth that many web designers and developers - even experienced ones - don't really know proper HTML or XHTML, much less the best practices of semantic markup, and you can see why CSS still appears difficult after all these years. I was in the same position about five years ago, having used CSS for several years, but still struggling with CSS layout due to not using the best practices for the underlying markup or knowing the proper techniques to use.</p><p>
So why is it that many developers don't know proper HTML or XHTML? I've encountered all sorts of reasons for this - legitamate and not - over the years. Here are some of the reason that web developers and designers may not know basic proper (X)HTML markup and therefore may have trouble with CSS layout:</p>
				<p><ul><li>Learned HTML in the "early days" (HTML 3.2 or earlier) and never refreshed their knowledge of HTML 4 or XHTML, semantic markup, or doctypes for that matter.</li><li>Self-taught HTML during the IE years and never really learned how to do it right because IE will render any old slop. Probably cursed Netscape 4 for breaking their pages when forgetting to close a <kbd>td</kbd> tag.</li><li>Concentrates on backend programming and doesn't really bother with strict markup for the front-end.</li><li>Sees no benefit to XHTML or strict HTML.</li><li>Doesn't deal with the front-end display and CSS, and therefore never needed to learn about semantic markup.</li><li>Not really into the whole developer thing and just gets by doing what they are doing, creating web sites and applications, without trying to learn or integrate best practices.</li></ul></p><p>
It might sound harsh to say that a developer "doesn't even know HTML." After all, HTML is the foundation of the web for the past 12+ years. But I think it's pretty realistic to say that we all know a number of these types of people described above and they account for a large portion of developers. Granted, not everyone <em>needs</em> to know strict HTML, but in my 10+ years in the industry and seven jobs, I've never worked for a company that has a dedicated HTML person write all HTML or clean up what the "programmers" have written after the fact.</p><p>
With invalid markup, all sorts of cross-browser issues can surface. Without knowing about semantic markup - using markup that fits the meaning or type of data rather than its desired presentation - developers may find themselves in div-hell, much like nested-table hell of yesteryear, if not completely baffled by CSS issues and browser bugs that are more likely to occur with invalide markup.</p><p>
Without knowing the best way to mark up certain page elements such as navigation, one may be lost as to how to achieve a certain effect in CSS or go down the road of adding additional presentational markup for extra hooks (it's not all bad, but the less non-semantic markup that is added, the better, IMO).</p><p>
CSS tutorials often tend to focus on the CSS itself and gloss over the underlying markup <strong>and reasons for using it</strong>. There are plenty of older or just plain bad CSS demos that do not follow the principles of modular or semantic code as well, leading developers down the wrong path; most often to div or span-hell and/or class-itis. Cut and paste CSS sites seem barely a step above their JavaScript counterparts - they are both usually pretty bad solutions.</p><p>
So what was the point of all that? Just to stress to go out there and refresh your knowledge of HTML. I remember being surprised to learn about a number of HTML 4 elements and their effects in the browser some time back, and there are still people who don't know what a <code>&lt;label&gt;</code> is or have never used a <code>&lt;caption&gt;</code>, <code>&lt;thead&gt;</code> or <code>&lt;tbody&gt;</code> much less <code>&lt;colgroup&gt;</code> and <code>&lt;col&gt;</code> tags in a table. Almost all of these lesser known tags are essential hooks in styling semantic markup with CSS and key to modern CSS techniques.</p><p>
So, if you don't know what a DOCTYPE is or you're still using tables for layout, or you're just having trouble with CSS, it's probably time to get up to date on XHTML and semantic markup. It will decrease the learning curve for using CSS layouts significantly.</p><p>
Time permitting, I'll expand on some of these specific techniques as they relate to CSS in another article in the near future.</p><p>
UPDATE: And look - Sitepoint just sent out a <a href="http://www.sitepoint.com/newsletter/viewissue.php?id=3&issue=196">newsletter about "sprucing up your HTML"</a> knowledge. Perfect timing.</p>
				<p><a href="/blog/article.cfm/articleid=12/Leveraging-CSS-is-75-Markup-and-25-CSS#comments" class="action discuss">Discuss this article &raquo;</a></p>
				]]>
			</description>
			<link>http://dgibson.net/blog/article.cfm/articleid=12/Leveraging-CSS-is-75-Markup-and-25-CSS</link>
			<guid isPermaLink="true">http://dgibson.net/blog/article.cfm/articleid=12/Leveraging-CSS-is-75-Markup-and-25-CSS</guid>
		</item>

		<item>
			<title><![CDATA[Get Sitepoint&apos;s &quot;The Photoshop Anthology&quot; Book As A Free PDF Download]]></title>
			<pubDate>Sat, 31 May 2008 21:28:48 EST</pubDate>
			
			<description><![CDATA[
				<p>I've recently become a fan of Sitepoint's web development books - especially their front-end (CSS and JavaScript) and design books. They don't usually offer much ground-breaking material, but they are good at getting one up to speed on current practices and qualifing the benfits and drawbacks of various techniques.</p><p>
Sitepoint recently offered up their 278 page book, "The Photoshop Anthology: 101 Web Design Tips, Tricks & Techniques," for a limited time free <a href="http://photoshop.aws.sitepoint.com/">PDF download</a>. I passed on buying this one simply because I don't have a recent version of Photoshop, and unfortunately all the good tutorials and resources are for Adobe Photoshop CS1 (many are CS3 now) and up.</p><p>
It could be that Sitepoint is  planning to update this book to a new edition, as Adobe CS4 is around the corner. Sitepoint previously release a Rails 1.0 book for free download as well, but sent out an email about the Rails 2.0 book and upgrade options. They could be using a similar tactic for this PhotoShop book, but free is still free, so go <a href="http://photoshop.aws.sitepoint.com/">download it</a>.</p>
				<p></p>
				<p><a href="/blog/article.cfm/articleid=19/Get-Sitepoints-Photoshop-Book-As-A-Free-PDF#comments" class="action discuss">Discuss this article &raquo;</a></p>
				]]>
			</description>
			<link>http://dgibson.net/blog/article.cfm/articleid=19/Get-Sitepoints-Photoshop-Book-As-A-Free-PDF</link>
			<guid isPermaLink="true">http://dgibson.net/blog/article.cfm/articleid=19/Get-Sitepoints-Photoshop-Book-As-A-Free-PDF</guid>
		</item>

		<item>
			<title><![CDATA[Web Developer, Web Designer, or Graphic Designer?]]></title>
			<pubDate>Thu, 24 Apr 2008 20:52:48 EST</pubDate>
			
			<description><![CDATA[
				<p>Apart from the <a href="http://dgibson.net/blog/article.cfm/articleid=4/Disturbing-Statements-Regarding-ColdFusion-Hiring">disturbing statements I heard about ColdFusion</a> while job hunting earlier this year, another thing that I found interesting was the terminology used for front-end work.</p><p>
Since I was also looking for CSS work, among other things, I was called for quite a few interface design and web designer positions. It's been a while since I had been job hunting prior to this, so I hadn't really given much thought as to my position title. Afterall, I don't usually pay attention to my title at the places I work even, as they are often made up by Human Resources or other people who don't know the technology much less have any rhyme or reason to them. So "web developer," "software developer," "software engineer," "programmer," etc., (with an optional designation of 1-4 or 1-5) - it doesn't matter to me as long as I am getting paid according to my experience and doing what I like to do, which basically comes down to utilizing my array of skills and having some input into the decision making process on the project.</p><p>
Back to the topic at hand though. I usually just refer to myself as a "web/application developer." Six years ago I would never have considered myself a "web designer" or a designer at all. Sure, I've been using CSS since the early days (Netscape 4) and Photoshop since version 3, when it came on floppy disks, and have an art background, but I do not have the raw artistic talent and I am generally just not creative on demand (in the artistic sense).</p><p>
Yet, after hearing all of the types of jobs I was being contacted about, and was actually qualified for, I began to accept the title of web designer for two reasons. First, CSS is how you implement design these days, afterall, and I've gotten pretty good with my CSS layout skills and making them extremely modular. Second, a web designer is simply someone who designs sites and who understands (and respects, IMO) the medium. It has always peeved me when "designers" - who, in light of this discussion, I would now call "graphic designers" instead of "web designers" - push the boundaries without considering the web as a medium and the consequences of their actions on that medium or the landscape of users out there.</p><p>
In broad terms, considering the web as a medium means understanding the basics of usability and accessibility. These areas span designing for different people and different devices (with different resolutions and various levels of support for underlying web technoligies such as HTML, JavaScript, Flash and more). Wow, those are some broad qualifications for a web designer, who several years ago was traditionally focused on making the site look pretty with graphics. But in reality, a web designer needs to be well-rounded and versed in these areas as well as capable of implementing a design in modern standards-based methods. Without those skills, the person is merely a graphic designer, or perhaps less than spectacular web designer.</p>
				<p>Sure, a web designer should ideally be an excellent graphic designer as well. I would consider that to be my weakness, but not a major one, as I'm not a bad graphic designer at any rate. Many techniques (and trends), such as the web 2.0 "style," can cover up a weakness in graphic design. On the other hand, a good graphic designer can screw up a site's design from a usability and accessibility standpoint even if they aren't the ones implementing the final design to code, simply because there are more things to take into account than how a site looks. Functionality over aesthetics; I may be biased since I am also a web developer, but that is certainly the proper order for both web sites and applications in my opinion. Anyone who will tell you otherwise has never been concerned with form abandonment rates, response/conversion rates, completion rates, or other performance metrics and will likely tell you user training will fix it!</p><p>
To beat a dead horse a little further, I came across this article entitled <a href="http://alistapart.com/articles/oncreativity">"On Creativity" by Andy Rutledge on A List Apart</a> while mapping out my own article (that you're reading). I thought Andy's angle complimented my thoughts on the matter quite well, and he explicitly goes into the web as a medium as well as the role and perceptions of creativity in design. Here's an excerpt:</p><p>
<blockquote>The siren song of creativity is likely responsible for more bad design than any other factor. Some might think this overly dramatic, but I believe we should regard creativity as a rather dangerous tool. Like a firearm, it should be treated with caution and respect, and used professionally only by trained individuals.</blockquote></p><p>
<blockquote>If you are a designer worth your salt, you know that no design project begins with creativity. Instead, it begins with client- and/or context-specific discovery, and lots of research to help you understand the fundamental nature of the challenges at hand. All designers must guard against the urge to invest in specific creative ideas before becoming intimately familiar with the contextual landscape of a design project.</blockquote></p><p>
<blockquote>Sadly, creativity is often used as a crutch, or as a surrogate for design competence. Some individuals reveal themselves as clinging to this practice when they complain that some client work prevents them from ?being creative.? What they mean here is that they dislike not being allowed to express themselves. But design competence has little to do with self-expression, and creativity is no substitute for knowledge or comprehensive understanding. Instead, design is most significantly founded on the comprehensive understanding and greatly developed empathetic/sympathetic sense that highly skilled and disciplined individuals bring to bear.</blockquote></p><p>
The article goes on to make a number of additional valid and valuable points, but it is quite lengthy as well, much like my own article has become.</p><p>
Reading those points validated my self-worth as a web designer just a little more, knowing that my primary weakness of creativity on demand is not the Achilles' heel that I sometimes feel it is. In fact, on more than one occasion, I've begun coding the actual application only to "skin" it later with CSS and graphics, usually progressively as I am developing and as I see a need and get inspired. This is often very easy to do using a combination of modular CSS and server-side templates. That's progressive enhancement - a term usually reserved for development - in its truest form. Of course, it also doesn't go over with clients very well, as they often can't get past the visual aspects of a site in the first place.</p><p>
To wrap things up, I think the distinction between graphic designer and web designer fits quite nicely. If you look at the other terms such as interface designer, interaction designer and user experience designer (or architect), they focus on one aspect of the site or experience. A graphic designer does just that - focuses on graphics - where a web designer focuses on the web as a medium and understands design within those boundaries, for lack of a better word.</p><p>
So where does that leave me and my title? I don't really care, but I will still call myself a "web/application developer" because that's primarily what I'm getting paid to do, and "web developer" can still encompass the CSS aspects as far as I'm concerned. Plus, "web/application designer/developer" just looks too wishy-washy. In that case I'd have to go with "Coldfusion/SQL/XHTML/CSS web/application designer/developer." :-)</p><p>
On a side note, some companies and recruiters also differentiated "Web developer" from "software developer," where a web developer is considered and HTML/front-end person, which is my reasoning behind using "web/application developer."</p>
				<p><a href="/blog/article.cfm/articleid=14/Web-Developer-Web-Designer-or-Graphic-Designer#comments" class="action discuss">Discuss this article &raquo;</a></p>
				]]>
			</description>
			<link>http://dgibson.net/blog/article.cfm/articleid=14/Web-Developer-Web-Designer-or-Graphic-Designer</link>
			<guid isPermaLink="true">http://dgibson.net/blog/article.cfm/articleid=14/Web-Developer-Web-Designer-or-Graphic-Designer</guid>
		</item>

		<item>
			<title><![CDATA[Interesting April Fools Articles Online]]></title>
			<pubDate>Tue, 01 Apr 2008 16:11:32 EST</pubDate>
			
			<description><![CDATA[
				<p>Dgibson.net going on another 7-year hiatus? Nah. There really aren't any good April Fools pranks that I can play here, on my personal blog. However, I thoroughly enjoy this time of year and creating ficticious stories for posting on my other site,<br /><a href="http://www.metalunderground.com/">Metalunderground.com</a>.</p><p>
You can check out the stories we ran today as well as in previous years with the links below:</p><p>
<ul><li><a href="http://www.metalunderground.com/news/index.cfm?startdate=4-01-2008">April Fool's Day, 2008</a></li><li><a href="http://www.metalunderground.com/news/index.cfm?startdate=4-01-2007">April Fool's Day, 2007</a></li><li><a href="http://www.metalunderground.com/news/index.cfm?startdate=4-01-2006">April Fool's Day, 2006</a></li><li><a href="http://www.metalunderground.com/news/index.cfm?startdate=4-01-2005">April Fool's Day, 2005</a></li><li><a href="http://www.metalunderground.com/news/index.cfm?startdate=4-01-2004">April Fool's Day, 2004</a></li><li><a href="http://www.metalunderground.com/news/index.cfm?startdate=4-01-2003">April Fool's Day, 2003</a></li></ul></p><p>
Some of the better April Fools I've seen done today are as follows:</p><p>
<ul><li><a href="http://www.wow-europe.com/wrath/features/bard/bardclass.xml">World of Warcraft Announces the Bard Hero Class</a> (I don't even play, but this is really well done)</li><li><a href="http://www.worldofwarcraft.com/moltencore/">World Of Warcraft: The Molten Core</a> (not so funny, but you have to watch the video on that page - it's classic!)</li><li><a href="http://www.xbox.com/en-US/community/promotions/2008/spring/">New Xbox 360 Spring Line</a></li></ul></p><p>
I'll update as I find some more really good ones. I wasn't really impressed with <a href="http://www.google.com/virgle/index.html">Google's attempt</a> this year, but they've had some great ones in the past.</p>
				<p></p>
				<p><a href="/blog/article.cfm/articleid=16/dgibson-net-Going-On-Another-7-Year-Hiatus#comments" class="action discuss">Discuss this article &raquo;</a></p>
				]]>
			</description>
			<link>http://dgibson.net/blog/article.cfm/articleid=16/dgibson-net-Going-On-Another-7-Year-Hiatus</link>
			<guid isPermaLink="true">http://dgibson.net/blog/article.cfm/articleid=16/dgibson-net-Going-On-Another-7-Year-Hiatus</guid>
		</item>

		<item>
			<title><![CDATA[Tagging vs Categories and Creating the Best of Both Worlds]]></title>
			<pubDate>Thu, 27 Mar 2008 22:07:46 EST</pubDate>
			
			<description><![CDATA[
				<p>After <a href="http://dgibson.net/blog/article.cfm/articleid=11/CSS-Overcoming-background-transparent-In-IE">tweaking my CSS</a> (still in progress on some minor things such as code displays and the comment form), and <a href="http://dgibson.net/blog/article.cfm/articleid=8/Implementing-Search-Engine-Safe-SES-URLs">implementing SES URLs</a>, the next thing I planned to implement is a tagging system. This sounds pretty simple, but as I debate the best way to go about it, I've become paralyzed in thought over it.</p><p>
The flexibility of tagging is a strong point and the primary reason that tagging caught on several years ago. The many-to-many relationship of tags to the items being tagged make tagging work where hierarchical categories simply do not.</p><p>
It's great for the general user to label things however they want without restriction. But as any seasoned user of <a href="http://del.icio.us/">del.icio.us</a> (I have nearly 2500 bookmarks at the time of writing this article) knows, this flexibility eventually turns into chaos. Inconsistencies become apparent as you find that some of your items were tagged singularly and some plurally. People make their own compound tags differently, using dashes, underscores, or dot notation - and some people are inconsistent in that as well. If you start out simple, you may find the need to add more tags later on for greater descriptiveness.</p><p>
I'm not necessarily seeking a system that will address all of the above issues. Rather, I am looking for a way to create some more order within a flexible tagging system. I could come up with some simple solutions like adding a parent key to each tag's database entry, which would allow for some hierarchy (however messy it would be to take advantage of on SQL 2000 right now). Thinking of some other projects I'd like to use this codebase for, I would also like to be able to have groups of tags that are not in a hierarchy. I.e., the tag group is not selectable as a tag. For example, perhaps I am writing tutorials and want to tag them by technologies used as well as difficulty level (beginner, intermediate, advanced). I could use a flexible tagging system for this, but interface-wise it makes sense to have these tags grouped rather than be free-form entry tags.</p><p>
While I could certainly construct my own ad-hoc system, I'm wondering if anyone has any experience or has read about more robust taxonomies that may address my needs and could point me to some articles or examples.</p>
				<p></p>
				<p><a href="/blog/article.cfm/articleid=15/Tagging-vs-Categories-and-Hybrids-Thereof#comments" class="action discuss">Discuss this article &raquo;</a></p>
				]]>
			</description>
			<link>http://dgibson.net/blog/article.cfm/articleid=15/Tagging-vs-Categories-and-Hybrids-Thereof</link>
			<guid isPermaLink="true">http://dgibson.net/blog/article.cfm/articleid=15/Tagging-vs-Categories-and-Hybrids-Thereof</guid>
		</item>

		<item>
			<title><![CDATA[Implementing Search Engine-Safe (SES) URLs In ColdFusion]]></title>
			<pubDate>Fri, 14 Mar 2008 16:40:38 EST</pubDate>
			
			<description><![CDATA[
				<p>I recently implemented SES (Search Engine Safe) URLs here on my blog for the first time ever. I read a number of posts about it. Techniques range widely from using <a href="http://httpd.apache.org/docs/2.2/misc/rewriteguide.html">Apache's mod_rewrite</a>, which I initially favored, to using a <a href="http://www.webdevref.com/blog/index.cfm?t=SESConverter_for_CFMX7&mode=entry&entry=0507AB7D-FFDA-3479-C27FB989531B3BF8">Java servelet</a>, to using ColdFusion to parse out the URL (similar to what Ray Camden does on <a href="http://blogcfc.riaforge.com/">Blog.cfc</a>), to using 404 and <a href="http://www.fusionauthority.com/techniques/4226-search-engine-safe-urls.htm">missing template handlers</a>.</p>
				<p><h3>Seach Engine Safe URLs, Friendly URLs, Pretty URLs, and Meaningful URLs?</h3><br />In addition to the many techniques, there are many different angles to approach the topic. Several terms seem to be used interchangeably, but I think there are really different intentions behind each of them. There are Seach Engine Safe URLs, Friendly URLs, Pretty URLs, and Meaningful URLs.</p><p>
What I would call a friendly URL or pretty URL is one that is coded to be the shortest possible. So the following URL:</p><p>
<code>http://dgibson.net/blog/categoryid=1</code></p><p>
might be represented by a short, memorable and typable URL such as:</p><p>
<code>http://dgibson.net/blog/coldfusion</code></p><p>
These types of URLs require a lot of assumptions in your specific application. If you know them upfront, you could implement this in CF or Apache just the same. But then you need to have a different rule for actual articles (as opposed to the category page).</p><p>
<h3>What's The Goal?</h3><br />I was not worried about the looks of my URLs so much and going to that extreme. The basis for Search Engine Safe URLs - and my choosing them - is two-fold:</p><p>
First and foremost to avoid the use of a standard query string, which can hinder low-ranking or new web sites from being fully indexed. Surely Google, et al can index dynamic content by now, but they tend to not index dynamic content on newer sites as aggressively. By not using the query string, all of your pages appear static to the search engines, and therefore get index more thoroughly.</p><p>
Second, by including a URL stub (a human-friendly, keyword-rich URL version of the headline), you are both making the topic of the article known from looking at the URL and stuffing it with some keywords taken from your headline, which should help your search engine ranking.</p><p>
Like I said, I initially planned to use Apache's mod_rewrite facilities. I've used them before, but when doing so, the URL is always updated in the browser's address as well, which is not what I wanted. Perhaps there's a way around this, but I wasn't feeling like exploring that method because it has a drawback in flexibility compared to the ColdFusion method I ended up going with.</p><p>
So I implemented SES URLs through ColdFusion. I decided that I might as well let CF do the heavy lifting since I will be dynamically writing out the href URLs in ColdFusion anyway.</p><p>
<h3>The Deciding Factor</h3><br />The final deciding factor was one of flexibility and practicality. My main concern was what happens to the URL stub if I change the headline of the article. Technically, that information is just there for looks (i.e. human readability). But if the headline is changed, and therefore the URL stub changed - it seems wrong not to change the URL and have them out of synch - you could have incoming links to the same content with different URLs. This is bad for search engine optimization on two fronts. First, the content has its links (and therefore page rank) split between two or more versions ("pages"). Second, you could also get slapped with a duplicate content penalty and have one or both versions/pages penalized in search engine rankings. Both are counter-productive for "Search Engine-Safe" URLs.</p><p>
<h3>Implementation</h3><br />The basic mechanism to parse out the Query String variables from the SES structure is pretty simple, and based on my own specific structure and assumptions. I run a short block of code in the Application.cfm to parse the URL and dump any SES variables there to the URL scope like this:</p><p>
<ol class="code"><li>&lt;!--- PARSE OUT URL VARIABLES FROM SES URLS ---&gt;</li><li>&lt;CFSET urlVars=ReReplaceNoCase(Trim(CGI.PATH_INFO),'.+\.cfm/? *','')&gt;</li><li>&lt;CFLOOP INDEX="qsnvp" LIST="#urlVars#" DELIMITERS="/"&gt;</li><li>&lt;CFIF Find("=",qsnvp) GT 0&gt;</li><li>&lt;CFSET URL['#ListGetAt(qsnvp,1,"=")#']=ListGetAt(qsnvp,2,"=")&gt;</li><li>&lt;CFELSEIF urlVars IS "/"&qsnvp&gt;</li><li>&lt;CFSET URL.category=qsnvp&gt;</li><li>&lt;CFELSE&gt;</li><li>&lt;CFSET URL.urlstub=qsnvp&gt;</li><li>&lt;/CFIF&gt;</li><li>&lt;/CFLOOP&gt;</li></ol></p><p>
This loops over the Query String looking for name value paris (hence "qsnvp"), and parsing them. If there is only one extra piece of info after the actual CF Script being run, then I assume it's a category. If there is one name-value pair and then a trailing non-pair string, I treat that string as the URL stub.</p><p>
Here's what a live URL looks like, containing a name-value pair (articleid) and a URL stub: http://dgibson.net/blog/article.cfm/articleid=8/Implementing-Search-Engine-Safe-SES-URLs</p><p>
So to avoid duplicate content issues, what I've done on my article.cfm page (and upcoming topic pages) is compare the URL stub to the one generated from the database query. If they are different, then I do a 301 redirect to the "correct" version, which should pass all referential value of the first article to the second and prevent the first from being indexed any more.</p><p>
<ol class="code"><li>&lt;!--- IF THE URLSTUB DOES NOT MATCH UP, DO A PERMANENT REDIRECT TO THE PROPER ONE ---&gt;</li><li>&lt;CFIF NOT StructKeyExists(URL,"urlstub") OR URL.urlstub IS NOT CreateURLstub(qArticleDetails.headline)&gt;</li><li>&lt;CFHEADER STATUSCODE="301" STATUSTEXT="Moved Permanently"&gt;</li><li>&lt;CFLOCATION URL="#CGI.SCRIPT_NAME#/articleid=#articleid#/#CreateURLstub(qArticleDetails.headline)#" ADDTOKEN="No"&gt;</li><li>&lt;/CFIF&gt;</li></ol></p><p>
This bit of code is run after the query on the article.cfm page, which gives me the chance to validate the URL stub and enforce proper linking - or at least page rank transfer via 301 redirect - to the one "official version" of each of my blog articles.</p><p>
<h3>In Conclusion...</h3><br />As an aside, the <a href="http://dgibson.net/blog/article.cfm/articleid=7/URLQuery-String-Spam---Poor-Mans-Referer-Spam">"poor man's referer spam"</a> attacks on my site have appeared to stop as well. Perhaps this is simply because the new URLs do not match the usual pattern.</p><p>
I don't necessarily find my SES URL solution ideal by many standards, but I found it simple enough to implement and I'm happy with the real-world flexibility of it. The trade-offs of speed to implement, flexibility and power are always tough calls to make. But I'm always open to suggestions for improvement too.</p>
				<p><a href="/blog/article.cfm/articleid=8/Implementing-Search-Engine-Safe-SES-URLs#comments" class="action discuss">Discuss this article &raquo;</a></p>
				]]>
			</description>
			<link>http://dgibson.net/blog/article.cfm/articleid=8/Implementing-Search-Engine-Safe-SES-URLs</link>
			<guid isPermaLink="true">http://dgibson.net/blog/article.cfm/articleid=8/Implementing-Search-Engine-Safe-SES-URLs</guid>
		</item>

		<item>
			<title><![CDATA[SES URLs (And My Editing) To Blame For Duplicate Feed Items]]></title>
			<pubDate>Thu, 13 Mar 2008 22:15:43 EST</pubDate>
			
			<description><![CDATA[
				<p>My latest article, <a href="http://dgibson.net/blog/article.cfm/articleid=11/CSS-Overcoming-background-transparent-In-IE">CSS: Overcoming "background: transparent" In IE</a> seems to have shown up in my RSS reader at least four times. It looks like this is one of the down-sides to my implementation of Search Engine Safe (SES) URLs, which I plan to discuss in more detail at a later date.</p><p>
Because I tweaked the headline, the actual link to the article has changed as well, and therefore the GUID in my RSS feed is changed, making it look like a new, unique article. Some systems generate a unique GUID based on a hash of the content, so any change would trigger duplicates.</p><p>
I just thought I'd mention that as a caveat. I'll definitely have to consider my headlines more carefully before publishing an article in the future. Sorry 'bout that.</p>
				<p></p>
				<p><a href="/blog/article.cfm/articleid=13/SES-URLs-To-Blame-For-Duplicate-Feed-Items#comments" class="action discuss">Discuss this article &raquo;</a></p>
				]]>
			</description>
			<link>http://dgibson.net/blog/article.cfm/articleid=13/SES-URLs-To-Blame-For-Duplicate-Feed-Items</link>
			<guid isPermaLink="true">http://dgibson.net/blog/article.cfm/articleid=13/SES-URLs-To-Blame-For-Duplicate-Feed-Items</guid>
		</item>

		<item>
			<title><![CDATA[CSS: Overcoming &quot;background: transparent&quot; In Internet Explorer]]></title>
			<pubDate>Tue, 11 Mar 2008 23:33:49 EST</pubDate>
			
			<description><![CDATA[
				<p>Following up on <a href="http://dgibson.net/blog/article.cfm/articleid=10/Meyers-CSS-Reset-v1-0-Doesnt-Play-Well-With-IE">my previous blog</a> about the bug I encountered when upgrading to Eric Meyer's latest reset.css v1.0, I thought I'd share some thoughts and a possible solution to the problem.</p><p>
To backtrack a bit, reset.css is a special CSS file created solely for the purpose of eliminating browser default issues and cross-browser compatibility problems by explicitly setting the styles of elements to be the same in all browsers.</p><p>
When applying <a href="http://meyerweb.com/eric/tools/css/reset/">the latest version of Eric Meyer's reset.css</a>, all of my table row striping disappeared due to the introduction of <code>background:transparent;</code> into the main declaration.</p><p>
Thanks to <a href="http://dgibson.net/blog/article.cfm/articleid=10/Meyers-CSS-Reset-v1-0-Doesnt-Play-Well-With-IE#comment_19">Eric's explanation</a>, I now understand the issue to be a bug in Internet Explorer, affecting even version 7. He commented on the previous post:</p><p>
<blockquote>What's happening is that in order to make it look like the 'tr' has a background, IE copies that value to the 'td' elements in the row. It's a visual sleight-of-hand to cover the fact that IE can't actually style 'tr' background. The reset changes the 'td's back to transparent.</blockquote></p><p>
The simple solution is to remove the offending <code>background:transparent;</code> from the main reset declaration.</p><p>
But there is a simple enough CSS solution as well, requiring just a few more declarations or more selectors to the existing declarations. Using the descendant selector, I can keep the reset.css as-is and keep the exact same classes on my 'tr's in tact and make the CSS work even in Internet Explorer with some additional rules.</p><p>
Here's a sample of my old CSS that was affected:</p>
				<p><ol class="code"><li>tr.inactiverecord{background-color:#FF0}</li><li>.greybar,.graybar{background-color:#DDD}</li><li>thead+tbody tr:hover{background-color:#CCD}</li></ol></p><p>
To make this work in Internet Explorer, the following additional declarations would have to be added:</p><p>
<ol class="code"><li>tr.inactiverecord td{background-color:#FF0}</li><li>.greybar td,.graybar td{background-color:#DDD}</li><li>thead+tbody tr:hover td{background-color:#CCD}</li></ol></p><p>
Of course these declarations could be merged with the previous ones since the styling is the same for all of them. However, I listed them separately for clarity. </p><p>
I also tried to put these new declarations in my iehacks.css, but apparently I was under the assumption that only IE 6 and older needed hacks, because that's what I've filtered for in my conditional comments, meaning thes styles would not be applied to IE7, which remains broken.</p><p>
<ol class="code"><li>&lt;!--[if lt IE 7]&gt;</li><li>&lt;link rel="Stylesheet" type="text/css" href="/styles/default/iehacks.css?v=2.0.4" media="screen,projection" /&gt;</li><li>&lt;![endif]--&gt;</li></ol></p><p>
So I'm left pondering the same thing Eric stated in his previous comment:</p><p>
<blockquote>So now I have to decide: take it out or leave it in? If I leave it in, do I document that quirk in a comment or not?</blockquote></p><p>
I understand the intention of the reset.css, and partially agree with leaving it "pure" - i.e. not changing it for the sake of accommodating Internet Explorer's flakiness (I would still document it though). On the other hand, I still don't know of any practical bugs with other browsers and background inheritance that would necessitate such a declaration.</p><p>
For now, I've decided to keep the declaration since the workaround is fairly simple and the IE bug is limited to table rows.</p>
				<p><a href="/blog/article.cfm/articleid=11/CSS-Overcoming-background-transparent-In-IE#comments" class="action discuss">Discuss this article &raquo;</a></p>
				]]>
			</description>
			<link>http://dgibson.net/blog/article.cfm/articleid=11/CSS-Overcoming-background-transparent-In-IE</link>
			<guid isPermaLink="true">http://dgibson.net/blog/article.cfm/articleid=11/CSS-Overcoming-background-transparent-In-IE</guid>
		</item>

		<item>
			<title><![CDATA[Eric Meyer&apos;s CSS Reset v1.0 Doesn&apos;t Play Well With IE]]></title>
			<pubDate>Sat, 08 Mar 2008 14:24:34 EST</pubDate>
			
			<description><![CDATA[
				<p>Building this new blog/site with all of the best practices in mind that I can think of has been an adventure. I had planned to blog more in-depth on some CSS-specific things (and will), but this issue popped up and I thought I'd share it.</p><p>
When I saw that CSS-god Eric Meyer had <a href="http://meyerweb.com/eric/thoughts/page/3/">updated his CSS Reset file to version 1.0</a> and <a href="http://meyerweb.com/eric/tools/css/reset/">given it a permanent home</a>, I immediately checked it out and integrated the changes into <a href="http://dgibson.net/styles/reset.css">my reset.css file</a>. Granted, it's still mostly Meyer's file, but with some small tweaks.</p><p>
By way of some background - a reset.css is a special CSS file created solely for the purpose of eliminating browser default issues and cross-browser compatibility problems by explicitly setting the styles of elements to be the same in all browsers.</p><p>
It wasn't until I had posted the changes live - yes I did test locally first - that I noticed something was amiss with the CSS in Internet Explorer. Upon further testing, both IE 6 and 7 were affected. The main area that seems to be affected are my tables in the admin area, which no one can see of course. In particular the table row  striping and highlighting of inactive/draft records was gone. Yet everything looked just fine in Firefox.</p><p>
The way I stripe my table rows is fairly common inline ColdFusion inside of a query loop - not ideal in some ways, but effective.</p><p>
<code>&lt;tr &lt;CFIF currentrow MOD 2&gt;class="greybar"&lt;/CFIF&gt;&gt;</code></p><p>
I changed all sorts of stuff in my main CSS, added greater specificity to the rule in question, added <code>!important</code>, all to no avail. I gutted my table of recently added <code>col</code> and <code>colgroup</code> tags. Nothing.</p><p>
I removed the reset.css from the header and *poof* it worked again. Finally I noticed a new line of code in the global reset:</p>
				<p><code><br />html, body, div, span, applet, object, iframe,<br />h1, h2, h3, h4, h5, h6, p, blockquote, pre,<br />a, abbr, acronym, address, big, cite, code,<br />del, dfn, em, font, img, ins, kbd, q, s, samp,<br />small, strike, strong, sub, sup, tt, var,<br />b, u, i, center,<br />dl, dt, dd, ol, ul, li,<br />fieldset, form, label, legend,<br />table, caption, tbody, tfoot, thead, tr, th, td {<br />	margin:0;<br />	padding:0;<br />	border:0;<br />	outline:0;<br />	font-size:100%;<br />	vertical-align:baseline;<br />	background:transparent;<br />}<br /></code></p><p>
The last line with the shorthand background attribute is new from his <a href="http://meyerweb.com/eric/thoughts/2007/05/01/reset-reloaded/">previous version</a>. I took it out and everything worked again.</p><p>
But why stop there? I'd been having trouble with the background shorthand property in other places, so decided to change it to <code>background-color:transparent</code>. Broken in IE again. I changed it to a solid color to see if the transparent value was the problem (I know it was a problem waaaay back a long time ago, but I don't even remember which browser any more - NS4 maybe?). The entire table turned red, as expected.</p><p>
Finally, I changed the background back to transparent and immediately after that rule inserted this one:</p><p>
<code>tr{background:#F00}</code></p><p>
Still no effect in IE. So to the best of my estimation, IE either has problems with applying background colors to TRs, which seem unlikely because they've always worked otherwise, or with applying transparency to TDs, or perhaps just showing TRs through TDs. In any case, I cannot leave the background property in that style declaration, so it's gone, and I would recommend you do the same unless there's a REALLY good reason it's in there.</p><p>
Of course, I'm not ruling out that I could have screwed something up myself, but it seems to be a browser bug with IE if <code>!important</code> and specificity had no effect at all.</p><p>
<strong>Update:</strong> For further discussion and potential solutions to this issue, see my follow-up blog, <a href="http://www.dgibson.net/blog/article.cfm/articleid=11/CSS-Overcoming-background-transparent-In-IE">Overcoming "background: transparent" In Internet Explorer</a>.</p>
				<p><a href="/blog/article.cfm/articleid=10/Meyers-CSS-Reset-v1-0-Doesnt-Play-Well-With-IE#comments" class="action discuss">Discuss this article &raquo;</a></p>
				]]>
			</description>
			<link>http://dgibson.net/blog/article.cfm/articleid=10/Meyers-CSS-Reset-v1-0-Doesnt-Play-Well-With-IE</link>
			<guid isPermaLink="true">http://dgibson.net/blog/article.cfm/articleid=10/Meyers-CSS-Reset-v1-0-Doesnt-Play-Well-With-IE</guid>
		</item>

		<item>
			<title><![CDATA[Irony...]]></title>
			<pubDate>Tue, 04 Mar 2008 22:05:04 EST</pubDate>
			
			<description><![CDATA[
				<p>...is sitting down and watching <em>The Biggest Loser</em> with a big ol' bowl of ice cream :-) Or is that foreshadowing? Maybe if I was in a movie myself.</p><p>
For the record I don't watch those reality shows - my wife does. I was just there for the ice cream!</p>
				<p></p>
				<p><a href="/blog/article.cfm/articleid=9/Irony---#comments" class="action discuss">Discuss this article &raquo;</a></p>
				]]>
			</description>
			<link>http://dgibson.net/blog/article.cfm/articleid=9/Irony---</link>
			<guid isPermaLink="true">http://dgibson.net/blog/article.cfm/articleid=9/Irony---</guid>
		</item>

		<item>
			<title><![CDATA[URL/Query String Spam - Poor Man&apos;s Referer Spam?]]></title>
			<pubDate>Fri, 29 Feb 2008 17:33:49 EST</pubDate>
			
			<description><![CDATA[
				<p>It hasn't been two full months since I re-lanched this site as a blog using ColdFusion and I am seeing a new form a spam. I was tipped off by some error emails that my error handling kicked off.</p><p>
What is happening is that I am seeing a number of requests error out because someone is inserting URLs (all foreign, e.g, .it, .ch, .ru, and a couple .com's so far) in place of my articleid query string parameter.</p><p>
<code>http://dgibson.net/blog/article.cfm?articleid=http://www.somespammyurl.ru/blah/</code></p>
				<p>If it only happened once, I wouldn't be suspicious, but I have gotten <del>nearly</del> <ins>over</ins> a dozen of these - all pointing to different sites - in the past <del>24</del> <ins>48</ins> hours coming from at least three different IP addresses.</p><p>
This seems like a really ineffective form of referrer spam to me. If I did not have an error handling system set up like I do, I would NEVER see these URLs. Since the "attacker" varies the URL in each request, they would not even show up in my stats sorted by most requested pages. The only way I would ever see it is if I viewed my raw logs. And since the URL is added on to a URL as a query string, any auto-linking would link the entire URL, not sending any more traffic to the spamming site anyway. I just don't get it.</p><p>
Has anyone else experienced this? What is the point of this spam? It doesn't appear that the attacker is trying to inject anything more than a site URL. It could have been happening to my other sites for years and I'd never even know it.</p><p>
It looks like my next step is to catch invalid articleids and treat them as a 404 error, as that's what they are essentially. Or rather than pollute my logs with that, just redirect them to the blog index. How would you handle it?</p>
				<p><a href="/blog/article.cfm/articleid=7/URLQuery-String-Spam---Poor-Mans-Referer-Spam#comments" class="action discuss">Discuss this article &raquo;</a></p>
				]]>
			</description>
			<link>http://dgibson.net/blog/article.cfm/articleid=7/URLQuery-String-Spam---Poor-Mans-Referer-Spam</link>
			<guid isPermaLink="true">http://dgibson.net/blog/article.cfm/articleid=7/URLQuery-String-Spam---Poor-Mans-Referer-Spam</guid>
		</item>

		<item>
			<title><![CDATA[Metalunderground.com Linked To National News Story!]]></title>
			<pubDate>Sun, 24 Feb 2008 15:28:28 EST</pubDate>
			
			<description><![CDATA[
				<p>For those who do not follow heavy metal news daily, my site, <a href="http://www.metalunderground.com/news/details.cfm?newsid=34133">Metalunderground.com, got a little publicity recently</a> when it was linked to the arrest of a man for making death threats to the nu-metal band Korn. Ultimately he was arrested for making death threats on the FBI's web site (who threatens bands on the FBI's web site?), but apparently this guy was one of my site readers (abusers and trolls) that I banned in 2006, linking Metal Underground to a national news story.</p><p>
You can read my supporting evidence and commentary in full, <a href="http://www.metalunderground.com/news/details.cfm?newsid=34133">here on Metal Underground.com</a>.</p><p>
This is not really the kind of publicity I want for the site or for heavy metal. But the incident has sparked a good deal of support for the job done in moderating the site, from comments to emails. Being a heavy metal site, I try very hard not to be a heavy-handed moderator and I let a LOT of stuff slide (except for personal attacks). After all, metalheads are often rebellious and don't want to be censored. I have a bad language filter on the comments just to keep the language from getting out of hand (and getting the site banned from every search engine and parental watch software under the sun), and new readers often complain about that when they first encounter it!</p><p>
I just thought I'd share that to say "hey look at me, my site's on the news" as well as point out some stuff that people might not think of when talking about online communities and moderation, etc. - the rules are not the same for all types of communities by far. This isn't something you'll always think about when reading blogs on site building and blogging unless you are one of the exceptions.</p>
				<p></p>
				<p><a href="/blog/article.cfm/articleid=6/Metalunderground-com-Linked-To-National-News-Story#comments" class="action discuss">Discuss this article &raquo;</a></p>
				]]>
			</description>
			<link>http://dgibson.net/blog/article.cfm/articleid=6/Metalunderground-com-Linked-To-National-News-Story</link>
			<guid isPermaLink="true">http://dgibson.net/blog/article.cfm/articleid=6/Metalunderground-com-Linked-To-National-News-Story</guid>
		</item>

		<item>
			<title><![CDATA[Gainfully Employed Once Again]]></title>
			<pubDate>Sun, 10 Feb 2008 01:04:25 EST</pubDate>
			
			<description><![CDATA[
				<p>I am gainfully employed once again. Thanks to all who sent me leads and forwarded my info on to anyone else in an effort to help me find work.</p><p>
After having about half a dozen things fall through at once in the week my severance ended, I decided it was time to give up the pursuit of freelance/contract work (as a means to make a living) and get a real/full time job once again. Despite the freelance thing not working out, it was an eye-opening learning experience and I now have a much better idea of what that entails should I go that route in the future. Had I known it would not work out, however, I would have definitely spent a bit more time on my other web site ideas and redesigns.</p><p>
I'm happy to be back at my former job - the one before the recent one who laid me off - now as a full-time telecommuter. With all of the familiar faces there, I feel like I've been gone 6 months instead of 2 years! I won't mention my employer by name, because I have no intention of blogging about my job and do not want my thoughts expressed here associated with them in any way.</p>
				<p></p>
				<p><a href="/blog/article.cfm/articleid=5/Gainfully-Employed-Once-Again#comments" class="action discuss">Discuss this article &raquo;</a></p>
				]]>
			</description>
			<link>http://dgibson.net/blog/article.cfm/articleid=5/Gainfully-Employed-Once-Again</link>
			<guid isPermaLink="true">http://dgibson.net/blog/article.cfm/articleid=5/Gainfully-Employed-Once-Again</guid>
		</item>

		<item>
			<title><![CDATA[Disturbing Statements Regarding ColdFusion Hiring]]></title>
			<pubDate>Tue, 05 Feb 2008 12:00:00 EST</pubDate>
			
			<description><![CDATA[
				<p>In my recent job search, I heard two separate statements that don't bode well for ColdFusion as a whole. On one occasion, a recruiter at a large staffing firm mentioned that there are a lot of ColdFusion developers, but not a lot of experienced or senior ColdFusion developers (in the Baltimore/Maryland area specifically). Who knows why that might be the case. Obviously, that's good for me, having 8 years experience in ColdFusion and a broad and deep knowledge of its capabilities, but it is somewhat disturbing to hear overall.</p><p>
In another instance, I was interviewing for a position and I inquired as to why the job posting did not mention ColdFusion specifically, yet the company's flagship application was built on ColdFusion. The interviewer proceeded to tell me that in the past if they include ColdFusion in the requirements, they get inundated with poor quality resumes and developers. So the company had included a number of requirements in the job posting, but omitted ColdFusion. The interviewer also commented that they don't necessarily need a CF developer, as they would consider hiring someone with other server-side programming experience since ColdFusion is easy to learn.</p><p>
Poor quality of resumes/developers is nothing new. I assumed it is par for the course in hiring, but I have heard similar statements from past employers as well as companies that friends work at regarding ColdFusion positions. I've just never heard of outright not listing ColdFusion as a requirement in the job posting as an alternative or remedy to the situation.</p><p>
Now I've banked my future on ColdFusion. There are too many other technologies and facets of web development to learn and I'd rather focus on learning those than learning a new back-end language and the ins and outs enough to become truly proficient. Plus I believe in the direction ColdFusion has been headed, even if I don't totally buy into the Flash and Flex stuff. But hearing these statements from people in hiring positions does raise some concerns for me over the future of CF. Certainly there are a lot of talented CF developers out there, but it sounds as if the talent pool  is not large enough to support the infrastructure of clients who use ColdFusion. Or perhaps it's simply "watered down" substantially with inexperienced developers. It's definitely food for thought.</p>
				<p></p>
				<p><a href="/blog/article.cfm/articleid=4/Disturbing-Statements-Regarding-ColdFusion-Hiring#comments" class="action discuss">Discuss this article &raquo;</a></p>
				]]>
			</description>
			<link>http://dgibson.net/blog/article.cfm/articleid=4/Disturbing-Statements-Regarding-ColdFusion-Hiring</link>
			<guid isPermaLink="true">http://dgibson.net/blog/article.cfm/articleid=4/Disturbing-Statements-Regarding-ColdFusion-Hiring</guid>
		</item>

		<item>
			<title><![CDATA[Why Turning Pro-Blogger In January Is A Bad Idea]]></title>
			<pubDate>Fri, 18 Jan 2008 12:00:00 EST</pubDate>
			
			<description><![CDATA[
				<p>As mentioned previously, I have been looking for short term contract and freelance work since being laid off. I have aspirations of becoming a "<a href="http://www.problogger.net/">pro blogger</a>" one day, or at least to supplement my freelance income with a decent blogging income. However, seeing the sad state of online advertising in January, I've decided to pour 90% of my efforts into looking for freelance work.</p><p>
The seasonal aspect of online advertising is something I've always kept in the back of my mind with respect to when I could potentially attempt to do blogging full time. For anyone out there with similar thoughts, I don't recommend quitting your job in January to become a pro blogger!</p><p>
In general, advertising revenues are a bit low at the start of each quarter and require some ramp-up time. However, at the start of the new year, which is also after the advertisers' big holiday spend, online advertising is horrific. Ad networks' fill rates are low and CPMs are roughly cut in half or worse. It is normal for things to not start ramping up until mid-February, and even then the CPMs and fill rate - and therefore overall earnings - may be a bit "off" until well into Q2.</p><p>
So when is the best time to turn pro blogger? It really depends on the type of site(s) you run. Like advertising, many niches have seasonal trends as well. Looking at the advertising trends alone, and assuming you have an existing blog or three, I would advocate watching your earnings trends through April and May and if all looks well, consider making the jump in June. The more preparation and traffic building you can do leading up to that point, the better. I would not make the jump any later than October, however, because then your window for building traffic before the holiday season is over is very small and you'll be facing the the first quarter draught of the next year very soon afterwards.</p><p>
What the earnings threshold is for an individual to feel comfortable leaving his or her day job to go pro blogger is another question entirely.</p>
				<p></p>
				<p><a href="/blog/article.cfm/articleid=3/Why-Turning-Pro-Blogger-In-January-Is-A-Bad-Idea#comments" class="action discuss">Discuss this article &raquo;</a></p>
				]]>
			</description>
			<link>http://dgibson.net/blog/article.cfm/articleid=3/Why-Turning-Pro-Blogger-In-January-Is-A-Bad-Idea</link>
			<guid isPermaLink="true">http://dgibson.net/blog/article.cfm/articleid=3/Why-Turning-Pro-Blogger-In-January-Is-A-Bad-Idea</guid>
		</item>

		<item>
			<title><![CDATA[Looking For A Job Is A Full-Time Job]]></title>
			<pubDate>Tue, 15 Jan 2008 12:00:00 EST</pubDate>
			
			<description><![CDATA[
				<p>Looking for a job can be hard work and very time consuming! This is especially the case when you are looking for short term contract and freelance work, and being fairly selective about which opportunities you'll take. I could take a job in Washington, DC in a second, but I'd really rather not commute 2-3+ hours a day if I can help it. I've been telecommuting the past two years and had a 15 minute commute (and part-time telecommute) for three years before that.</p><p>
But back to the actual topic I was meaning to discuss. Looking for work is hard work. I've been busier than ever the past few weeks and not even working (much). One of the most time consuming parts of starting a job search is posting your resume on various job sites and recruiter/staffing firms' sites. I've been talking to a lot of staffing firms (Aquent, Robert Half, TEKSystems, KForce, etc.) and most of them have their own proprietary site that you need an account on to be considered for their positions, even though I see most of their positions from job aggregator Indeed.com.</p><p>
The time consuming part is that it's not just enough to upload your resume. Most of these sites then try to parse the information out into data fields, and you need to go through each of your job entries and clean this data up. I've been in the computer industry for almost 14 years now, so their are a fair number of entries there. I probably spent the better part of two or three days just getting my information in to these various online systems. Then, of course, you talk to the recruiters, and many require an interview with them before they will really consider you. This is all expected, but I was just shocked at how tedious the online process has become.</p><p>
The other aspect of looking for freelance work is researching and discovering the best venues (sites) to find freelance work on in the first place.</p><p>
Luckily most sites have RSS feeds now and many, such as Indeed.com, have RSS feeds for specific search results. RSS has been the real life saver once I got everything going in my job hunt. I don't know when I would find the time to visit all of the individual job boards I've responded to jobs on if I wasn't finding those postings via RSS.</p>
				<p></p>
				<p><a href="/blog/article.cfm/articleid=2/Looking-For-A-Job-Is-A-Full-Time-Job#comments" class="action discuss">Discuss this article &raquo;</a></p>
				]]>
			</description>
			<link>http://dgibson.net/blog/article.cfm/articleid=2/Looking-For-A-Job-Is-A-Full-Time-Job</link>
			<guid isPermaLink="true">http://dgibson.net/blog/article.cfm/articleid=2/Looking-For-A-Job-Is-A-Full-Time-Job</guid>
		</item>

		<item>
			<title><![CDATA[Happy New Year, Find A New Job!]]></title>
			<pubDate>Sat, 05 Jan 2008 12:00:00 EST</pubDate>
			
			<description><![CDATA[
				<p>I was laying on my couch on New Year's day, half dozing off with a headache, when I got the vague but ominous call. The next day I was officially laid off from my current job as part of a company downsizing effort. I took some solace in the fact that 9 other people were in the same boat and the Maryland office was being closed entirely in the next few months but it was still quite a shock as I'd never been on this end of the layoffs. I also heard from a number of other people who I know or correspond with online who had been laid off at the beginning of the year and apparently this is a fairly common occurrence.</p><p>
I already had plans to relaunch dgibson.net as a blog, but now I've pushed that effort ahead so that I can begin blogging and use this site to leverage my chances of landing some freelance work. Dgibson.net had not been updated for close to 7 years, sometime after I got married, so the redevelopment is much overdue anyway.</p><p>
In the meantime, I'll be doing some house-cleaning and rounding out the template design and populating it with information, and likely blogging about my job hunt and other web development topics as well.</p>
				<p></p>
				<p><a href="/blog/article.cfm/articleid=1/Happy-New-Year-Find-A-New-Job#comments" class="action discuss">Discuss this article &raquo;</a></p>
				]]>
			</description>
			<link>http://dgibson.net/blog/article.cfm/articleid=1/Happy-New-Year-Find-A-New-Job</link>
			<guid isPermaLink="true">http://dgibson.net/blog/article.cfm/articleid=1/Happy-New-Year-Find-A-New-Job</guid>
		</item>


	</channel>
</rss>








