<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/css" href="/stylesheets/rss.css"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/">
  <channel>
    <title>Depth-First: Tag rails</title>
    <link>http://depth-first.com/articles/tag/rails</link>
    <language>en-us</language>
    <ttl>40</ttl>
    <description>Walking the Web of Chemical Informatics</description>
    <item>
      <title>The Daily Molecule: The Wonders of Chemistry - One Molecule at a Time</title>
      <description>&lt;p&gt;&lt;a href="http://blog.chempedia.com"&gt;&lt;img src="http://depth-first.com/demo/20080513/chempedia.png" align="right"&gt;&lt;/img&gt;&lt;/a&gt;Chemistry is a big field judged by any standard, including the &lt;a href="http://depth-first.com/articles/2008/05/07/1908-and-all-that-the-long-tail-and-chemistry"&gt;proliferation of American Chemical Society (ACS) divisions&lt;/a&gt;. Each subdiscipline in chemistry is in turn so big, that once a chemist becomes 'differentiated' it's easy to lose touch even with neighboring subdisciplines. It doesn't have to be that way. This article introduces a new service, &lt;a href="http://blog.chempedia.com"&gt;&lt;em&gt;The Daily Molecule&lt;/em&gt;&lt;/a&gt; designed to make it just a little bit easier (and hopefully fun) to stay in the chemical loop.&lt;/p&gt;

&lt;h4&gt;What Is It?&lt;/h4&gt;

&lt;p&gt;The idea is simple: every weekday, a new molecule will be featured on &lt;em&gt;The Daily Molecule&lt;/em&gt; with a short write-up and some leading references. Although molecules in the news will get first priority, any molecule is fair game.&lt;/p&gt;

&lt;p&gt;The material for &lt;em&gt;The Daily Molecule&lt;/em&gt; will be drawn from &lt;a href="http://chempedia.com"&gt;Chempedia&lt;/a&gt;, which in turn gets some of its content from &lt;a href="http://wikipedia.org"&gt;Wikipedia&lt;/a&gt;. In other words, the entries on the Daily Molecule will be largeley written by my fellow chemists.&lt;/p&gt;

&lt;p&gt;The process of creating a &lt;em&gt;Daily Molecule&lt;/em&gt; entry is not time-consuming, but much of what is being done manually now could be automated in the future. The technology platform lends itself well to many forms of chemistry-specific modification (see below).&lt;/p&gt;

&lt;p&gt;I hesitate to use the term 'blog' to describe &lt;em&gt;The Daily Molecule&lt;/em&gt;, but the description may be helpful to an extent.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;The Daily Molecule&lt;/em&gt; is unlike a blog in that most content will be generated by others, selected by some criteria, reformatted for consistency, and published. In that sense, &lt;em&gt;The Daily Molecule&lt;/em&gt; is a something like a mini scientific journal, but it turns the process of acquiring content on its head.&lt;/p&gt;

&lt;p&gt;If chemistry ever evolves beyond the &lt;a href="http://depth-first.com/articles/2007/07/16/go-west-young-man-does-open-access-really-matter-in-the-long-run"&gt;current model of publication&lt;/a&gt;, which seems inevitable at this point, the journals of the future may resemble &lt;em&gt;The Daily Molecule&lt;/em&gt; in one or more ways.&lt;/p&gt;

&lt;h4&gt;Technology&lt;/h4&gt;

&lt;p&gt;The software running &lt;em&gt;The Daily Molecule&lt;/em&gt; is a modified version of &lt;a href="http://simplelog.net/"&gt;SimpleLog&lt;/a&gt;, a Web application based on &lt;a href="http://www.rubyonrails.org/"&gt;Ruby on Rails&lt;/a&gt;. Unlike most blogging engines, SimpleLog focuses on implementing only the most basic publication features, and doing them to perfection. If you know a little Ruby and can work with Rails, you can do a lot with SimpleLog.&lt;/p&gt;

&lt;p&gt;One of the first items of business will be to implement &lt;a href="http://depth-first.com/articles/2007/09/18/six-reasons-i-like-recaptcha-or-how-to-build-a-web-service-worth-talking-about"&gt;reCAPTCHA&lt;/a&gt; support and activate comments on articles.&lt;/p&gt;

&lt;p&gt;Some ideas for chemically-enabling &lt;em&gt;The Daily Molecule&lt;/em&gt; include a graphical abstract sidebar and (sub)structure search. Currently, the 2D chemical structure images posted to &lt;em&gt;The Daily Molecule&lt;/em&gt; &lt;a href="http://depth-first.com/articles/2007/08/08/never-draw-the-same-molecule-twice-viewing-image-metadata"&gt;have complete connection tables embedded as metadata&lt;/a&gt;, a feature with some interesting possibilities.&lt;/p&gt;

&lt;h4&gt;The Molecule of the Day/Week/Month&lt;/h4&gt;

&lt;p&gt;The basic idea behind &lt;em&gt;The Daily Molecule&lt;/em&gt; is not new. Many other services have sprung up over the last ten years that operate, at least on the surface, similarly. Some examples:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="http://www.moleculeoftheday.com/"&gt;Molecule of the Day&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://portal.acs.org/portal/acs/corg/content?_nfpb=true&amp;amp;_pageLabel=PP_TRANSITIONMAIN&amp;amp;node_id=677&amp;amp;use_sec=false&amp;amp;sec_url_var=region1"&gt;ACS Molecule of the Week&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.drugsandpoisons.com/"&gt;Drugs and Poisons&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://the-half-decent-pharmaceutical-chemistry-blog.chemblogs.org/category/saturday-night-synthesis"&gt;Saturday Night Synthesis&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.chm.bris.ac.uk/motm/motm.htm"&gt;The Molecule of the Month&lt;/a&gt; (may be the oldest continuously-operated MOTM site in existence)&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.3dchem.com/motm.asp"&gt;3dchem.com Molecule of the Month&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.expasy.org/spotlight/"&gt;Protein Spotlight&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://mgl.scripps.edu/people/goodsell/illustration/pdb"&gt;PDB Molecule of the Month&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.prous.com/molecules/default.asp"&gt;Prous Molecule of the Month&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Quite a few others don't appear on this list.&lt;/p&gt;

