Menu

Colin Devroe

Reverse Engineer. Blogger.

No-pressure blogging

Manton Reece:

I love that blogs can scale from the trivial to the important. The microblog post about what you had for breakfast. The half-baked rant about something you’re passionate about. And sometimes, the rare essay that really hits the mark and makes people think.

Publishing most of my “tweets” here first has led to some frivolous posts. But, I wouldn’t have it any other way. Takes the pressure off of me to have every post be significant before hitting publish.

Scranton’s first Homebrew Website Club

Next Wednesday I’ll be hosting the first Scranton-based Homebrew Website Club at Condron Media‘s headquarters on Penn Avenue. There are other locations HWC will be happening on that day too. If you have your own site and I you care to work on it in anyway at all please do stop by.

Homebrew Website Club is not a typical meetup, like say a WordPress meetup, in that you stop by to learn a particular topic (although I have no doubt you will learn if you attend one). It is more a reoccurring time that is set aside to allow you to work on your personal web site. Perhaps you’ve been meaning to finish up a blog post that has been in draft for weeks, or you need to fix a theme issue, or you want to do something more complex – whatever it is, HWC is your opportunity to do that while sitting next to other people that are trying to do the same.

I’ll be using the this time, each meeting, to fit more Indieweb building blocks into my personal site. I’ve recently added Backfeed, POSSE, Webmention, and others. And I plan on continuing to tweak them to get them just the way I’d prefer. Also, I plan on pushing my code and work back out into the world through this blog, my Github account, and #indieweb on IRC.

So, if this is something you’re into. Drop by.

How I create my weekly link posts

With my What I saw this week series of posts hitting #29 this week I thought I’d take a second to share how these posts do on my site, how I create them, how I choose what I will link to outside of these posts.

These posts are some of my most popular week-to-week. My active subscriber numbers aren’t that high – I’d say less than 1,000 people subscribe to my site in some way or another – but the traffic to these posts are as high as any other popular post on my site. I believe there are two reasons for this; consistency and because I share them on Facebook. I try to share these posts every single Friday at 10:30am and I think that helps a lot. Facebook is starting to push a lot more traffic to my blog than Twitter. It used to be the other way around. For years. But I honestly believe Twitter is losing ground on this front (more on this at a later date when my thoughts have had more time to simmer).

How do I create them? As I mentioned in a previous post, I keep a note open to throw URLs in during the week. On average I’d say I put 2 to 3 URLs in that note before the week is out. Mainly because I haven’t stored them in some other way. On Thursday or Friday I take the URLs from this note, and also look through my Twitter favorites, my YouTube history (if you’re logged into YouTube on all devices it stores a history of all videos you’ve watched), my Unmark archive, and lastly I comb through Chrome’s browser history (I keep my history for years). This takes me about 25 minutes a week.

Then comes the choice about what to include in these posts and what to link to separately. You’ll probably notice that the bulk of my publishing comes on Fridays and the weekends lately. That is because I’ve gotten out of the habit of scheduling my posts for the week on Sundays. I think I’ll get back to this soon. But also it is because many of my posts are simply links to other things I find interesting and so at the end of each week I do a dump onto my blog.

I choose what to link to separately mainly based on category or thread. My interests are myriad but overall I like to cover specific trends here on my blog such as the indie web, blogging, photography, social networking, hiking, flying my drone, kayaking, etc. If a link falls into one of these categories, or is a continuation of a discussion I started here on my blog, I generally separate those posts out into their own.

What am I building here?

If you’re reading this you likely do something every single day that you haven’t put a name to. You publish. And, it is very likely, that you publish different things in several different places with just a little overlap.

You might publish:

  • quippy remarks about a live event on Twitter
  • filtered photos, that presumably look a bit better than you think you could do on your own, on Instagram
  • slightly deeper more personal things on Facebook
  • your career updates on LinkedIn
  • pieces of your day through short, ephemeral videos on Snapchat or Instagram Stories
  • and maybe, just maybe, you publish pieces of audio on Anchor or video on YouTube.

That’s great. And it is well and good that you are sharing so much of yourself with the world. Hopefully you’re sharing some insight, perhaps something entertaining, or something creative. And hopefully you’re also getting some of those things in return. Otherwise, you likely wouldn’t continue doing it.

What I’m slowly building here on cdevroe.com is my own publishing platform for all media with no restrictions and very little threat of disappearing.

Currently I can publish small status updates, images, audio bits, and blog posts. And I’m doing that every single day. If Twitter goes out of business in the next year or if they are acquired by a company that changes it for the worse – I’ll still have my site to publish on. If Anchor doesn’t make it, I’ll still have my conversations with Danny or even some onions sizzling in a cast iron pan (because, why not?).

The advantages to owning my own platform go beyond its longevity. I’m also not limited in feature set. My audio bits are longer than 2 minutes. My status updates can be longer than 140 characters.  My images can be any size and dimension. And if I need something else I can make it.

