<?xml version="1.0" encoding="UTF-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
    <title>Regdel</title>
    <link rel="alternate" type="text/html" href="http://www.regdel.com/blog/" />
    <link rel="self" type="application/atom+xml" href="http://www.regdel.com/blog/atom.xml" />
    <id>tag:www.regdel.com,2008-09-16:/blog//290</id>
    <updated>2011-07-02T15:14:13Z</updated>
    <subtitle>Ruby Powered Bookkeeping Software - Demo</subtitle>
    <generator uri="http://www.sixapart.com/movabletype/">Movable Type 4.34-en</generator>

<entry>
    <title>Regdel is Alive!</title>
    <link rel="alternate" type="text/html" href="http://www.regdel.com/blog/2011/07/regdel-is-alive.html" />
    <id>tag:www.regdel.com,2011:/blog//290.22876</id>

    <published>2011-07-02T15:12:14Z</published>
    <updated>2011-07-02T15:14:13Z</updated>

    <summary>I&apos;m back working on Regdel again - this time on Rails 3!</summary>
    <author>
        <name>Albert</name>
        
    </author>
    
        <category term="Regdel Development" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="activerecord" label="activerecord" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="en" xml:base="http://www.regdel.com/blog/">
        <![CDATA[<p>I&#8217;m back working on Regdel again - this time on Rails 3!</p>

<p>For the ORM I&#8217;m planning on using ActiveRecord, but I&#8217;m not crazy about how it implements single table inheritance (STI), but I am very pleased with how it chains scopes together.</p>
]]>
        

    </content>
</entry>

<entry>
    <title>Ruby 1.8 and 1.9; Ruby Class Variables</title>
    <link rel="alternate" type="text/html" href="http://www.regdel.com/blog/2010/01/ruby-18-and-19-ruby-class-variables.html" />
    <id>tag:www.regdel.com,2010:/blog//290.20164</id>

    <published>2010-01-28T14:20:55Z</published>
    <updated>2010-01-28T14:33:13Z</updated>

    <summary>I&apos;m using Ruby 1.8 to develop Regdel with and Ruby 1.9 to demonstrate Ruby with. Its been an interesting experience and I usually feel that supporting varied runtime environments results in higher quality code. The most recent hurdle involved Ruby...</summary>
    <author>
        <name>Albert</name>
        
    </author>
    
        <category term="Regdel Development" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="18" label="1.8" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="19" label="1.9" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="accessors" label="accessors" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="classvariables" label="class variables" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="ruby" label="ruby" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="en" xml:base="http://www.regdel.com/blog/">
        <![CDATA[<p>I'm using Ruby 1.8 to develop Regdel with and Ruby 1.9 to demonstrate Ruby with.</p>

<p>Its been an interesting experience and I usually feel that supporting varied runtime environments results in higher quality code.</p>

<p>The most recent hurdle involved Ruby class variables. I'm not sure why, but Ruby 1.9 did not like how I was using class global variables. You know, the ones like:</p>

<pre class="sh_ruby">
@@something = "else"
</pre>

<p>Instead, I've switched to using attr_accessors, like this:</p>

<pre class="sh_ruby">
this.something = "else"
</pre>

<p>Thankfully, both Ruby 1.8 and 1.9 are cool with attr_accessors.</p>
]]>
        

    </content>
</entry>

<entry>
    <title>Thinking About Git</title>
    <link rel="alternate" type="text/html" href="http://www.regdel.com/blog/2010/01/thinking-about-git.html" />
    <id>tag:www.regdel.com,2010:/blog//290.20147</id>

    <published>2010-01-27T04:19:28Z</published>
    <updated>2010-01-27T04:21:42Z</updated>

    <summary>After experimenting with the alternative database model I posted about recently, I&apos;ve thought more about involving git and the ledger-cli file format. I like this idea, and took a step in this direction today simply by adding grit as a...</summary>
    <author>
        <name>Albert</name>
        
    </author>
    
        <category term="Regdel Development" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="database" label="database" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="git" label="git" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="ledgercli" label="ledger-cli" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="en" xml:base="http://www.regdel.com/blog/">
        <![CDATA[<p>After experimenting with the <a href="http://www.regdel.com/blog/2010/01/an-alternate-db-model.html">alternative database model</a> I posted about recently, I've thought more about involving git and the ledger-cli file format.</p>

<p>I like this idea, and took a step in this direction today simply by adding grit as a requirement. It is only being used to display some information about the repository, but its a start!</p>
]]>
        

    </content>
