Tag Archive for 'The Blog'

Sorry About That

Welcome to a geek’s worst nightmare: the server just went down. There’s no more blog, no more web site, no more safe online backup of your family pictures, and your victor@nicollet.net e-mail is deader than a wooden piece of… wood. Turns out, my hosting company had a little accident where hard drives suddenly couldn’t be written to anymore.

Now, of course, nicollet.net is not what I would call a production server. On a real-life production server where the disk cannot be written to, sirens would start wailing, system administrators would be paged in the middle of the night (on a week-end), monitoring software would send cryptic apocalypse prophecies in their summary e-mails, and statues would cry blood. For my blog, everything continued to work in read-only mode for what appears to be half a day, until I decided to log in to the server and found out I couldn’t.

So, I rebooted it (from my hosting company’s online administration tool) and waited for it to come back up so I could investigate.

It didn’t. For half an hour. I kept refreshing the web page that shows the server status in my hosting company’s server rooms (mine is in 08H06) until I found out the page refreshed itself automatically.

And when it came back online, I stumbled upon the geek’s second worst nightmare: the private key of my server had been changed. In non-geek terms, this means that the server had been replaced by another server, possibly as a consequence of a hostile take-over by a random hacker (I’ve had this happen, and it’s very annoying) or an unexpected hard drive re-format.

After a few minutes of frantic searching, it appeared that my server had been replaced by a special rescue server that I was allowed to use to salvage whatever I could from the smoldering heap of its former self. That server, of course, had a special password that was sent to me on my e-mail address. All of you who guessed victor@nicollet.net, you get a cookie. All my attempts to have that password sent to another address failed miserably, until I finally gave up (because I have, you know, a Start-Up to start up).

It took about 12 hours for my hosting company to find out what happened, revert the changes and reboot my server. No data was lost (except for that e-mail that Steve Jobs sent me about our secret project together, which I guess I’ll never get), and everything works like a charm.

Facebook Pages vs Web Pages

If you’re doing anything that involves dealing with many people, you need to have a web presence. It doesn’t have to be a billion-dollar corporation or a trans-national association. My wedding will have a web presence because it involves several people and losing an online web site in your history or bookmarks is harder than losing a fancy piece of paper, and because a web page can provide so much more features than dead tree paste.For instance:

Where will the wedding be? → link to Google Maps (though Alix prefers Mappy)

When will it be? → click a link to add it to your Outlook / Google Calendar

How do I get there? → see a list of hotels and train schedules

Who is coming? → use the RSVP feature

This is turning into a wedding organization checklist, which isn’t the point. The real question is, should I create a Facebook Page or a normal Web Page?

Advantages of Facebook Pages

  1. It’s easy: you don’t need any technical abilities to set up and maintain a Facebook page.
  2. It’s free (as long as you don’t buy ads).
  3. You get a clean and readable page layout, a discussion forum, a photo gallery, a simple web analytics suite, and a readily available Open Graph node (something people can Like)
  4. The wall of your page acts as a multimedia mini-blog with automatic subscription for Facebook users (when they Like your page, all your updates show up in their feed) and RSS subscription as well.
  5. People trust Facebook pages, because Facebook would not allow harmful or offensive pages

Advantages of Web Pages

  1. You can use any web domain. Not having your own domain name can sound unprofessional, and it can reduce your Google Ranking.
  2. You can create a web page for anything, without being limited by the Facebook terms of use or the possibility of Facebook simply wiping out your page from existence on a whim.
  3. You can have a real blog, with updates of a meaningful size.
  4. You control your web page, which lets you include any special features that Facebook does not allow (a store locator, files to be downloaded, dynamic data, restricted areas, multiple languages, a link to a twitter account).
  5. People explore web sites: they come in non-standard formats with non-standard information, so there’s curiosity involved.

So ultimately, it’s a matter of independence versus commodity. If you don’t need the benefits or social standing of having a standalone Web Page, go for a Facebook Page instead. Otherwise, be independent, but be prepared to pay the cost (in time and money).

On the long term, having a Facebook Page ultimately serves a different purpose from your Web Page, so you should strive to have both.

Related Posts

We Don’t Care About Your Prose

So there you are, Mr Blog Author. Or Ms (I’m not very good at guessing genders over the Internet). Through devious plans and clever hacks and selling your body on the e-streets you’ve achieved what seemed impossible at first: brand new pairs of eyeballs hitting pages on your web site every day. There you are, rubbing your hands and cackling like an evil maniac in front of your Google Analytics benchmark, wondering what to do next.

