Wednesday, December 26, 2007
Long time no see...
Tuesday, October 16, 2007
Apple I'm pissed.....
Users of Digg please help me raise awareness about this issue; Digg this article
Saturday, June 16, 2007
Hard Time finding anything to write about.
Thursday, May 31, 2007
Microsoft Surface
EDIT: By minority report I mean no apparent UI just like a window and using your hands to navigate without touching the surface.
Wednesday, May 02, 2007
Off Subject Sorry 09-f9-11-02-9d-74-e3-5b-d8-41-56-c5-63-56-88-c0
Sunday, April 01, 2007
My adventure with microformats on rails
So after listening to all of the SXSW podcast I decided that I need to try something new namely microformats they seem like such a cool piece of tech and I wanted in on it too. I started looking around at these weird little things called microformats. I found out that they were just a simple little XHTML snippets but there is a standard of markup, I won't go into to much detail about that so for my contact info I would mark it up like such:
<div id="hcard-Chris-S.-Maness" class="vcard">
<span class="fn n">
<span class="given-name">Chris</span>
<span class="additional-name">S.</span>
<span class="family-name">Maness</span>
</span>
<a class="email" href="mailto:chrisprayingmantis@yahoo.com">chrisprayingmantis@yahoo.com</a>
<div class="adr">
<div class="street-address">Maness Hollow Ln.</div>
<span class="locality">Blackwater</span> ,
<span class="region">VA</span> ,
<span class="postal-code">24221</span>
<span class="country-name">USA</span>
</div>
<div class="tel">+1 555 999 2002</div>
<a class="url" href="aim:goim?screenname=prayingmantis207">AIM</a>
<a class="url" href="ymsgr:sendIM?chrisprayingmantis">YIM</a>
</div>
Now this is just a standard way of marking up the data that you already have inside of your site so that other applications can accessing your data easier. So adding it into your site is so easy I don't see why we couldn't start building this stuff right in from the start. Now I've got you wondering "Which applications can use these pieces data?" as of right now there are not to many apps that can use that have been developed yet (that I know of). Technorati is one of these few apps that searches blogs and looks for microformats in the process. Just having these microformats in there gives us a ton of functionality to use. Speaking of that let us take a look at a rails plugin that helps us to read these little pieces of information.
As you all may know I am a ruby on rails fanatic and I'm always ready to try something new. So I started looking around the net for a ruby gem or a ruby plugin that could read microformats , lo and behold I stumbled ac ross this plugin for rails called mofo (what a horrible pun). So I decide to take a look at it, and I've got to say it works pretty good but not as well as I would like it to, the only thing it won't do so far is read tags off of your own rails app (I found that little odd but I can work with that.). So all in all this looks really good so far. I'll keep looking for more interesting stuff for my next post.
Saturday, March 31, 2007
Sorry it's been so long.
Friday, January 19, 2007
Rflickr and Google maps mashup
rails mynewproject
Now change directories to the mynewproject and create a new controller with an index page.
cd mynewproject
script/generate controller View index
Alright now that we have that completed, start writing some code after all that's what we came to do. Open up the view.rb file found in app/controller directory. We'll get the peliminaries out of the way first. Declare you variables which are API_KEY and SHARED_SECRET these are just so we don't have to write them over and over again. Then we set the flickr gem to required.
require 'flickr'
API_KEY = "your_api_key"
SHARED_SECRET = "your_secret"
Now we need to create the index actions. For the index we need to load in a flickr instance and get the proper authorizations.
flickr = Flickr.new("/tmp/flickr.cache", API_KEY, SHARED_SECRET)
flickr.auth.token
Now we get to write our own custom function using the xml and rflickr libraries not really too complicated. I'll try to explain what each line does. First lets define a new function that way everything is separated.
def GetLocation(photo)
end
Then we start adding more code in this function.
flickr = Flickr.new("/tmp/flickr.cache", API_KEY, SHARED_SECRET)
photo = photo.id if photo.class == Flickr::Photo
Now what we've done is made another instance to use just for this function then we added the photo.class to make sure we get a photo after all that's what we wanted right?
res = flickr.call_method('flickr.photos.geo.getLocation',
'photo_id'=>photo)
What we just did is added the method that we want to call and believe it or not it is that easy. Now that method will return an xml response which we can use. Which would look something like this.
<rsp stat="ok">
<photo id="269619243">
<location latitude="36.675303" longitude="-82.816829" accuracy="16"/>
</photo>
</rsp>
Now add the last bit of code.
lat = [ ]
res.elements['/photo'].each_element do |location|
att = location.attributes
lat << att['latitude'] + ", " + att['longitude']
end
return lat
And now that's the last bit of code we have to add. First we made a variable to contain the data then we have to put data into or it is useless. The att variable just makes our program look at the attributes instead of the content because with these xml files we don't have any content that's useful. So after we pick off the lat and lng we end it and return the lat variable which has now got our geo data in it. Lets add that function we just created into our index function. For now we'll just hard code the id in. To make this really functional we would load the id# from a text box on the page or something like that but I'm sure that you can figure out how to do that.
@loc = GetLocation('269619243')
Now go to the app/views/view/ directory and open up the index.rhtml. Delete all of the content inside of it. I prefer starting with a clean slate. I don't really need to explain all of this code just the ruby parts the google maps documentation does a pretty good job of explaining everything.
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8"/>
<title>View</title>
<script src="http://maps.google.com/maps?file=api&v=2&key=ABQIAAAAUzR0Te-MXqdOV0HHbLuZzxTJQa0g3IQ9GZqIMmInSLzwtGDKaBQCm9xJHrKAuzvUhpgFvwlPeNxPnw"
type="text/javascript"></script>
<script type="text/javascript">
//<![CDATA[
function load() {
if (GBrowserIsCompatible()) {
var map = new GMap2(document.getElementById("map"));
<% for location in @loc %>
map.setCenter(new GLatLng(<%= location %>), 13);
map.addOverlay(new GMarker(<%= location %>));
<% end %>
}
}
//]]>
</script>
</head>
<body onload="load()" onunload="GUnload()">
<div id="map" style="width: 500px; height: 300px"></div>
<br />
<% for location in @loc %>
<%= location %> <br />
<% end %>
</body>
</html>
Ok I know if we were loading multiple locations we would want something fancier than what I've got but this tutorial is just to get you started by no means is it all you can do with it. So basically all our ruby does is set the map center to the location we gave it and put a marker there (I'm trying to keep this simple so you can follow that's why I just did one image at a time.). We'll boot up web brick and watch this thing run.
When your done your source for the view.rb file should look like this:
class ActivateController < ApplicationController
require 'flickr'
API_KEY = "7483873a88574d1ec1cdb94ee3ccf0b1"
SHARED_SECRET = "b08a4090e6b235a3"
def index
flickr = Flickr.new("/tmp/flickr.cache", API_KEY, SHARED_SECRET)
flickr.auth.token
@loc = GetLocation('269619243')
end
def GetLocation(photo)
flickr = Flickr.new("/tmp/flickr.cache", API_KEY, SHARED_SECRET)
photo = photo.id if photo.class == Flickr::Photo
res = flickr.call_method('flickr.photos.geo.getLocation',
'photo_id'=>photo)
lat = []
res.elements['/photo'].each_element do |location|
att = location.attributes
lat << att['latitude'] + ", " + att['longitude']
end
return lat
end
and the index.rhtml should look like this:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8"/>
<title>View</title>
<script src="http://maps.google.com/maps?file=api&v=2&key=your_api_key_here" type="text/javascript"></script>
<script type="text/javascript">
function load() {
if (GBrowserIsCompatible()) {
var map = new GMap2(document.getElementById("map"));
<% for location in @loc %>
map.setCenter(new GLatLng(<%= location %>), 13);
map.addOverlay(new GMarker(<%= location %>));
<% end %>
}
}
</script>
</head>
<body onload="load()" onunload="GUnload()">
<div id="map" style="width: 500px; height: 300px"></div>
<br />
<% for location in @loc %>
<%= location %> <br />
<% end %>
</body>
</html>
I hope you've enjoyed this tutorial and I look forward to writing more. Please send all of your feedback to chrisprayingmantis@yahoo.com.
Saturday, January 13, 2007
The real guide for getting up and running with rflickr
First create a new rails project:
%> rails myapp
%> cd myapp
Now lets make sure we have the latest version of the gem installed
%> sudo gem install rflickr
Make sure you install all of the required dependencies
Now we're ready to get started open the ruby console
%> script/console
Loading development environment.
now we make sure we require the flickr library
>> require 'flickr'
now set your api key and your shared secret
>>API_KEY = "your_api_key_here"
>>SHARED_SECRET = "your_secret_here"
now we start flickr up don't forget to include the path to flickr.cache
>>flickr = Flickr.new ("/tmp/flickr.cache", API_KEY, SHARED_SECRET)
now we get the frob,
>>flickr.auth.getFrob
and generate the login link.
>>flickr.auth.login_link('write')
now copy that link into your browser and allow it
Now all that's left to do is to get the token and cache the token
>>flickr.auth.getToken
>>flickr.auth.cache_token
Rock on now we're up and running...so we got this flickr think so ummm what can we do with it. Well lets try it on something simple shall we? First restart the console, then we just have a few steps instead of all of those steps all over again.
Set your api key and your secret
>>API_KEY = "your_api_key_here"
>>SHARED_SECRET = "your_secret_here"
Then load your environment and the token.
>>flickr = Flickr.new("/tmp/flickr.cache", API_KEY, SHARED_SECRET)
>>flickr.auth.token
Lets try a simple function first. Let's get a users tags.
>>flickr.tags.getListPhoto('269619243')
The rest of the api is straight forward. It's just like the flickr api. If you have any topics that you find interesting or want to learn about and I'll try to post them here. As always you can contact me at chrisprayingmantis@yahoo.com. I would love to hear from anyone who is reading this blog.