<?xml version="1.0" encoding="UTF-8"?> <rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:sy="http://purl.org/rss/1.0/modules/syndication/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" ><channel><title>Aaron Pollock</title> <atom:link href="http://vduglued.com/feed/" rel="self" type="application/rss+xml" /><link>http://vduglued.com</link> <description></description> <lastBuildDate>Wed, 08 Feb 2012 21:43:40 +0000</lastBuildDate> <language>en</language> <sy:updatePeriod>hourly</sy:updatePeriod> <sy:updateFrequency>1</sy:updateFrequency> <generator>http://wordpress.org/?v=3.3.1</generator> <item><title>First impressions of MoneyWell 2.0</title><link>http://vduglued.com/2012/02/a-review-of-moneywell-2/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=a-review-of-moneywell-2</link> <comments>http://vduglued.com/2012/02/a-review-of-moneywell-2/#comments</comments> <pubDate>Wed, 08 Feb 2012 21:38:07 +0000</pubDate> <dc:creator>Aaron Pollock</dc:creator> <category><![CDATA[Software]]></category> <category><![CDATA[budgeting]]></category> <category><![CDATA[finances]]></category> <category><![CDATA[moneywell]]></category> <category><![CDATA[reviews]]></category> <category><![CDATA[software]]></category><guid isPermaLink="false">http://vduglued.com/?p=163</guid> <description><![CDATA[MoneyWell is one of my favourite pieces of software. It allows me to allocate money each month to different buckets, and review these at the end of the month to see how my spending is going. I love it, and &#8230; <a href="http://vduglued.com/2012/02/a-review-of-moneywell-2/">Continue reading <span class="meta-nav">&#8594;</span></a><p><a href="http://vduglued.com/2012/02/a-review-of-moneywell-2/">First impressions of MoneyWell 2.0</a> is a post from: <a href="http://vduglued.com">Aaron Pollock</a></p> ]]></description> <content:encoded><![CDATA[<p>MoneyWell is one of my favourite pieces of software. It allows me to allocate money each month to different buckets, and review these at the end of the month to see how my spending is going. I love it, and I&#8217;m a serious bean counter, with every cash transaction logged on my iPhone moments after it happens. Every penny counts and every penny gets counted!</p><p>Version 2 was released today, one day ahead of schedule. After a few hours of playing with it, first impressions are good, but there are issues.</p><h2>Interface</h2><p>The aesthetics are much better, and the layout is close enough to version 1 to avoid scaring anyone off who&#8217;s been a long-time user.   It&#8217;s also good to have OSX Lion full screen support although I&#8217;ve found myself using this very little in any app.</p><p>One of the biggest problems I saw with version 1 was the confusion between the left navigation menu (switching between buckets or between bank accounts) and the bottom menu (switching between functional areas, like Cash Flow, Reconciliation, Duplicate Transactions). The two menus behave differently depending on your context in the other menu. This took time to get used to in version 1 and version 2 will be the same for newcomers.</p><p>While improvements have been made to reduce the number of items in each menu, I&#8217;d have liked a better solution to this whole multi-dimensional setup. That said, I can&#8217;t think what that better solution might look like. There&#8217;s a lot going on in there, and that&#8217;s part of the beauty of the thing.</p><h2>The Spending Plan</h2><p>The core of MoneyWell remains its buckets. Money is allocated to buckets in the same way that one might have used envelopes in the cash world (of the past?). Buckets can be created for different purposes from Groceries to Mobile Phone to whatever else you desire. I&#8217;ve used it in the past to save for specific holidays (a bucket for each), or big purchases (new laptop anyone?), allocating a cash amount to each bucket each month and trying to spend only what I&#8217;ve put in the bucket before the next payday.</p><p>Up until now, budgeting has very much been a secondary feature, with version 1 having a sometimes-buggy single screen to allocate a &#8220;fill&#8221; amount to each bucket every fortnight or every week. In version 2.0 this is totally overhauled. Instead of the monthly amount per bucket, it&#8217;s now possible to create &#8220;spending events&#8221; with dates and repeat cycles. This works very well for regular bills and income, as well as for one-off expenses at future dates (like holidays and new cars), and I love the idea in principle. It breaks down, however, when it comes to things which need to be included in a budget, but which don&#8217;t have a fixed transaction date: things like stationery, postage, entertainment or eating out (unless you do this on a regular schedule!). It feels a little forced to create an event on the first of each month for Entertainment just to get some money into that bucket.</p><p>There are bugs in this release, and from my own experience so far, they all involve the Spending Plan. I&#8217;ve had difficulty deleting transactions here and there, and I can&#8217;t work out how some of the spending plan calculations are done. I created an event at a specific date eight months away, with a monthly spending plan, and the amount MoneyWell calculated that I should contribute per month left a shortfall of four months (it must use a 12 month calculation despite the event date). I&#8217;m waiting for a response on the support forum.</p><p>I&#8217;m sympathetic about bugs in software &#8211; I know how hard it is to weed them out &#8211; but when it comes to tracking money, the basics are important, and I feel a bit frustrated. Could another week have made this a bit smoother? I know that version 2 has attempted to address some longer running issues such as Dropbox sync problems. Some people were having to reset their Dropbox sync periodically to keep things running. How successful this is remains to be seen, but it&#8217;d be great to see these problems eliminated.</p><h2>Investments</h2><p>This new section looked promising but I just don&#8217;t know how it&#8217;s supposed to work. Version 1 allowed certain accounts to be marked as &#8220;Investment&#8221; accounts, and version 2 adds a dedicated Portfolio screen which shows a list of assets and liabilities, calculating a personal net worth (always a scary one). There is room for a list of Securities too, but for me this is empty and I don&#8217;t see a way to add anything to this screen. I suspect that this is populated using a link to an online broker account, but I don&#8217;t have one that&#8217;s supported so I can&#8217;t test this.</p><p>I&#8217;d love to be able to add securities and investments manually, but as with the Spending Plan, until the documentation comes out, I&#8217;m guessing.</p><h2>The Upgrade</h2><p>I bought MoneyWell 1 from the No Thirst website but it&#8217;s also available in the Mac App Store. The upgrade for me was very smooth (I think the App Store might be even nicer?), although it does involve an automatic upgrade to the data file on your Mac. Version 2 has its own iPhone app, allowing both version 1 and 2 compatible apps to co-exists in the iPhone App Store. This meant that I had to delete my iPhone version 1 app and download version 2. No problem if you follow the instructions which are on their way to existing version 1 users by email.</p><h2>Documentation</h2><p>There is none! Not yet, anyway. And when it comes to bugs, it&#8217;s hard to know if I&#8217;m doing it wrong, or if there&#8217;s a real problem, because I just don&#8217;t know how it&#8217;s supposed to work in some very specific cases. I&#8217;m sure the tutorials will follow soon.</p><h2>Wait a bit longer</h2><p>If you&#8217;re still deciding whether or not to upgrade, I&#8217;d wait for a while. It&#8217;s possible to roll back apparently, but I&#8217;m going to stick it out and see how things go. By releasing a separate iPhone app for version 2 compatibility, No Thirst have ensured that people on version 1.7 can keep running it for as long as they want, but I&#8217;d give it a week or more before upgrading, still staying within the special upgrade pricing currently available (until 23rd February). By then, hopefully, any serious remaining questions/issues can be ironed out.</p><p>With hindsight, upgrading on the (early) release day was a bad idea and not something I&#8217;d usually do, but I was genuinely more excited than one should be about an app for budgeting!</p><p><a href="http://vduglued.com/2012/02/a-review-of-moneywell-2/">First impressions of MoneyWell 2.0</a> is a post from: <a href="http://vduglued.com">Aaron Pollock</a></p> ]]></content:encoded> <wfw:commentRss>http://vduglued.com/2012/02/a-review-of-moneywell-2/feed/</wfw:commentRss> <slash:comments>0</slash:comments> </item> <item><title>Organising RSS feeds by purpose</title><link>http://vduglued.com/2012/01/organising-rss-feeds-by-purpose/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=organising-rss-feeds-by-purpose</link> <comments>http://vduglued.com/2012/01/organising-rss-feeds-by-purpose/#comments</comments> <pubDate>Sat, 21 Jan 2012 18:14:36 +0000</pubDate> <dc:creator>Aaron Pollock</dc:creator> <category><![CDATA[Productivity]]></category> <category><![CDATA[google reader]]></category> <category><![CDATA[reading]]></category> <category><![CDATA[rss]]></category><guid isPermaLink="false">http://vduglued.com/?p=143</guid> <description><![CDATA[Every so often I cull RSS feeds from Google Reader. Sometimes, led by a single good article, I&#8217;ll subscribe to a whole feed only to be disappointed by what comes later. Other times, I&#8217;ll let the queue build up for weeks &#8230; <a href="http://vduglued.com/2012/01/organising-rss-feeds-by-purpose/">Continue reading <span class="meta-nav">&#8594;</span></a><p><a href="http://vduglued.com/2012/01/organising-rss-feeds-by-purpose/">Organising RSS feeds by purpose</a> is a post from: <a href="http://vduglued.com">Aaron Pollock</a></p> ]]></description> <content:encoded><![CDATA[<p>Every so often I cull RSS feeds from Google Reader. Sometimes, led by a single good article, I&#8217;ll subscribe to a whole feed only to be disappointed by what comes later. Other times, I&#8217;ll let the queue build up for weeks until the only sensible way out is to mark all items as read. The problem is that everything, good and bad, gets &#8220;deleted&#8221;.</p><p>Up until now, I&#8217;ve managed feeds by category: &#8220;Programming&#8221;, &#8220;Money&#8221;, &#8220;Movies&#8221;, &#8220;Food&#8221; and so on, but it occurred to me that it might be better to organise them by purpose: the reason I subscribed in the first place.</p><p>I&#8217;m working through several hundred feeds, deleting any which don&#8217;t have any purpose at all (they&#8217;re a waste of time at screen, which I want to reduce) and adding tags to those which are useful. Some examples of the categories I&#8217;ve created are:</p><ul><li><em><strong>News about APIs and tools</strong></em> (when Facebook change their API, it&#8217;s good for a Facebook developer to know; it&#8217;s the same for upcoming releases of some of the software and web services that I use every day).</li><li><em><strong>Techniques for web development</strong></em>: strictly technical articles. Proper sit-down-and-learn-something content. This is where the real value lies but, because of the effort, these articles are usually the least read.</li><li><strong><em>Soft skills and career skills</em></strong>: they matter almost as much as the technical info but to get on the list, they have to be practical and go beyond the obvious. Unlike the technical blogs, the barrier to entry to create this type of content is low (I&#8217;m doing it right now), and the average quality of sites pushing it out usually is too (cough).</li><li><strong><em>Healthier ways of eating and living</em></strong>: like the other folders/tags, the purpose is clear. For me, this is more about inspiration than knowledge. I do what I know I shouldn&#8217;t, going to bed too late, eating too much of the wrong things, and spending too much time in front of screens and not enough doing other things.</li><li><em><strong>Inspiration from other people</strong></em>: there are dozens of blogs that I follow purely for inspiration, usually person blogs which span all kinds of subjects and interests. Categorising them as such means I can prioritise accordingly. Better to live ones own life than read about other people&#8217;s &#8211; most of the time, at least.</li></ul><p><a href="http://vduglued.com/2012/01/organising-rss-feeds-by-purpose/">Organising RSS feeds by purpose</a> is a post from: <a href="http://vduglued.com">Aaron Pollock</a></p> ]]></content:encoded> <wfw:commentRss>http://vduglued.com/2012/01/organising-rss-feeds-by-purpose/feed/</wfw:commentRss> <slash:comments>0</slash:comments> </item> <item><title>Learning SQL, again</title><link>http://vduglued.com/2011/12/learning-sql-again/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=learning-sql-again</link> <comments>http://vduglued.com/2011/12/learning-sql-again/#comments</comments> <pubDate>Sun, 18 Dec 2011 11:51:46 +0000</pubDate> <dc:creator>Aaron Pollock</dc:creator> <category><![CDATA[Books]]></category> <category><![CDATA[books]]></category> <category><![CDATA[mysql]]></category> <category><![CDATA[sql]]></category><guid isPermaLink="false">http://vduglued.com/?p=100</guid> <description><![CDATA[LEFT JOIN, RIGHT JOIN, INNER, OUTER, HAVING, and whatnot. I think it&#8217;s time to deal with my SQL gap which has gone unchecked because of an over-dependence on frameworks. Christmas reading part one. Back to basics for me with Learning &#8230; <a href="http://vduglued.com/2011/12/learning-sql-again/">Continue reading <span class="meta-nav">&#8594;</span></a><p><a href="http://vduglued.com/2011/12/learning-sql-again/">Learning SQL, again</a> is a post from: <a href="http://vduglued.com">Aaron Pollock</a></p> ]]></description> <content:encoded><![CDATA[<p><a href="http://shop.oreilly.com/product/9780596520847.do?sortby=publicationDate"><img class="size-medium wp-image-101 alignright" title="Learning SQL" src="http://vdugluedassets.s3.amazonaws.com/wp-content/uploads/2011/12/lrg-228x300.jpg?25a3a7" alt="Learning SQL book cover" width="228" height="300" /></a></p><p>LEFT JOIN, RIGHT JOIN, INNER, OUTER, HAVING, and whatnot. I think it&#8217;s time to deal with my SQL gap which has gone unchecked because of an over-dependence on frameworks.</p><p>Christmas reading part one. Back to basics for me with <a href="http://shop.oreilly.com/product/9780596520847.do?sortby=publicationDate">Learning SQL 2nd Edition</a>.</p><p><a href="http://vduglued.com/2011/12/learning-sql-again/">Learning SQL, again</a> is a post from: <a href="http://vduglued.com">Aaron Pollock</a></p> ]]></content:encoded> <wfw:commentRss>http://vduglued.com/2011/12/learning-sql-again/feed/</wfw:commentRss> <slash:comments>0</slash:comments> </item> <item><title>Stephen Fry on Language</title><link>http://vduglued.com/2011/12/stephen-fry-on-language/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=stephen-fry-on-language</link> <comments>http://vduglued.com/2011/12/stephen-fry-on-language/#comments</comments> <pubDate>Sat, 10 Dec 2011 17:09:02 +0000</pubDate> <dc:creator>Aaron Pollock</dc:creator> <category><![CDATA[Quotes]]></category> <category><![CDATA[grammar]]></category> <category><![CDATA[language]]></category> <category><![CDATA[pedants]]></category><guid isPermaLink="false">http://vduglued.com/blog/?p=84</guid> <description><![CDATA[Stephen Fry on Language is a post from: Aaron Pollock<p><a href="http://vduglued.com/2011/12/stephen-fry-on-language/">Stephen Fry on Language</a> is a post from: <a href="http://vduglued.com">Aaron Pollock</a></p> ]]></description> <content:encoded><![CDATA[<p><iframe width="674" height="343" src="http://www.youtube-nocookie.com/embed/J7E-aoXLZGY" frameborder="0" allowfullscreen></iframe></p><p><a href="http://vduglued.com/2011/12/stephen-fry-on-language/">Stephen Fry on Language</a> is a post from: <a href="http://vduglued.com">Aaron Pollock</a></p> ]]></content:encoded> <wfw:commentRss>http://vduglued.com/2011/12/stephen-fry-on-language/feed/</wfw:commentRss> <slash:comments>0</slash:comments> </item> <item><title>Leverage</title><link>http://vduglued.com/2011/12/leverage/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=leverage</link> <comments>http://vduglued.com/2011/12/leverage/#comments</comments> <pubDate>Sat, 10 Dec 2011 13:31:16 +0000</pubDate> <dc:creator>Aaron Pollock</dc:creator> <category><![CDATA[Programming]]></category> <category><![CDATA[design]]></category> <category><![CDATA[leverage]]></category><guid isPermaLink="false">http://vduglued.com/blog/2011/12/leverage/</guid> <description><![CDATA[It occurred to me that software or web development is a capital creation: write once, use many. In even the smallest site, a good or bad choice by designer or developer will affect every user, every time they use it. &#8230; <a href="http://vduglued.com/2011/12/leverage/">Continue reading <span class="meta-nav">&#8594;</span></a><p><a href="http://vduglued.com/2011/12/leverage/">Leverage</a> is a post from: <a href="http://vduglued.com">Aaron Pollock</a></p> ]]></description> <content:encoded><![CDATA[<p>It occurred to me that software or web development is a capital creation: write once, use many. In even the smallest site, a good or bad choice by designer or developer will affect every user, every time they use it. Leverage for better, or for worse.</p><p>A decision to cut a corner because of budget &#8211; or laziness &#8211; says that X minutes of my time is more valuable than (USERS * X) minutes of everyone else&#8217;s time.</p><p><a href="http://vduglued.com/2011/12/leverage/">Leverage</a> is a post from: <a href="http://vduglued.com">Aaron Pollock</a></p> ]]></content:encoded> <wfw:commentRss>http://vduglued.com/2011/12/leverage/feed/</wfw:commentRss> <slash:comments>0</slash:comments> </item> <item><title>On joining the army</title><link>http://vduglued.com/2011/11/on-joining-the-army/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=on-joining-the-army</link> <comments>http://vduglued.com/2011/11/on-joining-the-army/#comments</comments> <pubDate>Sun, 27 Nov 2011 20:09:19 +0000</pubDate> <dc:creator>Aaron Pollock</dc:creator> <category><![CDATA[Quotes]]></category> <category><![CDATA[family]]></category> <category><![CDATA[military]]></category> <category><![CDATA[politics]]></category><guid isPermaLink="false">http://vduglued.com/?p=114</guid> <description><![CDATA[My dad asked my brother whether he’d consider joining the army. No, because I’d end up shooting at some boy, and he’d be shooting at me, and neither of the two of us would have done anything to the other &#8230; <a href="http://vduglued.com/2011/11/on-joining-the-army/">Continue reading <span class="meta-nav">&#8594;</span></a><p><a href="http://vduglued.com/2011/11/on-joining-the-army/">On joining the army</a> is a post from: <a href="http://vduglued.com">Aaron Pollock</a></p> ]]></description> <content:encoded><![CDATA[<p>My dad asked my brother whether he’d consider joining the army.</p><blockquote><p>No, because I’d end up shooting at some boy, and he’d be shooting at me, and neither of the two of us would have done anything to the other to give us a reason.</p></blockquote><p><a href="http://vduglued.com/2011/11/on-joining-the-army/">On joining the army</a> is a post from: <a href="http://vduglued.com">Aaron Pollock</a></p> ]]></content:encoded> <wfw:commentRss>http://vduglued.com/2011/11/on-joining-the-army/feed/</wfw:commentRss> <slash:comments>0</slash:comments> </item> <item><title>How to Make Wealth, and the Occupy Movement</title><link>http://vduglued.com/2011/11/how-to-make-wealth-and-the-occupy-movement/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=how-to-make-wealth-and-the-occupy-movement</link> <comments>http://vduglued.com/2011/11/how-to-make-wealth-and-the-occupy-movement/#comments</comments> <pubDate>Sun, 27 Nov 2011 14:59:51 +0000</pubDate> <dc:creator>Aaron Pollock</dc:creator> <category><![CDATA[Business]]></category> <category><![CDATA[capitalism]]></category> <category><![CDATA[jobs]]></category> <category><![CDATA[occupy movement]]></category> <category><![CDATA[startups]]></category> <category><![CDATA[wealth creation]]></category><guid isPermaLink="false">http://vduglued.com/blog/?p=49</guid> <description><![CDATA[Most of us work for &#8220;The Company&#8221;. We do what&#8217;s assigned, and we go home. We come to expect that The Company should pay us a fixed amount each year, and that this should be secure. This is what most &#8230; <a href="http://vduglued.com/2011/11/how-to-make-wealth-and-the-occupy-movement/">Continue reading <span class="meta-nav">&#8594;</span></a><p><a href="http://vduglued.com/2011/11/how-to-make-wealth-and-the-occupy-movement/">How to Make Wealth, and the Occupy Movement</a> is a post from: <a href="http://vduglued.com">Aaron Pollock</a></p> ]]></description> <content:encoded><![CDATA[<p>Most of us work for &#8220;The Company&#8221;. We do what&#8217;s assigned, and we go home. We come to expect that The Company should pay us a fixed amount each year, and that this should be secure. This is what most of our parents taught us to do. It worked quite well for them, after all.</p><p>We watch TV news, and listen to politicians who talk about dividing all the stuff between all the people. We sometimes think a &#8220;good system&#8221; is one which divides it equally so that nobody goes without. <a href="http://en.wikipedia.org/wiki/Occupy_movement">We hate the idea that 1% of the people have 99% of the stuff</a> &#8211; at least unless we find ourselves in the 1%.</p><p>But The Company, just like our politics and our media, is an averaging machine. It take a group of people, some of whom are really good and some of whom do very little, and gives them all a secure income. (The bigger the company, the less significant the individual, the more secure the income.) The Company ensures that everyone is taken care of and that, on the whole, there&#8217;s something left over. This leftover money, a beautiful concept, goes to the <del>shareholders</del> / <del>evil bastards</del> / people who made smarter choices. They become wealthier.</p><p>Getting our money at the end of the month, rain or shine, is great. I love it. But what if you want more than your equal share? What if you realise that the amount of wealth in the world isn&#8217;t a finite quantity and that The Company is creating new wealth (i.e. profit)? What if you wanted to create your own little bit of wealth that didn&#8217;t exist before?</p><p>Paul Graham&#8217;s essay, <em>How to Make Wealth</em>, isn&#8217;t new (2004), but one of the best things I&#8217;ve read for a while. It&#8217;s one of those pieces which deconstructs how the world works, and puts it together again with a different perspective. It helps us unlearn those beliefs which, I think, lead to entitlement and to see that, whether we&#8217;re The Company or the employee, both money and wealth only come from selling good stuff to people who want to buy it.</p><p>&nbsp;</p> <a target="_blank" class="link-format-btn" href="http://paulgraham.com/wealth.html"><span>How to Make Wealth</span></a><p><a href="http://vduglued.com/2011/11/how-to-make-wealth-and-the-occupy-movement/">How to Make Wealth, and the Occupy Movement</a> is a post from: <a href="http://vduglued.com">Aaron Pollock</a></p> ]]></content:encoded> <wfw:commentRss>http://vduglued.com/2011/11/how-to-make-wealth-and-the-occupy-movement/feed/</wfw:commentRss> <slash:comments>0</slash:comments> </item> <item><title>Jason Fried on Business</title><link>http://vduglued.com/2011/11/jason-fried-on-business/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=jason-fried-on-business</link> <comments>http://vduglued.com/2011/11/jason-fried-on-business/#comments</comments> <pubDate>Sat, 26 Nov 2011 18:12:34 +0000</pubDate> <dc:creator>Aaron Pollock</dc:creator> <category><![CDATA[Business]]></category> <category><![CDATA[37signals]]></category> <category><![CDATA[business]]></category> <category><![CDATA[facebook]]></category> <category><![CDATA[profit]]></category> <category><![CDATA[user numbers]]></category> <category><![CDATA[youtube]]></category><guid isPermaLink="false">http://vduglued.com/blog/?p=43</guid> <description><![CDATA[Jason Fried, writing in 2009, said business is about profit. Who knew? It really bothers me that the definition of success has changed from profits to followers, friends, and feed count. This crap doesn&#8217;t mean anything. Kids are coming out &#8230; <a href="http://vduglued.com/2011/11/jason-fried-on-business/">Continue reading <span class="meta-nav">&#8594;</span></a><p><a href="http://vduglued.com/2011/11/jason-fried-on-business/">Jason Fried on Business</a> is a post from: <a href="http://vduglued.com">Aaron Pollock</a></p> ]]></description> <content:encoded><![CDATA[<p>Jason Fried, writing in 2009, said <a href="http://www.inc.com/magazine/20091101/the-way-i-work-jason-fried-of-37signals.html">business is about profit</a>. Who knew?</p><blockquote><p>It really bothers me that the definition of success has changed from profits to followers, friends, and feed count. This crap doesn&#8217;t mean anything. Kids are coming out of school thinking, I want to start the next YouTube or Facebook. If a restaurant served more food than everybody else but lost money on every diner, would it be successful? No. But on the Internet, for some reason, if you have more users than everyone else, you&#8217;re successful. No, you&#8217;re not.</p></blockquote><p><a href="http://vduglued.com/2011/11/jason-fried-on-business/">Jason Fried on Business</a> is a post from: <a href="http://vduglued.com">Aaron Pollock</a></p> ]]></content:encoded> <wfw:commentRss>http://vduglued.com/2011/11/jason-fried-on-business/feed/</wfw:commentRss> <slash:comments>0</slash:comments> </item> <item><title>Easy CakePHP permalinks and URL slugs with SluggableBehavior</title><link>http://vduglued.com/2011/11/easy-cakephp-permalinks-and-url-slugs-with-sluggablebehavior/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=easy-cakephp-permalinks-and-url-slugs-with-sluggablebehavior</link> <comments>http://vduglued.com/2011/11/easy-cakephp-permalinks-and-url-slugs-with-sluggablebehavior/#comments</comments> <pubDate>Fri, 25 Nov 2011 21:04:21 +0000</pubDate> <dc:creator>Aaron Pollock</dc:creator> <category><![CDATA[Programming]]></category> <category><![CDATA[behaviours]]></category> <category><![CDATA[cakephp]]></category> <category><![CDATA[permalinks]]></category><guid isPermaLink="false">http://vduglued.com/blog/?p=31</guid> <description><![CDATA[I put together a CakePHP behaviour for generation of permalinks as a record is saved to the database. This has been shown to help with search engine optimisation, getting important keywords and phrases into your site URLs. Go from this: http://example.com/posts/view/23 &#8230; <a href="http://vduglued.com/2011/11/easy-cakephp-permalinks-and-url-slugs-with-sluggablebehavior/">Continue reading <span class="meta-nav">&#8594;</span></a><p><a href="http://vduglued.com/2011/11/easy-cakephp-permalinks-and-url-slugs-with-sluggablebehavior/">Easy CakePHP permalinks and URL slugs with SluggableBehavior</a> is a post from: <a href="http://vduglued.com">Aaron Pollock</a></p> ]]></description> <content:encoded><![CDATA[<p>I put together a CakePHP behaviour for generation of permalinks as a record is saved to the database.<br /> This has been shown to help with search engine optimisation, getting important keywords and phrases into your site URLs.</p><p>Go from this: http://example.com/posts/view/23</p><p>To this: http://example.com/posts/view/great-new-widget-product-released</p><ul><li>Specify a source field from which the slug should be generated (e.g. column &#8220;headline&#8221; : &#8216;The Great &amp; the Good&#8217;)</li><li>Specify a database field into which the slug should be stored (e.g. column &#8220;slug&#8221; : &#8216;the_great_the_good&#8217;)</li><li>Automatically handle potential duplicates, adding numerical suffixes accordingly</li><li>Keep slugs constant even when source field changes (for true permalinks)</li><li>Slug may be manually overridden without problems by putting it into the data array being saved in Cake</li></ul><div><span id="more-31"></span></div><h2>Download the source file</h2><p><a href="https://github.com/vduglued/CakePHP-Sluggable-Behavior">Pick up the sluggable.php file from Github</a> and put it in your CakePHP app (folder is /app/models/behaviors/).</p><h2>Set up your database field</h2><p>Create a VARCHAR column in the relevant database table. The default column name is &#8220;slug&#8221;, so stick with that unless you have any reason to do otherwise.</p><p>URLs have a length limit, so I recommend a maximum slug field length of 100 to leave room for the rest of the URL</p><h2>Add the behaviour to your CakePHP model(s)</h2><p>For the basic installation, add the following to the correct model in your CakePHP app (or adjust your $actsAs model member variable to include Sluggable):</p><pre>var $actsAs = array(
	'Sluggable' =&gt; array(
		'title_field' =&gt; 'title'
	)
);</pre><p>&nbsp;</p><p>The title_field is the database field from which the slug will be generated – usually the title of your record. You can specify a few other options, the default values for which are shown below:</p><pre>var $actsAs = array(
	'Sluggable' =&gt; array(
		'title_field' =&gt; 'title',
		'slug_field' =&gt; 'slug',
		'slug_max_length' =&gt; 100
	)
);</pre><p>&nbsp;</p><p>Check that the maximum length matches the length of your VARCHAR field.</p><h2>Update your controllers and views</h2><p>Here&#8217;s a basic controller action example to pull a single record using its permalink instead of its ID:</p><pre>function view($permalink=null)
{
	$post = $this-&gt;Post-&gt;findBySlug($permalink);

	if (!$post){
		$this-&gt;cakeError('error404');
	}
	$this-&gt;set('post', $post);
}</pre><p>&nbsp;</p><p>Links to this page would look like this:</p><p>http://example.com/posts/view/my_great_news_story</p><p>Using the HTML helper to generate the link:</p><pre>$html-&gt;link('Great Story', array(
	'controller'=&gt;'posts',
	'action'=&gt;'view',
	$post['Post']['slug']
));</pre><p>&nbsp;</p><p>That&#8217;s that!</p><p><a href="http://vduglued.com/2011/11/easy-cakephp-permalinks-and-url-slugs-with-sluggablebehavior/">Easy CakePHP permalinks and URL slugs with SluggableBehavior</a> is a post from: <a href="http://vduglued.com">Aaron Pollock</a></p> ]]></content:encoded> <wfw:commentRss>http://vduglued.com/2011/11/easy-cakephp-permalinks-and-url-slugs-with-sluggablebehavior/feed/</wfw:commentRss> <slash:comments>0</slash:comments> </item> <item><title>PHP Parser for Apache &#8220;common&#8221; Logs</title><link>http://vduglued.com/2011/10/php-parser-for-apache-common-logs/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=php-parser-for-apache-common-logs</link> <comments>http://vduglued.com/2011/10/php-parser-for-apache-common-logs/#comments</comments> <pubDate>Sun, 09 Oct 2011 15:58:15 +0000</pubDate> <dc:creator>Aaron Pollock</dc:creator> <category><![CDATA[Programming]]></category><guid isPermaLink="false">http://vduglued.com/blog/?p=18</guid> <description><![CDATA[I&#8217;m working on a project that needed a parser for Apache log files. Specifically, I&#8217;m parsing the default &#8220;common&#8221; log files generated by Apache 2. One of the difficulties I have is that log files get big quickly, and I &#8230; <a href="http://vduglued.com/2011/10/php-parser-for-apache-common-logs/">Continue reading <span class="meta-nav">&#8594;</span></a><p><a href="http://vduglued.com/2011/10/php-parser-for-apache-common-logs/">PHP Parser for Apache &#8220;common&#8221; Logs</a> is a post from: <a href="http://vduglued.com">Aaron Pollock</a></p> ]]></description> <content:encoded><![CDATA[<p>I&#8217;m working on a project that needed a parser for Apache log files. Specifically, I&#8217;m parsing the default &#8220;common&#8221; log files generated by Apache 2.</p><p>One of the difficulties I have is that log files get big quickly, and I only want to pull the most recent entries (starting from a specified date/time), without reading the whole file.</p><ul><li>Efficiently retrieve entries from a specific date onwards</li><li>View elements of each log entry in an associative array (protocol, time, response code, path, referrer, etc.)</li><li>Ignores HTTP hits which aren&#8217;t page views (uses a list of extensions) &#8211; room for improvement here perhaps</li><li>Very efficient compared to reading in the whole file to get a subset of the data in a large log</li></ul><p>It&#8217;s on Github and quite well documented internally (phpDocs) so maybe useful for other projects too.</p><p><a href="https://github.com/vduglued/Apache-Logfile-Parser" target="_blank">https://github.com/vduglued/Apache-Logfile-Parser</a></p><p><a href="http://vduglued.com/2011/10/php-parser-for-apache-common-logs/">PHP Parser for Apache &#8220;common&#8221; Logs</a> is a post from: <a href="http://vduglued.com">Aaron Pollock</a></p> ]]></content:encoded> <wfw:commentRss>http://vduglued.com/2011/10/php-parser-for-apache-common-logs/feed/</wfw:commentRss> <slash:comments>0</slash:comments> </item> </channel> </rss>
<!-- Performance optimized by W3 Total Cache. Learn more: http://www.w3-edge.com/wordpress-plugins/

Minified using apc
Page Caching using apc
Object Caching 1164/1303 objects using apc
Content Delivery Network via Amazon Web Services: S3: vdugluedassets.s3.amazonaws.com

Served from: vduglued.com @ 2012-02-22 19:12:18 -->
