DABR Twitter Web Client Mini Blog Yo Mama Jokes Sports Bookmarklets About Us

November 24, 2009

microblog: num. 3 thing you never thought you’d se…

Filed under: Mini Blog — webadmin @ 12:10 pm


 

num. 3 thing you never thought you’d see: “Black Friday Starts Today At Cooter’s” [cootersplace.com]

Bookmark and Share Email This Print This PDF This Blog This Facebook Twiit Google Google Yahoo! Buzz Ping StumbleUpon LinkedIn MySpace

Popularity: unranked [?]

Palm Pre Review In Short: “Suck It, iPhone Cult Members!”

Filed under: Cell Phones, Palm, Tech, iPhone — Tags: , — webadmin @ 9:41 am


 
Amazon.com: Dr. Dan’s review of Palm Pre Phone (Sprint)
Here’s what I think Palm’s slogan should be: “Multi-tasking. We do it on our computers and in our everyday lives… why should our phones be any different?” Sadly, their commercials feature some creepy chick talking about jugglers and mind reading. Oh, well.

When I read about multi-tasking on the Palm Pre, it looked cool. When I played with the mult-tasking feature in the Sprint store, I thought it was really cool. But when I LIVED with multi-tasking, I realized I would never own another phone that doesn’t do this. It doesn’t always work perfectly… sometimes there are issues with lag but once you learn which apps are resource hogs you get the hang of how to operate with it.

Here’s some real-world examples of how I use multitasking…

“Day-to-day”
I consistently have email, texting, Twitter, phone, and my Palm OS emulator (for my medical apps) open at all times. No need to search for buttons or menus. Just flick and I’m there.

“The Drive”
A while back my boss drove me down to New Orleans. I SIMULTANEOUSLY…………
– Ran turn-by-turn navigation with spoken street names (thru car speakers)
– Ran Pandora (also thru car speakers)
– Sent MMS messages to my folks
– Tracked my wife’s flight to Puerto Rico in real-time, using FlightView
– Viewed a PowerPoint presentation
– Sent that powerpoint presentation via email to a colleague

“Ordering Pizza and a Movie”
Just the other day my wife called me from the road to ask where she could get a movie rental and pick up a pizza in her area. I SIMULTANEOUSLY……….
– Ran my Google maps which found the nearest Blockbuster and pizza place to her,
– Ran Flixster and read Rotten Tomato reviews of different movies
– Texted my wife back and forth with my recommendations.

“Email + Messaging”
I can have both my email and texting apps open, and copy/paste from one into the other

“No Wifi headaches”
Here’s a big one! I can enable/disable Wi-Fi without leaving the web page I’m on or the email I’m trying to download. Just touch the top of the screen for the menu and I’m done!

Here’s an interesting Palm Pre vs. iPhone Twitter comparison I read: If you’re tweeting on the iPhone, and want to email a post, you have to:
1) Click the email hyperlink.
2) Twitter app closes.
3) iPhone email app opens.
4) Send email.
5) Close iPhone email app.
6) Open Twitter app.
7) Navigate back to the Twitter post of interest.
On the Palm Pre, you can simply leave Twitter open, and simply flip over to email and back.

just wish there were more OFFICIAL apps

Posted via web

Bookmark and Share Email This Print This PDF This Blog This Facebook Twiit Google Google Yahoo! Buzz Ping StumbleUpon LinkedIn MySpace

Popularity: unranked [?]

Expanding DABR Photo-Upload options



 

One of the most underrated parts of Dabr IMO is the Twitpic upload page. It allows you to interact with a Twitter helper service that uses the same login information as your twitter account. And since Twitter has speced out how the uploadAndPost process works, lots of other Twitter helper services use it in their API – such as YFrog, Twitgoo, Twitvid, and Posterous (which slickly reverse matches your autopost-twitter information in order to validate your posterous account). But Posterous is pretty slick all around – probably the best tumble blog/micro blog/media blog service out there and certainly the most expandable. Perhaps in the future I might try to integrate some more later.

