Archive for the 'Projects' Category

416th Wordpress Twitter Plugin

Today my Recently on Twitter wordpress plugin became the 416th plugin to join the wordpress Twitter plugin directory. I’ve been told that the 415th previous attempts didn’t load asynchronously or otherwise caused the page to stall during render. Hopefully, this one does a slightly better job, though I haven’t actually investigated the competition. This plugin took about 30 minutes to develop, mostly because I have created around 10 different iterations of the same concept for previous clients and employers.

Let me know if you find it useful. You can find details on usage and installation here. Some of the features include:

  • Loads Twitter data asynchronously after the DOM ready event
  • Automatically links Urls
  • Automatically links Twitter Usernames
  • Automatically links hash tags
  • Always fresh data, even with WP-cache & Super Cache
  • Works with both Widget enabled and regular wordpress themes

You can see it in action at the bottom of the ride side of this blog. Enjoy!

Tweet your Favorite Tracks, automagically

Earlier this week, I wrote a tiny little app, which tweets my favorite music. You can read more about the concept here. This is a technical post to explain how you can leverage this app for your own enjoyment.

First, you will need to download the code. Then you will need to obtain the following items:

Once you have obtained these items, you will need a computer that is always plugged into the internet or a web server where you can run cron jobs. I am running the script on this server.

Open the track_lover.php file, which you should have gotten from here, and update the following lines, replacing ‘xxx’ with real values:

    // TWITTER
    define("TWITTER_USERNAME", "xxx");
    define("TWITTER_PASSWORD", "xxx");
 
    // last.fm
    define("LASTFM_USER", "xxx");    
    define("LASTFM_API", "xxx");    
 
    // bit.ly via j.mp
    define("BITLY_USER", "xxx");
    define("BITLY_API", "xxx");

Once you save the file, you will be all set to turn on The cron job entry may look as follows

# run every two minutes
*/2 * * * * /usr/local/bin/php /path/to/the/script/trackLover/track_lover.php > /dev/null 2>&1

That’s it, you should be up and running tweeting your favorite tracks. Enjoy!

Intersection of Geek and Music

I absolutely love the intersection of geek and music.

Recently, I wrote a tiny little app that does for me something that is irritating to do manually, sharing my favorite music at this moment. Essentially, it tweets to the world the track I have listened to a track at least 3 times in the last hour.

I am leveraging several APIs to create this app. The always wonderful last.fm API, as well as the bit.ly (awesome) API and the Twitter API. The real trick is taking advantage of the upcoming version 3 API from bit.ly. In the latest bit.ly API, bit.ly returns a boolean whether the recently shortened track is a new ‘hash’ or not. Meaning, if it has not been shortened by me before, it returns true. Instead of needing to attach a database to this app, I am just checking this boolean. Normally, I would consider this abusive, however, with all the preconditions of my script, I rarely even ask bit.ly if this shorten is ‘new’.

If it wasn’t for the descriptive potential of bit.ly, I would need to establish a flat file, or database to handle this logic check. Eventually, if they alter the API, this will become a nessecity, but for the time being I am leveraging this functionality.

Shortly, I will attempt to release a new wordpress plugin or cron that leverages all three APIs, but for the time being the code is a bit messy. If you are interested, please reach out in the comments below with an email address and I am happy to share the code. Otherwise, enjoy my twitter stream and all the music I am addicted too.

All the Cool Kids use bitly.tv

It was a huge week at bit.ly. At the beginning of the week Google and Facebook launched URL shorteners at the same time we were launching bit.ly pro. As if that wasn’t exciting enough, I also launched my first product experience for bit.ly known as bitly.tv.

The response to bitly.tv has been very exciting and positive. It launched as part of labs.bit.ly, where I hope to be involved in many future experiments with bit.ly data. The bitly.tv User Interface is very fun and extremely different from anything I have built in the last few years, I had the opportunity to really flex my AJAX application skills.

The app uses quite a few of my favorite libraries and JavaScript projects, including jQuery, SWF Address, SWF Object and a few plugins I wrote specifically for bitly.tv. I also got my first taste of writing Python for a production level project as well as using the Tornado framework. In addition, I got the opportunity to finally use the new Google Closure Compiler. All in all, I think all of these technologies are excellent and make writing apps fun.

