Author Archive

Introducing Technically Media

Posted on: 3 Comments

Move in day at the Technically Media offices.

Last week, Brian Kirk, Chris Wink and I took the latest step in a process that began when I left my day job over six months ago: we formally founded Technically Media.

We have spent month of December “growing up” by taking our business from a side-project to a legitimate business. This means we did the more boring business stuff like officially incorporating and signing up a payroll services company. We’ve also been up to more exciting stuff like securing office space steps from City Hall in Center City, Philadelphia.

Additionally, Chris was able to come on full time giving Technically Media a staff of 2.5.

The next six months

Now that we’re in 2011, we’re hard at work on a small handful of journalism-related projects:

  • Technically MediaTechnically Media’s slogan is “We build audiences” and we mean it. Our goal is to build interested editorial products for institutions. We just wrapped up the main phase of our project for the National Constitution Center along with our friends at Happy Cog. We hope to help other institutions in a similar way and we think consulting on “editorial strategy” will be a large source of revenue of independent news outlets in the future. We also are strong believers in adding great content to the news conversation. (Remember #4 from this list?)
  • Technically PhillyOur main editorial product, we will continue to publish Technically Philly and cover the city’s technology community. Especially with the help of…
  • Open Data coverage – We have received a grant from the William Penn Foundation to cover Philadelphia’s efforts to release data to the public.
  • J-Lab collaboration grant – We have received a grant from J-Lab to map out the impact of broadband in Philadelphia, along with our buds PlanPhilly.
  • Philly Tech Week – A week-long celebration of technology and innovation in Philadelphia hosted by Technically Philly during the last week in April.
  • BCNI Philly – The third installment of BarCamp NewsInnovation (and one of the final events of Philly Tech Week) looks to be the best yet. We have our first shared speaker and after being open for less than a week, the guest list looks wonderful.

I’m very excited for the year ahead. Both for the company and for all of the exciting things happening around Philly.

Content partnerships do not work

I don’t live in DC, but I’ve been following the dustup about Jim Brady’s departure from TBD.com with interest. The site’s policy of incorporating the local blogosphere interested me as there are constant murmurs of people trying to accomplish a similar goal here in Philly.

The recent news out of TBD mostly caught my eye because, in Technically Philly’s experience, it is often difficult and time consuming to forge partnerships with mainstream media. Of the handful of content sharing agreements we’ve sought out, none exist today. In some cases it was the choice of the partner, other times it was our call.

It appears that TBD is having a similar experience. The company has ceased selling ads for its partners and Brady confessed that the content partnerships were one of the reasons given for his departure:

The new venture needed to slot alongside the existing Channel 7 part of the organisation and it was the relationship between the new web savvy project and the legacy business which proved to be the most difficult thing for Brady to tackle. (as told to the Guardian)

If Allbritton can’t figure it out, what chance do the rest of us have? It’s starting to become clear that content partnerships sound great at conference panels and editorial meetings, but they are rarely executed with any success.

Why? Big sites and small sites simply don’t need one another to survive. For a few reasons:

Pageviews vs Engagement – Most niche sites like the idea and prestige of being published a more established player, but the partnership often does little to help keep the small site sustainable. In Technically Philly’s case, we like seeing traffic numbers grow but we know that a small but dedicated fan base is what keeps us afloat. The drive-by reader may make our Google Analytics spike, but it doesn’t help fill seats when we host a paid event. Conversely, larger sites need traffic to sell more CPM-based advertising.

It isn’t worth it for mainstream media – For sites like TBD.com, it isnt worth the time to sell ads for the little guys. Nor is it worth negotiating individual content agreements. It’s true that a well-executed content partnership can help the big guys fill coverage holes, but no smaller site will give up content without links, ad revenue or similar incentives that just aren’t worth the time it takes to manage.

It isn’t worth it for the little guys – Small news sites are like any other small business: every month is a fight for survival. Small sites are often undermanned and every man hour is valuable. At Technically Philly, we once wasted countless hours negotiating with a larger brand because they constantly thought our stuff was “too insidery.” Of course it is, that’s how we build our audience. We found ourselves rewriting posts and negotiating about what would be relevant to the big site’s audience. While it felt good to be published on the larger site, it wasn’t worth the constant back and forth.

The only content partnerships that seem to work are the ones with nonprofit money attached, like what J-Lab has been doing with newspapers around the country. Without the incentive from J-Lab, I’d bet that most of these agreements would crumble.

I believe that some smart folks will eventually figure out how to make content partnerships work between small and large brands, and Technically Philly will continue to try and work with folks to try new ways of sharing content. Seriously, get in touch.

WordPress custom taxonomies = hyperlocal revenue

Posted on: 2 Comments

Back in May I had the pleasure of interviewing Andy Brett, creator of TechCrunch’s Crunchbase. If you’re unfamiliar Crunchbase it is TechCrunch’s directory of people, companies and organizations related to the tech industry. It’s maintained by the TechCrunch staff, though anyone can edit. As a result, the Crunchbase has become a valuable resource when researching a technology company.

After interviewing Brett, I thought “Why can’t Technically Philly pull this off?” While we don’t have the luxury of a Ruby programmer, we were able to pull together something similar for TP using the newly created custom taxonomy feature in WordPress. And better yet, we think it can help drive additional revenue.

Tags vs Taxonomy

If you use WordPress or any other CMS you probably have the option to “tag” stories. Different sites handle this in different ways. At Technically Philly we began with a lose tagging policy to tag all proper nouns. People, companies and places made up the majority of these tags. However, there was a problem: all of these tags were lumped together. WordPress had no way of distinguishing the name of a city from a company name. So our tag pages sucked:

A sample tag page. Click to enlarge.

A sample tag page. Click to go the actual page.

The tag page was nothing but a glorified search. It offered no context, no information. Is this a company? A person? How can I contact this person? If I entered this page via search, how do I know where I am? The user was not rewarded in anyway for clicking on the tag page.

After messing around with custom taxonomies we were able to create CrunchBase-like pages like the one below:

An example of a "people" page. Click to visit.

On the new tag page we see that Bill Green has been categorized a person. We see his picture, a brief description, his contact info and bit about his work history. We also see a timeline of TP coverage. Now if we link to this page in a story, the reader can instantly catch up on who Bill Green is and why he is important to the technology community in Philadelphia.

Here is step-by-step how we did it. I’ll warn you, I don’t know a lick of Ruby on Rails and I’m barely serviceable with PHP. But I know WordPress, HTML and CSS like I know the starting lineup of the Phillies. A true programmer would probably do this in a much more streamlined way. Ready?

1. Create your taxonomies.

There’s a few ways you can do this. If you’re familiar with WordPress, I recommend opening your functions.php file and enter in the following (replace “people” with your taxonomy name):

// Custom Taxonomies

add_action( 'init', 'create_my_taxonomies', 0 );

function create_my_taxonomies() {
	register_taxonomy( 'people', 'post', array( 'hierarchical' => false, 'label' => 'People', 'query_var' => true, 'rewrite' => true ) );
}

If this scares you, use the Simple Taxonomies plugin to get the job done. Don’t mix both techniques or you could have some duplicates.

2. Install some plugins

Whether you’re savvy enough to hardcode your taxonomies or not, I still recommend the Simple Taxonomies plugin thanks to the “yoast_term_title()” function it offers. This function returns the slug of the person, company or place name of the page we’re on. So on Bill Green’s page it returns “bill-green”.

Secondly, install Rich Text Tags. This allows your taxonomy description to be edited using a WYSIWYG editor.

3. Build your tag page

One of the oft-underrated features of WordPress is its templating system. With taxonomies (and tags and categories for that matter) we can create specific template pages by following the correct naming rules .

For example we have three template files:

  • taxonomy-people.php
  • taxonomy-companies.php
  • taxonomy-places.php

So Bill Green’s template is really the taxonomy-people.php page. Also, if you’re really ambitious you can create specific pages for each taxonomy entry. So we could give Bill his own page by creating a file named taxonomy-people-bill-green.php. However, you can likely stick to the bulleted list above and be covered.

As you build your taxonomy pages, here’s some code snippets to help you out. You’ll need some HTML and CSS chops to make your taxonomy page look pretty.

Aside from the image replacement snippet, these were culled from dozens of help threads, blog posts and other sources that I foolishly did not keep track of. If you wrote these snippets, please let me know.

Display a list of popular terms:

<?php
//list terms in a given taxonomy using wp_list_categories (also useful as a widget if using a PHP Code plugin)

$taxonomy     = 'companies';
$orderby      = 'name';
$show_count   = 1;      // 1 for yes, 0 for no
$pad_counts   = 1;      // 1 for yes, 0 for no
$hierarchical = 1;      // 1 for yes, 0 for no
$title        = '';
$number = 5;
$orderby = 'count';
$order   = 'DESC';

$args = array(
  'taxonomy'     => $taxonomy,
  'orderby'      => $orderby,
  'show_count'   => $show_count,
  'pad_counts'   => $pad_counts,
  'hierarchical' => $hierarchical,
  'title_li'     => $title,
  'number'       => $number,
  'orderby'      => $orderby,
  'order'        => $order,

);
?>

<ul>
<?php wp_list_categories( $args ); ?>
</ul></pre>

Display a list of random terms (great for encouraging browsing]

<?php
//display random sorted list of terms in a given taxonomy
$counter = 0;
$max = 5; //number of categories to display
$taxonomy = 'category';
$terms = get_terms($taxonomy);
shuffle ($terms);
//echo 'shuffled';
if ($terms) {
	foreach($terms as $term) {
		$counter++;
		if ($counter <= $max) {
	  	echo '<p><a href="' . get_category_link( $term->term_id ) . '" title="' . sprintf( __( "View all posts in %s" ), $term->name ) . '" ' . '>' . $term->name.'</a></p> ';
	 	}
	}
}
?>

Show directory image
We also rely heavily on this piece of code that searches a given folder for an image that shares the name of the term. In this case it is the “directoryimages” folder. This way, we can bulk upload images.

<img src="<?php bloginfo('template_url'); ?>/directoryimages/<?php echo get_yoast_term_title();?>.jpg" 	onerror="ImgError(this);">

But what if you haven’t uploaded an image? You’ll see we’ve inserted a bit of javascript (ImgError) to execute if the image is not there.

For the above line of code to fully work you’ll need to insert a bit of Javascript in your header.

<!-- Fix broken images if driectory page -->
<?php if (is_tax() ) { ?>
<script type="text/javascript">
function ImgError(source){
    source.src = "<?php bloginfo('template_url'); ?>/directoryimages/blank_headshot.png";
    source.onerror = "";
    return true;
}
</script>

With the above two snippets, WordPress will look for an image in your “directoryimages” folder. If it doesn’t find one it will insert “blank_headshot.png.” Of course you’ll have to create the “directoryimages” folder yourself. You’ll also have to upload your own replacement image.

To echo a term’s description use

<?php echo term_description( '', get_query_var( 'people' ) ); ?>

Return the name of the term to use as a header

<!-- This is the name of the person-company-etc -->
	<?php
if(isset($wp_taxonomies)) {
	// This is getting the friendly version of a taxonomy
	// - not the hyphenated get_yoast_term_title()
	$term = get_term_by( 'slug', get_query_var( 'term' ), get_query_var( 'taxonomy' ) );
	if($term) {
		echo '<h1 style="font-size: 40px;">'.$term->name.'</h1>';
	}
	// If you have a taxonomy description, let'er rip!

}
?>
<!-- end of name -->

4. Go retag all of your old posts

And here is the fun part. At TP, there are three of us so we split up our 1,000 posts and retagged each one by copy and pasting tags into the appropriate taxonomy field.

5. Redirect all of your tags

If you regularly produce content, your tag pages likely ranked well in searches. Our tag pages would sometimes outrank a company’s official web pages. However when we switched to custom taxonomies, the permalink changed. So technicallyphilly.com/tag/comcast became technicallyphilly.com/company/comcast.

Therefore we had to redirect hundred of tag pages using a 301 redirect. This isn’t as daunting as it seems. Ready?

1. Make a page that includes the following code (replace “people” with your taxonomy):

<?php wp_list_categories('taxonomy=people&style=none'); ?>

2. View the source. Highlight the entire list and copy and paste it into a text document. It should be a series of links that look like:

<div id="_mcePaste"><li><a href="http://technicallyphilly.com/people/alex-alsup" title="View all posts filed under Alex Alsup">Alex Alsup</a></li></div>
<div id="_mcePaste"><li><a href="http://technicallyphilly.com/people/alex-cohen" title="View all posts filed under Alex Cohen">Alex Cohen</a></li></div>
<div>etc...</div>

3. Find and replace “<a href=”" and make it a space

4. Find and replace “” title=”" and make it a TAB. (If you’re having trouble making a tab, open up a new text doc. Hit tab. Copy the space it makes and past it into the replace box.)

5. Copy entire text document and past in excel. Make the a and b columns REAL big and you’ll see on left you have url on right you have junk.

6. Delete the second column, the junk one.

7. Duplicate the first column into the second, you should have two lists of links.

8. Find and replace ONLY THE FIRST COLUMN. Find: “http://yourdomain.com/people/” Replace: “redirect 301  /tag/”.

9. Now copy columns a and b into a blank textpad document. You want the text to look like:
“redirect 301  /tag/abby-fretz http://technicallyphilly.com/people/abby-fretz” The number of spaces isn’t important, though keeping it clean will help manage future redirects.

10. Copy the contents of that text document into your .htaccess file.

11. Test by visiting one of your old tag pages. It should redirect to the new taxonomy page.

12. Repeat for each of your taxonomies. We had to do this process for “people” and “companies.”

Thanks to Dan Levy for helping me figure that one out.

6. Profit

This is the stage TP is in now, so no sagely advice from me. However we envision these pages being one of the benefits of a membership package.

We’re thinking about a company page with contact info, company description, who works there and other information. When packaged with our revamped jobs board, a display advertisement and event discounts we think it will be worth a few hundred dollars of a company’s marketing budget.

However, we’re still exploring options and will likely announce a plan sometime in January.

7. Share

Next up ,we’d like all of the hyperlocal sites in Philly to share the same directory page. Imagine Councilman Bill Green’s page pulling in information from local political sites and other source to deliver a complete (and independently reported) picture of a local personality.

If we make the directory page editable by anyone we could have a highly relevant but local Wikipedia that can help add context to hyperlocal news sites.

Hm. Sounds like a Knight News Challenge grant

At Block by Block: The dirty secret of journalism startups

Posted on: 2 Comments

A few weeks ago, I was one of the hundred or so journalists lucky enough to be invited to the Block by Block conference, a gathering of what are now being called “community journalists” in Chicago. The event, organized by Michelle McLellan and Jay Rosen was – in my mind – the most significant gathering of entrepreneurial journalists since Jeff Jarvis’ New Business Models for News on November 2009.

Since that CUNY meeting, I feel that the community has made significant progress. Gone are the debates about whether a journalist can sell advertising (they should) or whether a reporter can become a cheerleader for their community (they can). People were less concerned about ethics and more concerned about best practices.

There are plenty of more comprehensive write-ups, but after stewing for two weeks, it seems as the debate on how to make money is over. Slowly but surely people are making a living off of journalism. However, I’m now worried about the toll it is taking on the journalist.  As of now, community journalism can not scale, resulting in low salaries and overworked journalists.

In talking with an owner of one news startup, the owner said he works 50-60 hours a week to generate roughly $100,000 in revenue a year which he has to split with another employee. Not profit. Revenue.

Most of the attendees were obsessed about how to sell advertising to local business, but not many people mentioned that most journalists are chasing down $100 ads from local business to try and cobble together a decent income. The advertising space is an uphill battle as journalists not only have to learn the sales game, but have to educate advertisers about the web, design the ad, place the ad and then chase down the payment. Oh, and they also have to write.

I’m (very, very, very, very) glad to see independent journalists focused on revenue, but now it’s time to get creative. There were probably less than five people at Block by Block that could afford to work a sub-50 hour work week and make a middle class living.

We should no longer be satisfied with sustainability, we should push for scalability.We should push for the consolidation of sales across various local news sites. We should push for using our knowledge of the web and our community to land a few big wins as opposed to the pizza shop down the street. But mostly, we should push to build a better career path for journalists where we can still report the hell out of our communities without 50 hour work weeks.

I don’t have the answer. But judging by how far we’ve all come in just a year, we’ll get there.

On Philly’s “blog tax”

By now you’ve probably heard the reports that the City of Philadelphia is charging bloggers $300 to operate a website.

The story has been republished in the Washington Post, Mashable and other outlets after first being reported by my old employer, the Philadelphia Citypaper (though local message board Philadelphia Speaks wrote about this before anyone else). Many of these sources are asserting that the city is targeting bloggers with a new tax.

This is untrue. The city created no new tax and any publication saying otherwise is doing some terrible reporting and any outrage about the anti-blogging attitude of the city is a knee-jerk reaction to some poor research.

Technically Philly, in fact, has paid $300 to the City of Philadelphia. However, this was not for any “blog tax,” it was for the business privilege license, a one-time $300 fee required of all businesses in the city. The purpose of the Citypaper story was to point out that the city was considering blogs claimed in tax returns as “businesses” that need to pay for the license.

It’s certainly a horrible waste of resources to pursue blogs with revenue in the hundreds when some companies and individuals owe the city millions in back taxes, forcing the city to do things like offer a tax amnesty to the dead beats.

To be clear: there is no “blog tax” in Philadelphia. None.

Admittedly, the city doesn’t help its public perception when city council threatens to sue Twitter and Facebook over the flash mobs or when the city’s Twitter account vomits Facebook links and often posts in all caps.

However, while these slip-ups over social media may be easy fodder for the Internet savvy to make fun of, there is a much larger issue revealing itself here: the city’s tax structure which can be crippling to entrepreneurial activity and innovation.

As I interview local entrepreneurs every day for Technically Philly, I see a common thread: any business located in the city boundaries of Philadelphia is here despite the city government and not because of it (see the 15 steps one businesswoman had to take). The ridiculous city business privilege tax (which is different than the license) and the wage tax which far outpaces other cities of comparable size are just a few examples of the hurdles many businesses face by choosing to do work in Philadelphia.

When applied to bloggers, the economic impact of the city’s awful tax policy is small while its impact on the web is inflated due the “victims” of the tax. However, when applied to small and mid-sized businesses the impact is, well, cities like King of Prussia and Cherry Hill that are located just outside of the city’s borders. These cities offer a more favorable environment for businesses looking to flee taxes such as the business privilege tax and other fees. The only reason Comcast is headquartered here is because the city created tax breaks just for them.

While the outrage over asking a hobbyist to pay $300 for a blog is understandable, it pales in comparison to the scores of companies that chose to set up shop outside city limits to avoid paying city taxes. While it won’t get headlines on Mashable, those lamenting about the blogger tax ought to direct their energy to urge the city to reconsider the taxes that keep companies, and jobs, outside city limits.

And those looking to do cheap, drive-by digs at Philadelphia should know that they look foolish and out of touch. Don’t believe me? Come visit.