Dabr photo upload twitpic yfrog twitgoo twitvid posterous imgurAnyways, I figure I’d give it a go to add some more services to the twitpic page – keyed off a service dropdown. The hardest part in reality was managing the options allowed by each service (i.e. URL upload instead of file upload, additional message body). In addition, I wanted to add support for a site that I use all the time – Imgur. They didn’t implement the uploadAndPost spec so I had to make a few exceptions as well as add an extra step to post the tweet along with the uploaded image file. Took a while to work out all the kinks (one large kink remaining is that Twitvid uploads don’t work LOL) but this page pretty much saves me from ever having to go to those sites again to upload images!

function twitter_twitpic_page($query) {
  // Check for oAuth credentials
  if (user_type() == 'oauth') {
    return theme('page', 'Error', '<p>You can't do media uploads while accessing Dabr using an OAuth login.</p>');
  }

  //verify that we're entering this page from posting the form  
  if ($_POST['service']) {
  
    // format and shrink/truncate associated status message
    $status = prepare_status($_POST['message'],120);
     
    // set the  api url based on the service name (all similar except imgur)
    $postUrl = 'http://'.$_POST['service'].'.com/api/uploadAndPost';

     // prepare the fields array with the common elements
    $postData = array(
      'username' => user_current_username(),
      'password' => $GLOBALS['user']['password'],
      'message' => $status,);
       
     // perform service-specific tasks
     switch ($_POST['service']){
         case 'imgur':
               if (!defined('IMGUR_API_KEY')){
                    twitter_refresh('twitpic/fail/'.$_POST['service'].'/'.urlencode('API KEY undefined'));
               }
               
               // imgur doesn't use the Twitter standard uploadAndPost spec
               $postUrl = 'http://imgur.com/api/upload.xml';
               
               //if URL is provided, send URL for imgur to rehost, otherwise use selected file
              if (empty($_POST['url'])){
                   $postData = array(
                         'key' => IMGUR_API_KEY, 
                         'image' => '@'.$_FILES['media']['tmp_name']);
              } else {
                   $postData = array(
                         'key' => IMGUR_API_KEY, 
                         'image' => $_POST['url']);
              }
               break;
          case 'yfrog': 
               if (!defined('YFROG_API_KEY')){
                    twitter_refresh('twitpic/fail/'.$_POST['service'].'/'.urlencode('API KEY undefined'));
               }
               $postData['key'] = YFROG_API_KEY;
               
              // Yfrog can also accept a URL as the media source
              if (!empty($_POST['url'])){
                   $postData['url'] = $_POST['url'];
              } else {
                    $postData['media'] = '@'.$_FILES['media']['tmp_name'];
               }
               break;
          case 'posterous':
              // Posterous has an additional comments element and will fall through to the default
               $postData['body'] = stripslashes($_POST['body']);
         default:
               $postData['media'] = '@'.$_FILES['media']['tmp_name'];
     }

     // make the api call
    $response = twitter_process($postUrl,$postData);

     // check response XML for associated IDs
     // for uploadAndPost supporting services
    if (preg_match('#mediaid>(.*)</mediaid#', $response, $matches)) {
      $id = $matches[1];
       
       // Twitvid allows crossposting to Youtube
      if (preg_match('#youtube_id>(.*)</youtube_id#', $response, $matches)) {
           $altid = $matches[1];
      }
       
       // Posterous sends back a separate shortened URL code
      if (preg_match('#mediaurl>http://post.ly/(.*)</mediaurl#', $response, $matches)) {
           $altid = $matches[1];
      }
       
       // show success messsage and pass IDs to create links to media
      twitter_refresh("twitpic/confirm/".$_POST['service']."/$id/$altid");
    } 
     // response for imgur uses different element names
     elseif (preg_match('#image_hash>(.*)</image_hash#', $response, $matches)) {
      $id = $matches[1];
       
       // the secret delete link/code is offered only once and should be shown in the confirmation
      if (preg_match('#delete_hash>(.*)</delete_hash#', $response, $matches)) {
           $deleteid = $matches[1];
      }
       
       // we need the actual imgur link in order to post status to Twitter 
      if (preg_match('#original_image>(.*)</original_image#', $response, $matches)) {
           $imglinkid = $matches[1];
      }

       // update status with the image link
      $status .= " $imglinkid ";

       // post the status to twitter
      $response = twitter_process('http://twitter.com/statuses/update.json',
           array('source' => 'dabr', 'status' => $status));

       // show success message, link to image, and hidden delete link
      twitter_refresh("twitpic/confirm/".$_POST['service']."/$id/$deleteid");
    } else {
          // collect errors from response
         if (preg_match('#error_code>(.*)</error_code#', $response, $matches)) {
              $error = "Error Code: $matches[1]. ";
         }
         if (preg_match('#error_msg>(.*)</error_msg#', $response, $matches)) {
              $error .= "Error Msg: $matches[1]. ";
         }
         if (preg_match('#err.code="(.*)" msg="(.*)" />#', $response, $matches)) {
               $error = "Error Code: $matches[1] Error Msg: $matches[2]";
         }
            
          // show failure messages
         twitter_refresh('twitpic/fail/'.$_POST['service'].'/'.urlencode($error));
    }
  } 
  // Page mode to show confirmation and media links
  elseif ($query[1] == 'confirm') {
    $postedlink = "Media: http://$query[2].com/$query[3]";
    if ($query[2] == 'imgur' && !empty($query[4])){
         $postedlink .= " // Hidden delete link: http://imgur.com/delete/$query[4]";
    }
    if ($query[2] == 'twitvid' && !empty($query[4])){
         $postedlink .= " // Youtube:  http://www.youtube.com/watch?v=$query[4]";
    }
    if ($query[2] == 'posterous' && !empty($query[4])){
         $postedlink = "Post: http://post.ly/$query[4]";
    }
     
     // show formatted confirmation to add thumbnails
    $content = "<p>Upload success.</p><p>".twitter_parse_tags($postedlink)."</p>";
  } 
  // page mode for failure - show errors
  elseif ($query[1] == 'fail') {
    $content = "<p>$query[2] upload failed: $query[3]</p>";
  } 
  // otherwise show form
  else {
    $content = '<style type="text/css">.disabletrue{background:#ddd;}.disablefalse{background:#fff;}</style>
          <script type="text/javascript">function disable(sel){service=sel.options[sel.selectedIndex].value;sel.form.url.disabled= (service != 'yfrog' && service != 'imgur');sel.form.body.disabled= (service != 'posterous');sel.form.url.className= 'disable'+(service != 'yfrog' && service != 'imgur');sel.form.body.className= 'disable'+(service != 'posterous');}</script>
          <form name="twitpic" method="post" action="twitpic" enctype="multipart/form-data"><br />Service: <select name="service" onChange="disable(this);"><option value="twitpic">Twitpic</option><option value="twitgoo">Twitgoo</option><option value="yfrog">Yfrog</option><option value="imgur">Imgur</option><option value="twitvid">Twitvid</option><option value="posterous">Posterous</option></select><br />Upload: <input type="file" name="media" /><br />Message: <input type="text" name="message" maxlength="120" /><br />Image Url: <input type="text" name="url" maxlength="120" /><br />Body:<br><textarea style="position:relative;top:-14px;left:67px;" cols=50 rows=3" name="body"></textarea><br /><input type="submit" value="Upload" /></form>
          <script type="text/javascript">disable(document.forms['twitpic'].service);</script>';
  }
  return theme('page', 'Twitpic Upload', $content);
}

I also had to update the twitter_photo_replace function, which I use to show the thumbnail of the image on the confirm page, to add the imgur regexes

    '#imgur.com/([w]{5})[s.ls][.w]*#i' => 'http://imgur.com/%ss.png',
    '#imgur.com/gallery/([w]+)#i' => 'http://imgur.com/%ss.png',
    '#imgur.com/delete/([w]+)#i' => 'images/trash.gif',

A lot of code, but to me it’s worth it!

Bookmark and Share Email This Print This PDF This Blog This Facebook Twiit Google Google Yahoo! Buzz Ping StumbleUpon LinkedIn MySpace

Popularity: unranked [?]

More DABR Goodness: Unshortening Short URLs



 

I’m loving DABR – makes me want to find a way to load XAMPP on my phone. Anyways I’ve made a few more tweaks to my codebase recently. Inspired by this Terrence Eden post…:Expanding URLs in Dabr / Twitter – Terence Eden’s Blog

I hate shortened URLs with a passion. It makes it hard to see what a link is and whether I’ve visited it before. If they fail – like tr.im threatened to do – you lose your links with no way to see where they once went.

So, hurrah for LongURLPlease – a service which takes those horrid little links and turns them in to full sized URLs.

…I went about implementing this longurl scheme and having the long URL show in the tweet. But to make it so that it the tweet isn’t dominated by a 600 character URL (and reduce some of the benefit of short URLs) I figured I could try to make it only display the domain name of each link while still keeping the actual link in the HTML – much like they do at slashdot. Easy peasy, I thought. Just uncomment the LONGURL_KEY in config.php and move the gwt code from the twitter_parse_links_callback function to the theme_external_link function in common/twitter.php. Right?

function twitter_parse_links_callback($matches) {
  $url = $matches[1];
  if (substr($url, 0, strlen(BASE_URL)) == BASE_URL) return "<a href='$url'>$url</a>";
  return theme('external_link', $url);
}

function theme_external_link($url, $content = null) {
     //Long URL functionality.  Also uncomment function long_url($shortURL)
     if (!$content)
     {
          $longurl = long_url($url);
          $domain = parse_url($longurl,PHP_URL_HOST);
          if (setting_fetch('gwt') == 'on') {
               $encoded = urlencode($longurl);
               $longurl = "http://google.com/gwt/n?u=$encoded";
          }
          return "<a href='$longurl' target='_blank'>[".$domain."]</a>";
     }
     else
     {
          return "<a href='$url' target='_blank'>$content</a>";
     }
}

Well, not so much. Because of some of the mechanisms in identifying links and adding the appropriate HTML, I broke the image-service thumbnail code and had to think through how this was going to work out. It ended up with me changing the twitter_photo_replace and my twitlonger_replace functions to only return the addendums (if any) and not the entire tweet text

function twitter_photo_replace($text) {

.
.
.

  if (!empty($images)) 
     return implode(' ', $images).'<br />';
}  

function twitlonger_replace($text) {
  $tmp = strip_tags($text);

  if (preg_match('#http://tl.gd/([dw]+)#', $tmp, $matches)) {
.
.
.
     $returntext = "<p style="padding:5px;margin:5px;border:thin dashed;">$longtweet</p>";//$text";
    return theme('external_link', $matches[0], $returntext);
  } else {
     return "";
  }
}

then I changed how the twitter_parse_tags function called them and appended the data. Also important is to make it use the original unaltered tweet ($input) as a source rather than the modified one with the links ($out).

function twitter_parse_tags($input) {
.
.
.

  if (!in_array(setting_fetch('browser'), array('text', 'worksafe'))) {
    $twitlonger = twitlonger_replace($input);
    $out = twitter_photo_replace($twitlonger.$input).$twitlonger.$out;
  }
  return $out;
}

Dabr Decoding Short URLs

The results, though, are great . Nice and clean. As mentioned on other pages, the overhead may be a bit much for more than your personal web server, but I love the change. One byproduct as well is that now any posts with images in Twitlonger that don’t get into the original tweet will have their photo thumbnail displayed too. 5% scenario – yes, but still icing :)

