NewIceEnemy – GirlTalk inspired mash

After seeing SO many tweets about how great and awesome and wonderful the new GirlTalk “album” is, I decided to do a quick mashup on my own. It seems the formula is:  1) find an instrumental hook from an 80s pop song, 2)get some rap acapellas,  3) grab a vocal hook from some other ironically cheesy song, 4) mix them together.  In that vein, here’s my New Kids on the Block, Vanilla Ice, Public Enemy mashup:

NewIceEnemy

Things I Learned from Codeworks Austin 2010

I went to Codeworks Austin on Saturday, and it was kind of eye-opening. Lots of good info about how to better approach PHP development.  Here’s what I learned:

  1. First and foremost, even after developing for over 10 years, I have a LOT to learn. In fact, there’s an alarming amount of stuff I DON’T know.My biggest issue, is that I originally learned PHP4 10 years ago, and it was very procedural. You wrote code from top to bottom, and it ran from top to bottom. After I started getting into it, I got my first programming job doing mostly Flash, ActionScript 2, and classic ASP using VBscript. I basically set aside learning PHP, since there wasn’t really a need in my day-to-day life.  I picked it back up a couple of years ago, mostly for personal sites, but PHP5 had many new features, and I never had need to learn them all.
  2. I really need to master OOP. Again, my previous programming experience was ActionScript 2, classic ASP, and PHP4… which are all mostly procedural or functional.  I’ve jumped ahead quite a bit in my OOP experience with getting into some of PHP Frameworks like CodeIgniter and CakePHP… but I need to get more comfortable writing my own classes outside of the frameworks.
  3. Speaking of frameworks, I might need to check out Zend. It seems a lot of people there were using Zend Framework, and the speakers seemed pretty happy with it.  Also, I think I was the ONLY person there that isn’t using PEAR.  So I should probably get on that as well. Though, working on a Windows machine, it doesn’t look all that straight forward.
  4. Speaking of Windows not being easy… it seems most people there were on Macs, and many seemed to be Terminal/Command Prompt ninjas. Since current Macs have Unix at their base, there is a lot of built in functionality that makes setting up a PHP dev environment a lot easier.  However, I think I may go the Linux route, because… why not just go as hardcore as possible?
  5. Subversion/ Version Control. I’ve submitted one bit of code to Github, and that’s the ONLY time I’ve ever checked anything in or out, ever.  In a multiple dev environment having version control is a necessity,  but since I’ve been a “lone ranger” for all of programming career, I’ve never bothered to learn or implement it. Moving forward, with both my personal advancement and expanding my current job, I really need to get this up and running.