«What you should do,» shouts just about every blog expert, «is let people subscribe in a variety of ways: RSS, e-mail, twitter…»

This is right. But it’s too soon. What you have now is a reader who has only read one article on your blog. Before they add you to their RSS aggregator or give you permission to send them e-mail updates or commit to anything, they will want to know whether that article they just read is typical of your abilities as an author, or if you just managed to get lucky.

So, they will click on another link, desperately trying to read another article on your blog. The second article anyone reads on your blog is the most important article they will ever read.

Silly people all around the world think it’s the first article that matters. Bovine feces, I say. You have absolutely no control over what the first article will be—this is up to the people who link to your web site. So, if a popular twitter user mentions your article about a shrimp on a treadmill to the tune of Benny Hill, this means a crowd will be reading that article as a first article. Besides writing great articles all the time, the only thing you can do is find out what articles people are being linked to, and improve the format of those articles (do not change their text: it’s dishonest and you will be called on it).


Courtesy of IttyBiz.

You do have control over what the second article is. What people can do when they’re done reading an article, ranked from potentially bestest to potentially worstest:

  • Pick a link in the «related posts» list (you have one, right?)
  • Follow a link in the «recommended reading» list (you have one, right?)
  • Click on a comment in the «recent comments» list (you have one, right?)
  • Use the «next» and «previous» links
  • Follow a link in the «recent posts» list
  • Click on the «home» link to navigate to the latest blog post
  • Go for the archives

Which one they will pick depends on whether you have these links and where they are in the layout. It’s in your best interest to have all of the links at the top of the list, and point them to the best articles you can find on your blog (I recently did this, using the number of Facebook Likes to pick them). And the real trick is this: people don’t care about your prose, what they love or hate is your ideas and your content. Unless you’re writing about prose, of course.

If people are looking for a second article to read, it means they enjoyed the ideas and content they found in the first article they read, and they need to read more.

Your «related posts» should point to similar content. Your «recommended reading» should match the theme of your blog (you have one, right?).

Always repeat yourself on your blog, in as many posts as you can. You write the damn thing, of course it feels repetitive to you. But someone who just discovered it and is intrigued by your ideas? They just cannot. Have. Enough. They want more and you should give them more!

Related Posts

The Four Stages of Communities

Alison Bechdel is the author of the Dykes to Watch out For webcomic. One of the characters has three simple and apparently obvious rules to decide whether she wants to see a movie. These are known as the Bechdel Test, and look for movies that:

  1. have two female characters
  2. who talk to each other
  3. about something other than a man

They may sound obvious, but popular movies fail the test on a regular basis.

The same applies to communities led by a figurehead, such as blogs or fan pages.

Stage Zero happens when there are no participants. It’s a sad place.

Stage One happens when there are some participants who leave comments and interact with the figurehead, but mostly ignore each other.

Stage Two happens when the participants start interacting.

Stage Three happens when the participants, still interacting with each other, start going off-topic and discuss things beyond the original purpose of the community.

Most communities get to Stage One. Yet, even as they get hundreds of participants, getting them to interact together is harder. Hundreds of people go write “Great Post! I completely agree with you!” in the comments section of every article on 10k-subscriber blogs because this gets them some free back links. It takes a lot of spine and insight to actually write something original, contradict the author on his own blog or *shudder* go post on a brand new blog with only a few subscribers.

This blog is still in Stage One. I think Stage Two is a nice place to be, and my regular posters seem to be clever and decisive enough to go beyond the “Great Post! I completely agree with you!” wall. Stage Three would be even better ;)

Eternal Sunshine on the Spotless Reputation

This week-end, I was in Concarneau. For those of you who care about French geography:

I had a jolly good time. The trip back to Paris took about 5 hours by train. I wound up back at home a short while after midnight and, since there was no Internet connection available for the entire week-end, I went straight for my Internet fix. Which I couldn’t find, because my CastleNet cable modem had died during the weekend. I scratched at the walls, screamed in the middle of the night, and generally behaved like a junkie for a few seconds.

Today, I replaced the cable modem with a new one for free (Numericable, my cable provider, basically just rents me the modem and replaces it whenever it dies). I’m very unhappy with the new modem because it’s a Netgear cable modem. Netgear.

netgear