Bookmark and Share Email This Print This PDF This Blog This Facebook Twiit Google Google Yahoo! Buzz Ping StumbleUpon LinkedIn MySpace

Popularity: unranked [?]

Ted Ginn Jr. and Snoop Dogg – Drop it Like it’s Hot

Filed under: Miami Dolphins, Music, NFL, Snoop Dogg — Tags: , — webadmin @ 1:10 am


 

quality!

Posted via web

Bookmark and Share Email This Print This PDF This Blog This Facebook Twiit Google Google Yahoo! Buzz Ping StumbleUpon LinkedIn MySpace

Popularity: unranked [?]

November 23, 2009

Jay-Z & Alicia Keys Performing At The American Music Awards 2009

Filed under: Music — Tags: , , , , , , — webadmin @ 11:51 pm


 

damn good!

Posted via web


Yeah, yeah, I’ma up at Brooklyn, now I’m down in Tribeca
Right next to De Niro, but I’ll be hood forever
I’m the new Sinatra, and since I made it here
I can make it anywhere, yeah, they love me everywhere

I used to cop in Harlem, all of my Dominicanos
Right there up on Broadway, brought me back to that McDonald’s
Took it to my stash spot, 560 State Street
Catch me in the Kitchen like a Simmons whipping pastry

Cruising down 8th Street, off-white Lexus
Driving so slow, but BK is from Texas
Me, I’m up at Bed-Stuy, home of that boy Biggie
Now I live on Billboard, and I brought my boys with me

