On Image Use and Death of the Mouse Plus 70

I was involved in an email discussion this morning and once again I realized that I’ve transferred my creative energies from writing new and interesting blog articles over to email discussions and forum posts.  So I’m sharing this with you and will hit post instead of send.  (Oh and btw make sure to save as a draft in Windows Live Writer before pasting from an HTML email.  Some formatting causes WLW to go into an infinite loop.  As a result you have to rewrite your brilliant and concisely worded opening paragraphs again.  And they are just never as good the second or third time through and your daughter will get upset because you told her you would do her swimming lesson at 11am and that is already well passed.)

At b5media, Inc. we no longer allow the use of copyrighted images unless the blogger has obtained permission from the copyright owner or a representative thereof.  The use of copyright images is not something that most Bloggers bother to think about.  If you see a neat wilderness photo you want to share, you post it.  If you see a picture of an actor doing something… unusual, you might just toss it up on your blog.  If you write an article about Steve Jobs or Bill Gates, of course you’ll want a head shot above their name.  If an image is used on another website, it is considered polite to copy the image locally to your account so that you are not stealing bandwidth.  Most people certainly want to respect the rights of a photographer and want photographers to be paid, but those thoughts usually don’t enter our mindset.

Well for a blogging network of well over 300 blogs, image concerns are amplified.  Respecting creative rights and intellectual property is extremely important to us.  Heck, we make our living from IP too.  OK and yes, admittedly the $20K fine for each image in violation of the law could add up to a sum that would leave anyone weak at the knees.  So, liability is of course a concern.  If b5 takes a hit, that could affect the livelihood of hundreds of Bloggers.   So this is matter we take very seriously.  We have to. 

There’s been some discussion by our Bloggers and Channel Editors this morning on the subject of image use and here is my contribution:

COMMON SENSE DISCAIMER: Everything in this email/post is only the personal opinion of a geek and is not said in my capacity as a b5media employee. It may or may not be the opinion of the powers that be in b5media, inc. Therefore, nothing in this email has any relation to b5media, Inc. policies. Anything that you believe says or implies otherwise should be ignored. 

“creator’s date of death plus 70 years”

BTW you can thank Disney for that stupid law. It irks me because it means that rare recordings of things like the Danny Kaye performances I like cannot legally be shared and so they become rarer and rarer parts of collections and eventually parts of our culture are lost. Why should a 65 year old scratchy recording of someone reading a story about an inchworm be unsharable? It’s all so that we don’t send around copies of a horrible black and white cartoon of a poorly drawn mouse driving a steam boat and so that stores on the beachfront in Miami can’t airbrush said mouse onto a shirt (or wait does that happen already?). The law in Austrailia is a generous 50 years and the US is trying to push the Ozz to move to 70 years as well.  We have made other countries do this already. And 70 is just a “Magic Number” anyway and one should always avoid “Magic Numbers”.  (A principle I was taught early on in my coding carreer.) 

Yes this is a hot-button issue for me J


An interesting article on the 2002 case that extended this law.

WikiPedia’s discussion on the various “free license” differences out there. It will be helpful for those put their own pictures on the various hosting services out there. 

The relevant part is here:

For image creators:

If you are the creator of an image, you can choose any acceptable free license. You can multi-license your image under different licenses, if you prefer. The license must not prevent commercial reuse or derivative works.

clip_image001 GNU Free Documentation LicenseGFDL-self – Written by the Free Software Foundation. People are required to attribute the work to you, and if they make changes or incorporate your work in their work, they are required to share their changes or work under the same license.

clip_image001[1] Creative Commons: Attribution-ShareAlike – cc-by-sa-3.0|Attribution details – This is one of several CC licenses. This version permits free use, including commercial use; requires that you be attributed as the creator; and requires that any derivative creator or redistributor of your work use the same license. The desired attribution text should be included as a parameter in the template.

clip_image001[2] Creative Commons: Attribution – cc-by-3.0|Attribution details – Similar to the above, but does not require that derivative works use the same license.

clip_image001[3] Free Art licenseFAL – A copyleft license for artwork; modification and commercial use are allowed, provided derivative works carry the same license.

clip_image001[4] AttributionAttribution – The copyright holder allows anyone to use it for any purpose, provided that the copyright holder is properly attributed.