I’ve had some experience with Netgear routers before. A bad experience. When I was still a teenager, my family moved into a new home and decided to go wireless, so we bought a Netgear router and a Netgear PCI wireless card for every computer. It sucked. First, there were random disconnects as the router would just shut down and reboot of its own accord if you did so much as stare at it. Then, the signal power meant my bandwidth would have been greater if I had just ran around with my packets written down on a piece of paper. And one day, the router just decided life was not worth living anymore. With my last strands of sanity I purchased a Linksys WRT64GL and swore never to buy a Netgear product again. Right now, I’m sitting face-to-face with my latest Netgear modem-router (it’s wedged between my two LCD monitors) with contempt in my eyes.

The Point (yes, there’s one)

So, I judged an entire product line, nay, an entire company based on my experience with a single product that might have been, for all I know, a honest malfunction. Everyone does. You don’t eat a spoonful of Yogurt, decide that it tastes like the zombie apocalypse just happened in your mouth, and buy another pack just in case. I’ve already explained why creating a great first impression is important:

When you manage to attract a truckload of fresh eyeballs, make sure your secret weapon is ready. Show them the fireworks. Have them go Oooh! and Aaah! Every time you attract someone to your website or product, you implicitly promise them that you have something very interesting to show them.

But sometimes, something goes wrong, and the only impression someone ever gets of your brand is a bad impression. What do you do, then?

The common reaction among businesses seems to be «ignore the issue completely» and there’s a fairly simple reasoning behind that: if a one-in-thousands occurrence creates a bad experience for your users and you say nothing, then those few people will be unhappy and stop buying your products, but the vast majority will remain blissfully unaware that there were problems in the first place. This was a fairly good reaction ten years ago. Not anymore.

A one-in-thousands fiasco has a significant probability of ending up on Twitter or on a blog. From there, it’s only a matter of time before that blog ends up with a high Google rank for «[Your Product Name] sucks» and every person looking to buy your product ends up reading it. Seriously, just Google «[Any Product Name] sucks» to find the arguments against any product you can think of. And there’s worse: what if the media finds out about and investigates?

Seriously. Apple tried to hide, and then deny having the iPhone 4 antenna problem, and finally lied that everyone else had the same issues. What is probably the best PR machine on earth after the White House just failed. Can your PR department handle something like this?

What if Netgear themselves had announced that one of their WGRxxx router lines had unusually annoying issues due to a faulty design? Sometimes, all it takes is to sacrifice a lame product line that everyone knew was bad (but no one dared say it) to invigorate the brand.

Oh, by the way: I know today’s post is late. My Internet connection was out.

What do you think about Netgear products (or Linksys ones) ? Have you given up on any brands because of your early experience? Do you have any error-detection techniques that let you target victims of your product failures with an apologetic e-mail?

Related Failures

Nicollet.Net Facebook Page

There have been three changes to the blog layout this week-end:

  • Removed the calendar from the sidebar.
  • Added a “Like” button to every post.
  • Added a fan page badge to the sidebar, using the newly created Nicollet.net fan page :
 

Dear readers and subscribers : I know that you’re more than an user agent and IP address! If you like what you’re reading on this blog, please consider joining the facebook page: it’s a simple way to help others discover this blog, you will be kept up to date with frequent updates, and I will get to see your happy little faces :)

Anyway, below is a simple tutorial for adding Facebook capabilities to a website or blog, just in case.

Adding the “Like” button

The idea behind the “Like” button is that Facebook will keep track of who liked what page on the internet, based on the page’s address. By default, it shows how many people clicked the “like” button. If the friends of a visitor liked the post, these friends will be explicitly named. If nobody has liked the page, it cleverly displays a “be the first of your friends to like this page“. Oh, and you can choose to rename “like” to “recommend” if you think the former sounds stupid.

This button is implemented as an iframe. You can generate the HTML for a certain page by going here and entering the address of the page. You will end up with HTML that looks like this:

<iframe src="http://www.facebook.com/plugins/like.php
?href=http%3A%2F%2Fwww.nicollet.net%2F&amp;layout=sta
ndard&amp;show_faces=true&amp;width=450&amp;action=li
ke&amp;colorscheme=light&amp;height=80" scrolling="no
" frameborder="0" style="border:none; overflow:hidden
; width:450px; height:80px;" allowTransparency="true"
></iframe>

Hidden in this mess is the address of the page to be liked, which means you can generate it using your server. For instance, to get this nice button below every post, I edited my WordPress blog template to add this iframe at the bottom of every post, then replaced the URL address with some PHP code:

<?php echo urlencode(the_permalink()) ?>

It’s important to keep in mind that Facebook determines the number of “likes” based on the URL. So, make sure all “like” buttons for a given page use the same address (for instance, adding a “like” button to forum threads would involve using the link to the first page of the thread on all pages of the thread).

Creating a Facebook Page

This one is exceedingly simple. Go to the page creation form, fill in any required information, and go! If creating a professional page, you might want to create a Facebook account that is distinct from your private account, to use as a page administrator profile. Once the page is created, add a picture, fill in the info tab, and write a short text in the left sidebar. Then, start promoting the page.

Adding the Page Badge to your site

Actually, it’s called a “like box”, and again, there’s a clean creation form available. Fill in any required details, and copy-paste the generated HTML back on your site. The only difficulty here is figuring out your page number. It’s hidden in the URL of your page: for instance, you can find the Nicollet.Net page at

http://www.facebook.com/home.php?#!/pages/NicolletNet/133220253364964

The page number appears at the end of that address, so just copy-paste that value.

Brain Dump

Programmer Fonts. We programmers love fonts that are fixed-width, clean and readable even with a small font size. My personal favorite is Proggy Tiny, a free programming font. Do you have your own favorite, or do you use whatever the system default is?

Stop Micromanagement. Take any game where you play as the here and have to accomplish something. Now, turn it into a game where you control the world to help the computer-controller hero accomplish the same thing. This is the difference between doing it yourself and micro-managing someone to do it.

Programming Games. On the topic of having games teach interesting concepts, the second installment of LightBot is now available on Armor Games ; the game teaches recursion, recursion-based loops, and conditionals.

Google Street Smarts. It’s fairly easy for us to search online for our own names, to see what others might find. How many of you have tried to search for pictures on geographical locations based on their names? And how can we know if we’re not on Google Street View, anyway?

New Favicon. There’s a new favicon on the blog. You should see it in the address or tab bars above, or here:

200

I have written 200 posts since I started this blog back in August 2008. I guess this gives me some bragging rights!

tmp

The blog originally started back in 2008 on a Joomla! platform on my shared hosting. The first post, Options and References, was published on August 8th and compared the C++ and Objective Caml approaches to option and reference semantics. I managed to follow a thrice-weekly schedule for a few months, forcing myself to write when I felt tired, which resulted in posts that were sometimes badly formatted or completely uninteresting. There’s some serious chaff in those archives, folks.

I started a blog because I was at the time a very active participant on the gamedev.net forums, with several thousand posts under my belt, and many of these were long, in-depth analyses of technical topics. This also helped me improve my english language skills—I’m not a native speaker—and provides me with an invaluable argument in any hiring process. Not bad.

The game development forums were also the reason the blog was written in english : most potential readers at the time were people on the forums, so I had to cater to that audience. It ended up reaching far more people than that, as the blog gradually shifted from a C++/game focus to PHP/JavaScript (and now, to business strategy).

Several blog posts actually come directly from these forums, copy-pasted and quickly edited, and many others were directly inspired from there:

Actually, my 100th post on the blog (it was published on April 1, 2009) was titled The C++ hits you! You feel confused. and discussed a common topic found on the forums : should C++ be used as a language to learn game development?

Then, I moved to wordpress in late december 2008. I have had nothing to complain about ever since (well, except comment spam). I have been using K2 as a theme, and modified it last month to improve the readability of the blog, to add a Retweet button to all my posts, and to append a small 80-day plot of my feed subscribers at the bottom of the right column.

The Future

I certainly intend to keep posting here. There has been a gradual increase in readership over these two years, which might be related to my own improvements in both content and style. Besides, there are benefits to blogging (and, in general, to writing down things) : it serves as a log, as a way to think about stuff in greater detail, and as a reassuring routine that just stays there when you change jobs or locations.

