Matthew Lang avatar

Matthew Lang

Don't Wait

My wife mentioned the other day that she was thinking about her New Year's resolution for 2014. I said to her, "Did you keep last year's resolution?". "No", was the reply. In fact she freely admitted to never keeping resolutions.

"What's stopping you from starting now?", was my next question. It got her thinking and she's decided to start making plans now to implement some positive changes to her health and fitness.

Why do we feel the need to wait for a milestone to pass before we start something? New Year's resolutions are never kept. I never kept mine. In fact, it was only a few of years ago when I abandoned the whole idea of starting and keeping a New Year's resolution. I do keep a theme for the year that I can group goals under, but that's all it is. A theme for the year.

Don't wait.

Start now.

Write down what you want to achieve next year now and start making a list of next actions towards making those achievements. Do it now.

What's the point in waiting for a holiday or birthday to roll by before you start taking action? Age is just a number and so is the year. There's nothing special about them that will make you achieve your goals.

Get the notepad and pen out and start that list now. Start working towards your goals now. Get the jumpstart on the year and start it knowing you've already achieved something before the this year is finished and that the next achievement is just around the corner and not 12 months away.

New Year's Day is just another day on the calendar. So is today. Don't wait for the end of the year. Start now.

A better you

I can't wait to get NB's latest book.

Am I Doing This TDD Thing Right?

I've been building web applications in Ruby, on a full-time basis, for a couple of years now. During this time I've been exposed to a number of different testing strategies and approaches. Test-Unit, MiniTest, RSpec, Cucumber, Steak and many more. I've used many of these test frameworks to some extent, but despite the many choices I have in this area, I'm still befuddled by the right tools to building a web application in Ruby using test driven or behaviour driven development. The Rails framework has shipped with Test-Unit for years but the most popular testing framework is probably RSpec.

In order to quell my confusion, I thought I would expand on the three approaches that I have used most often in my time using Ruby.

1. The True Agile Approach

Perceived by some as the holy grail of testing, and in some cases with an equally preachy opinion, is the true agile approach. Being part of an agile team with a customer on hand to flesh out user stories, daily stand ups, retrospectives. Just about everything that embraces an agile approach to building software.

In this approach, test driven development and behaviour driven development tools reign supreme. If your approach is TDD, you'll most likely be using RSpec or Test::Unit for testing all aspects of your web application. If your approach is BDD, then it's Cucumber all the way. This is pretty much a no brainer really. With so many hands available for development, it makes sense to always write tests first.

2. The Solo Developer Approach

The true agile approach is fine when you're part of a team, especially when that team advocates pair programming and you have a customer on hand to flesh out user stories. What if you're a developer with your own product or service though? You understand the business domain enough to eschew the behaviour driven development approach but you still want to test your product?

I had this problem with the early iterations of Journalong. I understand the business domain, so is it really necessary to use a BDD approach? Can I simply just switch to a TDD approach with Test::Unit or MiniTest?

I'm still on the fence about this.

3. The Side Project Approach

This is simple, and I embrace this approach 100%. No testing framework or just enough tests to handle the complicated stuff. Hacking on your own ideas is a good time to really explore the frameworks and languages you are doing. Getting these setup correctly with all the proper test frameworks can be a chore though. If it's just an initial idea or throwaway solution you're working on then why bother investing the time in writing tests?

I want to be a good developer and develop solutions that are thoroughly tested but when was the last time you just hacked on a bit of software to try something out? If I know enough of the framework and language to get by then I don't bother writing tests. It might take me an hour to come up with something or half a day, but if that's all it takes then why bother getting all the correct bits in place to test it.

There's definitely a time and place for testing strategies in development, where you're part of a team building a product or building a revenue generating product or service on your own, testing strategies can give us the confidence we need to ship code on a frequent basis.

For my own ideas though I would rather roll my sleeves up and get into the parts of the code I know or even try new things with a part of the language or framework I haven't used. Kind of like code exploring, filling in the blank edges of the map if you like.