Say what up to Ty Ty, still sipping malta
Sitting courtside, Knicks and Nets give me high fives
Nigga, I be spiked out, I can trip a referee
Tell by my attitude that I am most definitely from

In New York, concrete jungle where dreams are made of
There’s nothing you can’t do, now you’re in New York
These streets will make you feel brand new
Big lights will inspire you, let’s hear it for New York
New York, New York
(I made you hot, nigga)

Catch me at the X with OG at a Yankee game
Shit, I made the Yankee hat more famous than a Yankee can
You should know I bleed blue, but I ain’t a Crip though
But I got a gang of niggas walking with my clique, though

Welcome to the melting pot, corners where we selling rock
Afrika Bambaataa shit, home of the hip hop
Yellow Cab, Gypsy Cab, Dollar Cab, holla back
For foreigners that ain’t fifty, they act like they forgot how to act

Eight million stories out there, and they’re naked
Cities is a pity, half of y’all won’t make it
Me, I gotta plug, Special Ed “I Got It Made”
If Jesus payin’ LeBron, I’m paying Dwyane Wade

Three dice, Cee-lo, three-card Monte
Labor Day Parade, rest in peace, Bob Marley
Statue of Liberty, long live the World Trade
Long live the king, yo, I’m from the Empire State that’s

In New York, concrete jungle where dreams are made of
There’s nothing you can’t do, now you’re in New York
These streets will make you feel brand new
Big lights will inspire you, let’s hear it for New York
New York, New York

