<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/atom10full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><feed xmlns="http://www.w3.org/2005/Atom" xmlns:openSearch="http://a9.com/-/spec/opensearch/1.1/" xmlns:georss="http://www.georss.org/georss" xmlns:thr="http://purl.org/syndication/thread/1.0" xmlns:gd="http://schemas.google.com/g/2005" gd:etag="W/&quot;D0ENQ3czfCp7ImA9Wx5QGU4.&quot;"><id>tag:blogger.com,1999:blog-1879770534244304287</id><updated>2010-09-08T09:48:12.984+01:00</updated><title>3spoken</title><subtitle type="html">Honest opinions - freely given</subtitle><link rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml" href="http://www.3spoken.co.uk/feeds/posts/default" /><link rel="alternate" type="text/html" href="http://www.3spoken.co.uk/" /><link rel="next" type="application/atom+xml" href="http://www.blogger.com/feeds/1879770534244304287/posts/default?start-index=26&amp;max-results=25&amp;redirect=false&amp;v=2" /><author><name>Neil Wilson</name><uri>http://www.blogger.com/profile/18178155357632397049</uri><email>noreply@blogger.com</email></author><generator version="7.00" uri="http://www.blogger.com">Blogger</generator><openSearch:totalResults>37</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/atom+xml" href="http://feeds.feedburner.com/3spoken" /><feedburner:info xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" uri="3spoken" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><link rel="license" type="text/html" href="http://creativecommons.org/licenses/by-nc-sa/2.0/" /><logo>http://creativecommons.org/images/public/somerights20.gif</logo><entry gd:etag="W/&quot;D0ENQ3cyeSp7ImA9Wx5QGU4.&quot;"><id>tag:blogger.com,1999:blog-1879770534244304287.post-5859216521870679500</id><published>2010-09-08T09:47:00.001+01:00</published><updated>2010-09-08T09:48:12.991+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-09-08T09:48:12.991+01:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="economics" /><category scheme="http://www.blogger.com/atom/ns#" term="mmt" /><title>'Functional Finance' and budget surpluses</title><content type="html">Functional Finance is another name for Modern Monetary Theory (MMT). The paper compares the approach with 'sound finance', which is the classical view of money.&lt;br /&gt;
&lt;br /&gt;
It's worth a read in its own right, however the summary is extracted below.&lt;br /&gt;
&lt;br /&gt;
From&amp;nbsp;&lt;a href="http://www.epicoalition.org/docs/functional_finance.htm"&gt;FUNCTIONAL FINANCE AND US GOVERNMENT BUDGET SURPLUSES IN THE NEW MILLENNIUM&lt;/a&gt;&amp;nbsp;by L Randall Wray&lt;br /&gt;
&lt;blockquote&gt;All modern governments spend by emitting High Powered Money (HPM), normally by having the Treasury issue a check. Taxes are never necessary to “finance” spending, nor, indeed, is it possible for them to do so. The government must first provide the HPM before it can receive HPM in tax payment. Thus, taxes serve a different purpose. The primary function of taxes is to create a demand for HPM—for why would the private sector provide goods and services to government in return for HPM unless it needed HPM for taxes? Of course, we recognize that HPM can be used for many things other than tax payment, but these other uses must be derivative. Taxes also serve another useful purpose, as Lerner emphasized: they remove disposable income and destroy private sector net wealth.&lt;/blockquote&gt;&lt;blockquote&gt;Far from recommending perpetual deficits come what may, the functional finance approach recognizes that the private sector can become overheated, which is remedied through rising taxes to drain HPM and disposable income. Deficits can be too large, but also too small. We normally expect that a deficit will be required, however, for the simple reason that the private sector prefers to accumulate some net wealth in the form of HPM and Treasury bonds. For this reason, the government will usually be required to run a deficit, which means that its outstanding debt stock will grow over time. This is nothing to be feared. The government never faces a “financial constraint”, so long as its offers of HPM for goods and services are taken. Bond sales come after government spending, so, like taxes, cannot possibly be required to “finance” spending. Rather, bond sales are used to drain excess HPM to maintain a positive overnight interest rate. Whether that interest rate target is high or low, it must be set discretionarily by the central bank and then maintained by ensuring banks have the desired level of reserves. While taxes and bond sales both remove HPM from the economy, taxes drain income and wealth while bond sales merely offer an interest-earning alternative to non-interest-earning HPM.&lt;/blockquote&gt;&lt;blockquote&gt;The functional finance approach concludes that there is no magic deficit-to-GDP ratio or debt-to-GDP ratio that ought to be maintained or avoided. It also demonstrates that there is no sense in which budget surpluses in one year can be “locked away and saved” for spending in future years. And it leaves one perplexed when faced with the argument advanced by Nobel winners that running surpluses today—hence, destroying private sector income and wealth—is the best way to encourage investment in order to enhance living standards into the future.&lt;/blockquote&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1879770534244304287-5859216521870679500?l=www.3spoken.co.uk' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.3spoken.co.uk/feeds/5859216521870679500/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=1879770534244304287&amp;postID=5859216521870679500" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/1879770534244304287/posts/default/5859216521870679500?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/1879770534244304287/posts/default/5859216521870679500?v=2" /><link rel="alternate" type="text/html" href="http://www.3spoken.co.uk/2010/09/functional-finance-and-budget-surpluses.html" title="'Functional Finance' and budget surpluses" /><author><name>Neil Wilson</name><uri>http://www.blogger.com/profile/18178155357632397049</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="02157711283556558102" /></author><thr:total>0</thr:total></entry><entry gd:etag="W/&quot;C0YGRHg8eyp7ImA9Wx5RE00.&quot;"><id>tag:blogger.com,1999:blog-1879770534244304287.post-2102309891831704210</id><published>2010-08-20T08:32:00.005+01:00</published><updated>2010-08-20T11:45:25.673+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-08-20T11:45:25.673+01:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="economics" /><category scheme="http://www.blogger.com/atom/ns#" term="mmt" /><title>The reason for taxation, and what a deficit really is.</title><content type="html">Any interesting&amp;nbsp;revelation&amp;nbsp;from Modern Monetary Theory is the real reason for taxation. It provides friction on government spending so that it doesn't get out of control and cause inflation.&lt;br /&gt;
&lt;br /&gt;
If a government spends without taxation then that spending will bounce around the economy a very large number of times in separate transactions. There may not be enough real stuff to absorb such spending and you would likely get an inflation.&lt;br /&gt;
&lt;br /&gt;
The rate of tax limits the number of times the unit of spending bounces around - just as the water creates friction on a stone as it skips along the surface. The higher the rate of tax the greater the friction, &amp;nbsp;and the fewer number of transactions are stimulated before the spend vanishes.&lt;br /&gt;
&lt;br /&gt;
This leads to another insight that is quite important. The government gets to have its cake and eat it. When it spends money, it gets the real stuff in exchange for the money, but also the money is recovered by taxation. All of it, always. It's just a logarithmic progression to zero. As the money bounces along a series of transactions a part is taxed away until it disappears.&lt;br /&gt;
&lt;br /&gt;
So how come we have a deficit? That is simply the amount of money spent by the government in the period that didn't reach the end of its transaction series in that period. In other words some of it was 'saved' by somebody somewhere. And the 'national debt' is just the total amount we have 'saved' throughout the history of our currency.&lt;br /&gt;
&lt;br /&gt;
Just remember that a government doesn't spend like you do. It can tax and get its money back.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1879770534244304287-2102309891831704210?l=www.3spoken.co.uk' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.3spoken.co.uk/feeds/2102309891831704210/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=1879770534244304287&amp;postID=2102309891831704210" title="2 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/1879770534244304287/posts/default/2102309891831704210?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/1879770534244304287/posts/default/2102309891831704210?v=2" /><link rel="alternate" type="text/html" href="http://www.3spoken.co.uk/2010/08/reason-for-taxation-and-what-deficit.html" title="The reason for taxation, and what a deficit really is." /><author><name>Neil Wilson</name><uri>http://www.blogger.com/profile/18178155357632397049</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="02157711283556558102" /></author><thr:total>2</thr:total></entry><entry gd:etag="W/&quot;DkIBSH45fip7ImA9Wx5TFEU.&quot;"><id>tag:blogger.com,1999:blog-1879770534244304287.post-7949859237800042119</id><published>2010-07-30T11:08:00.001+01:00</published><updated>2010-07-30T11:09:19.026+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-07-30T11:09:19.026+01:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="economics" /><title>Why not simply a Universal Pension?</title><content type="html">"Iain Duncan Smith, the Work and Pensions Secretary, will today unveil proposals to streamline and simplify payments, as well as improved incentives for the unemployed to swap life on benefits for work." so it says in &lt;a href="http://www.independent.co.uk/news/uk/politics/complex-benefits-system-to-be-replaced-by-one-payment-2039130.html"&gt;the Independent today&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
It strikes me that the easiest of all systems - a universal pension to every citizen - is the simplest and fairest structure. Before state retirement age this would be paid to all those engaged in 'useful work' pro-rata to the amount they do and in full to those retired and genuinely disabled.&lt;br /&gt;
&lt;br /&gt;
Then you just scrap everything else - including the minimum wage - and ensure that people are taxed on the 'profit' they make from their efforts (just as the self-employed are today). Work then always pays and the tax system is simply adjusted, up or down, to ensure that aggregate demand isn't spiked too high by the pension.&lt;br /&gt;
&lt;br /&gt;
We can debate what 'Useful Work' should be - whether it be normal remunerative work, volunteering or looking after children, but the principle remains: the state provides a simple straightforward safety net and that's it.&lt;br /&gt;
&lt;br /&gt;
There is of course one rather large elephant in the room. Work can only pay if there is work to go to.&lt;br /&gt;
&lt;br /&gt;
To make any of these schemes really work requires that the unemployed, the underemployed and those completely out of the system actually have jobs to go to.&lt;br /&gt;
&lt;br /&gt;
And if the private sector isn't creating enough in any particular area, then the public sector must step in and redistribute work to where it is required. We can't all live in the City of London.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1879770534244304287-7949859237800042119?l=www.3spoken.co.uk' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.3spoken.co.uk/feeds/7949859237800042119/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=1879770534244304287&amp;postID=7949859237800042119" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/1879770534244304287/posts/default/7949859237800042119?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/1879770534244304287/posts/default/7949859237800042119?v=2" /><link rel="alternate" type="text/html" href="http://www.3spoken.co.uk/2010/07/why-not-simply-universal-pension.html" title="Why not simply a Universal Pension?" /><author><name>Neil Wilson</name><uri>http://www.blogger.com/profile/18178155357632397049</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="02157711283556558102" /></author><thr:total>0</thr:total></entry><entry gd:etag="W/&quot;D0QFRXo9eCp7ImA9Wx5TE00.&quot;"><id>tag:blogger.com,1999:blog-1879770534244304287.post-1305964000568246941</id><published>2010-07-28T09:21:00.002+01:00</published><updated>2010-07-28T09:21:54.460+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-07-28T09:21:54.460+01:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="economics" /><category scheme="http://www.blogger.com/atom/ns#" term="mmt" /><title>MMT for libertarians</title><content type="html">Here's a slightly different take on MMT from the 'small government' perspective.&lt;br /&gt;
&lt;br /&gt;
&lt;a href="http://neweconomicperspectives.blogspot.com/2010/07/towards-libertarianaustrian-modern.html"&gt;http://neweconomicperspectives.blogspot.com/2010/07/towards-libertarianaustrian-modern.html&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1879770534244304287-1305964000568246941?l=www.3spoken.co.uk' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.3spoken.co.uk/feeds/1305964000568246941/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=1879770534244304287&amp;postID=1305964000568246941" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/1879770534244304287/posts/default/1305964000568246941?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/1879770534244304287/posts/default/1305964000568246941?v=2" /><link rel="alternate" type="text/html" href="http://www.3spoken.co.uk/2010/07/mmt-for-libertarians.html" title="MMT for libertarians" /><author><name>Neil Wilson</name><uri>http://www.blogger.com/profile/18178155357632397049</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="02157711283556558102" /></author><thr:total>0</thr:total></entry><entry gd:etag="W/&quot;D0QHQn47eSp7ImA9Wx5TE00.&quot;"><id>tag:blogger.com,1999:blog-1879770534244304287.post-6131287254748426184</id><published>2010-06-28T10:14:00.002+01:00</published><updated>2010-07-28T09:22:13.001+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-07-28T09:22:13.001+01:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="economics" /><category scheme="http://www.blogger.com/atom/ns#" term="mmt" /><title>Summary of MMT ideas in four bullet points</title><content type="html">With &lt;a href="http://bilbo.economicoutlook.net/blog/?p=8117&amp;amp;cpage=1#comment-7822"&gt;due deference to the creator&lt;/a&gt;. Thank you Tom.&lt;br /&gt;
&lt;br /&gt;
"Asking for a summary of MMT in [four] bullet points for the layperson is  like asking for a one paragraph summary of quantum theory. I suppose it  could be done, but it wouldn’t say much that would actually help and  would probably be so simplistic as to be misleading."&lt;br /&gt;
&lt;br /&gt;
Modern Monetary Theory refers to the operation of the monetary system  since Nixon ended gold convertibility on August 15, 1971. After that the  world transitioned from a convertible fixed rate system to a  nonconvertible floating rate system, which was ratified in Paris in  1973. Since then, we have been on the system that MMT describes. MMT is  not proposing a new system. It is simply saying how the present regime  works and shows the options based on that. &lt;br /&gt;
&lt;br /&gt;
Here is brief summary of key ideas in four bullet points:&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;&lt;br /&gt;
Under the present monetary system, the government is not  financially constrained (although there are are real constraints). A  government that is the monopoly issuer of a nonconvertible currency with  a flexible (floating) exchange rate is  not financially constrained. As  currency issuer, the government neither taxes to fund disbursements,  nor borrows to finance them.&lt;br /&gt;
&lt;/li&gt;
&lt;li&gt;&lt;br /&gt;
Government expenditure increases nongovernment financial assets.  Taxes simply withdraw funds from nongovernment to prevent inflationary  pressure. Government deficits increase nongovernment net financial  assets by a corresponding amount. The national debt is the amount of  nongovernment savings.&lt;br /&gt;
&lt;/li&gt;
&lt;li&gt;&lt;br /&gt;
A monetarily sovereign government does not finance itself with  debt, and the securities it issues are bought with currency it issues.  Debt simply drains excess reserves from the interbank system, allowing  the central bank to hit its target rate. There is no financial reason  that such a government needs to issue securities at all. It could just  pay a support rate equal to the overnight rate.&lt;br /&gt;
&lt;/li&gt;
&lt;li&gt;&lt;br /&gt;
A monetarily sovereign government as monopoly currency issuer has  the sole prerogative and corresponding sole responsibility to provide  the correct amount of currency to balance spending power (nominal  aggregate demand) and goods for sale (real output capacity).&lt;br /&gt;
If the  government issues currency in excess of capacity, demand will rise  relative to the goods and services available, and inflation will occur  due to excess demand relative to supply. If the government falls short  in maintaining this balance, recession and unemployment result, due to  insufficient demand relative to supply.&lt;br /&gt;
The government attempts to  achieve balance through fiscal policy (currency issuance and taxation)  and monetary policy (interest rates), based on analysis of data in terms  of sectoral balances;contribution of government, households and  firms, and foreign trade.&lt;br /&gt;
MMT can be viewed as an articulation of the  basic equation of macroeconomics, GNP/Y = G + C + I + (X-M), where GNP  is gross national product (supply), Y is national income (demand), G is  the contribution of government, C the contribution of consumer spending,  I is business investment, and (X-M) is the current account balance. The  rest is stock-flow consistent macro models.&lt;br /&gt;
&lt;/li&gt;
&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1879770534244304287-6131287254748426184?l=www.3spoken.co.uk' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.3spoken.co.uk/feeds/6131287254748426184/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=1879770534244304287&amp;postID=6131287254748426184" title="1 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/1879770534244304287/posts/default/6131287254748426184?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/1879770534244304287/posts/default/6131287254748426184?v=2" /><link rel="alternate" type="text/html" href="http://www.3spoken.co.uk/2010/06/summary-of-mmt-ideas-in-four-bullet.html" title="Summary of MMT ideas in four bullet points" /><author><name>Neil Wilson</name><uri>http://www.blogger.com/profile/18178155357632397049</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="02157711283556558102" /></author><thr:total>1</thr:total></entry><entry gd:etag="W/&quot;CEQMRH47fSp7ImA9WxFREE4.&quot;"><id>tag:blogger.com,1999:blog-1879770534244304287.post-6589163077166113794</id><published>2010-04-16T10:22:00.006+01:00</published><updated>2010-04-23T15:19:45.005+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-04-23T15:19:45.005+01:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="economics" /><category scheme="http://www.blogger.com/atom/ns#" term="mmt" /><title>A primer on Modern Monetary Theory (MMT)</title><content type="html">Modern Monetary Theory (MMT) is an attempt to explain how 'money' comes about in a way that is different to classical economic theory. If true it shows that the way the government runs the financial part of the economy is inefficient and that we actually have much more flexibility to get us out of the current recession than we are using. Scary stuff.&lt;br /&gt;
&lt;br /&gt;
Economies out there like Japan and the US are not behaving as classical money theory suggests they should. Our own government has issued £275 billion of new currency and nothing much happened. The data is suggesting strongly that we don't understand what is happening. Perhaps MMT explains it. At the moment I don't know.&lt;br /&gt;
&lt;br /&gt;
Please read:&lt;br /&gt;
&lt;a href="http://bilbo.economicoutlook.net/blog/?p=332" rel="nofollow"&gt;Deficit spending 101 – Part 1&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;a href="http://bilbo.economicoutlook.net/blog/?p=352" rel="nofollow"&gt;Deficit spending 101 – Part 2&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;a href="http://bilbo.economicoutlook.net/blog/?p=381" rel="nofollow"&gt;Deficit spending 101 – Part 3&lt;/a&gt;&lt;br /&gt;
Then read:&lt;br /&gt;
&lt;a href="http://bilbo.economicoutlook.net/blog/?p=1229" rel="nofollow"&gt;Will we really pay higher taxes?&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;a href="http://bilbo.economicoutlook.net/blog/?p=1266" rel="nofollow"&gt;Will we really pay higher interest rates?&lt;/a&gt;&lt;br /&gt;
Then read:&lt;br /&gt;
&lt;a href="http://bilbo.economicoutlook.net/blog/?p=2905" rel="nofollow"&gt;Fiscal sustainability 101 – Part 1&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;a href="http://bilbo.economicoutlook.net/blog/?p=2916" rel="nofollow"&gt;Fiscal sustainability 101 – Part 2&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;a href="http://bilbo.economicoutlook.net/blog/?p=2943" rel="nofollow"&gt;Fiscal sustainability 101 – Part 3&lt;/a&gt;&lt;br /&gt;
Then read:&lt;br /&gt;
&lt;a href="http://bilbo.economicoutlook.net/blog/?p=5762" rel="nofollow"&gt;Functional finance and modern monetary theory&amp;nbsp;&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
Edit:&lt;br /&gt;
&lt;br /&gt;
Some more stuff here:&lt;br /&gt;
&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;&lt;a href="http://www.cfeps.org/pubs/pn-pdf/PolicyNote2006-1.pdf"&gt;Teaching the Fallacy of Composition: The Federal Budget Deficit&lt;/a&gt;, by L. Randall Wray&lt;/li&gt;
&lt;li&gt;&lt;a href="http://moslereconomics.com/2009/12/10/7-deadly-innocent-frauds/"&gt;7 Deadly Innocent Frauds&lt;/a&gt;, by Warren Mosler&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.thenation.com/doc/20100322/galbraith"&gt;In Defense of Deficits&lt;/a&gt;, by James K. Galbraith&lt;/li&gt;
&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1879770534244304287-6589163077166113794?l=www.3spoken.co.uk' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.3spoken.co.uk/feeds/6589163077166113794/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=1879770534244304287&amp;postID=6589163077166113794" title="4 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/1879770534244304287/posts/default/6589163077166113794?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/1879770534244304287/posts/default/6589163077166113794?v=2" /><link rel="alternate" type="text/html" href="http://www.3spoken.co.uk/2010/04/primer-on-modern-monetary-theory-mmt.html" title="A primer on Modern Monetary Theory (MMT)" /><author><name>Neil Wilson</name><uri>http://www.blogger.com/profile/18178155357632397049</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="02157711283556558102" /></author><thr:total>4</thr:total></entry><entry gd:etag="W/&quot;CkIBRHg-eSp7ImA9WxFSFEw.&quot;"><id>tag:blogger.com,1999:blog-1879770534244304287.post-3021194741968941941</id><published>2009-12-08T06:56:00.003Z</published><updated>2010-04-16T10:35:55.651+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-04-16T10:35:55.651+01:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="economics" /><title>Where your taxes goes (and a bit more besides)</title><content type="html">Want to know where your taxes have gone? This is a great pictogram: &lt;a href="http://tinyurl.com/mpsd9e"&gt;http://tinyurl.com/mpsd9e&lt;/a&gt; Missing the funding pie chart though showing the current shortfall.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1879770534244304287-3021194741968941941?l=www.3spoken.co.uk' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.3spoken.co.uk/feeds/3021194741968941941/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=1879770534244304287&amp;postID=3021194741968941941" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/1879770534244304287/posts/default/3021194741968941941?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/1879770534244304287/posts/default/3021194741968941941?v=2" /><link rel="alternate" type="text/html" href="http://www.3spoken.co.uk/2009/12/where-your-taxes-goes-and-bit-more.html" title="Where your taxes goes (and a bit more besides)" /><author><name>Neil Wilson</name><uri>http://www.blogger.com/profile/18178155357632397049</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="02157711283556558102" /></author><thr:total>0</thr:total></entry><entry gd:etag="W/&quot;D04CRnY7eyp7ImA9WxNaEk0.&quot;"><id>tag:blogger.com,1999:blog-1879770534244304287.post-7394771750685166876</id><published>2009-11-26T03:22:00.003Z</published><updated>2009-11-26T03:26:07.803Z</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-11-26T03:26:07.803Z</app:edited><title>The Banksters Win Again</title><content type="html">So the banks have been bailed out again - this time by the courts. Apparently it is OK to create opaque penalty charge schemes that you need an Oxford Mathematics degree to understand. The rich can continue getting richer and the poor and innumerate can be damned. What a country we have created.&lt;br /&gt;&lt;br /&gt;The banks have a totally transparent mechanism to charge people for borrowing money. It is called an interest rate. It levers a charge in direct proportion to the amount borrowed and the duration it is borrowed for. It is completely fair.&lt;br /&gt;&lt;br /&gt;The issue is not charging people for borrowing, it is &lt;span style="font-weight: bold;"&gt;overcharging&lt;/span&gt; for borrowing at colossal imputed interest rates.&lt;br /&gt;&lt;br /&gt;And of course if banks did try to carry out their threat to charge those in credit for bank services, then that would show without doubt that they operate as an oligopoly and run a cartel. So I don't buy their FUD.&lt;br /&gt;&lt;br /&gt;Banks should be required to charge for everything via an interest rate. It's transparent, fair and understandable to Joe Plumber.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1879770534244304287-7394771750685166876?l=www.3spoken.co.uk' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.3spoken.co.uk/feeds/7394771750685166876/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=1879770534244304287&amp;postID=7394771750685166876" title="1 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/1879770534244304287/posts/default/7394771750685166876?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/1879770534244304287/posts/default/7394771750685166876?v=2" /><link rel="alternate" type="text/html" href="http://www.3spoken.co.uk/2009/11/banksters-win-again.html" title="The Banksters Win Again" /><author><name>Neil Wilson</name><uri>http://www.blogger.com/profile/18178155357632397049</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="02157711283556558102" /></author><thr:total>1</thr:total></entry><entry gd:etag="W/&quot;DEcERnY_fyp7ImA9WxNaEk0.&quot;"><id>tag:blogger.com,1999:blog-1879770534244304287.post-6245351572193993960</id><published>2009-09-22T08:56:00.002+01:00</published><updated>2009-11-26T03:26:47.847Z</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-11-26T03:26:47.847Z</app:edited><title>The value of University Education - is it a myth?</title><content type="html">I doubt that the increase in University places translates into 'better jobs' for the majority - regardless of the truth by repeated assertion spouted by the government, Universities and so called business leaders.  What we are creating here is a system where ordinary individuals pay for their own apprenticeships so that business can bank the profits.  Very simply if University was such a good investment that the majority would get a much higher paid job because of it, then it would make sense for the Government to invest in it fully - because it would get much more back in increased taxes later on from the higher wages earned.  Apparently we can borrow billions to bail out bankers, but when it comes to investing in the future skills of the country we can't afford it.  The current system and the proposal is essentially another tax rise by stealth using a straightforward front loading mechanism.  Why not just put an additional income tax band in at the income level of a 'graduate job' and have done with it?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1879770534244304287-6245351572193993960?l=www.3spoken.co.uk' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.3spoken.co.uk/feeds/6245351572193993960/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=1879770534244304287&amp;postID=6245351572193993960" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/1879770534244304287/posts/default/6245351572193993960?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/1879770534244304287/posts/default/6245351572193993960?v=2" /><link rel="alternate" type="text/html" href="http://www.3spoken.co.uk/2009/09/value-of-university-education-is-it.html" title="The value of University Education - is it a myth?" /><author><name>Neil Wilson</name><uri>http://www.blogger.com/profile/18178155357632397049</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="02157711283556558102" /></author><thr:total>0</thr:total></entry><entry gd:etag="W/&quot;CkYBRXc8eSp7ImA9WxNTFE4.&quot;"><id>tag:blogger.com,1999:blog-1879770534244304287.post-1621743314619202011</id><published>2009-08-16T14:31:00.004+01:00</published><updated>2009-08-16T14:42:34.971+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-08-16T14:42:34.971+01:00</app:edited><title>How to get HDMI sound out of a Radeon Device in Ubuntu Karmic</title><content type="html">After much searching of the Interweb I've managed to get sound out of my TV when connected to my Acer Aspire 5536 via HDMI.&lt;br /&gt;&lt;br /&gt;It turns out that Ubuntu Karmic has full support on the Audio side for the sound part of the RS780 chipset. Pulseaudio picks it up and the new volume control lets you select the output effortlessly.&lt;br /&gt;&lt;br /&gt;Unfortunately the Radeon Video driver that Ubuntu uses by default doesn't support 'HDMI Sound pass through', so the bits never get to the TV.&lt;br /&gt;&lt;br /&gt;Fortunately there another Radeon driver - 'radeonhd' and that does have HDMI sound support, but it doesn't detect it automatically so you have to configure it in the good old 'xorg.conf'.&lt;br /&gt;&lt;br /&gt;To get the driver, first make sure you have the 'universe' repository activated and then install the driver via apt.&lt;br /&gt;&lt;pre&gt;apt-get install xserver-xorg-video-radeonhd&lt;/pre&gt;&lt;br /&gt;and then edit /etc/X11/xorg.conf to add in the following:&lt;br /&gt;&lt;pre&gt;&lt;p&gt;Section "Device"&lt;br /&gt;      Identifier      "ATI Radeon HD 3200/RS780"&lt;br /&gt;      Driver          "radeonhd"&lt;br /&gt;      Option          "DRI" "On"&lt;br /&gt;      Option          "Audio" "On"&lt;br /&gt;      Option          "HDMI"  "all"&lt;br /&gt;EndSection&lt;/p&gt;&lt;p&gt;Section "DRI"&lt;br /&gt;      Mode 0666&lt;br /&gt;EndSection&lt;/p&gt;&lt;/pre&gt;&lt;br /&gt;(Change the Identifier as required so that it ties in with the rest of the configuration).&lt;br /&gt;&lt;br /&gt;The DRI Option activated direct rendering, which again doesn't active by default for certain chipsets. The DRI section allows non-privileged commands to access direct rendering.&lt;br /&gt;&lt;br /&gt;Details of the options and default are on the radionhd manual page that is installed alongside the driver.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1879770534244304287-1621743314619202011?l=www.3spoken.co.uk' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.3spoken.co.uk/feeds/1621743314619202011/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=1879770534244304287&amp;postID=1621743314619202011" title="1 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/1879770534244304287/posts/default/1621743314619202011?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/1879770534244304287/posts/default/1621743314619202011?v=2" /><link rel="alternate" type="text/html" href="http://www.3spoken.co.uk/2009/08/how-to-get-hdmi-sound-out-of-radeon.html" title="How to get HDMI sound out of a Radeon Device in Ubuntu Karmic" /><author><name>Neil Wilson</name><uri>http://www.blogger.com/profile/18178155357632397049</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="02157711283556558102" /></author><thr:total>1</thr:total></entry><entry gd:etag="W/&quot;DE4MR3Y8eip7ImA9WxJaF0Q.&quot;"><id>tag:blogger.com,1999:blog-1879770534244304287.post-1881736131030777050</id><published>2009-08-09T06:34:00.006+01:00</published><updated>2009-08-09T06:49:46.872+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-08-09T06:49:46.872+01:00</app:edited><title>Making Wine sound work with PulseAudio on Ubuntu - properly</title><content type="html">Wine sounds in Ubuntu has had a problem for a while now since they introduced to PulseAudio sound server. There are a lot of kludgy workarounds on the Internet that will get the sound working for one particular application, but the side effect is that it stops it working for everything else. And you lose pulseaudio's ability to move sound streams between sound cards and sound servers.&lt;br /&gt;&lt;br /&gt;There is a way of fixing it properly, and that is to run a version of Wine with a native Pulseaudio driver installed. The code exists, but due to the politics of Open Source it hasn't been included in the main upstream codebase.&lt;br /&gt;&lt;br /&gt;Since I can't stand kludgy workarounds I decided to take it upon myself to create a wine package with the pulseaudio driver in place and now that is available on my PPA.&lt;br /&gt;&lt;br /&gt;It is targeted at the Karmic Koala release, which contains the required version of PulseAudio. Can I ask all those currently testing the new Ubuntu release to try out the package and see if it improves matter for you. Everybody else will have to wait until October :)&lt;br /&gt;&lt;br /&gt;If you do try out the software can you report back your experiences in Launchpad&lt;br /&gt;&lt;br /&gt;&lt;a href="https://bugs.launchpad.net/wine/+bug/371897"&gt;https://bugs.launchpad.net/wine/+bug/371897&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;The more data we collect, the more evidence we have that this should be included in Ubuntu as standard. And of course if you have problems I can work with upstream to get them sorted.&lt;br /&gt;&lt;br /&gt;You can install the software from my PPA&lt;br /&gt;&lt;br /&gt;&lt;a href="https://launchpad.net/%7Eneil-aldur/+archive/ppa"&gt;https://launchpad.net/~neil-aldur/+archive/ppa&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;To install the software follow the instructions on Launchpad (&lt;a href="https://help.launchpad.net/Packaging/PPA/InstallingSoftware"&gt;https://help.launchpad.net/Packaging/PPA/InstallingSoftware&lt;/a&gt;)&lt;br /&gt;&lt;a href="http://art.ified.ca/?page_id=40"&gt;&lt;br /&gt;Read more about the Winepulse patches and why they're not in the mainline&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1879770534244304287-1881736131030777050?l=www.3spoken.co.uk' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.3spoken.co.uk/feeds/1881736131030777050/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=1879770534244304287&amp;postID=1881736131030777050" title="38 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/1879770534244304287/posts/default/1881736131030777050?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/1879770534244304287/posts/default/1881736131030777050?v=2" /><link rel="alternate" type="text/html" href="http://www.3spoken.co.uk/2009/08/making-wine-sound-work-with-pulseaudio.html" title="Making Wine sound work with PulseAudio on Ubuntu - properly" /><author><name>Neil Wilson</name><uri>http://www.blogger.com/profile/18178155357632397049</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="02157711283556558102" /></author><thr:total>38</thr:total></entry><entry gd:etag="W/&quot;Ak4BQXY6eSp7ImA9WxJbGU4.&quot;"><id>tag:blogger.com,1999:blog-1879770534244304287.post-7649523198282900182</id><published>2009-07-30T08:12:00.007+01:00</published><updated>2009-07-30T08:29:10.811+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-07-30T08:29:10.811+01:00</app:edited><title>EULA and cars - an analogy</title><content type="html">&lt;div&gt;Let's say that you've just bought a shiny new car. It's your pride and joy, and you've spent weeks researching the market just to find the perfect model. You've been to the showroom; you've grimaced at the lousy 'complimentary' coffee and you've shook hands and laid out your hard-earned. After waiting what seems like an eternity it's pick up day.&lt;/div&gt;&lt;br /&gt;&lt;div&gt;So you're stood there with the new car gleaming in front of you and you're itching to get in and hear the roar of the engine. The salesman is there with the keys and you reach out your trembling hand to take them...&lt;/div&gt;&lt;br /&gt;&lt;div&gt;However the saleman then says:&lt;/div&gt;&lt;br /&gt;&lt;div&gt;"Before I allow you to use this car, you must agree to these terms&lt;/div&gt;&lt;br /&gt;&lt;div&gt;(i) you can't sell it on to anybody else&lt;/div&gt;&lt;br /&gt;&lt;div&gt;(ii) whenever you drive it, it can transmit its location and what music you're listening to on the radio to a central location and they can use that information for whatever they like.&lt;/div&gt;&lt;br /&gt;&lt;div&gt;(iii) and you must come back here for warranty and services and not go anywhere else&lt;/div&gt;&lt;br /&gt;&lt;div&gt;If you don't agree to these terms then you musn't use the key to start the car and you need to go to talk to the manufacturer about a refund"&lt;/div&gt;&lt;br /&gt;&lt;div&gt;And then he walks off leaving the keys in a locked box with a button on it marked 'I accept the terms".&lt;/div&gt;&lt;br /&gt;&lt;div&gt;You wouldn't stand for that. You'd explode with rage. You never agreed to those terms when you laid out your money. How dare they. You'd be onto trading standards in a flash. You'd demand that the retailer drops those terms instantly.&lt;/div&gt;&lt;br /&gt;&lt;div&gt;So why do you meekly accept this situation when you buy an operating system to run on a computer?&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1879770534244304287-7649523198282900182?l=www.3spoken.co.uk' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.3spoken.co.uk/feeds/7649523198282900182/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=1879770534244304287&amp;postID=7649523198282900182" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/1879770534244304287/posts/default/7649523198282900182?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/1879770534244304287/posts/default/7649523198282900182?v=2" /><link rel="alternate" type="text/html" href="http://www.3spoken.co.uk/2009/07/eula-and-cars-analogy.html" title="EULA and cars - an analogy" /><author><name>Neil Wilson</name><uri>http://www.blogger.com/profile/18178155357632397049</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="02157711283556558102" /></author><thr:total>0</thr:total></entry><entry gd:etag="W/&quot;DUYCQHY_fSp7ImA9WxJbGU4.&quot;"><id>tag:blogger.com,1999:blog-1879770534244304287.post-6785468647248482273</id><published>2009-07-30T07:39:00.005+01:00</published><updated>2009-07-30T07:59:21.845+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-07-30T07:59:21.845+01:00</app:edited><title>Getting your Microsoft Windows Tax back from Amazon - it's not all plain sailing.</title><content type="html">Based on the encouraging exploits of &lt;a href="http://www.theopensourcerer.com/2009/07/21/getting-your-microsoft-tax-refunded-1010-for-amazon-uk/"&gt;The &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_0"&gt;Opensourcerer&lt;/span&gt;&lt;/a&gt; in getting a Windows refund from Amazon I thought I'd have a go at getting a refund as well for the copy of Windows on my new &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_1"&gt;Acer&lt;/span&gt; Aspire 5536 machine (which definitely does have &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_2"&gt;VM&lt;/span&gt; capability 'cos I've checked the &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_3"&gt;cpuflags&lt;/span&gt;).&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;I was &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_4"&gt;quitely&lt;/span&gt; confident that Amazon had adopted a sensible refund position in accordance with the law of the land. And so I sent off my email in the same manner that The &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_5"&gt;Opensourcerer&lt;/span&gt; had done expecting it to be sorted in minutes.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Unfortunately it hasn't turned out like that and after several frustrating exchanges I ended up with this.&lt;br /&gt;&lt;blockquote&gt;We are not in a position to offer a partial refund for this product. You can of course return the laptop to us for a full refund if you wish.&lt;/blockquote&gt;&lt;/div&gt;&lt;div&gt;So it seems I must turn to the law of the land and enforce those mystical 'statutory rights' that you see mentioned in every retail establishment.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;The next few posts will describe what I believe is the statutory basis for recovering the cost of Windows and the result of my discussions with Amazon will determine whether I'm right or not.&lt;br /&gt;&lt;br /&gt;We shall see.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1879770534244304287-6785468647248482273?l=www.3spoken.co.uk' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.3spoken.co.uk/feeds/6785468647248482273/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=1879770534244304287&amp;postID=6785468647248482273" title="5 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/1879770534244304287/posts/default/6785468647248482273?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/1879770534244304287/posts/default/6785468647248482273?v=2" /><link rel="alternate" type="text/html" href="http://www.3spoken.co.uk/2009/07/getting-your-microsoft-windows-tax-back.html" title="Getting your Microsoft Windows Tax back from Amazon - it's not all plain sailing." /><author><name>Neil Wilson</name><uri>http://www.blogger.com/profile/18178155357632397049</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="02157711283556558102" /></author><thr:total>5</thr:total></entry><entry gd:etag="W/&quot;AkIESXs4eip7ImA9WxVSF0Q.&quot;"><id>tag:blogger.com,1999:blog-1879770534244304287.post-7759630376734798416</id><published>2009-01-12T21:59:00.003Z</published><updated>2009-01-12T22:15:08.532Z</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-01-12T22:15:08.532Z</app:edited><title>Extracting CDs as WAV files with Rhythmbox</title><content type="html">For future reference. Doc for Ubuntu 8.10 (Intrepid Ibex)&lt;br /&gt;&lt;br /&gt;Edit | Preferences. Click Edit Button on 'Preferred Format'.&lt;br /&gt;&lt;br /&gt;Click New. Enter 'CD Quality, Raw' and click Create.&lt;br /&gt;&lt;br /&gt;Edit 'CD Quality, Raw' and put&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;audio/x-raw-int,rate=44100,channels=2 ! wavenc name=enc&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;in the Gstreamer pipeline and click 'active'.&lt;br /&gt;&lt;br /&gt;Close down the Preference Windows and Rhythmbox then restart it.&lt;br /&gt;&lt;br /&gt;You can now select 'CD Quality, Raw' as the menu type.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Why do this? You get the WAV files in your Music directory with the correct titles and they transfer across to Windows a bit easier than FLAC.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1879770534244304287-7759630376734798416?l=www.3spoken.co.uk' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.3spoken.co.uk/feeds/7759630376734798416/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=1879770534244304287&amp;postID=7759630376734798416" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/1879770534244304287/posts/default/7759630376734798416?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/1879770534244304287/posts/default/7759630376734798416?v=2" /><link rel="alternate" type="text/html" href="http://www.3spoken.co.uk/2009/01/extracting-cds-as-wav-files-with.html" title="Extracting CDs as WAV files with Rhythmbox" /><author><name>Neil Wilson</name><uri>http://www.blogger.com/profile/18178155357632397049</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="02157711283556558102" /></author><thr:total>0</thr:total></entry><entry gd:etag="W/&quot;Ck8ARnc9eip7ImA9WxRREkg.&quot;"><id>tag:blogger.com,1999:blog-1879770534244304287.post-3709825799197443628</id><published>2008-09-24T09:32:00.008+01:00</published><updated>2008-09-24T11:07:27.962+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2008-09-24T11:07:27.962+01:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="tax" /><category scheme="http://www.blogger.com/atom/ns#" term="ir35" /><title>Freelancers - you will be assimilated. Resistance is futile.</title><content type="html">&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_tCoIrwRl6js/SNoQzkzNElI/AAAAAAAAAAc/pz1my0n7RY4/s1600-h/166630759_b9ccde043b_m.jpg"&gt;&lt;img style="margin: 0pt 0pt 10px 10px; float: right; cursor: pointer;" src="http://4.bp.blogspot.com/_tCoIrwRl6js/SNoQzkzNElI/AAAAAAAAAAc/pz1my0n7RY4/s200/166630759_b9ccde043b_m.jpg" alt="" id="BLOGGER_PHOTO_ID_5249526793891549778" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;The plot to ensure that everybody becomes an employee of some large organisation (preferably the state) for their 'protection' gathered pace this month. If the announcement that Economic Work Units (aka mothers) are to be required to hand their 2 year olds over to some state sponsored indoctrination centre wasn't enough, there was the disappointing, but largely inevitable, result on the IR35 'Dragonfly' case.&lt;br /&gt;&lt;br /&gt;Once again Freelancers are going to have to look closely at the way they operate and review their relationships with clients if they don't want a 'a-posteriori' bill from HMRC.&lt;br /&gt;&lt;br /&gt;Conspiracy theorists will have enough to go on at this point. Thanks for reading. Those of you who want the details - read on.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;The New Rules&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;I won't go into the gory details. There is plenty of analysis elsewhere: the best being:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.egos.co.uk/ir35_cases/Dragonfly.htm"&gt;Dragonfly appeal&lt;/a&gt; by Roger Sinclair at &lt;a href="http://www.egos.co.uk/"&gt;Egos&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.accountingweb.co.uk/cgi-bin/item.cgi?id=188332"&gt;Dragonfly shot down in cold blood&lt;/a&gt; by Steve Gratton on &lt;a href="http://www.accountingweb.co.uk/"&gt;AccountingWeb&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;What the new 'clarification' boils down to is this:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;if you do work for somebody and get paid for it that is enough to to satisfy one condition of being an IR35 employee. You are essentially assessed against a Day Casual Worker and not a Full Time Employee.&lt;/li&gt;&lt;li&gt;That you determine what and how (and probably where in these days of homeworking) the work is done is no longer sufficient. You have to have the right to do more than a similarly qualified professional employee would ever be allowed to do.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;if you allow yourself to become part of the furniture you will become an IR35 employee regardless of what is written in any documents.&lt;/li&gt;&lt;li&gt;intention is nothing: perception is everything; what the client employees see you as is probably definitive.&lt;/li&gt;&lt;/ul&gt;IR35 has become a 'Duck Tax', to slightly mangle that wonderful Ruby term. Arguably that is as it should be. So your tax bill may very well be determined by client employees terrified of an HMRC investigation into them. Bear that in mind in how you allow them to treat you.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1879770534244304287-3709825799197443628?l=www.3spoken.co.uk' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.3spoken.co.uk/feeds/3709825799197443628/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=1879770534244304287&amp;postID=3709825799197443628" title="2 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/1879770534244304287/posts/default/3709825799197443628?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/1879770534244304287/posts/default/3709825799197443628?v=2" /><link rel="alternate" type="text/html" href="http://www.3spoken.co.uk/2008/09/freelancers-you-will-be-assimilated.html" title="Freelancers - you will be assimilated. Resistance is futile." /><author><name>Neil Wilson</name><uri>http://www.blogger.com/profile/18178155357632397049</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="02157711283556558102" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://4.bp.blogspot.com/_tCoIrwRl6js/SNoQzkzNElI/AAAAAAAAAAc/pz1my0n7RY4/s72-c/166630759_b9ccde043b_m.jpg" height="72" width="72" /><thr:total>2</thr:total></entry><entry gd:etag="W/&quot;CkYNQ3g_eyp7ImA9WxZaGUw.&quot;"><id>tag:blogger.com,1999:blog-1879770534244304287.post-1127779657396379702</id><published>2008-05-04T15:02:00.004+01:00</published><updated>2008-05-04T15:09:52.643+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2008-05-04T15:09:52.643+01:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="ubuntu" /><title>Upgraded to Hardy</title><content type="html">&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.ubuntu.com/themes/ubuntu07/images/masthead-cds.jpg"&gt;&lt;img style="margin: 0pt 0pt 10px 10px; float: right; cursor: pointer; width: 200px;" src="http://www.ubuntu.com/themes/ubuntu07/images/masthead-cds.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Well I've taken the plunge and upgraded my laptop to the 8.04 Ubuntu release (Hardy Heron). Overall the process was very smooth. There are some minor irritations with the way the wireless network works. (To do with the move from the binary ipw3945 driver to the open ipl3945 driver) and a trivial problem with my ML-1610 printer that simply required reselection of the driver to update the appropriate PPD. Other than that I'm here on Firefox 3, printing happily and transmitting over a secure wireless connection and generally enjoying life.&lt;br /&gt;&lt;br /&gt;The main reason for upgrading was so I can show presentations on an external screen, and so I can use submodules in git (both in Hardy, but not Gutsy). We'll see if any more irritations pop up over the next few days. However so far, so good.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1879770534244304287-1127779657396379702?l=www.3spoken.co.uk' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.3spoken.co.uk/feeds/1127779657396379702/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=1879770534244304287&amp;postID=1127779657396379702" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/1879770534244304287/posts/default/1127779657396379702?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/1879770534244304287/posts/default/1127779657396379702?v=2" /><link rel="alternate" type="text/html" href="http://www.3spoken.co.uk/2008/05/upgraded-to-hardy.html" title="Upgraded to Hardy" /><author><name>Neil Wilson</name><uri>http://www.blogger.com/profile/18178155357632397049</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="02157711283556558102" /></author><thr:total>0</thr:total></entry><entry gd:etag="W/&quot;CkUNQnozcCp7ImA9WxZbFkQ.&quot;"><id>tag:blogger.com,1999:blog-1879770534244304287.post-7743769296542255019</id><published>2008-04-20T11:47:00.004+01:00</published><updated>2008-04-20T12:18:13.488+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2008-04-20T12:18:13.488+01:00</app:edited><title>Dilbert - probably the worst site redesign of all time.</title><content type="html">If you've been to the Dilbert site (&lt;a href="http://dilbert.com/"&gt;http://dilbert.com&lt;/a&gt;) recently you'll notice that they have redesigned it so that it has new features. Unfortunately while getting excited about all the new website toys they have completely forgotten about usability.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Faux pas include&lt;br /&gt;&lt;ul&gt;&lt;li&gt;having to scroll the Sunday strip (can you spot the arrow?)&lt;/li&gt;&lt;li&gt;Forcing the Sunday 8 box strip into 3 box format. &lt;/li&gt;&lt;li&gt;No way of easily getting to the previous or next strip without going through search.&lt;/li&gt;&lt;li&gt;Completely pointless flash tool&lt;/li&gt;&lt;li&gt;Even more pointless flash menu&lt;/li&gt;&lt;li&gt;Chewing the CPU&lt;/li&gt;&lt;li&gt;Crashes frequently on Ubuntu and IE 6 if you flip screens&lt;/li&gt;&lt;li&gt;Busy, busy screen.&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;It works so much better if you turn Javascript off.&lt;/p&gt;&lt;p&gt;Fortunately there is a workaround. Just look at the strips on Yahoo instead &lt;a href="http://news.yahoo.com/comics/dilbert"&gt;http://news.yahoo.com/comics/dilbert&lt;/a&gt;&lt;/p&gt;&lt;p&gt;Oh and make a note never to hire the guys at &lt;a href="http://vpi.net/"&gt;vpi.net&lt;/a&gt; if you want a site that people can use on anything less than the latest Redmond specified supercomputer.&lt;/p&gt;&lt;p&gt; &lt;/p&gt;&lt;p&gt; &lt;/p&gt;&lt;p&gt;&lt;br /&gt; &lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1879770534244304287-7743769296542255019?l=www.3spoken.co.uk' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.3spoken.co.uk/feeds/7743769296542255019/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=1879770534244304287&amp;postID=7743769296542255019" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/1879770534244304287/posts/default/7743769296542255019?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/1879770534244304287/posts/default/7743769296542255019?v=2" /><link rel="alternate" type="text/html" href="http://www.3spoken.co.uk/2008/04/dilbert-probably-worst-site-redesign-of.html" title="Dilbert - probably the worst site redesign of all time." /><author><name>Neil Wilson</name><uri>http://www.blogger.com/profile/18178155357632397049</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="02157711283556558102" /></author><thr:total>0</thr:total></entry><entry gd:etag="W/&quot;C0EDQ305eSp7ImA9WxZUGU8.&quot;"><id>tag:blogger.com,1999:blog-1879770534244304287.post-8505482588456475009</id><published>2008-04-11T14:27:00.007+01:00</published><updated>2008-04-11T14:47:52.321+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2008-04-11T14:47:52.321+01:00</app:edited><title>Rake quick tip - Getting your dates out into the right format</title><content type="html">Rails date formatting leaves a bit to be desired with only a few formats available. You can of course use strftime in all it's glory:&lt;br /&gt;&lt;code&gt;&lt;pre&gt;&lt;span class="ident"&gt;my_record&lt;/span&gt;&lt;span class="punct"&gt;.&lt;/span&gt;&lt;span class="ident"&gt;created_at&lt;/span&gt;&lt;span class="punct"&gt;.&lt;/span&gt;&lt;span class="ident"&gt;strftime&lt;/span&gt;&lt;span class="punct"&gt;(&amp;quot;&lt;/span&gt;&lt;span class="string"&gt;%d-%b-%y&lt;/span&gt;&lt;span class="punct"&gt;&amp;quot;)&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;/code&gt;&lt;br /&gt;but it is hardly descriptive.&lt;br /&gt;&lt;br /&gt;So there are a couple of ways of getting dates to format as you want them in Rails. The first is to set your own key in the date format table, and select it explicitly.&lt;br /&gt;&lt;code&gt;&lt;pre&gt;&lt;span class="constant"&gt;Time&lt;/span&gt;&lt;span class="punct"&gt;::&lt;/span&gt;&lt;span class="constant"&gt;DATE_FORMATS&lt;/span&gt;&lt;span class="punct"&gt;[&lt;/span&gt;&lt;span class="symbol"&gt;:uk&lt;/span&gt;&lt;span class="punct"&gt;]&lt;/span&gt; &lt;span class="punct"&gt;=&lt;/span&gt; &lt;span class="punct"&gt;&amp;quot;&lt;/span&gt;&lt;span class="string"&gt;%d-%b-%y&lt;/span&gt;&lt;span class="punct"&gt;&amp;quot;&lt;/span&gt;&lt;br /&gt;&lt;span class="ident"&gt;my_record&lt;/span&gt;&lt;span class="punct"&gt;.&lt;/span&gt;&lt;span class="ident"&gt;created_at&lt;/span&gt;&lt;span class="punct"&gt;.&lt;/span&gt;&lt;span class="ident"&gt;to_s&lt;/span&gt;&lt;span class="punct"&gt;(&lt;/span&gt;&lt;span class="symbol"&gt;:uk&lt;/span&gt;&lt;span class="punct"&gt;)&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;/code&gt;&lt;br /&gt;But if you want this date format all the time, just overwrite the &lt;code&gt;:default&lt;/code&gt; key. Then &lt;code&gt;to_s&lt;/code&gt; will use your format by default.&lt;br /&gt;&lt;code&gt;&lt;pre&gt;&lt;span class="constant"&gt;Time&lt;/span&gt;&lt;span class="punct"&gt;::&lt;/span&gt;&lt;span class="constant"&gt;DATE_FORMATS&lt;/span&gt;&lt;span class="punct"&gt;[&lt;/span&gt;&lt;span class="symbol"&gt;:default&lt;/span&gt;&lt;span class="punct"&gt;]&lt;/span&gt; &lt;span class="punct"&gt;=&lt;/span&gt; &lt;span class="punct"&gt;&amp;quot;&lt;/span&gt;&lt;span class="string"&gt;%d-%b-%y&lt;/span&gt;&lt;span class="punct"&gt;&amp;quot;&lt;/span&gt;&lt;br /&gt;&lt;span class="ident"&gt;my_record&lt;/span&gt;&lt;span class="punct"&gt;.&lt;/span&gt;&lt;span class="ident"&gt;created_at&lt;/span&gt;&lt;span class="punct"&gt;.&lt;/span&gt;&lt;span class="ident"&gt;to_s&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;/code&gt;&lt;br /&gt;I stick the command in the &lt;code&gt;ApplicationHelper&lt;/code&gt;. It's always a global change.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1879770534244304287-8505482588456475009?l=www.3spoken.co.uk' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.3spoken.co.uk/feeds/8505482588456475009/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=1879770534244304287&amp;postID=8505482588456475009" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/1879770534244304287/posts/default/8505482588456475009?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/1879770534244304287/posts/default/8505482588456475009?v=2" /><link rel="alternate" type="text/html" href="http://www.3spoken.co.uk/2008/04/rake-quick-tip-getting-your-dates-out.html" title="Rake quick tip - Getting your dates out into the right format" /><author><name>Neil Wilson</name><uri>http://www.blogger.com/profile/18178155357632397049</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="02157711283556558102" /></author><thr:total>0</thr:total></entry><entry gd:etag="W/&quot;DkEHRX4yfSp7ImA9WxZUGEw.&quot;"><id>tag:blogger.com,1999:blog-1879770534244304287.post-221524795693370292</id><published>2008-04-10T08:11:00.006+01:00</published><updated>2008-04-10T09:03:54.095+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2008-04-10T09:03:54.095+01:00</app:edited><title>Rails and git - clean branch and merge</title><content type="html">&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://farm3.static.flickr.com/2021/1516857444_a84038b416_o_d.png"&gt;&lt;img style="float:right; margin:0 0 10px 10px;cursor:pointer; cursor:hand;width: 200px;" src="http://farm3.static.flickr.com/2021/1516857444_a84038b416_o_d.png" border="0" alt="" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;I've moved over to git recently to take advantage of the new distributed functionality and the various git repository engines that are springing up in the Rails world.&lt;br /&gt;&lt;br /&gt;One of the beauties of the new git regime is that creating and deleting test branches of your application is an absolute doddle. For every iteration you simply&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;pre&gt;&lt;br /&gt;neil@neil-laptop:~/test_git$ git checkout -b new_branch&lt;br /&gt;Switched to a new branch "new_branch"&lt;br /&gt;neil@neil-laptop:~/test_git$ *change something*&lt;br /&gt;neil@neil-laptop:~/test_git$ git commit -a -m "let's try this"&lt;br /&gt;Created commit cb3200f: let's try this&lt;br /&gt; 1 files changed, 0 insertions(+), 59 deletions(-)&lt;br /&gt;neil@neil-laptop:~/test_git$ *add something else*&lt;br /&gt;neil@neil-laptop:~/test_git$ git add .; git commit -a -m "That didn't work,&lt;br /&gt;let's try something else"&lt;br /&gt;Created commit 0c5f35e: That didn't work, let's try something else&lt;br /&gt; 1 files changed, 144 insertions(+), 0 deletions(-)&lt;br /&gt; create mode 100644 FOOBAR&lt;br /&gt;neil@neil-laptop:~/test_git$ *change something again*&lt;br /&gt;neil@neil-laptop:~/test_git$ git commit -a -m "Now we've cracked it"&lt;br /&gt;Created commit 3876936: Now we've cracked it&lt;br /&gt; 1 files changed, 0 insertions(+), 144 deletions(-)&lt;br /&gt; delete mode 100644 FOOBAR&lt;br /&gt;neil@neil-laptop:~/test_git$ &lt;br /&gt;&lt;/pre&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Which gives you a nice branch with your shiny new functionality in it, but all the hacks and changes are in the log file.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;pre&gt;&lt;br /&gt;neil@neil-laptop:~/test_git$ git-log --pretty=oneline master..HEAD&lt;br /&gt;3876936d77f6963a5db461fbc013059c84a5e480 Now we've cracked it&lt;br /&gt;0c5f35e7a0386698e57eab0791f5897cb44a0266 That didn't work, let's try something e&lt;br /&gt;cb3200fd16de9bf4a14cbdba1a8abcfa0fcfeb71 let's try this&lt;br /&gt;&lt;/pre&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;And that means when you merge down all those log entries get merged as well&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;pre&gt;&lt;br /&gt;neil@neil-laptop:~/test_git$ git checkout try_merge&lt;br /&gt;Switched to branch "try_merge"&lt;br /&gt;neil@neil-laptop:~/test_git$ git merge new_branch&lt;br /&gt;Updating 1b63b7d..3876936&lt;br /&gt;&lt;br /&gt;Fast forward&lt;br /&gt; FRED   |  144 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++&lt;br /&gt; README |   59 --------------------------&lt;br /&gt; 2 files changed, 144 insertions(+), 59 deletions(-)&lt;br /&gt; create mode 100644 FRED&lt;br /&gt;neil@neil-laptop:~/test_git$ git branch -d new_branch&lt;br /&gt;Deleted branch new_branch.&lt;br /&gt;neil@neil-laptop:~/test_git$ git-log --pretty=oneline master..HEAD&lt;br /&gt;3876936d77f6963a5db461fbc013059c84a5e480 Now we've cracked it&lt;br /&gt;0c5f35e7a0386698e57eab0791f5897cb44a0266 That didn't work, let's try something &lt;br /&gt;6182c9866e6f4972eb74e873f5d9eff1dd0a272d That didn't work try something else&lt;br /&gt;cb3200fd16de9bf4a14cbdba1a8abcfa0fcfeb71 let's try this&lt;br /&gt;&lt;/pre&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Now recording your twists and turns for posterity probably isn't what you'd want to do. Fortunately there is an alternative. Let's do that again.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;pre&gt;&lt;br /&gt;neil@neil-laptop:~/test_git$ git checkout try_merge&lt;br /&gt;Switched to branch "try_merge"&lt;br /&gt;neil@neil-laptop:~/test_git$ git-merge &lt;b&gt;--squash&lt;/b&gt; new_branch&lt;br /&gt;Updating 1b63b7d..766208c&lt;br /&gt;&lt;br /&gt;Fast forward&lt;br /&gt;Squash commit -- not updating HEAD&lt;br /&gt; README |   31 -------------------------------&lt;br /&gt; 1 files changed, 0 insertions(+), 31 deletions(-)&lt;br /&gt;neil@neil-laptop:~/test_git$ git commit -a -m 'Shiny new functionality as if by magic'&lt;br /&gt;Created commit 2940a71: Shiny new functionality as if by magic&lt;br /&gt; 1 files changed, 0 insertions(+), 31 deletions(-)&lt;br /&gt;neil@neil-laptop:~/test_git$ git-log --pretty=oneline master..&lt;br /&gt;2940a71686d0c618bf39c17d3dd12c8ee02248d7 Shiny new functionality as if by magic&lt;br /&gt;neil@neil-laptop:~/test_git$ &lt;br /&gt;&lt;/pre&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Now all the twists and turns of your test branch are banished from history and you can pretend you created the perfect solution first time :-)&lt;br /&gt;&lt;br /&gt;The one wrinkle is that you have to force delete the test branch. If you do a normal delete it complains&lt;br /&gt;&lt;code&gt;&lt;pre&gt;&lt;br /&gt;neil@neil-laptop:~/test_git$ git branch -d new_branch&lt;br /&gt;error: The branch 'new_branch' is not a strict subset of your current HEAD.&lt;br /&gt;If you are sure you want to delete it, run 'git branch -D new_branch'.&lt;br /&gt;&lt;/pre&gt;&lt;/code&gt;&lt;br /&gt;However if you take the advice all is well&lt;br /&gt;&lt;code&gt;&lt;pre&gt;&lt;br /&gt;neil@neil-laptop:~/test_git$ git branch -D new_branch&lt;br /&gt;Deleted branch new_branch.&lt;br /&gt;&lt;/pre&gt;&lt;/code&gt;&lt;br /&gt;Git makes it really simple to launch a branch for every iteration you undertake and allows you to keep your mainline commit sequence clean.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1879770534244304287-221524795693370292?l=www.3spoken.co.uk' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.3spoken.co.uk/feeds/221524795693370292/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=1879770534244304287&amp;postID=221524795693370292" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/1879770534244304287/posts/default/221524795693370292?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/1879770534244304287/posts/default/221524795693370292?v=2" /><link rel="alternate" type="text/html" href="http://www.3spoken.co.uk/2008/04/rails-and-git-clean-branch-and-merge.html" title="Rails and git - clean branch and merge" /><author><name>Neil Wilson</name><uri>http://www.blogger.com/profile/18178155357632397049</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="02157711283556558102" /></author><thr:total>0</thr:total></entry><entry gd:etag="W/&quot;DUcNQnk-eip7ImA9WxZVGUs.&quot;"><id>tag:blogger.com,1999:blog-1879770534244304287.post-1142950619481043111</id><published>2008-03-31T13:28:00.003+01:00</published><updated>2008-03-31T13:38:13.752+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2008-03-31T13:38:13.752+01:00</app:edited><title>Rails Patch accepted!</title><content type="html">&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://farm1.static.flickr.com/17/21367593_c03780d433_m_d.jpg"&gt;&lt;img style="margin: 0pt 0pt 10px 10px; float: right; cursor: pointer; width: 200px;" src="http://farm1.static.flickr.com/17/21367593_c03780d433_m_d.jpg" alt="" border="0" /&gt;&lt;/a&gt;I came across a &lt;a href="http://dev.rubyonrails.org/ticket/11421"&gt;Rails problem&lt;/a&gt; last week while writing the VAT validation plugin. So based on the open source principle of 'he who finds fixes' I submitted a patch, and it has been &lt;a href="http://dev.rubyonrails.org/changeset/9115"&gt;accepted!&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;It's nice to be part of the process.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1879770534244304287-1142950619481043111?l=www.3spoken.co.uk' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.3spoken.co.uk/feeds/1142950619481043111/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=1879770534244304287&amp;postID=1142950619481043111" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/1879770534244304287/posts/default/1142950619481043111?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/1879770534244304287/posts/default/1142950619481043111?v=2" /><link rel="alternate" type="text/html" href="http://www.3spoken.co.uk/2008/03/rails-patch-accepted.html" title="Rails Patch accepted!" /><author><name>Neil Wilson</name><uri>http://www.blogger.com/profile/18178155357632397049</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="02157711283556558102" /></author><thr:total>0</thr:total></entry><entry gd:etag="W/&quot;CUcMQ3Yyeyp7ImA9WxZUEEo.&quot;"><id>tag:blogger.com,1999:blog-1879770534244304287.post-7495894045067519925</id><published>2008-03-29T08:16:00.015Z</published><updated>2008-04-01T19:04:42.893+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2008-04-01T19:04:42.893+01:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="thevisionthing" /><title>Why IT is perennially irritating - and what we can do about it</title><content type="html">The levee of early adoption has been breached and the sea of banality is flooding in. It has been for a while, but now &lt;a href="http://visionthing.vagueware.com/"&gt;some of the pioneers&lt;/a&gt; are starting to notice a bit of a smell.&lt;br /&gt;&lt;br /&gt;Is it that Web 2.0 has matured like a fine, but overly strong, stilton and is ready to take its place next to dotcom, client-server, outsourcing, windows, PC terminals, 4GLs and probably several others I've forgotten in the pantheon of IT panaceas.&lt;br /&gt;&lt;br /&gt;I'm not sure whether I'm fortunate or unfortunate to have seen this process happen several times. Certainly it is very disheartening to see it happen all over again. But that is the way the economics of this business works - as it does for all service businesses. And that's due to a number of factors as I see it&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;p&gt;The customer and the consumer are very often, if not always, different people. You are writing the software for the person who wants 'Ebay with knobs on' and only superficially for the person who is going to use it. The marketing fluff builds to get the customer to sign. Delivery becomes a matter of doing the minimum possible to get the customer to sign the thing off and pay.&lt;br /&gt;&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;Nobody knows if you are any good or not. So customers don't go for the best solution, they go for the one with the least perceived risk. You reduce perceived risk by fluffing up your marketing - hire more PhDs to sit in a corner and twiddle their thumbs, up the impressive graphics, work on your brand, give lots of slick superficial presentations and bridge away from the difficult questions to "The Big Picture (tm)". To pay for this you cut corners at the back-end where nobody will look. After all you will have sold out before the first power cut won't you.&lt;br /&gt;&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;Your 'tool' is not as good as you think it is and frankly nobody but you gives a monkeys about it. Why are you so sure it can't be replicated by a keen script-kiddy in a couple of weekends? And if it can, why do you think you have a sustainable business charging £10 per month for the privilege? Fancy graphics? Force of ego?&lt;br /&gt;&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;Most of the 'tools' out there are largely superficial. I got into this game to make people's lives easier by automating and eliminating drudgery. Yet the tools created seem to turn people either into Mrs Doyle ("some of us like drudgery"), or human versions of Pavlov's dogs - desperately waiting for the next IM or twitter to give meaning to their existence.&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;Andy Mitchell makes the points well in &lt;a href="http://3dogsbark.com/2008/03/27/the-vision-thing-10-reasons-i-hate-where-the-web-is-at/"&gt;his blog post &lt;/a&gt;&lt;br /&gt;&lt;br /&gt;However the most insidious problem IMHO is The Flip - the standard way of investment and detailed in exquisite form &lt;a href="http://www.manojranaweera.com/2008/03/22/methodology-for-launching-under-25000/"&gt;here&lt;/a&gt;. Capitalism is driven by those who own the capital, and the bottom line is if you have an external investor then you work for them and they are looking for a profit on the sale of your business - quickly. To quote "The business must be able to generate significant value within 2 years to provide an exit for investor."&lt;br /&gt;&lt;br /&gt;There is no doubt it works, and as a side effect it actually does occasionally create something wonderful, but it is ultimately not fulfilling for those looking for a deeper meaning from what they do.  As &lt;a href="http://gettingreal.37signals.com/ch02_Fund_Yourself.php"&gt;37Signals point out&lt;/a&gt; - rightly in my view: "The sad fact is cashing in often begins to trump building a quality product."&lt;br /&gt;&lt;br /&gt;So what can we do about it?&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;p&gt;Get away from the focus on the product. In a modern development world products are easily replicable. Any product is merely an enabler for creating a service - a set of people and connections - and it is these people and connections that have the value, not the product. Concentrate on the people and their philosophy not the product.&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;Try to automate the process. One of the disturbing trends I see is humans used as the ultimate flexible middleware between niche point web applications. Find a way of getting the machines to do the hard work.&lt;br /&gt;&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;Start charging for what you are actually selling. Why do we sell the products with free support? The product has an incremental cost of zero, and the support involves expensive people. So charge for the support and give the product away for free. That way you can move to 'branded' individuals or branded small teams of individuals and they can charge more. Any decent architect could have designed &lt;a href="http://en.wikipedia.org/wiki/30_St_Mary_Axe"&gt;The Gherkin&lt;/a&gt;, so why did they pay for Norman Foster?&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;Merge your customer and consumer. Try and make sure the person laying out the cash (or at least making the buying decision) is the one using your services. Concentrate on those markets where this applies.&lt;br /&gt;&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;Build your FY fund. It worked for Humphrey Bogart, it can work for you. If you have to earn something today then you are not in control of your destiny. You have no capital in a capitalist society and once again those that own it will be telling you what you can and can't do - whether you are employed, freelance or whatever. So if you're in an area where there is a rich seam of cash to be mined, then grit your teeth and mine it. Then put it to one side. The world will wait until you are ready.&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;Get good with money. It's always amazed me the number of people who are quite happy to do several hours overtime, but won't spend fifteen minutes to change their utility suppliers to a vastly cheaper offering. If you are building a capital sum so you can control your destiny then obviously it builds faster if it doesn't leak. &lt;a href="http://www.moneysavingexpert.com/"&gt;Go learn how to plug your leaks&lt;/a&gt;.  You probably don't have to go as far as I did (by training in accountancy) and I admit I have a genetic advantage when it comes to cost efficiency :-), but if you remember one thing, remember this: £15 saved is as much as £25 earned when you account for tax. (£33 if you access tax credits - seriously!).&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;Be the Investor. He who pays the piper calls the tune - always.&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;Getting round The Flip is a harder problem to solve. There has to be a model of operation that gets away from the short-termism inherent in The Flip with its obsession about capital value. There has to be some way of getting back to concentrating on income, cash flow and customers and making equity patient again. Thoughts:&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;p&gt;Founders as partners, where partner is more an ownership mindset than a legal structure.  In all other professional fields partnership is the primary model, where capital value is owned directly by the individual. Few in IT understand the partnership approach and the way capital value accrues in such a structure. Often what you find in IT is a pseudo partnership approach sat under a Limited Company.&lt;br /&gt;&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;Build one to throw away. Where you get involved in a capital project and use the proceeds of that to do what you really want to do - an income project. Ubuntu falls into this category.&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;Internal project. Where you build your product alongside your standard agency work and gradually convert over to an income business. 37Signals worked this way. I'm just not convinced that the 'tenner a month' software leasing model is sustainable in the medium term.&lt;br /&gt;&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;The one I like most at the moment is the Free Software network idea, where you get over the idea that you must hide the product from the world if you are to profit from it. Make it easy for those who are good at the partnering and branding thing to do their stuff in whatever niche they fancy. Sell the setup and the backup preferably on a branded individual basis; put development down as a marketing cost. White-Box Web 2 if you like.&lt;br /&gt;&lt;br /&gt;It may be that the Flip and the OTT marketing it generates is the only way that works in IT. In which case you've just got to put up with it, or get out. Unfortunately it is not any better anywhere else, so I rather hope that something will drop out of this debate.&lt;br /&gt;&lt;br /&gt;Let me know what you think.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1879770534244304287-7495894045067519925?l=www.3spoken.co.uk' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.3spoken.co.uk/feeds/7495894045067519925/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=1879770534244304287&amp;postID=7495894045067519925" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/1879770534244304287/posts/default/7495894045067519925?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/1879770534244304287/posts/default/7495894045067519925?v=2" /><link rel="alternate" type="text/html" href="http://www.3spoken.co.uk/2008/03/why-it-is-perennially-irritating-and.html" title="Why IT is perennially irritating - and what we can do about it" /><author><name>Neil Wilson</name><uri>http://www.blogger.com/profile/18178155357632397049</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="02157711283556558102" /></author><thr:total>0</thr:total></entry><entry gd:etag="W/&quot;A0EAQnY8eyp7ImA9WxZVFk8.&quot;"><id>tag:blogger.com,1999:blog-1879770534244304287.post-7055227534646007970</id><published>2008-03-27T14:32:00.011Z</published><updated>2008-03-27T14:54:03.873Z</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2008-03-27T14:54:03.873Z</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="snippets" /><category scheme="http://www.blogger.com/atom/ns#" term="rails" /><title>Checking for Active EU Vat Numbers in Rails with SOAP and REST</title><content type="html">Rather than implementing checksums and the like for VAT numbers I've decided to go straight to the Internet database and check the number there. It is exposed as a soap service and the ActiveRecord code looks like this:&lt;br /&gt;&lt;br /&gt;&lt;blockquote style=" margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;" class="gmail_quote"&gt;&lt;pre&gt;  &lt;span class="comment"&gt;#Use the SOAP checker on the Internet to see if the VAT number is live&lt;/span&gt;&lt;br /&gt;  &lt;span class="comment"&gt;#The driver is created on first use and cached &lt;/span&gt;&lt;br /&gt;  &lt;span class="keyword"&gt;def &lt;/span&gt;&lt;span class="method"&gt;active?&lt;/span&gt;&lt;br /&gt;    &lt;span class="keyword"&gt;if&lt;/span&gt; &lt;span class="ident"&gt;valid?&lt;/span&gt;&lt;br /&gt;      &lt;span class="attribute"&gt;@@vat_check_driver&lt;/span&gt; &lt;span class="punct"&gt;||=&lt;/span&gt; &lt;span class="ident"&gt;create_vat_check_driver&lt;/span&gt;&lt;br /&gt;      &lt;span class="ident"&gt;result&lt;/span&gt; &lt;span class="punct"&gt;=&lt;/span&gt; &lt;span class="attribute"&gt;@@vat_check_driver&lt;/span&gt;&lt;span class="punct"&gt;.&lt;/span&gt;&lt;span class="ident"&gt;checkVat&lt;/span&gt;&lt;span class="punct"&gt;(&lt;/span&gt;&lt;br /&gt;        &lt;span class="symbol"&gt;:countryCode&lt;/span&gt; &lt;span class="punct"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="ident"&gt;country_code&lt;/span&gt;&lt;span class="punct"&gt;,&lt;/span&gt;&lt;br /&gt;        &lt;span class="symbol"&gt;:vatNumber&lt;/span&gt; &lt;span class="punct"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="ident"&gt;identifier&lt;/span&gt;&lt;br /&gt;      &lt;span class="punct"&gt;)&lt;/span&gt;&lt;br /&gt;    &lt;span class="keyword"&gt;end&lt;/span&gt;&lt;br /&gt;    &lt;span class="ident"&gt;result&lt;/span&gt; &lt;span class="punct"&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class="ident"&gt;result&lt;/span&gt;&lt;span class="punct"&gt;.&lt;/span&gt;&lt;span class="ident"&gt;valid&lt;/span&gt; &lt;span class="punct"&gt;==&lt;/span&gt; &lt;span class="punct"&gt;&amp;quot;&lt;/span&gt;&lt;span class="string"&gt;true&lt;/span&gt;&lt;span class="punct"&gt;&amp;quot;&lt;/span&gt;&lt;br /&gt;  &lt;span class="keyword"&gt;end&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;  &lt;span class="ident"&gt;private&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;  &lt;span class="ident"&gt;require&lt;/span&gt; &lt;span class="punct"&gt;&amp;quot;&lt;/span&gt;&lt;span class="string"&gt;soap/wsdlDriver&lt;/span&gt;&lt;span class="punct"&gt;&amp;quot;&lt;/span&gt;&lt;br /&gt;  &lt;span class="keyword"&gt;def &lt;/span&gt;&lt;span class="method"&gt;create_vat_check_driver&lt;/span&gt;&lt;br /&gt;    &lt;span class="ident"&gt;wsdl&lt;/span&gt; &lt;span class="punct"&gt;=&lt;/span&gt; &lt;span class="punct"&gt;&amp;quot;&lt;/span&gt;&lt;span class="string"&gt;http://ec.europa.eu/taxation_customs/vies/api/checkVatPort?wsdl&lt;/span&gt;&lt;span class="punct"&gt;&amp;quot;&lt;/span&gt;&lt;br /&gt;    &lt;span class="constant"&gt;SOAP&lt;/span&gt;&lt;span class="punct"&gt;::&lt;/span&gt;&lt;span class="constant"&gt;WSDLDriverFactory&lt;/span&gt;&lt;span class="punct"&gt;.&lt;/span&gt;&lt;span class="ident"&gt;new&lt;/span&gt;&lt;span class="punct"&gt;(&lt;/span&gt;&lt;span class="ident"&gt;wsdl&lt;/span&gt;&lt;span class="punct"&gt;).&lt;/span&gt;&lt;span class="ident"&gt;create_rpc_driver&lt;/span&gt;&lt;br /&gt;  &lt;span class="keyword"&gt;end&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;/blockquote&gt;&lt;br /&gt;'countrycode' and 'identifier' are the names of the ActiveRecord attributes containing respectively the 2 character ISO country code and the Vat number.&lt;br /&gt; &lt;br /&gt;For a bit of mild amusement I translated this into a REST based collection sat on &lt;a href="http://3accounts.co.uk/active_eu_vat_numbers"&gt;http://3accounts.co.uk/active_eu_vat_numbers&lt;/a&gt; so that you can get them using ActiveResource.&lt;br /&gt;&lt;br /&gt;&lt;blockquote style="margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;" class="gmail_quote"&gt;&lt;pre&gt;&lt;span class="keyword"&gt;class &lt;/span&gt;&lt;span class="class"&gt;ActiveEuVatNumber&lt;/span&gt; &lt;span class="punct"&gt;&amp;lt;&lt;/span&gt; &lt;span class="constant"&gt;ActiveResource&lt;/span&gt;&lt;span class="punct"&gt;::&lt;/span&gt;&lt;span class="constant"&gt;Base&lt;/span&gt;&lt;br /&gt; &lt;span class="constant"&gt;self&lt;/span&gt;&lt;span class="punct"&gt;.&lt;/span&gt;&lt;span class="ident"&gt;site&lt;/span&gt; &lt;span class="punct"&gt;=&lt;/span&gt; &lt;span class="punct"&gt;&amp;quot;&lt;/span&gt;&lt;span class="string"&gt;http://3accounts.co.uk&lt;/span&gt;&lt;span class="punct"&gt;&amp;quot;&lt;/span&gt;&lt;br /&gt;&lt;span class="keyword"&gt;end&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class="constant"&gt;ActiveEuVatNumber&lt;/span&gt;&lt;span class="punct"&gt;.&lt;/span&gt;&lt;span class="ident"&gt;find&lt;/span&gt;&lt;span class="punct"&gt;(&amp;quot;&lt;/span&gt;&lt;span class="string"&gt;gb123456789&lt;/span&gt;&lt;span class="punct"&gt;&amp;quot;)&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;You'll get an ActiveResource exception if the record doesn't exist.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1879770534244304287-7055227534646007970?l=www.3spoken.co.uk' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.3spoken.co.uk/feeds/7055227534646007970/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=1879770534244304287&amp;postID=7055227534646007970" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/1879770534244304287/posts/default/7055227534646007970?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/1879770534244304287/posts/default/7055227534646007970?v=2" /><link rel="alternate" type="text/html" href="http://www.3spoken.co.uk/2008/03/checking-for-active-eu-vat-numbers-in.html" title="Checking for Active EU Vat Numbers in Rails with SOAP and REST" /><author><name>Neil Wilson</name><uri>http://www.blogger.com/profile/18178155357632397049</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="02157711283556558102" /></author><thr:total>0</thr:total></entry><entry gd:etag="W/&quot;A0MFQ305fSp7ImA9WxZVFk8.&quot;"><id>tag:blogger.com,1999:blog-1879770534244304287.post-2519370341685505081</id><published>2008-03-26T12:08:00.006Z</published><updated>2008-03-27T14:50:12.325Z</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2008-03-27T14:50:12.325Z</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="plugins" /><category scheme="http://www.blogger.com/atom/ns#" term="rails" /><title>Validates As EU VAT Number Rails plugin published</title><content type="html">I&amp;#39;ve extracted the validation routines into a plugin that checks an ActiveRecord attribute to see if it conforms to the correct format for a VAT number. It works with all the EU countries and is tested with real EU VAT numbers as harvested from the good ol&amp;#39; Interweb.&lt;br&gt; &lt;br&gt;&lt;span style="font-weight: bold;"&gt;Install&lt;/span&gt;&lt;br&gt;&lt;br&gt;Install via script/plugin&lt;br&gt;&lt;br&gt;&lt;blockquote style="margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;" class="gmail_quote"&gt;&lt;pre&gt;script/plugin install http://accounts4free.rubyforge.org/svn/plugins/validates_as_eu_vat_number&lt;/pre&gt;&lt;/blockquote&gt;&lt;br&gt; &lt;br&gt;or use piston&lt;br&gt;&lt;br&gt;&lt;blockquote style="margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;" class="gmail_quote"&gt;&lt;pre&gt;piston import http://accounts4free.rubyforge.org/svn/plugins/validates_as_eu_vat_number&lt;/pre&gt;&lt;/blockquote&gt;&lt;br&gt;&lt;br&gt;&lt;span style="font-weight: bold;"&gt;Usage&lt;/span&gt;&lt;br&gt;&lt;br&gt;The plugin provides another validation helper &lt;span style="font-family: courier new,monospace;"&gt;validates_as_eu_vat_number &lt;/span&gt;which takes a set of attributes and an optional &lt;span style="font-family: courier new,monospace;"&gt;:with&lt;/span&gt; modifier that points to the attribute containing the country code, or a string containing the country code itself. If you don&amp;#39;t use the &lt;span style="font-family: courier new,monospace;"&gt;:with&lt;/span&gt; modifier then the routine expects the country code to be the first two characters of the attribute itself, e.g:&lt;br&gt; &lt;br&gt;&lt;blockquote style="margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;" class="gmail_quote"&gt;&lt;pre&gt;  &lt;span class="keyword"&gt;class &lt;/span&gt;&lt;span class="class"&gt;VatNumber&lt;/span&gt; &lt;span class="punct"&gt;&amp;lt;&lt;/span&gt; &lt;span class="constant"&gt;ActiveRecord&lt;/span&gt;&lt;span class="punct"&gt;::&lt;/span&gt;&lt;span class="constant"&gt;Base&lt;/span&gt;&lt;br /&gt;    &lt;span class="ident"&gt;validates_as_eu_vat_number&lt;/span&gt; &lt;span class="symbol"&gt;:full_vat_number&lt;/span&gt;&lt;br /&gt;    &lt;span class="ident"&gt;validates_as_eu_vat_number&lt;/span&gt; &lt;span class="symbol"&gt;:vat_number&lt;/span&gt;&lt;span class="punct"&gt;,&lt;/span&gt;&lt;br /&gt;                               &lt;span class="symbol"&gt;:with&lt;/span&gt; &lt;span class="punct"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="symbol"&gt;:country_code&lt;/span&gt;&lt;br /&gt;  &lt;span class="keyword"&gt;end&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;/blockquote&gt;&lt;br&gt;In common with other validates plugins, this one takes the usual &lt;span style="font-family: courier new,monospace;"&gt;:if, :unless, :on, :message, :allow_ni&lt;/span&gt;l and &lt;span style="font-family: courier new,monospace;"&gt;:allow_blank&lt;/span&gt; options provided by the underlying validation mechanism.&lt;br&gt; &lt;br&gt;&lt;span style="font-weight: bold;"&gt;Documentation&lt;br&gt;&lt;br&gt;&lt;span style="font-weight: bold;"&gt;&lt;/span&gt;&lt;/span&gt;The plugin has rdoc documentation included. Run &lt;span style="font-family: courier new,monospace;"&gt;rake &lt;/span&gt;within the plugin directory to create it.&lt;br&gt; &lt;br&gt;&lt;span style="font-weight: bold;"&gt;Testing&lt;/span&gt;&lt;br&gt;&lt;br&gt;ValidatesAsEuVatNumber has an extensive test suite created using &lt;a href="http://rspec.info/"&gt;Rspec&lt;/a&gt; and a lot of Googling for VAT numbers. The easiest way to run the test suite is to do rake spec:plugins from the root directory of the Rails application containing the plugin (and the rspec and rspec_on_rails plugins as well obviously).&lt;br&gt; &lt;br&gt;&lt;span style="font-weight: bold;"&gt;Freebies&lt;/span&gt;&lt;br&gt;&lt;br&gt;The plugin creates an EU module with a couple of constants in it. &lt;br&gt;&lt;br style="font-family: courier new,monospace;"&gt;&lt;span style="font-family: courier new,monospace;"&gt;EU::MEMBER_STATES_COUNTRY_CODES&lt;/span&gt; is an array containing the ISO code strings of all the EU member states.&lt;br&gt; &lt;span style="font-family: courier new,monospace;"&gt;EU::MEMBER_STATES_VAT_PICTURES&lt;/span&gt; is a hash indexed on the country code containing the Regular expression VAT pictures for every EU country .&lt;br&gt;&lt;br&gt;&lt;span style="font-weight: bold;"&gt;Links&lt;br&gt; &lt;br&gt;&lt;span style="font-weight: bold;"&gt;&lt;/span&gt;&lt;/span&gt;If you&amp;#39;re looking for a VAT validator but not working with Rails then you might want to try this &lt;a href="http://www.braemoor.co.uk/software/vat.shtml"&gt;Javascript validator&lt;/a&gt;&lt;span style="font-weight: bold;"&gt;&lt;span style="font-weight: bold;"&gt; &lt;br&gt; &lt;/span&gt;&lt;/span&gt;And if you just want to check a VAT number to see if it is live, then use the &lt;a href="http://ec.europa.eu/taxation_customs/vies/"&gt;online checker on Europa&lt;/a&gt;.&lt;br&gt;&lt;br&gt;&lt;span style="font-weight: bold;"&gt;Bugs/Comments/Faint Praise&lt;br&gt; &lt;br&gt;&lt;/span&gt;&lt;a href="mailto:aldursys@gmail.com?subject=ValidatesAsEuVatNumber%20Comment"&gt;Let me know&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1879770534244304287-2519370341685505081?l=www.3spoken.co.uk' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.3spoken.co.uk/feeds/2519370341685505081/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=1879770534244304287&amp;postID=2519370341685505081" title="1 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/1879770534244304287/posts/default/2519370341685505081?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/1879770534244304287/posts/default/2519370341685505081?v=2" /><link rel="alternate" type="text/html" href="http://www.3spoken.co.uk/2008/03/validates-as-eu-vat-number-rails-plugin.html" title="Validates As EU VAT Number Rails plugin published" /><author><name>Neil Wilson</name><uri>http://www.blogger.com/profile/18178155357632397049</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="02157711283556558102" /></author><thr:total>1</thr:total></entry><entry gd:etag="W/&quot;A08CRXc_eCp7ImA9WxZVFk8.&quot;"><id>tag:blogger.com,1999:blog-1879770534244304287.post-381104587570471257</id><published>2008-02-20T10:56:00.003Z</published><updated>2008-03-27T14:57:44.940Z</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2008-03-27T14:57:44.940Z</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="monit" /><category scheme="http://www.blogger.com/atom/ns#" term="rails" /><category scheme="http://www.blogger.com/atom/ns#" term="capistrano" /><title>Using Monit to manage your app servers in Capistrano 2</title><content type="html">If you've gone to the trouble of setting up monit on your server (or you're using a &lt;a href="http://www.brightbox.co.uk/"&gt;Brightbox&lt;/a&gt; like I am), why not let it take the strain of starting and stopping your app servers during a Capistrano deployment.&lt;br /&gt;&lt;br /&gt;Just stick this code snippet at the bottom of the &lt;code&gt;deploy.rb&lt;/code&gt; file.&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;&lt;span class="comment"&gt;# Redefine the application server controls to use monit.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class="ident"&gt;namespace&lt;/span&gt; &lt;span class="symbol"&gt;:deploy&lt;/span&gt; &lt;span class="keyword"&gt;do&lt;/span&gt;&lt;br /&gt;  &lt;span class="punct"&gt;%W(&lt;/span&gt;&lt;span class="string"&gt;start stop restart&lt;/span&gt;&lt;span class="punct"&gt;).&lt;/span&gt;&lt;span class="ident"&gt;each&lt;/span&gt; &lt;span class="keyword"&gt;do&lt;/span&gt; &lt;span class="punct"&gt;|&lt;/span&gt;&lt;span class="ident"&gt;event&lt;/span&gt;&lt;span class="punct"&gt;|&lt;/span&gt;&lt;br /&gt;    &lt;span class="ident"&gt;desc&lt;/span&gt; &lt;span class="punct"&gt;&amp;quot;&lt;/span&gt;&lt;span class="string"&gt;&lt;span class="expr"&gt;#{event}&lt;/span&gt; using Monit&lt;/span&gt;&lt;span class="punct"&gt;&amp;quot;&lt;/span&gt;&lt;br /&gt;    &lt;span class="ident"&gt;task&lt;/span&gt; &lt;span class="ident"&gt;event&lt;/span&gt;&lt;span class="punct"&gt;,&lt;/span&gt; &lt;span class="symbol"&gt;:except&lt;/span&gt; &lt;span class="punct"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="punct"&gt;{&lt;/span&gt; &lt;span class="symbol"&gt;:no_release&lt;/span&gt; &lt;span class="punct"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="constant"&gt;true&lt;/span&gt; &lt;span class="punct"&gt;}&lt;/span&gt; &lt;span class="keyword"&gt;do&lt;/span&gt;&lt;br /&gt;      &lt;span class="ident"&gt;sudo&lt;/span&gt; &lt;span class="punct"&gt;&amp;quot;&lt;/span&gt;&lt;span class="string"&gt;/usr/sbin/monit -g &lt;span class="expr"&gt;#{application}&lt;/span&gt; &lt;span class="expr"&gt;#{event}&lt;/span&gt; all&lt;/span&gt;&lt;span class="punct"&gt;&amp;quot;&lt;/span&gt;&lt;br /&gt;    &lt;span class="keyword"&gt;end&lt;/span&gt;&lt;br /&gt;  &lt;span class="keyword"&gt;end&lt;/span&gt;&lt;br /&gt;&lt;span class="keyword"&gt;end&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1879770534244304287-381104587570471257?l=www.3spoken.co.uk' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.3spoken.co.uk/feeds/381104587570471257/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=1879770534244304287&amp;postID=381104587570471257" title="2 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/1879770534244304287/posts/default/381104587570471257?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/1879770534244304287/posts/default/381104587570471257?v=2" /><link rel="alternate" type="text/html" href="http://www.3spoken.co.uk/2008/02/using-monit-to-manage-your-app-servers.html" title="Using Monit to manage your app servers in Capistrano 2" /><author><name>Neil Wilson</name><uri>http://www.blogger.com/profile/18178155357632397049</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="02157711283556558102" /></author><thr:total>2</thr:total></entry><entry gd:etag="W/&quot;A08MRH49cSp7ImA9WxZVFk8.&quot;"><id>tag:blogger.com,1999:blog-1879770534244304287.post-8630688486494210706</id><published>2008-02-04T19:17:00.001Z</published><updated>2008-03-27T14:58:05.069Z</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2008-03-27T14:58:05.069Z</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="reviews" /><category scheme="http://www.blogger.com/atom/ns#" term="rails" /><title>The Rails Way - if you haven't got it, get it.</title><content type="html">I've been working through &lt;a href="http://www.amazon.co.uk/gp/product/0321445619?ie=UTF8&amp;tag=aldursystems-21&amp;linkCode=as2&amp;camp=1634&amp;creative=6738&amp;creativeASIN=0321445619"&gt;The Rails Way&lt;/a&gt; by Obie Fernandez and it is most definitely the best reference text for Rails I've come across so far. It's in depth, informative and even opinionated in places. &lt;br /&gt;&lt;br /&gt;It covers Rails 2.0 but I found that throughout the text there were strange omissions - no mention of &lt;a href="http://ryandaigle.com/articles/2007/5/6/what-s-new-in-edge-rails-bringin-sexy-back"&gt;Sexy Migrations&lt;/a&gt; for example even though they've been there for nine months now. Having said that keeping up with a fast moving target like Rails can't be easy when you have a hungry publisher breathing down your neck.&lt;br /&gt;&lt;br /&gt;Anyway if you're a Rails developer you need this book.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1879770534244304287-8630688486494210706?l=www.3spoken.co.uk' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.3spoken.co.uk/feeds/8630688486494210706/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=1879770534244304287&amp;postID=8630688486494210706" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/1879770534244304287/posts/default/8630688486494210706?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/1879770534244304287/posts/default/8630688486494210706?v=2" /><link rel="alternate" type="text/html" href="http://www.3spoken.co.uk/2008/02/rails-way-if-you-havent-got-it-get-it.html" title="The Rails Way - if you haven't got it, get it." /><author><name>Neil Wilson</name><uri>http://www.blogger.com/profile/18178155357632397049</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="02157711283556558102" /></author><thr:total>0</thr:total></entry></feed>