cdevroe.com is mine. And I’m really excited to continue bolting on new features and expanding my own personal capability to publish anything I want and have it outlast me.

Thirty days of images

Each morning, at around 9am Eastern, a new image is published to my blog. I schedule these posts each weekend (I even built a WordPress plugin to help me) and they publish automatically without any other interference from me.

I’ve just hit 30 consecutive days of this schedule and I’d like to keep it up in perpetuity.

The image posts are the least popular on my blog. They are not tweeted or shared on Facebook or Instagram. They are silently published with no fanfare. I think of these posts as a slowly building collection of my favorite images. A way to showcase images, not as a library, but as a selection.

Very, very light editing happens from shot to post. I shoot with my iPhone (currently an iPhone SE), a Canon DSLR, or a GoPro camera. Hopefully soon I’ll be adding a new UAV camera to the mix. I do not make reference to the camera used for each shot because I believe that sort of information is irrelevant. The image is what is important, not how it was captured. In general I prefer my images to be slightly bumped in color so I generally crop, straighten, bump a few values, and prepare for publishing.

To prepare for publishing I have two albums in Photos for macOS. “To Publish” is an album I drag images into that I would like to publish some day. I generally drag 7 to 10 new photos into this album each week so that I always have enough to choose from when I’m scheduling these posts. “Published” is an album full of every image I’ve published. This way I have a fairly simple way of remembering whether or not I’ve already published a particular photo or not. Once the image is edited I drag the image to my Desktop, resize to 1000 pixels wide, and toss it into a new post in WordPress, tag it, and schedule it to be published.

It is a simple enough workflow that it allows me to get an entire week’s worth of images scheduled within about an hour or less each week. I hope if you’re subscribed to this blog you enjoy seeing them.

These posts have inspired both Danny Nicolas and Kyle Slattery to begin doing similar posts on their site. I’m extremely happy and humbled to see that and I’m glad to subscribe to their blogs to see what they share. Who knows? Maybe in another 30 days two or three more people will join.

You’ve been granted h-entry

This morning I took a few minutes to add microformats to the HTML of my blog. I had done so in the past when my site was using a completely different theme and hadn’t taken the time to add them back in. Shame on me. I should have done it much sooner since it took less than 20 minutes and now I think my blog will be a little easier to read for things like webmentions.

This post isn’t to be used as a guide in adding microformats to your WordPress theme. I’m simply writing this down as a way to walk myself through my own task of doing so. But if you read it and feel inspired to add microformats to your own site then I’ve done my job.

In short, the following classes must be added to your index pages (index.php, archive.php, search.php, etc.) and your single post page (single.php) to support the h-entry microformat.

  • h-entry
    • p-name
    • p-author
    • u-url
    • p-summary or e-content
    • dt-published

There are other classes in the spec, and I recommend supporting which ever ones make sense for your site, but if you only had these class names added your HTML, it would be much easier to parse for the little robots that are running around on the web trying to eat your code.

Many WordPress templates wrap posts in an article tag and add classes to it using post_class function. This function adds numerous classes to help you specify things like post-formats, post-types, etc. Supporting h-entry couldn’t be easier since the post_class function allows you to add any classes you’d like on your own. Like this:

<article id="post-<?php the_ID(); ?>" <?php post_class( 'h-entry' ); ?>>

Next, you’ll want to add the p-name and u-url classes to the link that goes to your blog post from the index. That should be easy enough. Mine looks like this but your’s will likely look a bit different. In my case the A tag’s contents contains the post’s name, and the HREF of the A tag is the post’s URL. So I can add both classes to the one element.

<h3><a class="p-name u-url" title="Permalink to <?php the_title_attribute(); ?>" href="<?php the_permalink(); ?>"><?php the_title(); ?></a></h3>

We’re almost there. The next class I needed was dt-published – or the datetime that the post was published. This one may prove to be a bit harder to wrap your head around but here is how I did it.

<time class="dt-published" datetime="<?php echo get_the_date('Y-m-d H:i:s'); ?>"><?php echo get_the_date('F jS, Y'); ?></time>

I used HTML’s time element so that I could take advantage of the datetime attribute. Exactly as the microformats wiki suggests. get_the_date in WordPress accepts PHP’s date formatting arguments (all those weird letters up there) so it didn’t take too long to figure out how to format the datetime correctly. Essentially, I’m formatting the date for machines in the attribute and humans in the contents.

Finally the contents of the post must be marked up. On my indexes I only show an excerpt of the post and on the single page’s I show the entire entry’s contents. So I use p-summary on index and the e-content class on the single post page. This is how my index page’s markup looks.

echo '<div class="p-summary">';
the_excerpt();
echo '</div>';

For my particular use I also needed to mark up statuses or what might be called “notes” on the indieweb wiki. In retrospect “notes” is a far better term since what I post as statuses are more often than not more a note than a status. But, oh well? I think I’m stuck with it for now. For statuses I simply mark up the entire content as both p-name and e-content as suggested by the microformats wiki.

