Web Toys

Discussion of all kinds of web technologies

About the author

Bret Patterson.
E-mail me Send mail

Recent comments

Authors

Disclaimer

The opinions expressed herein are my own personal opinions and do not represent my employer's view in anyway.

© Copyright 2010

Writing Facebook Applications

Facebook has opened up it's Social website to third-party developers http://developers.facebook.com/

Additionally they have partnered with Microsoft to make developing applications extremely simple

http://msdn.microsoft.com/vstudio/express/showcase/
 

Last night I decided to take this Facebook toolkit for a spin, by first converting a very simple Windows Presentation Foundation (WPF) application I'd written to automatically synchronize your My Pictures and Shared Pictures folders with Facebook.

The below process is what I did.

  1. Download the facebook toolkit from the Microsoft link above.
  2. Create your project type per normal. (WPF/Website etc!) I used WPF in this example
  3. Add the facebook/facebook.csproj project to your solution (yes you can add just a reference to the facebook.dll also if you wish, but i didn't for reasons below).

Once you've done the above it's as simple as adding:

   1: using Facebook;
   2: using Facebook.Components;
   3: FacebookService fbService;
   4:  
   5: fbService = new FacebookService();
   6: fbService.IsDesktopApplication = true;  // set this to true for desktop applications. 
   7:  
   8: fbService.ApplicationKey = "[your key here]";
   9: fbService.Secret = "[your secret here]"; 
  10:  
  11: Collection<Album> tAlbums = fbService.GetPhotoAlbums();   // Make the call to a function you wish to use 
  12:  

If your not already logged in it will automatically popup a window like the following:  

Untitled_thumb

The login screen is automatic, and the function you called while the user was not logged in will not return until the user has successfully logged in or cancelled the login process.

Very easily done.

Next once I've gotten all of the albums it's a simple matter to get all the photo's using:

   1: Collection<Photo> tPhotos;
   2:  
   3: foreach (Album ta in tAlbums)
   4:  {
   5:        fbAlbums.Add(ta.Name, ta);
   6:        if (getPhotos)
   7:        {
   8:          tPhotos = fbService.GetPhotos(ta.AlbumId); // gets all of the photo's for the album.
   9:          fbPhotos.Add(ta.Name, tPhotos);                 // global Dictionary<string,Collection<Photo>> where i store album --> photo reference.
  10:        }
  11:  }

Finally to figure out which Photo's I want to upload I scan the folders "My Pictures" and "Shared Pictures" using the following methods to get the directories:

   1: // Shared Pictures folder path
   2: // You might get "C:\Documents and Settings\All Users\Documents\My Pictures" 
   3: // Here, "My Pictures" is the real name of the folder "Shared Pictures", where "Shared Pictures"
   4: // is only the alias of "My Pictures" and can't be retrieved.
   5: string shrpic = (string)Registry.GetValue(key.Name, "CommonPictures", ""); 
   6:  
   7: lbDirectories.Items.Add(new DirectoryInfo(Environment.GetFolderPath(Environment.SpecialFolder.MyPictures))); 
   8:  
   9: if (shrpic != null && shrpic.Length > 0)
  10: {
  11:    lbDirectories.Items.Add(new DirectoryInfo(shrpic));
  12: } 
  13:  

Then using a simple recursive function to get the list of picture files (not shown here for brevity).

 

Now the next step is to compare what pictures I have on the local machine to what's one the server so I do:

Oops Facebook doesn't store the original filename!! So there technically is no way to figure out which local pictures match which server pictures.

This was a major stumbling block, as I originally didn't want to have to store any information locally on the users computer. Alas you must manually keep track of what photo's you've uploaded previously and what their photoID is (details coming later).

 

Next what I do is loop through all of the pictures and upload them using:

   1: foreach (string aname in dNewImages.Keys)
   2: {
   3:     if (fbAlbums.ContainsKey(aname) == false)  // if the album doesn't exist on the server then create it.
   4:     {
   5:         fbService.CreateAlbum(aname, "", "");    // create the album
   6:         getAlbums(false);                                    // refresh my list of albums, You could remove this step by doing something similar to what i do later.
   7:     }
   8:     Collection<CFileInfo> aImages = dNewImages[aname];   // list of all the images for this album
   9:     XmlDocument rv = null;
  10:     long pid;
  11:     foreach (CFileInfo f in aImages)   // loop through the images.
  12:     {
  13:         string tempFile = System.IO.Path.GetTempFileName();  // create a temporary file
  14:         FileInfo fi = new FileInfo(tempFile);
  15:         CImageUtils.resizeImageAndSave(f.File.FullName,tempFile,604,453);   // resize the image
  16:         rv = fbService.UploadPhoto(fbAlbums[aname].AlbumId,fi);      // upload the image to facebook!
  17:         fi.Delete();
  18:         pid = FacebookUtils.getUploadedPhotoID(rv);   // get the photo id for the new image. 
  19:  
  20:         dUploadedImages.Add(f.File.FullName,pid.ToString());  // add a mapping of the filename to the photo id.
  21:     
  22:     }
  23: } 
  24:  

The primary problem with the above is shown in the purple line, if you look at your copy of FacebookService the UploadPhoto does not return a result! So there is no way to determine, the result of the call. We need this result because we need to be able to determine what the new Photo's ID is. Now you'll see why I added the Facebook project to my solution, so I could jump into the source code and fix this small issue. If you jump to this function you will see that it calls:

ExecuteApiUpload(uploadFile, parameterList);

 

This method Does return a result, and the result is an xml document that looks like the following:


 

   1: <?xml version="1.0" encoding="UTF-8" ?> 
   2: <photos_upload_response xmlns="http://api.facebook.com/1.0/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://api.facebook.com/1.0/ http://api.facebook.com/1.0/facebook.xsd">
   3: <pid>2958831660596058150</pid> 
   4: <aid>2958831660595942926</aid> 
   5: <owner>688906680</owner> 
   6: <src>http://photos-870.ak.facebook.com/photos-ak-sf2p/v73/140/31/688906680/s688906680_120870_3345.jpg</src> 
   7: <src_big>http://photos-870.ak.facebook.com/photos-ak-sf2p/v73/140/31/688906680/n688906680_120870_3345.jpg</src_big> 
   8: <src_small>http://photos-870.ak.facebook.com/photos-ak-sf2p/v73/140/31/688906680/t688906680_120870_3345.jpg</src_small> 
   9: <link>http://www.facebook.com/photo.php?pid=120870&id=688906680</link> 
  10: <caption /> 
  11: <created>1181012493</created> 
  12: </photos_upload_response>

From here you can see that the tag <PID> contains the newly created Photo ID. What we need to do then is modify the UploadPhoto method to return an XmlDocument that we get from the ExecuteApiUpload method call. I changed the function and then wrote the following function to extract the photoid.

   1: public static long getUploadedPhotoID(XmlDocument doc)
   2:        {
   3:  
   4:            XmlNamespaceManager xnm = new XmlNamespaceManager(doc.NameTable);
   5:            xnm.AddNamespace("fb", "http://api.facebook.com/1.0/");
   6:            XmlNode node = doc.SelectSingleNode("/fb:photos_upload_response/fb:pid/text()",xnm);
   7:            return long.Parse(node.Value);          
   8:        }

If you notice here I had to include an XmlNamespaceManager because the default namespace is not blank, otherwise your select will fail.

 

At this point it's just a simple matter of saving a reference of the FileName --> PID into a Dictionary<string,string> and then saving this to a application state file that we can load the next time we run. This works fine as long as the user always only uses our program to upload files, otherwise it's very easy to get duplicates. Unfortunantly there isn't an easy way around this since facebook doesn't save the original image filename.

 

Anyway this was just a simple app to try and testout the new facebook api's that microsoft provides. Overall I'd give them a A+ for simplicity of use, however they left out quite a few obvious pieces of required functionality like return codes from the api set. However since they distributed the source it is quite easy to work around that issue.


Categories: Facebook
Posted by bpatters on Friday, June 08, 2007 4:17 AM
Permalink | Comments (80) | Post RSSRSS comment feed

Comments

Melvin Tucker United States

Thursday, August 02, 2007 2:38 AM

Melvin Tucker

Is there an easy way to delete an album and check to see if an album already exist

Bret Patterson United States

Sunday, August 05, 2007 11:12 PM

Bret Patterson

To check if an album exists use:

FacebookServices Service = new FacebookServices();
Service.IsDesktopApplication = true;
Service.ApplicationKey = [yourappkey];
Service.Secret = [yourappsecret];

Collection<Album> ServerAlbums = Service.GetPhotoAlbums();

foreach (Album sa in ServerAlbums) {
   if (sa.Name == "album you want to find") {
      MessageBox.Show ("Album already exists");
   }
}

As far as I know facebook does not expose any way to delete albums or photo's from their api.

Maricel Dominican Republic

Friday, February 26, 2010 6:43 PM

Maricel

Blogs are a great way to connect to people and share your experience or useful information to your readers. You are able to achieve that here.

Impotence Blue Pill United Kingdom

Tuesday, March 02, 2010 6:54 AM

Impotence Blue Pill

Knowing real Viagra pills is quite easy. The popular formulation by Pfizer is blue in colour, diamond-shaped and has the stated dose inscribed on one side of each pill. On the other side, the name of the manufacturer Pfizer is inscribed.

wedding on a budget Slovenia

Saturday, March 06, 2010 4:59 AM

wedding on a budget

Howdy, i read your blog occasionally and i own a similar one and i was just wondering if you get a lot of spam comments? If so how do you prevent it, any plugin or anything you can suggest? I get so much lately it's driving me mad so any assistance is very much appreciated.

Shawnda Golliday United States

Monday, March 08, 2010 10:46 AM

Shawnda Golliday

i was just looking at your website on my slim Dual Sim cell, and I wanted to check if it would let me comment or if it made me go to a laptop to do it. I'll check back later on to check if it is working
<EM>Posted via Mobile Device</EM>

Cordia Hultquist United States

Friday, March 26, 2010 12:10 PM

Cordia Hultquist

I have read a few of the articles on your website now, and I really like your style of blogging. I added it to my favorites blog page list and will be checking back soon. Please check out my site as well and let me know what you think.

iphone 4g sim free United Kingdom

Saturday, April 03, 2010 7:06 AM

iphone 4g sim free

Great Post, I love to read articles that are informative and beneficial in nature. Thank you for sharing your knowledge and I look forward to seeing more.

11 x 17 Scanner United States

Sunday, April 04, 2010 6:10 PM

11 x 17 Scanner

i discovered your blog searching a couple of completely different matter on yahoo, bizarre ...... in any case, i spent some minutes studying this and another entries and gonna come again usually, i liked it :)