My Blogging History

Curtis McHale has invited his readers to write about their blogging history, so here's mine.

My initial dip into blogging was about 5 years ago with the then rising star of blogging platforms, Posterous. I started a blog with the great intention of posting at least once a week. What I was going to write about I was unsure which in turn led me to actually posting to my blog very infrequently. A bit of a false start then.

MindMapSwitch

With no fixed topic in mind and a checkered past of a software career with no expert knowledge in any one programming language or framework, I looked back at the other skills and experience I earned from my career. One particular topic jumped out at me. Mind mapping. This was the moment when my mind mapping blog, MindMapSwitch, was born.

I ran the blog on Posterous and kept the blog going with frequent updates in the region of once a week. After 18 months of posts I got to the point where I simply couldn't write anymore about MindMapSwitch. Rather than struggle on with finding new content on a limited topic with a limited audience, I decided to cease writing anymore posts for MindMapSwitch. The blog itself was eventually removed from the Internet with the shutdown of Posterous but I do have a back up of MindMapSwitch's posts.

From that point I moved on to focusing my attention on my own two blogs. I kept a blog for short essay style posts and I kept another blog for link posts. Both were initially hosted on Posterous, but I did move the blogs to Octopress for a short time and then onto Squarespace for a while.

Back to Octopress

At the start of this year I decided to bring the two blogs together and migrate back to using Octopress again. The pull to writing in Markdown and having more control over my blog was what I actually wanted rather than trying to dissect the templating language of another blogging host.

Faced with the start of a career working independently, I wanted my blog to the first thing people would see when they searched for me. At the same time I committed to writing an article every week day. Since doing this I've been steadily churning out content that been increasing my audience on a monthly basis.

Time for the stats

I used Google Analytics for over four years for my blogs, but since deleting my Google account, I've had to move to a different service for collecting my web traffic stats. I settled with Github's Gauges service in April this year. Although I've lost the stats from my Google account, it hasn't been until this year that my traffic stats have started to get really interesting.

Since April I've managed to increase my visitors and page views each month and last month I broke the 1000 page views milestone in a month. I'm also using my stats to spot patterns in popular content that I should consider writing more about. Popular content over the last few months have included articles on productivity, text editors and using Octopress, but by far my most popular post is about switching to Feedbin.

Where to from here?

So where do I go from here? My posting schedule of short essay style posts on the weekdays is working well for me, so I'm not going to change that anytime soon. I also usually post short link posts on a Monday and Friday which I will continue to do. I've got plans to include popular content pages for my blog and also write more technical posts around programming and software development.

I suppose the key thing is that I have found something that works. I'm happy with my posting schedule, my content and my choice of blogging tools.

I'm just another person trying to carve out a niche on the Internet really with their blog. As long as I'm gaining more and more interested readers, I'll keep posting.

Getting to Know Projects in Sublime Text

When I started using Sublime Text 2, I didn't use Sublime's projects feature. This year though, I've started to really get to know my preferred text editor and since then I now save all my code as a project in Sublime. It really does have some great advantages and with a little time it can make working in Sublime a better experience for you.

Sublime's projects are typical of projects in other text editors and IDE's. You open the folder that contains your source code with Sublime and then you can save that source code as a project.

When you save your code as a project you end up with two files. The first is the project file which contains references to folders for your project, project based settings and build commands for your project. The second file is the workspace. This is simply a file that tracks what layout you're currently using and what files you have open in each pane. Using the workspace file means that you can switch to another project, do some work and then switchback to your original project knowing that the layout and files you had open will be restored back to the state you left them in. Handy.

Opening Projects

Let's start with opening projects. You can open a project from the command line by using the project switch from Sublime's executable.

>> subl --project deathstar.sublime-project

Nice, but a tad too much to type. Rather than keying this out when I need to open Sublime, I prefer to alias the opening of a project file into a command that I can remember.