Here are a few examples of each post format, in HTML, that I use on my site.

Status:

<article id="post-3964" class="h-entry post-3964 post type-post status-publish format-status hentry category-uncategorized post_format-post-format-status">                    
 <div class="p-name e-content">
  <p>Scheduled my image posts for the week. I wanted a change so I chose mostly older photos from different locations.</p>
 </div>
 <time class="dt-published" datetime="2016-10-09 08:55:20"><a class="status-date" href="http://cdevroe.com/2016/10/09/3964/" title="Permalink to this status update">8:55am on October 9th, 2016</a></time>
</article>

Image:

<article id="post-3894" class="h-entry post-3894 post type-post status-publish format-image hentry category-uncategorized tag-airplane tag-flying tag-rc tag-scott-township post_format-post-format-image">
 <div class="p-name e-content">
  <p><img class="alignnone size-full wp-image-3895" src="http://cdevroe.com/wp-content/uploads/2016/10/IMG_4998.jpg" alt="img_4998" srcset="http://cdevroe.com/wp-content/uploads/2016/10/IMG_4998.jpg 1000w, http://cdevroe.com/wp-content/uploads/2016/10/IMG_4998-300x200.jpg 300w, http://cdevroe.com/wp-content/uploads/2016/10/IMG_4998-768x512.jpg 768w" sizes="(max-width: 1000px) 100vw, 1000px" /></p>
  <p>Coming in for a landing, Scott Township, PA &#8211; September 2016</p>
 </div>
 <p class="text-uppercase text-muted"><a class="u-url" title="Permalink to Coming in for a landing, Scott Township, PA &#8211; September 2016" href="http://cdevroe.com/2016/10/09/coming-in-for-a-landing-scott-township-pa-september-2016/">October 9th, 2016</a></p>
</article>

Post on Index:

<article id="post-3945" class="h-entry post-3945 post type-post status-publish format-standard hentry category-uncategorized tag-git tag-github tag-subscriptions tag-youtube">
 <h3><a class="p-name u-url" title="Permalink to Tracking my YouTube subscriptions over time" href="http://cdevroe.com/2016/10/08/tracking-my-youtube-subscriptions-over-time/">Tracking my YouTube subscriptions over time</a></h3>
 <p class="text-uppercase text-muted"><time class="dt-published" datetime="2016-10-08 13:02:22">October 8th, 2016</time></p>
 <div class="p-summary">
  <p>As I wrote late last month, I&#8217;m using YouTube a lot, and so I&#8217;d like to track my subscriptions over time. Git is the best tool for this sort of thing so I quickly jotted my YouTube subscriptions down and put them on Github. To retrieve your own subscriptions you can use YouTube&#8217;s Subscription Manager. [&hellip;]</p>
 </div>
 <p class="text-primary"><a title="Permalink to Tracking my YouTube subscriptions over time" href="http://cdevroe.com/2016/10/08/tracking-my-youtube-subscriptions-over-time/">Read more...</a></p>
</article>

I hope to improve this markup a bit over the coming weeks to support more microformats. But for now I think this will help to make my site’s HTML a bit more readable to our little bot friends.

 

A date picker to schedule posts in WordPress

On Sunday mornings I make some coffee, sit down at my computer, and choose 7 images to publish to my blog throughout the week. After I’ve chosen and edited the images I schedule them in WordPress to be published each morning at around 9:00am. I can then go about my week knowing that each day there will be a new image automatically published to my site.

There was a problem though. I think in days not dates. Like, “what image should I post on Wednesday?” instead of “what image should I post on the 12th?”. So when I used WordPress’ default date selector for scheduling the post I found myself wishing that I could see what day each date was.

So I searched the plugin directory but I didn’t find anything (more on this in a second). I was surprised. So, I quickly cobbled together a plugin of my own which I’ve open sourced on Github this morning. And, while I’m not finished with it, it works. I can see which day each date of the week is and that helps me. So now my Sunday morning’s will be a bit happier.

It turns out there is a plugin for this, which Sal Ferrarello linked me to in the BurbsWP Slack, called Publish Date DatePicker. I don’t think I found it because I searched terms like “scheduled posts” and “date picker” with a space in the name. Oh well. Now I have my own and I plan on improving upon it slightly before I roll it together as a release.

Update: To make sure you have the latest version of this plugin visit the releases page on Github.

Eleven and six and twenty

Thanks to Jeremy for remarking how he forgot his blog’s 15th anniversary (congrats Jeremy!) it reminded me to check and, well, I missed my blog’s anniversary by nearly the same number of days as he did.

On Saturday October 1 this blog, my personal blog on my own domain name but not my first ever personal blog, turned 11 years old. This was the first post.

My blogging journey did not begin with this site. It started about 10 years before that. Prior to owning cdevroe.com – which was a gift from Josue Salazar (Thanks again Josue) – I had personal sites on Tripod (circa 2002), on a domain called colinspage.com (circa 2003 though it began in 1998 or 1999), I blogged on theubergeeks.net (circa 2003) and even had another blog in between that I wrote in ASP myself. My best guess is that I began blogging long before it was called blogging somewhere around 1995 when I was working at a computer store near my parent’s house.

