<?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>Aaron Godin</title>
	<atom:link href="http://aarongodin.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://aarongodin.com</link>
	<description>Programming, design, and stuff! I enjoy the web, among many other things.</description>
	<lastBuildDate>Wed, 18 Aug 2010 20:31:28 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<item>
		<title>Chippewa Valley Ruby Camp</title>
		<link>http://aarongodin.com/2010/08/18/chippewa-valley-ruby-camp/</link>
		<comments>http://aarongodin.com/2010/08/18/chippewa-valley-ruby-camp/#comments</comments>
		<pubDate>Wed, 18 Aug 2010 20:31:28 +0000</pubDate>
		<dc:creator>Aaron Godin</dc:creator>
				<category><![CDATA[ECRuby]]></category>
		<category><![CDATA[Ruby on Rails]]></category>

		<guid isPermaLink="false">http://aarongodin.com/?p=74</guid>
		<description><![CDATA[Hello fellow programmers! You can learn Ruby on Rails for free! Today the registration for the (second) 2010 Chippewa Valley Ruby Camp opened. If you are living in Wisconsin or the Twin Cities, check it out here. I will be &#8230; <a href="http://aarongodin.com/2010/08/18/chippewa-valley-ruby-camp/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Hello fellow programmers!</p>
<p>You can learn Ruby on Rails for free!</p>
<p>Today the registration for the (second) 2010 Chippewa Valley Ruby Camp opened. If you are living in Wisconsin or the Twin Cities, check it out <a href="http://rubycamp.ecruby.org">here</a>. I will be walking through HTML and CSS before the main sessions. Breakfast and lunch are provided. If you are a beginner web developer or programmer wanting to learn how to develop awesome web applications, attend the Ruby Camp.</p>
<p><a href="http://rubycamp.ecruby.org"><img src="http://aarongodin.com/wp-content/uploads/2010/08/cvrc.png"></a></p>
<p>The staff are friendly, helpful, and very knowledgeable about Rails. I hope to see you there!</p>
]]></content:encoded>
			<wfw:commentRss>http://aarongodin.com/2010/08/18/chippewa-valley-ruby-camp/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Rails DateTime Validation</title>
		<link>http://aarongodin.com/2010/08/12/rails-datetime-validation-2/</link>
		<comments>http://aarongodin.com/2010/08/12/rails-datetime-validation-2/#comments</comments>
		<pubDate>Thu, 12 Aug 2010 20:04:51 +0000</pubDate>
		<dc:creator>Aaron Godin</dc:creator>
				<category><![CDATA[Ruby on Rails]]></category>

		<guid isPermaLink="false">http://aarongodin.com/?p=52</guid>
		<description><![CDATA[For validating dates and times in your Rails application, pick up the handy gem validates_timeliness. It allows you to very easily ensure that dates are in specific ranges or that dates happen after or before other dates. After you install &#8230; <a href="http://aarongodin.com/2010/08/12/rails-datetime-validation-2/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>For validating dates and times in your Rails application, pick up the handy gem <a href="http://github.com/adzap/validates_timeliness">validates_timeliness</a>. It allows you to very easily ensure that dates are in specific ranges or that dates happen after or before other dates.</p>
<p>After you install the gem (gem install validates_timeliness) and have added it to your environment.rb (config.gem “validates_timeliness”), you are ready to rock. Remember to restart your server after editing environment.rb.</p>
<p>Here is a simple example I have used to make sure that the date is on or after today’s date:</p>
<pre class="brush: ruby;">
validates_date :meeting_date,
               :on_or_after =&gt; lambda { Date.today },
               :on_or_after_message =&gt; &quot;can't be a date in the past&quot;</pre>
<p>If you look at the excellent documentation on Github, you will find many different options such as :before, :is_at, and :between.</p>
<p>The other gem I use with dates is calendar_date_select to allow a nice calendar interface to select dates. From my experience, these two don’t cooperate out-of-the-box. The calendar_date_select gem uses a date format that is not recognized by validates_timeliness. There is an option to change the accepted format in validates_date (or validates_time, validates_datetime), but that would not budge either.</p>
<p>My solution, after poking around a sparse documentation and the source code for calendar_date_select was to change the format on that end. All you need to is create an initializer named calendar_date_select.rb (or whatever you like, really) and use the following code:</p>
<pre class="brush: ruby;">CalendarDateSelect.format = :american</pre>
<p>That puts the date in the format that is by default accepted by validates_timeliness. Restart your server and you’re good to go.</p>
<p>Cheers</p>
]]></content:encoded>
			<wfw:commentRss>http://aarongodin.com/2010/08/12/rails-datetime-validation-2/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>The Path of a Web Developer</title>
		<link>http://aarongodin.com/2010/07/29/the-path-of-a-web-developer/</link>
		<comments>http://aarongodin.com/2010/07/29/the-path-of-a-web-developer/#comments</comments>
		<pubDate>Thu, 29 Jul 2010 13:56:06 +0000</pubDate>
		<dc:creator>Aaron Godin</dc:creator>
				<category><![CDATA[General]]></category>

		<guid isPermaLink="false">http://aarongodin.com/?p=40</guid>
		<description><![CDATA[This is a difficult time to start learning web development. I only say that because, like most skills that require steady learning, the breadth of knowledge that is required grows every day. If you are a first time programmer, first &#8230; <a href="http://aarongodin.com/2010/07/29/the-path-of-a-web-developer/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>This is a difficult time to start learning web development. I only say that because, like most skills that require steady learning, the breadth of knowledge that is required grows every day. If you are a first time programmer, first time web developer, or an intermediate developer (that’s my category), finding your way around what you should learn is tricky. I hope to provide insight into things that worked along my beginner path.</p>
<p>Software developers who are not paying attention to the web are hurting themselves. The amount of new desktop software compared to the amount of new web applications in the past two years is incredible, with web applications greatly outnumbering those on desktop.</p>
<p>There are two reasons why web applications rule. Desktop software is hard to maintain. When you need to fix it, you create a patch and then let people know that it is available for download. With web applications, you update your web server with the new patch and every user is already up to date. A second reason lies in software piracy at an all-time high due to increasingly fast connection speeds. Web applications are never stolen.</p>
<p>Lastly, a main drawback of web applications is that you leave yourself at risk when exposed to the public. Someone with the knowledge to bypass security in your application can destroy it. This affects every user. Taking these things into consideration, developing for the web is fun and is getting easier every day.</p>
<h3>The First Thing To Do</h3>
<p>Find a mentor. There are developers, including myself, who are willing to help you get started. When you have someone to guide you, answer questions, bounce ideas off of, and create challenges for you, the learning process is much more focused and rewarding. This is one criteria of being a web developer that I have learned to appreciate in the past few months.</p>
<h3>How Do I Get There?</h3>
<p>Skills begin with rudimentary drills. To master a martial art, you first learn a stance to hold your body in and a punch to inflict damage. Long amounts of training will allow you to not need to consciously remember these small skills when performing other things. The same is with web development.</p>
<p>Keep in mind that web development was my first experience programming. This was also when I was 14, so I scouted for the easier things to learn. This worked out very well for me and provided a good understanding of how the web works.</p>
<h4>The Basics</h4>
<p>The first task is to learn HTML and CSS. These are the building blocks of the web and are important to know inside and out. Neither of these is a programming language, but they are essential. They define your content, how it looks, and where it is placed.</p>
<h4>Choose Your Destiny</h4>
<p>When you have a grasp of the basics, your path splits somewhat. There are two approaches you can go to next, and both should be explored. However, it does not matter which order you do them in. My suggestion is in the order that I give them to you.</p>
<p>You will need to learn some sort of server-side programming language. PHP (stands for PHP: Hypertext Preprocessor) was the simplest to learn and allowed me to develop some basic web programming chops. The excellent thing about PHP is that it is simple to learn yet powerful. It has an awesome documentation that is contributed to with examples by PHP programmers and developers.</p>
<blockquote><p><span>What is a server side language?</span><br />
When a user visits your website, your server can generate the HTML file that is sent. The work is done on what is called the “backend” to perform operations such as inserting content into the document, looping to generate content, or more sophisticated operations.</p></blockquote>
<p>Server-side programming can be taken in a number of paths in itself. Some examples outside of PHP include Microsoft’s ASP and ASP.net. While there are a number of people that use ASP.net every day, I find it much more complex to learn if you have little or no programming experience. As a personal preference, I don’t enjoy programming any flavor of ASP. A third alternative is Java and JSPs (Java Server Pages). This approach is also more difficult for a beginner programmer like I was.</p>
<p>Languages all have their strengths and weaknesses; keep that in mind when learning a server-side language. That said, my current language of choice is Ruby and my framework of choice is Ruby on Rails (sometimes RoR or just Rails). There are hundreds of frameworks out there of all different flavors, but this is the one that has worked for me. However much I enjoy Ruby and Rails, I can’t advocate it to a beginner programmer because there is too much to learn at once. Also, when you learn PHP, you may just see why Rails is such an awesome way to develop web applications.</p>
<h4>Front-end Development</h4>
<p>A web browser today is also a scripted browser; it can interpret code and run it (keeping in mind that HTML and CSS is not really “code”, though it does act like it). The language that has become the standard is JavaScript, not to be confused with Java. There are thousands of online resources to learn JavaScript. The main idea behind JavaScript as I see it is that it is an event-driven language. What that means is that its best uses are to respond to events performed by the user such as a click, hover, and scroll. Responding to these events allows you as the developer to create excellent effects and interfaces.</p>
<h3>Where To Go After All That</h3>
<p>Other important skills to have are image manipulation, photography, server administration, graphic design, and much more. These things will most likely become of interest to you as you develop websites once you realize what you use them for.</p>
<h4>Keep On Going</h4>
<p>The key is to never stop learning. Learn everything. That language is difficult because you haven’t learned it. Anything is learnable over time. And time is another key to success; take your time to absorb information and learn how to apply what you learn.</p>
<p>The path I took is what I feel is the most simple approach to learning the web. It took four years to get to a point where I can have a decent enough understanding to be able to pick up a new idea and run with it. With even some dedication you could cut that in half today due to the amount of resources available. Also, I didn’t devote as much time as I should have to it, being that I was a busy kid in high school.</p>
<h3>My Goal To Contribute to Newcomers</h3>
<p>In this article, I mentioned a lot of programming languages that you may or may not have heard of before. I didn’t go into particular detail on anything, so I am developing a web developer wiki of sorts to assist beginner developers. Wikipedia is a good source, but I want to focus on how each technology is used in the grand scheme of things along with what it is related to. Also, it would prove a good resource for myself.</p>
<p>If you’re following me on Twitter or have my RSS feed, you will be updated when I have released the Glossary. If that’s not your thing, then you’ll just have to check in now and then.</p>
<p>Questions or comments? Leave a response below! I’d love you hear your input.</p>
]]></content:encoded>
			<wfw:commentRss>http://aarongodin.com/2010/07/29/the-path-of-a-web-developer/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>World of Warcraft: Good for Programmers</title>
		<link>http://aarongodin.com/2010/07/07/world-of-warcraft-good-for-programmers/</link>
		<comments>http://aarongodin.com/2010/07/07/world-of-warcraft-good-for-programmers/#comments</comments>
		<pubDate>Thu, 08 Jul 2010 02:22:18 +0000</pubDate>
		<dc:creator>Aaron Godin</dc:creator>
				<category><![CDATA[Pragmatism]]></category>

		<guid isPermaLink="false">http://aarongodin.com/?p=34</guid>
		<description><![CDATA[I finished Andy Hunt’s book Pragmatic Thinking &#038; Learning today and am amazed at the breadth of knowledge that exists in the category of “refactoring your wetware.” If you’re a programmer and have not picked up a copy, I suggest &#8230; <a href="http://aarongodin.com/2010/07/07/world-of-warcraft-good-for-programmers/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>I finished Andy Hunt’s book <em>Pragmatic Thinking &#038; Learning</em> today and am amazed at the breadth of knowledge that exists in the category of “refactoring your wetware.” If you’re a programmer and have not <a href="http://pragprog.com/titles/ahptl">picked up a copy</a>, I suggest you do. There is a lot to be learned about checking and balancing how we do things as programmers.</p>
<p>Andy talks extensively on goal setting and how to approach your goals. I am now a firm believer that World of Warcraft (shortened “WoW”, <a href="http://www.worldofwarcraft.com">the online gaming sensation</a>, and in my opinion an excellent game) is a very good method of learning about goal setting.</p>
<h3>Vision, Goals, and Objectives</h3>
<p>A vision is the overall thing that you see yourself eventually attaining. This is what most people would refer to as a goal and can be something broad such as “I want to be an excellent programmer” or “I want to be the best WoW player.” When you have a vision, you need to break that down into separate achievable goals (goals should be other things as well, but I won’t rehash Andy’s content).  Examples include “setting up a web service with Node.js”, &#8220;being an expert in Ruby&#8221;, and “reaching the maximum level in WoW.&#8221;</p>
<p>These goals will have many smaller objectives that work towards your goal.  In World of Warcraft, goal setting is extremely easy, and working towards those goals is what the game is built on.  If you want to be the max level, you have separate objectives called quests that are small items that you can focus on to progress in the game.  Should you decide you want to max out your Herbalism skill, there are varying levels of skill level to work towards that help you stay focused.</p>
<p>It is this sort of objective based progress in WoW that helps you stay on track for achieving your goals, and there is a lot to be said for that ideology.  Even though it is in a video game, goal setting is an awesome skill to have that can be learned. I would also argue that to be successful in the game requires you to be objective oriented.</p>
<h3>Good For This, Bad For That</h3>
<p>While I think World of Warcraft is a great way to learn goal setting, Andy also talks in his book about getting distracted from what you’re trying to achieve. That is where WoW really shines.  If you let it, it will suck time out of your day. That said, have fun with it because I feel it does teach some great skills.</p>
<p>Video games are not entirely a bad thing. They expand our mind and make us think along with inspire us. Keep that in mind next time you pick up the controller or mouse. I like am a fan of now asking myself, &#8220;what am I going to gain from this?&#8221; That usually keeps me in check if I can simply sit down and think about it.</p>
]]></content:encoded>
			<wfw:commentRss>http://aarongodin.com/2010/07/07/world-of-warcraft-good-for-programmers/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Restrict File Types in Paperclip</title>
		<link>http://aarongodin.com/2010/07/06/restrict-file-types-in-paperclip/</link>
		<comments>http://aarongodin.com/2010/07/06/restrict-file-types-in-paperclip/#comments</comments>
		<pubDate>Tue, 06 Jul 2010 23:27:17 +0000</pubDate>
		<dc:creator>Aaron Godin</dc:creator>
				<category><![CDATA[Ruby on Rails]]></category>

		<guid isPermaLink="false">http://aarongodin.com/?p=18</guid>
		<description><![CDATA[Paperclip by thoughtbot is an easy way to handle database-driven file uploads in your Rails application. It offers most options that are necessary for standard transfers and operations. While their documentation is good, I had trouble finding out how to &#8230; <a href="http://aarongodin.com/2010/07/06/restrict-file-types-in-paperclip/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p><a href="http://github.com/thoughtbot/paperclip">Paperclip by thoughtbot</a> is an easy way to handle database-driven file uploads in your Rails application. It offers most options that are necessary for standard transfers and operations. While their documentation is good, I had trouble finding out how to only allow certain file extensions to be uploaded.</p>
<p>The simplest way to do this is to look up the MIME types for the extensions you wish to upload. Then, add these to an array that paperclip checks on validation.</p>
<p>For a list of MIME types, reference <a href="http://www.webmaster-toolkit.com/mime-types.shtml">this list</a>. For example, if I want to only allow PDFs, I use application/pdf.</p>
<p>Then, on the model that has the attached file, add a validation supported by paperclip.</p>
<pre class="brush: ruby;"># your model

has_attached_file :budget_document
validates_attachment_content_type :budget_document, :content_type =&gt; [“application/pdf”]
</pre>
<h3>Microsoft and .docx</h3>
<p>The MIME type for Microsoft Word .doc files is application/msword. However, this does not work for versions of Office after 2004. After some searching I found this obnoxious type.</p>
<pre class="brush: plain; toolbar: false;">application/vnd.openxmlformats-officedocument.wordprocessingml.document</pre>
<p>You’ll need to add both that MIME type and application/msword to give full support. Also, consider this for other Office formats (.xls and .xlsx, .ppt and .pptx). Check <a href="http://en.wikipedia.org/wiki/Office_Open_XML">Wikipedia</a> for some more content types for other post-2004 XML formats..</p>
<p>I hope this helps anyone like me coming from frameworks that have this built in.</p>
]]></content:encoded>
			<wfw:commentRss>http://aarongodin.com/2010/07/06/restrict-file-types-in-paperclip/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
