<?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:feedburner="http://rssnamespace.org/feedburner/ext/1.0">
  <title>Geek</title>
  
  <link href="http://abscond.org/posts" rel="alternate" />
  <id>http://abscond.org/posts</id>
  <updated>2008-02-18T11:30:00Z</updated>
  <author>
    <name>James Darling</name>
  </author>
  <link rel="self" href="http://feeds.feedburner.com/abscond/geek" type="application/atom+xml" /><feedburner:browserFriendly></feedburner:browserFriendly><entry>
    <title>Javascript Array to Sentence</title>
    <link href="http://abscond.org/entry/show/2391" rel="alternate" />
    <id>http://abscond.org/entry/show/2391</id>
    <updated>2008-02-18T11:30:00Z</updated>
    <author>
      <name>James Darling</name>
    </author>
    <summary>Post summary</summary>
    <content type="html">
&lt;p&gt;I'm sure this is everywhere online, but I couldn't find it quickly.&lt;/p&gt;

&lt;p&gt;Requires prototype.&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;Array.prototype.toSentence = function() {
    switch (this.size()) {
        case 0: return "";
        case 1: return this.first();
        case 2: return this[0] + " and " + this[1];
        default: return this.slice(0, -1).join(', ') + " and " + this.last();
    }
};

$A(["this", "that", "other"]).toSentence();
// "this, that and other"
&lt;/code&gt;&lt;/pre&gt;    </content>
  </entry>
  <entry>
    <title>IT Software Procurement</title>
    <link href="http://abscond.org/entry/show/2381" rel="alternate" />
    <id>http://abscond.org/entry/show/2381</id>
    <updated>2007-10-11T19:45:00Z</updated>
    <author>
      <name>James Darling</name>
    </author>
    <summary>Post summary</summary>
    <content type="html">
&lt;blockquote&gt;
    &lt;blockquote&gt;
        &lt;p&gt;“The Government are spending public money, and in doing so, it is difficult to see how they are not also breaching state aid rules and providing illegal state aid. If someone cannot access benefits online without using a Windows-based computer, as is currently the case, I do not see how the Government can be doing anything other than involving themselves in illegal state aid.”&lt;/p&gt;
    &lt;/blockquote&gt;
&lt;/blockquote&gt;

&lt;p&gt;John Pugh MP during an &lt;a href="http://www.theyworkforyou.com/whall/?id=2007-10-09a.46.0"&gt;adjournment debate on IT software procurement&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;via the wonderful &lt;a href="http://www.openrightsgroup.org/2007/10/11/uk-government-accused-of-breaching-state-aid-rules-in-software-procurement/"&gt;ORG&lt;/a&gt;&lt;/p&gt;    </content>
  </entry>
  <entry>
    <title>holy crap</title>
    <link href="http://abscond.org/entry/show/2378" rel="alternate" />
    <id>http://abscond.org/entry/show/2378</id>
    <updated>2007-09-08T16:18:00Z</updated>
    <author>
      <name>James Darling</name>
    </author>
    <summary>Post summary</summary>
    <content type="html">
&lt;p&gt;First blog from an iPhone!!!!&lt;/p&gt;

&lt;p&gt;I'm giggling like a girl.&lt;/p&gt;    </content>
  </entry>
  <entry>
    <title>PostgreSQL &amp; PostGIS database installation and setup on OS X</title>
    <link href="http://abscond.org/entry/show/2373" rel="alternate" />
    <id>http://abscond.org/entry/show/2373</id>
    <updated>2007-06-05T15:57:00Z</updated>
    <author>
      <name>James Darling</name>
    </author>
    <summary>Post summary</summary>
    <content type="html">