In addition to my own personal online journal at the time we began plugging away on TheHutt.net (circa 1999) – which I helped develop alongside friends Chris Coleman and Chris Kuruts. We used the site to mark the upcoming Star Wars prequels. What a mistake! (The films, not our site.)

Six years ago I started curating The Watercolor Gallery – a site I take great pride in. That site recently had an anniversary as well that I failed to mark. I’ve been working on a brand-new version of the site too.

So I’ve been blogging for somewhere around 20 years. And my personal blog has taken many forms before finally settling here on cdevroe.com. And, as I sit here writing this post with nearly 20 years of writing on the web under my belt I am incredibly excited to continue writing on my blog.

Thanks to Jeremy for both the reminder and the constant inspiration from his blog.

A few updates to my site

Late last week and over the weekend I’ve made a few subtle updates to my site. I saw that this weekend was Indie Web Camp in Brighton and while I can’t travel a few thousand miles to hack on my blog I can sit at my desk and do a bit of hacking.

The main things I updated were randomizing the image shown on the home page, cleaning up the main site navigation, changing the word “photos” to “images” since they were interchangeable throughout the site, and cleaning up a bit of the code. Somehow I had forked my own theme’s code a few month’s back and so the code was a little bit sporadic. I was able to sift through the source and cobble together what must have been a few different nights of hacking and then ditch the rest. Now I’ll be able to make some steady progress on making this site a bit more what I would like.

In addition, I’m rebuilding The Watercolor Gallery in WordPress and adding a few features and will be “relaunching” that site within the next few weeks. I’m really looking forward to doing so as I have a backlog of features, interviews, art spaces and videos to publish.

Three microphones

I began posting to my own site in earnest on March 6th of this year. I wrote:

So, starting tonight that is what I’m going to try again to do with a goal of sticking with it in perpetuity. This doesn’t mean that I won’t be posting to Twitter or Facebook or Instagram, but that everything that I post there will originate here on my site. I may still craft those messages manually (since each network is so nuanced) but like Jeremy and Manton I will have to figure that out as I go too.

More or less this is what has happened over the last three months. It has been fantastic.

I’ve redesigned my site, added a few new post formats (more on that here), and have published a slew of status updates, photos, blog posts, and even a few audio bits — which I hope to do more of. I’ve switched platforms, tweaked my settings to no end, and tried a menagerie of plugins to get the site working as I would like.

I’m far from finished and perhaps I never will be. I feel like personal web sites change as often as people do. I’ve had some sort of online presence since the mid-90s and I’ve been tweaking and adjusting everything ever since.

As I wrote above, I have ended up sharing to each network in different ways. I do not publish here and syndicate everywhere. It isn’t all or nothing for me. It is a mixed bag. I find the nuances between the services too numerous to be able to do so. Others do a far better job. So, I reply to tweets directly on Twitter, I post things to Instagram that I do not post elsewhere (and I’m OK with that, even if it all goes away some day) and I post photos to my site that may or may not end up on Instagram or Twitter or Facebook, and I pick and choose which status updates end up being syndicated as well. It’s a bit of a mess but it is my mess.

But there is one important rule I have… anything that I want to live forever lives here.

I’m beginning to think of these networks as microphones with giant logos on them. Imagine someone giving a speech and there being a microphone for each news network in front of them. My blog is the lectern and the microphones are for Twitter and Facebook. When I want to speak into both microphones I do, when I want to speak into one I do, and when I don’t want to speak to either of them I cover them with my hand. Instagram is at a different lectern altogether because I want it to be. When I want to say something there I walk over to it.

This approach is working for me. I think one of the biggest drawbacks to only publishing on these platforms is that at any moment it can all go up in flames and you’ll have no way to recover your data or your audience (if that is important to you). By publishing the things I want to live on to my site I have control over that. For the stuff I decide to post directly to those networks I do so knowing it can (and likely will) disappear. I have peace-of-mind knowing I have a copy for myself.

I’ve mentioned before that I enjoy the fact that I’m treating Twitter so differently. That I’m sharing things that I typically wouldn’t have (example). And that I’m publishing longer posts as well.

I love my web site!

 

Every morning I take a few moments to work on my site. And each day it edges closer to being just “OK”. But that doesn’t stop me from publishing. Personal sites are always a work-in-progress.

How I converted from Custom Post Types to Post Formats

It wasn’t too ugly. But it wasn’t exactly a cool swim either. I thought I would jot down why and how I moved from using a Custom Post Type for each type of post that I publish here — status, photo, audio, and normal post — to Post Formats.

First, why move to Post Formats from Custom Post Types? For my use, Post Formats make much more sense than creating my own Custom Post Types with their own taxonomies. In November 2011 Matt Mullenweg described Post Formats in this way when releasing WordPress 3.1:

our new Post Formats support which makes it easy for themes to create portable tumblelogs with different styling for different types of posts

I remember my reaction to Post Formats at the time. It did seem like a great way to allow those that liked Tumblr’s simple post format style, that of being able to quickly share an image or quote rather than a full blog post, using WordPress. But in reality, as Post Formats matured over subsequent releases I believe their utility has gone far beyond just that of competing with another platform’s ease of styling as Matt’s original description laid out. I think this bit from the WordPress Codex describes their value better:

The standardization of this list provides both compatibility between numerous themes and an avenue for external blogging tools to access this feature in a consistent fashion.

This is the important bit. Standardization. My Custom Post Type for statuses, while similar to the status Post Format, wasn’t standardized and wouldn’t be compatible if I switched themes, used the WordPress iOS application, or tried to use them with the thousands and thousands of plugins that support Post Formats. So they looked like statuses but they didn’t have the advantage of WordPress’ built-in status format.

If you have a site like mine where I’m attempting to share from my site first then onto the social networks (POSSE), you will likely need the very same Post Formats that I do. And so will everyone else. To standardize these specific formats allows them to become much more powerful than simply styling them in a theme.

This important bit about standardization was the WordPress development team’s exact stated purpose for the feature. In fact, the implementation of Post Formats didn’t even start out as feature. It was simply to be “a standard” to be documented in the Codex. Andrew Nacin just prior to WordPress 3.1’s release wrote:

There was no code. It was simply going to outline a standard: a name for a custom taxonomy, and a standardized set of formats.

I urge you to read the post he wrote at the time. Fascinating look back to just 5 years ago.

So, this is why I ditched my own Custom Post Types. Since I was converting my site from Barley (which used Content Types in a similar way to Custom Post Types) I ended up coming with that overall “baggage” of customizing each type for my need. When, in reality, the core team had already figured out the subtle nuances between the formats that I was going to use and have already standardized their use, their API, and (optionally) their display.

How did I convert all of my posts into blog posts and then change their format?

One of the advantages to using WordPress at all is that there are myriad developers out there attempting to solve the same issues you will likely come across. In this way you’re able to find their solution and either use it outright (and hopefully support them financially or in some other way) or stand on the shoulders of their code and customize it for your needs. So when I decided that I wanted to make this switch the first thing I looked for was a plugin that would help me change my Custom Post Types into blog posts en masse.

John James Jacoby is the lead developer of a plugin called Post Type Switcher. Essentially this plugin makes it very easy to change many Post Types into a blog post in a matter of a few minutes. Once installed and activated you’re able to “bulk edit” all posts listed in your Admin to change their Post Type. Since I only had a few hundred status updates, a few dozen photos, and very few audio bits that I’ve published so far moving these was easy. From there, I bulk edited those posts to change their Post Format to the appropriate ones. It took about a half-an-hour and a few dozen clicks.

Yes, I could have written a quick script to do it. It would be fairly simple to loop through all Custom Post Types and run wp_update_post to switch the post_type. And I thought about that. But why reinvent the wheel? JJJ’s plugin worked beautifully for my needs. However, if I had thousands and thousands of posts to convert, I likely would have avoided the mouse at all costs and written that script.

Once the posts were converted into blog posts and their format adjusted I was able to remove all of the Custom Post Type code that I had written, their associated archive and single files and a bunch of query adjustments too. Switching to Post Formats simplified my theme’s code fairly dramatically.

I have run into a bit of an issue though. And one that I’m still wrestling with.

I wanted a way for viewers of the site to filter the Post Formats separately. So if they wanted to read my latest blog posts or sort through my statuses they could do so. WordPress has a way to do this out-of-the-box (almost). You can filter blog post types by using /type/post-format-name-here*. However, the one Post Format that cannot be filtered, as far as I’ve been able to tell, are normal blog posts (which WordPress calls “Standard”). For some reason, it does not mark these posts with a format but rather leaves those null. So /type/standard does not return your posts it simply results in a 404.

Others have discovered this same caveat to Post Formats and have written about it. Here is a Stack Overflow thread from 2012, as an example. The solution suggested there was similarly suggested in April 2011 (before 3.1 was released) by “levin” on their blog. At the end of their post they wrote: “I hope there have a better solution in future WordPress release”.

As far as I can tell, there hasn’t been. I’ve tried several different URL hacks and rewrites and so forth to see if somehow WordPress could filter out just the Standard Post Format out-of-the-box and I haven’t been able to force it to do so. I plan on digging into this a bit more but for now I’ve used a solution similar to levin’s from 2011 to filter my posts. It is a crufty URL for now too. Because hopefully the ugliness of the URL will spur me on and motivate me to create a more elegant solution. When I do I’ll share it on my blog.

*I think having /type in this URL is a bit confusing at this isn’t a custom post type. It should likely be /format?

 

How I create a combo feed using WordPress