>> sds

Typing these three letters into my terminal to open a project is much easier than trying to remember where the project is and the correct switch for opening a project in Sublime. Now that we have our project open we can start tweaking the project file itself to make suit our needs.

There are three sections to the project file:

  1. Folders - You can define a single location for your project or multiple folders that make up a project. This also include filters on files and folders you might want to apply to each folder in this section.
  2. Settings - The settings in the editor can be changed on a project basis. If a particular language for your project requires different settings, e.g. tab size, you can define these here and the changes will take affect when you open the project.
  3. Build Systems - I tend not to use this, but you can keep a number of different terminal commands here that you can tell Sublime to execute without having to switch to the terminal.

Using Folders

Let's take a look at the most important section which is folders. Although this section is only small it can make a big difference to the way you work with your project and with Sublime.

The project file is just JSON and is fairly easy to follow even if you don't have that much experience with JSON.

{
  "folders":
  [
    {
      "path": "/Users/darthvader/code/deathstar-reactor"
    }
  ]
}

The path setting points to the folder that contains the files for your project. Most of the time you might just have one instance of this in your project file, but Sublime does allow you to have more than one folder in your project file.

{
  "folders":
  [
    {
      "path": "/Users/darthvader/code/deathstar-reactor"
    },
    {
      "path": "/Users/darthvader/code/deathstar-superlaser"
    }
  ]
}

I've been using multiple folders for a couple of projects now. I'm rewriting an application just now that uses multiple folders. For that project I included the old source code and the new source code in the same project so that I can refer back to the old code to lookup any old code.

Which leads us nicely onto names. Having multiple folders in your project can be confusing, especially when projects might have similar folder names or even the same name. To get round this, you can also define a name for each path in your project that will appear in the sidebar. This makes navigating code in your sidebar much easier.

{
  "folders":
  [
    {
      "name": "DeathStar - New & Improved Reactor",
      "path": "/Users/darthvader/code/deathstar-reactor"
    },
    {
      "name": "DeathStar - Superlaser x10",
      "path": "/Users/darthvader/code/deathstar-superlaser"
    }
  ]
}

Perhaps the most useful feature of the projects file though is the ability to exclude files and folders from your project. You are not going to need to see all the files and folders in Sublime when you are coding, so these filters are a great for excluding logs, temp files and other automatically generated files that are not typically needed in Sublime.

Excluding files can be done like this:

{
  "folders":
  [
    {
      "name": "DeathStar - New & Improved Reactor",
      "path": "/Users/darthvader/code/deathstar-reactor",
      "file_exclude_patterns": [
        "*.log",
        "*.pid",
        "*.tmp"
      ]
    }
  ]
}

And excluding folders can be done like this:

{
  "folders":
  [
    {
      "name": "DeathStar - New & Improved Reactor",
      "path": "/Users/darthvader/code/deathstar-reactor",
      "folder_exclude_patterns": [
        "tmp",
        "log",
        "solr"
      ]
    }
  ]
}

Switching Projects

Now that we have our project file setup we can get on with using it.

Because I now have a projects file for each project I work on in Sublime, I find it much easier now to simply switch to the project I need to work on, do the work, and then switch to another project. Switching between projects is as easy as Cmd+Ctrl+P if you're working on a Mac or Ctrl+Alt+P if you're working in Windows or Linux. This brings up a list of projects that Sublime nows about and lets you switch projects without leaving the application or returning to the terminal.

The benefit of this is that I only have one window open for Sublime and I can stay focused on the code that I am writing for that particular project. Having multiple projects open is distracting to me and puts me off my work.

I'm not currently using the settings or build systems for a project, but I am looking into running tests from within Sublime and adding these to my project files as build systems.

Getting to know how your tools work and making them work better for you is the key to getting the most out of them. Investing a bit of time in organising your code with Sublime's project files make organsing and working with even multiple folder projects a breeze.

Say Hello to Linkalong

