<?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/"
	>

<channel>
	<title>Aeonscope &#187; Software</title>
	<atom:link href="http://www.aeonscope.net/category/software/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.aeonscope.net</link>
	<description>A view of time.</description>
	<pubDate>Tue, 17 Jul 2012 03:02:02 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.7</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Localtunnel Ruby Gem</title>
		<link>http://www.aeonscope.net/2012/04/01/localtunnel-ruby-gem/</link>
		<comments>http://www.aeonscope.net/2012/04/01/localtunnel-ruby-gem/#comments</comments>
		<pubDate>Sun, 01 Apr 2012 14:37:42 +0000</pubDate>
		<dc:creator>Brooke Kuhlmann</dc:creator>
		
		<category><![CDATA[Software]]></category>

		<guid isPermaLink="false">http://www.aeonscope.net/?p=4363</guid>
		<description><![CDATA[Introduction
Sometimes you need to quickly host a web application from your local machine but need a public address for people to connect to. What do you do? Recently localtunnel, a Ruby Gem, was released that makes all of this easy.
Installation
To install, type: gem install localtunnel
Usage

Open a terminal window.
Type: localtunnel -k ~/.ssh/id_rsa.pub 3000. Of course, feel [...]]]></description>
			<content:encoded><![CDATA[<p><strong>Introduction</strong></p>
<p>Sometimes you need to quickly host a web application from your local machine but need a public address for people to connect to. What do you do? Recently <a href="http://progrium.com/localtunnel">localtunnel</a>, a Ruby Gem, was released that makes all of this easy.</p>
<p><strong>Installation</strong></p>
<p>To install, type: <code>gem install localtunnel</code></p>
<p><strong>Usage</strong></p>
<ol>
<li>Open a terminal window.</li>
<li>Type: <code>localtunnel -k ~/.ssh/id_rsa.pub 3000</code>. Of course, feel free to choose a different port.</li>
<li>Send the newly created server address (example: http://3ufx.localtunnel.com) to whoever needs to connect to your local server.</li>
</ol>
<p><strong>TextExpander</strong></p>
<p>For those of you using, TextExpander, I setup the &#8220;;tunnel&#8221; abbreviation to expand to:</p>
<p><code>localtunnel -k ~/.ssh/id_rsa.pub %fill:port%</code></p>
<p><strong>Notes</strong></p>
<p>There is a slight downside to using localtunnel and that is that it will clutter your ~/.ssh/known_hosts file with all those auto-generated host names. It would be nice if localtunnel performed a cleanup task to remove extraneous entries after use. Make sure to run the following command if this bothers you:</p>
<p><code>ssh-keygen -R 3ufx.localtunnel.com</code> (replace 3ufx with whatever was generated for your session).</p>
<p><strong>Conclusion</strong></p>
<p>Overall, a handy piece of software and worth adding to your toolbox.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.aeonscope.net/2012/04/01/localtunnel-ruby-gem/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Redmine on Heroku</title>
		<link>http://www.aeonscope.net/2012/02/12/redmine-on-heroku/</link>
		<comments>http://www.aeonscope.net/2012/02/12/redmine-on-heroku/#comments</comments>
		<pubDate>Sun, 12 Feb 2012 20:10:56 +0000</pubDate>
		<dc:creator>Brooke Kuhlmann</dc:creator>
		
		<category><![CDATA[Software]]></category>

		<guid isPermaLink="false">http://www.aeonscope.net/?p=4331</guid>
		<description><![CDATA[
Introduction
Redmine is open source software for project management. It comes complete with project management (of course), calendars, issue tracking, milestone/version planning, news syndication, wikis, forums, user and role management, etc. Built on top of Ruby and Rails, it make a compelling piece of software for small teams/startups that needs a quick and dirty project management [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://www.aeonscope.net/wp-content/uploads/2012/02/redmine.png" alt="redmine" title="redmine" width="420" height="100" class="aligncenter size-full wp-image-4333" /></p>
<p><strong>Introduction</strong></p>
<p><a href="http://www.redmine.org">Redmine</a> is open source software for project management. It comes complete with project management (of course), calendars, issue tracking, milestone/version planning, news syndication, wikis, forums, user and role management, etc. Built on top of Ruby and Rails, it make a compelling piece of software for small teams/startups that needs a quick and dirty project management solution.</p>
<p>The purpose of this post is to walk you through setting up Redmine on your local development box and remotely on a Heroku server.</p>
<p><strong>Requirements</strong></p>
<p>The following is required to setup Redmine and makes some assumptions about your familiarity with each.</p>
<ol>
<li><a href="http://www.apple.com/macosx/">Mac OS X (Lion)</a>- Ubuntu would be fine too (except for the HomeBrew specifics, of course).</li>
<li><a href="http://mxcl.github.com/homebrew">Homebrew</a> - Automates your development environment setup needs.</li>
<li><a href="https://github.com/sstephenson/rbenv">rbenv</a> - RVM would be fine as well but, for the purposes of this post, I&#8217;ll stick with rbenv.</li>
<li><a href="http://www.ruby-lang.org">Ruby 1.8.7-p357</a> - Use the latest patch for Ruby 1.8.7. Yeah, I know, no love for Ruby 1.9.x yet.</li>
<li><a href="http://rubyonrails.org">Ruby on Rails 2.3.14</a> - Yeah, they don&#8217;t support Rails 3.x yet.</li>
<li><a href="http://www.heroku.com">Heroku</a> - You&#8217;ll want the bamboo-ree-1.8.7 stack. Don&#8217;t worry, we&#8217;ll get to that in a sec.</li>
<li><a href="http://www.postgresql.org">PostgreSQL</a> - Using 9.1.2 at the time of this writing.</li>
</ol>
<p><strong>Local Setup</strong></p>
<p>The following assumes a relatively fresh Ruby install (skip ahead if necessary). NOTE: I&#8217;m using Ruby Gems 1.6.2.</p>
<ol>
<li>Open a terminal window and start typing out the following commands.</li>
<li><code>brew install readline</code></li>
<li><code>CONFIGURE_OPTS="--with-readline-dir=$(brew --prefix readline)" rbenv install 1.8.7-p357</code></li>
<li><code>env ARCHFLAGS="-arch x86_64" gem install pg</code></li>
<li><code>gem install -v 2.3.14 rails</code></li>
<li><code>gem uninstall rake</code> - Rails installs the newest version of Rake. Redmine doesn&#8217;t like this, so rip it out.</li>
<li><code>gem install -v 0.8.7 rake</code> - Required by Redmine.</li>
<li><code>gem install -v 0.4.2 i18n</code></li>
<li><a href="http://rubyforge.org/frs/?group_id=1850">Download the latest Redmine build</a>, unpack, and change directory to the project root.</li>
<li><code>rake generate_session_store</code></li>
<li>Edit the database.yml. Example: <a href="http://www.aeonscope.net/wp-content/uploads/2012/02/databse.yml">database.yml</a>.</li>
<li><code>rake db:create</code></li>
<li><code>rake db:migrate</code></li>
<li><code>rake redmine:load_default_data</code></li>
</ol>
<p><em><strong>CAUTION</strong>: I like to use <a href="http://pow.cx">Pow</a> to easily spin up my local rails apps. In order to do this you need to generate a config.ru file (code is provided by Pow when you try to launch Redmine). Make sure that you add the config.ru to your .gitignore file before deploying to Heroku. Otherwise you&#8217;ll get odd errors related to not being able to find your stylesheet and javascript assets when launching the app on Heroku.</em></p>
<p><strong>Remote Setup</strong></p>
<ol>
<li>cd to the root of your Redmine project.</li>
<li><code>rm -rf vendor/rails</code></li>
<li><code>rm -rf vendor/gems/coderay</code></li>
<li>Create a <a href="http://www.aeonscope.net/wp-content/uploads/2012/02/gems.txt">.gems</a> file in the root of your project folder (don&#8217;t forget to rename gems.txt download to .gems).</li>
<li><code>heroku create &lt;your project name&gt; --stack bamboo-ree-1.8.7</code></li>
<li><code>git init</code></li>
<li><code>git add .</code></li>
<li><code>git commit -a -m "Initial commit."</code></li>
<li><code>git push heroku master</code></li>
<li><code>heroku run rake db:migrate</code></li>
<li><code>heroku run rake redmine:load_default_data</code></li>
<li>Load <code>&lt;your project name&gt;.heroku.com</code> in your browser. Have a beer!</li>
</ol>
<p><em><strong>NOTE</strong>: Depending on your Heroku setup you might need to pass the <code>--app &lt;your project name&gt;</code> suffix to each of the Heroku commands above. The Heroku gem will warn you if necessary.</em></p>
<p><strong>Next Steps</strong></p>
<p>At this point you should be up and running locally as well as remotely on Heorku. You can, of course, add domain name support, update your DNS and give your new app a proper domain name. Adding DB backup support, etc. would be good. Also email and Amazon S3 file storage would be wise too along with any other goodies you can dream up. &#8230;but I&#8217;ll leave that up the reader to play with.</p>
<p><strong>Credits</strong></p>
<p>Special thanks to <a href="https://twitter.com/DilatedTime">Brant</a> for the initial setup and impetus for this.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.aeonscope.net/2012/02/12/redmine-on-heroku/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Mac OS X Lion Setup</title>
		<link>http://www.aeonscope.net/2011/09/05/mac-os-x-lion-setup/</link>
		<comments>http://www.aeonscope.net/2011/09/05/mac-os-x-lion-setup/#comments</comments>
		<pubDate>Tue, 06 Sep 2011 01:59:15 +0000</pubDate>
		<dc:creator>Brooke Kuhlmann</dc:creator>
		
		<category><![CDATA[Software]]></category>

		<guid isPermaLink="false">http://www.aeonscope.net/?p=4149</guid>
		<description><![CDATA[The following is a breakdown of apps I commonly use and their install order (from a fresh install of the MacOS):
Install
To install Mac OX X Lion, you&#8217;ll need to be running Snow Leopard with the App Store application installed. Here are the steps necessary to configure you machine:

Launch the App Store and buy Lion to [...]]]></description>
			<content:encoded><![CDATA[<p>The following is a breakdown of apps I commonly use and their install order (from a fresh install of the MacOS):</p>
<p><strong>Install</strong></p>
<p>To install Mac OX X Lion, you&#8217;ll need to be running Snow Leopard with the App Store application installed. Here are the steps necessary to configure you machine:</p>
<ol>
<li>Launch the App Store and buy Lion to start the download.</li>
<li>Once the download completes, DO NOT start the install. Instead ensure that you make a copy of the DMG image via the Lion installer application (found in your Applications folder). You&#8217;ll need to open file info on the installer and choose to show package contents. You&#8217;ll want to make a copy of the <code>Contents/SharedSupport/InstallESD.dmg</code> file. <a href="http://www.informationweek.com/byte/howto/personal-tech/desktop-os/231002151">More details here</a>.</li>
<li>Once a copy of the DMG has been made, you can start the install.</li>
<li>Follow the screen prompts to complete.</li>
</ol>
<p>For those that don&#8217;t like the default Lion install settings, you&#8217;ll need to perform the install twice. However, this time you have the DMG installer image. You can either <a href="http://www.macworld.com/article/161069/2011/07/make_a_bootable_lion_installer.html">make a DVD or USB boot disk</a>. Once you have, you can reboot Lion while holding down the COMMAND+R keys to launch into recovery mode. Here are the steps for reinstall:</p>
<ol>
<li>Launch Disk Utilities and format the main partition as MacOS Extended (journaled, case sensitive). Don&#8217;t bother messing with the boot disk partition as that is where your recovery utilities are.</li>
<li>Exit Disk Utilities and start the Lion installer.</li>
<li>Follow the install prompts until the Lion install completes.</li>
</ol>
<p><strong>Configuration</strong></p>
<ol>
<li>Rename your computer via System Preferences - Sharing.</li>
<li>Unhide your user library folder: <code>chflags nohidden ~/Library</code></li>
</ol>
<p><strong>Applications</strong></p>
<ol>
<li>Mac OS X 10.7.x Software Updates (Software Update)</li>
<li>Mac OS X 10.7.x Combo Patch (web)</li>
<li>XCode (App Store)</li>
<li><a href="https://www.dropbox.com">Dropbox</a> (web)</li>
<li><a href="http://agilewebsolutions.com/products/1Password">1Password</a> (App Store)</li>
<li><a href="https://agilebits.com/knox">Knox</a> (web)</li>
<li><a href="http://www.iterm2.com">iTerm2</a> (web)</li>
<li><a href="http://www.sublimetext.com/2">Sublime Text 2</a> (web)</li>
<li><a href="http://www.alfredapp.com">Alfred</a> (web)</li>
<li><a href="http://www.alfredapp.com/powerpack/">Alfred Powerpack</a> (web)</li>
<li><a href="http://www.smilesoftware.com/TextExpander/">TextExpander</a> (App Store)</li>
<li><a href="http://cocoatech.com">PathFinder</a> (web)</li>
<li><a href="http://www.mozilla.com/en-US/firefox/">Firefox</a> (web)</li>
<li><a href="http://www.google.com/chrome">Google Chrome</a> (web)</li>
<li><a href="http://www.opera.com">Opera</a> (web)</li>
<li><a href="http://www.omnigroup.com/applications/omnifocus/">OmniFocus</a> (App Store)</li>
<li><a href="http://www.omnigroup.com/applications/omnioutliner/">OmniOutliner</a> (App Store)</li>
<li><a href="http://www.omnigroup.com/applications/omnigraffle/">OmniGraffle Professional</a> (App Store)</li>
<li><a href="http://www.omnigroup.com/products/omnidazzle/">OmniDazzle</a> (web)</li>
<li><a href="http://lightheadsw.com/caffeine/">Caffeine</a> (App Store)</li>
<li><a href="http://flexibits.com/fantastical">Fantastical</a> (App Store)</li>
<li><a href="http://colorsnapper.com">ColorSnapper</a> (App Store)</li>
<li><a href="http://iconfactory.com/software/xscope">xScope</a> (App Store)</li>
<li><a href="http://3hubapp.com">3Hub</a> (App Store)</li>
<li><a href="http://www.expandrive.com">ExpanDrive</a> (web)</li>
<li><a href="http://bjango.com/apps/istatmenus/">iStat Menus</a> (web)</li>
<li><a href="http://growl.info/">Growl</a> (App Store)</li>
<li><a href="http://avatron.com/apps/air-display">Air Display</a> (App Store)</li>
<li><a href="http://tapbots.com/software/pastebot/#sync">Pastebot Sync</a> (web)</li>
<li><a href="http://www.smilesoftware.com/PDFpenPro/index.html">PDFpenPro</a> (App Store)</li>
<li><a href="http://gitboxapp.com">Gitbox</a> (App Store)</li>
<li><a href="http://mac.github.com">GitHub</a> (web)</li>
<li><a href="http://www.snippetsapp.com">Snippets</a> (web)</li>
<li><a href="http://krillapps.com/patterns">Patterns</a> (App Store)</li>
<li><a href="http://macrabbit.com/espresso">Espresso</a> (web)</li>
<li><a href="http://www.gradientapp.com">Gradient</a> (App Store)</li>
<li><a href="http://incident57.com/codekit">CodeKit</a> (web)</li>
<li><a href="http://www.realmacsoftware.com/littlesnapper/">LittleSnapper</a> (App Store)</li>
<li><a href="http://flyingmeat.com/acorn">Acorn</a> (App Store)</li>
<li><a href="http://www.pixelmator.com/">Pixelmator</a> (App Store)</li>
<li><a href="http://echoone.com/doubletake/">DoubleTake</a> (web)</li>
<li><a href="http://imageoptim.pornel.net">ImageOptim</a> (web)</li>
<li><a href="http://pornel.net/imagealpha">ImageAlpha</a> (web)</li>
<li><a href="http://www.videolan.org/vlc/">VLC</a> (web)</li>
<li><a href="http://www.pgadmin.org/index.php">pgAdmin</a> (web)</li>
<li><a href="http://www.vmware.com/products/fusion/">VMWare Fusion</a> (web)</li>
<li><a href="http://www.billingsapp.com/index.html">Billings</a> (App Store)</li>
<li><a href="http://nothirst.com/moneywell/">MoneyWell</a> (App Store)</li>
<li><a href="http://www.delicious-monster.com/">Delicious Library</a> (App Store)</li>
<li><a href="http://www.apple.com/ilife/garageband">GarageBand</a> (App Store)</li>
<li><a href="http://www.apple.com/ilife/imovie">iMovie</a> (App Store)</li>
<li><a href="http://www.apple.com/ilife/iphoto">iPhoto</a> (App Store)</li>
<li><a href="http://www.openoffice.org/">OpenOffice</a> (web)</li>
<li><a href="http://www.logitech.com/en-us/584/3129">Logitech Control Center</a> (web)</li>
<li><a href="http://www.logitech.com/en-us/440/3742?section=downloads">Logitech Harmony Remote</a> (web)</li>
<li><a href="http://colloquy.info">Colloquy</a> (web)</li>
<li><a href="http://www.skype.com">Skype</a> (web)</li>
</ol>
<p><strong>Configurations</strong></p>
<ol>
<li>Enable FileVault (via System Preferences - Security and Privacy).</li>
<li>Configure Wi-Fi.</li>
<li>Configure printer.</li>
<li>Configure scanner.</li>
<li>Configure Apple Mail and all email accounts.</li>
<li>Configure iCal</li>
<li>Configure iTunes</li>
<li>Install the Network Link Conditioner preference pane (found via <code>/Developer/Applications/Utilities/Network Link Conditioner/</code>)</li>
<li><a href="http://www.aeonscope.net/software/applications/firefox/">Install Firefox extensions</a>.</li>
<li>Configure installed applications.</li>
<li><a href="http://www.aeonscope.net/2010/05/02/mac-os-x-ruby-environment/">Configure Ruby development environment</a>.</li>
</ol>
<p><strong>Notes</strong></p>
<p>For more Mac-related information, check out my <a href="http://www.aeonscope.net/software/operating-systems/mac/">Mac</a> page.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.aeonscope.net/2011/09/05/mac-os-x-lion-setup/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Resizing Applications with Alfred and Ruby</title>
		<link>http://www.aeonscope.net/2011/06/01/resizing-applications-with-alfred-and-ruby/</link>
		<comments>http://www.aeonscope.net/2011/06/01/resizing-applications-with-alfred-and-ruby/#comments</comments>
		<pubDate>Thu, 02 Jun 2011 02:32:10 +0000</pubDate>
		<dc:creator>Brooke Kuhlmann</dc:creator>
		
		<category><![CDATA[Software]]></category>

		<guid isPermaLink="false">http://www.aeonscope.net/?p=4107</guid>
		<description><![CDATA[Introduction
When on the move with my laptop, I end up having to resize all my applications which is time consuming to say the least. The main difference is due to two very difference screen resolutions:

Home Screen = 2560&#215;1440 pixels
Laptop Screen = 1440&#215;990 pixels

The worst is when moving from my smaller laptop resolution back to the [...]]]></description>
			<content:encoded><![CDATA[<p><strong>Introduction</strong></p>
<p>When on the move with my laptop, I end up having to resize all my applications which is time consuming to say the least. The main difference is due to two very difference screen resolutions:</p>
<ul>
<li>Home Screen = 2560&#215;1440 pixels</li>
<li>Laptop Screen = 1440&#215;990 pixels</li>
</ul>
<p>The worst is when moving from my smaller laptop resolution back to the big screen at home because all my applications are severely squished. I finally got fed up with the manual labor of resizing my desktop environment each time and crafted a solution: Alfred + Ruby. Win!</p>
<p><strong>Requirements</strong></p>
<p>This post assumes you are familiar with the following:</p>
<ul>
<li><a href="http://www.apple.com/macosx/">Mac OS</a></li>
<li><a href="http://www.alfredapp.com">Alfred</a></li>
<li><a href="http://en.wikipedia.org/wiki/Bash_%28Unix_shell%29">Bash Shell Scripting</a></li>
<li><a href="http://www.ruby-lang.org">Ruby</a></li>
<li><a href="https://rvm.beginrescueend.com/">RVM</a></li>
</ul>
<p>You might also want to read my previous post, <a href="http://www.aeonscope.net/2011/05/29/connecting-alfred-to-bitly-via-ruby/">Connecting Alfred to Bitly via Ruby</a>, to understand my reasoning for using a bash shell wrapper script when using multiple Ruby installs.</p>
<p><strong>Setup</strong></p>
<p>You&#8217;ll want to download the following scripts:</p>
<ul>
<li><a href="https://gist.github.com/998032">rvm_ruby</a> - A Bash shell script for dealing with multiple Ruby installs.</li>
<li><a href="https://gist.github.com/1003763">app_resizer.rb</a> - A Ruby script for resizing applications.</li>
</ul>
<p>&#8230;and install them as follows (for example):</p>
<ul>
<li>/bin/rvm_ruby</li>
<li>~/path/to/your/ruby/scripts/folder/app_resizer.rb</li>
</ul>
<p>Feel free to configure the app_resizer.rb script to your liking. The applications and related bounds are specific to my environment but you&#8217;ll find that it is easy enough to add your apps and bounds to your liking. The script only supports two modes: home and laptop. Again, feel free to tweak as you desire.</p>
<p>To configure Alfred, open preferences and go to your terminal command settings (click to enlarge):</p>
<p><a href="http://www.aeonscope.net/wp-content/uploads/2011/06/alfred_terminal_commands.png" rel='lytebox[resizing-applications-with-alfred-and-ruby]'><img src="http://www.aeonscope.net/wp-content/uploads/2011/06/alfred_terminal_commands-300x226.png" alt="Alfred Terminal Commands" title="Alfred Terminal Commands" width="300" height="226" class="aligncenter size-medium wp-image-4108" /></a></p>
<p>&#8230;and here are my settings for the app resizer script and command in Alfred (click to enlarge):</p>
<p><a href="http://www.aeonscope.net/wp-content/uploads/2011/06/alfred_app_resizer.png" rel='lytebox[resizing-applications-with-alfred-and-ruby]'><img src="http://www.aeonscope.net/wp-content/uploads/2011/06/alfred_app_resizer-300x174.png" alt="Alfred - App Resizer" title="Alfred - App Resizer" width="300" height="174" class="aligncenter size-medium wp-image-4109" /></a></p>
<p><strong>Usage</strong></p>
<p>Once the Ruby script and Alfred settings are configured, I can now perform the following keyboard commands to resize all running applications:</p>
<ul>
<li>OPTION + SPACE</li>
<li>resize home + ENTER</li>
</ul>
<p>&#8230;or&#8230;</p>
<ul>
<li>OPTION + SPACE</li>
<li>resize laptop + ENTER</li>
</ul>
<p>I wrote the Ruby script so that it only affects running applications. If you later launch an application after you have resized your applications, you can always run the Alfred &#8220;resize&#8221; command again. Easy peasy.</p>
<p><strong>Resources</strong></p>
<p>You have probably noticed by now that I&#8217;m using <a href="http://appscript.sourceforge.net/rb-appscript/index.html">rb-appscript</a> gem in my Ruby script. I did this because I really don&#8217;t enjoy writing pure AppleScript code. Should you decide to get more involved with AppleScript, I highly recommend downloading the associated <a href="http://appscript.sourceforge.net/tools.html">rb-appscript tools</a>: ASDictionary and ASTranslate.</p>
<p>Enjoy.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.aeonscope.net/2011/06/01/resizing-applications-with-alfred-and-ruby/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Connecting Alfred to Bitly via Ruby</title>
		<link>http://www.aeonscope.net/2011/05/29/connecting-alfred-to-bitly-via-ruby/</link>
		<comments>http://www.aeonscope.net/2011/05/29/connecting-alfred-to-bitly-via-ruby/#comments</comments>
		<pubDate>Sun, 29 May 2011 20:05:52 +0000</pubDate>
		<dc:creator>Brooke Kuhlmann</dc:creator>
		
		<category><![CDATA[Software]]></category>

		<guid isPermaLink="false">http://www.aeonscope.net/?p=4083</guid>
		<description><![CDATA[Introduction
I love Alfred for the Mac OS. It is one of the core power tools that I use on a daily basis. Coupled with the Powerpack I&#8217;m always finding new ways of expending my capabilities. In this case, faster URL shortening.
Requirements
This post assumes you are familiar with the following:

Mac OS
Alfred
Bash Shell Scripting
Ruby Programming Language
RVM

The Problem
Recently, [...]]]></description>
			<content:encoded><![CDATA[<p><strong>Introduction</strong></p>
<p>I love <a href="http://www.alfredapp.com">Alfred</a> for the Mac OS. It is one of the core power tools that I use on a daily basis. Coupled with the <a href="http://www.alfredapp.com/powerpack/">Powerpack</a> I&#8217;m always finding new ways of expending my capabilities. In this case, faster URL shortening.</p>
<p><strong>Requirements</strong></p>
<p>This post assumes you are familiar with the following:</p>
<ul>
<li><a href="http://www.apple.com/macosx/">Mac OS</a></li>
<li><a href="http://www.alfredapp.com">Alfred</a></li>
<li><a href="http://en.wikipedia.org/wiki/Bash_%28Unix_shell%29">Bash Shell Scripting</a></li>
<li><a href="http://www.ruby-lang.org">Ruby Programming Language</a></li>
<li><a href="https://rvm.beginrescueend.com/">RVM</a></li>
</ul>
<p><strong>The Problem</strong></p>
<p>Recently, while using my <a href="https://github.com/bkuhlmann/tweeter">Tweeter Gem</a> (e.g. Twitter for the Command Line), I ran into a situation where I wanted to streamline my URL shortening experience by executing the following keyboard commands:</p>
<ul>
<li>OPTION + SPACE</li>
<li>bilty <some long URL> + pasted long URL + ENTER</li>
</ul>
<p>If you are thinking &#8220;Yeah, but Alfred comes with a Bitly command out of the box.&#8221; You are correct. However, it only sends you to the Bitly page for shortening URLs. I&#8217;d rather not see Bitly open in a browser tab. I only want the work performed and sent to my clipboard without the browser involved. Then I can paste the shortened URL within my terminal window with only a few keystrokes. Simple. Fast. Efficient.</p>
<p><strong>The Solution</strong></p>
<p>The solution is an easy one now that Alfred supports terminal/shell shortcuts. Almost. The reason is that if you are using RVM, which any sensible Rubyist should be using, you&#8217;ll find that Alfred defaults to the system Ruby environment that comes pre-installed with your Mac OS. To prove this, try running a Ruby script referencing a Ruby Gem that you DON&#8217;T have installed in your system environment. With Alfred logging turned on (via advanced options), you&#8217;ll see the following in your <a href="http://www.apple.com/macosx/what-is-macosx/apps-and-utilities.html#console">Mac OS Console</a> (click to enlarge):</p>
<p><a href="http://www.aeonscope.net/wp-content/uploads/2011/05/alfred_output_in_console.png" rel='lytebox[connecting-alfred-to-bitly-via-ruby]'><img src="http://www.aeonscope.net/wp-content/uploads/2011/05/alfred_output_in_console-300x57.png" alt="Alfred - Output in Console" title="Alfred - Output in Console" width="300" height="57" class="aligncenter size-medium wp-image-4091" /></a></p>
<p>D&#8217;oh!</p>
<p>While this might not be an issue for some, I&#8217;d rather use a specific Ruby version and gem set rather than install the same gem to my system library and pollute that unused space. This then requires a shell script to be crafted which allows one to launch a Ruby script within a specific Ruby environment.</p>
<p>Using <a href="https://gist.github.com/998032">this shell script</a>, the following becomes possible from the command line:</p>
<p><code>rvm_ruby ruby-1.9.2-p136 &lt;path to Ruby script&gt;/bitly.rb &lt;some long URL&gt;</code></p>
<p>NOTE: I placed this shell script in my /bin folder with user, group, and world access set with read and execute access only (i.e. sudo chmod 555).</p>
<p>The corresponding <a href="https://gist.github.com/998037">bitly.rb Ruby script</a> then accepts a single URL argument which leverages the Bilty API to shorten a long URL in the background with the end result being copied to the clipboard via the pbcopy Mac OS command.</p>
<p><strong>Putting It Together</strong></p>
<p>Armed with the <a href="https://gist.github.com/998032">shell script</a> and the <a href="https://gist.github.com/998037">bitly.rb Ruby script</a>, you can now setup the following terminal shortcut in Alfred (click to enlarge):</p>
<p><a href="http://www.aeonscope.net/wp-content/uploads/2011/05/alfred_terminal_commands.png" rel='lytebox[connecting-alfred-to-bitly-via-ruby]'><img src="http://www.aeonscope.net/wp-content/uploads/2011/05/alfred_terminal_commands-300x226.png" alt="Alfred - Terminal Commands" title="Alfred - Terminal Commands" width="300" height="226" class="aligncenter size-medium wp-image-4092" /></a></p>
<p>Here are the shortcut details:</p>
<p><a href="http://www.aeonscope.net/wp-content/uploads/2011/05/alfred_bitly_command.png" rel='lytebox[connecting-alfred-to-bitly-via-ruby]'><img src="http://www.aeonscope.net/wp-content/uploads/2011/05/alfred_bitly_command-300x174.png" alt="Alfred - Bitly Command" title="Alfred - Bitly Command" width="300" height="174" class="aligncenter size-medium wp-image-4093" /></a></p>
<p>Now you can type:</p>
<ul>
<li>OPTION + SPACE</li>
<li>bilty <some long URL> + pasted long URL + ENTER</li>
</ul>
<p>&#8230;and have the shortened URL ready for pasting via the Mac OS clipboard.</p>
<p>Happy URL shortening!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.aeonscope.net/2011/05/29/connecting-alfred-to-bitly-via-ruby/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Secure Twitter</title>
		<link>http://www.aeonscope.net/2011/03/18/secure-twitter/</link>
		<comments>http://www.aeonscope.net/2011/03/18/secure-twitter/#comments</comments>
		<pubDate>Fri, 18 Mar 2011 13:34:00 +0000</pubDate>
		<dc:creator>Brooke Kuhlmann</dc:creator>
		
		<category><![CDATA[Software]]></category>

		<guid isPermaLink="false">http://www.aeonscope.net/?p=3962</guid>
		<description><![CDATA[While attending MountainWest RubyConf 2011, Jim Weirich and Matt Yoho were talking about Rails security tips. One of the items mentioned was ensuring that your Twitter profile settings have HTTPS enabled. To do this, log into your Twitter account and edit your profile. At the bottom of the page, you&#8217;ll find the following:

Somehow I had [...]]]></description>
			<content:encoded><![CDATA[<p>While attending <a href="http://mtnwestrubyconf.org/2011/">MountainWest RubyConf 2011</a>, Jim Weirich and Matt Yoho were talking about <a href="http://mtnwestrubyconf.org/2011/sessions#jimweirich">Rails security tips</a>. One of the items mentioned was ensuring that your Twitter profile settings have HTTPS enabled. To do this, log into your Twitter account and edit your profile. At the bottom of the page, you&#8217;ll find the following:</p>
<p><img src="http://www.aeonscope.net/wp-content/uploads/2011/03/twitter_security.png" alt="Twitter Security Settings" title="Twitter Security Settings" width="563" height="110" class="alignnone size-full wp-image-3963" /></p>
<p>Somehow I had overlooked this change with my Twitter account but have since corrected it. You should fix your account as well, if you haven&#8217;t already.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.aeonscope.net/2011/03/18/secure-twitter/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Dawn, Noon, and Dusk Actions</title>
		<link>http://www.aeonscope.net/2011/03/06/dawn-noon-and-dusk-actions/</link>
		<comments>http://www.aeonscope.net/2011/03/06/dawn-noon-and-dusk-actions/#comments</comments>
		<pubDate>Sun, 06 Mar 2011 15:55:10 +0000</pubDate>
		<dc:creator>Brooke Kuhlmann</dc:creator>
		
		<category><![CDATA[Software]]></category>

		<guid isPermaLink="false">http://www.aeonscope.net/?p=3924</guid>
		<description><![CDATA[Introduction
After reading Creating Flow with OmniFocus by Kourosh Dini M.D., I greatly improved my flow and focus of daily actions. I had been performing these actions on a daily basis but ended up recalling actions from memory and sometimes skipping and forgetting actions which would inevitably pile up as additional work on the weekends. I&#8217;ve [...]]]></description>
			<content:encoded><![CDATA[<p><strong>Introduction</strong></p>
<p>After reading <a href="http://usingomnifocus.com">Creating Flow with OmniFocus</a> by Kourosh Dini M.D., I greatly improved my flow and focus of daily actions. I had been performing these actions on a daily basis but ended up recalling actions from memory and sometimes skipping and forgetting actions which would inevitably pile up as additional work on the weekends. I&#8217;ve worked out a system that keeps these daily tasks out of my head and into my trusted system (i.e. OmniFocus) so that I maintain the consistency that I desire AND keep my thoughts clear for more important ideas. The following is a breakdown of my dawn, noon, and dusk actions that I perform on a daily basis.</p>
<p>The following assumes you read <a href="http://www.amazon.com/Getting-Things-Done-Stress-Free-Productivity/dp/0142000280">Getting Things Done</a> by David Allen and use <a href="http://www.omnigroup.com/products/omnifocus/">OmniFocus</a> for the Mac.</p>
<p><strong>Project Overview</strong></p>
<p>To start, it helps to have an overview of my projects via the planning mode of OmniFocus. In my case, I put all daily and weekly tasks in a &#8220;Reviews&#8221; folder because in a sense, these are my daily and weekly reviews before I start or return to work.</p>
<p><img src="http://www.aeonscope.net/wp-content/uploads/2011/03/review_projects.png" alt="Review Projects" title="Review Projects" width="227" height="209" class="alignnone size-full wp-image-3928" /></p>
<p>Each project is described as follows:</p>
<ul>
<li><strong>Dawn</strong> - Repeats daily 5am - 8am, actions are sequential, and marked complete when the last action is performed.</li>
<li><strong>Noon</strong> - Repeats daily 11:30am - 1pm, actions are sequential, and marked complete when the last action is performed.</li>
<li><strong>Dusk</strong> - Repeats daily 5pm - 8pm, actions are sequential, and marked complete when the last action is performed.</li>
<li><strong>Weekly</strong> - Outside the scope of this article.</li>
<li><strong>Maintenance</strong> - A place for saving actions related to fixing and/or enhancing the above mentioned projects.</li>
</ul>
<p><strong>Dawn Actions</strong></p>
<p>My actions for starting the day:</p>
<p><a rel="lytebox" href="http://www.aeonscope.net/wp-content/uploads/2011/03/dawn.png"><img src="http://www.aeonscope.net/wp-content/uploads/2011/03/dawn-300x285.png" alt="Dawn" title="Dawn" width="300" height="285" class="alignnone size-medium wp-image-3973" /></a><br />
(click to view)</p>
<p>For those unfamiliar with OmniFocus, there are three columns to the screenshot above. The left-most column is for the actions themselves, the next column is for the context in which the action is to be performed, and the very last column is for the note icons (which have been expanded for reading).</p>
<p>I won&#8217;t go into each action individually since I think you can get a pretty good understanding of what each action does (via the associated notes) but I do want to go over the purpose of each group of actions:</p>
<ul>
<li><strong>Catch Up</strong> - Each action is performed in sequence and is mainly for quickly catching up on activities that took place while I was away. For tweets and feeds that require further reading, I send them to Instapaper or (mark them as starred - in the case of Google Reader). These actions are reserved for quickly catching up on the news. In depth processing of the news happens later as you&#8217;ll see below.</li>
<li><strong>Plan</strong> - Here is where I plan (or modify previous plans) for the day based on news read and actions required of me after processing email. For calendaring, I use Google Calendar. I usually only need to check one calendar since all my other calendars pour into my personal calendar (via sharing). Important, next, and due soon actions are easily viewed and acted upon via the OmniFocus perspective links. Screenshots of each perspective are provided below.</li>
<li><strong>Clean Up</strong> - Based on what was read and planned for the day, here is where I go back and read up on the articles I didn&#8217;t have time for when catching up earlier. This section of actions is always &#8220;as time allows&#8221;. Some days I have more time, other days I don&#8217;t have time at all. I at least attempt to &#8220;touch the keys&#8221; even when time is limited. Notice that I don&#8217;t close my email client until the very end of this action group. This allows me to delegate or require actions of others while reviewing important, next, and due soon actions.</li>
<li><strong>Synchronize</strong> - Most days I have the ability to work from home&#8230;but if I do need to run out the door at least I&#8217;ll have my iPhone synced with my most critical data (well, ok, &#8220;critical&#8221; really only means OmniFocus but the other data is nice to have too).</li>
</ul>
<p><strong>Noon Actions</strong></p>
<p>My actions when resurfacing from work:</p>
<p><a rel="lytebox" href="http://www.aeonscope.net/wp-content/uploads/2011/03/noon.png"><img src="http://www.aeonscope.net/wp-content/uploads/2011/03/noon-300x285.png" alt="Noon" title="Noon" width="300" height="285" class="alignnone size-medium wp-image-3975" /></a><br />
(click to view)</p>
<p>Basically identical to my dawn actions except that, by this time, I might have SMS and voice mail messages to respond too (as I generally don&#8217;t respond any incoming messages while working). Remember, it&#8217;s all about protecting the flow and staying focused on the work at hand which means not getting detracted by email, phone, Twitter, Feeds, etc. This is something that got ingrained in my head after reading <a href="http://www.fourhourworkweek.com">4-Hour Workweek</a> by Timothy Ferriss. The necessity to sync my phone is not really required, so that is not listed here either.</p>
<p><strong>Dusk Actions</strong></p>
<p>My actions when resurfacing from work and winding down the day:</p>
<p><a rel="lytebox" href="http://www.aeonscope.net/wp-content/uploads/2011/03/dusk.png"><img src="http://www.aeonscope.net/wp-content/uploads/2011/03/dusk-300x285.png" alt="Dusk" title="Dusk" width="300" height="285" class="alignnone size-medium wp-image-3974" /><br />
</a><br />
(click to view)</p>
<p>These are the same actions as performed during the noon hour.</p>
<p><strong>Perspectives</strong></p>
<p>As promised, here are my OmniFocus perspective settings.</p>
<p>Important Actions</p>
<p><img src="http://www.aeonscope.net/wp-content/uploads/2011/03/important_actions_perspective.png" alt="Perspective (Important)" title="Perspective (Important)" width="337" height="361" class="alignnone size-full wp-image-3945" /></p>
<p>Next Actions</p>
<p><img src="http://www.aeonscope.net/wp-content/uploads/2011/03/next_actions_perspective.png" alt="Perspective (Next)" title="Perspective (Next)" width="337" height="357" class="alignnone size-full wp-image-3946" /></p>
<p>Due Soon Actions</p>
<p><img src="http://www.aeonscope.net/wp-content/uploads/2011/03/due_soon_actions_perspective.png" alt="Perspective (Due Soon)" title="Perspective (Due Soon)" width="334" height="352" class="alignnone size-full wp-image-3944" /></p>
<p><strong>Conclusion</strong></p>
<p>In practice, I&#8217;ve found that it takes me anywhere from 10 minutes to 1 hour to complete the dawn, noon, and dusk projects. It used to be that these actions could pile up and get unwieldy. I&#8217;d have to claim information bankruptcy but now, with a trusted system, I can stay on task without ever letting the mountain overwhelm me. The key to all of this, of course, is being disciplined about it. When you are, the flow is smooth as silk but, let it get out of control, and it can become daunting.</p>
<p>These tasks, like anything else in OmniFocus, are constantly evolving. It might be that I streamline this even further in the future. For me, at least, it works and maybe it can help you too.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.aeonscope.net/2011/03/06/dawn-noon-and-dusk-actions/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Alfred Custom Searches</title>
		<link>http://www.aeonscope.net/2011/01/30/alfred-custom-searches/</link>
		<comments>http://www.aeonscope.net/2011/01/30/alfred-custom-searches/#comments</comments>
		<pubDate>Sun, 30 Jan 2011 19:21:36 +0000</pubDate>
		<dc:creator>Brooke Kuhlmann</dc:creator>
		
		<category><![CDATA[Software]]></category>

		<guid isPermaLink="false">http://www.aeonscope.net/?p=3868</guid>
		<description><![CDATA[I recently tweeted about Alfred for the Mac. Since that time, I&#8217;ve been building an arsenal of shortcuts. Specifically: Custom Searches. The Custom Searches feature allows you add a URL that can be launched by a keyword. For example:

OPTION+SPACE - Opens the Alfred quick entry window.
google metaprogramming - Typing this phrase into Alfred opens a [...]]]></description>
			<content:encoded><![CDATA[<p>I recently <a href="http://twitter.com/bkuhlmann/status/28812213321994240">tweeted</a> about <a href="http://www.alfredapp.com">Alfred</a> for the Mac. Since that time, I&#8217;ve been building an arsenal of shortcuts. Specifically: Custom Searches. The Custom Searches feature allows you add a URL that can be launched by a keyword. For example:</p>
<ol>
<li><strong>OPTION+SPACE</strong> - Opens the Alfred quick entry window.</li>
<li><strong>google metaprogramming</strong> - Typing this phrase into Alfred opens a new browser tab with the &#8220;metapgramming&#8221; search results.</li>
</ol>
<p>Awesome, right? Well, for those familiar with Alfred, this comes default via Web Searches feature. &#8230;but what if you want to add keywords for custom URLs. No problem, click on Custom Searches and add your own preferences. Using the example above, lets say I want to use Google&#8217;s <em>secure</em> search capability. Here&#8217;s how:</p>
<ul>
<li>Open Alfred Preferences.</li>
<li>Click on &#8220;Features&#8221;.</li>
<li>Click on &#8220;Custom Searches&#8221;</li>
<li>Click the &#8216;+&#8217; button.</li>
<li>Enter the following:
<ul>
<li>Search URL: https://encrypted.google.com/search?q={query}</li>
<li>Display Text: Google Secure Search</li>
<li>Keyword: google</li>
</ul>
</li>
<li>Click &#8220;Save&#8221;.</li>
</ul>
<p>Did you notice the {query} variable in the search URL above? This allows you to pass &#8220;metaprogramming&#8221; to the google keyword which ultimately yields the following URL: https://encrypted.google.com/search?q=metaprogramming.</p>
<p>Here is a visual example of some of my custom settings:</p>
<p><img src="http://www.aeonscope.net/wp-content/uploads/2011/01/custom_searches.png" alt="Custom Searches" title="Custom Searches" width="528" height="418" class="aligncenter size-full wp-image-3880" /></p>
<p>Running with that you, could also keep keyboard shortcuts for other services like GitHub, Instapaper, Netflix, etc.</p>
<p>Go wild and enjoy.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.aeonscope.net/2011/01/30/alfred-custom-searches/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Respecting Time with Chained Scopes</title>
		<link>http://www.aeonscope.net/2011/01/17/respecting-time-with-chained-scopes/</link>
		<comments>http://www.aeonscope.net/2011/01/17/respecting-time-with-chained-scopes/#comments</comments>
		<pubDate>Mon, 17 Jan 2011 15:21:57 +0000</pubDate>
		<dc:creator>Brooke Kuhlmann</dc:creator>
		
		<category><![CDATA[Software]]></category>

		<guid isPermaLink="false">http://www.aeonscope.net/?p=3853</guid>
		<description><![CDATA[
I ran into odd behavior the other day when working with chained scopes that required current time to be calculated each time the scope was called. For example, lets say that you are building a blogging application in Rails where you have a Post model. Each post has a published_at attribute which you use to [...]]]></description>
			<content:encoded><![CDATA[<p><center><img src="http://www.aeonscope.net/images/ruby/rails.png" alt="Ruby on Rails"/></center></p>
<p>I ran into odd behavior the other day when working with chained scopes that required current time to be calculated each time the scope was called. For example, lets say that you are building a blogging application in Rails where you have a Post model. Each post has a published_at attribute which you use to determine whether a post is viewable or not. With that in mind, you might write a scope like this:</p>
<p><code>scope :published, where("published_at &lt;= ?", Time.now.utc)</code></p>
<p>Now, when you call Post.published, you&#8217;ll only get back posts that were published before or equal to current time. Wrong. Scopes, since they are essentially class methods, get calculated at application launch. So if you haven&#8217;t restarted your Rails app for some time, then current time is actually whenever you launched the Rails app. To fix this, you simply rewrite the scope with a lambda, as follows:</p>
<p><code>scope :published, lambda {where "published_at &lt;= ?", Time.now.utc}</code></p>
<p>There, much better. This means that each time Post.published is called, the time will be calculated at the time in which the published scope was called.</p>
<p>Great, so now that we&#8217;ve got that figured out. Lets build upon our &#8220;published&#8221; scope and create a chained scope that can not only display published posts but those that are meant for external/public viewing. For example:</p>
<p><code>scope :external, published.where(:external =&gt; true)</code></p>
<p>Seems reasonable, right? You should get all published and external posts based on current time because we corrected behavior for the published scope. Sadly, this is not true. You&#8217;ll only get externally published posts based on the time in which the server was started. Yep, you guessed it, we need to wrap this in another block. So the code above now becomes:</p>
<p><code>scope :external, lambda {published.where :external =&gt; true}</code></p>
<p>Now, finally, you can call Post.external and get all externally published posts based on the current time from which you called the &#8220;external&#8221; scope. Personally, I feel this is not intuitive and seems like a bug. Especially, since one of the most powerful features of Rails 3 is the beauty of building upon and chaining your scopes to condense complex operations into a single call.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.aeonscope.net/2011/01/17/respecting-time-with-chained-scopes/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Tweeting Duplicate Links</title>
		<link>http://www.aeonscope.net/2010/12/19/tweeting-duplicate-links/</link>
		<comments>http://www.aeonscope.net/2010/12/19/tweeting-duplicate-links/#comments</comments>
		<pubDate>Mon, 20 Dec 2010 02:17:13 +0000</pubDate>
		<dc:creator>Brooke Kuhlmann</dc:creator>
		
		<category><![CDATA[Software]]></category>

		<guid isPermaLink="false">http://www.aeonscope.net/?p=3770</guid>
		<description><![CDATA[
I recently tweeted the following:
&#8220;Twitter Spam: Tweeting only a link to your blog post. Its insulting to those that follow your tweets and posts. Unfollow immediately.&#8221;
&#8230;which managed to spark the following feedback:

DilatedTime: Seems an excessive posture. What if one follows only one or the other? I find no issue with the practice. Tune one out.
gefahrmaus: [...]]]></description>
			<content:encoded><![CDATA[<p><center><img src="http://www.aeonscope.net/images/twitter.png" alt="Twitter"/></center></p>
<p>I recently tweeted the following:</p>
<p><em>&#8220;Twitter Spam: Tweeting only a link to your blog post. Its insulting to those that follow your tweets and posts. Unfollow immediately.&#8221;</em></p>
<p>&#8230;which managed to spark the following feedback:</p>
<ul>
<li><strong>DilatedTime</strong>: Seems an excessive posture. What if one follows only one or the other? I find no issue with the practice. Tune one out.</li>
<li><strong>gefahrmaus</strong>: I disagree. One form of tweet is not exclusive of the other. They are the same. Your argument may be missing a lot of context.</li>
</ul>
<p>My reason for making the statement is due to the fact that it brakes what I consider <a href="/2010/10/06/twitter-best-practices/">Best Practices</a> for using Twitter and is also a new form of SPAM. I see it happening more often than I like and find it rather irritating to come across. Here is an example of what I consider to be offensive:</p>
<ul>
<li><code>&lt;some twitter handle&gt; New Post: &lt;link to new post on personal site&gt;</code></li>
</ul>
<p>Notice, in this example, the person is using Twitter to republishing a link that he/she owns. The reason I find this offensive is that I usually don&#8217;t care if you have a new post on your site because, more often than not, I&#8217;m also subscribed to your site as well. What I&#8217;m looking for on Twitter is something ancillary to what is found on your main web site. I&#8217;m looking for interesting, educational, funny, witty, etc. bits of information beyond the more thoughtful, longer forms of writing found in a blog post. If you want to post a link to your site, then add something to it. Make it interesting, don&#8217;t just regurgitate the same link to an article on your site that I&#8217;ll find in my feed reader. Give me context and reason for why I should be interested in seeing the same link to an article on your site that I just saw a few minutes ago in my feed reader. Even worse is when you shrink the URL to a tiny URL so I can&#8217;t even tell what the link is before clicking on it. Basically, what you are telling me is that you don&#8217;t care about wasting my time. Well, if you don&#8217;t care, then I don&#8217;t care either and will unfollow you. Simple as that. It&#8217;s a bold statement, yes, but I also believe this is an abuse of technology and want to call people out on it.</p>
<p>So what do you do if you want to promote your site on Twitter? Well, don&#8217;t do it via a Twitter account that is supposed to represent you. Create a new Twitter account that is purely for marketing or self-promotional purposes. You can hype yourself much as you want. I won&#8217;t follow that account because, like I said, I&#8217;m already following your web site. But if your goal is to direct as much traffic as possible to your site, then use a promotional Twitter account. It would also be wise to ensure the links on your Twitter profile(s) point back to your main site. My personal feeling is that if I like what you are saying on Twitter, I&#8217;m going to dig deeper into your online profile to understand where else you might live digitally and start following you from those places as well.</p>
<p>If you respect your audience, you&#8217;ll build stronger connections that could turn into real relationships or benefit you in other ways.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.aeonscope.net/2010/12/19/tweeting-duplicate-links/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Reeder</title>
		<link>http://www.aeonscope.net/2010/06/29/reeder/</link>
		<comments>http://www.aeonscope.net/2010/06/29/reeder/#comments</comments>
		<pubDate>Wed, 30 Jun 2010 03:40:55 +0000</pubDate>
		<dc:creator>Brooke Kuhlmann</dc:creator>
		
		<category><![CDATA[Software]]></category>

		<category><![CDATA[iPhone]]></category>

		<guid isPermaLink="false">http://www.aeonscope.net/?p=3238</guid>
		<description><![CDATA[
Introduction
I&#8217;ve been looking for a great syndicated feed reader for my iPhone for whats seems like ages and I finally found one: Reeder. I stumbled upon this while reading iPad Opinions as, yes, there is an iPad version as well. After reading Ken&#8217;s review, checking out the Reeder screenshots, and noticing the Google Reader synchronization [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://reederapp.com/2/"><img src="http://www.aeonscope.net/wp-content/uploads/2010/06/reeder-icon.png" alt="Reeder Icon" title="Reeder Icon" width="66" height="82" class="aligncenter size-full wp-image-3241" /></a></p>
<p><strong>Introduction</strong></p>
<p>I&#8217;ve been looking for a great syndicated feed reader for my iPhone for whats seems like ages and I finally found one: <a href="http://reederapp.com/2/">Reeder</a>. I stumbled upon this while reading <a href="http://www.ipadopinions.ca/2010/06/14/ipad-reeder-review/">iPad Opinions</a> as, yes, there is an iPad version as well. After reading Ken&#8217;s review, checking out the Reeder screenshots, and noticing the <a href="http://reader.google.com">Google Reader</a> synchronization support, I immediately spent the $2.99 for the app and have been happy ever since. Besides, <a href="http://www.omnigroup.com/products/omnifocus_for_iphone/">OmniFocus for the iPhone</a>, Reeder is my second favorite app on the iPhone. In fact, I enjoy the app so much that I actually find my reading habits have changed to where I prefer to read the news via Reeder on the iPhone rather than via a desktop client. Its that good!</p>
<p><strong>Screenshots</strong></p>
<p><img src="http://www.aeonscope.net/wp-content/uploads/2010/06/reeder-starred.png" alt="Reeder (Starred)" title="Reeder (Starred)" width="320" height="480" class="aligncenter size-full wp-image-3242" /></p>
<p>This is the main or initial page of all items you have stared for reading later, etc. Clicking on &#8220;Starred&#8221; gives you a list of all starred items in all folders. Otherwise you can click on a folder in particular to read specific starred items. The circular arrow icon (lower right) is for manual syncing with Google Reader. This isn&#8217;t a bad habit to get into, once you have finished reading your feeds, to ensure Google Reeder stays in sync.</p>
<p><img src="http://www.aeonscope.net/wp-content/uploads/2010/06/reader-unread.png" alt="Reeder (Unread)" title="Reeder (Unread)" width="320" height="480" class="aligncenter size-full wp-image-3239" /></p>
<p>This is the second page of unread items only. As with the first page, click &#8220;Unread&#8221; to read all or delve in each folder for specifics.</p>
<p><img src="http://www.aeonscope.net/wp-content/uploads/2010/06/reeder-folders.png" alt="Reeder (Folders)" title="Reeder (Folders)" width="320" height="480" class="aligncenter size-full wp-image-3240" /></p>
<p>This is the third page of just your folders, notes, etc. Well, this is out I organize/categorize my feeds at least.</p>
<p><img src="http://www.aeonscope.net/wp-content/uploads/2010/06/reeder-unread-development.png" alt="Reeder (Unread in Development)" title="Reeder (Unread in Development)" width="320" height="480" class="aligncenter size-full wp-image-3243" /></p>
<p>This last screen is of a few unread items within my &#8220;Development&#8221; folder. You can tap on each headline to read in detail.</p>
<p><strong>Design</strong></p>
<p>The design, as Ken mentions in his article is very spartan. I would argue that controls are not the most intuitive but you only need to stumble a few times before you&#8217;re off running.</p>
<p><strong>Synchronization</strong></p>
<p>The synchronization with Google Reader is really, really good. I&#8217;ve not seen synchronization work so well for a feed reader. Then again, I&#8217;ve really only used NetNewsWire (both desktop and iPhone app) which are somewhat pathetic. In fact, NetNewsWire for the iPhone is downright awful. Then again, the app is free. Perhaps that is why.</p>
<p><strong>Workflow</strong></p>
<p>As mentioned earlier, my work flow has really changed. I used to read my feeds morning, noon, and night via the desktop (and still do for the most part) but the sheer convenience of being able to read my feeds while on the balcony, traveling, eating lunch, in bed, etc. is a lot of fun. If I need desktop access for downloads, video feeds, etc. I can star those news articles for later reading and quickly move on to next unread items.</p>
<p><strong>Final Thoughts</strong></p>
<p>If you enjoy your feeds, love being mobile, and appreciate really good synchronization, then buy this app!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.aeonscope.net/2010/06/29/reeder/feed/</wfw:commentRss>
		</item>
		<item>
		<title>jQuery Check All Bookmarklet</title>
		<link>http://www.aeonscope.net/2010/05/25/jquery-check-all-bookmarklet/</link>
		<comments>http://www.aeonscope.net/2010/05/25/jquery-check-all-bookmarklet/#comments</comments>
		<pubDate>Wed, 26 May 2010 02:34:52 +0000</pubDate>
		<dc:creator>Brooke Kuhlmann</dc:creator>
		
		<category><![CDATA[Software]]></category>

		<category><![CDATA[Bookmarklet]]></category>

		<guid isPermaLink="false">http://www.aeonscope.net/?p=3142</guid>
		<description><![CDATA[A while back I wrote a post (of the same name but now deleted) about a simple jQuery check all bookmarklet I created for quickly checking off all check boxes on a web page. Only problem is, in my original design, I required you to load jQuery via another bookmarklet in addition to my bookmarklet. [...]]]></description>
			<content:encoded><![CDATA[<p>A while back I wrote a post (of the same name but now deleted) about a simple jQuery check all bookmarklet I created for quickly checking off all check boxes on a web page. Only problem is, in my original design, I required you to load jQuery via another bookmarklet in addition to my bookmarklet. Recently, while reading <a href="http://www.smashingmagazine.com">Smashing Magazine</a>, I came across a better solution where jQuery is optionally and intelligently loaded prior to executing my custom code (see <a href=" http://www.smashingmagazine.com/2010/05/23/make-your-own-bookmarklets-with-jquery/">Make Your Own Bookmarklets with jQuery</a> for more info). The result can be found below:</p>
<ul>
<li><a href="javascript:(function(){if(typeof%20jQuery=='undefined'){var%20jQ=document.createElement('script');jQ.type='text/javascript';jQ.onload=checkAll;jQ.src='http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js';document.body.appendChild(jQ);}else{checkAll();}%20function%20checkAll(){jQuery(':checkbox').attr('checked',true);return%20false;}})();">jQuery Check All Bookmarklet</a> (right click to save as a bookmark then click the bookmark to use)</li>
</ul>
<p>In my case, <a href="http://www.aeonscope.net/2007/10/18/bookmarklets/">I keep all my bookmarklets within a single folder</a> which are easily accessible from my Firefox bookmarks toolbar. So having this capability within one click is highly useful.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.aeonscope.net/2010/05/25/jquery-check-all-bookmarklet/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Mac OS X Applications</title>
		<link>http://www.aeonscope.net/2010/05/02/mac-os-x-applications/</link>
		<comments>http://www.aeonscope.net/2010/05/02/mac-os-x-applications/#comments</comments>
		<pubDate>Sun, 02 May 2010 19:32:21 +0000</pubDate>
		<dc:creator>Brooke Kuhlmann</dc:creator>
		
		<category><![CDATA[Software]]></category>

		<category><![CDATA[Mac OS]]></category>

		<guid isPermaLink="false">http://www.aeonscope.net/?p=3059</guid>
		<description><![CDATA[The following is a breakdown of apps I commonly use and their install order (from a fresh install of the MacOS):

MacOS 10.6.0 (Snow Leopard Disk) - Insert the DVD, click Install MacOSX, click the Utilities button, and click the Restart button. You&#8217;ll be booted into the Snow Leopard install at which point you&#8217;ll want to [...]]]></description>
			<content:encoded><![CDATA[<p>The following is a breakdown of apps I commonly use and their install order (from a fresh install of the MacOS):</p>
<ol>
<li>MacOS 10.6.0 (Snow Leopard Disk) - Insert the DVD, click <em>Install MacOSX</em>, click the <em>Utilities</em> button, and click the <em>Restart</em> button. You&#8217;ll be booted into the Snow Leopard install at which point you&#8217;ll want to launch Disk Utility and format your hard drive (MacOS Extended (Journaled)). After you have wiped your hard drive, exit Disk Utility, and continue on with the Snow Leopard install.</li>
<li>XCode Tools (Snow Leopard Disk)</li>
<li><a href="http://support.apple.com/kb/DL1324">Mac OS X 10.6.5</a> Combo Patch (download)</li>
<li><a href="http://www.apple.com/ilife/iphoto/">iPhoto</a> (download)</li>
<li><a href="http://www.apple.com/ilife/garageband/">GarageBand</a> (download)</li>
<li><a href="http://www.apple.com/ilife/imovie/">iMovie</a> (download)</li>
<li><a href="http://www.apple.com/ilife/idvd/">iDVD</a> (download)</li>
<li><a href="http://cocoatech.com/">PathFinder</a> (download)</li>
<li><a href="http://www.omnigroup.com/applications/omnifocus/">OmniFocus</a> (download)</li>
<li><a href="http://www.omnigroup.com/applications/omnioutliner/">OmniOutliner</a> (download)</li>
<li><a href="http://www.omnigroup.com/applications/omnigraffle/">OmniGraffle</a> (download)</li>
<li><a href="http://www.mozilla.com/en-US/firefox/">Firefox</a> (download)</li>
<li><a href="http://www.google.com/chrome">Google Chrome</a> (download)</li>
<li><a href="http://www.opera.com">Opera</a> (download)</li>
<li><a href="http://magnetk.com/expandrive">ExpanDrive</a> (download)</li>
<li><a href="http://www.newsgator.com/individuals/netnewswire/">NetNewsWire</a> (download)</li>
<li><a href="http://agilewebsolutions.com/products/1Password">1Password</a> (download)</li>
<li><a href="http://skitch.com">Skitch</a> (download)</li>
<li><a href="http://www.videolan.org/vlc/">VLC</a> (download)</li>
<li><a href="http://lightheadsw.com/caffeine/">Caffeine</a> (download)</li>
<li><a href="http://www.coconut-flavour.com/coconutbattery/">Coconut Battery</a> (download)</li>
<li><a href="http://bjango.com/apps/istatmenus/">iStat Menus</a> (download)</li>
<li><a href="http://growl.info/">Growl</a> (download)</li>
<li><a href="http://macromates.com/">TextMate</a> (download)</li>
<li><a href="http://macrabbit.com/cssedit">CSSEdit</a> (download)</li>
<li><a href="http://www.vmware.com/products/fusion/">VMWare Fusion</a> (download)</li>
<li><a href="http://www.billingsapp.com/index.html">Billings</a> (download)</li>
<li><a href="http://nothirst.com/moneywell/">MoneyWell</a> (download)</li>
<li><a href="http://www.delicious-monster.com/">Delicious Library</a> (download)</li>
<li><a href="http://www.openoffice.org/">OpenOffice</a> (download)</li>
<li><a href="http://www.skype.com/">Skype</a> (download)</li>
<li><a href="http://www.atebits.com/tweetie-mac/">Tweetie</a> (download)</li>
<li><a href="http://www.apple.com/downloads/dashboard/reference/loremipsumwidget.html">Lorem Ipsum</a> widget (download)</li>
<li><a href="http://www.logitech.com/index.cfm/440/374&#038;cl=us,en">Logitech Harmony 890</a> remote software (download)</li>
<li><a href="http://thelittleappfactory.com/ripit/">RipIt</a> (download)</li>
<li><a href="http://www5e.biglobe.ne.jp/~arcana/StartupSound/BETA/index.en.html">Startup Sound</a> (download)</li>
<li><a href="http://www.grapefruit.ch/iBackup/index.html">iBackup</a> (download)</li>
<li><a href="https://www.dropbox.com">Dropbox</a> (download)</li>
<li>Software Updates (via the Apple icon - requires a reboot)</li>
</ol>
<p><strong>Configurations</strong></p>
<p>After installing the applications, you might need to configure some of them. Here are some notes:</p>
<ol>
<li>Configure printer.</li>
<li>Configure scanner.</li>
<li><a href="http://www.aeonscope.net/2010/05/02/mac-os-x-spaces/">Configure Spaces</a>.</li>
<li><a href="http://www.aeonscope.net/software/applications/firefox/">Install Firefox extensions</a>.</li>
<li><a href="http://www.aeonscope.net/2010/05/02/mac-os-x-ruby-environment/">Set up the Ruby development environment</a>.</li>
</ol>
<p><strong>Notes</strong></p>
<p>You can learn more about some of these apps on my <a href="http://www.aeonscope.net/software/applications/">Applications</a> page.  Also, since I&#8217;m one of those who likes organization, I wrote a post on <a href="http://www.aeonscope.net/2006/08/26/data-management/">data management</a> a while back that sheds further light on how I manage my apps and the data related to them in case it is of interest (Note:  even though the post was originally written for Windows some of the concepts still apply for the MacOS).</p>
]]></content:encoded>
			<wfw:commentRss>http://www.aeonscope.net/2010/05/02/mac-os-x-applications/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Mac OS X Ruby Environment</title>
		<link>http://www.aeonscope.net/2010/05/02/mac-os-x-ruby-environment/</link>
		<comments>http://www.aeonscope.net/2010/05/02/mac-os-x-ruby-environment/#comments</comments>
		<pubDate>Sun, 02 May 2010 19:29:39 +0000</pubDate>
		<dc:creator>Brooke Kuhlmann</dc:creator>
		
		<category><![CDATA[Software]]></category>

		<category><![CDATA[Mac OS]]></category>

		<category><![CDATA[Ruby]]></category>

		<guid isPermaLink="false">http://www.aeonscope.net/?p=3061</guid>
		<description><![CDATA[
For those wanting to set up a proper Ruby and Ruby on Rails development environment for your Mac OS, I&#8217;ve created an OmniOutliner outline that might be of help:

MacOS Ruby Development Setup 1.6.0

]]></description>
			<content:encoded><![CDATA[<p><center><img src="http://www.aeonscope.net/images/ruby/ruby.png" alt="Ruby"/></center></p>
<p>For those wanting to set up a proper <a href="http://www.ruby-lang.org/en/">Ruby</a> and <a href="http://rubyonrails.org/">Ruby on Rails</a> development environment for your Mac OS, I&#8217;ve created an <a href="http://www.omnigroup.com/applications/omnioutliner/">OmniOutliner</a> outline that might be of help:</p>
<ul>
<li><a href="http://www.aeonscope.net/dev/ruby/setup/ruby_development_setup-1.6.0.tgz">MacOS Ruby Development Setup 1.6.0</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.aeonscope.net/2010/05/02/mac-os-x-ruby-environment/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Mac OS X Spaces</title>
		<link>http://www.aeonscope.net/2010/05/02/mac-os-x-spaces/</link>
		<comments>http://www.aeonscope.net/2010/05/02/mac-os-x-spaces/#comments</comments>
		<pubDate>Sun, 02 May 2010 17:21:39 +0000</pubDate>
		<dc:creator>Brooke Kuhlmann</dc:creator>
		
		<category><![CDATA[Software]]></category>

		<category><![CDATA[Mac OS]]></category>

		<guid isPermaLink="false">http://www.aeonscope.net/?p=3050</guid>
		<description><![CDATA[Introduction
The Spaces feature is a heavily used aspect of my setup. It allows me to group similar applications together within each space (a.k.a. desktop).
Configuration
Here is my configuration:

What might not be clear from the screenshot above is the complete picture of what I am loading in each space. Here is a more verbose breakdown of each [...]]]></description>
			<content:encoded><![CDATA[<p><strong>Introduction</strong></p>
<p>The <a href="http://www.apple.com/macosx/what-is-macosx/apps-and-utilities.html#spaces">Spaces</a> feature is a heavily used aspect of my setup. It allows me to group similar applications together within each space (a.k.a. desktop).</p>
<p><strong>Configuration</strong></p>
<p>Here is my configuration:</p>
<p><a href="http://www.aeonscope.net/wp-content/uploads/2010/05/macos-spaces-preferences.png" rel="lytebox[preferences]"><img src="http://www.aeonscope.net/wp-content/uploads/2010/05/macos-spaces-preferences-300x295.png" alt="MacOS X Spaces Preferences" title="MacOS X Spaces Preferences" width="300" height="295" class="aligncenter size-medium wp-image-3051" /></a></p>
<p>What might not be clear from the screenshot above is the complete picture of what I am loading in each space. Here is a more verbose breakdown of each of my spaces:</p>
<ol>
<li>Navigation (PathFinder/Terminal)</li>
<li>Chat (Skype/Tweetie)</li>
<li>Email (Apple Mail)</li>
<li>Syndication (NetNewsWire)</li>
<li>Web (Firefox/Safari/Chrome/Opera)</li>
<li>Planning (iCal, Address Book)</li>
<li>Organization (OmniFocus)</li>
<li>Design (OmniGraffle)</li>
<li>Notes (OmniOutliner)</li>
<li>Documentation (OpenOffice/Preview/Digital Books)</li>
<li>Development (TextMate)</li>
<li>Virtualization (VMFusion)</li>
<li>Finance (MoneyWell/Billings)</li>
<li>Security (1Password)</li>
<li>Media (iTunes, iPhone, GarageBand, iMovie, iDVD)</li>
<li>Miscellaneous</li>
</ol>
<p><strong>Example</strong></p>
<p><a href="http://www.aeonscope.net/wp-content/uploads/2010/05/macos-spaces.png" rel="lytebox[example]"><img src="http://www.aeonscope.net/wp-content/uploads/2010/05/macos-spaces-300x187.png" alt="MacOS Spaces" title="MacOS Spaces" width="300" height="187" class="aligncenter size-medium wp-image-3052" /></a></p>
<p><strong>Notes</strong></p>
<p>What I really like about each space is that all application related events are captured in the space that the application is running in.  It is rather handy to have my chat windows, e-mail, etcs all within their own space without being cluttered upon other applications.  I also like that I can easily switch between application using the APPLE+TAB key combo.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.aeonscope.net/2010/05/02/mac-os-x-spaces/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Gearing up for Rails 3.0</title>
		<link>http://www.aeonscope.net/2010/02/08/gearing-up-for-rails-30/</link>
		<comments>http://www.aeonscope.net/2010/02/08/gearing-up-for-rails-30/#comments</comments>
		<pubDate>Mon, 08 Feb 2010 13:08:39 +0000</pubDate>
		<dc:creator>Brooke Kuhlmann</dc:creator>
		
		<category><![CDATA[Software]]></category>

		<category><![CDATA[Ruby on Rails]]></category>

		<guid isPermaLink="false">http://www.aeonscope.net/?p=2815</guid>
		<description><![CDATA[
As full release of Ruby on Rails 3.0 draws near, I find myself collecting news, articles, and preparing myself for the transition. Here is what I&#8217;ve been reading so far:

Reading material.
Introduction.
Approaching the upgrade.
Getting up to speed.
Upgrading to Rails 3.
Automating a portion of the Rails 3 upgrade process with the rails-upgrade gem.
Revamped Routes.
Render Options.
Active Record Query [...]]]></description>
			<content:encoded><![CDATA[<p><center><img src="http://www.aeonscope.net/images/ruby/rails.png" alt="Ruby on Rails"/></center></p>
<p>As full release of Ruby on Rails 3.0 draws near, I find myself collecting news, articles, and preparing myself for the transition. Here is what I&#8217;ve been reading so far:</p>
<ul>
<li><a href="http://mediumexposure.com/rails-3-reading-material/?utm_source=feedburner&#038;utm_medium=feed&#038;utm_campaign=Feed%3A+mediumexposure+%28mediumexposure%29">Reading material</a>.</li>
<li><a href="http://omgbloglol.com/post/344792822/the-path-to-rails-3-introduction">Introduction</a>.</li>
<li><a href="http://omgbloglol.com/post/353978923/the-path-to-rails-3-approaching-the-upgrade">Approaching the upgrade</a>.</li>
<li><a href="http://darwinweb.net/articles/82">Getting up to speed</a>.</li>
<li><a href="http://rails3.community-tracker.com/permalinks/5/notes-from-the-field-upgrading-to-rails-3">Upgrading to Rails 3</a>.</li>
<li><a href="http://omgbloglol.com/post/359147788/rails-upgrade-automating-a-portion-of-the-rails-3">Automating a portion of the Rails 3 upgrade process with the rails-upgrade gem</a>.</li>
<li><a href="http://rizwanreza.com/2009/12/20/revamped-routes-in-rails-3">Revamped Routes</a>.</li>
<li><a href="http://www.engineyard.com/blog/2010/render-options-in-rails-3/">Render Options</a>.</li>
<li><a href="http://m.onkey.org/2010/1/22/active-record-query-interface">Active Record Query Interface</a>.</li>
<li><a href="http://lindsaar.net/2010/1/26/new-actionmailer-api-in-rails-3">Understanding the ActionMailer API</a>.</li>
<li><a href="http://yehudakatz.com/2009/12/20/generic-actions-in-rails-3/">Generic Actions</a>.</li>
<li><a href="http://litanyagainstfear.com/blog/2010/02/03/the-rails-module/">The Rails Module</a>.</li>
<li><a href="http://blog.plataformatec.com.br/2010/01/discovering-rails-3-generators/">Discovering Rails 3 generators</a>.</li>
<li><a href="http://lindsaar.net/2010/1/31/validates_rails_3_awesome_is_true">Validations</a>.</li>
<li><a href="http://blog.plataformatec.com.br/2010/02/rails-3-i18n-changes/">I18n changes</a>.</li>
<li><a href="http://m.onkey.org/2010/2/5/signed-and-permanent-cookies-in-rails-3">Signed and Permanent cookies</a>.</li>
<li><a href="http://omgbloglol.com/post/371893012/the-path-to-rails-3-greenfielding-new-apps-with-the">Creating new apps with the Rails 3 beta</a>.</li>
<li><a href="http://railsplugins.org">Gem and Plugin Compatibility Checker</a>.</li>
</ul>
<p>I&#8217;m sure I&#8217;ll collect more as time rolls on. BTW, you can find these links and more on my <a href="http://www.aeonscope.net/software/development/ruby/">Ruby page</a> where I continue to capture useful Ruby information.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.aeonscope.net/2010/02/08/gearing-up-for-rails-30/feed/</wfw:commentRss>
		</item>
		<item>
		<title>iPhone Home Screen</title>
		<link>http://www.aeonscope.net/2010/01/22/iphone-home-screen/</link>
		<comments>http://www.aeonscope.net/2010/01/22/iphone-home-screen/#comments</comments>
		<pubDate>Fri, 22 Jan 2010 14:14:22 +0000</pubDate>
		<dc:creator>Brooke Kuhlmann</dc:creator>
		
		<category><![CDATA[Software]]></category>

		<guid isPermaLink="false">http://www.aeonscope.net/?p=2645</guid>
		<description><![CDATA[
Its always fun to look over someone&#8217;s shoulder and see how certain technology is used so I thought I&#8217;d share my setup. In this case, I&#8217;m talking about the home screen of my iPhone since it where I keep the most trafficked applications.
Here is a break down of my home screen (left to right, top [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://www.aeonscope.net/wp-content/uploads/2010/01/home_screen1.png" alt="iPhone Home Screen" title="iPhone Home Screen" width="320" height="480" class="aligncenter size-full wp-image-2656" /></p>
<p>Its always fun to look over someone&#8217;s shoulder and see how certain technology is used so I thought I&#8217;d share my setup. In this case, I&#8217;m talking about the home screen of my <a href="http://www.apple.com/iphone/">iPhone</a> since it where I keep the most trafficked applications.</p>
<p>Here is a break down of my home screen (left to right, top to bottom):</p>
<ul>
<li><a href="http://www.omnigroup.com/applications/OmniFocus/iphone/">OmniFocus</a> - Inspired by the book &#8220;Getting Things Done&#8221; by David Allen, this is the best app to implement David&#8217;s teachings perfectly via software. This app is heavily used (hence being in the first position). Sync&#8217;s perfectly with the desktop and truly is my digital brain. Well done OmniGroup!</li>
<li><a href="http://enormego.com/products/groundwork">Groundwork</a> - At one point I tried to do accomplish all professional work within OmniFocus (and still do when I&#8217;m the solely responsible). The only problem is that OmniFocus is for single use and doesn&#8217;t work well in a team/collaborative setting. This is why it is handy to have Groundwork around to sync with your <a href="http://basecamphq.com/">Basecamp</a> setup. Perfect for checking status and not loosing ideas while on the go.</li>
<li><a href="http://nezumiapp.com/">Nezumi</a> - Almost all my Ruby on Rails apps are running on <a href="http://heroku.com">Heroku</a>. This is a handy app for managing your apps while from the road. It is limited in function but having log, reboot, and console access is a nice backup plan.</li>
<li><a href="http://ego-app.com/">Ego</a> - Sounds bad but is actually quite useful when it comes to tracking Google Analytic, Feed Burner, and Twitter stats for various my Ruby on Rails applications.</li>
<li><strong>Messages</strong> - Default iPhone app, sometimes useful. I don&#8217;t really use SMS much but keep it around since others like to communicate that way. Personally, I think SMS should die much like email.</li>
<li><a href="http://www.atebits.com/tweetie-iphone/">Tweetie</a> - Another app that makes managing multiple Twitter accounts easy. I use Tweetie on both the iPhone and desktop.</li>
<li><a href="http://www.skype.com/download/skype/iphone/">Skype</a> - My favorite instant chat client. I use no other. Obviously, very handy to have on the phone. Also, a great way to save on SMS text costs.</li>
<li><strong>Calendar</strong> - Default iPhone app. What can&#8217;t be done (or doesn&#8217;t make sense to do) in OmniFocus, is done here. Syncs perfectly with my desktop app. No complaints.</li>
<li><strong>Maps</strong> - Default iPhone app. Always handy and now on the 3GS version of the phone, it does a pretty good job of keeping track of where you are in real-time.</li>
<li><a href="http://agilewebsolutions.com/products/iphone">1Password</a> - So passwords suck and just about every web site and application known to man does it their own special way. The only way to deal with the chaos is to use 1Password. I love having this on the iPhone because it syncs with my desktop client and allows me to easily cut and paste complicated 20-character or more passwords into my local iPhone app configurations or web pages. BTW, as you might have guessed, this didn&#8217;t truly become useful until Apple enabled cut and paste support.</li>
<li><a href="https://www.dropbox.com/iphoneapp">Dropbox</a> - While some people might like <a href="http://www.evernote.com/">Evernote</a>, I still find files and folders extremely handy. This app does all the heavy lifting of keeping my files and folders synced between all machines. Plus they give you up to 3GB of space for free. Brilliant.</li>
<li><a href="http://www.billingsapp.com/iphone/">Billings</a> - When I was running my own consulting company (actually, I still do), this app was used a lot. I keep it around now because I like track my open source and personal project work. I&#8217;m mostly curious as to how much time I spend on things and like to know whether my speed is increasing over time.</li>
<li><a href="http://www.accuweather.com/">AccuWeather</a> - So far the best weather app for my tastes. Since I live in the mountains and ride a metal steed, it is wise to know what is brewing. Especially in the dead of winter.</li>
<li><strong>Clock</strong> - It&#8217;s what gets me up in the morning. Also handy for when you are in the kitchen.</li>
<li><strong>Calculator</strong> - For those calculations that would take too much brain power to compute.</li>
<li><a href="http://tapbots.com/convertbot/">Convertbot</a> - For unit conversion calculations. Handy when cooking or in the garage. It&#8217;s also an elegantly designed application and worth looking into if nothing else to help inspire your own designs.</li>
<li><strong>Phone</strong> - While I don&#8217;t use the phone much, it does give me access to my contacts.</li>
<li><strong>Mail</strong> - Used often with Inbox Zero discipline. What can&#8217;t get processed immediately gets scheduled via OmniFocus.</li>
<li><strong>Safari</strong> - Used mostly for info lookup. Always handy in a pinch and for testing your own sites, of course.</li>
<li><strong>iPod</strong> - Besides, the OmniFocus app, this is probably the secondly most used app for constant learning. Audiobooks and educational podcasts are heavily consumed.</li>
</ul>
<p>For a list of the apps mentioned above and other iPhone related news, check out my <a href="http://www.aeonscope.net/electronics/iphone/">iPhone page</a> for more info.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.aeonscope.net/2010/01/22/iphone-home-screen/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Combining PDFs with Automator</title>
		<link>http://www.aeonscope.net/2009/10/19/combining-pdfs-with-automator/</link>
		<comments>http://www.aeonscope.net/2009/10/19/combining-pdfs-with-automator/#comments</comments>
		<pubDate>Mon, 19 Oct 2009 13:17:34 +0000</pubDate>
		<dc:creator>Brooke Kuhlmann</dc:creator>
		
		<category><![CDATA[Software]]></category>

		<guid isPermaLink="false">http://www.aeonscope.net/?p=2476</guid>
		<description><![CDATA[
I have a Canon PIXMA MP470 device. It&#8217;s a decent printer that doubles as a scanner. The device is perfect for my needs although I would argue that it eats printer ink a little faster than I&#8217;d like. Then again, I got it for free, so I can&#8217;t complain too much (well if you don&#8217;t [...]]]></description>
			<content:encoded><![CDATA[<p><center><img src="http://www.aeonscope.net/wp-content/uploads/2009/10/automator.png" alt="Automator Icon" title="Automator Icon" width="88" height="88" class="alignnone size-full wp-image-2477" /></center></p>
<p>I have a <a href="http://www.usa.canon.com/consumer/controller?act=ModelInfoAct&#038;fcategoryid=2610&#038;modelid=15403">Canon PIXMA MP470</a> device. It&#8217;s a decent printer that doubles as a scanner. The device is perfect for my needs although I would argue that it eats printer ink a little faster than I&#8217;d like. Then again, I got it for free, so I can&#8217;t complain too much (well if you don&#8217;t calculate the long term cost of printer ink over time).</p>
<p>In the past, I used proprietary software that came with the device to scan documents. For printing support, I could easily detect and attach to the printer via <a href="http://www.apple.com/support/bonjour/">Bonjour</a> (as the device is plugged into an Apple Airport so all machines on the network can use it). In the case of scanning, I would have to attach the USB cable directly to my computer. There might be a way to do this via Bonjour but that eludes me at the moment.</p>
<p>Recently, I upgraded to <a href="http://www.aeonscope.net/2009/09/21/mac-os-x-106x-snow-leopard-applications/">Snow Leopard</a> and discovered that I could scan documents using the native Image Capture application. Perhaps, you could do this in Leopard too? Anyway, this allowed me to no longer require installing Canon&#8217;s proprietary printer/scanner software. The only downside is that the Image Capture application doesn&#8217;t know how to combine multiple document scans into one PDF.  Nor does the Preview application allow one to combine multiple PDFs into one PDF document either. Bummer.</p>
<p>The solution is to use <a href="http://www.apple.com/macosx/what-is-macosx/scripting.html">Automator</a>. I generally use Automator for quick image manipulation, resizing, etc but it also has decent PDF support. In my case, where I have several PDF files from multiple scans of a single document, I can use Automator to combine all these PDFs into one file. As part of Apple&#8217;s Automator action library, someone has already built an Automator worklfow that does exactly this. You can <a href="http://www.apple.com/downloads/macosx/automator/combinepdfs.html">download the workflow</a> and use it to combine multiple PDF files into one.</p>
<p>Something to think about if you are in a situation like this. It definitely does the trick for me.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.aeonscope.net/2009/10/19/combining-pdfs-with-automator/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Favorite Ruby Feeds</title>
		<link>http://www.aeonscope.net/2009/10/06/favorite-ruby-feeds/</link>
		<comments>http://www.aeonscope.net/2009/10/06/favorite-ruby-feeds/#comments</comments>
		<pubDate>Tue, 06 Oct 2009 13:08:23 +0000</pubDate>
		<dc:creator>Brooke Kuhlmann</dc:creator>
		
		<category><![CDATA[Software]]></category>

		<category><![CDATA[Ruby]]></category>

		<category><![CDATA[Ruby on Rails]]></category>

		<guid isPermaLink="false">http://www.aeonscope.net/?p=2394</guid>
		<description><![CDATA[
Over a year ago, I write a post about my favorite Ruby feeds. I&#8217;ve since deleted that post in order to write about an updated set of Ruby feeds that you should be paying attention to (if not already). I read all of these feeds religiously on a daily basis and have broken them down [...]]]></description>
			<content:encoded><![CDATA[<p><center><img src='http://www.aeonscope.net/wp-content/uploads/2007/07/ruby.png' alt='Ruby' /></center></p>
<p>Over a year ago, I write a post about my favorite Ruby feeds. I&#8217;ve since deleted that post in order to write about an updated set of Ruby feeds that you should be paying attention to (if not already). I read all of these feeds religiously on a daily basis and have broken them down below by general news and information followed by screencasts/tutorials. Enjoy.</p>
<p><strong>News</strong></p>
<ul>
<li><a href="http://afreshcup.com">A Fresh Cup</a> - My personal favorite. While you can find similar news via the links below, Mike Gunderloy does an excellent job of summing everything up in place for news, information, and new gems from the Ruby community.</li>
<li><a href="http://ruby-toolbox.com">Ruby Toolbox</a> - A great trending site for finding out what gems are hot and most popular within the Ruby community. This can save you a lot of time when you want to know which gem is the best solution for a problem that has already been solved.</li>
<li><a href="http://rubytrends.com">Ruby Trends</a> - Another trending site. Useful for cross-checking against Ruby Toolbox on what is hot.</li>
<li><a href="http://www.ruby-lang.org">Ruby News</a> - Straight from the source. Find about new releases, conferences, developments, etc.</li>
<li><a href="http://www.rubyinside.com">Ruby Inside</a> - The inside scoop on Ruby news.</li>
<li><a href="http://www.rubyflow.com/">RubyFlow</a> - A great site for picking up new resources to add to your development repertoire.</li>
<li><a href="http://rubyfu.org/">RubyFu</a> - Useful quick news and resource links.</li>
<li><a href="http://blog.rubybestpractices.com">Ruby Best Practices</a> - A great source of thoughtful discussion, including code samples, on how to write better code.</li>
<li><a href="http://ruby5.envylabs.com">Ruby5</a> - From some of the same guys who provide the Rails Envy podcast below. This is another podcast on Ruby news but in short, 5-minute, segments of usually discussing many of the new and interesting gems being developed.</li>
<li><a href="http://www.railsinside.com">Rails Inside</a> - Get the inside scoop on Rails news.</li>
<li><a href="http://weblog.rubyonrails.com/">Riding Rails</a> - Learn what is happening with the Ruby on Rails team.</li>
<li><a href="http://railspikes.com/">Rails Spikes</a> - A multi-authored site of Ruby developers discussing news, tips, code, etc.</li>
<li><a href="http://www.railsillustrated.com/">Rails Illustrated</a> - Info on Rails, web design, and the user experience.</li>
<li><a href="http://www.railsnotes.com">Rails Notes</a> - Another site worth checking out and picking up new learning.</li>
<li><a href="http://railstips.org">Rails Tips</a> - As the site description goes: &#8220;One man, feverishly posting everything he learns.&#8221;</li>
<li><a href="http://www.therailsway.com">The Rails Way</a> - News and information dedicated to teaching best practices of Ruby on Rails.</li>
<li><a href="http://www.rorsecurity.info/">Ruby on Rails Security Project</a> - A good place to read up on security issues or at least keep your mind in it.</li>
<li><a href="http://giantrobots.thoughtbot.com/">Giant Robots Smashing Into Other Giant Robots</a> - Good development tips and tricks, mostly related to Rails.</li>
<li><a href="http://ryandaigle.com">Ryan&#8217;s Scraps</a> - Interesting news on what&#8217;s new and upcoming within the Rails code base. Includes code samples and detailed descriptions and examples of new Rails features. </li>
<li><a href="http://blog.hasmanythrough.com">Has Many Through</a> - Although he has a low writing frequency, the posts are enlightening.</li>
<li><a href="http://www.railsenvy.com/">Rails Envy</a> - An entertaining and informative weekly podcast dedicated to Ruby, Rails, and web framework news.</li>
<li><a href="http://podcast.rubyonrails.org/">Rails Podcasts</a> - Ruby/Rails podcasts by Geoffrey Grosenbach of <a href="http://peepcode.com/">PeepCode</a> fame.</li>
<li><a href="http://railsmagazine.com/">Rails Magazine</a> - News, articles, and information about the Ruby on Rails framework.</li>
</ul>
<p><strong>Tutorials</strong></p>
<ul>
<li><a href="http://railscasts.com">Railscasts</a> - Short screen cast tutorials of Ruby on Rails code.</li>
<li><a href="http://envycasts.com/">Envy Casts</a> - Produced by the same guys that host the Rails Envy podcasts.  Each screen cast tutorial will set you back about $9.</li>
<li><a href="http://peepcode.com">PeepCode</a> - Screencast tutorials like Railscasts but longer in length and not free (roughly $9 per episode).</li>
<li><a href="http://www.tekniqal.com">Tekniqal</a> - A collection of screencasts that cover some of the Ruby basics.</li>
<li><a href="http://railslab.newrelic.com/scaling-rails">Scaling Rails</a> - A series of screencasts on detailing how to scale your Ruby on Rails application appropriately. Produced by Gregg Pollack of Envy Cast fame.</li>
<li><a href="http://bddcasts.com">BDD Casts</a> - Video tutorials on all things related to Behavior Driven Development.</li>
</ul>
<p>BTW, you can find this list and more on <a href="http://www.aeonscope.net/software/development/ruby/">my Ruby page</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.aeonscope.net/2009/10/06/favorite-ruby-feeds/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Ruby Gem Setup 1.0.0</title>
		<link>http://www.aeonscope.net/2009/09/29/ruby-gem-setup-100/</link>
		<comments>http://www.aeonscope.net/2009/09/29/ruby-gem-setup-100/#comments</comments>
		<pubDate>Tue, 29 Sep 2009 12:29:20 +0000</pubDate>
		<dc:creator>Brooke Kuhlmann</dc:creator>
		
		<category><![CDATA[Software]]></category>

		<guid isPermaLink="false">http://www.aeonscope.net/?p=2367</guid>
		<description><![CDATA[
I have released a simple GitHub project called Ruby Gem Setup that makes setting up your Ruby Gems a little easier. Here are a few highlights:

Ensures the Ruby Gem environment is at the latest version.
Adds GitHub and Gemcutter as gem sources.
Allows you to configure a setup.txt file that lists all your favorite gems for install.

Very [...]]]></description>
			<content:encoded><![CDATA[<p><center><img src="http://www.aeonscope.net/images/ruby/ruby.png" alt="Ruby"/></center></p>
<p>I have released a simple GitHub project called <a href="http://github.com/aeonscope/ruby_gem_setup">Ruby Gem Setup</a> that makes setting up your Ruby Gems a little easier. Here are a few highlights:</p>
<ul>
<li>Ensures the Ruby Gem environment is at the latest version.</li>
<li>Adds GitHub and Gemcutter as gem sources.</li>
<li>Allows you to configure a setup.txt file that lists all your favorite gems for install.</li>
</ul>
<p>Very handy, especially when managing gems for multiple versions of Ruby. Feel free to fork the project for your own purposes if you like or simply maintain your own setup.txt file.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.aeonscope.net/2009/09/29/ruby-gem-setup-100/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Quickly Filtering Ruby Methods</title>
		<link>http://www.aeonscope.net/2009/06/16/quickly-filtering-ruby-methods/</link>
		<comments>http://www.aeonscope.net/2009/06/16/quickly-filtering-ruby-methods/#comments</comments>
		<pubDate>Tue, 16 Jun 2009 13:49:14 +0000</pubDate>
		<dc:creator>Brooke Kuhlmann</dc:creator>
		
		<category><![CDATA[Software]]></category>

		<category><![CDATA[Ruby]]></category>

		<category><![CDATA[Snippet]]></category>

		<guid isPermaLink="false">http://www.aeonscope.net/?p=2047</guid>
		<description><![CDATA[
Sometimes, when working with IRB or the Rails console, you might need a list of methods on a particular class or object. You don&#8217;t necessarily need to consult the doc because it is one of those situations where you would know the method if you saw it. So what do you do? Well, one trick [...]]]></description>
			<content:encoded><![CDATA[<p><center><img src="http://www.aeonscope.net/images/ruby/ruby.png" alt="Ruby on Rails"/></center></p>
<p>Sometimes, when working with IRB or the Rails console, you might need a list of methods on a particular class or object. You don&#8217;t necessarily need to consult the <a href="http://apidock.com">doc</a> because it is one of those situations where you would know the method if you saw it. So what do you do? Well, one trick is to use the select method (passed via a block) on a collection of methods. You can always start by asking the class for its methods by typing the following:</p>
<p>Hash.<a href="http://apidock.com/ruby/Object/methods">methods</a></p>
<p>Which yields:</p>
<p>["require_dependency", "decode_b", "write_inheritable_hash", "model_name", "breakpoint", "require", "delegate", "taguri", "const_missing", "new", "class_inheritable_hash", "suppress", "methods", "andand", "method", "allocate", "attr_internal_reader", "protected_instance_methods", "deprecate", "taguri=", "subclasses", "cattr_accessor", "include?", "daemonize", "taint", "present?", "class_eval", "alias_method_chain", "instance_variable_defined?", "yaml_tag_class_name", "name", "find_hidden_method", "reset_inheritable_attributes", "metaclass", "autoload", "to_yaml_style", "class_variables", "parent", "inheritable_attributes", "__id__", "singleton_methods", "synchronize", "dclone", "private_instance_methods", "object_id", "subclasses_of", "respond_to?", "nil?", "ancestors", "yaml_tag_read_class", "parent_name", "tap", "__send__", "require_library_or_gem", "protected_methods", "require_or_load", "me", "tainted?", "attr_internal_writer", "remove_class", "class_inheritable_reader", "untaint", "instance_of?", "autoload?", "b64encode", "included_in_classes", "equal?", "method_defined?", "with_options", "const_missing_without_dependencies", "display", "class_variable_defined?", "private_methods", "hash", "instance_method", "send", "constants", "deprecation_horizon", "instance_values", "`", "attr_internal_accessor", "yaml_tag_subclasses?", "class_inheritable_writer", "kind_of?", "enable_warnings", "freeze", "eql?", "public_method_defined?", "to_json", "id", "returning", "parents", "write_inheritable_attribute", "dont", "acts_like?", "require_association", "public_methods", "instance_eval", "superclass_delegating_reader", "instance_variable_names", "attr_internal", "const_get", "to_enum", "class_inheritable_array_writer", "is_a?", "silence_stderr", "private_method_defined?", "cattr_reader", "type", "const_missing_with_dependencies", "local_constants", "superclass", "write_inheritable_array", "instance_variables", "frozen?", "blank?", "attr_internal_naming_format", "const_set", "copy_instance_variables_from", "enum_for", "class_inheritable_hash_writer", "silence_stream", "to_a", "to_param", "mattr_reader", "protected_method_defined?", "attr_internal_naming_format=", "extended_by", "silence_warnings", "class", "public_class_method", "encode64", "from_xml", "instance_variable_get", "<=>", "to_yaml", "load_with_new_constant_marking", "==", "superclass_delegating_writer", "method_added", "class_inheritable_accessor", "===", "duplicable?", "extend", "to_s", "to_query", "alias_attribute", "instance_methods", ">=", "remove_subclasses", "extend_with_included_modules_from", "mattr_writer", "<=", "cattr_writer", "local_constant_names", "clone", "private_class_method", "decode64", "read_inheritable_attribute", "const_defined?", "yaml_as", "included_modules", "debugger", "=~", "instance_variable_set", "<", "superclass_delegating_accessor", "deprecated_method_warning", "attr_accessor_with_default", ">", "class_inheritable_array", "inspect", "[]&#8220;, &#8220;remove_subclasses_of&#8221;, &#8220;instance_exec&#8221;, &#8220;try&#8221;, &#8220;mattr_accessor&#8221;, &#8220;public_instance_methods&#8221;, &#8220;as_load_path&#8221;, &#8220;to_yaml_properties&#8221;, &#8220;unloadable&#8221;, &#8220;dup&#8221;, &#8220;module_eval&#8221;]</p>
<p>OK, yeah, that&#8217;s a bit overkill.  How about we narrow it down to the types of methods (using the select method with a regular expression):</p>
<p>Hash.methods {|m| m.select =~ /methods/}</p>
<p>Which yields:</p>
<p>["methods", "protected_instance_methods", "singleton_methods", "private_instance_methods", "protected_methods", "private_methods", "public_methods", "instance_methods", "public_instance_methods"]</p>
<p>Ah, much better. &#8230;but I&#8217;m not quite there yet. Lets say I know it&#8217;s an instance method and it is a type of &#8220;to&#8221; method. I could then type the following:</p>
<p>Hash.instance_methods {|m| m.select =~ /to_/}</p>
<p>Which yields:</p>
<p>["to_yaml_style", "to_hash", "to_set", "to_xml", "to_json", "to_enum", "to_options", "to_a", "to_param", "to_yaml", "to_options!", "to_s", "to_query", "to_yaml_properties"]</p>
<p>OK, now I remember, it was the &#8220;to_yaml&#8221; method that I was looking for!</p>
<p>This, of course, is a contrived example. However, if you know what type of method you are looking for and part of its name, then this is a quick and effective way of getting back a subset of methods from which you can gauge what it is that you&#8217;re looking for.</p>
<p>Where I tend use this most (as of late) is with Rails models that accept nested attributes (i.e. <a href="http://apidock.com/rails/ActiveRecord/NestedAttributes/ClassMethods/accepts_nested_attributes_for">accepts_nested_attributes_for</a>). For example:</p>
<p>Recipe.instance_methods {|m| m.select =~ /attributes/}</p>
<p>["update_attributes!", "comments_attributes=", "reject_new_nested_attributes_procs", "attributes", "attributes=", "time_zone_aware_attributes", "respond_to_without_attributes?", "update_attributes", "skip_time_zone_conversion_for_attributes", "<strong>user_recipe_attributes=</strong>", "<strong>ingredient_groups_attributes=</strong>", "attributes_before_type_cast", "<strong>instructions_attributes=</strong>", "<strong>sources_attributes=</strong>"]</p>
<p>So there you have it, in case it is of help.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.aeonscope.net/2009/06/16/quickly-filtering-ruby-methods/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Default Scopes with Oracle</title>
		<link>http://www.aeonscope.net/2009/06/09/default-scopes-with-oracle/</link>
		<comments>http://www.aeonscope.net/2009/06/09/default-scopes-with-oracle/#comments</comments>
		<pubDate>Wed, 10 Jun 2009 03:37:22 +0000</pubDate>
		<dc:creator>Brooke Kuhlmann</dc:creator>
		
		<category><![CDATA[Software]]></category>

		<guid isPermaLink="false">http://www.aeonscope.net/?p=2014</guid>
		<description><![CDATA[
If you have the unfortunate experience of having to deal with Oracle databases you might run into an interesting problem with default scopes where Oracle spits back the following error:
ORA-00933: SQL command not properly ended: UPDATE post SET post_gid = NULL WHERE ((post_gid = 2060))  ORDER BY name
The problem, if you guessed it, is [...]]]></description>
			<content:encoded><![CDATA[<p><center><img src="http://www.aeonscope.net/images/ruby/rails.png" alt="Ruby on Rails"/></center></p>
<p>If you have the unfortunate experience of having to deal with Oracle databases you might run into an interesting problem with <a href="http://apidock.com/rails/ActiveRecord/Base/default_scope/class">default scopes</a> where Oracle spits back the following error:</p>
<p><code>ORA-00933: SQL command not properly ended: UPDATE post SET post_gid = NULL WHERE ((post_gid = 2060))  ORDER BY name</code></p>
<p>The problem, if you guessed it, is that you can&#8217;t add an ORDER clause to the end of an UPDATE statement in SQL. It is invalid syntax. This happens because you might have done something like this in your Post model:</p>
<p><code>class Post &lt; ActiveRecord::Base<br />
  # Named Scopes<br />
  default_scope :order =&gt; "name"<br />
end</code></p>
<p>I really like to use default_scope on my models when apt. However, with Oracle, you might as well forget about that until Rails is patched (which I suppose I should do once this aggravates me more).  The workaround is to not use default scopes but, instead, used named scopes, define them as conditions to your finds (usually index actions), and/or <a href="http://apidock.com/rails/ActiveRecord/Associations/ClassMethods/has_many">has_many</a> associations.  For example:</p>
<p><strong>Named Scope</strong></p>
<p><code>class Post &lt; ActiveRecord::Base<br />
  # Named Scopes<br />
  named_scope :default, :order =&gt; "name"<br />
end</code></p>
<p>This will work nicely but if you need to pass additional conditions, you&#8217;ll still need to do the following:</p>
<p><code>Post.default.all(:conditions =&gt; {:name =&gt; "Once Upon a Time"})</code></p>
<p><strong>Index Action</strong></p>
<p><code>Post.all :order =&gt; "name"</code></p>
<p><strong>Has Many Association</strong></p>
<p><code>class User &lt; ActiveRecord::Base<br />
  # Associations<br />
  has_many :posts, :order =&gt; "name"<br />
end</code></p>
<p>Obviously, not as elegant as defining them in one location but it&#8217;ll get you by.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.aeonscope.net/2009/06/09/default-scopes-with-oracle/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Tweetie</title>
		<link>http://www.aeonscope.net/2009/05/18/tweetie/</link>
		<comments>http://www.aeonscope.net/2009/05/18/tweetie/#comments</comments>
		<pubDate>Mon, 18 May 2009 13:05:52 +0000</pubDate>
		<dc:creator>Brooke Kuhlmann</dc:creator>
		
		<category><![CDATA[Software]]></category>

		<guid isPermaLink="false">http://www.aeonscope.net/?p=1857</guid>
		<description><![CDATA[For those on the MacOS wanting a great desktop app to manage your Twitter account, I would suggest checking out Tweetie and possibly the iPhone companion.  It&#8217;s been my favorite Twitter app as of late over other apps like Nambu or TweetDeck. For me, I really love the condensed view of the Tweetie app [...]]]></description>
			<content:encoded><![CDATA[<p>For those on the MacOS wanting a great desktop app to manage your Twitter account, I would suggest checking out <a href="http://www.atebits.com/tweetie-mac/">Tweetie</a> and possibly the <a href="http://www.atebits.com/tweetie-iphone/">iPhone</a> companion.  It&#8217;s been my favorite Twitter app as of late over other apps like <a href="http://www.nambu.com/">Nambu</a> or <a href="http://www.tweetdeck.com/">TweetDeck</a>. For me, I really love the condensed view of the Tweetie app which saves me desktop space versus the larger spread you get with TweetDeck or Nambu.  For example:</p>
<p><center><a href="http://www.aeonscope.net/wp-content/uploads/2008/04/tweetie.png" rel='lytebox[tweetie]'><img src="http://www.aeonscope.net/wp-content/uploads/2008/04/tweetie-100x100.png" alt="Tweetie" title="Tweetie" width="100" height="100" class="alignnone size-thumbnail wp-image-1855" /></a><br/>(click to view)</center></p>
<p>By clicking Tweetie&#8217;s sidebar you can quickly jump from tweets you have composed, see replies, direct messages, and search.  You can also use global keyboard shortcut to enter tweets. In my case I use CTRL+OPTION+COMMAND+T often to bring up a dialog to enter a quick tweet:</p>
<p><center><a href="http://www.aeonscope.net/wp-content/uploads/2009/05/tweetie-text-box.png" rel='lytebox[tweetie]'><img src="http://www.aeonscope.net/wp-content/uploads/2009/05/tweetie-text-box-100x100.png" alt="Tweetie Text Box" title="Tweetie Text Box" width="100" height="100" class="alignnone size-thumbnail wp-image-1858" /></a><br/>(click to view)</center></p>
<p>Notice that you can also use keyboard shortcuts to quickly convert long URLs to short ones. The only downside to using the keyboard shortcut is that the dialog only pops up in the Leopard Space from which you originally launched Tweetie (focus is switched to that Leopard Space as well). I was expecting the <a href="http://www.aeonscope.net/2008/02/19/omnifocus-hyperlinked-notes/">OmniFocus QuickEntry</a> dialog behavior which works from any Leopard Space. I messaged the developer about this and the response was that it is not easy to do but is looking into it. If that can get fixed, I would be tempted to buy the app even though the ad-supported, free version is not that annoying.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.aeonscope.net/2009/05/18/tweetie/feed/</wfw:commentRss>
		</item>
		<item>
		<title>GitHub Lessons</title>
		<link>http://www.aeonscope.net/2009/05/03/github-lessons/</link>
		<comments>http://www.aeonscope.net/2009/05/03/github-lessons/#comments</comments>
		<pubDate>Mon, 04 May 2009 00:06:45 +0000</pubDate>
		<dc:creator>Brooke Kuhlmann</dc:creator>
		
		<category><![CDATA[Software]]></category>

		<guid isPermaLink="false">http://www.aeonscope.net/?p=1756</guid>
		<description><![CDATA[
So I have become a GitHub fan (powered by Git, obviously). It is free to use if you are developing open source code or you can pay various service fees to have GitHub host your private code.  As for me, I&#8217;m working on a few open source projects. Three, of which, are live now.
&#8230;but [...]]]></description>
			<content:encoded><![CDATA[<p><center><img src="http://www.aeonscope.net/wp-content/uploads/2009/04/octocat.png" alt="GitHub Octocat" title="GitHub Octocat" width="300" height="300" class="alignnone size-full wp-image-1782" /></center></p>
<p>So I have become a <a href="http://github.com">GitHub</a> fan (powered by <a href="http://git-scm.com">Git</a>, obviously). It is free to use if you are developing open source code or you can pay various service fees to have GitHub host your private code.  As for me, I&#8217;m working on a few open source projects. <a href="http://github.com/aeonscope">Three</a>, of which, are live now.</p>
<p>&#8230;but I learned a few lessons along the way. I thought I&#8217;d share what I learned in case you might be curious.</p>
<p><strong>Make everything a <a href="http://rubygems.org">gem</a> when apt</strong></p>
<p>They are <a href="http://github.com/technicalpickles/jeweler/tree/master">easy to develop</a> and manage. Plus they are version controlled and simple to configure within a Ruby on Rails app. I made the mistake of developing Ruby on Rails plug-ins initially and have finally converted all my plug-ins to gems now. Plug-ins, it seems, are going the way of the <a href="http://en.wikipedia.org/wiki/Dodo">Dodo</a>.</p>
<p><strong>Be wary of your user account.</strong></p>
<p>When you register with GitHub, pick a user account that you want to stick with as all software associated with your username will be prefixed to your code (this is especially critical with gems). In my case, I use &#8220;aeonscope&#8221; which yields the following gem install command line: <code>sudo gem install aeonscope-XXX</code>.  The installed gems will also show up on your file system with the same &#8220;aeonscope-&#8221; prefix.  You don&#8217;t, however, have to name your libraries in this manner which means that your Rails configurations will not match.  Lets take a closer look:</p>
<ul>
<li>GitHub Login:  aeonscope</li>
<li>GitHub Project:  rest</li>
<li>GitHub Project Path:  <a href="http://github.com/aeonscope/rest">http://github.com/aeonscope/rest</a></li>
<li>Gem Install Command:  sudo gem install aeonscope-rest</li>
<li>Ruby on Rails Configuration (via environment.rb): <code>config.gem "aeonscope-rest", :lib =&gt; "rest"</code></li>
</ul>
<p>Notice when you configure my gem in Rails, you must specify &#8220;rest&#8221; instead of &#8220;aeonscope-rest&#8221; for the library.  This is because I don&#8217;t want to namespace my Rails code with &#8220;aeonscope&#8221;.  I debated as to whether this was wise and, in the end, decided it was lame to force namespaces.  I like the fact that gems are installed and stored on your local file system with the namespace but once you configure the gem in Rails you then specify the library without the GitHub login prefix.</p>
<p><strong>Know your tools</strong></p>
<p>Save yourself some setup time by using <a href="http://github.com/technicalpickles/jeweler/tree/master">Jeweler</a> to craft your gems. Once you have released your new gem, you can <a href="http://hasmygembuiltyet.org/">check if it has built</a>.  The rest is a just a matter of reading the GitHub docs and learning about Git in general.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.aeonscope.net/2009/05/03/github-lessons/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Buggy Firebug UJS Extension</title>
		<link>http://www.aeonscope.net/2009/04/29/buggy-firebug-ujs-extension/</link>
		<comments>http://www.aeonscope.net/2009/04/29/buggy-firebug-ujs-extension/#comments</comments>
		<pubDate>Thu, 30 Apr 2009 01:44:28 +0000</pubDate>
		<dc:creator>Brooke Kuhlmann</dc:creator>
		
		<category><![CDATA[Software]]></category>

		<guid isPermaLink="false">http://www.aeonscope.net/?p=1770</guid>
		<description><![CDATA[For those that happen to keep tabs on my GitHub projects or my tweets, you&#8217;ll know I&#8217;m a big advocate of writing Unobtrusive JavaScript (UJS). That means if you send me to a site of yours and I break out my handy Obtrusive JavaScript Checker tool only to find that you are obtrusive then my [...]]]></description>
			<content:encoded><![CDATA[<p>For those that happen to keep tabs on my <a href="http://github.com/aeonscope">GitHub</a> projects or my <a href="http://twitter.com/Aeonscope">tweets</a>, you&#8217;ll know I&#8217;m a big advocate of writing Unobtrusive JavaScript (UJS). That means if you send me to a site of yours and I break out my handy <a href="https://addons.mozilla.org/en-US/firefox/addon/9505">Obtrusive JavaScript Checker</a> tool only to find that you are obtrusive then my faith in your development capabilities will have diminished significantly.</p>
<p>With that in mind, I was playing with a <a href="https://addons.mozilla.org/firefox/1843">Firebug</a> extension called <a href="http://remi.org/2009/01/06/using-firebug-to-debug-unobtrusive-javascript.html">Firebug UJS</a>. I really enjoyed this tool because it allowed you to see UJS behavior within the DOM while investigating code in Firebug.  Cool! Only problem is that it totally hosed most of my jQuery enabled pages. In fact, if you install this plugin and try to view the <a href="http://jqueryui.com/demos/">jQuery UI demos</a>, you&#8217;ll be in a world of hurt.</p>
<p>While the extension is a nifty idea, I would recommend saving yourself time and frustration by not installing this.  If you want a list of extensions you might want to be using, then check out my <a href="http://www.aeonscope.net/software/applications/firefox/">Firefox page</a> for more info.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.aeonscope.net/2009/04/29/buggy-firebug-ujs-extension/feed/</wfw:commentRss>
		</item>
	</channel>
</rss>