&lt;p&gt;The different idea behind the &lt;em&gt;The Daily Molecule&lt;/em&gt; is that chemical content already exists in on the Web in machine-readable format with licenses that permit its re-use; all that's needed is a way to aggregate, format, and package that information in a form suitable for once-daily scanning and cheminformatics manipulation.&lt;/p&gt;

&lt;h4&gt;Conclusions&lt;/h4&gt;

&lt;p&gt;Like no other medium, the Web blurs artificial distinctions: between work and play; between private and public; between on-topic and off-topic; between fame and obscurity; between mine and yours; between big and small; and between profit and non-profit. Chemistry may be late to the party, but is not immune to its call.&lt;/p&gt;</description>
      <pubDate>Wed, 14 May 2008 11:58:00 -0400</pubDate>
      <guid isPermaLink="false">urn:uuid:804a7467-98a1-47ae-975a-b1fdd172f1c0</guid>
      <author>Rich Apodaca</author>
      <link>http://depth-first.com/articles/2008/05/14/the-daily-molecule-the-wonders-of-chemistry-one-molecule-at-a-time</link>
      <category>Meta</category>
      <category>dailymolecule</category>
      <category>scientificpublication</category>
      <category>chempedia</category>
      <category>wikipedia</category>
      <category>journal</category>
      <category>web</category>
      <category>rails</category>
      <category>ruby</category>
      <category>simplelog</category>
    </item>
    <item>
      <title>Building Chempedia: Start Simple, Then Iterate</title>
      <description>&lt;p&gt;&lt;a href="http://chempedia.com"&gt;&lt;img src="http://depth-first.com/demo/20080513/chempedia.png" align="right"&gt;&lt;/img&gt;&lt;/a&gt;As a medium for building software, the Web offers unparalleled adaptability. With nothing to download or install, users of Web applications automatically see the newest version - always. This may sound like a small thing, and technically it is. But it dramatically increases the effectiveness with which software can be created. &lt;a href="http://depth-first.com/articles/2008/04/28/building-chempedia-indexing-wikipedias-6-411-compound-monographs"&gt;The previous article in this series&lt;/a&gt; introduced &lt;a href="http://chempedia.com"&gt;Chempedia&lt;/a&gt;, the free Chemical encyclopedia and cheminformatics Web application. This article will discuss the process by which Chempedia will become a better service over time.&lt;/p&gt;

&lt;h4&gt;Iterative Web Application Development&lt;/h4&gt;

&lt;p&gt;Chempedia, like all actively-developed software, is a work in progress. It will be built in stages starting with the addition of new features, followed by a round of user feedback, bug fixing, and stabilization. This will then be followed by the next major iteration, and so on.&lt;/p&gt;

&lt;p&gt;This iterative design style is ideally suited for Web applications. Because the barrier to pushing out new versions is essentially non-existent, a Web application can evolve at a much more rapid rate than other kinds of software. Indeed, the first version of a Web application need only work well enough to prove a point.&lt;/p&gt;

&lt;p&gt;One of the keys to iterative Web development is a technology framework designed to facilitate it. Chempedia is being developed with &lt;a href="http://rubyonrails.com/"&gt;Ruby on Rails&lt;/a&gt;, a tool that enables Web developers to take full advantage of the iterative development style the Web makes possible.&lt;/p&gt;

&lt;p&gt;Another key element of iterative Web development is users willing to explore the system and offer criticism. Evolution succeeds only when the environment stresses an ecosystem; the same is true in Web application development.&lt;/p&gt;

&lt;p&gt;Chempedia will take full advantage of the evolutionary nature of Web application development. As features are added and (hopefully) use of the service grows, Chempedia will evolve in ways that are impossible to predict today.&lt;/p&gt;

&lt;h4&gt;What's Wrong With Chempedia?&lt;/h4&gt;

&lt;p&gt;If you happened to take a look at Chempedia last week (that version is now no longer visible), you probably noticed many, many things that needed improvement. Some concerns were in the areas of:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Navigation. Navigation works best when the right granularity of options is achieved. Chempedia's navigation system grouped both closely-related and dissimilar actions at the same level.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Metaphor. The initial idea behind Chempedia was to see what happened when PubChem's chemical structures were mashed up with Wikiepia articles, using &lt;a href="http://depth-first.com/articles/2007/05/21/simple-cas-number-lookup-with-pubchem"&gt;CAS numbers&lt;/a&gt; as the common link. The site design reflected this, with no clear organizing principle other than mashup. However, after the initial demonstration of the success of this approach, it became clear that Chempedia was strikingly similar in both form and function to the &lt;a href="http://depth-first.com/articles/2008/04/28/building-chempedia-indexing-wikipedias-6-411-compound-monographs"&gt;Merck Index&lt;/a&gt;. Perhaps this should be used as a clue in deriving a better organizing principle.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Wikipedia integration. The old Chempedia site didn't make it nearly as convenient as is should be to create or edit compound monographs. Because Chempedia serves as a chemically-aware front-end for Wikipedia, the easier it is to get to Wikipedia from Chempedia, the better.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;What Changed?&lt;/h4&gt;