I mentioned previously that I was interested in building a replacement bookmarking application for my bookmark collection on Pinboard. I wanted something a little more than just lists of bookmarks, I wanted more information when viewing an individual bookmark. Here's some things I wanted to see:

  • What else have I bookmarked from this site?
  • What else have I bookmarked with similar tags?
  • What did I bookmark before and after this?

In the last few weeks, I've been putting together my own private bookmarking application. So far I have enough functionality that I can use it on a day to day basis and it also includes some end points so that I can integrate it with other apps and services. So without further ado, here's a sneak peak of the sections that make up a bookmark page in my private bookmarking application, Linkalong.

Big title

There's no getting away from the title. It's big and bold. Lately I have been building web sites and applications with bigger text in them. A lot of websites have very small text which I am finding increasingly difficult to read. For this bookmarking application I wanted a big and bold title.

Markdown based notes


I love writing notes in Markdown. Even if my notes in my notebook sometimes have the Markdown markup in them. Crazy, right? Markdown's markup is just second nature now when I am writing. It makes sense then for the notes for my bookmarks to be written in Markdown and rendered as HTML.

Bookmarks from the same site

When I used Pinboard, I had tags for bookmarks from the same site. It allowed me to view all bookmarks from the same site. Although it would be easy to do with tags in my own application, I wanted to list bookmarks from the same site without having to tag all relevant bookmarks with the same tag.

Bookmarks with the same tags

Just like seeing bookmarks from the same site, I wanted to see bookmarks with similar tags.

Nearby bookmarks

Finally I wanted to see the bookmarks that I saved before and after this one. So at the bottom of the page I added links to those respective bookmarks.

Building Linkalong has been fun and it's definitely by no means finished. It's served two purposes for me. It's my replacement for Pinboard and it is a place where I can try out new things with an application that I use everyday. If you're looking for the whole page, you can view a screenshot of that here.

Thanks to Patrick Rhone for his initial indirect nudge to building this.

Switching to Trello for Project Management

I'm halfway through Curtis McHale's book on turning your freelance career into a viable business and one thing that has become clear through reading it is my lack of progress on products and projects. Given that I only use a single list for everything, sometimes projects and ideas get skipped at the bottom of the list. It's the out of sight, out of mind thing. If I'm not reminded of something on a regular basis, I usually forget about it.

In order to make better progress, I'm going to start using Trello for managing projects and future products. I'll still stick a high level task on my master list relating to the project, but all the details for it will reside in Trello.

The reason I picked Trello for this was my familiarity with Kanban boards and some experience I picked up working in an agile team a couple of years ago. Basically the idea of Trello is that you move cards (or tasks) across the board from left to right until the card is complete. In my case my this will be features, bugs, marketing and admin tasks.

Cards move through the following lanes that are typical of Kanban boards:

  • Backlog - All cards start here. Cards are prioritised on a weekly basis with the next card to be done located at the top.
  • Analysis - We do some background work on the card. What does it involve?
  • Development - Let's implement this thing with some nice tests and code.
  • Testing - We test it out in a secure environment.
  • Deployed - Once it's tested and ready, we ship the code for the rest of the world.

Moving cards across the board is a great way to see progress being made, and also with work-in-progress limits, I can stay focused on one or two tasks at a time.

Also I'm currently using Trello with a couple of clients for project management, so the switch from their projects to my own when things are quiet is easy to do and I'll already be familiar with the Trello environment. Seamlessly moving from client work to my own work is important. I don't want to have to adjust too much to a different workflow.

My grass roots approach to work still stands with just a master list for capturing everything and scheduling actions in my calendar. I'll capture a high level description of the project in my master list and defer the details down to cards on the Trello board. Any work I do will be blocked off in my calendar as just "Project X Work" and then when it comes to actually doing that work, I can pick up where I left off on the Trello board. When time runs out, I can leave a note on the card where I left off and move on without losing my place.