Lights is blinding, girls need blinders
So they can step out of bounds quick
The sidelines is blind with casualties
Who sipping life casually, then gradually become worse

Don’t bite the apple, Eve, caught up in the in crowd
Now you’re in style and in the winter gets cold
En vogue with your skin out, the city of sin is a pity on a whim
Good girls gone bad, the cities filled with them

Mommy took a bus trip, now she got her bust out
Everybody ride her just like a bus route
Hail Mary to the city, you’re a virgin
And Jesus can’t save you, life starts when the church ends

Came here for school, graduated to the high life
Ball players, rap stars addicted to the limelight
MDMA got you feeling like a champion
The city never sleeps, better slip you an Ambien

In New York, concrete jungle where dreams are made of
There’s nothing you can’t do, now you’re in New York
These streets will make you feel brand new
Big lights will inspire you, let’s hear it for New York
New York, New York

One hand in the air for the big city
Street lights, big dreams all looking pretty
No place in the world that can compare
Put your lighters in the air, everybody say yeah, yeah, yeah, yeah
(Come on, come on)

In New York, concrete jungle where dreams are made of
There’s nothing you can’t do, now you’re in New York
These streets will make you feel brand new
Big lights will inspire you, let’s hear it for New York
New York, New York

Bookmark and Share Email This Print This PDF This Blog This Facebook Twiit Google Google Yahoo! Buzz Ping StumbleUpon LinkedIn MySpace