&lt;p&gt;During the process of trying to fix Chempedia's problems, it became clear that a major redesign was in order. This consisted of:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Creating a landing page oriented toward search.&lt;/strong&gt; Using the Merck Index as a metaphor suggested that &lt;a href="http://chempedia.com"&gt;Chempedia's landing page&lt;/a&gt; should be designed around search, not browsing - as it was originally designed.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Emphasizing compound monographs, not compounds.&lt;/strong&gt; Chempedia's central organizing principle is now the Compound Monograph. One way this is seen is in the new URL structure, which makes it very easy to see where a Chempedia link is about to take you. For example, consider the URL for &lt;a href="http://chempedia.com/monographs/benzene"&gt;benzene&lt;/a&gt;. Another way this can be seen is in the inclusion of &lt;a href="http://chempedia.com/monographs/virginiamycin"&gt;Compound Monographs lacking a chemical structure&lt;/a&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Designing a streamlined menu system.&lt;/strong&gt; The main menu system has been broken down into just three main categories: &lt;a href="http://chempedia.com/"&gt;Search&lt;/a&gt;; &lt;a href="http://chempedia.com/monographs"&gt;Browse&lt;/a&gt;; and &lt;a href="http://chempedia.com/monographs/new"&gt;Create&lt;/a&gt;. These headings refer to actions on Compound Monographs, again in line with their importance as an organizing principle.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Promoting better integration with Wikipedia.&lt;/strong&gt; After experimenting with a few implementation possibilities, it is now possible to edit Wikipedia articles directly from the Chempedia site, thanks to the use of &lt;a href="http://en.wikipedia.org/wiki/IFrame"&gt;inline frame&lt;/a&gt;. Once again, this capability is tied to the Compound Monograph, from which editing and updating links are accessible.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Striving for comprehensive Wikipedia coverage.&lt;/strong&gt; Wikipedia had far more compound monographs than could be found on Chempedia, &lt;a href="http://depth-first.com/articles/2008/04/28/building-chempedia-indexing-wikipedias-6-411-compound-monographs"&gt;6,411 of them&lt;/a&gt;, to be precise. Chempedia now contains all of them, regardless of whether a chemical structure can be found based on a CAS number in PubChem. This includes inorganics, organometallics, polymers, mixtures, and polypeptides.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;Miles to Go Yet&lt;/h4&gt;

&lt;p&gt;Chempedia is far from being finished. For example, you'll notice many instances in which a Compound Monograph is &lt;a href="http://chempedia.com/monographs/parthenolide"&gt;truncated&lt;/a&gt;. This arises from difficulties in parsing Wikipedia's &lt;a href="http://en.wikipedia.org/wiki/Wikilink"&gt;Wikitext&lt;/a&gt; format (more on this later).&lt;/p&gt;

&lt;p&gt;Ultimately, the full text of each Wikipedia article will be present on Chempedia rather than just the first introductory paragraph. But it will take a significant amount of work to ensure that each article's Wikitext entry can be parsed faithfully.&lt;/p&gt;

&lt;p&gt;Chempedia allows search by CAS number, PubChem CID and exact title. Full-text searching is not yet implemented, nor is autocomplete search, both of which would greatly enhance the usability of the service.&lt;/p&gt;

&lt;p&gt;Exact structure searching is made possible by the &lt;a href="http://metamolecular.com/chemwriter"&gt;ChemWriter&lt;/a&gt; editor in combination with &lt;a href="http://en.wikipedia.org/wiki/SHA-1"&gt;SHA-1&lt;/a&gt; hashed &lt;a href="http://depth-first.com/articles/2007/09/27/inchi-for-newbies"&gt;InChIs&lt;/a&gt;. Substructure search and query atom search will ultimately be added, but for an encyclopedia containing relatively few molecules, most of which having trivial names, this isn't yet seen as being critical.&lt;/p&gt;

&lt;p&gt;You'll notice many Monographs on Chempedia that have no structure information. Behind the scenes, Chempedia uses the 350,000+ CAS numbers now contained in the &lt;a href="http://pubchem.ncbi.nlm.nih.gov/"&gt;PubChem&lt;/a&gt; database to associate a chemical structure with a Wikipedia article. In the future, these associations will be made by Chempedia and Wikipedia users, which will allow every Chempedia small-molecule Monograph to have a structure associated with it. (It will also create a rather large, publicly-curated, open database of CAS numbers linked to chemical structures, but that's a story for another time).&lt;/p&gt;

&lt;h4&gt;Your Feedback is Essential&lt;/h4&gt;

&lt;p&gt;Finally, many of the changes made in this iteration were the result of conversions with chemists and developers. If you see something on Chempedia that just doesn't work for you, please don't be shy about &lt;a href="http://chempedia.com/messages/new"&gt;saying so&lt;/a&gt;. Feedback is an essential ingredient in making Chempedia the best service it can be.&lt;/p&gt;</description>
      <pubDate>Tue, 13 May 2008 11:38:00 -0400</pubDate>
      <guid isPermaLink="false">urn:uuid:63df5614-92fb-4363-a060-212645be6315</guid>
      <author>Rich Apodaca</author>
      <link>http://depth-first.com/articles/2008/05/13/building-chempedia-start-simple-then-iterate</link>
      <category>Meta</category>
      <category>chempedia</category>
      <category>evolution</category>
      <category>webapplication</category>
      <category>rails</category>
      <category>compoundmonograph</category>
      <category>merckindex</category>
      <category>iteration</category>
    </item>
    <item>
      <title>Chempedia.net: Mashing Up PubChem and Wikipedia</title>
      <description>&lt;p&gt;&lt;a href="http://chempedia.com"&gt;&lt;img src="http://chempedia.net/images/global/logo.png" align="right"&gt;&lt;/img&gt;&lt;/a&gt;&lt;a href="http://pubchem.ncbi.nlm.nih.gov/"&gt;PubChem&lt;/a&gt; and &lt;a href="http://wikipedia.net"&gt;Wikipedia&lt;/a&gt; represent two of the largest open repositories of chemical information in the world. And they complement each other very nicely. PubChem contains mainly low-level chemical structure information whereas Wikipedia contains free-text descriptions of chemical compounds in the form of &lt;a href="http://depth-first.com/articles/2008/04/02/wikipedia-for-cheminformatics-a-simple-web-api-for-finding-cas-numbers-in-compound-monographs"&gt;compound monographs&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Both services offer permission and access to copy and reuse their contents. But neither service is, by itself, nearly as useful as it could be.&lt;/p&gt;