</entry>

<entry>
    <title>An Alternate DB Model</title>
    <link rel="alternate" type="text/html" href="http://www.regdel.com/blog/2010/01/an-alternate-db-model.html" />
    <id>tag:www.regdel.com,2010:/blog//290.20019</id>

    <published>2010-01-14T04:43:59Z</published>
    <updated>2010-01-14T04:52:12Z</updated>

    <summary>I&apos;m experimenting with a new data model, inspired by ledger-cli and datamapper single table inheritance. Take a look: # Xact = transaction class Xact include DataMapper::Resource property :id,Serial property :posted_on,Integer property :memorandum,String has n, :assets has n, :liabilities has n,...</summary>
    <author>
        <name>Albert</name>
        
    </author>
    
        <category term="Regdel Data Model" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="datamapper" label="datamapper" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="ledgercli" label="ledger-cli" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="en" xml:base="http://www.regdel.com/blog/">
        <![CDATA[<p>I'm experimenting with a new data model, inspired by ledger-cli and datamapper single table inheritance.</p>

<p>Take a look:</p>

<pre class="sh_ruby">
# Xact = transaction
class Xact
  include DataMapper::Resource

  property :id,Serial
  property :posted_on,Integer
  property :memorandum,String
  has n, :assets
  has n, :liabilities
  has n, :equities
  has n, :expenses
  has n, :revenues
  has n, :banks

end


# Postings are the individual account changes
class Posting
  include DataMapper::Resource

  property :id,Serial
  property :type,Discriminator
  property :xact_id,Integer
  property :commodity,String
  property :quantity,BigDecimal, :scale => 2, :precision => 5

  belongs_to :xact
end

# Single table inheritance for every account
class Asset < Posting; end
class Liability < Posting; end
class Equity < Posting; end
class Revenue < Posting; end
class Expense < Posting; end
class Bank < Asset; end
</pre>

<p>The idea here is that each account is an object. The code above has the account types and then a bank account. This is obviously pre-alpha code, but the idea is there.</p>

<p>Its a big departure away from the way I've traditionally modeled accounting databases, so why bother?</p>

<p>I like this model because its super simple, and because it leverages some quality work that's already been done with datamapper, and it supports the sort of quick, instant reporting that is core to ledger-cli, especially the balance feature.</p>

<p>I'm interested in aligning Regdel with ledger to add to the traction its established. Open source accounting and bookkeeping software could use a little unity in my humble opinion. For awhile I felt that the single plain text file was a serious limitation, but those limitations might be alleviated with the combination of a SQLite and git, but that's a topic for another day.</p>

<p>Feedback about this new data model is much appreciated!</p>
]]>
        

    </content>
</entry>

<entry>
    <title>Planning for Regdel Beta</title>
    <link rel="alternate" type="text/html" href="http://www.regdel.com/blog/2010/01/planning-for-regdel-beta.html" />
    <id>tag:www.regdel.com,2010:/blog//290.19976</id>

    <published>2010-01-10T09:23:28Z</published>
    <updated>2010-01-10T09:49:33Z</updated>

    <summary>Quick Review I&apos;m very pleased with how the alpha version of Regdel has developed. I didn&apos;t have a concrete plan as I was pretty much dabbling in, experimenting with, and learning about the Ruby and Rack-based Sinatra web development framework....</summary>
    <author>
        <name>Albert</name>
        
    </author>
    
        <category term="Regdel Development" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="planning" label="planning" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="regdel" label="regdel" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="en" xml:base="http://www.regdel.com/blog/">
        <![CDATA[<p><strong>Quick Review</strong> <br />
I'm very pleased with how the alpha version of Regdel has developed. I didn't have a concrete plan as I was pretty much dabbling in, experimenting with, and learning about the Ruby and Rack-based Sinatra web development framework.</p>

<p>In the process, I've come to realize how much I like developing with Ruby, and some Ruby libraries are incredibly helpful. Concurrently, I've been focusing on managing my time better and trying to get more done in less time by automating repetitive tasks, planning my work, and setting goals.</p>

<p>For instance, I've started to use Rake for organizing tasks, more specifically running tests, generating documentation, and automating the deployment of redgel to the demo.</p>

<p>Now I need to start doing some planning, but I'm a little hesitant. I get frustrated with plans because they often don't happen as I expected. If I don't update my written plans, events diverge and the plan becomes totally out-of-date. Frustrations aside, I recognize the value of planning, so I'll start with a broad stroke.</p>

<p><strong>Planning the Regdel Plans</strong> <br />
I'm not going to jump directly into the plans just yet! I want to put a little planning into how I will approach the process. I'd like to have a simple plan reference so that it will be easy to keep updated, but where should it be?</p>

<p>Options:</p>

<ul>
<li>In the repository, alongside the README.md and CHANGELOG.</li>
<li>A page in this blog.</li>
<li>Github.com wiki</li>
</ul>

<p>I like the idea of keeping it in a plain text file in the repository, but then again I'm concerned it won't get enough visibility. I'm experimenting with the automation of publishing documents like these that occasionally and irregularly update. If that works well, maybe keeping Regdel plans in the repository is the right choice.</p>
]]>
        

    </content>