While the actual talks themselves were okay, they were mostly “overview” type stuff. Very little detail.  But just seeing how other devs worked was the most education thing I took away. Lastly, I really want to get more involved with other events like that… and take my coding to the next level.

    My Sacrilegious Twitter App: Jesus the Zombie

    I like to play around with PHP and APIs and create silly, stupid things every now and then.  After recently watching a number of zombie-themed shows, namely The Walking Dead and Dead Set, I thought it would be funny to have an app that would “eat” the brains of people’s Twitter avatars. And for whatever reason, I thought having a Zombie Jesus doing the eating would be even funnier.

    I worked out the steps that needed to happen: 1) get a submitted user’s avatar from Twitter, 2) process the image so it looks like Jesus is eating the “brains”, 3) display/save the image, 4) send out a Tweet with a link to the picture.

    Getting the avatar from Twitter is a fairly simple function:

    function getAvatar($screen_name){
         $url = "http://api.twitter.com/1/users/show.json?screen_name=".$screen_name;
         $ch = curl_init();
         curl_setopt($ch,CURLOPT_URL,$url);
         curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);
         $return = curl_exec($ch);
         curl_close($ch);
         $return = json_decode($return);
         return $return->profile_image_url;
    }

    Since you don’t need authentication, you just “curl” to get the user’s info, parse the json, and return the avatar’s url.  Processing the image isn’t so easy. I’ve used the GD2 library in the past… for another simple app that put a custom message on Charlie from “Lost”‘s hand, in the episode where he wrote “Not Pennys Boat” on his hand, which I can’t seem to find now.  GD2 is powerful, but not user-friendly at all. So I searched for a better solution, and found the amazing WideImage library. It does everything I needed, and I was able to map out the process I needed in a few minutes.

    I grabbed the image from Twitter, resize it to 60px by 60px, then rotate it -45 degrees. Then I have a Jesus png that I use as a mask, with the section where the avatar goes being cut out… and some blood coming down for effect. To do the masking effectively, I had to then resize the avatar’s canvas to the size of the main Jesus pic, and position the avatar on the canvas to the area where the open area of the Jesus pic is. Then you merge the two pictures to make the final image.

    After that, I just used “writeText” to put the caption on. I had do a second “writeText” in black for the bottom part, to give it a shadow, since just the white was being washed out. Once all that is done, I save the file. For the filename, I was originally using the timecode… but if by chance multiple people hit the site simultaneously, it might be hosed. So instead, I took the two submitted usernames and the timecode… and ran md5 on it. I’m assuming that will give totally unique names.

    I didn’t want to be serving up the images solely on my machine, so I decided to use the TwitPic API to save the images. This also allowed me to skip using the Twitter API and do the actual post from TwitPic as well. Since this is a simple, fun project, I decided to use the legacy v1 of the API, because I didn’t want to mess with oAuth.  Here’s that function:

    function sendPic($file,$to,$from) {
         $key = ""; // TwitPic API key
         $consumer_token = ""; // Twitter application consumer key
         $consumer_secret = ""; // Twitter application consumer secret
         $oauth_token = ""; // the user's OAuth token
         $oauth_secret = ""; // the user's OAuth secret
         $ar = array (
             "consumer_token" => $consumer_token,
             "consumer_secret" => $consumer_secret,
             "oauth_token" => $oauth_token,
             "oauth_secret" => $oauth_secret,
             "key" => $key,
             "message" => "I just ate @" . $to . "'s brains at the request of @". $from ,
             "media" => "@$file"
         );
         $url = "http://api.twitpic.com/1/uploadAndPost.json";
         $ch = curl_init();
         curl_setopt($ch, CURLOPT_URL, $url);
         curl_setopt($ch, CURLOPT_POST, 1);
         curl_setopt($ch, CURLOPT_POSTFIELDS, $ar);
         curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);
         curl_exec($ch);
         curl_close($ch);
         return true;
    }
    

    And that’s basically it. The only other bit of code-fu I used was to check the Twitter names people might put in… since sometimes people will use the “@” in front of the name, and other times they won’t. So I just ran a “strpos” checking for “@”, and if it’s at the 0 position, I “substr” to position 1.

    As far as security, there really isn’t any.  Since there’s no mySQL, I wasn’t too worried about it… as there’s not much to exploit with the simple code I used. I did set a session with the timecode, and if you try to submit the form more than once a minute, it sends an error… though that would be trivial to overcome.

    Other than toying with it some more, I’m pretty much finished. Being wide open as it is, it’s very very VERY susceptible to spam… so I may implement a bit of oAuth eventually. Other than that, it’s really only amusing for a few times… after that, it’s just a bit annoying. So we’ll see if anyone else finds it humorous.

    Social Shopping – the problems and some ideas

    My wife has been very wary of looking for a sitter/daycare for our 19 month old. Especially since he’s still not talking and not able to communicate his needs clearly. But when a woman in a mom’s groups she belongs to emailed with a recommendation for a sitter, she forwarded the email to me and is considering using her.  It struck me how powerful just one email, from a mom she’s only known for a few weeks, about another women who she’s never met, can be.

    Countless sites are attempting this, from Scordit to hollrr and more successfully to Blippy. Even Facebook is getting into the game with Places and it’s couponing system. But all those solutions seem to be lacking… something. Here are the pitfalls as I see them:

    1. They show you all reviews/ratings from everyone. The problem with that is I don’t care what most people think about a product. Though, I do occasionally read some of the more thoughtful reviews on Amazon.
    2. The products/services are show in a “stream”. The Twitter feed/Facebook wall style of presenting status updates just isn’t useful for product recommendations. My friends may buy a new vacuum cleaner today, but I may not need one until next year. However, I still want to get their opinions, and not have to do tedious searches to find them.
    3. You only get one review, and usually just after you got the product. The sites that offer incentives to review/rate products only incentivize the initial review.  To be a truly effective review, I want to see the initial thoughts on the products, plus the thoughts after a month or so of using (or not using) it, and then maybe 6 months or a year later.
    4. They want you to be part of THEIR social network. Here’s the sobering fact… NO ONE is leaving Facebook. At least not for the near future. People are NOT going to your site, signing up, filling in their info, leaving reviews, and “talking” to others on YOUR site. They will stay on Facebook. As the ReadWriteWeb/Google debacle from a few months ago shows, for many people Facebook IS the internet… and your site is not going to change that.

    I figure there a few things that a successful social shopping site must have.

    1. First and foremost, it must be a Facebook app. Sure, you can have a regular website for those who want it… but the focus should be on FB and keeping the info within the FB frame.
    2. Finding recommendations needs to be super simple and intuitive. If I’m looking for a TV, I should be able to simply type “TV” and see what my friends have bought. I would also offer an advanced search for power users, so people can drill down into specifications or even expand the social graph beyond just their friends… but the core functionality should be just the basics.
    3. Awesome incentives to post and review. “Badges” are fine, but “20% off a $100 purchase at Best Buy” is GREAT. Also, increase the incentives as time passes – I envision something like Scordit, where you get points for each post or review.  Your first review, or “I just bought ___” post, gets 1 point.  A month later, your second review gets 5 points… a year later, 10 points. The points can then be used to get rewards, for example 100 points gets 10% off a purchase at Amazon… or a $5 gift card from Best Buy.
    4. Assign “importance” to your friends. Over two Facebook account, I have 117 friends. These are all people I know, but honestly, I only truly value the opinions of about 35 or so of them.  In my theoretical Social Shopping app, I should be able to give those friends priority and have their results be first on the list.

      Additionally, it would be cool to give certain friends priority over certain types of purchases — like my more tech-savvy friends having more priority when it comes to computer purchases. In a perfect world, there would be an algorithm that parses the data from your friends, and your interactions with them, and automatically prioritizes them. For example, you have two friends with the jobs listed as “IT specialist”, but you’ve only written on the wall of one of those friends.  So when you search for “computer monitor”, those 2 friends show up first, with the #1 friend on top.

    5. Mobile apps for every platform. If you’re in the store with your iPhone or Android, you should be able to open the app, scan the barcode, and get reviews. If there aren’t any reviews from your friends, you then have the option to view ANY review of the exact product, or your friends’ reviews of similar products. Including something like Google Goggles functionality would also be useful… since some stores don’t always have barcodes on their display items.

    These are just a few of my thoughts on the matter. I think the biggest issues are going to be lowering the barrier for entry, and providing good incentives for people to participate.  Blippy gets really close, and has shown some success… but they’re still just not quite there.

    Maybe one day I’ll spend a few days hacking out a prototype of my idea.

    On WordPress and Learning New Things

    Went to Austin’s WordPress Meetup tonight (last night, by the time this is posted) and it was a nice time. I almost decided to not go because the traffic coming out of Spicewood into Bee Cave was horrible. Then Mo-pac… fuhgetaboutit. Thankfully, I kept going and an hour and a half after I left work I got to Cospace just after 7pm.

    The first part was a talk from Alex Hill from BaileyHill Media about using WordPress for political campaigns, which is something I’ve toyed with in the past. It was interesting to see how other’s approached political WordPress design. Then a discussion of the new features in WordPress 3.1. Most of them I knew about, but I hadn’t downloaded the dev release to test it out, so it was nice seeing some of the features in practice.

    The internal linking and the quickpress theme tag are things I most look forward to. I need to look closer into the quickpress hooks once it comes out, but I can see some really cool things… especially for community sites.  Like a nice modal box that is accessible from anywhere? From a dev standpoint, the advanced queries and custom post styles look pretty sweet for making a very robust CMS. The different post types that 3.0 included were a great step in that direction already…. this will only make it that much better.  Maybe we’re one step closer to putting Drupal and Joomla out of their misery?

    On the WordPress topic, I set up my own WP test/dev site at CrazyMonkies.org. My goal is to use it to hack and re-hack and learn as much as I can about WordPress. So far I’ve tried installing BuddyPress and wasn’t all that impressed.  It’s got some great out-of-the-box features, but almost TOO many features. Also, trying to do some quick themeing was not an easy task. I was hoping for some simple community functionality, but there’s just WAY too much “stuff” on each page… and I’m a huge fan of minimalism in design.

    Having said that, there are two plugins that are killer – the Welcome Pack and Achievements plugins. Those two things mean BuddyPress could help create a very cool social site. And while I only tested it out a short time, and only with Twitter, BuddyStream is another great plugin for integration with other social sites.  If I ever set aside some free time, I think I may hack into a BuddyPress theme and try to create a super elegant social site.

    Right now, I’m playing around with the P2 theme on CrazyMonkies. I had seen the theme in use on the WP development site, but never thought to install it myself. The real-time aspects and the keyboard shortcuts are great. I’m not sure why anyone would use this on a public site, instead of Twitter, but for a private forum it would be quite useful.  Also, adding comments threaded under the status updates is a feature that Twitter really needs. One little feature that it doesn’t have is a way to “delete” the status/comment from the front page… it only allows editing, though I’m sure there’s a way to hack that on. Another feature that would make it more Twitter-like is a friend/follow plugin… like BuddyPress.

    In fact, P2 just may be a catalyst for developing a more full-featured social site, like BuddyPress but simpler. Really, all it would take are a few custom plugins. That’s probably something I’ll be playing with more….

    Idea for November 2nd

        Driving home tonight, I thought about how Facebook has really tapped into something that regular people are drawn to.  Namely, to stay in contact with friends, meet new friends, and play games with those friends. With updates and pictures and videos, you can be a part of people’s lives even if they’re miles away.  It’s pretty powerful stuff.

        That got me thinking, “What else drives people?”, and what kind of site could be built to tap into that drive.  I realized, thinking about the rise of “reality” TV and American Idol over the past decade, that many people (mostly younger, it seems) have a notion that they have a god-given right to be famous. It seems to generally be an American notion, but shows like X-factor and Big Brother in the UK seem to suggest the trend is spreading. And then looking at people on The Hills or the Kardashians or Paris Hilton, over the past 5 years, people are becoming super famous without having any discernible talent.

        So how can you tap into that desire for fame, using the web? I haven’t researched it, and someone may have already tried it, but maybe there’s a way to have people upload videos, music, stories, poems, whatever… then other users give them an up-or-down Digg-like vote.   Then once a month or so, the winners are highlighted on the front page…  given a prize… I don’t know.

        I think the main section of the site would be a timed contest. When you upload something, it goes into the current contest, like a month long. Once the contest is over, the winner(s) have their entries removed from further contests.  The winners would also be ineligible from winning again for a period of time… 6 months or a year. Non-winners have all their votes reset, but each entry can be eligible for up to 6 months of contests… after which, the entry is ineligible from further contests.

        There should also be another section that works as like an archive.  So all unique votes are tallied, and it displays the most popular entries from all time. Maybe people could have entries that don’t go into the contest… but are just submitted for the general votes.  So past winners could still upload content and be voted on for the overall.

        Another thought, before you can vote on other’s, you have to upload something.  That way, you don’t just have trolls, but people actually participating in the site.  There should also be a mechanism for weeding out people that upload crap just to be able to vote… maybe a “spam” button? Of course, there’s a potential for that being abused.

        It sounds a bit YouTube-y… but with more than just videos, and with a contest element instead of just Views.

    Voting: If you just had links to entries where you could vote, there’s a potential for some entries to get many more views and votes. This may not be a bad thing, and bring that organic, viral quality like YouTube.  On the other hand, to be somewhat fair, there might need to be a Hot-or-Not voting system that randomly selects entries for you to vote on. I think there should also be categories for the winners… so videos and written entries would have different winners.  Though, there should also be an Overall winner who gets the big prize.

        Really, I think the key to the success of this site would be: 1) It needs to be super simple to register and add content. VERY low barrier to entry. 2) There should be a good number of users who add content, helped by #1, and 3) the prizes need to be nice, also feeding into #2.

    Prizes: To start with, the main prize should be at least $2500.  Ideally, it should be around $10k… because THAT is “real” money. Individual category prizes could start at $500, but should eventually get up to the $2500 range. Actually, as I think about it, it would be best to start at $10K… start with a BANG and reach critical mass as soon as possible. Logistically though, that’s a bit impractical unless a huge sponsor is involved from the beginning.  However, there would still need to be at least $20K invested from the beginning to cover a few months, even if we went with the lower prizes.

    Income: Pretty much this would all be ad revenue. One or two big sponsors? Use pre/post rolls or lower-thirds on the videos, text ads, overall site branding.  I think target demo for the site is 13-25 year olds, with outliers up to 40… very appealing to advertisers.

        That’s all I got… if anyone decides to pursue the idea, let me know.

    Rallies and Sanity

    I spent Saturday, mid-day, watching Jon Stewart’s Rally To Restore Sanity on Comedy Central’s amazingly clear live stream. I had considered heading downtown for the Restore Sanity Austin rally, but instead decided to avoid the hassles and actually watch a good quality version of the DC event.

    Most of my thoughts about the Rally are mirrored by much better writers, but here’s a brief  rundown:

    1. The Roots/John Legend intro was okay, but much of the music was so down-beat… it may not have been the best the instill excitement and/or fun.
    2. The bits with the other Daily Show correspondents should’ve either been expanded, so they could do solo/team bits in the crowd… or cut completely.  The back-and-forth they tried was a bit of a train-wreck.
    3. Yusef(Cat Stevens)/Ozzy was a fun bit and a highlight.  My one, personal, complaint was I would’ve liked to hear “Peace Train” in its entirety.
    4. The Colbert “media/pundit/fear” video montage was great.  There really should’ve more of that.  If anything, their efforts to be non-political through most of the rally really hindered things.
    5. Stewart’s closing speech was near perfect.

    What’s most interesting about the rally was the post-rally analysis. Obviously, people  in the media are going to push back at being criticized, like David Carr:

    His barrage against the news media Saturday stemmed from the fact that, on this day, attacking the message would have been bad manners, so he stuck with the messengers.

    Of course, as others have said, he really misses the point.  The “message” isn’t the issue here. All American’s hold different beliefs and different “messages”, but it’s the messenger that tries to pit these people against each other, for the sake of ratings.

    Similarly, George Will on This Week misses the point:

    We have two parties for a reason. We have different political sensibilities. People tend to cluster. We call them parties, and we have arguments, and that’s called politics.

    He is conflating “sanity” with “not having an opinion”. Stewart was actually pretty clear that this was NOT his point.  Huffington tried to clarify, and brought up the quote from Stewart, “we can have animus and not be enemies”.  The idea is that we can have totally different beliefs, and we can fight for those beliefs… but we don’t insult those with differing beliefs or call them Hitler. Or Socialists. Or Communists. Or Nazis. Or Idiots.

    Sadly, I don’t think the rally will have much effect on the 24-hour News Channels.  They have sunk deep into the “reality TV” notion that conflict = ratings.  And they’re right.  Maybe, though, the rally will have enough effect that people start turning off CNN, MSNBC, and FOX, especially for shows that encourage arguments  for argument’s sake.

    Thoughts and Ideas #1 – Putting Them “Out There”

    I’m constantly thinking, and coming up with ideas for things.  Be they apps, blogs, movies, tv shows, business ideas, whatever.  Most of the time, I just forget about them and they’re lost to the ether. Other times, I’m interested in developing them… but someone’s already done it, and I don’t feel like reinventing the wheel.  And still other times, I take steps to move forward with the idea.  Here are a few of my random thoughts:

    #1 Increasing CD sales

    I actually first had this idea YEARS ago, around the time Napster was at the height of popularity.  Each music CD should have a unique code, and when that code is entered into the record company’s (or third party’s) website, the buyer gets a credit for 10-15 mp3 downloads… plus, they can buy more credits if they want.  They can then download any song, by any of the record company’s artists.  Of course, back in 2000-2001 when I thought of this, it could’ve have had a huge effect on the recording industry, and my idea of buying “credits” to download songs actually predated the iTunes store. I knew too that to be successful, the record company’s “store” needed to have an overwhelming number of songs available.

    The problem is, I didn’t (don’t) know anyone in the recording industry… or know anyone who knew someone. And the idea of building a third-party platform myself never even entered my mind.  Right now, I think the idea would only have limited appeal, since online music stores are so ubiquitous.

    #2 Demystifying Flight Costs

    I thought this up after listening to an episode of  This Week In Google, when Jeff Jarvis talked of how airline ticket prices were such an unknown. My idea was to create a database of ticket prices, so each user would enter in their flight info and price… and after enough info was submitted, I would create an algorithm that could parse the info and try to re-create the airline’s yield management algorithms. Eventually, you could input the date and locations of your flights, and the site would calculate the best price you should be able to get.  Since the prices are so variable, this would allow the user some ammo when negotiating with the agent… or even when putting in the Name Your Own Price on Priceline.

    I knew the algorithm would be no cakewalk, but I figured if I could at least start gathering the information, it would make it easier to get started.  Initially, as is my want, I had all these grand ideas of parsing flight data through APIs and Scraping, letting the user click on a Google Map where they were flying to/from, allowing them to Tweet/Facebook their flights, and much more.  Well, thinking like that becomes untenable and creates an overwhelming amount of work for myself… and thus work either stops, or never starts.  With that realization, I created MyFlightPrice just using freely available Google Tools.  It took just an hour to make, and is pretty simple. After I finished, I tweeted to Jeff Jarvis, he re-tweeted, some people entered in some information… and that was about it.

    #3 Finding Quality Celebrity Twitterers

    These days a lot of famous people are on Twitter. Some are really doing their own tweets, some have PR people, some are a mixture. To weed out the PR generated tweets, and the just really boring people, I thought there needed to be a way for people to rate the celebrity twitterers and leave a review. So I created TwRate.

    It’s a pretty simple concept. You login with Twitter, choose a celebrity, rate/review them… and that’s it. Each celebrity’s page shows a bit about them, their last 5 tweets, and the reviews.  You can also Follow/Unfollow from their page. I had hoped it could be a fun, snarky place to make us “normals” feel better about not being rich and famous… by making fun of those who are.

    I actually had pretty high hopes for this site, but it really hasn’t taken off.  In fact, I’m the only one who’s used it.  But to be fair, I haven’t promoted it much at all.

    #4 Practical Relationship Advice and Tools for Husbands

    I bought the domain wifehack.com thinking of creating a blog for husbands – offering tip, tools, and advice on how to help your relationship with your wife.  I was hoping to have less of a Dr. Phil angle, and gear more towards technology. As you can see, 3 and 1/2 years later and I haven’t done much more than set up a blogspot account.

    #5 HTML 5 blog

    So I also wanted to blog about my journey as I taught myself the ins-and-outs of HTML5. I bought Html5Pro.com and while I’ve teaching myself HTML5, I never bothered to blog about it.

    #6 Web Development Podcast

    This is a recent idea that I still hope to do one day.

    One of the things I have yet to find in the podcast-o-sphere, is a decent Web Development News podcast. There are good shows like the Big Web Show and Boag World, but they don’t have the specific format that I prefer listening to. I prefer the news w/ commentary format of shows like Buzz Outloud and the TWIT shows. That format, but dedicated to Web Dev News, is something that I have yet to find… and a couple that come close are either very infrequent, or just sound lousy.

    The goal is to have a weekly show, with a couple of “regulars”, and add in a third (or fourth) guest on a rotating basis.  We’d run down the latest web development news, discuss each story, and move on. Nothing ground-breaking, but as far as I can tell, it hasn’t been done in a consistent, quality way for this topic.

    The one problem I’m having with this is that I’m new to Austin and haven’t ventured out to meet with other devs. Hopefully, once I get more social with the community, I can get this thing off the ground. I’ve considered doing it on my own, but that would get dull.  Maybe just starting with 5 minute mini-casts? I don’t know….

    So those are just a few things rattling around in my head. In the past, I was always a bit scared to share things, thinking someone might take my idea and do it themselves. I’m over that now. With so many things in my head that never even get started, I figure they might as well be out in the world.