blank wedding invitation kits Germany

Wednesday, April 07, 2010 2:29 AM

blank wedding invitation kits

I'm glad that I have found your weblog and furthermore the design is just great.

Memorials United States

Wednesday, April 07, 2010 4:32 AM

Memorials

Hello nice blog im from leeds i found this on google I seen it on the top ten searches i found this blog very interesting good luck with it i will return to this blog soon

Everett Barnfield United States

Saturday, April 10, 2010 8:57 AM

Everett Barnfield

New Toolkit helps you to service your video game consoles by opening up them easily. I worked with with my  Super Nintendo,Nintendo 64 and I also opened my Nintendo GameCube easily with out breaking anything. I recommend to all who owns any type of Video game console like the ones I have or this others like DS and microsoft xbox and xbox 360 and ps3 and more. if you want clean or repair your systems and even you can repair your own cell and this tools will not be found on hard ware store and I recomend this Product Console Toolkit for all your repairs and cleaning also for upgrades.

roofers United States

Friday, April 16, 2010 11:54 AM

roofers

This was most helpful.  I've been wanting to write an application for my business because I have heard quite a lot about improving social media relations in this way.  Thank you so much for your advice!

Ines Rosse United States

Sunday, April 18, 2010 1:39 PM

Ines Rosse

Microsoft is awesomesaucesoft! ;)