I also learned some extremely valuable lessons about the jQuery animation code and DOM interface. During the prototyping phase of bitly.tv, I noticed that jQuery was consuming a considerable about of memory because my architecture was not caching references to DOM elements. Essentially, I was crawling the DOM looking for the correct rows and columns to transition on every mouse over and mouse out. This was very slow in FireFox, but not very noticeable from a user experience point of view in Chrome and Safari. To help alleviate this issue, I began storing the references to each row and column in an array then did a simple jQuery.inArray(); check to skip the DOM API completely. This reduced the number of internal jQuery calls from around 32,000 to around 4,000.

In addition to the above, I also helped speed up the jQuery animation code by skipping the standard jQuery().animate(); and going directly to jQuery.fx();, which also had a considerable impact on the number of internal calls jQuery needed to make. I don’t recommend doing this, however, as it could cause compatibly issues with future releases of jQuery.

Take a few minutes and check out bitly.tv. We are already planning bitly.tv 2.0, and I would love to include your feedback.

My Life Anywhere, the jQuery FriendFeed Plugin

Take your life stream anywhere on the web with my recently completed jQuery FriendFeed plugin. It’s a simple little JavaScript plugin that displays everything you pipe into FriendFeed plus comments made via FriendFeed. It’s super simple, and super useful.

The implementation is very easy. Just include jQuery 1.3.2 and the FriendFeed plugin on the page via a script tag. You can get both files on the jQuery site linked above. Then you just need to instantiate it. The entire thing might looking something like this.

<script type="text/javascript" src="jquery-1.3.2.min.js"></script>
<script type="text/javascript" src="jquery.friendfeed.js"></script>
 
<div id="activityStream"></div>
 
<script type="text/javascript">
var options = {}; // optional second parameter to override $.friendfeed.defaults values
jQuery('#activityStream').friendfeed( 'username', options );
</script>

Check out this demo I am using on my homepage. In the release on the jQuery site, I have also included some very simple CSS. The way the JavaScript is developed, you will be able to override everything. I make it simple by setting up a defaults object that can be manipulated via the second argument.

Additionally, you can replace or alter any method or value found in the $.friendfeed object by merely leveraging $.extend(); Look for more in depth documentation and usage in the near future. Or, if you want to share your samples, leave a comment below.

Why foto eBook Failed

Back in January of this year, I took down the foto eBook site and stopped offering the software for sale. There are less than half a dozen copies of it floating around in the wild. As I read a post on A VC this morning about learning from your failures, I thought it would be important to finally be a little more self reflective on why foto eBook never took off and what I have learned.

There are a lot of reasons why foto eBook failed. For the last year or so, I have always tried to pin it on market conditions, but I think I’m finally ready to come clean. I think there are two reasons it failed: My heart really wasn’t in it and I wasn’t willing to let the software grow to meet the consumers needs. The idea of foto eBook was something that I found really cool right as I made my exit from Journalism and into Web Development, but it was mostly my back-burner, get rich plan, while I toiled at a major corporation.

That’s pretty much been the hardest thing to admit to myself, but without my heart really in it, foto eBook suffered from a lot of problems that could have been easily overcome. For instance, several potential clients passed on the product because it didn’t support video uploads. Something that wouldn’t have been overly difficult from a technical perspective to support. Also, several people wanted more custom control of the UI. Again, that wouldn’t have been impossible to support either.

Instead of addressing consumer needs, I was focusing on several other ideas, only putting about 100 hours in a year, hardly enough to grow a fledgling software product.

Ultimately, I have always wanted to build a product that has the chance to become viral. That’s what Digi Whack could be, though I’m not holding my breath and I think I understand what keeps it from having explosive success. I’ll keep trying my hand at different ideas until I either run out of time or money, or both. But I think I’ve learned two very important lessons from the failure of foto eBook. Build products you’re incredibly passionate about, and let your users help guide the way forward.

Check out the known copies of foto eBook:

Calling All Designers!

Are you an awesome designer? Of course you are! Digiwhack.me needs your help. We are amassing a collection of awesome themes for the site. Check out the themes page on digiwhack here for the all the details on sizes and specifications.

What do you get in return? Besides the awesome opportunity for self promotion. Designs will used on one of the hottest up coming non-for-profit sites on the net. Build a portfolio piece you are proud of instead of that boring junk you have to do at work to pay rent. Your theme will join the growing collection created by designers who work at such well known companies as AOL, Newsweek and Neilson. Send your theme to info@digiwhack.me