&lt;p&gt;Why not mash them up?&lt;/p&gt;

&lt;p&gt;To explore that question my company, &lt;a href="http://metamolecular.com"&gt;Metamolecular, LLC&lt;/a&gt; has launched &lt;a href="http://chempedia.com"&gt;Chempedia&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;To my knowledge, Chempedia represents the first publicly-facing database of compounds to incorporate Wikipedia's collection of organic compound monographs. And it's one of the few cheminformatics services to make use of free-text descriptions generated by individual chemists.&lt;/p&gt;

&lt;p&gt;Chempedia has been somewhat selective about the compounds it includes. To date, it has spidered over 2,500 monographs, combining them with over 300,000 of the most interesting compounds from PubChem. Not every Chempedia.net molecule has a monograph, but now there's a tool that can actually make that absence apparent.&lt;/p&gt;

&lt;p&gt;Chempedia is both an experiment and a service. It's immediately useful for anyone in the business of making or doing things with organic molecules. It's created several unexpected moments of "Oh, that's actually a useful molecule!" It also will serve as a platform to test some of the ideas discussed in Depth-First over the last year or so on the advantages of the Web for collaboration in chemistry.&lt;/p&gt;

&lt;p&gt;Stay tuned for more details about how Chempedia was created and some of its applications in chemistry.&lt;/p&gt;</description>
      <pubDate>Fri, 04 Apr 2008 10:06:00 -0400</pubDate>
      <guid isPermaLink="false">urn:uuid:168432fb-c064-43c2-a60d-728c7c29c406</guid>
      <author>Rich Apodaca</author>
      <link>http://depth-first.com/articles/2008/04/04/chempedia-net-mashing-up-pubchem-and-wikipedia</link>
      <category>Tools</category>
      <category>chempedia</category>
      <category>wikipedia</category>
      <category>pubchem</category>
      <category>rails</category>
      <category>ruby</category>
      <category>chemwriter</category>
      <category>applet</category>
      <category>java</category>
      <category>jruby</category>
    </item>
    <item>
      <title>NetBeans 6, Ruby, and Rails: A Surprisingly Effective Combination</title>
      <description>&lt;p&gt;For far too long Ruby has lacked a development environment that supported important features developers in other languages now take for granted: code completion; refactoring; platform-independence; and speed. Although &lt;a href="http://www.netbeans.org/"&gt;NetBeans&lt;/a&gt; may not spring to mind when thinking of Rails IDEs, it should be at the top of the list for anyone interested in the subject.&lt;/p&gt;

&lt;p&gt;Getting started with Ruby, Rails and NetBeans is as easy as &lt;a href="http://download.netbeans.org/netbeans/6.0/final/"&gt;downloading the installer&lt;/a&gt; and running it. If you later decide to add Java support to your installation (which is also excellent), that can be done by downloading and running the &lt;a href="http://download.netbeans.org/netbeans/6.0/final/"&gt;Java installer&lt;/a&gt;. You'll end up with a single IDE that supports both languages.&lt;/p&gt;

&lt;h4&gt;Code Completion&lt;/h4&gt;

&lt;p&gt;Although other IDEs support some form of Ruby code completion, NetBeans takes it to another level. Can't remember the exact name of the method you're looking for? Type the period and let NetBeans look up both the name and documentation for you:&lt;/p&gt;

&lt;p&gt;&lt;center&gt;&lt;img src="http://depth-first.com/demo/20080326/code_completion.png"&gt;&lt;/img&gt;&lt;/center&gt;&lt;/p&gt;

&lt;p&gt;Hitting return enters the method and creates a template for parameters and any needed blocks.&lt;/p&gt;

&lt;h4&gt;Refactoring&lt;/h4&gt;

&lt;p&gt;One of the things that makes Java such a powerful language for large projects is the refactoring support offered by most IDEs. NetBeans brings this power to Ruby. Need to rename a class, method, or variable? Let NetBeans do it for you:&lt;/p&gt;

&lt;p&gt;&lt;center&gt;&lt;img src="http://depth-first.com/demo/20080326/refactor.png"&gt;&lt;/img&gt;&lt;/center&gt;&lt;/p&gt;

&lt;h4&gt;Conclusions&lt;/h4&gt;