&lt;p&gt;At my new job, we play with maps and do crazy things with spacial data storage. We use the PostreSQL database with PostGIS on top.
&lt;br/&gt;
Whilst I'm not particularly involved in the development of these things, I do require to have it up and running to develop on the same application. So my first day at my new job wasn't very fun when I had to spend half of it figuring out this PostGIS thing. I never liked Databases (I'm still pushing for flat file storage in our apps), and this new foreign language was very hard, especially seeing as I immediately placed as head of Macintosh support at the company (both of them).
&lt;br/&gt;
There were a few solutions out there, and I got myself in a pickle switching between custom builds, ports and binaries, unsure about what was what, and which path to go down.&lt;/p&gt;

&lt;p&gt;I've now done it a few times, and this is what I find works for me:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Install the &lt;a href="http://www.kyngchaos.com/software/unixport/frameworks"&gt;"Unix Compatability Frameworks"&lt;/a&gt; (&lt;a href="http://www.kyngchaos.com/files/software/unixport/AllFrameworks.dmg"&gt;Direct Link&lt;/a&gt;) by &lt;a href="http://www.kyngchaos.com"&gt;Kyng Chaos&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;From the Kyng Chaos &lt;a href="http://www.kyngchaos.com/software/unixport/postgres"&gt;Postres Page&lt;/a&gt; install &lt;a href="http://www.kyngchaos.com/files/software/unixport/pgsql-8.2.4-2.dmg"&gt;PostreSQL&lt;/a&gt; (You might as well install the startup item as well, although it hasn't always worked for me)&lt;/li&gt;
&lt;li&gt;Then &lt;a href="http://www.kyngchaos.com/files/software/unixport/postgis-1.2.1-2.dmg"&gt;PostGIS&lt;/a&gt; from the same page&lt;/li&gt;
&lt;li&gt;Start the Postgres server without restarting by typing the following into the terminal&lt;/li&gt;
&lt;/ol&gt;

&lt;pre&gt;&lt;code&gt;sudo SystemStarter start PostgreSQL&lt;/code&gt;&lt;/pre&gt;

&lt;ol&gt;
&lt;li&gt;If you don't have pgAdmin - go &lt;a href="http://www.pgadmin.org/download/macosx.php"&gt;grab it and install it&lt;/a&gt; now.&lt;/li&gt;
&lt;li&gt;Open up pgAdmin, and if you don't already have a localhost connection in the right sidebar - add a new connection with the host of 'localhost' and all other options default (user = postgres with no password)&lt;/li&gt;
&lt;li&gt;In pgAdmin - connect to the localhost server, then right click on 'Login Roles' - the go to 'New Login Role'.&lt;/li&gt;
&lt;li&gt;Assuming the DB isn't precious, I find it easiest if you create the user to have the same username as your OSX shortname, witht he same password, and all the Privileges ticked.&lt;/li&gt;
&lt;li&gt;Right click on Databases, create a database where the owner is you, with the name that you want. Rest can be left blank.&lt;/li&gt;
&lt;li&gt;Open a Terminal window, and run the following 3 commands (replacing yourdatabasename):&lt;/li&gt;
&lt;/ol&gt;

&lt;pre&gt;&lt;code&gt;createlang plpgsql **yourdatabasename**
psql -d **yourdatabasename** -f /usr/local/pgsql/share/lwpostgis.sql
psql -d **yourdatabasename** -f /usr/local/pgsql/share/spatial_ref_sys.sql&lt;/code&gt;&lt;/pre&gt;

&lt;ol&gt;
&lt;li&gt;Crack open a beer, and get coding. You've finished setting up.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;And by Markdown's interesting interpretation of my write-up, that makes it a 1 step install!&lt;/p&gt;

&lt;p&gt;If you have any problems, leave a comment. I'm hardly an expert, but if I'm so lucky as to actually know the problem, I'll update the guide to make it more concise.&lt;/p&gt;

&lt;p&gt;If there are no comments, then I'm going to assume it's not because no-one's used this, but that it's so damn good, no-one had any problems.&lt;/p&gt;    </content>
  </entry>
  <entry>
    <title>Plaintext Passwords</title>
    <link href="http://abscond.org/entry/show/2369" rel="alternate" />
    <id>http://abscond.org/entry/show/2369</id>
    <updated>2007-04-13T06:53:00Z</updated>
    <author>
      <name>James Darling</name>
    </author>
    <summary>Post summary</summary>
    <content type="html">
