<?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>Buddy Lindsey</title>
	<atom:link href="http://buddylindsey.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://buddylindsey.com</link>
	<description>because reading textbooks gets boring</description>
	<lastBuildDate>Mon, 30 Jan 2012 23:33:21 +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>PostgreSQL &#8211; Week 1 of 7 Databases in 7 Weeks</title>
		<link>http://buddylindsey.com/postgresql-week-1-of-7-databases-in-7-weeks/</link>
		<comments>http://buddylindsey.com/postgresql-week-1-of-7-databases-in-7-weeks/#comments</comments>
		<pubDate>Mon, 30 Jan 2012 23:33:21 +0000</pubDate>
		<dc:creator>Buddy Lindsey</dc:creator>
				<category><![CDATA[Database]]></category>
		<category><![CDATA[book]]></category>
		<category><![CDATA[PostgreSQL]]></category>
		<category><![CDATA[review]]></category>

		<guid isPermaLink="false">http://buddylindsey.com/?p=669</guid>
		<description><![CDATA[Relational Databases are great databases, and a good staple of any development stack when flexible querying ability is needed. Currently my main RDBMS is MySQL, but since the acquisition by Oracle I have been a bit turned off by it. Something always rubbed the wrong way as it was, but the purchase made me really [...]]]></description>
			<content:encoded><![CDATA[<p></p><p><a href="http://buddylindsey.com/wp-content/uploads/2012/01/PostgreSQL-9.0.1.gif"><img src="http://buddylindsey.com/wp-content/uploads/2012/01/PostgreSQL-9.0.1.gif" alt="" title="PostgreSQL-9.0.1" width="275" class="alignright size-full wp-image-670" /></a></p>
<p>Relational Databases are great databases, and a good staple of any development stack when flexible querying ability is needed. Currently my main RDBMS is MySQL, but since the acquisition by Oracle I have been a bit turned off by it. Something always rubbed the wrong way as it was, but the purchase made me really want to move away. However, I never knew to what, or what to read to decide. This first chapter sealed the deal on my move to PostgreSQL for all non-wordpress and future projects.</p>
<h3>Impressions of the Book</h3>
<p>As noted above knowing what to read about PostgreSQL has been hard, but the book nailed what I wanted to know. I don&#8217;t really care too much about SQL Syntax, but what I wanted was more of the nitty gritty of how it worked along with what array of abilities it has. I got that and then some. </p>
<p>While some of the content was over my head because I have never had to deal with that kind of data storage and retrieval I could really see the flexibility incase I need to go there. The best part of the chapter is it was a deep dive with all the assumptions that I knew what I was doing with an RDBMS which allowed the content to be more specific.</p>
<h3>What I Learned</h3>
<p>For this database this section is going to be a bit small because I am used to RDBMS&#8217;s, but that doesn&#8217;t mean I didn&#8217;t learn anything. There are 3 key things that suck out in my head the most which I like, but are probably trivial to many other people.  These might be in other database engines, I don&#8217;t know.</p>
<h4>Sub Selection</h4>
<p>I had never thought about this before, but this is a great way to keep referential integrity without having to lookup id&#8217;s everywhere. Here is the code that drew my attention to it.</p>
<pre class="brush: sql; title: ; notranslate">
INSERT INTO events (title, starts, ends, venue_id)
VALUES ('Mobi', '2012-02-06 21:00', '2012-02-06 23:00', (
     SELECT venue_id FROM venues WHERE name = 'Crystal Ballroom'
)
</pre>
<h4>LIKEs</h4>
<p>I specifically liked ILIKE which is case insensitive like vs a case sensitive LIKE. I have not seen this before and I remember running into an issue in the past, not sure what RDBMS, where I wanted all uppercase only, but kept getting mixed results. It is cool there is a distinction.</p>
<h4>Extensibility</h4>
<p>To be honest I had never thought about writing, or having, extra functionality in a database engine before from 3rd parties. This chapter not only showed me you can, but there is a lot of power in using them.</p>
<h3>Overall</h3>
<p>Chapter 1 was a great read, easy to follow and witty. Good amount of information in a short amount of time with not much fluff. It was a fairly deep dive as advertised for one reasonably length&#8217;d chapter. I really liked in the wrap-up where they talked about the strengths and weaknesses of PostgreSQL. However, I can only hope they expand on what they said in the weakness section in later chapters by detailing out how to use non-relational data. </p>
<p>I have high hopes for the future chapters as I was quite impressed by this first one. Join me next time for Riak.</p>
]]></content:encoded>
			<wfw:commentRss>http://buddylindsey.com/postgresql-week-1-of-7-databases-in-7-weeks/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>7 Databases in 7 Weeks &#8211; 8 Week Review and Experience</title>
		<link>http://buddylindsey.com/7-databases-in-7-weeks-8-week-review-and-experience/</link>
		<comments>http://buddylindsey.com/7-databases-in-7-weeks-8-week-review-and-experience/#comments</comments>
		<pubDate>Tue, 24 Jan 2012 01:18:06 +0000</pubDate>
		<dc:creator>Buddy Lindsey</dc:creator>
				<category><![CDATA[Administration]]></category>
		<category><![CDATA[Database]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Ruby]]></category>
		<category><![CDATA[book]]></category>
		<category><![CDATA[CouchDB]]></category>
		<category><![CDATA[HBase]]></category>
		<category><![CDATA[MongoDB]]></category>
		<category><![CDATA[Neo4J]]></category>
		<category><![CDATA[NoSQL]]></category>
		<category><![CDATA[PostgreSQL]]></category>
		<category><![CDATA[Redis]]></category>
		<category><![CDATA[review]]></category>
		<category><![CDATA[Riak]]></category>

		<guid isPermaLink="false">http://buddylindsey.com/?p=663</guid>
		<description><![CDATA[Databases are annoying and generally suck. Many us developers prefer to just do stuff with data and don&#8217;t like to deal with storing data beyond a nice pretty api. However, to be an effective software developer we also understand knowing about databases is a smart idea, doesn&#8217;t mean we have to like it. One of [...]]]></description>
			<content:encoded><![CDATA[<p></p><p><a href="http://pragprog.com/book/rwdata/seven-databases-in-seven-weeks"><img alt="7 Databases in 7 Weeks" src="http://imagery.pragprog.com/products/251/rwdata.jpg?" title="7 Databases in 7 Weeks" class="alignright" width="295" /></a></p>
<p>Databases are annoying and generally suck. Many us developers prefer to just do stuff with data and don&#8217;t like to deal with storing data beyond a nice pretty api. However, to be an effective software developer we also understand knowing about databases is a smart idea, doesn&#8217;t mean we have to like it.</p>
<p>One of the biggest problems for me is I don&#8217;t really know a lot about data stores outside of RDBMS&#8217;s. NoSQL data stores do not generally make a lot of sense to me, I know about them technically, but I haven&#8217;t found (m)any good overviews which help things click on proper ways to use them. It is my hope that reading <a href="">7 Databases in 7 Weeks</a> will be that final piece of knowledge which helps everything click into place.</p>
<h3>A Note</h3>
<p>I feel I should note before moving on this book is still in beta so things can, and will probably change. Most of the book covers different NoSQL databases so with my limited knowledge anything is better than nothing. I just wanted to be sure to point out as of now the book is in beta, but that doesn&#8217;t mean it is wrong or bad.</p>
<h2>What to Expect</h2>
<p>Over the course of the next 7 weeks I will take one database at a time and do all the exercises, to the best of my ability, and read the entire chapter. I will then describe what I have learned and what, if anything, really helped things click in my head. Finally, on week 8 I will do a wrap-up of everything I have read and my opinion of the book.</p>
<h2>What is In the Book</h2>
<p>Databases of course <img src='http://buddylindsey.com/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> . The book is broken up into the following databases:</p>
<ol>
<li>PostgreSQL</li>
<li>Riak</li>
<li>HBase</li>
<li>MongoDB</li>
<li>CouchDB</li>
<li>Neo4J</li>
<li>Redis</li>
</ol>
<p>Each database will get its own post so I can do them justice. Especially since there are several different types of databases.</p>
<h2>What I Hope to Get Out of The Book</h2>
<p>I mostly use RDBMS&#8217;s, namely mysql, but I need to learn NoSQL, and want to learn PostgreSQL, if for nothing else to know when and where to use it. I don&#8217;t want to just use it because I can, but because I should. In the first chapter, which was an overview, this is what they promise and I think they will deliver. I don&#8217;t intend to be an expert in each database, but at least have a working knowledge of them to combat my database ignorance. </p>
<p>Please comeback next week for the first part on PostgreSQL.</p>
]]></content:encoded>
			<wfw:commentRss>http://buddylindsey.com/7-databases-in-7-weeks-8-week-review-and-experience/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Getting Started with Twitter Bootstrap</title>
		<link>http://buddylindsey.com/getting-started-with-twitter-bootstrap/</link>
		<comments>http://buddylindsey.com/getting-started-with-twitter-bootstrap/#comments</comments>
		<pubDate>Mon, 16 Jan 2012 20:00:00 +0000</pubDate>
		<dc:creator>Buddy Lindsey</dc:creator>
				<category><![CDATA[HTML5]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[CSS]]></category>

		<guid isPermaLink="false">http://buddylindsey.com/?p=649</guid>
		<description><![CDATA[If you are a developer like me you can write code, but design is not one of your strong points. You probably don&#8217;t mind too much, but would like demo apps and test stuff to look a bit better. Well Bootstrap can be used for just that. However, at least for me, when you go [...]]]></description>
			<content:encoded><![CDATA[<p></p><p><img src="http://buddylindsey.com/wp-content/uploads/2012/01/Bootstrap.png" alt="" title="Bootstrap" width="276" height="234" class="alignright size-full wp-image-654" /><br />
If you are a developer like me you can write code, but design is not one of your strong points. You probably don&#8217;t mind too much, but would like demo apps and test stuff to look a bit better. Well <a href="http://twitter.github.com/bootstrap">Bootstrap</a> can be used for just that. However, at least for me, when you go to the <a href="http://twitter.github.com/bootstrap">Bootstrap</a> page you are hit with so much information you kind of don&#8217;t know where to start and are overwhelmed by everything there. So how do you sort through it all?</p>
<h2>What is Bootstrap</h2>
<p>Lets talk about what bootstrap is. At its core it is design elements to help make your life easier when you make your website. There is both JavaScript and CSS available for you to take advantage in accomplishing tasks. You can do everything from positioning and navigation to detailed form elements that look way better than default HTML elements.</p>
<h2>How to Get Started</h2>
<p>When you visit the Bootstrap site and look around there is a lot there, but the site does a bad job of explaining what to do for first time visitors. The key thing to note about bootstrap is:</p>
<blockquote><p>
&#8220;You don&#8217;t have to use all of bootstrap you can pick and choose&#8221;
</p></blockquote>
<p>When I first tried to use it I couldn&#8217;t make heads or tails of what was going on so I could start to use it. Fortunately someone gave me the above advice and showed me how to use it now I am in love with it.</p>
<h2>Start With Navigation</h2>
<p>Lets start with navigation since it is simple enough and can get you started with a nice looking menu.</p>
<h3>Setup Proper HTML</h3>
<p>First we need to make sure we have the HTML setup properly and all the correct tags.</p>
<pre class="brush: xml; title: ; notranslate">
&lt;div class=&quot;topbar-wrapper&quot;&gt;
  &lt;div class=&quot;topbar&quot;&gt;
    &lt;div class=&quot;topbar-inner&quot;&gt;
      &lt;div class=&quot;container&quot;&gt;
        &lt;ul class=&quot;nav&quot;&gt;
          &lt;li&gt;&lt;a href=&quot;#&quot;&gt;Link 1&lt;/a&gt;&lt;/li&gt;
          &lt;li&gt;&lt;a href=&quot;#&quot;&gt;Link 2&lt;/a&gt;&lt;/li&gt;
          &lt;li&gt;&lt;a href=&quot;#&quot;&gt;Link 3&lt;/a&gt;&lt;/li&gt;
        &lt;/ul&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/div&gt;
</pre>
<h3>Add Bootstrap CSS</h3>
<p>Another daunting part to using bootstrap is that it uses less, which I still don&#8217;t know how to use, so I just side stepped that and grabbed the css from the site and included it. You can download it here:</p>
<blockquote><p>
<a href="http://twitter.github.com/bootstrap/1.4.0/bootstrap.css">http://twitter.github.com/bootstrap/1.4.0/bootstrap.css</a>
</p></blockquote>
<p>Be sure to added it your head section</p>
<pre class="brush: xml; title: ; notranslate">
&lt;link rel=&quot;stylesheet&quot; style=&quot;text/css&quot; href=&quot;http://twitter.github.com/bootstrap/1.4.0/bootstrap.css&quot; /&gt;
</pre>
<p>Now that you have done that you should see a nice top menu. Be sure to add the following to your body element for enough space, if you want a topbar.</p>
<pre class="brush: css; title: ; notranslate">
padding-top: 40px;
</pre>
<h3>What if You Don&#8217;t Want a TopBar Navigation</h3>
<p>If you are like me I didn&#8217;t want a top bar navigation on <a href="http://godjango.com">GoDjango</a> I wanted it under the header. Well that is a simple fix as well.</p>
<pre class="brush: css; title: ; notranslate">
.topbar {
  position: static !important;
}
</pre>
<p>You should now have a menu where you want it at, and not at the top of the page. The !important tag is overriding the absolute positioning that topbar has by default so all should be well.</p>
<h2>Final Notes</h2>
<p>As you can see we didn&#8217;t use any of the other &#8220;stuff&#8221; however there are a lot of nice defaults that you can either keep or remove from the CSS file itself. You don&#8217;t have to use them. Also a lot of the cool stuff that uses JavaScript you can download and use individual JavaScript files to accomplish them. Again you don&#8217;t need to lock your site into all or nothing of bootstrap just pick and choose what you want to use.</p>
]]></content:encoded>
			<wfw:commentRss>http://buddylindsey.com/getting-started-with-twitter-bootstrap/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>HTML5 Local Storage Intro</title>
		<link>http://buddylindsey.com/html5-local-storage-intro/</link>
		<comments>http://buddylindsey.com/html5-local-storage-intro/#comments</comments>
		<pubDate>Mon, 09 Jan 2012 21:00:02 +0000</pubDate>
		<dc:creator>Buddy Lindsey</dc:creator>
				<category><![CDATA[HTML5]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[PhoneGap]]></category>
		<category><![CDATA[basics]]></category>
		<category><![CDATA[Web Technologies]]></category>

		<guid isPermaLink="false">http://buddylindsey.com/?p=645</guid>
		<description><![CDATA[HTML5 local storage is a really cool feature which is super easy to use and fairly useful, especially for your HTML5 web applications. I have recently started using it for a few items here and there and am impressed with how versatile it is. Storing Data Local storage is a key value pair based storage [...]]]></description>
			<content:encoded><![CDATA[<p></p><p><img alt="" src="http://farm8.staticflickr.com/7158/6663969705_0817e8f958_o.png" title="HTML5" class="alignright" width="220" />HTML5 local storage is a really cool feature which is super easy to use and fairly useful, especially for your HTML5 web applications. I have recently started using it for a few items here and there and am impressed with how versatile it is. </p>
<h2>Storing Data</h2>
<p>Local storage is a key value pair based storage which stores string data, this is important to note. There really aren&#8217;t a lot of built in ways to do data modeling or searching it is just raw data storage. However, it is really cool that it is persistent storage that goes beyond just the current session.</p>
<p>There are a couple of key things to remember about using local storage. It is all based on the browser, computer, and URI you are on. If you change any of those things then you won&#8217;t see that stored data anymore.</p>
<h2>Coding With Local Storage</h2>
<h3>Save to Local Storage</h3>
<pre class="brush: jscript; title: ; notranslate">
// Explicity way
localStorage.setItem(&quot;link&quot;, &quot;http://buddylindsey.com&quot;);

// Shortcut way
localStorage.link = &quot;http://buddylindsey.com&quot;;
</pre>
<p>The first way is fairly easy to figure out. However, the shortcut needs a bit of explaining. Note how I used link at the end of localStorage that is the shortcut. You can change it to just about anything and it will be stored using that key. </p>
<h3>Access Data from Local Storage</h3>
<pre class="brush: jscript; title: ; notranslate">
// Explicity way
var data = localStorage.getItem(&quot;link&quot;);

// Shortcut way
var data = localStorage.link
</pre>
<p>Note again on using the key at the end of localStorage to get the data.</p>
<h2>Example Usage</h2>
<p>I have two HTML 5 applications on <a href="http://github.com/buddylindsey">my github</a> which use local storage if you want to look at them and how it is used in a more real world situation. Look in the <em>app.js</em> file.</p>
<ol>
<li><a href="https://github.com/buddylindsey/html5-c25k">html5-c25k</a></li>
<li><a href="https://github.com/buddylindsey/html5-bookmarking">html5-bookmarking</a></li>
</ol>
<p>The html5-c25k app is an example of an actual html 5 application which can be run as a website <a href="http://buddylindsey.github.com/html5-c25k/">Couch to 5k</a> it is also used as an application with Mozilla&#8217;s open web apps. I even packaged it up in phonegap and it will be submitted to the app store for iOS. It is cool to see how versatile using HTML5 can really be for cross platform compatibility</p>
<h2>Usage in Other Frameworks</h2>
<p>More and more frameworks are being built to utilize local storage as a storage medium. Sencha touch is one of them and allows for doing better data modeling for mobile web applications. Also backbone.js has some libraries which allow you to override the sync functionality to use local storage as well.</p>
<h2>Conclusion</h2>
<p>As we move more and more to web applications which act as local web apps local data storage is important. Fortunately it is simple to use and with more and more frameworks making it easier to do data modeling life shall be more interesting to see what people use with it.</p>
]]></content:encoded>
			<wfw:commentRss>http://buddylindsey.com/html5-local-storage-intro/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Reviewing 2011 the Year that Changed Everything for Me</title>
		<link>http://buddylindsey.com/reviewing-2011-the-year-that-changed-everything-for-me/</link>
		<comments>http://buddylindsey.com/reviewing-2011-the-year-that-changed-everything-for-me/#comments</comments>
		<pubDate>Fri, 06 Jan 2012 18:37:19 +0000</pubDate>
		<dc:creator>Buddy Lindsey</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://buddylindsey.com/?p=638</guid>
		<description><![CDATA[I can honestly say that over the last year I have gone from a beginnermediate developer to an intermediate developer. This was something that was most definitely hard won, but thoroughly pleasing. I just hope the quantity of stuff I have learned in the last year and half will hold through the next year. Lets [...]]]></description>
			<content:encoded><![CDATA[<p></p><p>I can honestly say that over the last year I have gone from a beginnermediate developer to an intermediate developer. This was something that was most definitely hard won, but thoroughly pleasing. I just hope the quantity of stuff I have learned in the last year and half will hold through the next year.</p>
<h2>Lets Start at the Beginning</h2>
<p>About 18 months ago I started doing development in ASP.NET MVC on the <a href="http://asianlad.com/">Asian Live Action Database</a>. To be honest it was the first solid idea for a project I have really ever had so it was a great learning experience. There was a lot of new design patterns I learned and became familiar with, along with more advanced features of C#.</p>
<p>I developed a good base of knowledge and really got something going, it was a lot of fun and pushed my brain. Sometime around there a friend convinced me to get a Mac so I can make mobile apps with him and get some money, and I think that is where things really took off for me. Not because of the mac, but because of everything else.</p>
<h2>New Computer and New Language/Framework</h2>
<p>After getting a base of knowledge from ASP.NET MVC I was really getting the hang of the MVC pattern and could tell my programming skills were getting up to par. About 2 weeks before my fall semester started I decided I wanted a new application to  help me with my Japanese class. On a dare from a friend I decided to try it in Rails. This was a major shift not only was I on a new OS, but using a new language and framework all in a new dev environment.</p>
<h3>Riding the Rails to Vim</h3>
<p>Pretty much over the next several months I dove deeply into Ruby on Rails. I wrote a ton of little apps in Rails and really got familiar with it. I even did a couple of contract things with it, and helped a friend migrate over to it. While I never finished the app I set out to do originally I realized there were a lot of problems doing it as a back end web app and dropped it.</p>
<p>At some point I saw a video of someone using Vim and doing some amazing things with it. The idea of never using the mouse while coding has always intrigued me, but Vim had always been too big of a learning curve, plus my brain wasn&#8217;t ready. After staring to use a new OS, and new programming language I was ready to devote myself to learning Vim, so I started to, and still am. </p>
<h2>Github is Awesome, but I Hate the Pricing</h3>
<p>Along with all the new changes I figured it was time to start learning git as well. I was finding many problems with SVN and I really loved the branching and merging features in git. I signed up for Github and started paying the $7 a month and was fine with that since I had only 2 private projects. One was a rewrite of the <a href="http://asianlad.com/">Asian Live Action Database</a> and a contract app. Around February I had an accident and had some unexpected Medical expenses even with my insurance covering most of it the bills still hurt. So I had to tighten up my belt which included getting rid of github temporarily. </p>
<p>After some talking with a friend we agreed that $7 was a big expensive for only 5 repositories only because we wanted all our code under source control in separate repos, and not with an archive repo taking up one of the private repositories. So began the path to sourcehold, which of course would be written in Rails.</p>
<h2>Sourcehold: Success or Failure?</h2>
<p>I spent the next 6 months, starting in March, learning and coding sourcehold. It was a very very fun time and I learned a lot. I can actually break it out into 3 distinct sections.</p>
<h3>Learning</h3>
<p>As a beginnermediate developer up to this point doing something like a source control site similar to github was a doable task, but required quite a bit of learning. I had a cursory knowledge of ssh and git. Along with no knowledge of cloud computing other than theory. I proceeded to read the following books just to get started.</p>
<ul>
<li><a href="http://www.amazon.com/gp/product/1430218339/ref=as_li_ss_tl?ie=UTF8&#038;tag=dumota-20&#038;linkCode=as2&#038;camp=1789&#038;creative=390957&#038;creativeASIN=1430218339">ProGit</a></li>
<li><a href="http://www.amazon.com/gp/product/1590594762/ref=as_li_ss_tl?ie=UTF8&#038;tag=dumota-20&#038;linkCode=as2&#038;camp=1789&#038;creative=390957&#038;creativeASIN=1590594762">Pro OpenSSH</a></li>
<li><a href="http://www.amazon.com/gp/product/0980576830/ref=as_li_ss_tl?ie=UTF8&#038;tag=dumota-20&#038;linkCode=as2&#038;camp=1789&#038;creative=390957&#038;creativeASIN=0980576830">Host Your Web Site In The Cloud: Amazon Web Services Made Easy</a></li>
<li><a href="http://www.amazon.com/gp/product/0321638360/ref=as_li_ss_tl?ie=UTF8&#038;tag=dumota-20&#038;linkCode=as2&#038;camp=1789&#038;creative=390957&#038;creativeASIN=0321638360">Distributed Programming with Ruby</a></li>
</ul>
<p>These were all good books and I was able to really dissect them and advance my knowledge. I am not sure I could have done this project without reading this book and it gave me a new respect for programming/technical books. After reading the books I sat down and played with combining as much of it all as I could to see how to get everything working together. It was a fun experiment to learn how to get things working together.</p>
<h3>Development</h3>
<p>Once I read all the books and played around. It was time to start actually coding and designing the site. This is really where things got interesting. As a beginnermediate developer I could roll my own code for features, but using 3rd party libraries or especiall api&#8217;s were <em>almost</em> impossible.</p>
<p>Through this process I had to use 3rd party libraries so it forced me to learn how to interact with them and start using them. It even got me closer to more advanced topics like creating my own reusable code to add to libraries. My goal is to be able to make libraries at some point which really starts to show you are a more advanced developer, I feel like I am at the cusp of doing this.</p>
<p>Along this process I became very familiar with SSH, Ruby and Command Line. 3 things that are very powerful when used together properly.</p>
<h3>Closing Down</h3>
<p>I was able to get sourcehold launched, running, and people using it. However, due to how it worked the site was resource intensive and I learned a valuable business lesson: </p>
<blockquote><p>
&#8220;Customer growth is slow so manage costs&#8221;
</p></blockquote>
<p>I was stuck in a situation where the lowest cost was still a bit high, but my customer adoption rate was so slow it would not be able to cover the costs quick enough. So after 4 months in service I pulled the plug before I ran completely out of money.</p>
<p>One thing to note about when you create something which helps developers is this phrase:</p>
<blockquote><p>
I will use it on my next project.
</p></blockquote>
<p>That is the phrase of death. Make sure you project is so good they need to use it now.</p>
<h2>Coworking, TulsaWebDevs, Hackathon followed by Startup Weekend</h2>
<p>In August I met up with <a href="http://groovecoder.com/">Luke Crouch</a> a guy that forever changed my life. He invited me to our local web developer user group <a href="http://tulsawebdevs.org/">TulsaWebDevs</a> and I met a lot of cool people there and immediately started learning new things and being able to interact with other developers. It was a whole new world of people and has stretched my brain immensely. </p>
<p>From the TulsaWebDevs I learned about a local coworking venture that started up for local freelancers, and people whom can work remotely. We meet up every Friday for the day and do our work and interact. It turns into a learning experience and exchange of ideas, as well as a place to get help with problems we are having. As someone that doesn&#8217;t work on a dev team It has been invaluable because problems I have pounded my head against the wall on I can just ask on fridays and usually someone can answer it for me.</p>
<p>I am an avid twitter user and one of the coolest things I heard about was a Hackathon. I had wanted to do one for a couple of years, but never had an opportunity. I even thought about starting one until Luke managed to organize one himself. It was an awesome event to meet new people and play with new projects. I am definitely in favor of them. 2 weeks after the Tulsa Hackathon I went to Startup Weekend which was just as fun and got to use a new technology which is now shaping some of my blogging efforts.</p>
<h2>GoDjango and Python</h2>
<p>Over the course of the last few months I took on learning Django and python. It has been a lot of fun to finally find a framework and language which really fits well with me. One of the biggest problems in learning Django though were all the lack of video tutorials, so I decided to start <a href="http://godjango.com">GoDjango</a> in a similar vain of RailsCasts where there are weekly updates of 5 to 10 minute videos on doing something with Django.</p>
<h2>Closing Out the Year with Mozilla, JavaScript and HTML5</h2>
<p>I definitely can&#8217;t close out this post without talking about Mozilla, JavaScript and HTML5, all three are things I never thought I would pay attention to. Luke actually works for Mozilla, which is really cool, so I have had a lot of opportunity to talk and learn about Mozilla from him. As such I have become a major fan of Mozilla and some of the things they are doing, not just FireFox.</p>
<p>Over the course of the last few months I have come to learn that JavaScript and HTML5 are the future, but can easily start being used now, and should be. As such 2 weeks ago I rolled out my first HTMl5 app called <a href="http://buddylindsey.github.com/html5-c25k/index.html">Couch to 5k</a>. It is based on a running program to get you from sitting on the couch to being able to run 5 kilometers. It is hosted on github as a github page. </p>
<p>The really cool thing is that Mozilla has started up with the Mozilla App store, still in preview, and it was super simple to get it on there since it is based on web technologies. All I had to do was add an app manifest and poof it worked. You can install it yourself as well: <a href="https://apps-preview.mozilla.org/en-US/apps/app/couch-to-5k/">Couch to 5k Mozilla App Store</a></p>
<h2>Conclusion</h2>
<p>I have left a few things out, but I tried to hit most of the highlights of what I have done. Please checkout my <a href="http://github.com/buddylindsey/">github account</a> to see more of what I have done. It has been an exciting year and a half, and I look forward to the next year. We shall see what it holds. </p>
]]></content:encoded>
			<wfw:commentRss>http://buddylindsey.com/reviewing-2011-the-year-that-changed-everything-for-me/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>Check Your JavaScript for Syntax Errors Outside the Browser</title>
		<link>http://buddylindsey.com/writing-javascript-can-really-suck-when-you-have-simple-syntax-errors-often-you-have-to-refresh-the-page-in-a-browser-to-make-sure-the-code-is-syntactically-correct-working-with-more-with-javascr/</link>
		<comments>http://buddylindsey.com/writing-javascript-can-really-suck-when-you-have-simple-syntax-errors-often-you-have-to-refresh-the-page-in-a-browser-to-make-sure-the-code-is-syntactically-correct-working-with-more-with-javascr/#comments</comments>
		<pubDate>Mon, 19 Dec 2011 18:00:23 +0000</pubDate>
		<dc:creator>Buddy Lindsey</dc:creator>
				<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[cli]]></category>

		<guid isPermaLink="false">http://buddylindsey.com/?p=616</guid>
		<description><![CDATA[Writing JavaScript can really suck when you have simple syntax errors. Often you have to refresh the page, in a browser, to make sure the code is syntactically correct. Working more with JavaScript, especially PhoneGap, making sure the syntax is correct before even bothering to run the JavaScript code is a must since it takes [...]]]></description>
			<content:encoded><![CDATA[<p></p><p>Writing JavaScript can really suck when you have simple syntax errors. Often you have to refresh the page, in a browser, to make sure the code is syntactically correct. Working more with JavaScript, especially PhoneGap, making sure the syntax is correct before even bothering to run the JavaScript code is a must since it takes so long to actually run the code. And that doesn&#8217;t even include the fact a lot of interpreters just eat errors.</p>
<h2>JavaScript Lint To the Rescue</h2>
<p>JavaScript Lint uses the Firefox browsers JavaScript engine to check your syntax for errors or, if you want, common mistakes people make. It is very useful since you can run a command and poof it gives you all your errors, warnings and why it is wrong where.</p>
<h2>Getting JavaScript Lint</h2>
<h3>Mac OS X</h3>
<pre class="brush: bash; title: ; notranslate">
brew install jslint
</pre>
<h2>More Universal</h2>
<p>node-lint can be installed as well using the node package manager. For some reason npm is screwed up on my computer so this wasn&#8217;t an option for me.</p>
<h2>Usage</h2>
<p>To use JavaScript Lint you run the following command on a javascript file:</p>
<pre class="brush: bash; title: ; notranslate">
     jsl -process app.js
</pre>
<p>It will either show you errors and warnings or output:</p>
<pre class="brush: bash; title: ; notranslate">
0 errors, 0 warnings
</pre>
<h2>Making Usage Easier</h2>
<p>Typing that every time can be come tiresome so to make things easier I setup a little script and aliased it so running it on the command line is easier.</p>
<p>I created a file <strong>~/.scripts/pjs.rb</strong> and added the following code:</p>
<pre class="brush: ruby; title: ; notranslate">
#! /usr/bin/ruby
system(&quot;jsl -process #{ARGV[0]} -nologo -nofilelisting&quot;)
</pre>
<p>I also added the following to my <strong>~/.bash_profile</strong></p>
<pre class="brush: bash; title: ; notranslate">
alias pjs='~/.scripts/pjs.rb'
</pre>
<p>From there while on the command line I just do the following:</p>
<pre class="brush: bash; title: ; notranslate">
pjs app.js
</pre>
<p>And it works. Makes life a lot easier when running JavaScript Lint and I am more confident in my JavaScript code I write now, at least with regards to syntax. The next thing I am going to do is bind that command to one in vim to make things even quicker.</p>
<p>Some may ask why I took this approach, and the answer is simple. By running the command through another script all I have to do is edit the ruby script here and there. It leads to more future flexibility over just setting an alias to jsl directly. I have a few other ideas on things I can do in the future so I just started with the end in mind.</p>
]]></content:encoded>
			<wfw:commentRss>http://buddylindsey.com/writing-javascript-can-really-suck-when-you-have-simple-syntax-errors-often-you-have-to-refresh-the-page-in-a-browser-to-make-sure-the-code-is-syntactically-correct-working-with-more-with-javascr/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Hosting Your Open Source Project on Heroku with Private Configuration</title>
		<link>http://buddylindsey.com/hosting-your-open-source-project-on-heroku-with-private-configuration/</link>
		<comments>http://buddylindsey.com/hosting-your-open-source-project-on-heroku-with-private-configuration/#comments</comments>
		<pubDate>Mon, 12 Dec 2011 18:00:04 +0000</pubDate>
		<dc:creator>Buddy Lindsey</dc:creator>
				<category><![CDATA[Administration]]></category>
		<category><![CDATA[Python]]></category>
		<category><![CDATA[Ruby]]></category>
		<category><![CDATA[Deploy]]></category>

		<guid isPermaLink="false">http://buddylindsey.com/?p=621</guid>
		<description><![CDATA[My first major open source application, the GoDjango site, is teaching me a lot about deployment and maintaining secrecy of custom configuration like username/passwords and api keys. I don&#8217;t want them to get into the main branch of the GoDjango github repo, but I want to minimize pain while pushing to heroku and have everything [...]]]></description>
			<content:encoded><![CDATA[<p></p><p>My first major open source application, the <a href="http://godjango.com">GoDjango</a> site, is teaching me a lot about deployment and maintaining secrecy of custom configuration like username/passwords and api keys. I don&#8217;t want them to get into the main branch of the <a href="https://github.com/buddylindsey/GoDjango">GoDjango github repo</a>, but I want to minimize pain while pushing to heroku and have everything work.</p>
<h2>Strategies</h2>
<p>There are two key strategies I have found work the &#8220;best&#8221; with deploying to heroku with custom configuration. </p>
<ol>
<li>Separate Private Git Branch</li>
<li>Environment Variables</li>
</ol>
<h2>Separate Private Git Branch</h2>
<p>The separate branch you will keep locally and when you are ready to launch just do a merge of your master branch to the private one. I called mine deploy so I would just merge master into deploy and push deploy to heroku.</p>
<p>This method actually unnerves me a bit dealing with branches since I want to compulsively merge deploy back into master. It also makes it a bit more difficult for other developers when doing changes locally.</p>
<h2>Environment Variables</h2>
<p>The other option here is to set environment variables and call them from your code. The good thing about this is you can set them on heroku and each individual developer can set them on their local machine so code can be freely passed around. This is actually heroku&#8217;s recommended solution even though it is hard to find it mentioned anywhere. I only found out about it because a friend went a presentation from a Java heroku guy, and that is what they mentioned in the presentation.</p>
<p>I actually like this method and am currently doing it on a couple of projects now, I am also moving GoDjango over to it. It is such a clean easy solution I am not sure why I didn&#8217;t think of it before.</p>
<h3>Setting and Using Environment Variables</h3>
<h4>Setting up on Heroku</h4>
<p>Make sure you are in the folder of your application and run the following:</p>
<pre class="brush: bash; title: ; notranslate">
heroku config:add SOME_VAR_NAME1=somevalue SOME_VAR_NAME2=someothervalue
</pre>
<h4>Setting up Locally</h4>
<p>Add to your <strong>.bashrc</strong> or <strong>.bash_profie</strong>:</p>
<pre class="brush: bash; title: ; notranslate">
export SOME_VAR_NAME1=localvalue
export SOME_VAR_NAME2=otherlocalvalue
</pre>
<h4>Use Variables in Ruby</h4>
<pre class="brush: ruby; title: ; notranslate">
some_config_option = ENV['SOME_VAR_NAME1']
other_config_option = ENV['SOME_VAR_NAME2']
</pre>
<h4>Use Variables in Python</h4>
<pre class="brush: python; title: ; notranslate">
import os

some_config_option = os.environ['SOME_VAR_NAME1']
other_config_option = os.environ['SOME_VAR_NAME2']
</pre>
<h3>Conclusion</h3>
<p>As a fan of heroku for the fact it allows me to deploy my sites without thinking too much about &#8220;how&#8221;> I am happy to have figured these out because deployments were starting to get annoying while maintaining the code as open source. I hope these help others when trying to think through how to configure things like their SMTP gateway without giving away the passwords and/or api keys.</p>
]]></content:encoded>
			<wfw:commentRss>http://buddylindsey.com/hosting-your-open-source-project-on-heroku-with-private-configuration/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Things to Look at When You Are Using a PhoneGap Plugin</title>
		<link>http://buddylindsey.com/things-to-look-at-when-you-are-using-a-phonegap-plugin/</link>
		<comments>http://buddylindsey.com/things-to-look-at-when-you-are-using-a-phonegap-plugin/#comments</comments>
		<pubDate>Mon, 05 Dec 2011 18:00:25 +0000</pubDate>
		<dc:creator>Buddy Lindsey</dc:creator>
				<category><![CDATA[HTML5]]></category>
		<category><![CDATA[PhoneGap]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[Mobile]]></category>
		<category><![CDATA[Native]]></category>

		<guid isPermaLink="false">http://buddylindsey.com/?p=609</guid>
		<description><![CDATA[PhoneGap is really cool since you can use web development technologies to do native mobile app development. Unfortunately it doesn&#8217;t support everything the phone does via its JavaScript API. For that you need to use plugins which execute native code, and is called from JavaScript. Makeup Of a Plugin PhoneGap plugins consist of 2 things. [...]]]></description>
			<content:encoded><![CDATA[<p></p><p><img alt="PhoneGap Logo" src="http://buddylindsey.com/wp-content/uploads/phonegaplogo.png" title="PhoneGap Logo" class="alignright" width="200" height="200" /></p>
<p><a href="http://phonegap.com">PhoneGap</a> is really cool since you can use web development technologies to do native mobile app development. Unfortunately it doesn&#8217;t support everything the phone does via its JavaScript API. For that you need to use plugins which execute native code, and is called from JavaScript.</p>
<h2>Makeup Of a Plugin</h2>
<p>PhoneGap plugins consist of 2 things.</p>
<ol>
<li>JavaScript File</li>
<li>Native Code File</li>
</ol>
<p>If you download a plugin from somewhere, and it doesn&#8217;t have at least those two things then you are missing something. It is a fairly simple thing to do you write your native code and then write a JavasSript interface for it which executes the native code.</p>
<h2>How Do You Execute Native Code?</h2>
<p>What you will need to do is create your class and execute it from JavaScript with a simple command:</p>
<pre class="brush: jscript; title: ; notranslate">
PhoneGap.exec(&quot;&quot;);
</pre>
<p>Inside the exec command you will call the class from your native code, and specify a method. The PhoneGap framework will execute it and return back the information it needs to for you to do with it what you need.</p>
<h2>What Does the Native Code Need?</h2>
<p>What you really only need is a class that inherits from PGPlugin and has a method for you to call. Inheriting from PGPlugin is important because it can cause a lot of headaches if it isn&#8217;t, and I mean a lot. </p>
<h2>Tell PhoneGap the Plugin Exists</h2>
<p>At least on iOS you need to let your app know the plugin exists, explicitly. Simply edit the plist file with a simple key value pair. The key being some name for JavaScript to call and the value being the class name of the native code implementation.</p>
<h2>Why Is It Important to Know at Least These Things</h2>
<p>Because if you use PhoneGap you are going to need a plugin at some point, and sometimes you will want to use code which has no documentation or, very little. So knowing at least the basics of what all plugins need you can figure out problems based on error messages. Also it helps you think beyond what PhoneGap does and gives you the opportunity to extend where you need to, especially since plugins aren&#8217;t usually that complex to write. </p>
<p>I am having a lot of phone using PhoneGap with jQuery Mobile. It helps me create stuff very quickly, and even do some cool stuff I am not sure I would have figured out how to do after only a couple hours of playing. The biggest benefit is you can quite easily extend PhoneGap with its simple plugin system. Which makes porting to multiple platforms much nicer. Give it a shot and enjoy.</p>
]]></content:encoded>
			<wfw:commentRss>http://buddylindsey.com/things-to-look-at-when-you-are-using-a-phonegap-plugin/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>HTML5, Webm, and Firefox &#8211; Why It Doesn&#8217;t Work Right Away</title>
		<link>http://buddylindsey.com/html5-webm-and-firefox-why-it-doesnt-work-right-away/</link>
		<comments>http://buddylindsey.com/html5-webm-and-firefox-why-it-doesnt-work-right-away/#comments</comments>
		<pubDate>Fri, 02 Dec 2011 17:13:19 +0000</pubDate>
		<dc:creator>Buddy Lindsey</dc:creator>
				<category><![CDATA[HTML5]]></category>
		<category><![CDATA[Video]]></category>
		<category><![CDATA[Amazon AWS]]></category>
		<category><![CDATA[Apache]]></category>
		<category><![CDATA[Cloud Computing]]></category>
		<category><![CDATA[IIS]]></category>

		<guid isPermaLink="false">http://buddylindsey.com/?p=606</guid>
		<description><![CDATA[For GoDjango I like to use HTML5 video playback for all the screencasts, but unfortunately there isn&#8217;t a good standard video type for playback. Generally MP4 (h.264) works fine for mobile devices, chrome, safari, and IE. However, for Firefox, my browser of choice, you need to have either Webm or Ogg Vorbis. I ended up [...]]]></description>
			<content:encoded><![CDATA[<p></p><p>For <a href="http://godjango.com">GoDjango</a> I like to use HTML5 video playback for all the screencasts, but unfortunately there isn&#8217;t a good standard video type for playback. Generally MP4 (h.264) works fine for mobile devices, chrome, safari, and IE. However, for Firefox, my browser of choice, you need to have either Webm or Ogg Vorbis. I ended up choosing Webm and it bit me in the butt until I figured out the mimetypes weren&#8217;t set correctly since webm is a fairly new file format compared to others.</p>
<h2>Solution</h2>
<p>Make sure your mime types are correct. </p>
<h3>Amazon S3</h3>
<p>If your files are hosted on Amazon S3 your webm files are probably set to octet/stream. Here are the steps to change them to video/webm</p>
<ol>
<li>Log into your AWS Management Console for S3</li>
<li>Choose the bucket your video is in</li>
<li>Right Click on the video and click properties</li>
<li>In the area that opens at the bottom of the page select the Metadata tab</li>
<li>For the Content-Type key click on the value text box next to it</li>
<li>Type in &#8220;video/webm&#8221; without quotes</li>
<li>Then hit save at the bottom</li>
</ol>
<h3>Apache</h3>
<p>Lets say you are hosting the video files on your own server, but they still are working. Chances are the mimetype is still wrong and we just need to add them. If you are using apache then either add a .htaccess file or edit the current one with the following:</p>
<blockquote><p>
AddType     video/webm     .webm
</p></blockquote>
<h3>IIS</h3>
<ol>
<li>Open IIS Manager and navigate tot he level you want to manage</li>
<li>In Features View, double click MIME Types</li>
<li>In the Actions pain click Add</li>
<li>In the Add MIME Type dialog box, add .webm</li>
<li>In the MIME Type text box add: video/webm</li>
<li>Click Ok</li>
</ol>
<p>Hopefully that helps some of you out there who are facing the same issue I did. If you find any other solutions please let me know.</p>
]]></content:encoded>
			<wfw:commentRss>http://buddylindsey.com/html5-webm-and-firefox-why-it-doesnt-work-right-away/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Just Launched GoDjango</title>
		<link>http://buddylindsey.com/just-launched-godjango/</link>
		<comments>http://buddylindsey.com/just-launched-godjango/#comments</comments>
		<pubDate>Sat, 19 Nov 2011 23:27:39 +0000</pubDate>
		<dc:creator>Buddy Lindsey</dc:creator>
				<category><![CDATA[Python]]></category>
		<category><![CDATA[Video]]></category>
		<category><![CDATA[Videos]]></category>
		<category><![CDATA[learning]]></category>

		<guid isPermaLink="false">http://buddylindsey.com/?p=602</guid>
		<description><![CDATA[Recently I was compelled to learn python since it seemed like a lot of different forces were driving me to do so. After learning the syntax basics I figured I would take the next step to start learning Django since it is the predominant web framework for python, and I am a web developer. One [...]]]></description>
			<content:encoded><![CDATA[<p></p><p>Recently I was compelled to learn python since it seemed like a lot of different forces were driving me to do so. After learning the syntax basics I figured I would take the next step to start learning Django since it is the predominant web framework for python, and I am a web developer. </p>
<p>One of the things that I found particularly disheartening is the severe lack of video tutorials available on the web. I am a huge fan of videos because I learn best visually, almost to a fault. There are a few scattered around here and there, but most are out of date. The fortunate things is Django has some of the best documentation for a project I have ever seen, but at the end of the day it is documentation and sometimes some dots don&#8217;t connect well in them.</p>
<p>I make the point about video tutorials because, I guess, I was spoiled in the .NET and the Ruby world where there are videos everywhere. Someone is always doing a new one. Take RailsCasts for example, it has been going strong for a long time now. I feel Django can really benefit from some kind of video tutorials as well.</p>
<p>Therefore I have decided to start <a href="http://godjango.com">GoDjango.com</a>. It is a fun project, partly, because I coded the base site using Django and launched it to Heroku. I then recorded the first video and posted it all in about 30&#8242;ish hours. I plan to release a new video every week, maybe two, which is short and sweet doing something with Django or surrounding technologies. </p>
<p>Most of the videos are going to be 5 to 15 minute videos which are there to show you how to do 1 thing really quick to get started. I also plan to follow up with more comprehensive videos that cover in a lot of detail and are upwards of an hour long, those will be premium, but very affordable.</p>
<p>With that please visit <a href="http://godjango.com">GoDjango.com</a> and watch the first video. If you feel so inclined, as well, feel free to comment here or there and leave advice suggestions or comments. Also if you would like to help improve the site by hacking on it. I have OSS&#8217;d the <a href="https://github.com/buddylindsey/GoDjango">GoDjango site on Github</a></p>
]]></content:encoded>
			<wfw:commentRss>http://buddylindsey.com/just-launched-godjango/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
	</channel>
</rss>