&lt;p&gt;There's much more to NetBeans 6 and Ruby/Rails than what's been shown here, including formatting/highlighting for JavaScript and CSS, user-definable Ruby/JRuby interpreter, and menu-based script execution. Whether you're looking for a way to get started with using Ruby and Rails or a way to become more efficient at it, NetBeans 6 is well worth the time.&lt;/p&gt;</description>
      <pubDate>Thu, 27 Mar 2008 13:46:00 -0400</pubDate>
      <guid isPermaLink="false">urn:uuid:b1fbcff2-4f5b-496f-9eeb-35f96e8d0b5d</guid>
      <author>Rich Apodaca</author>
      <link>http://depth-first.com/articles/2008/03/27/netbeans-6-ruby-and-rails-a-surprisingly-effective-combination</link>
      <category>Tools</category>
      <category>ruby</category>
      <category>rails</category>
      <category>netbeans</category>
      <category>ide</category>
      <category>refactoring</category>
      <category>codecompletion</category>
    </item>
    <item>
      <title>Paginated Archives in Radiant CMS: The Power of Minimal But Extendable Systems</title>
      <description>&lt;p&gt;&lt;a href="http://radiantcms.org"&gt;&lt;img src="http://depth-first.com/demo/20071107/radiant.png" align="right"&gt;&lt;/a&gt;&lt;/a&gt;If you've ever needed to build a Website hosting mostly static content, you've probably tried out a few Content Management Systems. The problem is not finding them - there must be hundreds. The problem is finding one that successfully walks the fine line between being minimal (so that you can do things your way) and powerful (so that it can grow with your needs).&lt;/p&gt;

&lt;p&gt;&lt;a href="http://radiantcms.org"&gt;Radiant CMS&lt;/a&gt; is one of those systems. As an added bonus, it's written in Ruby and built on &lt;a href="http://rubyonrails.org"&gt;Rails&lt;/a&gt;. Radiant succeeds by focusing on the management of pages while providing a powerful extension mechanism.&lt;/p&gt;

&lt;p&gt;The Website for my company, &lt;a href="http://metamolecular.com"&gt;Metamolecular&lt;/a&gt;, will consist of content produced infrequently (product descriptions and documentation) intermingled with more frequently created blog-like content (updates, tutorials, responses to user questions). Traditionally, the CMS has handled the former, with blogging software handling the latter. But we needed a system that handled both well.&lt;/p&gt;

&lt;p&gt;One of the distinguishing characteristics of blogs, as opposed to other kinds of websites, is the unusually large number of similar pages. Handling this kind of content requires pagination - the ability to break an archive up into a series of pages containing a smaller subset of the archive.&lt;/p&gt;

&lt;p&gt;Although Radiant doesn't have the ability to paginate its content, it does have a wonderful system for creating extensions. I thought I'd give it a try.&lt;/p&gt;

&lt;p&gt;The result is the Paginated Archive extension. It works as a drop-in replacement for Radiant's existing Archive Page. After placing the extension into your PROJECT_HOME/vendor/extensions directory, you'll be able to create and configure Paginated Archives for use with blogs and other kinds of sites generating large numbers of pages. The extension requires Bruce Williams' excellent &lt;a href="http://rubyforge.org/projects/paginator"&gt;Paginator&lt;/a&gt; gem.&lt;/p&gt;

&lt;p&gt;You can get started by downloading the extension &lt;a href="http://depth-first.com/demo/20071107/paginated_archive.tar.gz"&gt;here&lt;/a&gt;.&lt;/p&gt;</description>
      <pubDate>Wed, 07 Nov 2007 09:40:00 -0500</pubDate>
      <guid isPermaLink="false">urn:uuid:3f1bf0a2-bd23-4a3a-9c7b-6b7d0e3c695f</guid>
      <author>Rich Apodaca</author>
      <link>http://depth-first.com/articles/2007/11/07/paginated-archives-in-radiant-cms-the-power-of-minimal-but-extendable-systems</link>
      <category>Tools</category>
      <category>radiantcms</category>
      <category>ruby</category>
      <category>rails</category>
      <category>blog</category>
      <category>cms</category>
      <category>paginated_archive</category>
    </item>
    <item>
      <title>Five Reasons to Start Using JRuby Now</title>
      <description>&lt;p&gt;&lt;a href="http://ruby-lang.org"&gt;&lt;img src="http://depth-first.com/files/ruby_logo_new.gif" align = "right"&gt;&lt;/img&gt;&lt;/a&gt;&lt;a href="http://java.sun.com"&gt;&lt;img src="http://depth-first.com/demo/20071008/duke.gif" align="right"&gt;&lt;/img&gt;&lt;/a&gt;&lt;a href="http://jruby.codehaus.org/"&gt;JRuby&lt;/a&gt; is an implementation of the Ruby programming language on the Java Virtual Machine. Until about six months ago, JRuby was merely a technical curiosity; few seemed interested in using it for 'serious' development work. This perception has changed over the last six months, as JRuby's progress has accelerated. Here, in no particular order, are five reasons to consider using JRuby for your current or next project.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;JRuby Now Works.&lt;/strong&gt; With the recent &lt;a href="http://docs.codehaus.org/display/JRUBY/2007/06/12/JRuby+1.0+Released"&gt;release of JRuby 1.0&lt;/a&gt;, JRuby now does just about everything C-Ruby does. Performance is now almost at the level of the C-Ruby implementation.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;JRuby on Rails Now Works.&lt;/strong&gt; For a long time, JRuby's support for Rails was limited. Not so any more. &lt;a href="http://www.google.com/search?hl=en&amp;amp;q=jruby+rails&amp;amp;btnG=Google+Search"&gt;Google JRuby Rails&lt;/a&gt; and be amazed at all of the activity.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Ruby Can Now Be Compiled to Java Bytecode.&lt;/strong&gt; &lt;a href="http://headius.blogspot.com/2007/09/compiler-is-complete.html"&gt;Simply amazing&lt;/a&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Sun is Financing JRuby Development.&lt;/strong&gt; Two core JRuby developers, Charles Nutter and Thomas Enebo, &lt;a href="http://headius.blogspot.com/2006/09/jruby-steps-into-sun.html"&gt;have been hired by Sun Microsystems&lt;/a&gt; to develop JRuby. Sun gets it. They know that Java the Platform matters far more than Java the Language. Despite their own investment in &lt;a href="http://java.sun.com/javafx/"&gt;Java FX&lt;/a&gt;, Sun is taking a pragmatic approach to scripting on the JVM. If only Sun's industry peers were as pragmatic.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;The JVM Offers an Enterprise-Quality Platform for Ruby Applications.&lt;/strong&gt; The JVM is one of the best-tested and most reliable software platforms in existence. Ruby run on top of a JVM makes a lot more sense than Ruby run on top of metal via C. Likewise, hosting Ruby on Rails applications inside a Java application container offers a way out of the current Rails deployment conundrum. It won't be long before everyone sees it that way. For now, those who get it will have a head start.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Far from being a passing curiosity, JRuby may well become the preferred way to develop both Java and Ruby applications. The wide array of cheminformatics code already written in Java makes JRuby an especially attractive platform for chemistry software. Future articles will show how the powerful duo of Ruby and the Java Virtual Machine can be used to speed the development and deployment of cheminformatics Web applications.&lt;/p&gt;</description>
      <pubDate>Mon, 08 Oct 2007 08:27:00 -0400</pubDate>
      <guid isPermaLink="false">urn:uuid:3e8da9c3-de89-4141-8349-80fb05d07d86</guid>
      <author>Rich Apodaca</author>
      <link>http://depth-first.com/articles/2007/10/08/five-reasons-to-start-using-jruby-now</link>
      <category>Tools</category>
      <category>jruby</category>
      <category>ruby</category>
      <category>java</category>
      <category>rails</category>
    </item>
    <item>
      <title>RESTful Cheminformatics</title>
      <description>&lt;p&gt;Names are powerful. For example, if you work in a field that has a well-recognized title, it's easy to talk to non-experts about what you do. Doctors, lawyers, NASCAR drivers, actors, and airline pilots all fall into this category. If, on the other hand, you're a medicinal chemist - well, you've got your work cut out for you.&lt;/p&gt;