&lt;p&gt;My Macbook Pro is down for a few weeks (don't ask), so I've been working on Naomi's Macbook. DefaultSettingsRUs.&lt;/p&gt;

&lt;p&gt;Last night I was desperate to listen to &lt;a href="http://en.wikipedia.org/wiki/Four_Tet"&gt;Four Tet&lt;/a&gt; to get me through some late night work in the office, and as I didn't have my Music collection with me, I tumbled along to &lt;a href="http://www.bleep.com"&gt;Bleep&lt;/a&gt;, they're a good independent online MP3 shop that I've always respected after all.&lt;/p&gt;

&lt;p&gt;I put '&lt;a href="http://en.wikipedia.org/wiki/Everything_Ecstatic"&gt;Everything Ecstatic&lt;/a&gt;' in my basket, um and ah a bit, look over at my &lt;a href="http://chris.schleifer.net/ssX/"&gt;Soulseek&lt;/a&gt; icon. Think 'no! I &lt;em&gt;will&lt;/em&gt; support Fout Tet, Bleep (or &lt;a href="http://www.warprecords.com/"&gt;Warp&lt;/a&gt;) and independent labels (even if &lt;a href="http://en.wikipedia.org/wiki/Domino_Records"&gt;this one&lt;/a&gt; is needing it &lt;a href="http://en.wikipedia.org/wiki/Franz_Ferdinand_%28band%29"&gt;less&lt;/a&gt; and &lt;a href="http://en.wikipedia.org/wiki/Arctic_Monkeys"&gt;less&lt;/a&gt;)'&lt;/p&gt;

&lt;p&gt;So I go to the checkout, go to log in. I've forgotten my password, but it's cool. I can reset it through one of those very handy 'Forgotten Password' links. So I do that, and huzah! I get an email. With my password. Clear as day. There it is. On my screen.&lt;/p&gt;

&lt;p&gt;I wanted to &lt;em&gt;reset&lt;/em&gt; my password. Not be told what it is. Bleep shouldn't be able to tell me my password even if they tried, let alone proceed to email that password.&lt;/p&gt;

&lt;p&gt;I cannot fathom a reason for this. All the hard work for one way encryption has been done. It's there to be used. In Rails it's as simple as:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;Digest::SHA1.hexdigest('Make me secure!')
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;In PHP, as Bleep appears to use, it's even simpler (believe it or not)&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;hash('sha1', 'Make me secure!');
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Whilst your there, you might as well salt it as well. But that'll add another 30 seconds onto a 1 minute implementation.&lt;/p&gt;

&lt;p&gt;Suddenly Bleep have closed many possible security vulnerabilities:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Anyone with access to the database to would have access to &lt;em&gt;everyones&lt;/em&gt; passwords&lt;/li&gt;
&lt;li&gt;Email is &lt;em&gt;not&lt;/em&gt; a secure mode of transport for data.&lt;/li&gt;
&lt;li&gt;On top of email, any time the password is thrown around in plain text, it's vulnerable. This could happen in any of many unforeseen circumstances.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Legacy is not an excuse either. Just a couple of weeks ago, I (not exactly a l33t coder) created a way of supporting two encryption techniques to enable migration over to a new one. In under two hours. Hardly a burden.&lt;/p&gt;

&lt;p&gt;Whilst it is often the excuse of developers that 'well, you shouldn't use the same password for everything', it is a fact, nearly everyone does it. It's inescapable. Nobody wants to go out of there way constantly be thinking of security. That is the developers job. On top of this, that doesn't even matter with Bleep. They themselves are a shop. They store(d) my credit card details, on top of other personal info, and an ability to purchase things.&lt;/p&gt;

&lt;p&gt;Whilst I'm willing to admit it's perhaps not as high a priority as, say, implementing &lt;a href="http://en.wikipedia.org/wiki/Https"&gt;https&lt;/a&gt;, there is absolutely no reason I can think of, or can find online, to not take such a simple step.&lt;/p&gt;

&lt;p&gt;So, whilst being slightly outraged at my perceived incompetence in this area by bleep, I received an email from &lt;a href="http://youtube.com/"&gt;youtube&lt;/a&gt;. It was my youtube password. I don't know who requested youtube to send it. It may have been Bleep after my quite frank email to them. It may not have been. I don't know. Perhaps someone was trying to show me that it's not such a bad thing because 'giants' such as youtube do it. If that's the case, then it seems they are proving my point, they managed to get my unencrypted password to be sent over an unencrypted method, to a known destination.&lt;/p&gt;

&lt;p&gt;Is this pandemic? Am I missing something? I'm not a security man. I like security to be something I don't have to think about. This is why password encryption is fun, it solves the problem so simply. So why is it not being done?&lt;/p&gt;

&lt;p&gt;In the mean time, I've deleted my youtube account, and removed all personal information from my Bleep account. I trusted both of these companies with my details, a trust that is very easily broken.&lt;/p&gt;

&lt;p&gt;It's broken.&lt;/p&gt;

&lt;p&gt;I'm off to listen to Four Tet, my Soulseek download has just finished.&lt;/p&gt;

&lt;h2&gt;Update&lt;/h2&gt;

&lt;p&gt;Bleep have been in contact with me, and they were genuinely apologetic, and not in the least bit believing this is acceptable behavior, but unfortunately it is out of there capabilities to resolve the issue.&lt;/p&gt;

&lt;p&gt;I realise I was particularly harsh to them in this blog entry. This is definitely not because they are the only online company to have this practice, nor are they most obnoxious with it. I was simply more outraged as I hold the bleep store closer to heart that any other store, and therefore was more outraged at the time. Like when Apple support play me about, it is not because they are particularly bad, but I expect more of such a great organisation.&lt;/p&gt;

&lt;p&gt;So please, do go and purchase some mp3s from bleep. They have an almighty collection of wondrous stuff from Britain's finest independent labels, completely DRM free, and with only the coolest guys at the other end.&lt;/p&gt;

&lt;p&gt;And no, they didn't pay me off.&lt;/p&gt;    </content>
  </entry>
  <entry>
    <title>Should a visited link be more or less prominent?</title>
    <link href="http://abscond.org/entry/show/2368" rel="alternate" />
    <id>http://abscond.org/entry/show/2368</id>
    <updated>2007-02-17T09:38:00Z</updated>
    <author>
      <name>James Darling</name>
    </author>
    <summary>Post summary</summary>
    <content type="html">
&lt;p&gt;Many will say it should be less prominent, using a shade more similar to the background, and perhaps even losing it's underline. This would allow the user to see the links to places they haven't yet visited, enabling them to explore more and have a better experience.&lt;/p&gt;

&lt;p&gt;I don't think it's necessarily as simple as that. Just because a user has been there before, doesn't mean they don't want to visit again. In fact, in many cases I think it's the opposite. In a web app, there may be hundreds of features, of which (despite the designer's best wishes) they won't use all of them. Making prominent links to parts they've used before may be a smart move in customising the experience to them.&lt;/p&gt;

