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

<channel>
	<title>gnapse.com &#187; rails</title>
	<atom:link href="http://gnapse.com/blog/tag/rails/feed/" rel="self" type="application/rss+xml" />
	<link>http://gnapse.com/blog</link>
	<description>whatever comes to my mind</description>
	<lastBuildDate>Thu, 26 Aug 2010 14:25:23 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
		<item>
		<title>Railscasts on text</title>
		<link>http://gnapse.com/blog/2010/07/28/railscasts-on-text/?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=railscasts-on-text</link>
		<comments>http://gnapse.com/blog/2010/07/28/railscasts-on-text/#comments</comments>
		<pubDate>Wed, 28 Jul 2010 18:50:37 +0000</pubDate>
		<dc:creator>ernesto</dc:creator>
				<category><![CDATA[Web programming]]></category>
		<category><![CDATA[learning]]></category>
		<category><![CDATA[rails]]></category>
		<category><![CDATA[railscasts]]></category>
		<category><![CDATA[ruby]]></category>
		<category><![CDATA[screencasts]]></category>
		<category><![CDATA[video]]></category>

		<guid isPermaLink="false">http://gnapse.com/blog/?p=158</guid>
		<description><![CDATA[Every Rails programmer out there should have heard about Railscasts. It&#8217;s a great blog that every monday posts a new short screencast about some topic related to Ruby on Rails programming. It can be about features of the upcoming or just released new version of Rails, about how to integrate other services and softwares with [...]]]></description>
			<content:encoded><![CDATA[<p>Every Rails programmer out there should have heard about <a title="About Railscasts.com" href="http://railscasts.com/about" target="_blank">Railscasts</a>. It&#8217;s a great blog that every monday posts a new short screencast about some topic related to Ruby on Rails programming. It can be about features of the upcoming or just released new version of Rails, about how to integrate other services and softwares with Rails, about hot plugins and gems that can be really useful, or anything related that you can think of. It&#8217;s been running for over three years and keeps its content amazingly up to date. The credits go for Ryan Bates.</p>
<p>But you probably haven&#8217;t heard of <a title="About ASCIIcasts.com" href="http://www.asciicasts.com/about" target="_blank">ASCIIcasts</a>, which is a text version of the original blog, including a transcript of Ryan&#8217;s voice from the original video, along with key code samples and screenshots of the main features explained. Think of it as a textual equivalent of the screencast. It can serve various purposes, including being search friendly (you can make a full text search on Ryan&#8217;s spoken words), but also for people like me with a slow connection, it can help me have a glimpse of any episode before actually downloading it, maybe even sparing me the effort and bandwidth. If any of these or other reasons are good for you, or even for the sake of it, take a look as <a href="http://www.asciicasts.com/" target="_blank">ASCIIcasts</a>. You&#8217;ll love it almost as much as the original.</p>
]]></content:encoded>
			<wfw:commentRss>http://gnapse.com/blog/2010/07/28/railscasts-on-text/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Easy Rails API</title>
		<link>http://gnapse.com/blog/2010/04/29/easy-rails-api/?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=easy-rails-api</link>
		<comments>http://gnapse.com/blog/2010/04/29/easy-rails-api/#comments</comments>
		<pubDate>Thu, 29 Apr 2010 14:09:43 +0000</pubDate>
		<dc:creator>ernesto</dc:creator>
				<category><![CDATA[Whatever]]></category>
		<category><![CDATA[api]]></category>
		<category><![CDATA[offline]]></category>
		<category><![CDATA[rails]]></category>

		<guid isPermaLink="false">http://gnapse.com/blog/?p=128</guid>
		<description><![CDATA[There&#8217;s this great tool for browsing and searching the Rails API. Give it a try at http://railsapi.com It allows you to select what version of Rails (and Ruby) to browse, and the most awesome part is that you can download a compressed package to browse it offline locally in your own computer. It includes Rails [...]]]></description>
			<content:encoded><![CDATA[<p>There&#8217;s this great tool for browsing and searching the Rails API. Give it a try at <a title="http://railsapi.com" href="http://railsapi.com" target="_blank">http://railsapi.com</a></p>
<p>It allows you to select what version of Rails (and Ruby) to browse, and the most awesome part is that you can download a compressed package to browse it offline locally in your own computer. It includes Rails 3 beta and Ruby 1.9.x as well.</p>
]]></content:encoded>
			<wfw:commentRss>http://gnapse.com/blog/2010/04/29/easy-rails-api/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Resting on Rails considered harmful</title>
		<link>http://gnapse.com/blog/2009/08/06/resting-on-rails-considered-harmful/?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=resting-on-rails-considered-harmful</link>
		<comments>http://gnapse.com/blog/2009/08/06/resting-on-rails-considered-harmful/#comments</comments>
		<pubDate>Thu, 06 Aug 2009 19:59:14 +0000</pubDate>
		<dc:creator>ernesto</dc:creator>
				<category><![CDATA[Internet]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Web programming]]></category>
		<category><![CDATA[api]]></category>
		<category><![CDATA[best practices]]></category>
		<category><![CDATA[rails]]></category>
		<category><![CDATA[rest]]></category>

		<guid isPermaLink="false">http://gnapse.com/blog/?p=57</guid>
		<description><![CDATA[Don&#8217;t worry, you can still take a nap on the train. This post is not about resting while traveling on rails, but about the use of the REST architecture in the Ruby on Rails web development framework. Rails has to be credited for introducing RESTful design to so many people, including me. I bet most [...]]]></description>
			<content:encoded><![CDATA[<p>Don&#8217;t worry, you can still take a nap on the train. This post is not about resting while traveling on rails, but about the use of the <a title="Representational State Transfer" href="http://www.ics.uci.edu/~fielding/pubs/dissertation/rest_arch_style.htm" target="_blank">REST</a> architecture in the Ruby on Rails web development framework.</p>
<p>Rails has to be credited for introducing RESTful design to so many people, including me. I bet most web developers out there first knew about it from Rails, particularly from its 2.x release series, that have adopted resource-oriented design more seriously. The main benefit of adopting a REST-like architecture is that there&#8217;s a relatively easy and straightforward way of adding an API to our applications without developing an extra backend.</p>
<p>But Rails didn&#8217;t get it completely right, perhaps intentionally, with the outcome that there are so many people out there thinking they are developing RESTful applications.</p>
<p>To understand why, let&#8217;s review the original concept of REST, something I never did when I took it for granted from the Rails implementation.<span id="more-57"></span></p>
<h3>Defining REST</h3>
<p>REST stands for <em>Representational State Transfer</em>, and it is <em>an architectural style for distributed hypermedia systems</em>. This is the concise and original definition of its intention, according to its creator Roy Fielding in <a title="Roy Fielding's PhD dissertation" href="http://www.ics.uci.edu/~fielding/pubs/dissertation/top.htm" target="_blank">the paper that started it all</a>.</p>
<p>But perhaps more digestible and to the point than this paper is <a href="http://www.theamazingrando.com/blog/?p=107" target="_blank">a blog post</a> recently published by Paul Sandauskas in his blog, where he warns developer about not being fully compliant with REST guidelines. The short story is that resources should be hyperlinked to express their relationships, and client applications of a really RESTful <abbr title="Application Programming Interface">API</abbr> should be able to &#8220;navigate&#8221; across the exposed resources without previous knowledge of the <abbr title="Uniform Resource Identifier">URI</abbr> structure, beyond an initial entry point, which could be the analogy of a home page for a regular web site.</p>
<p>I really recommend you reading Paul&#8217;s article, since I won&#8217;t go into the many interesting details. Overall, the advantages are many: clients need to have no knowledge about the structure of the resources in the server&#8217;s URI space beyond the starting point, so the application provider can make structural changes without &#8220;breaking&#8221; the clients.</p>
<p>There&#8217;s plenty of information about REST out there, independent from the Rails point of view. For a start I recommend <a href="http://rest.blueoxen.net/cgi-bin/wiki.pl?FrontPage" target="_blank">the REST wiki</a>, <a href="http://en.wikipedia.org/wiki/Representational_State_Transfer" target="_blank">Wikipedia&#8217;s article</a> about it, <a href="http://www.ics.uci.edu/~fielding/pubs/dissertation/top.htm" target="_blank">Roy Fielding&#8217;s dissertation</a> (in particular chapters <a href="http://http://www.ics.uci.edu/~fielding/pubs/dissertation/rest_arch_style.htm" target="_blank">5</a> and <a href="http://www.ics.uci.edu/~fielding/pubs/dissertation/evaluation.htm" target="_blank">6</a>) and <a href="http://www.google.com/search?q=Representational+State+Transfer" target="_blank">google</a> of course.</p>
<h3>RESTing on Rails</h3>
<p>Rails tries to comply with REST and it&#8217;s great at it. But not fully compliant. Not that this is a bad thing though, and it&#8217;s even perhaps intentional (I don&#8217;t know). At least the most important REST guidelines are supported, particularly the URI-to-Resource mapping, avoiding a <abbr title="Remote Procedure Call">RPC</abbr> kind of design.</p>
<p>So where does Rails fails? Mainly at not expressing relationships between resources by including hyperlinks in a resource&#8217;s representation (after all, that&#8217;s what <em>hypermedia</em> means). This, seen from an API point of view, where representations are often <abbr title="eXtensible Markup Language">XML</abbr> or <abbr title="JavaScript Object Notation">JSON</abbr> for the consumption of a client application, hinders the ability of the system to survive structural changes in its design and its URI space without rendering all independent clients useless.</p>
<p>For example, imagine a client application connecting to the API exposed by your own application, and requesting information about the products you offer. A reasonable response by a rails application conveys information about the product name, description, price, and the internal auto-generated id.</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
</pre></td><td class="code"><pre class="xml" style="font-family:monospace;"><span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;products</span> <span style="color: #000066;">type</span>=<span style="color: #ff0000;">&quot;array&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span>
  <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;product<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
    <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;category-id</span> <span style="color: #000066;">type</span>=<span style="color: #ff0000;">&quot;integer&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span>3<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/category-id<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
    <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;description<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>Just a couch, as you would expect.<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/description<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
    <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;id</span> <span style="color: #000066;">type</span>=<span style="color: #ff0000;">&quot;integer&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span>1<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/id<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
    <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;name<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>Couch<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/name<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
    <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;price</span> <span style="color: #000066;">type</span>=<span style="color: #ff0000;">&quot;float&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span>123.45<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/price<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
  <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/product<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
  <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;product<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
    <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;category-id</span> <span style="color: #000066;">type</span>=<span style="color: #ff0000;">&quot;integer&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span>6<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/category-id<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
    <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;description<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>For your kid to pretend he's a hero.<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/description<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
    <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;id</span> <span style="color: #000066;">type</span>=<span style="color: #ff0000;">&quot;integer&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span>2<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/id<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
    <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;name<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>Spiderman T-Shirt<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/name<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
    <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;price</span> <span style="color: #000066;">type</span>=<span style="color: #ff0000;">&quot;float&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span>12.95<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/price<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
  <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/product<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/products<span style="color: #000000; font-weight: bold;">&gt;</span></span></span></pre></td></tr></table></div>

<p>The client application retrieves this XML representation of the resource but to request a single product resource from this list, it needs the URI identifying such resource. But what URI identifies each independent product resource? The client needs to know how the URI structure of our site works, and needs to construct URI&#8217;s based on this and the id of the desired product.</p>
<p>But what if we decide to restructure our web site in the future, and resources are no longer referenced the same way? All independent client applications are suddenly broken, or else we are stuck with our initial design choices so we don&#8217;t piss off our clients (who wants that after all?).</p>
<p>Why don&#8217;t we &#8220;navigate&#8221; through the resources exposed by our API instead? This implies conveying also hyper-textual information. After all, that&#8217;s what we do when we as human users enter an e-commerce web site (or any other web site). The <abbr title="HyperText Markup Language">HTML</abbr> web pages are the resources we consume, and the browser is the library we use to connect to the internet. We don&#8217;t know in advance, from a page with a list of products, what the URI&#8217;s are for each independent product. That information comes with the page. If the developers decide to change the URI structure of the web site in the future, we can still navigate across the site when we visit it again, provided the initial entry page (the home page) is the same.</p>
<p>So REST is nothing more than just applying foundational web principles to modern web-based programming interfaces.</p>
<h3>Does it really matter? Why bother?</h3>
<p>It doesn&#8217;t really matter, if you are just using your Rails application in a closed environment, that is, if not even you consume the API but just the regular HTML interface, or if you are the only consumer of the API of your own application.</p>
<p>But what if your application is cool and useful enough so that third party vendors start using it to integrate their systems with yours? Isn&#8217;t that good? And what if you decide to re-engineer your site in the future and all those non-human API-consumer clients start broking? You&#8217;ll either have to&#8230;</p>
<ul>
<li>&#8230;continue supporting the old and the new interfaces at the same time (more work for you),</li>
<li>&#8230;or convince your clients to re-program their interfaces with your application (more work for them),</li>
<li>&#8230;or just let them go for a better provider (you loose).</li>
</ul>
<p>Of course, you can always drop those pesky plans of re-engineering, but then you are stuck with your initial design choices, as far as they concern the external interface. Why condemn yourself with something that seems good today but might be holding you back in the future?</p>
<p>For Rails applications developers like me, there&#8217;s not much of a choice, but I wonder why Rails decided to auto-denominate themselves RESTful when they aren&#8217;t really, in the most strict sense of the word.</p>
<p>Pedantry? Perhaps.</p>
]]></content:encoded>
			<wfw:commentRss>http://gnapse.com/blog/2009/08/06/resting-on-rails-considered-harmful/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Emacs: my first achievements, frustrations and impressions</title>
		<link>http://gnapse.com/blog/2009/07/17/emacs-my-first-achievements-frustrations-and-impressions/?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=emacs-my-first-achievements-frustrations-and-impressions</link>
		<comments>http://gnapse.com/blog/2009/07/17/emacs-my-first-achievements-frustrations-and-impressions/#comments</comments>
		<pubDate>Fri, 17 Jul 2009 16:44:23 +0000</pubDate>
		<dc:creator>ernesto</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[Web programming]]></category>
		<category><![CDATA[auto-complete]]></category>
		<category><![CDATA[emacs]]></category>
		<category><![CDATA[git]]></category>
		<category><![CDATA[learning]]></category>
		<category><![CDATA[rails]]></category>

		<guid isPermaLink="false">http://gnapse.com/blog/?p=50</guid>
		<description><![CDATA[Wow, this was fast! I never thought writing again about Emacs just a day after my first post about it. So far (the short version) I am doing better than I thought for just about a couple of days being serious about this. There are a few things that still bother me a lot though, [...]]]></description>
			<content:encoded><![CDATA[<p>Wow, this was fast! I never thought writing again about Emacs just a day after my first post about it.</p>
<p>So far (the short version) I am doing better than I thought for just about a couple of days being serious about this. There are a few things that still bother me a lot though, aside from the fact that I am not proficient using it yet, of course.</p>
<p><span id="more-50"></span></p>
<h3>My [mostly borrowed] customizations</h3>
<p>I&#8217;ve heavily customized Emacs to suit my needs better than it could do with its awkward defaults. Emacs key shortcuts (or is it key bindings?) are soooo unpleasant, unintuitive, lengthy and annoying that I refuse to use them at all. Happily one of Emacs&#8217; most powerful strengths, its ability to be customized, comes to the rescue. Actually this feature is what makes <a href="http://bettercoding.wordpress.com/2009/07/13/emacs-still-relevant/" target="_blank">Emacs still relevant after 30+ years</a>.</p>
<div id="attachment_52" class="wp-caption alignright" style="width: 310px"><img class="size-medium wp-image-52" title="customized-emacs" src="http://gnapse.com/blog/wp-content/uploads/2009/07/customized-emacs-300x225.png" alt="My Emacs after being customized" width="300" height="225" /><p class="wp-caption-text">My Emacs after being customized</p></div>
<p>Without going too much into details, I based my Emacs customizations mostly on <a href="http://github.com/rmm5t/dotfiles/tree" target="_blank">Ryan McGeary&#8217;s</a>, mostly because his setup is aimed at Ruby on Rails development and Git, which is what I want Emacs for in the first place. Overall, it&#8217;s <a title="Ruby mode for Emacs" href="http://rubyforge.org/projects/ri-emacs/" target="_blank">ri-emacs</a>, <a title="Rails support for Emacs" href="http://rinari.rubyforge.org/" target="_blank">rinari</a>, <a title="rhtml/erb mode for Emacs" href="http://github.com/eschulte/rhtml/tree" target="_blank">rhtml-mode</a>, <a title="Git support for Emacs" href="http://zagadka.vm.bytemark.co.uk/magit/" target="_blank">magit</a>, <a title="A snippets/templates system for Emacs" href="http://code.google.com/p/yasnippet/" target="_blank">yasnippets</a>, and several other non-language-specific customizations (<a title="Interactively Do Things" href="http://www.emacswiki.org/emacs/InteractivelyDoThings" target="_blank">ido</a>, <a title="Recently opened files" href="http://www.emacswiki.org/emacs/RecentFiles" target="_blank">recentf</a>, etc.)</p>
<p>On top of this setup, and after pruning stuff that I don&#8217;t need, at least for the moment (like erlang, markdown, haml, svn, carbon-emacs, etc.) I added support for some other stuff, namely <a title="RSpec support for Emacs" href="http://github.com/pezra/rspec-mode/tree">rspec</a>,  <a href="http://www.emacswiki.org/emacs/CuaMode" target="_blank">cua-mode</a> (see <a title="IBM's guidelines for user interface standards across platforms" href="http://en.wikipedia.org/wiki/IBM_Common_User_Access" target="_blank">Common User Access</a>), and other minor goodies from other sources.</p>
<p>Aside from McGeary&#8217;s setup as a base, I have to give credit to snippets of code I borrowed from elsewhere to further customize my environment. I should particularly mention <a href="http://devcraft.wordpress.com/2008/07/19/using-emacs-for-rails-development-the-perfect-setup/" target="_blank">Devcraft&#8217;s advises to customize Emacs for Rails development</a>, Dahoiv&#8217;s<a href="http://dahoiv.net/.emacs" target="_blank"> .emacs</a> file, the <a href="http://www.emacsblog.org/" target="_blank">Emacs blog</a> (where Ryan McGeary also writes) and the <a href="http://emacs-fu.blogspot.com/" target="_blank">emacs-flu blog</a>.</p>
<h3>Pros and Cons</h3>
<p><strong>On the good side</strong>, I have played for a while with the ruby on rails mode and it is good. The yasnippet extensions take a lot of credit on this, but overall it tastes very good on its own. I have yet to deal enough with the magit extension to fully evaluate my environment. I cannot afford buying a Mac+TextMate for Ruby development, and Emacs can hopefully come to the rescue for my productivity and joy while coding.</p>
<p>Also, having been able to get rid of most of the many painful key bindings in such a short time was amazing. I wonder why Emacs does not update its defaults to comply with the <a title="Common User Access" href="http://en.wikipedia.org/wiki/IBM_Common_User_Access" target="_blank">CUA standards</a>. The cua-mode is not enough.</p>
<p><strong>On the bad side</strong> (taking aside my own inexperience and lack of abilities) not everything is doing fine. Many of my key-bindings customizations break on &#8220;weird&#8221; modes, like C-w for closing the current buffer, which is not working when the current buffer is in <a title="Emacs mode to navigate and manipulate the file system" href="http://www.gnu.org/software/emacs/manual/html_node/emacs/Dired.html" target="_blank">dired mode</a>.</p>
<p>Also, I feel disappointed with the embedded shell (<code>M-x eshell</code>). I actually expected a bash session inside an Emacs window, but aliases and tab-completion are not working as they should, which makes me suspect it is not bash but an Emacs shell program (surprise!!!). As it is right now, I prefer to <code>Alt-Tab</code> to my terminal emulator with a real bash session in it. Something similar happens with the Rails console (available via <code>C-c ; c</code>), which I really didn&#8217;t test a lot after I realized that pressing the up and down arrow keys didn&#8217;t navigate through my history of previous commands <img src='http://gnapse.com/blog/wp-includes/images/smilies/icon_sad.gif' alt=':-(' class='wp-smiley' /> .</p>
<h3>So, what is it then?</h3>
<p>In spite of all this, I still believe I can give Emacs a chance. Most shortcomings I&#8217;ve faced are not directly related to its function as a coding environment, but to tasks around coding, like going to the console to type rails-related commands, manipulating the file system, etc. I was doing these stuff outside my previous code editors anyway so I guess this can stay as is for some time.</p>
<p>Hopefully I&#8217;ll be able to fix some of this issues over time and always use more and more features of this wonderful editor. I could even live without using git from within it, but I have yet to test that. Meanwhile, I&#8217;ll take some time to get better at coding with what is currently working for me. It seems to me that <strong>Emacs will stay for a while on my desktop</strong>.</p>
]]></content:encoded>
			<wfw:commentRss>http://gnapse.com/blog/2009/07/17/emacs-my-first-achievements-frustrations-and-impressions/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
	</channel>
</rss>