&lt;p&gt;Names are especially important in software design. Many of the toughest design problems occur because we fail to see an underlying concept and name it. Unfortunately, our natural impulse in these situations is to get busy creating complexity (or just give up). But if we allow ourselves to take a few steps back, more often than not we find a central concept waiting to be named.&lt;/p&gt;

&lt;p&gt;&lt;a href="http://www.ics.uci.edu/~fielding/pubs/dissertation/rest_arch_style.htm"&gt;Representational State Transfer&lt;/a&gt; (REST) has received a lot of attention lately, and for good reason. REST is fundamentally about discovering, naming, and exposing the elements of a problem domain. Object-Oriented designers have been doing this for decades. With REST it's possible to do the same thing with Internet resources, and achieve many of the same benefits.&lt;/p&gt;

&lt;p&gt;To draw an analogy between REST and Object-Oriented design, &lt;strong&gt;resources&lt;/strong&gt; are to the Internet what &lt;strong&gt;objects&lt;/strong&gt; are to software. Resources have names. They have capabilities and well-defined behavior. They can be nested, extended, created, queried, and destroyed. They act as nouns upon which a limited number of verbs can act. Most importantly, resources have consistent and discoverable behavior.&lt;/p&gt;

&lt;p&gt;REST's "big idea" is that the HTTP protocol already provides all the verbs necessary to operate on resources: GET, PUT, POST, and DELETE. If you're willing to accept the notion that (almost) everything in the world can be modeled as resources being acted on by those four verbs, your life as a Web developer suddenly gets much simpler.&lt;/p&gt;

&lt;p&gt;The technical aspects of REST have been covered in many excellent blogs, articles, and talks. In particular, the release of Ruby on Rails 1.2 has lead to a flood of excellent material. Two works I've found especially helpful are:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="http://www.scribemedia.org/2006/07/09/dhh/"&gt;David Heinemeier Hanson's 2006 Rails Conf Presentation&lt;/a&gt;:  The &lt;a href="http://media.rubyonrails.org/presentations/worldofresources.pdf"&gt;slide deck&lt;/a&gt; for this presentation is essential.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="http://www.b-simple.de/documents"&gt;RESTFul Rails Development&lt;/a&gt;:  Written by Ralf Wirdemann and Thomas Baustert, this free booklet describes REST and Rails in much more detail than the &lt;a href="http://www.pragmaticprogrammer.com/titles/rails2/"&gt;Agile Book&lt;/a&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;What does REST have to do with Cheminformatics? Quite a lot. As more and more free chemistry services, including &lt;a href="http://depth-first.com/articles/2007/01/24/thirty-two-free-chemistry-databases"&gt;free databases&lt;/a&gt;, become available online, lack of interoperability will start to become very painful - not just to developers, but to chemists themselves. There are many valid approaches to solving this problem. REST may well be the most workable.&lt;/p&gt;</description>
      <pubDate>Wed, 30 May 2007 10:42:00 -0400</pubDate>
      <guid isPermaLink="false">urn:uuid:3845e12c-ae8b-4495-8af2-d5dfb929f23e</guid>
      <author>Rich Apodaca</author>
      <link>http://depth-first.com/articles/2007/05/30/restful-cheminformatics</link>
      <category>Meta</category>
      <category>rest</category>
      <category>rails</category>
      <category>interoperability</category>
    </item>
    <item>
      <title>Yet Another Free Chemistry Database: FooDB</title>
      <description>&lt;p&gt;&lt;a href="http://hmdb.med.ualberta.ca/foodb/"&gt;&lt;img src="http://depth-first.com/demo/20070306/foodb.png" align="right" border="0"&gt;&lt;/img&gt;&lt;/a&gt;&lt;a href="http://hmdb.med.ualberta.ca/foodb/"&gt;FooDB&lt;/a&gt; contains over 1,900 structures used as food additives in the United States. The data in FooDB are provided by the &lt;a href="http://vm.cfsan.fda.gov/~dms/eafus.html"&gt;FDA EAFUS site&lt;/a&gt;. You can search by CAS number, IUPAC name, or molecular formula. And in what is likely to be a trend to watch closely, FooDB is powered by the Web application framework &lt;a href="http://www.rubyonrails.org/"&gt;Ruby on Rails&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;FooDB is not alone: the number of &lt;a href="http://depth-first.com/articles/2007/01/24/thirty-two-free-chemistry-databases"&gt;free chemistry databases on the Web&lt;/a&gt; just keeps growing. How this trend ultimately plays out is anybody's guess.&lt;/p&gt;