&lt;p&gt;Or another example - a list of links. Examples are blogrolls or associated items (like visitors to an event). Many go along the lines of dissolving the visited links as described above, so that you can see the ones that are new to you. However, this is ignoring the fact that the user (or at least I do) likes to scan the list for things I do know first, to gauge context and my interest in the other items, which I know nothing about.&lt;/p&gt;

&lt;p&gt;Perhaps the best thing is not to de-emphasise either, but to enable to small but noticeable difference.&lt;/p&gt;

&lt;p&gt;These are just thoughts, not answers. Any others?&lt;/p&gt;    </content>
  </entry>
  <entry>
    <title>Twitter and the login/Name dilemma</title>
    <link href="http://abscond.org/entry/show/2365" rel="alternate" />
    <id>http://abscond.org/entry/show/2365</id>
    <updated>2007-01-28T18:33:00Z</updated>
    <author>
      <name>James Darling</name>
    </author>
    <summary>Post summary</summary>
    <content type="html">
&lt;p&gt;&lt;a href="http://twitter.com/"&gt;Twitter&lt;/a&gt; is awesome. It incorporates the successful social communication aspect of myspace but without the crud with a super clean interface, and adds a fantastic mobile edge. It removes the limitation of location while adding the limitation of brevity, enabling you to not worry about perfection in your contributions, allowing more fluid and human interaction.
&lt;br/&gt;
But I won't go any further into this, as it has already been &lt;a href="http://adactio.com/journal/tag/twitter"&gt;discussed&lt;/a&gt; &lt;a href="http://www.simplebits.com/notebook/2006/12/20/twitter.html"&gt;many&lt;/a&gt; &lt;a href="http://www.molly.com/2006/12/26/twitter-best-kvetching-tool-ever/"&gt;times&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;This is a blog about a very particular and new decision by Obvious, the people behind Twitter.&lt;/p&gt;

&lt;p&gt;They, like many services, have a login username, i.e. '&lt;a href="http://twitter.com/abscond"&gt;abscond&lt;/a&gt;', which is unique. They also allow a more human way of naming yourself, usually your real name, which allows you to use spaces, punctuation, capital letters and no need to search for something unique like james&lt;em&gt;d&lt;/em&gt;man_28374.&lt;/p&gt;

&lt;p&gt;But then comes the dilemma of explaining this to the user, and choosing where to use each one where, something I have come across recently.&lt;/p&gt;