Martin Blank France

Monday, April 19, 2010 8:21 AM

Martin Blank

I do not understand why but I am unable to display your article correctly on my computer. Must be my browser I suppose, have you experimented with Firefox to check if it works fine? May possibly be some adjustments on my side though... Weird...

steve jobs poster United States

Tuesday, April 20, 2010 9:43 AM

steve jobs poster

Cool site!  Just curious, what/who were your inspirations for putting together this web-site?  I've been looking through a ton of blogs lately and I suddenly feel like starting one.  I'm not exactly sure where to begin, but I'm gonna do a bit of searching around to learn.  Who would you use for your web host and where did you get your domain?  Thanks a lot!

Hier Artikelverzeichnis United States

Wednesday, April 21, 2010 10:55 AM

Hier Artikelverzeichnis

Thanks for taking this opportunity to talk about "Writing Facebook Applications",  I benefit from learning about this topic. If possible, as you gain data, please update this blog with new information. Thanks, Hier

Jenny Lear United States

Friday, April 23, 2010 4:33 PM

Jenny Lear

Superb summary, this is very similar to a site that I have. Please check it out sometime and feel free to leave me a comenet on it and tell me what you think. Im always looking for feedback.

watch eclipse United States

Friday, April 23, 2010 10:03 PM

watch eclipse