&lt;p&gt;One thing is clear: the point is rapidly approaching at which database aggregation technologies will start to matter. No chemist wants to search through over thirty databases to find the information they need on a molecule. They want it delivered in one quick, intuitive, user-friendly package. Here's another example of something that's &lt;a href="http://depth-first.com/articles/tag/broken"&gt;broken&lt;/a&gt; in cheminformatics. Like all broken things, it's the source of great frustration for users and great opportunity for developers.&lt;/p&gt;</description>
      <pubDate>Tue, 06 Mar 2007 11:09:00 -0500</pubDate>
      <guid isPermaLink="false">urn:uuid:e506dc14-5608-42b8-97aa-8f040a3f527c</guid>
      <author>Rich Apodaca</author>
      <link>http://depth-first.com/articles/2007/03/06/yet-another-free-chemistry-database-foodb</link>
      <category>Databases</category>
      <category>broken</category>
      <category>foodb</category>
      <category>web</category>
      <category>fda</category>
      <category>rails</category>
      <category>ruby</category>
    </item>
    <item>
      <title>Google for Molecules with InChIMatic</title>
      <description>&lt;p&gt;&lt;center&gt;&lt;a href="http://inchimatic.com"&gt;&lt;img src="http://depth-first.com/demo/20070219/inchimatic_logo.png" border="0"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/center&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="http://inchimatic.com"&gt;InChIMatic&lt;/a&gt; is a simple Web application that uses Google to perform exact structure searches on the Web. After drawing your structure in the editor window, click the "InChI!" button to get a link. This link takes you to a Google query that displays matches for your molecule. You'll need both Java and JavaScript enabled in your browser to use InChIMatic.&lt;/p&gt;

&lt;h4&gt;The Technical Details&lt;/h4&gt;

&lt;p&gt;&lt;a href="http://iupac.org/dhtml_home.html"&gt;&lt;img src="http://depth-first.com/demo/20070126/iupac_logo.png" align="right" border="0"&gt;&lt;/img&gt;&lt;/a&gt;The technology at the heart of InChIMatic is the &lt;a href="http://www.iupac.org/inchi/"&gt;IUPAC International Chemical Identifier&lt;/a&gt; (InChI). An InChI is an alphanumeric string that uniquely identifies a molecular structure. By converting molecular structures to text, InChI makes it easy to use standard Internet tools to do exact structure searches.&lt;/p&gt;

&lt;p&gt;The earliest reference in the peer-reviewed literature to using Google for searching InChIs is contained in a &lt;a href="http://dx.doi.org/10.1039/b502828k"&gt;2005 paper&lt;/a&gt;. More recently, a service called &lt;a href="http://querychem.com"&gt;QueryChem&lt;/a&gt; has taken this idea one step further by using the &lt;a href="http://code.google.com/"&gt;Google API&lt;/a&gt; to perform substructure searches based on InChI.&lt;/p&gt;

&lt;p&gt;InChIMatic works differently. Unlike a raw Google search, InChIMatic builds a Google query link for you. Unlike QueryChem, InChIMatic doesn't use the Google API and so has none of its restrictions. This does result in a limitation: InChIMatic can only currently be used to for exact structure queries.&lt;/p&gt;

&lt;p&gt;&lt;a href="http://rubyonrails.org"&gt;&lt;img src="http://depth-first.com/files/rails_logo.png" align="right" border="0"&gt;&lt;/img&gt;&lt;/a&gt;The InChIMatic Web application has been discussed in greater technical detail in a &lt;a href="http://depth-first.com/articles/2006/12/15/anatomy-of-a-cheminformatics-web-application-inchimatic"&gt;previous article&lt;/a&gt;. The rapid Web application development framework &lt;a href="http://rubyonrails.com"&gt;Ruby on Rails&lt;/a&gt; made building InChIMatic a snap. InChIMatic is served by the Ruby application container &lt;a href="http://depth-first.com/articles/2007/02/05/mongrel-and-rails-its-just-not-fair"&gt;Mongrel&lt;/a&gt;, which is hosted on a Linux server running Apache. &lt;a href="http://depth-first.com/articles/tag/rino"&gt;Rino&lt;/a&gt; provided the Ruby interface to the &lt;a href="http://www.iupac.org/inchi/"&gt;IUPAC/NIST InChI toolkit&lt;/a&gt;. The 2-D structure editor is &lt;a href="http://www.molinspiration.com/jme/"&gt;Java Molecular Editor&lt;/a&gt; (JME) by Peter Ertl, which is used with his kind permission.&lt;/p&gt;

&lt;p&gt;&lt;a href="http://www.opensource.org/docs/definition.php"&gt;&lt;img src="http://www.opensource.org/trademarks/opensource/web/opensource-110x95.png" align="right" alt="Open Source (OSI) Logo" border="0" width="110" height="95"&gt;&lt;/img&gt;&lt;/a&gt;Aside from JME, all components of InChIMatic, from the operating system it runs on to the InChI system itself, are &lt;a href="http://opensource.org"&gt;Open Source&lt;/a&gt; software.&lt;/p&gt;

