<?xml version="1.0" encoding="UTF-8"?>
<page>
  <content>Over the past few weeks I've been doing a major overhaul of the "Simplist":/simplist_cms code base, the CMS I built to run this site. The biggest change is that I've been rethinking the way I approach an admin interface.

(Much of my motivation and inspiration for this was drawn from Scott Raymond's "refactoring to REST":http://scottraymond.net/2006/7/20/refactoring-to-rest article.)

Much of what I removed ended up being mostly admin interface code. Using Rails' @before_filter@ methods to protect dangerous actions (new, edit, delete) is pretty sufficient for a website that is mostly content. 

I also found that this allowed me to shorten my workflow when making changes to the site. I could edit a page without having to go through a special interface that duplicated all the information I already had right on the site. 

I'll go over this in much more detail once I make the big upgrade to the site official (probably over the course of a weekend), but the lesson I've learned is to give your applications one coherent interface. Sure, hide and restrict functionality as needed, but making one big monolithic wall between users and administrators is almost always overkill and not very "DRY":http://en.wikipedia.org/wiki/Don't_repeat_yourself.


</content>
  <created-on type="datetime">2007-03-19T12:21:41+00:00</created-on>
  <has-changes type="integer">0</has-changes>
  <html>&lt;p&gt;Over the past few weeks I&amp;#8217;ve been doing a major overhaul of the &lt;a href="/simplist_cms"&gt;Simplist&lt;/a&gt; code base, the &lt;span class="caps"&gt;CMS I&lt;/span&gt; built to run this site. The biggest change is that I&amp;#8217;ve been rethinking the way I approach an admin interface.&lt;/p&gt;


	&lt;p&gt;(Much of my motivation and inspiration for this was drawn from Scott Raymond&amp;#8217;s &lt;a href="http://scottraymond.net/2006/7/20/refactoring-to-rest"&gt;refactoring to &lt;span class="caps"&gt;REST&lt;/span&gt;&lt;/a&gt; article.)&lt;/p&gt;


	&lt;p&gt;Much of what I removed ended up being mostly admin interface code. Using Rails&amp;#8217; &lt;code&gt;before_filter&lt;/code&gt; methods to protect dangerous actions (new, edit, delete) is pretty sufficient for a website that is mostly content.&lt;/p&gt;


	&lt;p&gt;I also found that this allowed me to shorten my workflow when making changes to the site. I could edit a page without having to go through a special interface that duplicated all the information I already had right on the site.&lt;/p&gt;


	&lt;p&gt;I&amp;#8217;ll go over this in much more detail once I make the big upgrade to the site official (probably over the course of a weekend), but the lesson I&amp;#8217;ve learned is to give your applications one coherent interface. Sure, hide and restrict functionality as needed, but making one big monolithic wall between users and administrators is almost always overkill and not very &lt;a href="http://en.wikipedia.org/wiki/Don't_repeat_yourself"&gt;&lt;span class="caps"&gt;DRY&lt;/span&gt;&lt;/a&gt;.&lt;/p&gt;</html>
  <id type="integer">117</id>
  <is-post type="integer">1</is-post>
  <is-published type="integer">1</is-published>
  <title>Rethinking the Admin Interface</title>
  <url>notebook/2007/03/19/rethinking_the_admin_interface</url>
</page>