</entry>

<entry>
    <title>Ledger-CLI, Git, and Relational Databases</title>
    <link rel="alternate" type="text/html" href="http://www.regdel.com/blog/2010/01/ledger-cli-git-and-relational-databases.html" />
    <id>tag:www.regdel.com,2010:/blog//290.19959</id>

    <published>2010-01-07T06:11:33Z</published>
    <updated>2010-01-07T06:43:02Z</updated>

    <summary>While working on Regdel, I&apos;ve again come across ledger-cli, a C++ software command line application which uses a text file for bookkeeping information. Ledger-cli is primarily a reporting system, i.e. it is not used for data entry, data manipulation, or...</summary>
    <author>
        <name>Albert</name>
        
    </author>
    
        <category term="Regdel Development" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="git" label="git" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="gnucash" label="gnucash" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="ledger" label="ledger" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="rdbms" label="rdbms" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="en" xml:base="http://www.regdel.com/blog/">
        <![CDATA[<p>While working on Regdel, I've again come across ledger-cli, a C++ software command line application which uses a text file for bookkeeping information. Ledger-cli is primarily a reporting system, i.e. it is not used for data entry, data manipulation, or similar. This was done on purpose, and in many cases that's a good thing.</p>

<p>I've dabbled with ledger in the past, but this time I took a serious look at it, and I'm actually starting to use it to some degree. Not for my main bookkeeping database, but when I want to quickly make a note of a transaction. I simply jot down the transaction into a text based ledger file. I'd considered doing this before but was concerned about managing the file(s), and instead added a feature to PBooks for entering simple notes. Nowadays, however, thanks to git I'm feeling a lot more comfortable with basic file management.</p>

<p>The significance of all this to me is that ledger-cli and its use of static file formats make it easy for a single person to quickly enter a couple of transactions without fear of being able to summarize the contents. The ledger-cli parser and memory model of the data can output the entire dataset as XML, which really liberates the entire kit-and-caboodle. That is really awesome when you think about it, and its importance should not be underestimated.</p>

<p>While ledger-cli can easily handle the processing of hundreds of thousands (millions?) of entries, I loathe to think of the work involved in the data entry. The ledger file format attempts to support faster entry of data with the use of xacts, but I can't comment on those as I've actually never tried using them. With PBooks, I developed a method of importing data from CSV files, but before I get into that, let me explain a tiny issue I have with the name and terminology of ledger-cli.</p>

<p>I find it ironic that ledger calls itself ledger, because in bookkeeping terms, I'd consider the file its centered on a journal. In my experience, a journal is the point of initial data entry, and journal entries contain multiple accounts. Conversely, ledgers are account focused, with references back to the original journal entry.</p>

<p>Not a big deal, but relevant. With PBooks, I wrestled with workflow for awhile because traditionally, data is entered into the journal as transactions take place, but in our technological world, I found it easier to leverage the CSV formatted data  exports of my online bank accounts - ledger data.</p>

<p>The solution I came up with was to import CSV account data into the ledger as "unmatched", and then give the user the ability to match each transaction to one or more corresponding account(s). It works well for me in practice, and it was possible to created shortcuts using the transaction memos. I consider that workflow solution to be similar in some ways to how ledger-cli uses xact statements.</p>

<p>While the philosophy of ledger is truly solid, reliable, and even elegant (and its starting to really build momentum and traction in the open source world), I'm not sure how realistic it is for the majority of small businesses to use for their bookkeeping and accounting purposes. True, its possible to use something like GnuCash to manage a ledger file in XML, but I don't think that makes much of a difference for reasons I won't get into right now.</p>

<p>Instead, let me write about Regdel. I've been considering a lot of different ideas but haven't come up with a clear direction. I'm thinking about: </p>

<ul>
<li>graphical user interfaces</li>
<li>data storage</li>
<li>access controls</li>
<li>work flow</li>
<li>reporting</li>
<li>data management</li>
<li>automation</li>
<li>revisions</li>
<li>backups</li>
</ul>

<p>More to come...</p>
]]>
        

    </content>