Popularity: unranked [?]

Ping.fm PingDash Bookmarklet



 

I may have stumbled on a great workaround for the PingOut problem. When last I addressed this:

Ping.fm PingPlus Bookmarklet | myopiclunacy.com

UPDATE (Nov 18, 2009): Commenter Andy pointed out another Ping.fm Bookmarklet on Mentoliptus that uses the PingOut popup. This popup is a hell of a lot nicer than the Ping This interface and gives you all the options of posting to single services or groups. Only thing is that it’s context insensitive. I tried passing parameters to it but it ignored them all. So for now I’ll continue using PingPlus as it is for context sensitive stuff until hopefully they update the PingOut interface to allow URL parameters. That would be the holy grail Ping bookmarklet!

Well, the Pingout page doesn’t accept URL parameters, but it seems the Dashboard page does! So a quick change to the PingPlus bookmarklet and we’re a lot closer to the holy grail:

PingDash

Works the same way except it takes you to the Ping.fm Dashboard with status already filled in and you have complete control over the services, groups, or whatever you want to Ping.

Bookmark and Share Email This Print This PDF This Blog This Facebook Twiit Google Google Yahoo! Buzz Ping StumbleUpon LinkedIn MySpace

Popularity: unranked [?]

[Target Practice | www.peopleofwalmart.com] Hilarious caption on this one!

Filed under: Humor, Wal-Mart, Walmart — Tags: , , — webadmin @ 5:48 am


 
544
Hey Cletus, here’s a Muppet News Flash…….dem bucks can’t see you, so you don’t have to hide.

Why is this funny?

1. Hey Cletus
2. Muppet News Flash
3. dem bucks

Funny comments:

1. What? He’s just practicing for Sunday.
2. I really thought this was my ex-husband for a minute. I just died….in a fit of laughter. Not because of this one picture. But because more than one of these pictures on this website have been mistaken for him.
3. Given the type that is usually found here we can assess that not only is this the most normal outfit we’ve seen in Wal*Mart but he’s fully dressed too!!! And thank God for small favors

Posted via web

Bookmark and Share Email This Print This PDF This Blog This Facebook Twiit Google Google Yahoo! Buzz Ping StumbleUpon LinkedIn MySpace

Popularity: unranked [?]

Farcical: Iran Intel says Maziar Bahari’s spy contact was Jason Jones of The Daily Show?



 

Video: Jason Jones: Behind the Veil – Minarets of Menace

Simply amazing. What’s next? Wyatt Cenac’s feature on Sonia Sotomayor gets her high school teacher arrested in the Bronx?

Posted via web

Bookmark and Share Email This Print This PDF This Blog This Facebook Twiit Google Google Yahoo! Buzz Ping StumbleUpon LinkedIn MySpace

Popularity: unranked [?]

November 22, 2009

[Looks Comfy] – I’m late to this www.peopleofwalmart.com party

Filed under: Humor, Wal-Mart, Walmart — webadmin @ 8:35 am


 
577
Hola, bienvenido a McDonald’s en Walmart. Te gustaria tomar una siesta?

buenisimo!

Posted via web

Bookmark and Share Email This Print This PDF This Blog This Facebook Twiit Google Google Yahoo! Buzz Ping StumbleUpon LinkedIn MySpace

Popularity: unranked [?]

Powered by WordPress

Blog Information