&lt;p&gt;Twitter have recently changed the way they display your friends 'tweets' to you, using the unique login rather than the human name to identify the tweeter. &lt;a href="http://twitter.com/help/usernames"&gt;They explain&lt;/a&gt; that this is to avoid the confusion of having two friends with the same name.&lt;/p&gt;

&lt;p&gt;I'm not sure this is a great idea. It's ugly and looks geeky. &lt;a href="http://twitter.com/hatchetman"&gt;Phil&lt;/a&gt; is Phil Rose not 'hatchetman'. It's like days or yore, with IRC and AOL chat rooms.&lt;/p&gt;

&lt;p&gt;At the very least, on the desktop it should be an option that is reversible. After all, it is a specific problem. And the web version tweets have a user picture next to each one. Plus, while I may have have friends with the same first name, most have put their full name down in the name field.&lt;/p&gt;

&lt;p&gt;I do think the mobile version is a different thing in this individual case. You are not provided a user picture, or a link to the account to investigate. Plus the login is crucial information if you wish to send a direct message. Also, on the whole, the login name is shorter than the full name and therefore more suitable for SMS messages. In a way, the mobile interface is much like the web 10 years ago, and therefore restricted to the same function over style limitations.
&lt;br/&gt;
But this is Web 2.48.36.9 RC4, the luxurious new web where a lack of technical restrictions allow us to enact our inefficient human nature. So Twitter - here my plea: Rid me of unsightly lowercase one word names and give me back my friends real names!&lt;/p&gt;    </content>
  </entry>
  <entry>
    <title>Is Myspace winning the web?</title>
    <link href="http://abscond.org/entry/show/2362" rel="alternate" />
    <id>http://abscond.org/entry/show/2362</id>
    <updated>2007-01-19T18:15:00Z</updated>
    <author>
      <name>James Darling</name>
    </author>
    <summary>Post summary</summary>
    <content type="html">
&lt;p&gt;In September 2005 Microsoft's number one man for 'profit over everything' &lt;a href="http://youtube.com/watch?v=wvsboPUjrGc"&gt;Steve Ballmer&lt;/a&gt; was quoted in &lt;a href="http://www.businessweek.com/magazine/content/05_39/b3952001.htm"&gt;an article&lt;/a&gt; saying:&lt;/p&gt;

&lt;blockquote&gt;
    &lt;p&gt;“We won the desktop. We won the server. We will win the Web. We will move fast, we will get there. We will win the Web.”&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;I won't go into how "I was not shocked but oh so enraged by this", as &lt;a href="http://www.molly.com/2005/09/16/no-mr-ballmer-microsoft-will-not-win-the-web/"&gt;Molly did&lt;/a&gt; so efficiently at the time.&lt;/p&gt;

&lt;p&gt;However, I do think that attempts to 'possess' the internet space is an ongoing threat. The economic system we live in today believes in commoditising everything possible, and &lt;a href="http://www.thebusinessonline.com/Document.aspx?id=A8F98465-393E-448D-A392-91D8AB016CC0"&gt;increasingly so&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;But Microsoft isn't the biggest threat by far at the moment. No, they missed there opportunity in a crucial decade of not doing much. The big threat is undeniably Myspace.&lt;/p&gt;

&lt;p&gt;Myspace is, in my eyes, becoming increasingly an 'owned' internet. Users are beginning to see myspace providing all of their internet needs.
&lt;br/&gt;
It has been praised for allowing 'users to create their own content', which I always thought was the internet anyway. Perhaps the internet content was being created by aliens in the 'web 1.0' days. All I see that has changed is that the content is now owned by a single company, avec huge banner ad.
&lt;br/&gt;
Users also use it to 'message' each other to keep in contact. It doesn't need mentioning that a fantastic non-centralised protocol already exists for this called E-mail. I get a blank look from myspace users when I mention this.
&lt;br/&gt;
And with myspace rapidly moving into video, music, classifieds and event management, I can easily see a time when many people never leave the myspace.com domain, and I suspect some don't already.&lt;/p&gt;

&lt;p&gt;The geek community seems to be turning a blind eye to the elephant under the table that is myspace. Flickr is proclaimed as the greatest success of the century amongst intellectuals, but the greater masses continue swarming to myspace.
&lt;br/&gt;
The intellectuals don't mind like they do with Microsoft, as it currently doesn't infringe on their playings. They can play with their private servers, and have XFN lists, flickr, del.icio.us and other such geek-friendly services, without being bothered by the myspace giant.&lt;/p&gt;