</entry>

<entry>
    <title>Alpha Demo</title>
    <link rel="alternate" type="text/html" href="http://www.regdel.com/blog/2009/12/alpha-demo.html" />
    <id>tag:www.regdel.com,2009:/blog//290.19921</id>

    <published>2009-12-28T01:37:39Z</published>
    <updated>2009-12-28T01:38:50Z</updated>

    <summary>I&apos;ve deployed an alpha demo of Regdel: Redgel Demo There are several things broken at the moment, but its nice to have something public!...</summary>
    <author>
        <name>Albert</name>
        
    </author>
    
        <category term="Regdel Development" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="alpha" label="alpha" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="demo" label="demo" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="en" xml:base="http://www.regdel.com/blog/">
        <![CDATA[<p>I've deployed an alpha demo of Regdel:</p>

<p><a href="http://www.regdel.com/demo/regdel/">Redgel Demo</a></p>

<p>There are several things broken at the moment, but its nice to have something public!</p>
]]>
        

    </content>
</entry>

<entry>
    <title>Regdel on Ruby 1.9.1</title>
    <link rel="alternate" type="text/html" href="http://www.regdel.com/blog/2009/12/regdel-on-ruby-191.html" />
    <id>tag:www.regdel.com,2009:/blog//290.19919</id>

    <published>2009-12-27T23:43:00Z</published>
    <updated>2009-12-27T23:44:52Z</updated>

    <summary>I&apos;m pleased to report that Regdel runs on Ruby 1.9.1! The hardest part was the getting ruby-xslt to compile, but thanks to Radar, it was possible. :-)...</summary>
    <author>
        <name>Albert</name>
        
    </author>
    
        <category term="Regdel Development" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="19" label="1.9" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="regdel" label="regdel" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="ruby" label="ruby" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="xslt" label="xslt" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="en" xml:base="http://www.regdel.com/blog/">
        <![CDATA[<p>I'm pleased to report that Regdel runs on Ruby 1.9.1!</p>

<p>The hardest part was the getting ruby-xslt to compile, but thanks to <a href="http://github.com/radar/ruby-xslt">Radar</a>, it was possible. :-)</p>
]]>
        

    </content>
</entry>

<entry>
    <title>Single Table Inheritance for Accounts?</title>
    <link rel="alternate" type="text/html" href="http://www.regdel.com/blog/2009/12/single-table-inheritance-for-accounts.html" />
    <id>tag:www.regdel.com,2009:/blog//290.19904</id>

    <published>2009-12-24T05:53:08Z</published>
    <updated>2009-12-24T06:04:18Z</updated>

    <summary><![CDATA[Currently Regdel takes advantage of DataMapper's ability to extend object classes with "single table inheritance". I've considered also using it for Accounts, something like this: class Asset &lt; Account; end class Liability &lt; Account; end class Equity &lt; Account; end...]]></summary>
    <author>
        <name>Albert</name>
        
    </author>
    
        <category term="Regdel Data Model" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="accounts" label="accounts" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="amounts" label="amounts" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="assets" label="assets" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="datamapper" label="datamapper" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="regdel" label="regdel" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="en" xml:base="http://www.regdel.com/blog/">
        <![CDATA[<p>Currently Regdel takes advantage of DataMapper's ability to extend object classes with "<a href="http://datamapper.org/docs/misc.html">single table inheritance</a>".</p>

<p>I've considered also using it for Accounts, something like this:</p>

<pre class="sh_ruby">
class Asset &lt; Account; end
class Liability &lt; Account; end
class Equity &lt; Account; end
class Expense &lt; Account; end
class Revenue &lt; Account; end
</pre>

<p>And even further:</p>

<pre class="sh_ruby">
class BankAccount &lt; Asset; end
</pre>

<p>I'm not sure its the right way to go though. There is an incredibly possibility here though: with deep inheritance, account groups would be built defined in the class  "family tree", and generating reports based upon account type would be super easy.</p>

<p>The limitation would be, as the name suggests, single inheritance. With <a href="http://www.pbooks.org/">PBooks</a>, Account Groups can have multiple parents, though accounts can only belong to a single account group. Its an interesting implementation. Is it overly flexible? Maybe... </p>
]]>
        

    </content>