Hi what theme are you using for your site? Can you email me at Dudek@yahoo.com thanks

Haarentfernungen United States

Saturday, April 24, 2010 3:35 AM

Haarentfernungen

I have been reading a lot on here the topic Writing Facebook Applications inspired me, i have picked up some really great ideas. Thanks and i hope to see more soon.

watch eclipse online United States

Saturday, April 24, 2010 6:46 AM

watch eclipse online

Hi what theme are you using for your site? Can you email me at Dudek@yahoo.com thanks

bum marketing United States

Monday, April 26, 2010 4:55 AM

bum marketing

i like the layout of your blog. hope you don't mind if i do something similar with mine.

bum marketing United States

Monday, April 26, 2010 4:55 AM

bum marketing

can someone tell me how to get those little avatars to display in my comments section? thanx!

bum marketing United States

Tuesday, April 27, 2010 10:11 PM

bum marketing

i am subscribing. thanks

bum marketing United States

Tuesday, April 27, 2010 10:12 PM

bum marketing

i know i'm a little off topic, but i just wanted to say i like the layout of your blog. i'm new to the blogegine platform, so any tips on getting my blog looking nice would be appreciated.

buy HCG online United States

Tuesday, April 27, 2010 11:24 PM

buy HCG online

It was to my enjoyment to stubmble and to post to search engines.

Pension United States

Sunday, May 02, 2010 6:35 AM

Pension

Thanks for the information, i posted your blog to my facebook group in the category `Writing Facebook Applications`. Regards, Katy

Power Trainer United States

Wednesday, May 05, 2010 4:52 PM

Power Trainer

If you're interested in having a guest blog poster please reply and let me know, also if you want to have a guest account on my blog. Cheers, Dave the Power Trainer

Online News United States

Thursday, May 06, 2010 10:43 PM

Online News

This is really nice idea dude.iam really proud of you . Do u have twitter?? i want to follow you .thx

microsoft points Belgium

Friday, May 07, 2010 3:32 PM

microsoft points

Wonderful Weblog Article.

points generator Bosnia and Herzegovina

Saturday, May 08, 2010 5:09 PM

points generator

Thank you for posting the facts.

WEB Marketing Tools Jamaica

Sunday, May 09, 2010 1:58 PM

WEB Marketing Tools

this subject This excellent write-up has been really nicely constructed, and it also contains a large number of handy pieces of information. Really treasured the pro  crafting your piece of writing. You have made it uncomplicated so that i can appreciate.

Zikk United States

Monday, May 10, 2010 7:34 AM

Zikk

yo good blog and nice work our blog video newspaper will soon be adding reviews on blogs and add them to our as the top best 1000 blogs to visit we also do video reviews on Writing Facebook Applications  and all types of reviews go here

10 per month mobile phone deals Jordan

Monday, May 10, 2010 11:48 AM

10 per month mobile phone deals

this subject Since i discovered this excellent blog post while browsing in aol. Truly incredible, on the grounds that search engines can present very out of date findings but this one is certainly up-to-date! Anyhow, wholly entertaining, especially as this is absolutely not an item a lot of people have a tendency to publish something good about. All the best.

Luxembourg

Monday, May 10, 2010 1:15 PM

As a result of investing many hours on the net finally I've identified a person who seriously does know what they are preaching about thank you a great deal fantastic post.

Miscellaneous Article Israel

Monday, May 10, 2010 3:53 PM

 Miscellaneous Article

In the aftermath of investing many hours on the internet at last We've discovered somebody whom truly does know what they are speaking about many thanks so much wonderful posting.

BETTY RHODES United States

Monday, May 17, 2010 9:35 PM

BETTY RHODES

Hi great website yea nice job our review blog will soon be adding reviews on blogs and add them to our websites as the top best 100 blogs to visit we also do reviews on product recalls  all types of reviews we will get back to you

Bradly Armenia

Friday, May 21, 2010 4:53 AM

Bradly

Tristan Isolde United States

Sunday, May 23, 2010 1:53 PM

Tristan Isolde

Sorry for the huge review, but I'm really loving your new site, and hope this, as well as the excellent reviews some other people have written, will help you decide if it's the right choice for you.