&lt;p&gt;But, at risk of sounding very sensationalist, as centralised services with a legal, marketing and profit motive continues to rise, I know which one fits better into the current economic system, and all those involved in that would prefer.&lt;/p&gt;

&lt;p&gt;Throw in the fact that Murdoch is the one at the top of this, and I'll be off now to go don the latest fashion in tin foil hats.&lt;/p&gt;    </content>
  </entry>
  <entry>
    <title>Begging Spam</title>
    <link href="http://abscond.org/entry/show/2358" rel="alternate" />
    <id>http://abscond.org/entry/show/2358</id>
    <updated>2007-01-14T06:25:00Z</updated>
    <author>
      <name>James Darling</name>
    </author>
    <summary>Post summary</summary>
    <content type="html">
&lt;p&gt;In the ever fascinating world of spam (no, really), I've noticed yet another new tactic in the fight to implant URLs on my pageranking goodness. Begging and pleading.&lt;/p&gt;

&lt;blockquote&gt;Please don't delete these&lt;/blockquote&gt;

&lt;p&gt;It's a fresh approach, I'll give you, and pleading to my better side. I'd probably have more of a better side if people didn't use these 'series of tubes' to squeeze pennies for themselves.&lt;/p&gt;

&lt;blockquote&gt;Please don't delete, I need the money&lt;/blockquote&gt;

&lt;p&gt;It's possible you do. I don't know where you're from, or your situation. So although I have my doubts, seeing as you littered crap all over my site in such a polite manner I'll give you the benefit of the doubt.
&lt;br/&gt;
The capitalist in me says go get an honest job, but then a capitalist these days would say go ahead, abuse the community resources around you for your own personal gain.
&lt;br/&gt;
The socialist in me says start a petition or something. I volunteer in oxfam every week for you.
&lt;br/&gt;
The communist in me says start a revolution. A revolution involving equality for all and no spam.&lt;/p&gt;

&lt;p&gt;But please don't spam, it's like (adamnalogy coming) running over a kid in a SUV, appologising and explaining you bought it to protect your kids. Or something.&lt;/p&gt;    </content>
  </entry>
  <entry>
    <title>Creating a blog in Ruby on Rails in more than 15 minutes</title>
    <link href="http://abscond.org/entry/show/2347" rel="alternate" />
    <id>http://abscond.org/entry/show/2347</id>
    <updated>2006-11-05T19:45:00Z</updated>
    <author>
      <name>James Darling</name>
    </author>
    <summary>Post summary</summary>
    <content type="html">
&lt;p&gt;I hope everyone likes the new design of abscond.org. I have had some great feedback so far.&lt;/p&gt;

