Chrome Development: My First Extension

Magic Elves

It’s safe to say that, over the past year, my confidence in web development and design had greatly diminished.  Coming out of a small private school, I was the only student within 3 grade years who was even remotely interested in computing – web development or otherwise.  After landing an amazing internship last year with a local startup, I was immediately overwhelmed by the new language (PHP), writing SQL queries, and working with source control and virtual hosts.

Even as a Computer Information Science student, I always subconsciously thought certain things on the internet were made by magical programming elves – stuff that was much too difficult for even the average programmer.  I’m not sure exactly why I thought this way, but I suspect it has to do with two main things.  First, I went to a very small high school, and there was only one computer course offered.  This one course taught Microsoft Office, Paint, and other basic Windows utilities and programs.  That’s it.  The only programming I was introduced to in high school was BASIC on my TI-83.  Secondly, upon arriving at USC, I was only introduced to 2 languages in my first two years – Visual Basic and Java.  The problem, I think, is that the end result of our assignments was usually something not too far from what I had built in high school on my calculator, just on a bigger scale, with fancier graphics.  Again, I thought, can’t everyone do this?

It was not until I started this internship that I saw programmers making useful web apps.  And it was awesome.  And absolutely overwhelming.  Over the next few months, I provided my superiors with an endless stream of questions, problems, and things I had messed up.  I infuriated them, infuriated myself, and felt I was going no where.  Although I am by no means a good programmer yet, I have come a little ways since then, I think.  The thing that has helped to drive me the most is the desire to make useful web applications – things that I previously thought were untouchable.  The following is my first successful attempt, apart from projects at work, at doing so.

Chromification

The Problem

Every web app should, in some way, solve a problem.  Going into this project, here are the 2 things I knew:

  • I wanted to develop a Chrome extension that would make life easier for me, if not other people.
  • I wanted to tap into some API to get/post data

After searching around, I realized that one thing that keeps me from using my YOURLS installation to shorten links, is that it requires me to copy the link, log in to my installation, paste, shorten and copy again.  Although I think the idea of a link shortener on my own personal domain, I had not been using it as frequently as I thought I would, for the reasons stated above.  Therefore, I decided to build some extension that would automate the process for me – taking the URL of the current page tab, shortening it, and spitting out the shortened link.

Learning Extensions

Although I had tinkered around with extensions before, I had never had any success.  This tutorial from Google is really helpful in learning how extensions work – it gives just enough to get you started, and leaves the door wide open for pursuing your extension development.

Building shortenYOURLS

To begin, every extension requires a manifest.json file that includes important details about the functionality, permissions, pages and icons.  As shortenYOURLS is pretty basic, I don’t need a whole lot in my file.

{

“name”: “shortenYOURLS”,

“version”: “1.0”,

“description”: “Creates a YOURLS shortened URL and copies to a text box for the user to copy.”,

“browser_action”: {

“default_icon”: “icon.png”,

“popup”: “popup.html”

},

“options_page”: “options.html”,

“permissions”: [

“tabs”,

“http://*/”

]

}

The name, version and description are all pretty self explanatory.  Browser action basically defines the icons to be displayed in the browser, as well as the HTML pages used in the extension.  A chrome extension can ONLY read an HTML file for a popup window – PHP and other files will not work. For this example, we have only defined a popup window, which is the window that expands from the extension’s icon when you click it.  For the time being, don’t worry about the “options_page” definition – we’ll get to that in a bit.

Permissions are very important.  Essentially, this tells Chrome what outside resources you need access to in order for your extension to work properly.  If you don’t have these defined correctly, your extension won’t work.  For my project, I needed to connect to the YOURLS installation, and to read the current tab URL.  The tab part was easy – I just set a “tabs” permission.  The YOURLS API was a little trickier.  The problem is that the API file I need to access is located at a different place for each user, since the point of YOURLS is to provide a URL shortener on your own server.  After asking the community at Stack Overflow, I decided to just ask for global web permissions – “http://*/”.

So now that we have the manifest completed, we can build the app.  At its heart, it was very little code and fairly quick to write.  All I needed to do was hit up the YOURLS API, including POST parameters for the unique user signature, the URL being shortened, and the action (shorten, expand, etc).  All of this information can be found on the “Tools” page of your YOURLS installation.  As I said before, you must use an HTML page for your extension popup, so I chose to add some JQuery to get the job done.  First, I needed to grab the current tab URL.