</entry>

<entry>
    <title>Regdel on Github</title>
    <link rel="alternate" type="text/html" href="http://www.regdel.com/blog/2009/12/regdel-on-github.html" />
    <id>tag:www.regdel.com,2009:/blog//290.19900</id>

    <published>2009-12-23T23:38:49Z</published>
    <updated>2009-12-24T00:41:46Z</updated>

    <summary>I&apos;ve decided to move the Regdel code base to Github, this will make it easier to collaborate with other developers. Fork it up, y&apos;all! http://github.com/docunext/regdel Oh yes, its now officially Affero GPL licensed, too!...</summary>
    <author>
        <name>Albert</name>
        
    </author>
    
        <category term="Regdel Development" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="github" label="github" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="license" label="license" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="regdel" label="regdel" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="en" xml:base="http://www.regdel.com/blog/">
        <![CDATA[<p>I've decided to move the Regdel code base to Github, this will make it easier to collaborate with other developers.</p>

<p>Fork it up, y'all!</p>

<p><a href="http://github.com/docunext/regdel">http://github.com/docunext/regdel</a></p>

<p>Oh yes, its now officially Affero GPL licensed, too!</p>
]]>
        

    </content>
</entry>

<entry>
    <title>Reaching Out, Again</title>
    <link rel="alternate" type="text/html" href="http://www.regdel.com/blog/2009/12/reaching-out-again.html" />
    <id>tag:www.regdel.com,2009:/blog//290.19888</id>

    <published>2009-12-22T16:26:38Z</published>
    <updated>2009-12-22T16:35:36Z</updated>

    <summary>I have previously tried to collaborate with others in the open source community, see my post at Docunext: So Much for Reaching Out Its been awhile, and I&apos;m trying to take advice from Russell to not be disheartened by that...</summary>
    <author>
        <name>Albert</name>
        
    </author>
    
        <category term="Regdel Development" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="collaboration" label="collaboration" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="finance" label="finance" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="github" label="github" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="ruby" label="ruby" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="en" xml:base="http://www.regdel.com/blog/">
        <![CDATA[<p>I have previously tried to collaborate with others in the open source community, see my post at Docunext:</p>

<p><a href="http://www.docunext.com/blog/2008/05/so-much-for-reaching-out.html">So Much for Reaching Out</a></p>

<p>Its been awhile, and I'm trying to take advice from Russell to not be disheartened by that specific response. Perhaps that is the reason I chose <a href="http://www.informedlicensing.com/blog/2009/12/pfsense-gitorious-installation.html">to blog on opinion I had about the use of Gitorious on the pfSense website instead of contact the pfSense folks directly</a>, who knows? Needless to say, the pfSense folks weren't too happy about my blogging without contacting them first, but I'm not clear about their final statement claiming that I was incorrect.</p>

<p>All that is besides the point, however. I'm posting this because I'm starting to reach out via Github to other Ruby finance developers. Here's a couple of messages I've sent:</p>

<blockquote>
I read the Bookkeeper Readme. I agree about Quickbooks and share the goal of writing bookkeeping software for my company to use. However, like many open source developers, I also have an idealistic hope that my contribution to the open source software movement will help save the world. :-)
<br/><br/>
There are some existing notable open source bookkeeping projects:
<br/><br/>
Ledger - C++, very much alive and supported (CL and Python ports exist), mainly command line
GnuCash - C, desktop, could be compared to Quickbooks / Quicken
SQL-Ledger / LedgerSMB - Perl, I found it awkward
Phreebooks - PHP, I like it, but not the software architecture
PBooks - my project, PHP, XSL, XML - too difficult for people to install
Also notable is the XBRL (extensible business reporting language) project. Its more than most companies need, but I found some of the core components useful to build off of.
<br/><br/>
I got Bookkeeper up and running over the weekend, the main stumbling blocks being my inexperience with Rails. Are you totally committed to Rails? I'm not crazy about Rails due to the use of Prototype and Erb, as I'm hardcore into jQuery and XSL. I'm also becoming a DataMapper fan.
<br/><br/>
Thoughts?
<br/><br/>
Albert
</blockquote>

<p><br/><br/></p>

<blockquote>
XSL has a steep learning curve, and a lot of people don't like it, but for those of us who embrace it, its pure wonderment. Are you OK with XML? I think its great, but also like YAML and JSON. Some people can't stand XML, but I'm not sure why.
<br/><br/>
Merb and Rails3 both look good, but I'm very keen on Sinatra as its structure is similar to the sitemaps I've used with Nexista (a PHP/XML/XSL/SQL framework) for years.
<br/><br/>
Regarding bookkeeping, I recently ran into a problem with the Float object that was causing some weird rounding:
<br/><br/>
http://www.ruby.code-experiments.com/blog/2009/11/ruby-casting-strangeness.html
<br/><br/>
While researching it, I found a suggestion to store money amounts as US cents, which would preclude floats altogether. What do you think about that? The Money gem does the same thing. So far its working well for Regdel.
<br/><br/>
I'll take a look at your balance sheet and income statement and let you know if I have any suggestions. Why is the CSV output a priority? Its a useful feature to support a wide range of data transfer, but if you are aiming for something more specific, I might have some suggestions. For example, in PBooks I created a module for creating an OpenOffice spreadsheet download. It was pretty easy, but the implementation is PBooks / Nexista specific.
<br/><br/>
I will also check out the Invoicing gem, sounds cool.
</blockquote>

<p><br/><br/></p>

<blockquote>
Hello,
<br/><br/>
Just found Oaccounts via the invoicing Gem suggested by snl (Hakan Şenol Ensari), author of bookkeeper. I've been working on open source bookkeeping systems for about five years, mostly on PBooks, now more recently with Regdel and EvenBooks.
<br/><br/>
I'm using XBRL as a guiding base, and am excited to find UBL. Looks like XBRL is more about reporting, and UBL is more about processing.
<br/><br/>
If you haven't seen XBRL, check it out.
<br/><br/>
Have a good one!
<br/><br/>
Albert
</blockquote>

<p><br/><br/>
I'm curious to see if there is any difference in reaching out via Github. No doubt its easier to do!</p>
]]>
        

    </content>