&lt;p&gt;I was fed up with &lt;a href="http://movabletype.com/"&gt;Movable Type&lt;/a&gt;, mainly for license reasons, and also I don't have a clue how to hack around with it. &lt;a href="http://wordpress.org"&gt;Wordpress&lt;/a&gt; wasn't as friendly to me as people make out (I think it's all that PHP).
&lt;br/&gt;
So Ruby (and Rails) it was. I dabbled with &lt;a href="http://typosphere.org/"&gt;Typo&lt;/a&gt;, even made my own template, and hacks, but it go a bit messy. I had a quick look at &lt;a href="http://www.mephistoblog.com/"&gt;Mephisto&lt;/a&gt;, but got the same feeling.&lt;/p&gt;

&lt;p&gt;So I thought, what the hell, let's make my own blogging/personal site CMS in Ruby on Rails. Now don't fool yourself into thinking I'm some uber programmer who likes to torture myself. I found it was actually easier to get what I wanted in a blogging package if I wrote it myself. With Rails it really is easier to do it yourself. I came from an idea in my head, to being launched in one week, including designs.&lt;/p&gt;

&lt;p&gt;I named my CMS for this site 'Arran', after a beer I was drinking (something I might continue as a naming scheme)&lt;/p&gt;

&lt;p&gt;We've all seen &lt;a href="http://media.rubyonrails.org/video/rails_take2_with_sound.mov"&gt;blog in 15 minutes&lt;/a&gt; video, where "woops" you have a blogging package in no time. Of course this doesn't really apply, as it's completely not production ready.&lt;/p&gt;

&lt;p&gt;So I thought I'd share how I continued from that video to here, my own personal CMS.
&lt;br/&gt;
The best bit is I didn't really write most of the code, I grabbed it from here and there, then tweaked it to my liking. So this is essentially a list of links to resources I used, and a little bit about how I used them.&lt;/p&gt;

&lt;h3&gt;&lt;a href="http://sas.sparklingstudios.com/articles/2006/10/01/how-to-protect-a-rails-application-against-spam-with-akismet"&gt;Spam protection with Akismet&lt;/a&gt;&lt;/h3&gt;

&lt;p&gt;This is one of the most crucial steps in making your blog production ready. Spam is lethal. Not using a standard blog package gives you a head start on this, as the spambot doesn't really know what it's dealing with, but there are bots that just go filling in any web forms with the hope it results in something tot here benefit. However the good people at wordpress run a spam checking system called &lt;a href="http://akismet.com/"&gt;akismet&lt;/a&gt;. You pass a comment to it, and it tells you if it thinks it's spam or not, with surprising effectiveness. And another good person wrote a ruby library for it. And another good person wrote a guide on how to quickly implement it. I, like a lot of the commenters, recommend simply marking spam in a Boolean rather than simply not saving it so you can look over what you caught in the net.&lt;/p&gt;

&lt;h3&gt;&lt;a href="http://wiki.rubyonrails.com/rails/show/LoginGenerator"&gt;Admin area&lt;/a&gt;&lt;/h3&gt;

&lt;p&gt;I think that the quick yet easily extended rails admin plugin is yet to come. I think the nearest so far is Login Generator, as it makes the least assumptions about what you want, yet I find myself performing the same sort of tasks every-time I implement an admin interface on an application. I might create something some time if I obtain the skills.&lt;/p&gt;

&lt;h3&gt;&lt;a href="http://rikrikrik.com/articles/using-the-lastfm-web-services-with-rails"&gt;Last.fm integration&lt;/a&gt;&lt;/h3&gt;

&lt;p&gt;I'm a big fan of Last.fm, I really wanted to include my latest music listenings from there. This is great as it means it's not down to me to keep it updated, and I can't lie and pretend I'm listening to poncier music than I am!
&lt;br/&gt;
This tutorial very quickly got me on the path of processing multitude of XML files Last.fm provide.&lt;/p&gt;

&lt;h3&gt;&lt;a href="http://magnolia-api.rubyforge.org/doc/"&gt;Magnolia link list&lt;/a&gt;&lt;/h3&gt;

&lt;p&gt;Magnolia does a nice job (if a bit slow) at keeping my links. So I regurgitate it onto this site using the Ma.gnolia::API ruby library. All self documented, so it wasn't to hard to lay it all out how I wanted&lt;/p&gt;

&lt;h3&gt;&lt;a href="http://gravatar.com/implement.php"&gt;Gravatar integration&lt;/a&gt;&lt;/h3&gt;

&lt;p&gt;Gravatar is a way of allowing your commenters to have a funky icon to go with them, not only on your site, but all gravatar enabled sites.
&lt;br/&gt;
This is the easiest of the lot. Try something like:&lt;/p&gt;

&lt;blockquote&gt;
    @image = "http://www.gravatar.com/avatar.php?gravatar_id=#{MD5.new(EMAIL_ADDRESS_HERE)}"
&lt;/blockquote&gt;

&lt;h3&gt;&lt;a href="http://www.rubyonrailsblog.com/articles/2006/09/28/ruby-on-rails-blog-live-ajax-comments-previewing"&gt;Live comment preview&lt;/a&gt;&lt;/h3&gt;

&lt;p&gt;With Rails' notorious AJAX skillz, you don't need to know an ounce of Javascript to get this up and running. This guide is pretty much all you need to fill and empty div with your preview. And I thought this would be one fo the niceties I'd have to sacrifice not using something pre-fab.&lt;/p&gt;

&lt;h3&gt;&lt;a href="http://www.kanthak.net/opensource/file_column/"&gt;File handling&lt;/a&gt;&lt;/h3&gt;

&lt;p&gt;I have an easy to use, image per blog entry thing going on here. It's something I've wanted as an easy way to brighten each entry up, but hacking it into other blogging packages was always to hard and dirty. I built it right into mine, with the very handy file_column rails plugin. This enables me to handle uploaded files, and make multiple images cropped and resized automatically. How easy.&lt;/p&gt;    </content>
  </entry>
</feed>