Free Custom Articles United States

Tuesday, May 25, 2010 9:04 PM

Free Custom Articles

As of now, Facebook is the most popular Social Networking Site we can use to  have our business online. Using it, we can be able to promote and extend our products to all people in the world. 

Karmaloop Codes United States

Friday, May 28, 2010 12:23 PM

Karmaloop Codes

Hey, I just forwarded this to some friends, loving it! :)

Lee Wengert United States

Sunday, May 30, 2010 10:58 AM

Lee Wengert

Wonderful blog! I saw it at Google and I must say that entries are well thought of. I will be coming back to see more posts soon.

Ranee Meinhard United States

Sunday, May 30, 2010 10:58 AM

Ranee Meinhard

Thanks for this insightful post. The info I have gained from your blog is truly inspiring

home cleaning london United States

Monday, May 31, 2010 8:11 PM

home cleaning london

Ola... Hello. Home Cleaning London here. Forgive me but my english language is not nice.however...i just wish to tell that i like this page a lot.Many thanks!

Double Your Vertical Leap United States

Tuesday, June 01, 2010 8:44 PM

Double Your Vertical Leap

I believe that is without a doubt the most straightforward outline of which I have come across in a very long time period. I would like every blog site I start reading can always be so obvious with their answers.

penis exercises United States

Thursday, June 03, 2010 8:56 AM

penis exercises

nice post here guys, pretty good information all summed up very well indeeed.

Thomas Colman United States

Thursday, June 03, 2010 12:10 PM

Thomas Colman

Wedding day is special, as special as it comes, I always tell my brides to sit back and relax.

Livejasmin United States

Thursday, June 03, 2010 2:56 PM

Livejasmin

Thanks for taking the time to sharing the updates...extremely useful for me.

Livejasmin United States

Thursday, June 03, 2010 5:17 PM

Livejasmin

Nice one dude, I really like your work..

Livejasmin United States

Thursday, June 03, 2010 7:33 PM

Livejasmin

Nice one dude, I really like your work..

Free XBL Points United States

Sunday, June 06, 2010 1:34 PM

Free XBL Points

Greetings from Wisconsin!  Just saw your website.  Actually read your article, I'll email it along!  :]  Have a good day!

simple budget plan United States

Tuesday, June 08, 2010 3:26 PM

simple budget plan

I am horrible at managing money but, software is what me the most. I've tried money management software like Acemoney Lite and even the big name software I won't mention. But the best I've used is simple money manager. There is a free trial version but it is much better than the competition because of its low price. It's cheaper than filling up your gas tank or going to the theater and has many features like category history charts which is my favorite feature.

Young Hodgkinson United States

Wednesday, June 09, 2010 6:02 PM

Young Hodgkinson

There are things to keep in mind like cleaning, decorating, and making sure that the house is harmless for every person who lives there. Floor mats are one of those vital household tools. They can be put before the front door, in the bathroom, or even out on the deck Today, these basic but useful merchandise are also being considered for advertising purposes.

make a free website United States

Saturday, June 12, 2010 2:44 PM

make a free website

Hello, you got excellent site, very rich in content, correctly carefully thought out, personally I found here much interesting and useful

environment products United States

Sunday, June 13, 2010 8:56 PM

environment products

The environment is important and we all need to do our part to help the earth.

BOSCHER Pascal United States

Monday, June 14, 2010 2:06 PM

 BOSCHER Pascal

Nos devis pour la creation de site internet sur <A href="http://www.nspace.fr">www.nspace.fr</A> .

Evonne Kincer United States

Monday, June 14, 2010 3:18 PM

Evonne Kincer

I don't believe all on that post, but you do make some very good things. I am very interested in this topic and I personally perform alot of study as well. Either way it had been a well thoughtout plus pleasant read so I figured I would depart you a remark. Feel free to take a look at my internet site sometime & let me know what you think.

flash website United States

Tuesday, June 15, 2010 1:52 AM

flash website

I just wanted to take a minute to say thanks for posting this. This area was on my mind recently, as a result I sincerely loved this article!

Katheleen Segel United States

Tuesday, June 15, 2010 9:20 PM

Katheleen Segel

Please help me get the word out. With all of the recent disasters, the Red Cross needs everyone's support. Please visit RedCross.org and volunteer or donate.

Ricardo Buelow United States

Wednesday, June 16, 2010 2:06 AM