It all sounds well and good in theory, but putting it into practice over the next few weeks might not yield the positive results I'm hoping for. Still, I've got to give a try though, right?

NHL Goal of the Season

This has to be the goal of the season.

via kotte.org

Great call to action ...

... from Patrick Rhone.

Fixie Friday - LOW

via FGGT

How to Find People on App.net

A couple of days ago I wrote about what I perceived as a problem on App.net. Finding actual interesting people on App.net through recommendations. Over the next couple of days my timeline on App.net has exploded with people talking about this topic.

I was concerned about finding interesting people in App.net given that there appears to be a high number of bot and feed accounts recommended to you in the Recommended Friends section of the App.net Passport and on Alpha. I just want to find interesting people, not bots or feed accounts.

Having had a conversation with App.net's founder, Dalton Caldwell (@dalton), over the course of Tuesday and Wednesday on App.net, it is clear that this isn't so much a problem with App.net but a problem with all social networks.

I checked out the "People You May Know" block on my LinkedIn page. Initially it only showed me three people, but none of the people in that list were people I knew, worked with or even worked in the same company as them. It was only until I expanded the results further that I started to see people that I had recognised or work with previously. However, the results still showed that the majority of people there weren't people that I actually knew.

I remember the same widget also displayed on Twitter when I had an account there. Quite often, you could see that the people that Twitter recommended to you was based on your bio, your tweets and probably other information that Twitter graph internally. It wasn't completely accurate and often you wonder get a recommendation to which you would respond, why? Why is that person being recommended to me?

It's quite simple. Machines are not good at making relational decisions. My new friend on App.net, @novia, pretty much summed it up for me.

@matthewlang long ago my answer to a question about why computers can’t figure out simple things like this: computers suck at relational reasoning: Even if we create contextual awareness, it would take years of training & they’ll still make errors.
App.net by @noviad https://alpha.app.net/noivad/post/12500139 App.net %}

So if machines suck at recommending other people for you to follow on any social network based on your own preferences, then how do you find the type of people that you want to follow?

The answer is simple.

Engage, take part, chat, converse, interact.

Be part of the social network rather than just a bystander.

Looking back at my Twitter days it took me a good couple of years to get my list of friends down to a list of mixed interests that suited me. Based on tweets, interests and location, I managed to get a nice timeline of like minded, interesting people to follow. I did this by tweeting to people, searching for hashtags in profiles and finding users or lived in my part of the world.

The same can be said for App.net, but there's a bonus with App.net. Conversations are indeed richer there, and that's where you find interesting people. By taking part. By contributing your ideas, opinions and thoughts to conversations. In order to find interesting people you have to seek them out. You have to intrude (in a nice way) in conversations and take part. It's through this action that I found a few more interesting people to follow last night.

Looking back, I'm actually glad that there isn't an all singing all dancing recommendation tool for people on App.net, because it would take the fun out of finding people on the service and connecting with others. I still think that there should search facilities for people on the service and that perhaps the recommendation feature in the App.net Passport have a filter that allows you to only see recommended people, but that would be all that others would need.

Thanks to Dalton and everyone that contributed to this post through their many conversations on App.net.

Finding People on App.net

While flicking through my App.net timeline last week, I stumbled across a post by Guido Osorios which led me to reading about his reasons for downgrading his account on App.net to the free account.

I hate the fact that I originally payed for a great social API that didn’t hold up well at all. A little over a year has passed since its beginning, and so much about App.net permanently changed, and in my experience, it did for the bad. Sure, it may have hundreds of thousands of registered users now, but most of what made App.net different is long gone — I haven’t discovered a single person in months by now.

Downgrading App.net by Guido Osorios

While I don't agree with Guido's comment about the direction that the API is taking, I do agree with his concern about finding people on App.net.

I am also finding it increasingly difficult to find people. With the introduction of PourOver, the number of feed accounts have risen and will likely continue. Having these types of accounts are great for members of App.net, but it would be nice to be able to search for just people in Alpha and not have any bot or feed accounts show up.

