Evan Sims

Evan is a 25 year old designer, programmer and college student from the cornfields of Illinois. Aside from being a freelance web developer, he is also an aspiring video game designer. Learn more.

Add to Technorati Favorites

Last Seen

Map

S Pine St, Arcola, IL

It's official. I love Git.

Exploring August, 2007

You are currently browsing the unholy depths of my blogging history, albeit a rather short one given that I didn't start keeping track of my posts until a few years ago. If you're looking for a summary of all my past posts, check the Archives page.

August 7th, 2007
Thoughts
Comments

Tags:

Mediacom Blows

Just an FYI: I may not be able to blog much this week, as my home Internet is completely useless. Mediacom was supposed to fix it today, but instead of sending out a maintenance guy to fix the signal - which I told them was the issue, and told them to send out - they sent a technician, who was here for 10 minutes, agreed with my conclusion, and then told me he’d have to schedule a maintenance guy to come out. I called them just now to see when I could expect someone to be out, and they told me “we don’t schedule our maintenance people, they come out as soon as possible.” Super, so it could be in ten minutes or two weeks.

If you have an option between using Mediacom or another service, use another service. Their support is rude and worthless, and I’ve had nothing but headaches with their service. DSL and DirectTV are looking better with every passing moment.

August 3rd, 2007
Tips
Comments

Tags:


Web APIs by Example, Part II: del.icio.us

Today we’ll be looking at applying what we’ve already learned from working with the Twitter API to the social bookmarking site del.icio.us. As you might expect, the del.icio.us API offers a much broader set of functionality for interacting with it’s data. Besides being able to add bookmarks, you can delete existing ones and use a number of different methods to selectively filter your bookmarks and return just the ones you’re looking for. It’s quite nice, and today we’ll be exposing some of these features with an app that lets us add bookmarks as well as filter our most recent ones.


$delicious_username = 'YOUR_USERNAME_HERE';
$delicious_password = 'YOUR_PASSWORD_HERE';

$errno = 0;
$errstr = '';
$response = '';

$links = array();

function httpRequest($host, $path = '/', $method = 'GET') {

  global $errno, $errstr, $response;
  global $delicious_username, $delicious_password;

  $port = 80;
  if(substr($host, 0, 6) == 'ssl://') $port = 443;

  $sock = @fsockopen($host, $port, $errno, $errstr, 30);
  if (!$sock) {
    if(!$errno) {
      die("<p>fsockopen() error:<br />Unable to open socket for undefined reason; most likely the version of PHP you're running doesn't have SSL support compiled.");
    } else {
      die("<p>fsockopen() error:<br />$errstr ($errno)</p>");
    }
  } else {

    $host = substr($host, 6);
    $header  = "$method $path HTTP/1.0rn";
    $header .= "Host: $hostrn";
    $header .= "Accept-Encoding: nonern";
    $header .= "Authorization: Basic " . base64_encode("{$delicious_username}:{$delicious_password}") . "rn";
    $header .= "Connection: Closernrn";

      fwrite($sock, $header);
      while (!feof($sock)) {
      $response .= fgets($sock, 128);
      }
      fclose($sock);

      $response = str_replace("r", '', $response);
      $response = trim(substr($response, strpos($response, "nn")));
      return true;
  }

}

if(isset($_POST['url']) && isset($_POST['description'])) {

  // Bookmark a URL

  $url = urlencode(trim($_POST['url']));
  $description = urlencode(trim($_POST['description']));
  httpRequest('ssl://api.del.icio.us', '/v1/posts/add?url=' . $url . '&description=' . $description);

}

// Fetch our recent bookmarks:

$count = 10;
$tag = '';

if(isset($_GET['count']) && strlen($_GET['count']) && is_numeric($_GET['count'])) $count = trim($_GET['count']);
if(isset($_GET['tag']) && strlen($_GET['tag'])) $tag = urlencode(trim($_GET['tag']));

$ret = httpRequest('ssl://api.del.icio.us', '/v1/posts/recent?count=' . $count . '&tag=' . $tag);

if($ret) {
  $xml_parser = xml_parser_create();
  xml_parser_set_option($xml_parser, XML_OPTION_CASE_FOLDING, true);
  xml_set_element_handler($xml_parser, 'parsePostOpen', 'parsePostClose');
  xml_parse($xml_parser, $response, true);
}

function parsePostClose($parser, $name){}
function parsePostOpen($parser, $name, $attrs)
{
  if(isset($attrs['HREF'])) {
    $attrs['TIME'] = strtotime(substr($attrs['TIME'], 0, -1));
    $attrs['TAG'] = explode(' ', trim($attrs['TAG']));
    global $links;
    $links[] = $attrs;
  }
}

?>

<html>
<head>
  <title>del.icio.us Bookmarks Example</title>
</head>

<body>

  <h1>My Recent Bookmarks</h1>

  <form method="get">
    <fieldset>
      <legend>Filter Results</legend>
      Display the
      <select id="count" name="count">
        <option >10</option>
        <option >50</option>
        <option >100</option>
      </select>
      most recent bookmarks,
      tagged with <input type="text" id="tag" name="tag" value="" /> &nbsp; <input type="submit" value="Refresh" />
    </fieldset>
  </form>

  <ul>

  </ul>

  <form method="post">
    <fieldset>
      <legend>New Bookmark</legend>
      <label for="url">URL:</label><br />
      <input type="text" id="url" name="url" /><br />
      <label for="description">Description:</label><br />
      <input type="text" id="description" name="description" /> <input type="submit" value="Add Bookmark" />
    </fieldset>
  </form>

</body>
</html>

That’s it! If everything’s gone right, you’ve got yourself a pretty slick little bookmark manager for del.icio.us. Hope you enjoyed this article, and please feel free to comment with any questions or additions. I have a few more additions planned to the series, so stay tuned.

Download the Source Code

August 1st, 2007
Tips
Comments

Tags:



Web APIs by Example, Part I: Twitter

APIs, or application programming interfaces, are essentially standardized methods for applications to talk to one another and share information. In desktop applications, the operating system provides a full range of APIs in order for your programs to run and interact with it (in Windows an app might register itself as an option for when you right click an icon; or on a Mac an app will hide itself from the dock.) On the web, APIs are usually provided as a means of importing data to other services, or using third party clients to push information to your account.

Since Twitter is all the rage these days, I thought it would be a great starting point to introduce you to the world of web APIs and how simple they really are to work with. Twitter, like most presencing services, has a very limited range of API calls because, well, it’s a very simple service. The documentation for Twitter’s API can be found hrere. The Twitter API, all be it simple, has allowed great applications like Twitterific and Twittervision to be created.

Continue Reading ‘Web APIs by Example, Part I: Twitter’ …

© 2000-2008 Evan Sims. Content redistributable under terms. Hosted by (mt) Media Temple. Powered by Wordpress. Fueled by ramen.