<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
	<channel>
		<title>Mentalized</title>
		<link>http://mentalized.net/journal/</link>
		<description>The online journal of Jakob Skjerning, a freelance web application developer</description>
		<language>en-us</language>		
		<copyright>Copyright 2012, Jakob Skjerning</copyright>
		<lastBuildDate>Mon, 02 Jan 2012 09:52:24 +0100</lastBuildDate>
		<generator>Movable Type (http://www.movabletype.org/?v=5.04)</generator>
		<ttl>600</ttl>		
		
		
		<item>
			<title>Ruby SSL certificate verification errors</title>
			<description><![CDATA[<p>On a client project, we had recently installed <a href="https://github.com/technicalpickles/capistrano-campfire">capistrano-campfire</a> to get notifications in our <a href="http://campfirenow.com/">Campfire</a> chatroom whenever a deployment takes place.</p>

<p>Unfortunately I kept getting</p>

<pre><code>SSL_connect returned=1 errno=0 state=SSLv3 read server certificate B: certificate verify failed (OpenSSL::SSL::SSLError)
</code></pre>

<p>when I tried deploying. There&#8217;s nothing quite like starting the year with SSL issues&#8230;</p>

<p>According to <a href="http://martinottenwaelter.fr/2010/12/ruby19-and-the-ssl-error/">this article</a> the problem</p>

<blockquote>
  <p>&#8230; comes from the fact that the new Ruby 1.9 installation doesn&#8217;t find the certification authority certificates (CA Certs) used to verify the authenticity of secured web servers.</p>
</blockquote>

<p>I my case, I was using Ruby 1.8 (well, <a href="http://www.rubyenterpriseedition.com/">REE</a>) on OS X Snow Leopard, but the problem - and solution - was the same nevertheless.</p>
]]><![CDATA[<h2>The cURL way</h2>

<p>The super easy solution is found on <a href="http://stackoverflow.com/questions/5711190/how-to-get-rid-of-opensslsslsslerror">Stack Overflow</a> (as always):</p>

<pre><code>sudo curl http://curl.haxx.se/ca/cacert.pem -o /opt/local/etc/openssl/cert.pem
</code></pre>

<p>This installs <a href="http://curl.haxx.se/ca/">Mozillas CS Root Certificates Bundle</a> at /opt/local/etc/openssl/cert.pem, where the certificates can be found by Rubys HTTP library without any extra configuration.</p>

<h2>Using MacPorts</h2>

<p>As an alternative to the above, you can use MacPorts to get the bundles (as mentioned in <a href="http://martinottenwaelter.fr/2010/12/ruby19-and-the-ssl-error/">this article</a>):</p>

<pre><code>$ sudo port install curl-ca-bundle
</code></pre>

<p>This installs the certificates bundle in /opt/local/etc/openssl/cert.pem.</p>

<p>You can then configure Ruby to use them:</p>

<pre><code>https.ca_file = '/opt/local/share/curl/curl-ca-bundle.crt'
</code></pre>

<p>or if that isn&#8217;t feasible, simply link them up from the default location:</p>

<pre><code>$ sudo ln -s /opt/local/share/curl/curl-ca-bundle.crt /opt/local/etc/openssl/cert.pem
</code></pre>
]]></description>
			<link>http://mentalized.net/journal/2012/01/02/ruby_ssl_certificate_verification_errors/</link>
			<guid isPermaLink="false">2131@http://mentalized.net/journal/</guid>
			<comments>http://mentalized.net/journal/2012/01/02/ruby_ssl_certificate_verification_errors/#comments</comments>
			<pubDate>Mon, 02 Jan 2012 09:52:24 +0100</pubDate>
			<category>Programming</category>
		</item>
		
		<item>
			<title>Dear Open Source Software</title>
			<description><![CDATA[<p>Dear Open Source Software</p>

<p>I don&#8217;t think I have ever written you before, but there is something I wanted to get off my chest.</p>

<p>I just wanted to let you know, that you rock! Just the other day, you saved my customer a bunch of money - and made me look like a hero.</p>

<p>Okay, I realize you only did so because I had done part of the work already. And I am probably giving you credit for something you didn&#8217;t really do, but thanks to you a team of strangers had implemented features I needed and given them back to me.</p>

<p>Also, the way you enable people I have never heard about to take something I have created and transform into something they can use, is mind boggling.</p>

<p>Thanks.</p>

<p>Yours, Jakob</p>

<p>PS: I know, I know&#8230; I don&#8217;t contribute often enough, and I will some day, I promise. Soon.</p>
]]>
</description>
			<link>http://mentalized.net/journal/2011/12/18/dear_open_source_software/</link>
			<guid isPermaLink="false">2127@http://mentalized.net/journal/</guid>
			<comments>http://mentalized.net/journal/2011/12/18/dear_open_source_software/#comments</comments>
			<pubDate>Sun, 18 Dec 2011 15:56:46 +0100</pubDate>
			<category>Software</category>
		</item>
		
		<item>
			<title>Challenge the deadline</title>
			<description><![CDATA[<p>There are basically two kinds of deadlines: Real, and Arbitrary.</p>

<p>Real deadlines are those necessitated by some external, unchangeable event. For example legislation, the company running out of money, the CEO having to get up in front of the world press and announce the product, or a marketing campaign kicking off.</p>
]]><![CDATA[<h2>Arbitrary deadlines</h2>

<p>And then there are the much more common deadlines; The Arbitrary Deadline. They are recognizable by their basis in nothing at all - other than a decision that it would be nice to have X done by this or that date.</p>

<p>They are often employed in a naive attempt to speed up production. The thinking seems to be &#8220;give the wizkids a tight deadline, and they&#8217;ll really dig in and program the heck out of this&#8221;.</p>

<h2>Deadlines don&#8217;t change anything</h2>

<p>But here&#8217;s the thing about deadlines; they don&#8217;t make things any easier or faster to implement. No matter the deadline, you still have the same amount of work to do.</p>

<p>If your deadline is fixed, something else has to give; either quality or number of features. The Project Triangle sayeth so. </p>

<p>Give up on features and the product might not be what you imagined. Give up quality and <a href="http://mentalized.net/journal/2010/10/04/avoiding_the_big_rewrite/">you&#8217;ll pay for it later</a> - with interests.</p>

<p>I have yet to meet an arbitrary deadline that couldn&#8217;t be budged in the face of realities. Challenge the deadline before you lose your sleep over it.</p>
]]></description>
			<link>http://mentalized.net/journal/2011/11/30/challenge_the_deadline/</link>
			<guid isPermaLink="false">2129@http://mentalized.net/journal/</guid>
			<comments>http://mentalized.net/journal/2011/11/30/challenge_the_deadline/#comments</comments>
			<pubDate>Wed, 30 Nov 2011 09:06:49 +0100</pubDate>
			<category>Business</category>
		</item>
		
		<item>
			<title>How to export CSV data from PostgreSQL</title>
			<description><![CDATA[<p>Just because I can never remember how to do this:</p>

<pre><code class="shell">psql my_database -c &quot;COPY (SELECT stuff FROM my_table) TO STDOUT CSV&quot; &gt; my_file.csv</code></pre>

<p>Works in at least PostgreSQL 8.4.</p>]]></description>
			<link>http://mentalized.net/journal/2011/11/07/how_to_export_csv_data_from_postgresql/</link>
			<guid isPermaLink="false">2128@http://mentalized.net/journal/</guid>
			<comments>http://mentalized.net/journal/2011/11/07/how_to_export_csv_data_from_postgresql/#comments</comments>
			<pubDate>Mon, 07 Nov 2011 10:53:52 +0100</pubDate>
			<category>Technology</category>
		</item>
		
		<item>
			<title>Routing requests to local development environment</title>
			<description><![CDATA[<p>Some third party systems needs to send requests to your web application in order to work.</p>

<p><a href="http://facebook.com">Facebook</a> fetches the actual application, <a href="http://chargify.com/">Chargify</a> notifies you of subscription changes, payment gateways tell you the transaction has been accepted.</p>

<p>That&#8217;s fine in production where you have a public facing webserver running, but when you&#8217;re developing locally you have to jump through a few hoops.</p>
]]><![CDATA[<h2>Reverse SSH tunnel</h2>

<p>The common approach is to setup a <a href="http://www.howtoforge.com/reverse-ssh-tunneling">SSH tunnel</a> on a remote server and use that as endpoint for the third party service. This is pretty standard business and can be handled by a service like <a href="https://showoff.io/">Showoff</a>. Personally I just use basic SSH:</p>

<pre><code>ssh -vN koppen@example.com -R 3000:localhost:3000
</code></pre>

<p>As long as the above is running, all requests to port 3000 on example.com is received on localhost:3000.</p>

<p>If you&#8217;re developing Facebook apps, you can stop here. However, some third party services like <a href="http://chargify.com/">Chargify</a> and <a href="http://quickpay.net" title="Danish payment gateway">Quickpay</a> refuse to use anything but port 80 (and 443) for their communication. </p>

<p>While it is possible to setup the tunnel on port 80 remotely, my servers tend to already occupy port 80, so that&#8217;s a no go.</p>

<h2>Proxy passing</h2>

<p>The next piece of the puzzle then becomes routing to the SSH tunnel at port 3000 from port 80.</p>

<p>Since my development server is already running <a href="http://httpd.apache.org/docs/2.2/mod/mod_proxy.html">Apache</a>, this is painfully easy. I just created a new site, using <a href="http://httpd.apache.org/docs/2.2/mod/mod_proxy.html">mod_proxy</a> to forward requests to the given port:</p>

<pre><code>&lt;VirtualHost *:80&gt;
  ServerName tunnel.example.com
  ProxyPass / http://0.0.0.0:3000/ retry=0
&lt;/VirtualHost&gt;
</code></pre>

<p>(The retry=0 option to ProxyPass prevents the endpoint from being marked as bad for a period of time if it receives a request without my tunnel being active)</p>

<p>With this in place, any request to tunnel.example.com is passed to 0.0.0.0:3000 on the same server, where the SSH tunnel receives it and passes it to my local development server.</p>

<p>Success! And the best part is, this totally makes me feel like I am <a href="http://www.introversion.co.uk/uplink/screenshots/uplink4.gif">bouncing connections around in Uplink</a>.</p>
]]></description>
			<link>http://mentalized.net/journal/2011/10/19/routing_requests_to_local_development_environment/</link>
			<guid isPermaLink="false">2125@http://mentalized.net/journal/</guid>
			<comments>http://mentalized.net/journal/2011/10/19/routing_requests_to_local_development_environment/#comments</comments>
			<pubDate>Wed, 19 Oct 2011 09:58:33 +0100</pubDate>
			<category>Software</category>
		</item>
		
		<item>
			<title>Import MTS video clips to iMovie</title>
			<description><![CDATA[<p>My parents have a digital camcorder. A week long vacation with said camcorder, my parents, and their only grandchild produces a fair amount of raw footage. Before we headed back home after the vacation I wisely snapped up all the footage from their camera hoping to eventually run it through iMovie.</p>

<p>Turns out their camcorder stores its clips in MTS/<a href="http://en.wikipedia.org/wiki/AVCHD">AVCHD</a> format, and I didn&#8217;t grab all the fluff^Wnecessary files. As a result iMovie &#8216;11 cannot import the MTS video clips.</p>
]]><![CDATA[<p>I spent the better part of last night trying to figure out how to convert the MTS into something iMovie would import. While there are commercial tools that appear to do what I needed, I was sure I could get the same result using freely available tools. And sure enough <a href="http://ffmpeg.org">ffmpeg</a> - the swiss army knife of open source video handling - gets the job done.</p>

<p>After reading a bunch of threads and forum posts I finally found these settings to convert from MTS to MOV files that I could import into iMovie &#8216;11 without significant loss of quality:</p>

<pre><code>ffmpeg -i input.mts -b 185M output.mov
</code></pre>

<p>That -b flag took me forever to find and I finally spotted it in <a href="http://vimeo.com/groups/cinelerra/forumthread:3721">this thread</a>.</p>

<p>I am not a video buff, so I am sure the above can be optimized, but it worked, and I am posting it here primarily so I know I can find it again.</p>
]]></description>
			<link>http://mentalized.net/journal/2011/09/12/import_mts_video_clips_to_imovie/</link>
			<guid isPermaLink="false">2124@http://mentalized.net/journal/</guid>
			<comments>http://mentalized.net/journal/2011/09/12/import_mts_video_clips_to_imovie/#comments</comments>
			<pubDate>Mon, 12 Sep 2011 09:43:45 +0100</pubDate>
			<category>Technology</category>
		</item>
		
		<item>
			<title>Digging into Objective-C (again)</title>
			<description><![CDATA[<p>While the concept of writing native Mac apps in Ruby definitely appeals to me, I must say the experience isn&#8217;t quite as easy as I was looking for.</p>

<p>After writing <a href="http://mentalized.net/journal/2011/08/15/running_macruby_and_hotcocoa_on_snow_leopard/">my last post</a> I realized that what I had thought to be the path of least resistance, wasn&#8217;t. And while I knew I&#8217;d run into resistance with XCode and Objective-C as well, at least I&#8217;d be doing things the &#8220;proper&#8221; way and learning new stuff.</p>

<p>So I fired up XCode once again and set out to write a Mac application. The following is a bunch of notes and stray thoughts I scribbled down during those first hours - my first (well, fourth) impressions of developing iApps coming from Ruby.</p>
]]><![CDATA[<h2>XCode</h2>

<ul>
<li>Oh dear God, so many windows. I can see why Mac/iOS developers like to have multiple 30 inch screens.</li>
<li>Inline error messages are kind of awesome.</li>
</ul>

<h2>The language</h2>

<ul>
<li>Oh yeah, I remember why I&#8217;ve tried figuring this out on more than one occasion.</li>
<li>Oh no, semicolons.</li>
<li>Is there something like <a href="http://tryruby.org/">TryRuby</a> for Objective-C? I think it would be easier getting started not having to worry about XCode and Interface Builder and outlets and other blah.</li>
</ul>

<h2>Interface Builder</h2>

<ul>
<li>Not sure if I should hate it or love it.</li>
<li>When I rename a file via Interface Builder why doesn&#8217;t it change the import statements or other references. I thought this was what an IDE should be doing.</li>
<li>Finding good, up to date introductory articles is hard, and it seems Interface Builder changes quite a bit between versions making it hard to transfer instructions from another version.</li>
</ul>

<h2>Files and structure</h2>

<ul>
<li>I miss something like Rails to force a structure on me. Where to I put this or that file? What&#8217;s my main application file called? ApplicationDelegate? AppController? Where do I put other things, what should I name them? Arg, best practice me, please!</li>
<li>Seriously, do all files simply go in the same directory?</li>
<li>Using git with XCode isn&#8217;t exactly a joy. Closing all files because git has changed them is annoying to say the least.</li>
</ul>

<h2>Debugging output</h2>

<ul>
<li>I miss a consistent, robust way to log debug output. <code>Object.to_s</code> and <code>.inspect</code> of Ruby are awesome. <code>NSLog()</code> isn&#8217;t quite flexible enough, ie <code>NSLog(@"%@")</code> fails for certain types (integers).</li>
<li>A visual debugger is nice, I remember that from my Delphi days.</li>
</ul>

<h2>Installing frameworks</h2>

<ul>
<li>Download, run something, then copy something into a project, then add build phases, then import it. Damn, I miss <a href="http://rubygems.org">gems</a>.</li>
</ul>

<p>I am sure I&#8217;ll laugh at the above as I get more experience. But this serves a nice reminder that starting anything new is a fragile situation and we should make sure newbies are welcomed and aided into our communities.</p>
]]></description>
			<link>http://mentalized.net/journal/2011/09/08/digging_into_objective-c_again/</link>
			<guid isPermaLink="false">2123@http://mentalized.net/journal/</guid>
			<comments>http://mentalized.net/journal/2011/09/08/digging_into_objective-c_again/#comments</comments>
			<pubDate>Thu, 08 Sep 2011 09:03:00 +0100</pubDate>
			<category>Programming</category>
		</item>
		
		<item>
			<title>Running MacRuby and HotCocoa on Snow Leopard</title>
			<description><![CDATA[<p>I spent some time over the weekend playing around with <a href="http://macruby.org">MacRuby</a> and <a href="http://www.macruby.org/trac/wiki/HotCocoa">HotCocoa</a>, trying to put together a simple Mac application.</p>

<p>Getting MacRuby and HotCocoa running on Snow Leopard wasn&#8217;t entirely as easy as it should have been, though. Here are some of the hoops I jumped through.</p>
]]><![CDATA[<h2>MacRuby via RVM</h2>

<p>I like <a href="http://rvm.beginrescueend.com">RVM</a> (go <a href="https://twitter.com/#!/wayneeseguin">Wayne</a>!) so I installed MacRuby that way. Fortunately - for me - that was only a matter of</p>

<pre><code>rvm install macruby
</code></pre>

<h2>BridgeSupport via downloaded installer</h2>

<p>Supposedly this is only necessary if you&#8217;re still on Snow Leopard, but you need <a href="http://bridgesupport.macosforge.org/trac/wiki">BridgeSupport</a>.</p>

<p>You can grab it from <a href="http://www.macruby.org/files/">the MacRuby site</a> - at the time of writing Preview 3 is the most recent version. After downloading it, unzip it and run the installer.</p>

<h2>HotCocoa via Bundler</h2>

<p><a href="http://www.macruby.org/trac/wiki/HotCocoa">HotCocoa</a> is a Ruby-style interface to Cocoa, basically a way to create your user interface. Unfortunately, it seems the project is in a state of limbo and the official gem isn&#8217;t the one you want.</p>

<p>There is an active fork on <a href="https://github.com/ferrous26/hotcocoa">GitHub</a> that supports 64 bit architectures and actually works, so we want that.</p>

<p>After messing about with this for a while, struggling with making sure I got it installed as part of RVMs gems, not the system gems, and usable via <code>rake</code>, instead of <code>macrake</code> and what have you, I ended up using <a href="http://gembundler.com/">Bundler</a> for bringing in the forked gem.</p>

<pre><code># Gemfile
gem 'rake'
gem 'hotcocoa', :git =&gt; 'https://github.com/ferrous26/hotcocoa.git'
</code></pre>

<p>Note that rake is also added to the Gemfile. Without it I was getting a bunch of seemingly unrelated errors, but this worked in the end. Just remember to do</p>

<pre><code>bundle exec rake run
</code></pre>

<p>to run your application. Without it, you&#8217;ll be running RVMs macrake and you didn&#8217;t install the HotCocoa fork under that.</p>

<h2>App away</h2>

<p>With the above out of the way, I was able to happily code my way to a working Mac app using Ruby. That is pretty sweet.</p>

<p>I&#8217;ve not been able to really get along with Objective-C yet, so I&#8217;m hoping MacRuby can be a gateway drug for me.</p>
]]></description>
			<link>http://mentalized.net/journal/2011/08/15/running_macruby_and_hotcocoa_on_snow_leopard/</link>
			<guid isPermaLink="false">2121@http://mentalized.net/journal/</guid>
			<comments>http://mentalized.net/journal/2011/08/15/running_macruby_and_hotcocoa_on_snow_leopard/#comments</comments>
			<pubDate>Mon, 15 Aug 2011 09:03:10 +0100</pubDate>
			<category>Technology</category>
		</item>
		
		<item>
			<title>The state of Ruby in Denmark</title>
			<description><![CDATA[<p>Yesterday marked the 5 year anniversary of <a href="http://copenhagenrb.dk">Copenhagen Ruby Brigade</a>. Five years ago, I was part of founding that group. Five years, imagine that.</p>

<p>Back then, you could have heard me claim I knew all the <a href="http://workingwithrails.com/browse/people/country/Denmark">Ruby developers in Denmark</a>. While probably an exaggeration, it wasn&#8217;t far from the truth. Thankfully that is no longer the case. Yesterday, as I was sitting in the conference room at <a href="http://podio.com">Podio</a> looking at the other people present, I realized I didn&#8217;t know half of them. This got me thinking about how far we&#8217;ve come in the danish <a href="http://ruby-lang.org">Ruby</a> community over the last years.</p>
]]><![CDATA[<h2>Yeah, I know &#8216;em all</h2>

<p>At the <a href="http://mentalized.net/journal/2006/07/03/copenhagen_rubyrails_brigade/">founding meeting</a>, we asked how many were working with Ruby and how many just wanted to be. The majority were stuck with some language or another, trying to squeeze in as much Ruby as they could on their own time. Today, most of us are making a living writing Rails apps and enjoying every bit of it. And when we finally look up from our screens, we meet with other Ruby developers and thrive on Ruby success stories from all over the world. It feels like we&#8217;ve won.</p>

<h2>Winning</h2>

<p>In many ways we have. Plenty companies use Ruby as their primary programming language. We&#8217;ve got solid communities in the largest cities. Trade publications write about Ruby news. Regional conferences have talks about Ruby. Heck, even bosses and clients have occasionally heard of Ruby these days. Ruby is no longer a fringe language in Denmark.</p>

<h2>We&#8217;re not halfways done</h2>

<p>But we&#8217;ve become too contented. We&#8217;re still a small community in Denmark, so there is plenty of room for us to grow.</p>

<p>We are the birthplace of Rails. Ruby should be like a second language to all developers. We&#8217;ve climbed the first part of the mountain and gained acceptance. Now it is up to us to reach the summit and prove staying power. </p>

<h2>It&#8217;s up to you</h2>

<p>We don&#8217;t have the budget of .NET nor the massive following of PHP. We can&#8217;t rely on the success of Rails in Silicon Valley to aid us. Our growth has to come from us.</p>

<p>Who was the last person that looked at you in awe as you tried to explain the virtues of Ruby? When did you last try to convey your joy of writing Ruby to a fellow geek? We - you and me - should be writing, blogging, talking and teaching until we can no longer find anyone willing to learn.</p>

<p>This is my challenge to you: For the next five years, share your passion for Ruby with at least 5 fellow geeks. Your happiness is bound to be contagious.</p>
]]></description>
			<link>http://mentalized.net/journal/2011/08/11/the_state_of_ruby_in_denmark/</link>
			<guid isPermaLink="false">2120@http://mentalized.net/journal/</guid>
			<comments>http://mentalized.net/journal/2011/08/11/the_state_of_ruby_in_denmark/#comments</comments>
			<pubDate>Thu, 11 Aug 2011 16:24:25 +0100</pubDate>
			<category>Copenhagen.rb</category>
		</item>
		
		<item>
			<title>Announcing r-conomic</title>
			<description><![CDATA[<p>If you have ever tried to integrate with <a href="http://e-conomic.dk">e-conomic</a> you&#8217;ll likely recognize that their API comes out pretty high on the <a href="http://mentalized.net/journal/2011/06/24/how_to_make_a_crappy_api/">How to make a crappy API checklist</a>.</p>

<p>Luckily, if you&#8217;re using Ruby, you can now use the <a href="http://rubygems.org/gems/rconomic">r-conomic gem</a> to handle SOAP and the other tedious bits for you.</p>

<p>I&#8217;ll let the <a href="https://github.com/lokalebasen/rconomic/blob/master/README.md">README</a> do the talking while I head on over to <a href="http://workingwithrails.com/person/4796-jakob-skjerning">my Working With Rails profile</a> and <strong>finally</strong> check off the &#8220;Has published a Ruby gem&#8221; checkbox.</p>
]]><![CDATA[<h2>Usage example</h2>

<pre><code>economic = Economic::Session.new(123456, 'API', 'passw0rd')
economic.connect

# Find a debtor:
debtor = economic.debtors.find(101)

# Creating a debtor:
debtor = economic.debtors.build

debtor.number = economic.debtors.next_available_number
debtor.debtor_group_handle = { :number =&gt; 1 }
debtor.name = 'Bob'
debtor.vat_zone = 'HomeCountry' # HomeCountry, EU, Abroad
debtor.currency_handle = { :code =&gt; 'DKK' }
debtor.price_group_handle = { :number =&gt; 1 }
debtor.is_accessible = true
debtor.ci_number = '12345678'
debtor.term_of_payment_handle = { :id =&gt; 1 }
debtor.layout_handle = { :id =&gt; 16 }
debtor.save

# Create invoice for debtor:
invoice = economic.current_invoices.build
invoice.date = Time.now
invoice.due_date = Time.now + 15
invoice.exchange_rate = 100
invoice.is_vat_included = false

invoice_line = Economic::CurrentInvoiceLine.new
invoice_line.description = 'Line on invoice'
invoice_line.unit_handle = { :number =&gt; 1 }
invoice_line.product_handle = { :number =&gt; 101 }
invoice_line.quantity = 12
invoice_line.unit_net_price = 19.95
invoice.lines &lt;&lt; invoice_line

invoice.save
</code></pre>

<h2>How to enable e-conomic API access</h2>

<p>You need to enable API access in e-conomic before you can, well, use the API. Otherwise you&#8217;ll be getting access denied errors when connecting.</p>

<p>Just follow the instructions on <a href="http://wiki.e-conomic.co.uk/add-on-modules/">e-copedia</a> to enable the API Add-on module.</p>

<h2>It doesn&#8217;t do everything</h2>

<p>Not even remotely&#8230; For now, limited to a small subset of all the <a href="https://www.e-conomic.com/secure/api1/EconomicWebService.asmx">available operations</a>:</p>

<pre><code>                   | Create | Read | Update
-------------------+--------+------+-------
Debtor             | X      | X    | X
CurrentInvoice     | X      | X    | X
CurrentInvoiceLine | X      | X    | X
</code></pre>

<h2>Credits</h2>

<p>Sponsored by <a href="http://lokalebasen.dk">Lokalebasen.dk</a></p>
]]></description>
			<link>http://mentalized.net/journal/2011/08/02/announcing_r-conomic/</link>
			<guid isPermaLink="false">2112@http://mentalized.net/journal/</guid>
			<comments>http://mentalized.net/journal/2011/08/02/announcing_r-conomic/#comments</comments>
			<pubDate>Tue, 02 Aug 2011 10:45:27 +0100</pubDate>
			<category>Projects</category>
		</item>
			
	</channel>
</rss>