Maybe it's time for a search directory of just people accounts on App.net?

It would be great to have more people to follow on App.net especially some people I miss from Twitter, but that can only happen if more people join. Now that we have free accounts for people to try it out, I thought there would have been an influx of people but alas it seems that most people are happy to stay on Twitter.

Blog Heroes #7 - Steven Pressfield

If I'm being honest, I can't exactly remember how I stumbled across Steven's blog. It was a few years ago at least. Anyway, ever since I subscribed to Steven's blog, it's been a treasure of writing tips, practices and great books by Steven.

The first book I read of Steven's was Do the Work. I also read a second book by Steven, Turning Pro. When I first read these books I didn't appreciate their value, but over the last year, I've returned to them more and more found them to be extremely valuable. As for Steven's other books, I have them on a list to read for next year.

Steven's blog is essential for anyone who wants to write. Steven tells it like it is and doesn't sugar coat any of the writing process. It's a hard journey for those involved but he isn't shy in saying that it is a rewarding journey with a great prize at the end for those that are willing to put in the work.

Another great blog to follow if writing is your thing.

Project Updates

Last week I found myself once again buried under a pile of work and projects that I wanted to do. Faced with another week of not making any progress I decided to step away from the blog for a week and focus on resolving some of these commitments. Here's what happened:

Client work

My only source of income at the moment, so it's easily the priority here. I need to continue with my client work. It gives me more and more experience with clients and Rails and is the foundation of my career at the moment. I'm hoping to build on this foundation with additional income revenues next year.

Journalong re-write

Most developers object to re-writes of systems and rightly so, it can be a costly process in terms of time and cost. In this case though I wanted the to do the re-write regardless of the cost, I wanted to start building on a product with a development framework that lets me implement new features fast and easily.

Sinatra is a great little framework for building web applications and I enjoyed building Journalong with it, but I wanted something more familiar. Since most of my client work is using Ruby on Rails, that's where most of my knowledge is. In order to make maintenance of Journalong easier in the long run, I've opted to take the hit now and re-write it as a Rails application.

The re-write is almost complete and I'm at the last stages of development. With other projects shelved or completed last week, I'm now free to work on this for the rest of the month and finish it.

Private bookmarking application

When Rails 4 came out I was keen to create a small application that would give me the chance to try out Rails 4 and give me a code base that I can use to experiment with the new features and idioms. It needed to be something private and simple to get me started. Intrigued by a screenshot of a fellow App.net user's private bookmarking application, I started to build my own bookmarking application using Rails 4.

This is was a the one thing that I wanted to actually work on last week and by Wednesday I had something up and running that would work. For the rest of the week, I added a couple of features that would let me bookmark by different means from applications like Instapaper and Feedbin. With these complete at the weekend I now have a Rails 4 application that I can play with but also gain value from.

Trialing DigitalOcean

A couple of weeks ago I wrote about considering alternatives to Heroku. I did look about for alternative hosting providers for my blog and settled on trying out DigitalOcean.

The truth is though that the DigitalOcean box was left running for almost two weeks before I got round to doing anything with it. Moving my blog wasn't going to make me any better off in terms of income or knowledge. In the end I've decided that Heroku is enough for my hosting needs for the moment and I've killed the idea of moving my blog.

New product prototypes

I had plans to build two products this year, but I'm shelving this until next year. I underestimated how much work I would have this year as a freelancer. While I am welcome to be kept busy with client work, it does come at a cost. I only have so much time for other projects and products. I've shelved these for the moment and may re-visit them in 2014.

I learned a lot from last week. Priorities are important when dealing with different projects. Moving my blog, trying out a different PaaS is okay when you have the time, but it's just not that important to me right now. With the decks cleared, I'm looking forward to finishing off the Journalong re-write in the next couple of weeks and shipping it.

Planned Features for Journalong