chrome.tabs.getSelected(null, function(tab) {

var tabUrl = tab.url;

});

Pretty straightforward.  Having that, I nested the following inside the getSelected() function to send the information along to the YOURLS installation.

$.post(localStorage[“domain”]+”/yourls-api.php”, { signature: localStorage[“sig”], action: “shorturl”, url: tabUrl, format: “text” }, function(data) {

$(“#url”).val(data);

$(“#url”).select();

});

This is a pretty straightforward JQuery $.post().  The required parameters are attached (signature, action, url and format).  This will return data to the variable defined in the function call, in this case “data”.  I simply threw this into the input box in my HTML page, selected the text to make it easier to copy, and I’m done!

Now, you may be wondering what “localStorage” is.  When I first wrote the extension, I did it just for me, so I hardcoded the signature and domain.  However, as this is hopefully going to be used by more people, and most likely if it is, those people aren’t going to want to modify code, pack the extension and load it, it would be useful to have an options page that made this process much simpler.  Every extension is allowed to have its own options page, accessible from Options->Tools->Extensions.  The obvious answer, then, was to create a quick options form that allows users to enter their domain and signature.

Remember when I said to forget about the “options_page” definition in manifest.json?  Well, now’s the time to remember it.  That definition simply defines which HTML page you want shown as your option page.  If nothing is defined, there will be no options link beside your extension on the Tools page.  However, if there is something defined, the link will open your specified HTML document in a new tab for users to set their preferences.

Much like the popup, you can just construct a simple HTML form (or whatever) to set user data.  What’s great is that you can save information to “localStorage”, allowing you to access it anywhere (except manifest.json) in your code.  So, with a quick Javascript function and an HTML form, I had my options page.

function save_options() {

var domain = document.getElementById(“domain”).value;

var sig = document.getElementById(“signature”).value;

localStorage[“domain”] = domain;

localStorage[“sig”] = sig;

}

Obviously, this is 2 lines longer than it needs to be, but I did it for clarity’s sake.  I also chose to include a separate function that adds the values of localStorage to the form when a user arrives at the options page, so they know if they’ve set options yet.

And that’s it!  You know have a fully functioning, packable Chrome extension.  Sorry for the lack of brevity – I haven’t written in almost a year, and I’ve learned a great deal through this venture and recent work I’ve been doing.  Hope it helps!

To Do, To Do…So Much To Do

I’m a big fan of Patrick McManus.  For those who don’t know, he’s an outdoor humorist who has written several books – all of which are hilarious and I highly recommend.  Anyway, one of my favorite stories of his is called “Worry Box”.  In it, he explains how we all have an worry box that remains constantly occupied.  When a worry is removed, one immediately replaces it, meaning there are a never-ending supply of worries for everyone’s box.

I have a similar theory about to-do’s.  My mental list remains constantly full.  The past year has been amazing.  I’ve started to sell art somewhat successfully around the city, which has always been a dream of mine.  I passed Calculus 2, landed an amazing new internship, a story about a past relationship of mine was made into a verse of a song on a pretty successful local hip-hop album, I got a dog and I got a stellar girlfriend.  Not a bad year.  YET, I’ve accomplished very little in terms of this site.

And for that, I apologize.  I still love to blog, but it seems like it gets so easily lost in the hustle and bustle of everyday life.  However, I have not stopped blogging.  I still try to put out at least one post every few weeks, and I have lots I want to work on in terms of the site’s organization.

This leads me to 2 things.  First, subject matter.  Since this site started in 2006ish, I have maintained that it is a tech-related blog – and specifically it will remain devoid of any and all political discussions and references.  All that said, one of the reasons I don’t blog as often is that I am trying to increase the quality of posts.  If you look at the archives, you’ll see that I used to blog quite frequently, though many entries would be short and, in a few cases, extremely pointless.  I don’t like that.  As a result, I’m contemplating trying to migrate this blog to a more wide-reaching selection of topics.  The quality would (hopefully) remain the same, and chances are many of them would still be tech-related.  However, it would allow me the opportunity to discuss more things that are of interest to me and readers.

Secondly, the domain.  No doubt you’ve noticed that the header image and title has changed, and that techpadawan.com redirects to rybomedia.com.  I’m still at odds of what to do about this.  On the one hand, I want to keep rybomedia.com, as it was the first domain I ever bought and the only reason I know any HTML or CSS.  However, the name does not describe what the blog is.  I had contemplated using rybomedia.com to contain information about the different projects I’m working on (Joupes, TaskPl.us, RyboMedia, PalmettoGraffiti, etc), but since I’m a terrible decision maker I’m still torn.

Lastly, the design.  This site has gone through 5 major design changes through the years.  Essentially, as I became a slightly better designer, I would re-make the site.  As it is, and although it’s somewhat simple, I’m proud of the site.  There are a few tweaks I would like to add in the near future that would make things more visually appealing, and I would like to optimize it to be more search-engine friendly.

So, I’ll ask you, the reader, what you think of all this.  Leave me a comment with your two cents and I’ll see what I can do to host another giveaway soon.

Window Cling Giveaway!

wallgraphicsIt’s that time again. I like to reward techPadawan (formerly RyboMedia) readers by occasionally hosting giveaways for cool prizes. Thanks to a blog sponsor, that’s easy.

This month’s giveaway is from LargeFormatPosters.com. As the name suggests, LFP specializes in banners, large posters, and other sorts of wall graphics. Whether your company needs a wall graphic of the logo printed up, or you just want an attractive, large sticker to keep someone’s mouth shut (kidding!), this product from Large Format Posters will do the trick.

Specs:

  • (1) 24×24 Adhesive Wall Graphic
  • Shipping: FREE UPS Ground Shipping
  • Eligibility: Limited to US Residents only
  • Must be 18 or older to enter

The winner will be chosen on April 26th at 8pm – so you’ve got 2 weeks to enter!  As always, there are multiple ways to enter.

To be eligible, just post a comment below letting me know what you might want printed.  You can earn extra entries (1 each) by subscribing to the blog, ‘sharing’ the Facebook status, following me on Twitter, or tweeting the giveaway – just be sure to let me know in your comment!  If you decide to tweet about this, try to use “@rybo” and “#techpadawan” in your update.

Good luck!

Galactic Empire State of Mind

Generally speaking, I don’t do too much link sharing on the blog.  I tend to save that sort of thing for Facebook and Twitter.  However, I couldn’t resist this time.

Now, I realize I haven’t blogged in a while.  School is getting hectic and my side project is starting to take off.  I don’t want to turn into one of those bloggers that slows down blogging, only to come back once every 4 months to post an announcement about the latest Apple product.

Anyway, someone sent this to me a few days ago.  Since then, I’ve watched it 8 times.  Fantastic.  The Star Wars geek in me is satisfied, and the shockingly *good* rap verses nearly make me squeal in white boy excitement.  Enjoy.

The Last.fm Good Radio Station

As is my bad habit with many social networking sites, I signed up for a Last.fm account some time ago and never really used the service.  I tend to just plug in my iPod or pop in an audiobook if I’m sitting at a computer for a while, so I thought the whole internet radio thing wasn’t for me.  I was wrong.

Before going any further, let me say that I realize I’m behind the times.  Like 90% of the posts I write, I’m bringing old news, reviews and haikus.  I have actually yet to bring a single haiku to the blog – but that will change.  Anyway, I know there are people who have yet to discover some of the cooler things the internet has to offer.  And that is why I write.

For those that don’t know, Last.fm is a website that allows you to listen to customized internet radio stations.  Simply pick a band, song or genre tag and you’re good to go.  From there, you can fast forward, love or ban tracks from your station.  Every artist you play is automatically added to your library, and Last.fm tracks how many times you have played each artist and song, as well as how many playlists and “loved” songs you have.

profile

If it sounds a lot like Pandora up to now, this is where it really takes off.  First, Last.fm is much more user-friendly and user-fueled than Pandora is.  Users are much more interactive, thanks to things like tagging artists and songs, voting on band photos and analyzing friends listening compatibility.  Sure, knowing who listens to the same music as you isn’t a huge deal.  But it is cool.  Take Lucy, a local friend who is a Last.fm junkie.  Upon adding her as a friend, I saw this:

lovesongssuck

Incredibly useful?  Maybe not.  But still neat.

If you’re not sold just yet, I’ve saved the best for last.  Thanks to my friend (and past guest blogger) Jimmy,  I’m now scrobbling.  With a few clicks and a little piece of software, you can start scrobbling too.

Scrobbling is what makes Last.fm so great.  Basically, it crawls through your iTunes library (or Windows Media Player library) and your iPod to gather information on your listening habits.  Check out a list of supported devices here.  Once completed, it adds this information to your online Last.fm account.  It’s a great way for new users to quickly build a large library.  If you use the Audioscrobbling software, you can synchronize your listening with your account automatically, so as you listen your songs are displayed in your online account and immediately added to your library.

To sum up, you should try it.  It’s real swell.  Check out a few more screenshots below or get up some courage and dive right in.

library audioscrobbling

Desert Island Wave!

If you’re a regular reader, you saw my feeble attempt to persuade and change the world a few weeks ago…and here we go again. This time, let’s keep it light.

The inspiration for this post came last night, while sketching in my blackbook and watching The Office. More specifically, I was watching “The Fire”. In it, Dunder Mifflin employees must think of ways to pass time while they wait for a small fire to be put out. Enter Desert Island. I thought it would make a cool blog post.

So here are the rules. I will name a few categories and list the top 5 things in that category that I would bring to a deserted island (or imagine you can only use the following for the rest of your life). You will do the same. On your blog. And send me an email or trackback so I can read it! For my game, a full season of a show counts as one DVD and a 2 disc audio set counts as one cd. Let’s begin!

DVD’s

  1. Empire Strikes Back
  2. No Country for Old Men
  3. Hustle and Flow
  4. Little Miss Sunshine
  5. Scrubs Season 6

I’m young.  I’m allowed to be shallow.

Music CD’s

  1. Weezer’s The Blue Album
  2. 2Pac’s All Eyez On Me
  3. Dave Matthew’s Live at Fenway Park
  4. Brad Paisley’s 5th Gear
  5. Flipsyde

What can I say?  I could listen to Jim Dale all day long.

Audiobooks/Spokenword

  1. Harry Potter and the Deathly Hallows
  2. Star Wars: Dark Forces
  3. Father Gilbert: Dead Air
  4. The Westing Game
  5. Harry Potter and the Sorcerer’s Stone

Books

  1. Ender’s Game by Orson Scott Card
  2. The Scarlet Letter by Nathaniel Hawthorne
  3. The Fellowship of the Ring by JR Tolkein
  4. Harry Potter and the
  5. Brave New World by Aldous Huxley

Board(ish) Games

  1. Mancala
  2. Chess
  3. Scrabble
  4. Risk
  5. Monopoly

For all my designer friends, assume you were restricted to using only the following for the rest of your life (#000 & #FFF are freebies).

Colors

  1. #00BBEE
  2. #FF77FF
  3. #FFBB00
  4. #DDDDDD
  5. #444444

For now, that’s all I’ve got.  So, if you have a few minutes, play with me!  Copy and paste this template or come up with your own.  Add lists (writing utensils, sports equipment, etc) or take away lists.  Have fun with it.

Look forward to seeing your choices!

RyboMedia: 2009 Year In Review

I’m not going to lie – 2009 has not been a great year for me.   Both semesters this year have been pretty tough, relationships have gone awry, and I’ve experienced the ups and downs that everyone goes through.   BUT I’ve met some really cool people and made some lifelong friends.

I think if I had to put a label on this year, I think it would be “friends”. I’ve met some good ones and gotten a lot closer to some old ones. They’ve helped me a lot this year, and I’m very blessed to have such a great group.

I guess I’ve learned that it’s not always fun to learn.  In a lot of ways it’s been a rebuilding year…breaking me down and hopefully building me up stronger.  In times like that, we can take comfort in the fact that even through the hard times, you’re learning something.

A good friend of mine from high school was killed towards the end of last year.  After our senior year, we would talk occasionally, but she moved and so I did not hear the news until the beginning of 2009.  Throughout the past year, though, I feel like it’s taught me to appreciate those that you love, because you never know if they, or you, will be there tomorrow.  My grandfather shared a great quote with our family a few years ago.

“Treasure those you love, and tell those you treasure now, because you never know what tomorrow will bring.”

I urge everyone who reads this to follow this advice – it can mean a lot to those you love.  Now, on to more happy things!

If my count is correct, I’ve written 151 posts in the last year.  WOW.  That’s crazy.  I think that the blog has grown a lot since last year in terms of maturity, depth, and importance.  Instead of short, link-sharing posts about whatever I stumble across (I now have a Twitter account for that!), I’ve tried to write longer, slightly thought-provoking posts.  Obviously that means there won’t be as many, but hopefully you have (and will) enjoy them more.  Throughout the last year, the website has undergone some design changes, we’ve now got a pimpin’ mascot, and things are rolling somewhat smoothly.

So, if you will let me, I’d like to highlight a few of my favorite posts really quick – just in case you missed anything.

The Switch: Windows to Ubuntu

“…Within one hour of using Ubuntu, I was slamming my head on the table, wondering why I had been so stubborn in not trying it out.  Sure, I had to install a few drivers, go through 236 updates (even though I had 8.1, it was a touch outdated), and I’m still working on wireless (Broadcom is messing me up – any help?), but it is, in a word, AMAZING.”

Introductions, OpenDNS, and Project Euler

My first guest post, written by my good buddy Breland Miley.

“I have no idea how I should start this off, but I’ll give it a shot. My name is Breland, and I’m a new blogger here on RyboMedia.com. I go to college with Rybo, and after meeting at a first year book experience of all things, we found out the we had some friends in common and that we were both pretty much computer geeks. I’ve been messing with computers since I was about five and my fascination with them has grown by leaps and bounds over the past several years. I’ve participated in programming competitions (FBLA) and won first place in nationals. My favorite programming language is probably PHP, only because I know it best, but I have experience in many others.”

3 Films from Last Year You Missed and Shouldn’t Have

My second guest post, written by Daniel Thompson.

“There are so many films that come out in a year, it’s almost impossible to avoid seeing a few that were a waste of your time and missing a few that were worth your time.  While I’m sure you saw the big budget summer films like ‘Iron Man’ and ‘The Dark Knight’, and you probably made it out to a few award winners like ‘Slumdog Millionaire’, I can guarantee you missed a few of the more underrated films of 2008.  Don’t worry, I’m here to help.”



7 Sites in 7 Days

The link here is actually to the whole list of the 7 sites that I chose for this campaign.

The “Twitter is Narcissistic” Refute

By far one of the most popular posts of all time on this blog.

“…Ok, so Twitter was built to help friends and colleagues stay connected.  Now let me explain why I find Twitter so appealing….”

Getting to the Core of the Apple Problem

The most read, commented on, and hated on post I have ever written.

“I hate that guy.  You know exactly who i’m talking about.  Sipping his latte on a couch at Starbucks, Macbook propped on his lap, iPhone vibrating at his side, a $200 messy haircut, and an assortment of grungy, but not too grungy, clothes.  He turns to me, a smug look on his face.  Depending on which friend it is, he’ll describe some application he’s just discovered, a podcast he’s just recorded, or a website he’s just designed – all using his trusty Mac.  Without fail, in a somewhat sadistic, most definitely condescending tone, he’ll end with, ‘See, Apple stuff is just better.  Vista sucks.’ “

ConvergeSC

I had the pleasure of attending my very first web conference this year.  Here are the summary posts of what the speakers talked about.

Of iPhones and Gnomes…

“Big Prize. If you’re on Facebook or Twitter, there’s a good chance you’re somewhat familiar with the name. Whether you check the fan page every hour, are constantly confused by the odd little sayings your friends write on their wall, or your Twitter homepage is sprinkled with #moonfruit tweets – you’ve seen the name.”

Computers, People, and the Fact That I’m Selfish

You see, computers appeal to me in a maniacal way that people don’t – I can manipulate them, create an idea and mold them into what I want them to do. I can put as little or as much time into them and receive a directly proportionate amount of joy from the results. I can have a problem (even something as simple as boredom) and make something to solve it. And what’s best, the selfish part of me can come out saying, “I built that. I made it, you didn’t, I rock.” It might not be the best, it might not help anyone else in the world, but it’s mine and I’m proud of it.”

Spotlight at NecessaryCool

Chances are, you’re probably wondering why you’re reading about some random guy when you could be reading about all things cool. Jef told me a little while ago that he would like to have me help kick off the new “Spotlights” feature of NC – where you get a little glimpse of what some fellow bloggers do on their own sites.

Basically, RyboMedia is a blog about all things tech, geeky, or internet related. I write about awesome internet companies, design tips, blogging tricks, web conferences I have attended, and even some controversial pieces. Oh, and I do occasional giveaways. How’s that for concise?”

Whiplash

My third guest post by Jimmy Sawczuk (and one of the most popular posts on the blog).

“We ran into a problem at work last week that was, at the same time, a nightmare and exactly the kind of problem you want to have. The culprit was our latest Big Prize Giveaways promotion, and the problem was that our app had metaphorically gone from 0-60 in about two seconds, and it experienced the same thing your neck feels when it accelerates that fast: whiplash. This was my first experience with an app that was this big; even in my McJournal days, I rarely averaged more than 60,000 (well, take that number and divide by 10,000 and you have the real number) hits per day. So in the last week, I’ve learned a ton during our march to a million fans that I think can be useful to everyone, no matter how close your app is to that kind of scale.”

My Columbia Twitter Revolution

“Now here’s the important part.  I’m one person.  I can’t do this alone.  For this to catch on, I’m going to need lots of help.  It’s going to take getting used to, but I think if it ever does take off it could serve very useful.  Think about it – a live list of tweets to keep you constantly informed on traffic problems, breaking news, local food deals, and weather alerts.  All for free.”

100 Things I Love On the Internet

“This is the 200th post on RyboMedia (hence the 200 “o’s”).  To celebrate this milestone, I’ve put together a list of 100 things I love about the internet. Why not 200? Read until the end and you’ll see. Enjoy!”


And that’s it, y’all!  Hope you enjoyed.  I am looking forward to the new year.  I have a new guest post lined up that I think you will really enjoy, and I have another big review of an awesome website coming up soon.  Stay tuned, and have a fantastic new year!

100 Things I Love On the Internet

Wooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo

ooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo

oooooooooooooooooooooooooooooooooooooooooooooooooooooooot!

This is the 200th post on RyboMedia (hence the 200 “o’s”).

To celebrate this milestone, I’ve put together a list of 100 things I love about the internet. Why not 200? Read until the end and you’ll see. Enjoy!

    50 Random Goodies

  1. Overusing hashtags.  #awesome
  2. Watching The Office on Hulu the day after it airs.
  3. Blogging.
  4. SideReel.  Where else can I go to find links to watch my Scrubs and Friends?
  5. SquaredEye.  Because they rock and look perty.
  6. Amazon wishlists.
  7. Tupac is alive!!!
  8. Pandora.  Seriously, the more I use it the more I love it.
  9. Hey Ya! acoustic style.
  10. Graffiti t-shirts.
  11. Restaurant.com.  Admittedly, it was better when I had a lady friend, but still an awesome place to get gift certificates dirt cheap.
  12. Joupes.  Yeah right, I’m going to list 100 things and not do some self-promotion?
  13. Farmville.
  14. Kobe Bryant highlight videos.
  15. Wookieepedia.  It’s a Star Wars Wikipedia.  Need I say more?
  16. HTML color code charts.  Far more useful than you’d expect.
  17. Nerds proposing.
  18. More nerds proposing.
  19. Horrible, horrible, horrible albeit hilarious parents.
  20. Amazing dance skills that I will never have.
  21. The Star Wars tattoo chick.  Actually not a turn on for me, but still quite interesting.
  22. Google Reader.  Sharing is quick and easy, and I can star items for later, more intense reading just like Gmail.
  23. Retrievr.  If you’ve never used it, it lets you find Flickr images by color.
  24. Google Image Search.  It makes staring at my future wife so, so easy.
  25. ESPN Fantasy Football.  I’ll never play football so this is as close as this 160 pound white boy gets.
  26. Cute dogs.
  27. Google Chrome.
  28. Google Voice.
  29. Google cake.
  30. Google.
  31. The best song ever, sung by Percy Sledge and Michael Bolton (live footage).
  32. SEEN painting the Hollywood sign.
  33. Bob Parsons.
  34. Listening to NBA games for free.
  35. The things I’m going to put my kids through (because I’m a Star Wars junkie).
  36. This dude.
  37. Hungry Howies.
  38. Extensive graffiti guide.
  39. Awesome pictures of cute babies.
  40. What up with that?!
  41. Personality driven ministry.  #SARCASM
  42. Nature in all it’s beauty.
  43. Really, really, really good web design.
  44. A 63-can color test.
  45. DRM-Free mp3 downloads for less than $1
  46. Listening to the exact songs I want…for free! (Yep, same as above)
  47. Google Chrome Extensions
  48. Mitch Hedberg
  49. My cousins baby trying to hug my dog.
  50. Star Wars Adidas shoes!
  51. 50 Blogs

  52. SiteSketch101 Teaching You How to Blog with Passion, Power and Profit
  53. BlogussionBlogging Discussion, Tips & Tricks
  54. ColorFreak – Make sure to check out the Banksy piece!
  55. KomodoMedia – BEAUTIFUL site, great design-related posts
  56. UnmatchedStyle – Reviews of beautifully designed websites
  57. Webdesigner Depot – One of the coolest header images I’ve ever seen on a site
  58. The Design Cubicle – Well researched, deep posts on blogging and web design
  59. Design Milk – Neat design, from home furnishings to computer equipment
  60. ThinkVitaminCarsonified’s Blog About the Web
  61. Desizn Tech – Great design blog (CSS, textures, etc)
  62. CrazyLeaf Design Blog – Beautifully designed blog
  63. Daily Blog Tips – What’s it sound like?
  64. Blog Oh! BlogWanna sizzle up your WordPress blog?
  65. WordPress JediFeed your WordPress Demons!
  66. Unique BlogCreate A Blog That Stands Out From the Crowd
  67. Million CluesTechnology Guide for the Digital Citizen
  68. Spyre Studios – The blog of a small but high quality design agency
  69. Lumos Studio PhotographyGreat photography from an old teacher of mine
  70. Allan Cole Roberts – More grat photography from a great web designer
  71. The Official Gmail BlogNews, tips and tricks from Google’s Gmail team and friends
  72. Rands In Repose – Great writing, make sure to check out the Nerd Handbook
  73. iGeekTrooperOn the Front Lines for the Geek Empire
  74. Necessary CoolThe Premier Guide to All That is Cool (That’s me!)
  75. Cope2 – Personal blog of graffiti legend Cope2
  76. Senses Lost – Graffiti pics, interviews, product reviews, and other cool stuff.
  77. Jersey Joe Art – Blog of graffiti icon Rime
  78. Hurricane Game – That’s right, I’m a big fan of The Game
  79. Chip OglesbyRandom Whatness
  80. Jeff Elder –  On Charlotte Networking
  81. LakersNationFor fans.  By fans.
  82. The No Look Pass – Great NBA blog by Lakers fan
  83. Cleveland, Curveballs, and Common SensePutting 2 and 2 Together Since 1987
  84. People of Wal-Mart – You guessed it – pictures of Wal-People
  85. Fail Blog – Funny FAIL pictures and videos
  86. Awkward Family PhotosSpreading the Awkwardness
  87. eSarcasmGeek Humor Gone Wild
  88. SocialWayne – Tech tips and tricks!
  89. Jasongraphix – The journal of Jason Beaird
  90. Technically Incorrect – Awesome news related to tech stuff…yep…
  91. Chris Pirillo – Great posts by a true all-around geek
  92. BDawg – Great blog from a good friend of mine, unveiling web apps, etc.
  93. Conversion Rate ExpertsTurning Clicks into Customers
  94. Joupes Blog – Of course I’m going to put it here.
  95. Tynan on TechTechnology from a jaundiced perspective
  96. Carrie Underwood – More of a news feed, but it helps me stay up to date with my lady
  97. BoingBoing – Tech, gadgets, science, culture and art news, etc.  Whew.
  98. Download Squad – Latests in tech news and software downloads
  99. ISO50 – Great photography and design work by Scott Hansen
  100. GeekDad – Logic puzzles and other awesome geeky things
  101. The Star Wars Blog – Need I say more?

Now, granted, this post would have been a whole lot more effective if I had 200 items in my list. However, I seriously doubt you’ve read this far…and even fewer of you would have if I had 200 things. SO, here’s the challenge.

By this time next year, I would love to have a completed list of 200 things (blogs, videos, awesome Twitter people, whatever!) – half of them mine, half of them yours.  Lame?  I don’t care, it’s my blog.  Start commenting.

16×20” Rolled Canvas from Digital Room!

canvasprint_dr

That’s right – another giveaway!  A few days ago, DigitalRoom.com contacted me about a new 16×20″ Rolled Canvas giveaway for one luck RyboMedia reader!

What’s nicer than a great photo or piece of art printed up for free?  Having it printed on canvas!  I can say from experience that Digital Room produces great quality prints – I have an 18×24″ poster hanging in front of me right now.  I can only imagine how nice the canvas will be.

Check out their canvas printing page for more details and product specs.  To read more about UPrinting (who sponsors this blog) check out this review by You the Designer.

As always, I get one too!  Regular readers can probably already guess what I’ll have printed – graffiti!  I haven’t decided if I’m going to do another collection of famous artists or my own work, but I will definitely be adorning my walls with more street art.

To enter the contest, just post a comment below letting me know what you might want printed.  You can earn extra entries by subscribing to the blog, following me on Twitter, or tweeting the giveaway – just be sure to let me know in your comment!  If you decide to tweet about this, try to use “@rybo” and “#giveaway” in your update.

This contest will be live until 3pm on November 22.

Good luck!

My Columbia Twitter Revolution

cae

Several weeks ago at Social Media Club Columbia, SC, Dan Conover (@xarker) spoke about the potential for standardized Twitter hashtags for cities.

For example,  Charlotte and Charleston have been trying to adopt localized hashtags for news, traffic, etc.  For more on this, read this post.  Thanks to search lists, Charleston natives can simply add “#chs” to their tweets to be seen by other .  Here’s a wonderful example of it’s usefulness:

2009-11-08_2315

Obviously, one hashtag for an entire cities worth of tweeting can get crowded.  That’s why the proposed plan adds includes tags for traffic, news, breaking stories, weather, the election, etc.  Genius.

Well, I’m ready to do the same in Columbia.  We have lots of people who use Twitter on a day-to-day basis, and our local news stations are getting into the game.  I keep up with weather updates and breaking news throughout the day by following the Twitter accounts of local papers and TV stations.  If we had standardized hashtags, it would be much, much easier.

So here’s my plan.  I’ve tweeted with a few local Columbia people and I’ve decided to try and start something.  Thanks for your help @cophotog, @mandiengram, @hollybounds!  The “base hash” for this is #cae.  This is the airport code for Columbia – just like Charlotte uses #clt and Charleston uses #chs.

  • #cae – A bit long, but #csc and #cola are already taken.  Add this if you need the quick attention of other locals.
  • #caenews – Pretty self explanatory – used for local news.
  • #caebrk – Breaking news.  Again, it’s longer but…oh well.  🙂
  • #caewthr – Weather updates and alerts.
  • #caetrfk – Columbia traffic updates.
  • #caefood – Local food tweets.
  • #caetech – Blogs, social sites, web contest, etc from Columbia.

Got any suggestions, additions, or proposed revisions?  Leave me a comment below.

Now here’s the important part.  I’m one person.  I can’t do this alone.  For this to catch on, I’m going to need lots of help.  It’s going to take getting used to, but I think if it ever does take off it could serve very useful.  Think about it – a live list of tweets to keep you constantly informed on traffic problems, breaking news, local food deals, and weather alerts.  All for free.

Let’s face it – this is long overdue.  People want news, and they want it right now wherever they are, right when it happens.  The great thing is that it’s a collaborative effort.  Everyone in Columbia (or Charlotte, or Charleston, or wherever you introduce these standardized hashtags) can contribute to a constantly updated stream of news and traffic updates.