clip_image001[5] Copyrighted Free Use – CopyrightedFreeUse-Link|[http://www.yourwebsite.com/ Your website] – Same as above, but attribution is not required. However, as a courtesy, you would appreciate a link back to Your website.

clip_image001[6] Public domainPD-self – The creator permanently relinquishes all rights to the work.


NOTE (TO B5 READERS): b5media does not fall into the same business category as Wikipedia. Should you see “fair use” stuff on various Wikipedia pages, just be aware that various points may directly contradict our policy. I personally wouldn’t try to argue using Wikipedia’s “fair use” policy after violating b5media’s image use policies.  That’s why I didn’t like to their policy. ‘nuff said. 😉

Also the Electronic Frontier Foundation (EFF) http://www.eff.org/ always has interesting reads (like this http://w2.eff.org/bloggers/ ) and advocate changing the laws rather than breaking them. I don’t always agree with what I read there, but it is always interesting.

Eliminating duplicate WordPress content in Google

If you are at WordCamp 2007, one of the best sessions was Google’s own Matt Cutts discussion on optimizing your WordPress blog. You can see the whole presentation over on John Pozadzides site’s One Man’s Blog. Here is the link. You can see in Matt’s Whitehat SEO tips for bloggers slide show that one of the things that WordPress “suffers from” is that you can reach the same data from multiple sources.

You can get to the same article by browsing by category, by day, month, year etc. etc. etc. Each time Google sees the same data repeated on your site again, it hurts your site a little bit more.

This bit of code will help fix it. It goes into the header part of your blog and will tell Google that it should ignore all of the pages that are not the orginal source of the article.

Here you go:
if (is_home() || is_single())
echo ““;
echo ““;

TheCodeCave.com is back

Hi all!

Remember me?

I’m the guy that pretty much disappeared off the face of the earth back in May! I have been THOROUGHLY enjoying my new job at b5media. And there’s been soooooo much to do at b5 that I’ve not been taking the time I should have been taking to visit with you guys. When I started at b5 the posted blog count was 185 or something like that. The count is currently 260 blogs. Yes, we’ve added 75 new blogs in the last four months. And there are a good many more blogs on their way.

As a result of five months of fun and mayhem (Heck, I’ve even been out to WordCamp and had supper with Matt Mullenweg and the whole automattic gang). I’ve got loads of tips to share with you, things I’ve learned to do better. What enables me to do that is that we’ve just hired a great new employee, Corey Shaffer. He was my student for the 2007 Google Summer of Code project. He’s been a tremendous help at b5 and has helped tip the balance between the day to day tasks of mananging a existing network of 22 dozen blogs and the need for forward progress.

So, now I feel that I can responsibly take some time to get back into the WordPress world on my own again too. Oh I’ve still been out helping other with their blogs. I helped my sister with a site for the family of my Brother in Law’s army unit: The 298 Sandbandits. I also helped a friend get his own blog running: Iggy the Biker. But I haven’t done much for just me.

Well in October, that’s gonna change. I’m starting the month by falling back to my old tried and true and I’m posting a Delphi program I wrote tonight. It’s a really simple program that I’m going to find incredibly useful.

All it does is reverse the slashes of what is in the clip board. How is that useful? Well, in my setup I work in a Telnet (SSH) window half the time and half the time I use SFTPDrive to map the b5media resources to my local drives. Well when I am in telnet my paths might look like this: /var/www/blogname/.htaccess. But if I want open up that .htaccess file in Notepad++, I have to change the path to look like y:\var\www\blogname\.htaccess. Now I have a simple way to do that. In fact I just used it to convert the slashes. I’ve got a shortcut to that program on an auto-hide taskbar on the left side of my screen. So I just click it and boom the slashes are reversed (again) like this: /var/www/blogname/.htaccess. That is sooo awesome.

And it was sooo simple. I’ve been wanting to write this for ages. I actually did write it in Delphi 5 but it didn’t work under Vista (which came on my laptop). I’ve now rewritten it using CodeGear RAD Studio 2007 (which is simply awesome). And it works great!

Here’s the code & exe in a zip: http://www.thecodecave.com/downloads/delphi/SlashFix.zip
program SlashFix;


Forms, Clipbrd, SysUtils;

{$R *.res}

S: String;
Application.Title := ‘Slash Fix from TheCodeCave.com’;
S := Clipboard.AsText;
if (pos(‘/’, S) > 0)
then S := stringreplace(S, ‘/’, ‘\’, [rfReplaceAll])
else S := stringreplace(S, ‘\’, ‘/’, [rfReplaceAll]);
Clipboard.AsText := S;


Here’s the exe only: http://www.thecodecave.com/downloads/delphi/SlashFix.exe

Of course the version I use is tweaked a bit to work specifically with my common tasks at b5 and will be growing even more. I’m sure you can thing of ways to automate the tasks you do everyday in the same way.

Any way, more tomorrow. There’s another b5 blog that is launching tomorrow, and I’ve got to tweak somethinb befor it launches. Here you can check it out: http://www.LadiesCourt.com/ which is all about Women’s basketball. I just wish that the Cleveland Rockers were still around to be featured on it. My kids went to a number of cleveland Rockers games and we have still have some logo material around.

b5media Breaks Through 200-Blog Mark

Hey – look what hit the news wires today:

TORONTO, June 13 /PRNewswire/ — After only 18 months in business, b5media Inc. has surpassed the 200-blog mark – a development that cements its status as one of the world’s leading blog networks. “This is a huge accomplishment for b5, and it reflects all the hard work by our employees, channel editors and bloggers,” said Jeremy Wright, b5media’s CEO. “It’s pretty amazing to think b5 has grown so quickly from
five blogs in late-2005 to where we are today. While it’s been a great ride so far, I’m really excited about the future as we aggressively ramp-up strategically.”
Wright, who co-founded the company, said b5media has taken a different strategic approach than other networks by focusing on giving readers a wide variety of blogs that cater to their specific interests. “Rather than forcing people to drink from the fire hose — blogs that
produce 10 to 15 posts a day — we believe it’s better and easier for readers if they can go to blogs to quickly get the information they want.
It’s an approach that has clearly resonated with many people given our network attracts more than three million unique visitors a month.”
b5media’s network is divided into 13 channels, ranging from business, technology and sports to entertainment, celebrities and science &
technology. The company is powered by a team of nine editors and 125 passionate writers, who produce 150 to 200 posts a day.

About b5media: b5media is a global new media network that features a wide variety of subjects ranging from entertainment and news to technology and sports. With content written by passionate people and more than three million unique visitors a month, the Toronto-based company is among the world’s largest blogging/ new media networks. b5media received venture capital financing in late-2006 from JLA
Ventures and Brightspark Venture Partners.

What makes this 200 different from other networks is that these blogs are all targeted a creating targetted high calorie content posts.  These are a bit different from the normal blogs with post like “I did the wash today and another sock when missing.”  Each targeted blog has a specific topic on which the writers are paid to produce a certain amount of quality content each week. That means our advertisers are guaranteed that we will pull the visitors in.

Upgrade to WordPress 2.2 or have your Admin PW stolen

OK It’s been a couple days now and this news is only spreading. If you haven’t heard already, there is an attack out there that allows the Admin PW to be compromised for any WordPress 2.1 and 2.0 blog. Only 2.2 and the yet unreleased version of 2.0 are safe and it will stay that way. The 2.1 is not a maintained version. So far, I’ve heard nothing about the plans to release a new 2.1. So at this point, for most people running 2.1, your only choice is to upgrade to 2.2.

I’ve stolen the admin PW of several 2.1 sites under my control and tested the sites of some of my friends to make sure they were safe even though they hadn’t upgraded.

There are two things that may make your 2.1 DB safe:

1. Your user named Admin is NOT user number 1.

2. Your database prefix is NOT wp_

If you want to upgrade safely and quickly, try my script.  The latest post about it is always at: http://www.thecodecave.com/EasyWPUpdate
If you want to see how we handled this at b5media, read here:
Guide to Disaster: How The Tech Team Handled WordPress Security Flaw

digg my story?

My interview with b5media

Well, I’ve finally collected my phone and transfer cable in one place and have gotten the pictures off. So, here’s the story of how I became a b5media Code Ninja.

It all started back at the end of March. I got a call out of the blue from Aaron Brazell, now Director of Technology for b5media. I wasn’t looking for a new job as for almost 9 years I’d been a software engineer for DRB Systems, Inc..

I was in a fairly central position at DRB. All configuration of software and hardware filtered through software and solutions that I made. I was also involved with the HealthWatch Committee which was responsible for getting everyone involved in physical activities and helped radicaly reduce our insurance fees.

But that silken tongued sweet talker Aaron, got my attention.

He told me of the wonders of working at home. Reminded me of the thrill of working for a startup. And seduced me with the lure of spending my days working from where ever I wanted to set myself up.

So, it was two weeks later that I found myself up at six am for a drive to the Cleveland airport. Do you remember the Cleveland Indians’ Season Openner? I do. It was the strangest thing I’d ever seen. It was the night before my drive. Here’s the video as they tried to battle the snow long enough to finish a came that was a shut out at the bottom of the 5th with two outs and three on base:

(Sorry I had a nice video saved in a SWF file but the sneaky buggers now have it playing an ad software engineering jobs. lol  Here’s a much longer youtube movie instead:


You would have thought that would be a clue to the road crews that they’d have some work to do on the roads. But no, it seems they decided to sleep this one off.

Now I grew up in the Pennsylvania Laurel Highlands (Satellite view). That’s right where all of the snow broke at the edge of the Laurel Mountains. So I know snow. I rode a motorcycle year round even when it was 11 degrees out. I KNOW winter driving. But driving up 77 into Cleveland was the WORST conditions I’d ever been in.

Now, I got there in plenty of time for my flight, well ok not plenty but I was sitting at the terminal before boarding was scheduled to begin and actually had a 20 minute wait until they openned the doors. All in all that was really good considering a good portion of the trip was spent going 15 mph. Even at 15 mph with the roads TOTALLY untouched with four lanes of rush hour type traffic, I passed more than a dozen cars that were 40-60 ft off the road into no-man’s-land. I stopped counting at a dozen because I knew I had enough for a great story and had probably missed some at the beginning anyway.

You’d be driving along and suddenly you’d find that your car would be switching lanes and you’d watch for all the other cars to your left and right to do the same. One car about 5 in front of me, in the far left lane slowly started drifting to the right and turning sideways. I was in the next lane over and the cars in front of me just let off on the gas enough to let them go across. They were completly sideways traveling at the same speed as the rest of us when the left the next lane. Up ahead 10 ft off the berm was another car facing the on coming traffic. The non-voluntarily exiting vehicle continued drifting off the to the side and picked up speed. This was a good thing as they managed to pass behind that stopped car and as I passed them, they were facing the right direction and, still in one smooth motion, were merging back into traffic. I suspect it was deliberate…

 So, finally I got to the airport (note to self, always unpack laptop from carry on bag), boarded my plane (standing in the plane’s doorway, I could look directly over the top), and in my seat.

Here was the view out my window the wind had cleared enough for me to see out:

Sent this to my wife....

I was to take this flight up to Buffalo, snow capital of the US and drive from there up to Toronto.  After the drive I had that morning, I was glad of it…  I began to wonder though after several hard bumps occured and the plane still hadn’t moved.   Well it turned out that the tug they had, couldn’t push us free from the slot.  So they had to get another.  20 minutes and several bumps later, and THAT tug wasn’t powerful enough to free us from our frozen grave.  🙂  So a third tug, it must have been for a 747, came after another 20 minutes and THAT got us free and pushed us back into the unplowed run way.

 But we’d lost our slot in the deicer line some 40 minute earlier.  So we had another 20 minute wait to get deiced.  That was somewhat humourus actually.

See the guy on the left of that plane, he’s in a nice enclosed cabin.  The guy on the right is in an open bucket that is now backed off as the antifreeze drains out from the cabin dude blasting him with a firehose stream of antifreeze for 3 or 4 seconds.  He just absolutely nailed this guy full in the face as he raised him self up above the plane and the other guy totally over shot it from the other side…  they both just sort of stopped and had an exchange of some sort or or another :-O

 If you ever have your plane deiced, bring polarized sunglasses.  It makes the whole experience psychodelic as you’ll see rainbows everywhere.

The pale frozen green goop look just doesn’t do it justice.

 However, once I gut to Buffalo, it was clear sailing.  There was almost no snow to be seen anywhere, I had a sweet ride and things were looking up.

I met Jeremy and Aaron at the hotel lounge of the Intercontenental Toronto.

 I was there about an hour before our original planned meetup time, but also an almost hour after they’d called “Hey, we decided to meetup early in the lobby.  Where are you?”  My 40 minute flight had turned into 2 hrs but I was thinkin’ I was still peachy-keen till that phone rang.  Buffalo has a great blues station and some BB King had me nice and mellow for most of the drive.  I’d found a pretty good alternative rock station by the time I’d neared Toronto.  So, I couldn’t have asked for a much better ride.

I got into the hotel shook hands with Jeremy and Aaron, went to my room, splashed water on my face, ran my fingers through my hair and I was on!

Jeremy and Aaron are great guys.  Here’s a shot of Jeremy and doing his “Sexy Entrepreneur” look:

Sorry ladies, Shannon snatched this guy up!

So, we sat and hung out chatting, till Mark Evans , former senior tech reporter from the National Post no now b5 VP of Content, happened to wander by.

We pulled up a fourth chair to the two person table, and we ordered another beer to go with the bowl of mixed wasabi nuts on the table.  Now Mark is a journalist at heart and so, the interview began in earnest.  A few minute later, the pro blogger himself Darren Rowse, b5’s VP of Training, came in from the hotel down the street and pulled up a fifth chair.

And if you ever had an interview

with Darren staring at you this way,

the entire time, let me tell you, it is unnerving!

Ok, it wasn’t that chair but the picture fits doesn’t it? 🙂

As we were quickly over staying our welcome in the narrow aisle of the bar section, about 15 minute later we adjourned to The Cave.  A short stop for Red Bull later, and we were there.

 The best shots of the cave can be found in the standout jobs video they’d made two days earlier.  We hung out there and chatted about the strategy for b5 and the future and what I could do for them.  Later that evening we went out to dinner at a French restaurant.  You can see pictures of all of us here.  I had this wonderful view across the table of Aaron, Gary King, and Darcie Vane:

Gary is a developer intern and Darcie is b5’s Office Manager

Some escargo, shrimp(?) pate, oysters, lamb chops, ice wine and creme brulee later, and Chad Randall b5’s Director of Sales and I were chums:

Watch out for the bunny ears!



Then it was back to my hotel room.  I was beat.  It had been a LONG week.

I didn’t get a good picture out my window, but I could lookup and see the CNTower right out my window.  I caught this nice refelection off of the offices in front of my hotel the next morning:


A quick workout, a swim in the pool with the Disney theme for The Little Mermaid playing in the background and a soak in the hot tub and 10 minutes in the sauna later and I left to have some coffee (with about a dozen false fire alarms sirens as background music) with Aaron at a local coffee house.


Then it was off to home:

Back to Cleveland and the same old same old weather…

Of course, after that horrible drive the day before, I forgot to turn off my headlights…  Not that you could tell because the battery had long since died and they were covered in snow anyway…

An emergency jump kit later, and I was on the road.  Soon to be calling 911 because an elderly couple had driven their Cadilac out into the middle of a snow covered area  between where the two major highways Yd off in different directions.  They were staring at each other trying to figure out what to do.  They were helpless, so I called 911 and sent the police to help them.

 I’d just held out the phone and closed it (why do we do that?) and looked up to see a car totally engulfed in flames sitting beside the road.  As I drove by, I couldn’t tell if anyone was inside or not.  Me and the guy behind me stopped and we ran back. to see that someone had openned the passenger door and dove down the steep embankment to the road down below where there was a police car stopped beside a minivan with its sliding door open…  We had to assume they were OK as we daren’t go much closer.

We retreated to his car, stared at the flames and each other, watched as two firetrucks came up, boxed the car in and covered it in foam, and then continued our drive home.

So… There you have it, my b5media interview weekend.  After that it was a nice relaxing week or so till I got a call back from Jeremy.   Yeah… Relaxing…  That’s the ticket…

Feeling good on a Monday

Starting week number three at b5media and things are really starting to click.

I feel like I’ve settled in just a bit and I’m ready to get some real traction.  b5 is really growing and it’s great.  Over the last two weeks I’vehelped add a bunch of new sites to the network and we’ve got a number more coming in.

There’s a new theme that is being rolled out to a bunch of the blogs and I’ve helped with that, but due to the way it was implemented, we had some load problems as large common sections of html were being generated over and over again.  It was causing WAY more CPU usage than it needed to.

So, our excellent Linux guy Sean pointed me to a PECL module I’d not used before: memcached.

To quote http://en.wikipedia.org/wiki/Memcached:



From Wikipedia, the free encyclopedia

memcached is a general-purpose distributed memory caching system that was originally developed by Danga Interactive for LiveJournal, but is now used by many other sites. It is often used to speed up dynamic database-driven websites by caching data and objects in memory to reduce the amount the database needs to be read. Memcached is open source and released under a BSD license. It uses libevent.

Memcached lacks authentication and security features, meaning it should only be used on servers with a firewall set up appropriately. By default, memcached uses the port 11211.

Memcached’s APIs provide a giant hash table distributed across multiple machines. When the table is full, subsequent inserts cause older data to be purged in LRU order. Applications using memcached typically layer memcached requests and additions into code before falling back on a slower backing store, such as a database.

The system is used by several very large sites. Some well-known websites that use memcached are:[1]

It’s worked really well so far.  A few apache recompiles later and bam!  CPU load goes bye-bye.  With the initial partial rollout on a single channel we’ve tremendously reduced the load on the servers making 80 cache pulls per second instead of doing all of the db lookups and xml code generation.

I’m convinced!

I’m going to do some further implementation this morning we should be sitting sweet by EOD.

I’m also feeling good because I got the whole family up and did a morning workout in the new execise room I’ve setup in the garage.  I’ve also got Akaza hits nice and loud…

I’ve also got to send an email out to my Google Summer of Code student and we’ll get rolling on that this morning.  I’m looking forward to a good week.

Oh! and my pictures will be transfered by the end of the day so I can tell you all all about my toronto trip as I said I would two weeks ago…

Cheers all!