Digi Whack has been featured by the #1 men’s site of the interwebs Asylum.com, as well iheartchaos.com, Yep Yep, The Corey and Jay Show, Lemondrop.com and Urlesque.com. Claim your bragging rights today – send in a Digi Whack Theme now!

Seeking Mississippi

Last week marked the two month anniversary of digiwhack’s public launch, it’s been an exciting ride so far. There has been solid press to date in the blog-o-sphere, as well as engagement from the world community.

Some of the coverage so far has included a feature on iheartchaos.com who identified the experience as “The worst, most profound bathroom wall on the Internet”, and YepYep who called it “[...]a digital version of a gas station’s bathroom stall wall”, as well as mentions on Lemondrop.com, Urlesque.com and The Corey and Jay Show radio broadcast and website.

Digi Whack is truly a global community. It’s being used on every continent, with the exception of Antarctica. Digi Whack has had over 2,000 unique visitors worldwide who viewed over 21,000 pages. Over 11,000 votes have been cast, declaring messages either clever or stupid and over 300 unique new digiwhacks (aka messages) have been created, an amazing testament to how engaged the audience is.

With all this exposure, Digi Whack has only been in used in 49 of the 50 states. One state in the US has been noticeably absent, Mississippi. Not sure how to reach those Mississippians, but if you know anyone who lives there, please pass Digi Whack along. And, if you live in Mississippi, please check us out!

Launch: Digi Whack | digiwhack.me

Woo-hoo! Digiwhack.me launches – YEY!

To say I am excited, would be a huge understatement. After almost two months of work, my latest project digiwhack.me is now live and ready for public consumption!

So what is Digi Whack? I’ll answer that shortly. Let me give a little back story first.

At the end of March I was on way to Texas to see my nephew. That morning, suffering from a serious hangover, I had one of those cartoon light bulb moments. People should be able to say random things on the internet without having to sign-in. The lynch pin to the idea, it had to be done right. Not right in that, make it scalable, use open source software kind of way (that was a given), ‘right’ in that graphic design, open and inclusive way, more on that in a bit.

I worked on the project on the plane ride down and after my nephew went to bed, he’s almost 3 so that is pretty early. In a just few days I had a rough prototype working. I contacted my friend and former colleague Roberto Gonzalez Rey for help with the visual aspects. He was excited by the idea and quickly hammered out the first round of designs. Since we both have day jobs, digiwhack.me got put on the back burner a few times over the last 60 days. But it’s ready for public consumption now!

What is digiwhack.me? It’s permanent graffiti in a digital world. It’s a virtual bathroom wall, a digital Jumbo tron. It’s anonymous and explicitly identifiable. Digiwhack.me is a contradiction to the personal web that has blossomed with Facebook. In short, digiwhack.me is what its user base defines it to be. The messages dictate the feeling, even the theme. Message writers can assign a theme that fits their message.

How can you interact with digiwhack.me? Great question. It’s on Twitter, identi.ca and Friendfeed. It also has an RSS feed. Users can send messages from the create message page in order to remain truly anonymous. Or send @replies to @digiwhack via Twitter.

The project is exciting by itself, but I am spicing it up even more by encouraging users to contribute their own designs and themes. At the moment, this is a manual process, but we are looking at automating the process in the future depending on interest. I will be posting instructions and guidelines shortly. If you want to get a head start, just take a look at this background.

Check out a few of my early favorite digiwhacks, this one, this one and this one are great!

And don’t forget to make your own whack message!

Launch: The Love Network

This has been a very exciting week! Not only did Streampad Wordpress plugin launch, but also the new Love Network is live – and I turned 29! The Love Network has been a semi-stealth project for AOL. Essentially, it provides web-wide news aggregation using a fantastic service AOL acquired called Relegence. We got awesome support from management and the business to explore any technology or service that works best for the consumer experience.

So far, we are using YouTube for videos, which offers a really sweet in-page, ‘light box’ style experience and their API and search algorithm is phenomenal. We’re also using Google Image search to bring back relevant images. Finally, we are using Get Satisfaction for user generated feedback. While none of these services are new in the web 2.0 world, having carte blanche to make a decision between internal APIs and external services based on their quality is a huge step forward for us.

Keep an eye on the Love Network, we are going to be implementing some really cool features over the next month.

Update: The Love Network was just featured on Tech Crunch here, proud to say I even got a nod or two in the comments.