</entry>

<entry>
    <title>Notable Characteristics</title>
    <link rel="alternate" type="text/html" href="http://www.regdel.com/blog/2009/12/notable-characteristics.html" />
    <id>tag:www.regdel.com,2009:/blog//290.19878</id>

    <published>2009-12-20T08:03:05Z</published>
    <updated>2009-12-20T08:47:55Z</updated>

    <summary>Regdel has the following characteristics which I find notable, from both a bookkeeping and a software development perspective: Ledger can be automatically rebuilt using data from the general journal. It uses XSL pipelines to transform data for presentation to the...</summary>
    <author>
        <name>Albert</name>
        
    </author>
    
        <category term="Regdel Development" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="journal" label="journal" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="ledger" label="ledger" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="xsl" label="xsl" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="en" xml:base="http://www.regdel.com/blog/">
        <![CDATA[<p>Regdel has the following characteristics which I find notable, from both a bookkeeping and a software development perspective:</p>

<ul>
<li>Ledger can be automatically rebuilt using data from the general journal.</li>
<li>It uses XSL pipelines to transform data for presentation to the user, as well as JSON to update forms client-side.</li>
<li>It stores data in an RDBMS, but also uses cached XML / XHTML files to improve performance.</li>
</ul>
]]>
        

    </content>
</entry>

<entry>
    <title>Emerging Process Model</title>
    <link rel="alternate" type="text/html" href="http://www.regdel.com/blog/2009/12/emerging-process-model.html" />
    <id>tag:www.regdel.com,2009:/blog//290.19789</id>

    <published>2009-12-12T07:37:23Z</published>
    <updated>2009-12-12T07:41:19Z</updated>

    <summary>As I&apos;m refactoring Regdel, a common processing model is emerging: DataMapper &#8594; Ruby Builder &#8594; Sinatra-XSLView &#8594; Rack XSLView So far its working quite well, and I really appreciate how simple it keeps things!...</summary>
    <author>
        <name>Albert</name>
        
    </author>
    
        <category term="Regdel Development" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="builder" label="builder" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="rack" label="rack" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="sinatra" label="sinatra" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="xsl" label="xsl" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="en" xml:base="http://www.regdel.com/blog/">
        <![CDATA[<p>As I'm refactoring Regdel, a common processing model is emerging:</p>

<p>DataMapper &#8594; Ruby Builder &#8594; Sinatra-XSLView &#8594; Rack XSLView</p>

<p>So far its working quite well, and I really appreciate how simple it keeps things!</p>
]]>
        

    </content>