When my site was on Barley I had something we called a “combo feed”. A combo feed combined all content types (what we called custom post types) into my main RSS feed. This allowed someone to subscribe to a single feed and get all of the blog posts, statuses, photos, and audio bits that I publish. Optionally, they could choose to subscribe to each of them individually, effectively allowing them to opt-out of the ones they’d rather not see. A good example of why someone may do this would be if they followed me on Twitter they may not want to subscribe to my status updates.

I wanted to have this functionality on WordPress too and I thought I’d share how I did it for anyone else that may find it useful. If you see anything I’m doing wrong please let me know.

When I register my custom post types I enable the post type archive. This turns on the /feed URL for each of them. See my statuses feed as an example. According to the Codex page for register_post_type I could also turn on rewrite for ‘feed’. But since I turn on the archive this is done automatically. Here is a slightly modified version of the code I use:

add_action( 'init','custom_post_type_register' );
function custom_post_type_register() {

    $args = array(
        'label' => __( 'Audio' ),
        'singular_label' => __( 'Audio Item' ),
        'public' => true,
        'show_ui' => true,
        'capability_type' => 'post',
        'hierarchical' => true,
        'has_archive' => true,
        'supports' => array( 'title', 'editor', 'thumbnail', 'excerpt', 'custom-fields', 'revisions', 'page-attributes' ),
        'rewrite' => array( 'slug' => 'audio', 'with_front' => false ),
       );

    register_post_type( 'audio' , $args );
}

Now that I know there will be feeds for each custom post type, it’d be nice to list them in the HEAD of the HTML document so that they are discoverable by feed readers. For example, Feedly (the feed reader I use) lists all of the feeds available to subscribe to. I’d like that list to include all of my feeds and not just my combo feed. WordPress has a function to “add theme support” for several things and one of them is adding feed links to your site automatically. Which is nice since I may add or subtract feeds over time and this way all of the currently available feeds will be discoverable without me changing anything. Here is the documentation for this function, but here is what it looks like in my functions.php file:

add_theme_support( 'automatic-feed-links' );

The final step is to combine all of the custom post types that I want into my main feed. This is done by modifying the request for the main feed to include the other post types. WordPress calls this “filtering”. When a request for my feed comes from a feed reader I “filter” the request to include the default blog posts and the custom post types that I want.

// Combine Custom Post Types into main feed
function combine_cpt_into_feed($the_request) {
    if ( isset($the_request['feed']) && !isset($the_request['post_type']) ) :
        $the_request['post_type'] = get_post_types($args = array(
	  		'public'   => true,
	  		'_builtin' => false
		));
    array_push($the_request['post_type'],'post');
    endif;
    return $the_request;
}
add_filter('request', 'combine_cpt_into_feed');

This function first checks to be sure the request coming in is for a feed. Specifically the main feed. It does this by checking if the request is for a feed and that the request does not include a custom post type. Next, I set the post_type array on the request to include all public post types that are not built in (meaning, not out-of-the-box from WordPress such as post and page) using get_post_types. Lastly, I add the default ‘post’ type so that my blog posts are included in the request as well.

For my use I include all public custom post types because I do not have any that I do not want to include in my main theme. You could just as easily create the array yourself to include any custom post types that you’d like. But then you’d have to manually update that array when you add or remove custom post types.

I’m happy with the result. I hope you subscribe.

Owning my words and photos and audio bits

Jeremy Keith wrote on his blog about owning his words, or, being willing to publish his words (snarky or otherwise) on his own site under his own name. I recommend you read his entire post.

But this bit stood out:

I wish I could articulate how much better it feels to only use Twitter (or Medium or Facebook) as a syndication tool, like RSS.

I feel the same way. I sort of tried to articulate the more tangible results of publishing from my site first in Observations about “tweeting” from my site. But let me get into a bit more detail here about not just tweeting but publishing in general.

By publishing to my own web site first…

  • I feel like I’m curating a library rather than throwing loose papers into a raging torrent.
  • I have the ability to quickly move to another platform if I so wish
  • I can choose how things look and feel
  • I can track, or not track, any metric I’d like to
  • I can publish several different types of media: photos, audio
  • I can turn discussion on or off

As Jeremy said, I own my words and photos and audio bits. I love it. As I said in the observations post and even as I wrote earlier this morning; I wish everyone did this.

Observations about “tweeting” from my site

