<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Rybo</title>
	<atom:link href="http://rybo.us/feed/" rel="self" type="application/rss+xml" />
	<link>http://rybo.us</link>
	<description></description>
	<lastBuildDate>Tue, 21 Feb 2012 20:16:05 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Excursions</title>
		<link>http://rybo.us/tribe-vs-drake/</link>
		<comments>http://rybo.us/tribe-vs-drake/#comments</comments>
		<pubDate>Tue, 21 Feb 2012 20:11:04 +0000</pubDate>
		<dc:creator>ryan</dc:creator>
				<category><![CDATA[inspiration]]></category>
		<category><![CDATA[music]]></category>

		<guid isPermaLink="false">http://rybo.us/?p=672</guid>
		<description><![CDATA[I miss hip hop. Back in the days when I was a teenager Before I had status and before I had a pager You could find the Abstract listening to hip hop My pops used to say, it reminded him of be-bop I said, well daddy don&#8217;t you know that things go in cycles The [...]]]></description>
			<content:encoded><![CDATA[<p>I miss hip hop.</p>
<p><img src="http://theaudacityofcolor.com/core/wp-content/uploads/2011/08/Excursions-Tribe-Mix.jpg" width="600" /></p>
<blockquote><p>
<i><br />
Back in the days when I was a teenager<br />
Before I had status and before I had a pager<br />
You could find the Abstract listening to hip hop<br />
My pops used to say, it reminded him of be-bop<br />
I said, well daddy don&#8217;t you know that things go in cycles<br />
The way that Bobby Brown is just ampin like Michael<br />
Its all expected, things are for the lookin<br />
If you got the money, Quest is for the bookin<br />
Come on everybody, let&#8217;s get with the fly modes<br />
Still got room on the truck, load the back boom<br />
Listen to the rhyme, to get a mental picture<br />
of this black man, through black woman victim<br />
Why do I say that, cuz I gotta speak the truth man<br />
Doing what we feel for the music is the proof and<br />
Planted on the ground, the act is so together<br />
Bonafied strong, you need leverage to sever<br />
The unit, yes, the unit, yes, the unit called the jazz is<br />
deliberatley cheered LP filled with streeet goods<br />
You can find it on the rack in your record store (store)<br />
If you get the record, then your thoughts are adored<br />
and appreciated, cause we&#8217;re ever so glad we made it<br />
We work hard, so we gotta thank God<br />
Dishin out the plastic, do the dance till you spastic<br />
If you dis&#8230; it gets drastic<br />
Listen to the rhymes, cuz its time to make gravy<br />
If it moves your booty, then shake, shake it baby<br />
All the way to Africa a.k.a. The Motherland (uh)<br />
Stick out the left, then I&#8217;ll ask for the other hand<br />
That&#8217;s the right hand, Black Man (man)<br />
Only if you was noted as my man (man)<br />
If I get the credit, then I&#8217;ll think I deserve it<br />
If you fake moves, don&#8217;t fix your mouth to word it<br />
Get in the zone of positivity, not negativity<br />
Cuz we gotta strive for longevity<br />
If you botch up, what&#8217;s in that (what?)<br />
A pair of Nikes, size ten-and-a-half (come on, come on)<br />
</i>
</p></blockquote>
<p><iframe width="640" height="480" src="http://www.youtube.com/embed/4poAOhrsvWE" frameborder="0" allowfullscreen></iframe></p>
]]></content:encoded>
			<wfw:commentRss>http://rybo.us/tribe-vs-drake/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Saturday Fun</title>
		<link>http://rybo.us/saturday-fun/</link>
		<comments>http://rybo.us/saturday-fun/#comments</comments>
		<pubDate>Sat, 04 Feb 2012 23:59:52 +0000</pubDate>
		<dc:creator>ryan</dc:creator>
				<category><![CDATA[graffiti]]></category>

		<guid isPermaLink="false">http://rybo.us/?p=662</guid>
		<description><![CDATA[Got the chance to do more painting today at Habitat. I have so far to go, my 3D, can control and fills need so much work. Still, super fun and looking forward to going back. Got to put up a quick throwie and rep AB/SEVS/UNTK.]]></description>
			<content:encoded><![CDATA[<p align="center"><img src="https://lh5.googleusercontent.com/-CxPYAdnH7VA/Ty3FOWdavPI/AAAAAAAAHxI/o0tj69JZU4M/s800/IMG_20120204_124611.jpg" width="700" /></p>
<p>Got the chance to do more painting today at Habitat.  I have so far to go, my 3D, can control and fills need so much work.  Still, super fun and looking forward to going back.  Got to put up a quick throwie and rep AB/SEVS/UNTK.</p>
<p align="center"><img src="https://lh5.googleusercontent.com/-0MSMx3tFCfE/Ty3FNeeW-_I/AAAAAAAAHxA/JCRzcFLoCG8/s800/IMG_20120204_124301.jpg" width="700" /></p>
<p align="center"><img src="https://lh6.googleusercontent.com/-ZkTuATrFWOY/Ty3FOlOqV2I/AAAAAAAAHxQ/r3shwqN8N08/s800/IMG_20120204_101849.jpg" width="700" /></p>
<p align="center"><img src="https://lh5.googleusercontent.com/-ntH5EmMHb5k/Ty3KXOrPbcI/AAAAAAAAHxg/ugqSu9FYsuE/s800/IMG_20120204_191218.jpg" width="700" /></p>
]]></content:encoded>
			<wfw:commentRss>http://rybo.us/saturday-fun/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Roll Call</title>
		<link>http://rybo.us/roll-call/</link>
		<comments>http://rybo.us/roll-call/#comments</comments>
		<pubDate>Thu, 10 Nov 2011 23:38:07 +0000</pubDate>
		<dc:creator>ryan</dc:creator>
				<category><![CDATA[inspiration]]></category>

		<guid isPermaLink="false">http://rybo.us/?p=634</guid>
		<description><![CDATA[]]></description>
			<content:encoded><![CDATA[<p><img src="http://rybo.us/wp-content/uploads/2011/11/308223_2504783574810_1109610046_32882509_210510353_n.jpg" alt="" title="308223_2504783574810_1109610046_32882509_210510353_n" width="720" height="480" class="aligncenter size-full wp-image-636" /></p>
<p><img src="http://rybo.us/wp-content/uploads/2011/11/IMAG1516-682x1024.jpg" alt="" title="IMAG1516" width="682" height="1024" class="aligncenter size-large wp-image-635" /></p>
<p><img src="http://rybo.us/wp-content/uploads/2011/11/317791_2336685012451_1109610046_32738043_754380105_n.jpg" alt="" title="317791_2336685012451_1109610046_32738043_754380105_n" width="720" height="480" class="aligncenter size-full wp-image-641" /></p>
<p><img src="http://rybo.us/wp-content/uploads/2011/11/302074_2444118458220_1109610046_32832624_2136782446_n.jpg" alt="" title="302074_2444118458220_1109610046_32832624_2136782446_n" width="720" height="480" class="aligncenter size-full wp-image-640" /></p>
<p><img src="http://rybo.us/wp-content/uploads/2011/11/307244_2573871783228_1147305120_3041689_1672768799_n.jpg" alt="" title="307244_2573871783228_1147305120_3041689_1672768799_n" width="720" height="312" class="aligncenter size-full wp-image-637" /></p>
<p><img src="http://rybo.us/wp-content/uploads/2011/11/302539_2573869383168_1147305120_3041688_1372450316_n.jpg" alt="" title="302539_2573869383168_1147305120_3041688_1372450316_n" width="720" height="540" class="aligncenter size-full wp-image-638" /></p>
<p><img src="http://rybo.us/wp-content/uploads/2011/11/IMAG1500-1024x682.jpg" alt="" title="IMAG1500" width="720" class="aligncenter size-large wp-image-642" /></p>
<p><img src="http://rybo.us/wp-content/uploads/2011/11/IMAG1448-1024x682.jpg" alt="" title="IMAG1448" width="720" class="aligncenter size-large wp-image-643" /></p>
<p><img src="http://rybo.us/wp-content/uploads/2011/11/IMAG1438.jpg" alt="" title="IMAG1438" class="aligncenter size-full wp-image-647" width="720" /></p>
<p><img src="http://rybo.us/wp-content/uploads/2011/11/IMAG1483.jpg" alt="" title="IMAG1483" class="aligncenter size-full wp-image-645" width="720" /></p>
]]></content:encoded>
			<wfw:commentRss>http://rybo.us/roll-call/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Dashboard Update</title>
		<link>http://rybo.us/dashboard-update/</link>
		<comments>http://rybo.us/dashboard-update/#comments</comments>
		<pubDate>Sun, 23 Oct 2011 21:09:47 +0000</pubDate>
		<dc:creator>ryan</dc:creator>
				<category><![CDATA[Tech]]></category>

		<guid isPermaLink="false">http://rybo.us/?p=625</guid>
		<description><![CDATA[In preparing for upcoming job interviews, I&#8217;ve been working on my dashboard a little more. Here&#8217;s a preview of some of the changes. I&#8217;ll most likely write a post explaining some of them, and the problems encountered along the way, very soon.]]></description>
			<content:encoded><![CDATA[<p>In preparing for upcoming job interviews, I&#8217;ve been working on my dashboard a little more.  Here&#8217;s a preview of some of the changes.  I&#8217;ll most likely write a post explaining some of them, and the problems encountered along the way, very soon.</p>
<p align="center"><a href="http://rybo.us/wp-content/uploads/2011/10/Screenshot-at-2011-10-23-1702211.png"><img src="http://rybo.us/wp-content/uploads/2011/10/Screenshot-at-2011-10-23-1702211-1024x560.png" alt="" title="Screenshot at 2011-10-23 17:02:21" width="700" class="aligncenter size-large wp-image-631" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://rybo.us/dashboard-update/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Highlight Selected Page: Jquery + CSS</title>
		<link>http://rybo.us/highlight-selected-page-jquery-css/</link>
		<comments>http://rybo.us/highlight-selected-page-jquery-css/#comments</comments>
		<pubDate>Sat, 08 Oct 2011 03:32:54 +0000</pubDate>
		<dc:creator>ryan</dc:creator>
				<category><![CDATA[Tech]]></category>

		<guid isPermaLink="false">http://rybo.us/?p=606</guid>
		<description><![CDATA[While working on my latest side project, I realized that I&#8217;ve never highlighted the current page in the navigation menu of any site I&#8217;ve worked on. While it doesn&#8217;t initially sound like it would be an issue, it&#8217;s a tad more involved than it sounds. I read up on a few different methods, but ended [...]]]></description>
			<content:encoded><![CDATA[<p>While working on my latest side project, I realized that I&#8217;ve never highlighted the current page in the navigation menu of any site I&#8217;ve worked on.  While it doesn&#8217;t initially sound like it would be an issue, it&#8217;s a tad more involved than it sounds.  I read up on a few different methods, but ended up creating my own.  It&#8217;s only a few lines of code, and although it requires adding an ID and class to each page in navigation, it does the trick.  It&#8217;s a similar solution to one of the popular ways of doing this, but without as much convoluted CSS.</p>
<p>First, the HTML.  Since I&#8217;m working in a framework that declares the body tag for each page statically, I added a unique div ID to each of my main pages to identify it, and then gave each div the same class.  Then assigned the same ID to the navigation links that correspond to the pages.</p>
<div class="code_block">
<code><br />
&lt;div id="home_page" class="current"&gt;&lt;&#47;div&gt;<br />
&lt;div id="about_page" class="current"&gt;&lt;&#47;div&gt;<br />
</code>
</div>
<p></p>
<div class="code_block">
<code><br />
&lt;div id=&quot;nav&quot;&gt;<br />
    &nbsp;&nbsp;&nbsp;&lt;ol&gt;<br />
        &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;a href=&quot;index&quot; id=&quot;home_page&quot;&gt;&lt;li&gt;home&lt;/li&gt;&lt;/a&gt;<br />
        &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;a href=&quot;about&quot; id=&quot;about_page&quot;&gt;&lt;li&gt;about&lt;/li&gt;&lt;/a&gt;<br />
    &nbsp;&nbsp;&nbsp;&lt;/ol&gt;<br />
&lt;/div&gt;<br />
</code>
</div>
<p>Now that we&#8217;ve got the HTML, we need to set the styles for the selected page.  For my project, I just wanted a simple grey background behind the selected page.  I decided to make the selected style the exact same for the navigation hover.</p>
<div class="code_block">
<code><br />
.selected_nav, #nav a:hover {<br />
	background-color:#EEE;<br />
	border-radius:7px;<br />
	padding: 3px 0;<br />
}<br />
</code>
</div>
<p></p>
<p>Finally, we just need to grab that ID on every page load, and tack on the styling class.  I added this JQuery function to the default layout page so that it&#8217;s included in every page request.</p>
<div class="code_block">
<code><br />
$(document).ready(function() {</p>
<p>        &nbsp;&nbsp;&nbsp;$('#'+$('.current').attr('id')).addClass('selected_nav');</p>
<p>    });<br />
</code>
</div>
<p></p>
<p>Good night, and good luck.</p>
]]></content:encoded>
			<wfw:commentRss>http://rybo.us/highlight-selected-page-jquery-css/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Daily Gamecock Response</title>
		<link>http://rybo.us/daily-gamecock-response/</link>
		<comments>http://rybo.us/daily-gamecock-response/#comments</comments>
		<pubDate>Wed, 28 Sep 2011 11:46:36 +0000</pubDate>
		<dc:creator>ryan</dc:creator>
				<category><![CDATA[Hidden]]></category>

		<guid isPermaLink="false">http://rybo.us/?p=600</guid>
		<description><![CDATA[I’m writing this in response to last week’s article by Robert Sinners entitled “Republican candidates should balance science, beliefs”. Mr. Sinners raises a few objections to the views represented by Republican presidential candidates in recent debates, and I was very disappointed with his commentary &#8211; both in writing style and content. Right or wrong, his [...]]]></description>
			<content:encoded><![CDATA[<p>I’m writing this in response to last week’s article by Robert Sinners entitled “<a href="http://www.dailygamecock.com/viewpoints/item/2177-republican-candidates-should-balance-science-beliefs">Republican candidates should balance science, beliefs</a>”.  Mr. Sinners raises a few objections to the views represented by Republican presidential candidates in recent debates, and I was very disappointed with his commentary &#8211; both in writing style and content.  Right or wrong, his arguments are ill-researched at best, and rely on a few fairly large assumptions that require further thought.</p>
<p>Mr. Sinners first states that Republican candidates “reject exploring scientific principles and demonize any sense of progress” by their views on climate change, same-sex marriage and evolution.  This seems to suggest that a disbelief in his own views is a staunch rejection of truth &#8211; that there are not two sides to any of these issues.  What evidence, you may ask, does Mr. Sinners have concerning climate change?  This is answered (I think) when he urges all those who don’t believe to “inhale exhaust fumes, and report back to me on their findings”.  What’s your point, Mr. Sinners?  There may be a logical connection, but if you’re going to write an open letter to students at such a large university, please expound.  </p>
<p>Playing devil’s advocate, I would also argue that a removal of constraints and clarifications from a right qualifies more people for that right.  In the case he presents, marriage.  Will a redefinition of the word “marriage” open the door for a horse-man union?  Maybe, maybe not.  Either way, it affects our day to day life as American citizens, and must be discussed.  Mr. Sinners, I think, is absolutely wrong in calling this a threat to progress.  For starters, belief in progress itself is ridiculous (like, let’s say, progressing towards the edge of a cliff).  If our end goal is a safe and prosperous nation, then an in depth, transparent discussion of controversial topics among our nations leaders is the type of progress we should crave as American citizens.</p>
<p>Lastly, we arrive at what I believe to be the most glaring issue with this article &#8211; his claims about evolution.  Sinners claims that creationism is actually not contradictory to evolution at all!  In fact, it&#8230;wait &#8211; in fact what?  This shocking statement is followed by no explanation, other than saying that humans are evolving all the time &#8211; a statement that has absolutely no bearing on the topic at hand, at least without context.  Is Mr. Sinners suggesting that humans are evolving, but were also created by an intelligent designer?  That’s a debate worth having.</p>
<p>The fundamental problem with Sinners article is that he fails to see the correlation between beliefs and his political views.  Sinners actually states that he believes candidates should have both faith and a scientific understanding &#8211; but should still think a certain way.  So are faith and science mutually exclusive?  What, I might ask, would you say to a person whose faith and scientific observations and research have persuaded him to believe in creationism and against evolution?  What about someone who aligns their views with the many climate change scientists who disagree with global warming?  Is it possible that there might actually be candidates, with different views than yours, who back their beliefs with both faith and science?</p>
]]></content:encoded>
			<wfw:commentRss>http://rybo.us/daily-gamecock-response/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Looking for a Good Home</title>
		<link>http://rybo.us/looking-for-a-good-home/</link>
		<comments>http://rybo.us/looking-for-a-good-home/#comments</comments>
		<pubDate>Wed, 14 Sep 2011 23:40:35 +0000</pubDate>
		<dc:creator>ryan</dc:creator>
				<category><![CDATA[canvas]]></category>

		<guid isPermaLink="false">http://rybo.us/?p=588</guid>
		<description><![CDATA[All of these are currently looking for a good home. They actually look a lot nicer in person than they do in these terrible quality cell phone pictures. If you think you have that home, or know someone who does, please contact me.]]></description>
			<content:encoded><![CDATA[<p align="center"><img src="http://rybo.us/wp-content/uploads/2011/09/2011-09-14-19.17.02-768x1024.jpg" alt="" title="SAMSUNG" width="500" class="aligncenter size-large wp-image-589" /></p>
<p align="center"><img src="http://rybo.us/wp-content/uploads/2011/09/2011-09-14-19.18.17-768x1024.jpg" alt="" title="SAMSUNG" width="500" class="aligncenter size-large wp-image-590" /></p>
<p align="center"><img src="http://rybo.us/wp-content/uploads/2011/09/297627_274966695855404_110934138925328_1113517_1811662352_n.jpg" alt="" title="297627_274966695855404_110934138925328_1113517_1811662352_n" width="500" class="aligncenter size-full wp-image-596" /></p>
<p align="center"><img src="http://rybo.us/wp-content/uploads/2011/09/2011-09-14-19.19.28-1024x768.jpg" alt="" title="SAMSUNG" width="500" class="aligncenter size-large wp-image-591" /></p>
<p>All of these are currently looking for a good home.  They actually look a lot nicer in person than they do in these terrible quality cell phone pictures.  If you think you have that home, or know someone who does, please contact me.</p>
]]></content:encoded>
			<wfw:commentRss>http://rybo.us/looking-for-a-good-home/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Dashboard:  Commit #796cfbcff764</title>
		<link>http://rybo.us/dashboard-commit-796cfbcff764/</link>
		<comments>http://rybo.us/dashboard-commit-796cfbcff764/#comments</comments>
		<pubDate>Tue, 13 Sep 2011 03:57:20 +0000</pubDate>
		<dc:creator>ryan</dc:creator>
				<category><![CDATA[Tech]]></category>

		<guid isPermaLink="false">http://rybo.us/?p=576</guid>
		<description><![CDATA[Around this time two years ago, in Zuckerberg-ish like attempt to distract myself from a bad breakup, I joined with my good friend Breland in an attempt to create a killer web app called Joupes. After months of working on it (I would design and market, Breland would code), we released the Alpha version. Yeah, [...]]]></description>
			<content:encoded><![CDATA[<p>Around this time two years ago, in Zuckerberg-ish like attempt to distract myself from a bad breakup, I joined with my good friend Breland in an attempt to create a killer web app called Joupes.  After months of working on it (I would design and market, Breland would code), we released the Alpha version.  Yeah, you heard right &#8211; Alpha, not Beta.  This here is real.  Long story short, it was a very un-Zuckerberg-ish like failure.  We had big ideas and little patience, and while I still believe we had some excellent features, they were far from ready.</p>
<p>Fast forward two years.  I&#8217;m a Senior in college, engaged and working an internship which has allowed me to learn and practice web development on a daily basis.  On top of this, I&#8217;ve been blessed to be given a few art opportunities over the last year, which is a dream come true.  As with any success, mediocre as it may be, there arise challenges.  Over the past few months, I have become increasingly aware of the lack of stable system for tracking canvas orders.  Surely, a task-minded, sometimes OCD list-maker would have a system in place to keep track of a years worth of sales?  Unfortunately for this list-maker, the answer was no.  Over the last few weeks, in the bits of spare time I&#8217;ve found between classes and my work schedule, I sought out to remedy this.  Below are the details and outline of my progress thus far.</p>
<h2>Information</h2>
<p>I&#8217;m building this application on top of the open source <a href="https://bitbucket.org/jimmysawczuk/scaffolding" target="_blank">Scaffolding framework</a> by Jimmy Sawczuk.</p>
<p>This is commit #796cfbcff764 and can be viewed <a href="https://bitbucket.org/rybo/dashboard/changeset/796cfbcff764" target="_blank">here on Bitbucket</a>.</p>
<h2>Overview</h2>
<p>The original plan for this dashboard is that it would be a simple list of canvas orders and prices, kept in a database and displayed in a table format somewhere in depths of my server.  As with all coding projects, though, this quickly turned into much more.</p>
<p>At the base, I wanted to have a working, intuitive system for adding and tracking orders.  In it, I would track the price, size, description, customer and if the order had been completed.  The gross totals would be added and displayed, along with information pulled from the Facebook fan page.  All of this information, including a brief &#8220;Recent Orders&#8221; list, would be displayed on the main dashboard index.  The entire list, including the ability to add items, would be on a separate page.</p>
<p>Also, just for fun, I wanted some way to countdown to my wedding day.  Call me crazy, but I cannot wait to be married, and having a visual reminder that the day is drawing nearer is something I&#8217;d love to have every time I log in.</p>
<h2>Countdown</h2>
<p>This has probably been the most fun thing to work on so far in the app.  It&#8217;s pretty simple, but I played around with some JQuery that let me do some neat things.  The code for the countdown is fairly straight forward, though I had to do some research as I had never used the <code>mktime()</code> function.  I ended up using a slight variation of <a href="http://lab.artlung.com/countdown/">this code</a>, which not only figures out the remaining time, but breaks it into hours and days.</p>
<div class="code_block">
$time = ( (mktime ($hour,0,0,$month,$day,$year) &#8211; time(void) )/3600 );<br />
$hours = (int)$time;<br />
$days  = (int)($hours/24);
</div>
<p>After that, I thought it would be neat to pull both of our Facebook pictures from Facebook and display them alongside the countdown.  As it turns out, this is incredibly simple and doesn&#8217;t require an auth token.  In fact all you have to do is use the Graph API picture URL as your image src:</p>
<div class="code_block">http://graph.facebook.com/ryanlbowen/picture</div>
<p>Finally, I thought it should be livened up with some neat JQuery effects.  I decided to animate the containing div by making it grow as soon as the page is loaded, the dropping in the content.</p>
<div class="code_block">
$(&#8216;.box&#8217;).animate({width:&#8221;930px&#8221;}, 2000, function() {<br />
$(&#8216;#marriage&#8217;).slideDown();<br />
});
</div>
<p>Basically, that just tells the &#8216;box&#8217; class to increase its width to 930px, do it at a speed of 2000, and once the action is complete, slide down the contents of &#8216;#marriage&#8217;.  Aside from the cool effects, here is the end result.</p>
<p align="center"><a href="http://rybo.us/wp-content/uploads/2011/09/Screenshot-2.png"><img src="http://rybo.us/wp-content/uploads/2011/09/Screenshot-2.png" alt="" title="Screenshot-2" width="700" class="aligncenter size-full wp-image-581" /></a></p>
<h2>Order Tracking</h2>
<p>This piece actually went fairly smoothly.  I searched through old emails, Facebook messages, photo comments and text messages to create an order history spreadsheet.  I imported this into my database and pulled all orders into the Palmetto Graffiti page.</p>
<p>The one thing I will say about this is that I decided to only show prices for completed orders.  For the orders that had not yet been completed (meaning I had not yet collected money), I showed a &#8220;Mark As Complete&#8221; link.  This simply grabbed the ID of the selected order and updated the database to show the order had been complete.</p>
<p align="center"><a href="http://rybo.us/wp-content/uploads/2011/09/Screenshot-1.png"><img src="http://rybo.us/wp-content/uploads/2011/09/Screenshot-1-1024x378.png" alt="" title="Screenshot-1" width="700" class="aligncenter size-large wp-image-583" /></a></p>
<hr />
<p>Though most of the functionality is completed for the task list, it&#8217;s still not quite done.  I&#8217;ve also had to rethink the Flickr idea, since the load time for this was a little ridiculous.  Once I get these things done, I&#8217;ll follow this post up with my next major commit.</p>
]]></content:encoded>
			<wfw:commentRss>http://rybo.us/dashboard-commit-796cfbcff764/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Chrome Development</title>
		<link>http://rybo.us/chrome-development-my-first-extension/</link>
		<comments>http://rybo.us/chrome-development-my-first-extension/#comments</comments>
		<pubDate>Thu, 08 Sep 2011 21:06:59 +0000</pubDate>
		<dc:creator>ryan</dc:creator>
				<category><![CDATA[Tech]]></category>

		<guid isPermaLink="false">http://rybo.us/?p=570</guid>
		<description><![CDATA[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 &#8211; web development or otherwise. After landing an amazing internship last [...]]]></description>
			<content:encoded><![CDATA[<p><strong>Magic Elves</strong></p>
<p>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 &#8211; 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.</p>
<p>Even as a Computer Information Science student, I always subconsciously thought certain things on the internet were made by magical programming elves &#8211; 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 &#8211; 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?</p>
<p>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 &#8211; things that I previously thought were untouchable.  The following is my first successful attempt, apart from projects at work, at doing so.</p>
<p>Chromification</p>
<p>The Problem</p>
<p>Every web app should, in some way, solve a problem.  Going into this project, here are the 2 things I knew:</p>
<p>I wanted to develop a Chrome extension that would make life easier for me, if not other people.<br />
I wanted to tap into some API to get/post data<br />
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 &#8211; taking the URL of the current page tab, shortening it, and spitting out the shortened link.</p>
<p>Learning Extensions</p>
<p>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 &#8211; it gives just enough to get you started, and leaves the door wide open for pursuing your extension development.</p>
<p>Building shortenYOURLS</p>
<p>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.</p>
<div class="code_block">
{<br />
“name”: “shortenYOURLS”,<br />
“version”: “1.0″,<br />
“description”: “Creates a YOURLS shortened URL and copies to a text box for the user to copy.”,<br />
“browser_action”: {<br />
“default_icon”: “icon.png”,<br />
“popup”: “popup.html”<br />
},<br />
“options_page”: “options.html”,<br />
“permissions”: [<br />
"tabs",<br />
"http://*/"<br />
]<br />
}
</div>
<p>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 &#8211; 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 &#8211; we’ll get to that in a bit.</p>
<p>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 &#8211; 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 &#8211; “http://*/”.</p>
<p>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.</p>
<div class="code_block">
chrome.tabs.getSelected(null, function(tab) {<br />
var tabUrl = tab.url;<br />
});
</div>
<p>Pretty straightforward.  Having that, I nested the following inside the getSelected() function to send the information along to the YOURLS installation.</p>
<div class="code_block">
$.post(localStorage["domain"]+”/yourls-api.php”, { signature: localStorage["sig"], action: “shorturl”, url: tabUrl, format: “text” }, function(data) {<br />
$(”#url”).val(data);<br />
$(”#url”).select();<br />
});
</div>
<p>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!</p>
<p>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.</p>
<p>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.</p>
<p>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.</p>
<div class="code_block">
function save_options() {<br />
var domain = document.getElementById(”domain”).value;<br />
var sig = document.getElementById(”signature”).value;<br />
localStorage["domain"] = domain;<br />
localStorage["sig"] = sig;<br />
}
</div>
<p>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.</p>
<p>And that’s it!  You know have a fully functioning, packable Chrome extension.  Sorry for the lack of brevity &#8211; 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!</p>
]]></content:encoded>
			<wfw:commentRss>http://rybo.us/chrome-development-my-first-extension/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>ReStore Birthday</title>
		<link>http://rybo.us/restore-birthday/</link>
		<comments>http://rybo.us/restore-birthday/#comments</comments>
		<pubDate>Mon, 05 Sep 2011 00:10:16 +0000</pubDate>
		<dc:creator>ryan</dc:creator>
				<category><![CDATA[News]]></category>

		<guid isPermaLink="false">http://rybo.us/?p=559</guid>
		<description><![CDATA[I visited the ReStore several weeks ago and was given the opportunity to paint a wall (pictured below). It was a lot of fun, and I look forward to going back. This Saturday, I will be there from 10am until 2pm, painting boards, doors, etc outside, as well as selling palmetto canvases. There will be [...]]]></description>
			<content:encoded><![CDATA[<p>I visited the ReStore several weeks ago and was given the opportunity to paint a wall (pictured below).  It was a lot of fun, and I look forward to going back.  This Saturday, I will be there from 10am until 2pm, painting boards, doors, etc outside, as well as selling palmetto canvases.  There will be food, giveaways and special sales, as well as a few other invited guests with displays.  Find more info and RSVP on the <a href="http://www.facebook.com/event.php?eid=271163019564266">Facebook event page</a>.</p>
<p>Come out and say hi, donate or shop!</p>
<p align="center"><img src="http://www.midlandsrestore.org/images/STEVE/images/events/2011events/6thBIRTHDAY/birthdayfb.png" />&nbsp;<img src="http://lh4.ggpht.com/-00wfIK1SkMU/TLd_rMRQJzI/AAAAAAAAByE/WiQxET1vOxk/IMG_20101014_170108.jpg" width="320" height="415" /></p>
<p align="center"><img src="http://lh6.ggpht.com/-jXjgVPWtpOk/Tk12FCxYcpI/AAAAAAAAHSo/1h5wKfcsu5o/283366_2204296902831_1109610046_32584777_7193008_n.jpg" width="700px" height="460px"></p>
]]></content:encoded>
			<wfw:commentRss>http://rybo.us/restore-birthday/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