With Journalong still fresh in my head I thought I would list a few of the features that I am planning to add to Journalong over the next three months. Development on Journalong has been slow over the last year and for that I apologise. It's no way to keep a product or service going and more importantly, making it useful for you. So if you're a user of Journalong, here's a few new goodies that you might like to see introduced to Journalong.

Viewing of journal files

This has been sitting in my list of planned features for months now. The reason for this is that I always said that I wouldn't display a substantial portion of journal entries through the interface. The reason for this was simply down to privacy. The idea was to allow the user to click on the month they wished to view in the sidebar and just display it, or display the current month's journal after you write a journal entry.

However, I have in the past thought this would be a particularly nice feature to have, especially when your journal can be easily converted to HTML to support formatting, links and images.

This feature will be optional and you will have to turn on the appropriate setting for this when it is released. If you don't fancy having your journal being displayed through Journalong, then leave the setting off. I would much rather customers opted in on their own accord than having them to opt out something they don't want or need.

Journal counts for each month

This just came to me last month. It's only a minor thing, but I envisioned a list of the last 12 months of journal entries, grouped by month, showing the number of journal entries per month in the sidebar.

In order to do this Journalong will scan your journal for the number of entries. Again, your journal is your and yours alone. I won't be scanning or retaining any information from your journal while doing this.

Journal from Draft

Draft is awesome, I love writing in Draft. All my blog posts start off in Draft. It has become my go to place to start all my writing. Why not journal from here too then?

I'll be honest, I'm no designer. The user interface to Journalong is simply what I have been able to do on my own with the help of a CSS framework and some JavaScript. I've tried to make it as pleasing an interface to use for people writing to their journals, but others might want to journal from other places.

These other places that I hope to include will start with Draft. The plan is to use Draft's WebHook URL setting so that you can write your journal entries in Draft and automatically save them to your journal.

Fixie Friday - Digital Camo F550

Digital Camo F550

via FGGT

Late to the Party

While the rest of the family were getting ready this morning, I sat at the edge of my bed and checked out the two websites I quickly look at every morning. The BBC News website and the Hacker News website. After quickly scanning today's headlines I moved on to the Hacker News website. I noticed a submission for Alfred 2 workflows. Mental note made, I must check that out later on.

Once the house was empty, I grabbed a coffee and looked at the Alfred 2 workflows. All good stuff and should help me on a day to day basis, but then I noticed a workflow for something called Dash. Another tab opened and there it was, an offline documentation manager for various languages and frameworks that web developers use. All the documentation I need to do my job without having to go near the browser and I can even work offline if needed, safe in the knowledge that most of the docs I need are accessible.

I could have done with knowing about this months ago. Late to the party again.

It's okay though, because that's what learning and experience is all about. Picking up the tools and knowledge as we go along. Sure we can get a head start by reading someone's tool list and start using all their recommendations but I've yet to read one of these lists where the person has all the tools that I need to use as a web developer. No one person has all the answers.

Okay so you're late to the party with an application or service that would have made your job easier in the past, but the past is gone. Ahead lies the future and with it plenty of chances for you to use that new tool to make your job easier.

You might be late to the party, but it least you made it.

What Is LinkedIn For?

Yesterday I read a blog post about a LinkedIn user who was unhappy with the service and had opted to delete his account. I've been here before as well.

Back in my previous job as an ERP developer, I wasn't actively using my LinkedIn account and the only emails and connections I got were from recruiting agencies.

Why am I on this network and what is it for? I simply couldn't get my head around the right way to use LinkedIn. I spoke to a few people about it and all of the said you must be on LinkedIn, even if it's just to have your details there and you never use it again.

Rather than going with the advice of many I spoke to, I deleted my LinkedIn account.

A couple of years rolled by and I changed jobs twice. It wasn't until the end of last year that I re-created my LinkedIn profile due to the fact that I had been paid off. I wanted to broaden my scope for a job so wide that I was willing to go back on LinkedIn and have my profile searchable by everyone there.