I also intend to make a few improvements. These would be:

  • Add more links. I believe this is the single greatest offender as far as content is concerned. There’s absolutely no way for an average part-time blogger like me to produce as much fresh content as the rest of the internet. This isn’t a plan to become an echo chamber, but rather a way to add depth to my existing posts. There’s a middle ground to be found between the echo chamber blog and the listen-to-me-I’m-interesting blog.
  • Add more internal links. Now that I have two hundred posts, there’s absolutely no way for the average reader to skim through the archives to find something of interest. There are so many subjects here that a PHP developer will not care about C++ pointers and a start-up founder will not care about CSS. A short related links section at the bottom of every post should help with this whenever possible.
  • Add more images and structure. Right now, my posts are a neverending wall of text and pain. Adding a few more images, headers and lists back into the fray should help make my posts friendlier.
  • Combine several unrelated short posts into one. Right now, I don’t publish an article if it’s shorter than 1000 words (or at least, not without painful mental duress), but I have lots of ideas that I could write two or three sentences about. By combining them into longer posts, like Inc.com does (example here), I get to write more, and discuss a larger variety of topics.

On the other hand, there will still be no twittering (I have neither the time nor the interest to take care of that).

I hope the improved version will be to your liking. Until then, if you have any advice (or constructive criticism about existing content and practice), feel free to mention it in the comments section!

Readability Improvement

Updated the stylesheet for the blog today to increase readability:

  • Decreased the size of the header, which used valuable screen real estate, from 220 pixels to 70 pixels. In terms of screen size, it decreased from 1/3rd of the screen height down to 1/9th.
  • Increased the width from 750 to 960 pixels (all of that increase went into making the content column wider).
  • Increased the font size by a few percent, and reduced the line height a bit.
  • Restored sane colors for the links (blue by default, orange when visited).
  • Corrected some silly rules (such as strong text using a different font, code being larger than the rest of the line, and the extreme line height in pre blocks).

Hopefully, it should be easier to read.

Smart Spamming

I found an interesting comment on my website today, for the article on last-minute-skinning of a page in HTML from some Javascript. It looks pretty sane:

CT — October 5, 2009 at 22:15

Interesting stuff. I don’t relish the idea of taking the vile HTML our designers produce and creating the skin files. Nice proof of concept though – I’ll have to keep an eye out for an excuse to use it ; )

This comment, while completely adequate and relevant to the article, is spam. How do I know? First, the provided website is a classic credit-rating-improvement web portal. But should I prevent people who work in the credit spam industry from posting relevant comments on my articles? Well, there are other comments on that article, too, such as:

Tom Milsom — September 8, 2009 at 11:41

Interesting stuff. I don’t relish the idea of taking the vile HTML our designers produce and creating the skin files. Nice proof of concept though – I’ll have to keep an eye out for an excuse to use it ; )

So, it looks like the spam-bot found an earlier comment on the article, copied it verbatim, and posted it with a different link. This would ensure that, if the spam domain is fresh enough not to register as such, the Akismet spam detector would let the comment go through unscathed based on its content alone. And as a human, if I did not pay attention to the author’s website while reviewing comments, I would let it go through as well because the comment would look sane. I don’t remember comments from one month ago, and I guess many people don’t.

Everyone enjoys advertising if they are looking for, or otherwise interested in, the product being advertised. I discovered Cushy CMS because it ran an ad on The Daily WTF, and I am quite happy with the discovery because I was looking for such a product. And nobody enjoys advertising for products they don’t need—I don’t give a cheese about US credit ratings. I have limited space on my screen that I’d rather not fill up with advertising about things I do not need, and my time is even more precious than that.

This spam comment blurs the line between spam comments that are irrelevant to the discussion and point to websites irrelevant to the readers, and ham comments that are relevant to the discussion and point to websites that are relevant to the readers (by virtue of usually being run by the author of the comment and thus sharing at least some elements).

Suppose that tommorrow, someone posts an original and interesting comment on one of my articles, yet links it to a credit rating website. Should I accept the comment as such, block it, or publish it without the link?

One of the main reasons why people comment on the blogs of other people is to improve their visibility on the internet. If I post a comment on a well-known blog, hundreds and thousands of people will browse over that comment, a small percentage of these will find my writing worthy enough to follow the link and end up on my blog, and an even smaller percentage will become regulars, posting comments and subscribing to my feeds. Which is good, of course, because the more comments I get on my blog, the more interesting it becomes.

This means that commenting is often quite similar to advertising one’s own blog or website. People allow commercial advertising on their blogs (ad banners and such) to get money in return, and they allow personal blog/website advertising on their blogs to get comments in return. So, I guess if an irrelevant website was linked to by a genuinely interesting comment, I would publish that comment (of course, restrictions do apply: I would not allow all websites, just like I would not allow all ad banners).

I like the blogs with good comment advertising—where I can browse the comments and find links to interesting websites.



1150 feed subscribers
(readers who polled a feed this week)