<?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>My name is Joel &#187; Site Work</title>
	<atom:link href="http://joeloliveira.com/category/site-work/feed/" rel="self" type="application/rss+xml" />
	<link>http://joeloliveira.com</link>
	<description>I work on the web making stuff I like. I live in Boston(-ish) with my wife and our English Bulldog.</description>
	<lastBuildDate>Tue, 03 Aug 2010 16:28:17 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
		<item>
		<title>That&#8217;s it.  I&#8217;m going naked.</title>
		<link>http://joeloliveira.com/2009/12/28/thats-it-im-going-naked/</link>
		<comments>http://joeloliveira.com/2009/12/28/thats-it-im-going-naked/#comments</comments>
		<pubDate>Tue, 29 Dec 2009 04:10:37 +0000</pubDate>
		<dc:creator>Joel</dc:creator>
				<category><![CDATA[Site Work]]></category>
		<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.joeloliveira.com/?p=760</guid>
		<description><![CDATA[No, not without my clothes. That would be, just … not right. This website had been in its previous state for a while, probably the last year or so, with little traction. The vast majority of this stagnation being due to my working on implementing a design put together by the always amazing Erika Greco [...]]]></description>
			<content:encoded><![CDATA[<p><img src="/wp-content/uploads/2009/12/new-years-baby-1910-246x300.jpg" alt="" title="new years baby 1910" width="246" height="300" class="alignright size-medium wp-image-759" />No, not without my clothes. That would be, just … not right.</p>
<p>This website had been in its previous state for a while, probably the last year or so, with little traction. The vast majority of this stagnation being due to my working on implementing a design put together by the always amazing <a href="http://www.erikagreco.com/blog/">Erika Greco</a> (she designed my wife&#8217;s site &#8211; <a href="http://bitbythebeautybug.com">Bit By the Beauty Bug</a>).  I loved what Erika had done &#8211; and I worked on getting it juuuust right for a long time. After months and months of on and of work on implementing this beautiful work I decided – “It’s time to get back to the basics”.  There&#8217;s no need to get stuck in the cycle of working and re-working ad nauseum (my name is not <a href="http://www.wired.com/magazine/2009/12/fail_duke_nukem/">George Broussard</a>).  </p>
<p>So, I’m deciding to strip everything down to the barest of mark-up and style and concentrate on letting this “brand” or “identity” grow organically through either the content or whatever incremental changes I feel are right. Instead of trying to hit a <strong>done</strong> target, let’s get real and let this grow organically to a point where I feel it’s <strong>done enough</strong>.</p>
<p>What does this do for me, you might ask? It allows me to write without a nagging voice in the back of my head saying “you can publish this once the new redesign is live”. When new projects I’m working on launch – I’m just going to post something about it instead of worrying that “the portfolio section of the site isn’t done yet … oh the horror!”.</p>
<p>Over time I hope to make some incremental changes to make things less ugly, but only time will tell. I’ll be documenting things as they change for posterity’s sake so I can review how time has treated it, and maybe share its mutation with everyone with hopes any and all feedback would make me better.</p>
<p>So, please bear with me while I hang out here all exposed and vulnerable and stuff. It’s only appropriate to bring in 2010 like Baby New Year.</p>
]]></content:encoded>
			<wfw:commentRss>http://joeloliveira.com/2009/12/28/thats-it-im-going-naked/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Using Google Apps Email as Your App&#8217;s SMTP Server</title>
		<link>http://joeloliveira.com/2009/04/27/using-google-apps-email-as-your-apps-smtp-server/</link>
		<comments>http://joeloliveira.com/2009/04/27/using-google-apps-email-as-your-apps-smtp-server/#comments</comments>
		<pubDate>Mon, 27 Apr 2009 20:57:13 +0000</pubDate>
		<dc:creator>Joel</dc:creator>
				<category><![CDATA[Site Work]]></category>
		<category><![CDATA[Web Development]]></category>
		<category><![CDATA[internet]]></category>
		<category><![CDATA[email]]></category>
		<category><![CDATA[gmail]]></category>
		<category><![CDATA[google]]></category>
		<category><![CDATA[rails]]></category>
		<category><![CDATA[ruby]]></category>
		<category><![CDATA[smtp]]></category>

		<guid isPermaLink="false">http://www.joeloliveira.com/2009/04/27/using-google-apps-email-as-your-apps-smtp-server/</guid>
		<description><![CDATA[Something I&#8217;ve held out on for a while now has been to switch over the settings for ActionMailer in my application(s) to point to my hosted Google apps account.   I figured it was probably time to do so as piping email notifications through my comcast email account is generally, probably, a bad idea (courtesy of [...]]]></description>
			<content:encoded><![CDATA[<p>Something I&#8217;ve held out on for a while now has been to switch over the settings for ActionMailer in my application(s) to point to my hosted Google apps account.   I figured it was probably time to do so as piping email notifications through my comcast email account is generally, probably, a bad idea (courtesy of the &#8220;No Duh&#8221; department).</p>
<p>Seems like it should be rather easy, no?  Just change action mailer to resemble:</p>
<p><code><br />
ActionMailer::Base.smtp_settings = {<br />
:address =&gt; "smtp.gmail.com",<br />
:port =&gt; 587,<br />
:domain =&gt; "hosteddomain.com",<br />
:authentication =&gt; :plain,<br />
:user_name =&gt; "account@hosteddomain.com",<br />
:password =&gt; "omgsup3rsecret"<br />
}</code></p>
<p>Meh. Looks easy enough, right?  Except for the fact Google&#8217;s got some magic TLS authentication thing going on &#8211; you&#8217;ll run into an error in your mailers resembling <em>Must issue a STARTTLS command first.</em>.  Enough to make you work a little harder to get the magic working.</p>
<p>For those of you/us that are running Ruby 1.8.7 and Rails 2.3.x the answer is rather simple &#8211; add <em>:enable_starttls_auto =&gt; true</em> to your smtp settings, which will result in :</p>
<p><code><br />
ActionMailer::Base.smtp_settings = {<br />
:enable_starttls_auto =&gt; true,<br />
:address =&gt; "smtp.gmail.com",<br />
:port =&gt; 587,<br />
:domain =&gt; "hosteddomain.com",<br />
:authentication =&gt; :plain,<br />
:user_name =&gt; "account@hosteddomain.com",<br />
:password =&gt; "omgsup3rsecret"<br />
}</code></p>
<p>And for the rest of you/us (that would be me) that are still sticking with Ruby 1.8.6, there is an answer in the form of <a href="http://github.com/openrain/action_mailer_tls/tree/master">the action_mailer_tls gem</a>.  Following the readme will get you to right where you want to be &#8211; shoveling all the mail you would like into the ether that is the interwebs.</p>
]]></content:encoded>
			<wfw:commentRss>http://joeloliveira.com/2009/04/27/using-google-apps-email-as-your-apps-smtp-server/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Difference between :collection and :member in Rails 2.0</title>
		<link>http://joeloliveira.com/2008/08/11/difference-between-collection-and-member-in-rails-20/</link>
		<comments>http://joeloliveira.com/2008/08/11/difference-between-collection-and-member-in-rails-20/#comments</comments>
		<pubDate>Tue, 12 Aug 2008 01:06:57 +0000</pubDate>
		<dc:creator>Joel</dc:creator>
				<category><![CDATA[Site Work]]></category>
		<category><![CDATA[Web Development]]></category>
		<category><![CDATA[Work]]></category>
		<category><![CDATA[development]]></category>
		<category><![CDATA[enlightenment]]></category>
		<category><![CDATA[rails]]></category>

		<guid isPermaLink="false">http://www.joeloliveira.com/2008/08/11/difference-between-collection-and-member-in-rails-20/</guid>
		<description><![CDATA[In getting up to speed with the new bells and whistles in Rails 2.0s RESTful routing capabilities I ran into something that puzzled me.  Of the options for a resource defined among your routes there were two similar pieces that, for one reason or another, I could just not find a solid and bulletproof explanation [...]]]></description>
			<content:encoded><![CDATA[<p>In getting up to speed with the new bells and whistles in Rails 2.0s RESTful routing capabilities I ran into something that puzzled me.  Of the options for a resource defined among your routes there were two similar pieces that, for one reason or another, I could just not find a solid and bulletproof explanation for &#8211; <strong>:collection</strong> and <strong>:member</strong>.  The :member part of it I got pretty easily for some reason, because its description is inherent in its own name &#8230; &#8220;a member among the default restful actions&#8221;.  The :collection part?  Notsomuch.  After some digging in the Rails mailing list I ran into a great, and worthy, explanation for this knucklehead by a contributer named &#8220;deegee&#8221;:</p>
<blockquote><p>For example, with map.resources :reviews, if you want to add a method &#8216;delete_all&#8217; that deletes all reviews at once. You may want to call that with &#8216;/reviews/delete_all&#8217; and method PUT (never use GET to delete something). This method is acting on all resources (a<span class="nfakPe"> collection</span>), so the route should be:</p>
<blockquote><p><strong>map.resources :reviews, :<span class="nfakPe">collection</span> =&gt; { :delete_all =&gt; :put }</strong></p></blockquote>
<p>If you want to have a custom action acting on a specific resource, e.g. &#8216;/reviews/3/give_rating&#8217;, then your action is on a <span class="nfakPe">member</span> and the route would be</p>
<blockquote><p><strong>map.resources :reviews, :<span class="nfakPe">member</span> =&gt; { :give_rating =&gt; :put }</strong></p></blockquote>
</blockquote>
<p>So that&#8217;s it! They&#8217;re the same other than :member working on a single resource, while :collection works on multiple.  DONE!</p>
<blockquote></blockquote>
]]></content:encoded>
			<wfw:commentRss>http://joeloliveira.com/2008/08/11/difference-between-collection-and-member-in-rails-20/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>WordPress 2.5 &#8211; I&#8217;m impressed</title>
		<link>http://joeloliveira.com/2008/04/14/wordpress-25-im-impressed/</link>
		<comments>http://joeloliveira.com/2008/04/14/wordpress-25-im-impressed/#comments</comments>
		<pubDate>Tue, 15 Apr 2008 03:11:53 +0000</pubDate>
		<dc:creator>Joel</dc:creator>
				<category><![CDATA[Site Work]]></category>
		<category><![CDATA[Web Development]]></category>
		<category><![CDATA[Work]]></category>
		<category><![CDATA[development]]></category>
		<category><![CDATA[plugins]]></category>
		<category><![CDATA[sara]]></category>
		<category><![CDATA[wordpress]]></category>

		<guid isPermaLink="false">http://www.joeloliveira.com/2008/04/14/wordpress-25-im-impressed/</guid>
		<description><![CDATA[I&#8217;m in the process of building and theming the brand new bitbythebeautybug.com for Sara. Not only is she excited, but I&#8217;m elated to be working with the newest of the new in WordPress &#8220;technology&#8221;. It&#8217;s a strange leap from all the WP installs I&#8217;ve dealt with previously, but you can tell they&#8217;ve dropped a metric [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://www.joeloliveira.com/wp-content/uploads/2008/04/icon-big.thumbnail.png" alt="wordpress icon" align="right" />I&#8217;m in the process of building and theming the brand new bitbythebeautybug.com for Sara.   Not only is she excited, but I&#8217;m elated to be working with the newest of the new in WordPress &#8220;technology&#8221;.  It&#8217;s a strange leap from all the WP installs I&#8217;ve dealt with previously, but you can tell they&#8217;ve dropped a metric ton of work into making it the most secure (as it possibly can be) and usable blogging platform out there.</p>
<p>The first thing we did to get this ball rolling was to find a designer that truly &#8220;got&#8221; Sara&#8217;s vision for her brand.  Luckily we were able to retain the services of <a href="http://www.erikagreco.com/blog/" target="_blank">a wonderful designer named Erika</a>.  I really liked the work she did for the <a href="http://www.railsenvy.com/" target="_blank">RailsEnvy</a> guys and figured I would give it a shot to see if she would be available for some design work.   Turns out she had some space in her (I&#8217;m sure) busy calendar and whipped up some designs for us.   Design &#8211; complete.  Much thanks to Miss Greco!</p>
<p>On my end, the development work so far, other than slicing images, has consisted of a few tasks.</p>
<ol>
<li>Since this would be a custom theme, I looked for the most generic, baseline theme I could find to bend to my will.  After a lot of looking I decided on <a href="http://designadaptations.com/notebook/rapid-development-toolset-for-wordpress-theming/" target="_blank">one of these themes provided by Charity at Design Adaptations</a>.  It&#8217;s well  developed, very well commented and absolutely gets out of the way of anyone who is using it as a jump-off for their custom wordpress theme.  I&#8217;m still struggling with whether this is &#8220;custom&#8221; if it inherits code from someone else&#8217;s work.   Regardless &#8211; she deserves kudos.</li>
<li>One of the things I was looking forward to playing with in these recent versions of WordPress are the &#8220;Widgets&#8221; the WP team has put so much work into.  Picking and choosing all of the content blocks you want to see around your site, re-ordering them as you wish &#8211; it&#8217;s just nice. See a widget you like, download, activate, put it where you want it.  The only slightly difficult part was <a href="http://www.quickonlinetips.com/archives/2007/11/how-to-widget-enable-wordpress-themes-in-3-easy-steps/#comment-592692" target="_blank">to enable the sidebar for widget support</a>, and then figure out just <a href="http://www.quickonlinetips.com/archives/2007/11/how-to-create-multiple-dynamic-sidebars-for-wordpress-widgets/" target="_blank">how to enable multiple &#8220;sidebars&#8221;</a>.</li>
<li>Once the theme actually <strong>supported</strong> all of these widgets &#8211; it was time to find them.
<ul>
<li><a href="http://wordpress.org/extend/plugins/flexo-archives-widget/#post-2194" target="_blank">Flexo Archives</a> &#8211; reducing the clutter that the generic Archives widget spits out.</li>
<li><a href="http://wordpress.org/extend/plugins/limited-category-lists-widget/" target="_blank">Limited Catlists</a> &#8211; displaying the latest posts in Category X &#8211; for our purposes, the posts categorized under &#8220;Featured&#8221;.  I couldn&#8217;t find a &#8220;Featured Posts&#8221; widget so this will just have to do.</li>
<li>Text widget &#8211; this one comes stock with WP by default and takes care of those scenarios where a little duct tape is needed.  No decent FeedBurner widget? That&#8217;s fine &#8211; copy and paste the code Feedburner gives you into the text widget.  Need a small &#8220;About&#8221; widget?  Text widget to the rescue.</li>
</ul>
</li>
</ol>
<p>It goes without saying &#8211; I&#8217;m far from finished, but in the initial sprint to build out this site these are the pieces I managed to take note of.  All in all though, WordPress 2.5 has been nothing short of a revelation in terms of where it came <em>from</em>, and where it&#8217;s going <em>to</em>.  <strong>Huge</strong> props go to <a href="http://www.happycog.com" target="_blank">Happy Cog</a> for the work they put into the new WP dashboard.  It just feels so <em><strong>right</strong></em>.</p>
]]></content:encoded>
			<wfw:commentRss>http://joeloliveira.com/2008/04/14/wordpress-25-im-impressed/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Link Slugs with Javascript</title>
		<link>http://joeloliveira.com/2008/02/26/link-slugs-with-javascript/</link>
		<comments>http://joeloliveira.com/2008/02/26/link-slugs-with-javascript/#comments</comments>
		<pubDate>Tue, 26 Feb 2008 13:00:59 +0000</pubDate>
		<dc:creator>Joel</dc:creator>
				<category><![CDATA[Misc]]></category>
		<category><![CDATA[Site Work]]></category>
		<category><![CDATA[Web Development]]></category>
		<category><![CDATA[Work]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[rails]]></category>
		<category><![CDATA[ruby]]></category>
		<category><![CDATA[seo]]></category>

		<guid isPermaLink="false">http://www.joeloliveira.com/2008/02/26/link-slugs-with-javascript/</guid>
		<description><![CDATA[Over at Thredded I am still using Rails 1.2.3 (I&#8217;m a little gun-shy to upgrade to 2.0) and, of course, felt that slugged links were necessary for both search engine optimization and making things like assessing site analytics a little easier. It doesn&#8217;t even need justification as it&#8217;s a matter of fact and necessity for [...]]]></description>
			<content:encoded><![CDATA[<p>Over at <a href="http://thredded.com" target="_blank">Thredded</a> I am still using Rails 1.2.3 (I&#8217;m a little gun-shy to upgrade to 2.0) and, of course, felt that slugged links were necessary for both  search engine optimization and making things like assessing site analytics a little easier.   It doesn&#8217;t even need justification as it&#8217;s a matter of fact and necessity for any and all social platforms &#8211; blogging, forums, etc.   With RoR 1.2.3 the best way to get your links <em>slugging</em> it out was to incorporate a plugin like <a href="http://tore.darell.no/pages/acts_as_sluggable">acts_as_sluggable</a>.  It works like a charm, really, and I&#8217;ve never had any case where I needed extra functionality.</p>
<p>&#8230; Until now.  I&#8217;ve started incorporating some auto-updating magic to Thredded and needed to grab a lot of data back from an AJAX call (sorry Steve &#8211; <strong>XHR</strong>) in the form of JSON.  All well and good so far.  But, when new links needed to be built on the client side, I didn&#8217;t have my handy built-in Rails ActiveRecord overrides to spit out my new slugged-up link!  What to do?!</p>
<p>I dug through the plugin source and found the function that built the url&#8217;s slug -</p>
<pre class="prettyprint">def make_slug(string)
      string.to_s.downcase.gsub(/[^a-z0-9]+/, '-').gsub(/-+$/, '').gsub(/^-+$/, '')
end</pre>
<p>&#8230; And thought the quickest solution was just to rewrite it as a simple JS function.</p>
<pre class="prettyprint">function slug(id, title)
{
      title = title.toLowerCase().replace(/[^a-z0-9]+/g,'-').replace(/-+$/g,'').replace(/^-+$/g,'');
      return(id+'-'+title);
}</pre>
]]></content:encoded>
			<wfw:commentRss>http://joeloliveira.com/2008/02/26/link-slugs-with-javascript/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>The &#8220;hiatus&#8221; is over</title>
		<link>http://joeloliveira.com/2008/02/04/the-hiatus-is-over/</link>
		<comments>http://joeloliveira.com/2008/02/04/the-hiatus-is-over/#comments</comments>
		<pubDate>Tue, 05 Feb 2008 02:58:56 +0000</pubDate>
		<dc:creator>Joel</dc:creator>
				<category><![CDATA[Misc]]></category>
		<category><![CDATA[Site Work]]></category>
		<category><![CDATA[Work]]></category>
		<category><![CDATA[business]]></category>
		<category><![CDATA[life]]></category>
		<category><![CDATA[website]]></category>

		<guid isPermaLink="false">http://www.joeloliveira.com/2008/02/04/the-hiatus-is-over/</guid>
		<description><![CDATA[Has it really been (well over) a year since I last posted a single thing on this weblog? It goes without saying that that is a crying shame. Woefully neglected is too soft a phrase to use when it comes to signifying how little I&#8217;ve done with joeloliveira.com in the past year and a half. [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.flickr.com/photos/23336262@N04/2239705528/" class="tt-flickr"><img src="http://farm3.static.flickr.com/2187/2239705528_8082fce1a3_m.jpg" alt="Route 66" align="left" border="0" height="192" width="240" /></a></p>
<p>Has it really been (well over) a year since I last posted a <strong>single</strong> thing on this weblog?  It goes without saying that that is a crying shame.  Woefully neglected is too soft a phrase to use when it comes to signifying how little I&#8217;ve done with joeloliveira.com in the past year and a half.  This site turned into an abandoned wasteland &#8211; deserted and stagnant.</p>
<p><strong>Why?</strong>  It borders on cliche, and could probably be filed within the &#8220;cop out&#8221; category, but for me it begins and ends with my not having the energy or motivation to write for my own website when I got home from work.  I probably could have written a paragraph or two while from work, but never felt that was fair to my employers.   What about those hours outside of work?  Surely there are moments I could steal past 5 or 6ish to write something?  Absolutely!  But then the question still remains -</p>
<p><strong>What to write about?</strong>   There are numerous topics I ponder in the course of a day but for months &#8211; no one single target subject.  I&#8217;ve usually just posted whatever events I&#8217;ve attended, fun nights out with friends, stupid miscellanea found on the internet &#8211; nothing of consequence for the majority of folks on the internet.   To my friends and family &#8211; of course I know it&#8217;s interesting to YOU, but to communicate over the internet in such a blanket manner feels a bit too detached.</p>
<p><strong> What now?</strong>  Well things have changed &#8211; drastically!  A little over a month ago I left my job at Molecular, an internet consultancy.   The company I&#8217;ve left to work for is a very small and fledgling little operation &#8211; my <em>own</em> company.   After months of preparation, nerve-wracked second guessing  and laying groundwork with hopes I could pull this off I actually did it.   As difficult as it was to leave such a great group of people at Molecular and all the opportunity they&#8217;ve allowed me in the past three years I decided that it was the right time to make this next big step.</p>
<p>So far, so good.  I&#8217;m excited.  I am already engaged with a local ad agency helping them with a handful of their (<strong>immense</strong>) interactive clients.   This site is going to evolve into my portfolio for anyone looking for a resource to bang out nice, clean, rich interfaces with XHTML, CSS, javascript, and other interesting and challenging web-based technologies.</p>
<p>To give you an idea as to what types of things I&#8217;m involved with &#8211; The past year and change I&#8217;ve actually been encouraging and helping Sara with <a href="http://bitbythebeautybug.com">her own weblog</a>.  Have I not told you about it yet?  For shame! <a href="http://bitbythebeautybug.com" target="_blank">Go visit and take a look</a> at the wonderful work she&#8217;s been doing. In addition to playing occasional tech-support and copy editor for Sara I&#8217;ve been putting in most spare hours working on my own project(s). Instead of writing about it &#8211; I&#8217;ve been trying to DO it. Think it&#8217;s difficult to post on a blog every day? Try doing it when you&#8217;re attempting to master new tools in addition to supporting the users who are helping drive your new project. It&#8217;s not easy.</p>
<p><span class="tt-flickr"></span>The ultimate end-game will be to afford myself the time to work on those few previously mentioned projects that have grown over the past few years to something I&#8217;m hoping could blossom into something beyond &#8220;pet project&#8221; status. Once I&#8217;m a little more comfortable with their status I will post announcements here.</p>
<p>In the meantime, this site will very occasionally feature commentary on the things I find interesting about what&#8217;s going on in my industry,  maybe some personal anecdotes, and hopefully some useful original content.  Let&#8217;s just hope it&#8217;s not another 16 or 17 months until I write another post.</p>
]]></content:encoded>
			<wfw:commentRss>http://joeloliveira.com/2008/02/04/the-hiatus-is-over/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>