It is hard to believe that it has been over 6 weeks since I began posting status messages from my site rather than through Twitter or Facebook. Here was my first status update. Here are some observations that I’ve made:

  • I figured out my process of updating, and replying, within about 10 days and have only made subtle changes since.
  • I’ve only had one or two people complain about the fact that every tweet or Facebook update contains a link even if there is no more content to find on the site. Even so, once Barley 2 is finished I’ll drop IFTTT for my own custom solution which will ditch that link unless it is needed.
  • I do not check Twitter nearly as often. Usually twice per day or so. I catch-up on Twitter in bulk using Tweetbot on my iPad the most. I hope Tweetbot never goes algorithmic.
  • My status updates are far more informal and personal. Sort of like Twitter in 2006-2008 before every tweet had to feel like a well-written press release. I’m now more apt to share the shirt I’m wearing or my opinion on hotel sheet tucking. Some may not like this, I love it.
  • I’ve only shared a photo in a status update once or twice. Here is an example. I do not know if I’ll ever share photos in a status update again or not but I’d really like to. One thing that keeps me from doing it is that IFTTT doesn’t send that photo off to the networks. Perhaps my custom solution will.
  • All of my status updates currently have a “title” that you can’t see. And I have to manually edit it on mobile. With Barley 2 I will be able to remove the need for a title since WordPress supports title-less posts. I think.
  • I didn’t lose a single subscriber to my RSS feed as a result of including these status updates in it (that I know of).
  • I sort of wish I had a private version of my site so that I could update my status 10-times as often without annoying anyone simply to have a searchable history of these types of thoughts and observations. In fact, I may do exactly that. Or, I could turn off Twitter/FB/RSS unless I tag a post with a specific keyword. Choices.
  • Not being limited to 140-characters comes in handy once-and-a-while.
  • I wish more people did this.

I’m definitely going to continue on. My only regret is that I didn’t do this sooner.

A fun first week at “home”

It has been a fun week. Kyle and I started working from our home offices and I’ve made dozens of tweaks to my personal site and my IFTTT recipes for cross-posting so that I can share from my site first.

I’m pretty happy with where this is going. Let’s start with a few questions and answers, followed by some observations, and then finish up with what I’d like to do next.

  • Do I reply on Twitter? This is a question I asked both Manton and Jeremy. I’m going to do what Manton does for now and reply to tweets on Twitter.
  • Will I bring replies onto my site? I don’t know yet. They’d likely need to be a wholly different thing, like comments, and I’m not sure I want that.
  • Same for Facebook? Yes.
  • Will I share my photos to Instagram? For now I’m posting photos on my site separately from Instagram. No cross-posting. There is and will always be overlap. But I hope after many months that my site will have a much stronger representation of my photography than Instagram has. And, in fact, I hope it influences my photography. Instagram certainly has. I want to start thinking “How would this look on my site?” rather than “How would this look on Instagram?”

A few random observations:

  • My view of Twitter this past week has been more like a feed reader than a social network. I like it. I get caught up on the last few hundred posts at a time.
  • I’m really enjoying that everything I make can now be searched in one spot. Rather than all over the place. Also, Twitter’s search is abysmal so it is effectively useless. Eventually, having years worth of status updates will be fun to search through.
  • Since I’ve begun working from home this past week too it all makes sense that I’m posting on my own site. It feels like a homecoming or something.

A few things I’d like to do next:

  • Finish Barley 2.0 – Barley 1.0 isn’t great on mobile making status updates on-the-go a bit rough. It works. But far from “good”. I could build something custom but I’d prefer to finish Barley 2.0. It is one of the reasons I’m doing this homesteading. It will leverage WordPress as the application framework and so we’ll get a lot of things we don’t have as a result.
  • I plan to leave IFTTT behind for something a bit more custom. Example: People get confused by the trailing URL on my status updates. They click expecting to see something more when there is nothing more. I’d prefer the URL not there on statuses that are shorter than 140 characters but IFTTT doesn’t offer options like that. Once Barley 2.0 is finished I can tweak cross-posting rules.
  • The layout and design of my site leaves a lot to be desired. But I don’t want to focus on that until I have all the bits in place. Content comes first. So once I feel fairly settled on what the content should be, look like, and how it should be found I can begin to think about design.
  • Eventually I’d like to have a “pick-and-choose” interface for cross-posting. Some blog posts might work pretty well on LinkedIn, others on Medium, and others via Facebook and Twitter as links. Etc. I think it’d be cool to have a default setting but be able to customize that with every single post.

Week one was fun. Week two should be less tweaks and more use.

Fits and starts and homesteading

I annoy myself. I want to post content to my own personal site and not through closed social networks — because I want to keep control of everything I create forever. But the networks are so easy to use and work everywhere and more people read them than read this site.

Over the years I’ve said that I will post everything through my site. In 1999, 2003, 2008 and 2013 (and other years), for a little while each time, I did.

However, over the last few months I’ve been working on Barley 2.0. This release will bring a lot more capability to the content management system I use for this site and as a result the desire to bring everything together once more is rising.

I’ve been incredibly inspired by Jeremy Keith and Manton Reece. Both of them are doing a remarkable job sharing everything through their own web sites and then onto social networks and they are figuring it all out as they go.

So, starting tonight that is what I’m going to try again to do with a goal of sticking with it in perpetuity. This doesn’t mean that I won’t be posting to Twitter or Facebook or Instagram, but that everything that I post there will originate here on my site. I may still craft those messages manually (since each network is so nuanced) but like Jeremy and Manton I will have to figure that out as I go too.