Ricardo Buelow

This is the one blog which I visit from last two weeks and I really like this and it helps ...

Tom United States

Friday, June 18, 2010 6:28 AM

Tom

Hey I was just wandering around the web and found your site, definitely glad I did because it had some of the information I was looking for for a report for school, thanks a mil.

Bacterial Vaginosis Natural Cure United States

Friday, June 18, 2010 4:19 PM

Bacterial Vaginosis Natural Cure

Outstanding blog post, a lot of high quality information.  I am about to show my girlftriend and ask them the things they think.

Franklin Armelin United States

Saturday, June 19, 2010 12:36 AM

Franklin Armelin

Fantastic blog post, a bunch of valuable material.

www.ampegba112.com United States

Saturday, June 19, 2010 1:04 AM

www.ampegba112.com

I determined that to be more useful well let me know how it works out! I adore what you folks are usually up too.

Tinnitus Remedy United States

Monday, June 21, 2010 7:19 PM

Tinnitus Remedy

Outstanding article, a lot of quality material.  I am about to show my friends and ask them the things they think.

Tinnitus Remedies United States

Monday, June 21, 2010 7:55 PM

Tinnitus Remedies

Impressive article, lots of practical information and facts.

Lorri Vonseggern United States

Tuesday, June 22, 2010 5:08 AM

Lorri Vonseggern

Hello! I just happened upon this web site today whilst researching for some various fitness terms in bing. After I ended up here I remained around a bit to look over a couple of articles... great stuff. I'm going to be sure to return down the road some time and catch up. Go USA!! World Cup 2010!

Benedict Dirth United States

Tuesday, June 22, 2010 10:53 AM

Benedict Dirth

Hey, thanks for posting.. I enjoyed reading it.

Gregory B United States

Wednesday, June 23, 2010 2:23 AM

Gregory B

Hey I was just wandering around the web and found your site, definitely glad I did because it had some of the information I was looking for for a report for school, thanks a mil.

Murano chandeliers United States

Wednesday, June 23, 2010 3:34 AM

Murano chandeliers

Thanks for that information.

venetian masks United States

Wednesday, June 23, 2010 3:45 AM

venetian masks

thanks againone thing, may i paste your entry on my site? i will add the source.regards!

venetian masks United States

Wednesday, June 23, 2010 3:46 AM

venetian masks

Substantially, your site is definately the freshest on this notable topic. I totally agree with you and will very much look forward to your upcoming updates.

Natural Cures for BV United States

Wednesday, June 23, 2010 7:36 AM

Natural Cures for BV

This is the 2nd time I've discovered your web site in the last couple weeks.  Looks like I should take note of it.

orp water ionizer review United States

Wednesday, June 23, 2010 11:06 AM

orp water ionizer review

I was studying something else about this topic on different blog.Incredibly, your view on it is diametrically contradicted to what I read previously. I am still reflecting over the opposite points of view, but I'm tipped strongly toward yours. And regardless, that's what is so wonderful about contemporary democracy and the marketplace of  thoughts onthe internet.

casino United States

Thursday, June 24, 2010 6:25 AM

casino

I have frequented your own posts before. The more I take in, the more I keep coming back! ;~) Rob

clothing United States

Tuesday, June 29, 2010 10:11 PM

clothing

Cool theme of your blog and Im looking to do the same for site. Do you have any recomendations? Please email ME.

buy twitter follower United States

Thursday, July 29, 2010 9:28 AM

buy twitter follower

Informative article with lots of useful details in it. It is really helpful to us.
thanks and keep writing.

full drum sets United States

Thursday, July 29, 2010 3:41 PM

full drum sets

Thanks for the info. The net is so cluttered with crap it's becoming difficult to find exactly what you're looking for nowadays. Have you got RSS on this website?

making money on the web United States

Wednesday, August 11, 2010 5:30 PM

making money on the web

I disagree with most people here; since I started reading this post I couldn't stop until I finished, although it wasn't just what I had been searching for, was still a great read though. I will instantaneously take your RSS feed to stay informed of future updates.

making money on the web United States

Saturday, August 14, 2010 10:27 AM

making money on the web

I differ with most guys here; I started reading this post I couldn't stop until I was done, although it wasn't just what I had been trying to find, was a nice read though. I will instantaneously take your feed to maintain in touch of future updates.

Add comment


(Will show your Gravatar icon)

  Country flag


  • Comment
  • Preview
Loading