&lt;h4&gt;Using InChI to Raise the Visibility of Your Content&lt;/h4&gt;

&lt;p&gt;InChIMatic returns many Google results for common molecules. But less common, known molecules return no hits at all. Three factors are responsible: (1) Google doesn't index all InChIs on the Internet; (2) few content providers currently use InChI; and (3) there is no standard and convenient mechanism to embed InChIs into Web pages for indexing by Google.&lt;/p&gt;

&lt;p&gt;For these reasons, I consider InChI to be bleeding edge technology. Some will find it useful, most will not. Unfortunately, this state of affairs will persist until problems (1) and (3) are solved.&lt;/p&gt;

&lt;p&gt;Nevertheless, if you're technically adventurous, InChIMatic offers a relatively painless way to begin incorporating InChIs into your content and verifying that they get indexed. There's no software to download, install, or upgrade. Forget about operating system incompatibilities (hopefully!). Just point your Java-enabled browser to &lt;a href="http://inchimatic.com"&gt;inchimatic.com&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Although there's no standard method to encode InChIs in Web pages, some interesting ideas have been put forward. &lt;a href="http://chem-bla-ics.blogspot.com/"&gt;Egon Willighagen&lt;/a&gt; has proposed &lt;a href="http://chem-bla-ics.blogspot.com/2006/12/including-smiles-cml-and-inchi-in.html"&gt;a system&lt;/a&gt; based on &lt;a href="http://www.w3.org/TR/xhtml-rdfa-primer/"&gt;RDFa&lt;/a&gt;. Future iterations of InChIMatic may include support for generating scripts and/or markup for including InChIs into blogs and other online content.&lt;/p&gt;

&lt;h4&gt;Conclusions&lt;/h4&gt;

&lt;p&gt;InChI is a complex new technology in need of easy-to-use tools. InChIMatic is one such tool that makes it possible to perform exact structure queries using Google.&lt;/p&gt;

&lt;p&gt;One of the exciting things about Web applications is how quickly they can evolve. If in trying out InChIMatic you find something you'd like changed or added, please feel free to &lt;a href="mailto:r_apodaca@users.sf.net"&gt;write me&lt;/a&gt;.&lt;/p&gt;</description>
      <pubDate>Mon, 19 Feb 2007 10:18:00 -0500</pubDate>
      <guid isPermaLink="false">urn:uuid:eb531bca-c3b0-4f2d-8053-4272baa8bbfb</guid>
      <author>Rich Apodaca</author>
      <link>http://depth-first.com/articles/2007/02/19/google-for-molecules-with-inchimatic</link>
      <category>Tools</category>
      <category>inchimatic</category>
      <category>inchi</category>
      <category>google</category>
      <category>webapp</category>
      <category>opensource</category>
      <category>rails</category>
      <category>iupac</category>
    </item>
    <item>
      <title>Mongrel and Rails: It's Just not Fair</title>
      <description>&lt;p&gt;&lt;img src="http://depth-first.com/demo/20070205/mongrel.png" align="right"&gt;&lt;/img&gt;&lt;a href="http://www.rubyonrails.org/"&gt;Rails&lt;/a&gt; excels as a rapid Web development platform. Deployment of Rails applications, on the other hand, has until recently been a lot less rapid and a lot more complicated. A new Rails technology called &lt;a href="http://mongrel.rubyforge.org/index.html"&gt;Mongrel&lt;/a&gt; is now set to change all of that.&lt;/p&gt;

&lt;p&gt;Mongrel is a fast Rails application container. It can be used in standalone mode - exactly like &lt;a href="http://www.webrick.org/"&gt;WEBrick&lt;/a&gt;. For hassle-free scaling, your Rails application can also be run on multiple Mongrel instances (either located on the same server or on multiple servers) behind a load balancer such as &lt;a href="http://siag.nu/pen/"&gt;Pen&lt;/a&gt;, &lt;a href="http://www.inlab.de/balance.html"&gt;Balance&lt;/a&gt;, or &lt;a href="http://httpd.apache.org/"&gt;Apache 2.1+&lt;/a&gt;. Using Mongrel is very simple: it's packaged as a Ruby Gem and requires minimal configuration. Mongrel is also stable (Version 1.0 was just released), actively maintained (unlike &lt;a href="http://www.lighttpd.net/"&gt;lighttpd&lt;/a&gt;), and apparently quite secure.&lt;/p&gt;

&lt;p&gt;What does this have to do with cheminformatics? Quite a lot if you, like me, see the Web as the &lt;a href="http://depth-first.com/articles/2006/11/20/unchaining-chemistry-from-the-desktop"&gt;ideal platform&lt;/a&gt; for developing cheminformatics applications. Sure, a lot of technologies will need to be created first. But this is just another way of underscoring the big opportunities ahead. Future articles will discuss some of them.&lt;/p&gt;</description>
      <pubDate>Mon, 05 Feb 2007 14:51:00 -0500</pubDate>
      <guid isPermaLink="false">urn:uuid:ff3dcc1f-15b8-427d-8ed8-dae594ce78ec</guid>
      <author>Rich Apodaca</author>
      <link>http://depth-first.com/articles/2007/02/05/mongrel-and-rails-its-just-not-fair</link>
      <category>Tools</category>
      <category>mongrel</category>
      <category>rails</category>
      <category>ruby</category>
      <category>cheminformatics</category>
      <category>loadbalance</category>
    </item>
  </channel>
</rss>