Now that I am grudgingly back on LinkedIn, I'm back to where I was previously, what is LinkedIn for? I understand that as a network, LinkedIn does require some time to be spent on it updating your profile, making new connections, sharing interesting links, taking part in LinkedIn's groups, but I tend to forget about doing this and it's only when I receive a notification that I end up spending five minutes or so reviewing my profile, maybe adding a skill to my profile that I have picked up in the last couple of months.

Faced with the prospect of deleting my LinkedIn account again or just sucking it up and trying to invest some time in my LinkedIn profile, I've decided to opt for the latter. I should be using LinkedIn to market myself as a freelance Rails developer, but how do I go about doing this? Here's one idea I had:

Sharing Rails How To Guides - In order to attract clients to my profile, I should write a number of "how to" guides on using Rails and share these on LinkedIn. These won't be small blog posts, but in fact detailed guides to some aspect of implementing a generic feature in a Rails application that will demonstrate my knowledge of Rails and what I can offer in terms of knowledge as a developer.

I'm still slightly perplexed by LinkedIn as a network and what I can do to make better use of it. Perhaps you have some idea on using LinkedIn effectively? If so, contact me with your thoughts on using LinkedIn. I'd like to get more out of LinkedIn rather than it just sitting there not doing very much.

No Tests Please, I'm Having Fun

I want to be a good developer and develop applications that are thoroughly tested but when was the last time you just hacked on a bit of code to try something out?

There's definitely a time and place for testing your code, whether you're part of a team or building a revenue generating product or service on your own, testing frameworks can give us the confidence we need to ship code on a frequent basis.

If I know enough of the framework and language to get by then I don't bother writing tests. I would rather roll my sleeves up and get into the parts of the code I know or even try new things with a part of the language or framework I haven't used. Just fiddling away with a simple script until I can get it working to validate an idea or a thought can be so rewarding. It might take me an hour to come up with something or half a day, but if that's all it takes then why bother getting all the correct bits in place to test it?

Exploring problems with just the code, trying things out, making it work as I go along. Yes it might take a few attempts to get there, but I always get there in the end. And that's the fun part of programming, getting it to work. I'm all for tested code but every now and again I like to just throw away the tests and just code and have some fun.

What's Your Swing Like?

I've seen some whacky swings at the driving range, but most of the time the swing has the desired affect. The ball hits the intended target. Steven Pressfield is definitely onto something here.

The concept of the Authentic Swing is that each of us is endowed from birth with our own gift, our own style, our own unique talent and point of view. Our job is to find it and bring it forth.

Furky swings Authentic Swing, shoots 59 by Steven Pressfield %}

Steven's new book looks to be another addition to the list.

Take the Risk

Getting Things Done with Curtis

Curtis' post gave me the kick I needed yesterday.

You are choosing to do other things instead of the goals set out.

No time for whiners by Curtis McHale

I admit, I haven't made a lot of progress on a couple of projects since the summer, and I am choosing to do other things first. In some cases not the right thing. It's definitely something I need to rectify.

Fixie Friday - Leader RENOVATIO

Blog Heroes #6 - James Shelley

I first discovered James Shelley through Patrick Rhone's Twitter account just a couple of years ago. Having checked out James' blog, I was intrigued. I subscribed and I have remained a faithful subscriber since.

James doesn't blog very often, but when he does it's worth waiting for. The quality of his writing is one of the best amongst my RSS subscriptions. In a world of fast paced, quick hit updates, it's refreshing to see James put so much thought and effort into his writing.

James is also the author of the fantastic Caesura Letters, a daily email subscription that will feed your brain with fresh thoughts and ideas.

Thinker and writer. Two words but two words that describe James Shelley and his blog perfectly. If you cherish quality over quantity, then this is definitely the blog for you.

A Simple Business Plan ...

... for the masses. No sense in starting a business unless it's viable. This is definitely a good place to start.