I hope this will have a few positive side effects. First, I’ll have control of my own content’s destiny. Second, I’ll have greater control of my content’s presentation. Third, this will force Barley to get very good at posting from mobile devices and at sharing with social networks — two features Barley should have anyway.

Expect my site to change dramatically over coming weeks as I figure all of this out.

Homesteading

In March 2008 I began to regret using so many different services to store and share different types of content like photos, tweets, videos, links. And so I began to plan bringing all of those services together on to my personal site.

I’m going to begin working on one service at a time, slowly bringing it all together, and giving each a home here on my site. I’ll try my best to keep a log of my experiences doing each of these, jotting down why I’m handling it the way that I am, and asking for feedback as I find the best solution for me as I go forward.

I wanted to make my personal site the one and only place people would come to find the answer to “What is Colin up to?”.  And for a while, I succeeded. I had my photos, mobile notes, videos, links, etc. all piling up in my own personal WordPress installation. From a certain, geeky, “post-things-exactly-as-I’d-like-to” way it was Utopia.

That was nearly 6 years ago. A lot has changed since then. Most of the services I used then are gone; Ma.gnolia, Pownce, Flickr (nearly everyone I followed there has jumped to Instagram), Viddler (now for Business-only), Cork’d (long gone), and a site I used to write for called The Uber Geeks. All gone or no longer relevant.

The fact that all of these services have in fact gone away really shows how on-point my gut was. That posting everywhere simply wasn’t a sustainable way of sharing if you cared about having control or access to all of the data that you tirelessly put the effort into getting online.

Frank Chimero recently looked back at 2013 and noticed, as I did in 2008, that he was sick of having all of this data in different silos all over the web:

So, I’m doubling down on my personal site in 2014. In light of the noisy, fragmented internet, I want a unified place for myself—the internet version of a quiet, cluttered cottage in the country. I’ll have you over for a visit when it’s finished.

I like Frank’s style so it will be interesting to see how, and if, he manages to do what I wasn’t able to do longterm. (And I’d be willing to bet the way he does it will look nicer than what I did too.)

Why wasn’t I able to continue? It mostly has to do with the network’s associated with these services. Sharing a photo to my blog may have gotten a few eyeballs, but sharing a photo on Instagram or Flickr gets a lot more. But, there comes a time where you simply don’t care about those sorts of things anymore. I’m pretty sure I’ve reached those times.

Stay tuned.

 

This site makes, at most, 39 connections

In a recent tirade against what some are calling Shit-ass Websites (pardon my french I try to keep it clean ’round here) there has been a bit of a backlash towards websites that make an overwhelming number of connections. Also, the size of the entire page load.

This site makes, at most, 39 connections and is, at most, 12Kb or so larger than the largest photo I post. Most of those 39 connections come from the WordPress plugin that I use to show the location in which I published the post. I’m thinking of disabling this plugin and if I did my site would go down to well under 12 connections.

This recent tirade is a good excuse to revisit the site(s) that you administer to see if you can cut some cruft.

A blog by any other name

This personal blog of mine has been around for a long time. It started in 1996 but it wasn’t called cdevroe.com then. Over the years it has, for better or worse, transformed more than a few times. It has changed names, domains, services, software, designs, and purposes.

Today it changes again. I’ve decided that my personal blog being ‘named’ my name just wasn’t working. I’ve known this for a long time but I didn’t do anything about it because I wasn’t sure what to do. Finally I got sick and tired of thinking about it and just decided to name it after what it has already become, rather than naming it something I’d like it to become. If that makes any sense.

As of today this blog, which is still going to be my personal Web site in all of the glory that it has come to be, is known as First Initial, Last Name – The official Web site of Colin Devroe.

For several years I have admired the ‘blogs’ that have been branded with their own names yet are run by one or very few people. If you read this blog with any regularity you can probably guess the forthcoming list, but here it is anyway: Daring Fireball run by John Gruber, Waxy.org by Andy Baio, Avalonstar by Bryan Veloso, Waking Ideas by Daniel Nicolas, Monday by Noon by Jon Christopher – and many, many others. I’m listing my friends who are good examples because, well, they are my friends and this is my blog and I can do that sort of thing.

This doesn’t mean that I put my own personal blog in this same line up. I don’t. It isn’t worthy. Also, some of these examples shouldn’t be classified as blogs. Daring Fireball is a business. It is the way John feeds his family. It just so happens that John’s business is “blogging”. This site will never be a Daring Fireball.

So First Initial, Last Name it is. I may grab an appropriate domain name for it, at some point, but I’ve always done more than fine with cdevroe.com so I don’t see that happening any time soon. Who types in domain names more than once or twice anyway, really? You should have subscribed to this site by now.

Side note: I’ve recently added the Share This button to my site (come to this post to see it). If you feel that anything I share on this site is worthy of letting others know about, please consider using this button to make it quick and easy to share the post, photo, or video on your service of choice.

Thanks to all of you that subscribe, read, and participate on my site. I really do appreciate it.