Development Archives

  1. Social 2.5 Sketches

    Broadcast sketch

    I’ve already professed my love for Paper1, and one of my primary usages is for wireframing UX models. I used it for a few of the improvments we added in Social 2.5, and thought it might be fun to share a couple of them here. One of the biggest changes we made was an overhaul…

  2. Cart66 Vulnerability Follow-up

    Cart66 released a new version this morning, addressing the vulnerability I posted about yesterday. A one-day turn-around to address a security issue is excellent (even if the stink from 9 months of inattention hasn’t fully dissipated yet). I’m disappointed I had to resort to a public warning to get action but glad that action was…

  3. Streamline FavePersonal with a Child Theme

    We’ve just released version 1.0.1 of FavePersonal, which has a few minor updates. There’s one in particular that I think will be particularly useful: we’ve added a link to download a the style.css file you need to create a child theme (with your currently selected colors) from the Theme Settings page in FavePersonal. While I’m…

  4. FavePersonal: Colors

    FavePersonal Color Settings

    One of the most fun features of FavePersonal is experimenting with different color palettes. We’ve made it easy to experiment with different colors and find a set that makes your site feel like it’s your own. No need to fiddle through dozens of color pickers, you can choose from full color palettes, preview them, and…

  5. Carrington Themes on GitHub

    As part of our move to Git, we now host our WordPress code on GitHub. Carrington Core was moved over a while ago and I finally finished migrating the rest of the themes from their old home on Google Code. The themes are being renamed: Carrington Blog is becoming FaveBlog Carrington Text is becoming FaveText…

  6. Git Submodules are not SVN Externals

    One of the biggest hurdles I had to get past in order to use Git efficiently was getting my head around the differences between SVN’s externals and Git’s submodules. Since our migration from SVN to Git, I’ve seen other folks on our team working through the same hiccups I had initially. I thought the following…

  7. SVN to Git Migration

    A couple of weeks ago we shut down the Crowd Favorite office for a day and a half to do a migration from SVN to Git. This was not a small undertaking. We had nearly five years of code in a single SVN repository that was then broken out into literally hundreds of Git repositories.…

  8. TechStars Boulder Early Application Deadline: Feb 26th

    If you’re planning to apply for TechStars Boulder for this summer (2012), make sure you’ve got your application ready to go for the early application deadline in 2 weeks. It’s been amazing to see TechStars grow and thrive as it has. The experience offered to the teams and the quality of the mentors is remarkable;…

  9. http_build_query() Separator Tip

    I ran into an interesting “bug” in Twitter Tools last night that I traced back to http_build_query(). I expected that the query strings generated by this function used & as a separator for the key=value pairs, but on one of our test servers, the separator being used was &. This is a php.ini config setting,…

  10. Twitter Tools 3.0 beta 2

    I’ve packaged beta 2 of the next generation version of Twitter Tools. Version 3.0 is a ground-up rewrite on top of the Social platform, with a few features included for backward compatibility. If you’d like to test the beta, grab it from GitHub. This version fixes several bugs that were found in our QA process,…

  11. WP_Query by “Standard” Post Format

    When using WordPress post formats, you’ll quickly start looking for a way to query WordPress content by the “standard” post format. This Trac ticket seeks to work on solving this. The implementation there handles URL-based requests: http://example.com/type/standard/ quite nicely. However the code in that patch doesn’t (yet) handle direct WP_Query calls. I was hacking on…

  12. Popularity Contest is Dead (and on GitHub)

    I wrote the Popularity Contest plugin for WordPress back in May of 2005. It had a good run, but that run is over. We are no longer developing or supporting Popularity Contest, and I recommend letting it rest peacefully. Why? It does too much, and too little at the same time. It does too much.…

  13. WordPress Plugins and Symlinks

    If you’re doing serious development for WordPress you will quickly find yourself in a situation where you need to test a plugin in multiple installations. Using symlinks is a great way to make sure that you don’t end up editing in multiple locations, perhaps forgetting to commit a change, etc. However, there are some headaches…

  14. Not Getting GitHub Notifications?

    I have been moving Crowd Favorite‘s Open Source projects to GitHub (as well as my personal projects). GitHub has great tools for this. We created an organization, added the team members to that organization, and created repositories for our projects. As a few of our projects have enjoyed exactly the sort of developer community engagement…

  15. WordPress Post Format Fallbacks

    Post Format Fallbacks

    While our post formats admin UI is getting a nice warm reception (100+ tweets, pings and comments, wow!), there is a concern that has popped up a few times – one that I included a nod towards in my original post. What happens when publishers put important data in the post format custom fields, then…

  16. WordPress Post Formats Admin UI

    format-standard

    The Post Formats feature that landed in WordPress 3.1 is a great framework feature. I’m leveraging it extensively on this site to drive my link, status, photo and gallery posts. While it is a great framework feature, it only really exists as something developers leverage to extend WordPress. There is no UI that ships with…

  17. wp_publish_post() Does Not Set post_*

    The inline documentation for wp_publish_post() says that it will: Publish a post by transitioning the post status. and that’s exactly what it does. Moreover, that’s all it does. If you are creating a draft post via wp_insert_post() (or wp_update_post(), which calls wp_insert_post()), certain defaults will be set for you when the post status is set…

  18. Wanted: Multiple Incognito Sessions

    Steve laments the lack of easy “Incognito” windows in Firefox. I tried Safari as my primary browser for a few weeks when I upgraded to Lion and I really missed this as well. Once it becomes part of your workflow, it’s really hard to go back. I actually want it to go a step further.…

  19. Modernizr.touch and BlackBerry Browsers

    If you’re using Moderinzr to detect browser support for touch events, be aware that non-touch BlackBerry devices claim to support touch events. As you might expect, the touch events are pretty much impossible to trigger on a non-touch device. I worked around this by making the check for touch vs. non-touch browsers also test for…

  20. Custom Fields vs. Taxonomies

    For years I’ve used custom fields (post meta) in WordPress as a primary storage area for misc. data about specific posts (including pages, custom post types, etc.). Recently, I’ve realized that I should be using custom taxonomies instead of custom fields in a variety of situations. Custom fields are still the right choice for misc.…

  21. Where to Host WordPress Code?

    I talked to a number of developers about at this year’s WordCamp SF about where best to publish WordPress code as a developer. We definitely want to use the SVN repositories on WordPress.org so that released plugins can be easily available to the community, but there is very little developer community there. We’ve also used…

  22. WordPress Filter for Pingbacks

    My team and I have been working on a plugin to enable a better UI for post formats in the WordPress admin (more on this later, but feel free to grab the code and play with it). One of the things we’ve done is standardize on some custom field names for various bits of data…

  23. WordPress GUIDs Must Be URLs

    If you are customizing the GUID value of a post in WordPress, make sure you maintain the format of the GUID as a valid URL format. There are security checks on the value that enforce the URL format. If you pass in a UUID as the GUID value when creating a post, your value will…