</entry>

<entry>
    <title>Regdel Screenshot</title>
    <link rel="alternate" type="text/html" href="http://www.regdel.com/blog/2009/12/regdel-screenshot.html" />
    <id>tag:www.regdel.com,2009:/blog//290.19788</id>

    <published>2009-12-12T06:26:54Z</published>
    <updated>2009-12-12T06:28:29Z</updated>

    <summary>Thanks to the very cool yui-app-theme project, Regdel now has a pretty sweet user interface: This is a screenshot of the journal entry form....</summary>
    <author>
        <name>Albert</name>
        
    </author>
    
        <category term="Screenshots" scheme="http://www.sixapart.com/ns/types#category" />
    
        <category term="User Interface" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="screenshots" label="screenshots" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="userinterface" label="user interface" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="en" xml:base="http://www.regdel.com/blog/">
        <![CDATA[<p>Thanks to the very cool yui-app-theme project, Regdel now has a pretty sweet user interface:</p>

<p><span class="mt-enclosure mt-enclosure-image" style="display: inline;"> <a href="http://www-01.evenserver.com/s/mt/s/img/2009/q3/20091212_regdel_screenshot.png" title="Regdel Screenshot" class="thickbox"> <img alt="Regdel Screenshot" src="http://www.regdel.com/blog/s/img/2009/12/20091212_regdel_screenshot-thumb-290x172-2781.png" width="290" height="172" class="mt-image-none" /> </a> </span></p>

<p>This is a screenshot of the journal entry form.</p>
]]>
        

    </content>
</entry>

<entry>
    <title>Progress Report</title>
    <link rel="alternate" type="text/html" href="http://www.regdel.com/blog/2009/12/progress-report.html" />
    <id>tag:www.regdel.com,2009:/blog//290.19756</id>

    <published>2009-12-08T03:36:10Z</published>
    <updated>2009-12-08T03:56:20Z</updated>

    <summary>Writing Regdel has been a terrific experience so far. Its taught me a lot about programming, and its again reminded me of how programming in Ruby can be fun. Today I spent a lot of time getting into the nitty...</summary>
    <author>
        <name>Albert</name>
        
    </author>
    
        <category term="Regdel Development" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="regder" label="regder" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="en" xml:base="http://www.regdel.com/blog/">
        <![CDATA[<p>Writing Regdel has been a terrific experience so far. Its taught me a lot about programming, and its again reminded me of how programming in Ruby can be <em>fun</em>.</p>

<p>Today I spent a lot of time getting into the nitty gritty of datamapper, only to realize after several hours that I was using an outdated version. Frustrating to say the least, but I'm not letting it bother me much.</p>

<p>That's the way software development often goes - you try something new to take advantage of time saving techniques, only to waste several hours because of the learning curve involved with trying something new.</p>

<p>Regardless, developing an accounting and bookkeeping system with Ruby just feels incredibly right, similar to how I feel about developing web applications with XSL.</p>

<p>Double-entry bookkeeping is inherently rich with relationships between accounts, entries, dates, and references, so its a natural fit for Ruby, which gracefully handles objects, and for DataMapper, which handles relationships equally well.</p>

<p>I'm feel like wrestling with javascript more than I need to, though. jQuery is my javascript language of choice, and in many ways its too convenient. I'm not sure if I want to work on having client-side object manipulation. I don't think I do, and while that makes the task easier in some respects, the downside is that it feels less elegant.</p>

<p>There is probably a workaround for the elegance factor! :-)</p>

<p>As for the progress report? The software currently has a basic working framework, with entries, credits, debits, accounts, and a ledger that can be automatically built from the journal.</p>

<p>The to-do list is immense, of course. Before continuing work on it, I plan to refactor the current codebase and make sure the upgrade to the datamapper 0.10 is complete. I'm interested in reviewing what else dm has to offer. Its become a much larger part of Regdel than I originally expected. </p>
]]>
        

    </content>
</entry>

</feed>

