Matthew Lang avatar

Matthew Lang

Web developer with a preference for Ruby on Rails

A Rule for Sharing

Carl Holscher recently wrote about the sharing culture in social media and his preference for remaining private in some of the services he uses.

Yesterday I signed up to the habit tracking service Lift on the recommendation of Curtis McHale. Lift at the moment say they have no settings to keep your profile private, however they do have a setting there to say that you are interested in such a feature.

Habit tracking is definitely something I'm interested in but this is something I would like to remain private in the long term. While I'm only in the initial phase of evaluating this product, I'm prepared to put up with a public profile for the moment. I don't wish to share on Lift mainly due to the reason that I don't know that many people using it and if I wanted to share, it would be with people I know.

And that sums up my rule really for sharing. If I'm a user of a product or service that involves such actions, I'll restrict my account settings so that I remain private or as private as I can be. If there's a number of people I know on that service, then I'll be a bit more public.

I like sharing, but I prefer my daily interactions such as habit tracking to remain private or only to be shared with people I know. So how do you know people without ever actually meeting then? That's another blog post for another day.

Bookmarklets for Markdown Fans

Markdown has pretty much been my default markup language for the last few years. All my writing is done using Markdown as well as my journal, notes and other forms of textual data. Although using Markdown for writing is easy now that I know the syntax very well, I still need good tools around me to make the most of Markdown.

I live in my browser on an almost daily basis so I have started accumulating a number of bookmarklets that help me when it comes to using Markdown

Marky the Markdownifier

This is a bookmarklet that converts the current page you're viewing to Markdown. If you're like me and use Markdown for all your documents, then this is really handy. There's also a number of other bookmarklets from Markdownifier that provide different results.

Markdown Link Bookmarklet

Crafting Markdown links from urls is something I do a handful of times everyday. It makes senses then that I automate this little chore.

Jason Seney has a great little bookmarklet that once clicked, converts the current url and title to a Markdown link for you and pops it up in a modal box for you to copy it from.

Kiwi Bookmarklet

Although I use my browser for a lot of day to day work, I use a dedicated client called Kiwi for posting to App.net. The nice thing about Kiwi is that it now supports Markdown style links when you are writing your posts.

Much like the my previous bookmarklet, this one creates a Markdown link for a new App.net post in Kiwi. If you select any text on the page then it will also use that for your link.

This is by no means a finished list. There are probably lots of others addons and extensions and for browsers out there, but I like bookmarklets due to their flexible nature in being able to run on different browsers.

When to Use Database Constraints in Rails

Yesterday I was working on a new feature for a client when I ran into an issue. The ActiveRecord model I was working with had a number of constraints on the table that prevented me from creating a record. I removed the constraints from the table, as I decided that in this case they were unecessary. Unfortunately decisions like this aren't always as straight forward.

I tend to avoid using constraints when possible in my applications, especially when I am using Rails. I can rely on validations and associations to act as 'soft constraints' to my data and ensure that my data is valid. These are also backed up with tests for each model and its validations and associations to other models. This is by no means a perfect solution, but it has sufficed in the past.

Now, a lot of developers might think that constraints are not required as ActiveRecord provides all the necessary plumbing for validating and joining tables together with relationships. That's fair to say if your application is thoroughly tested and doesn't house critical information, but we all want to be good developers so really we should be using constraints where required.

In the past I've worked on a number of healthcare systems that required certain fields to be populated in specific tables. Domains that are directed by rules and regulations on what data you should persist are a great place to use database constraints. Enforcing the data integrity rules on your database reduces the risk for having missing information that could potentially land you in trouble. Domains such as healthcare, law and even education are all examples of domains where by database constraints could be needed.

Applications that also share their data are another good case for database constraints. While you do have validations and associations for your Rails application, can you make the same assumptions about other applications that can access your data? Using database constraints here can ensure that your data remains valid.

In Rails it's all too easy to assume your database is simply a place to hold data, but your database can provide extra validations and checks when needed. I tend to favour not using database constraints until a feature or bug requires that I absolutely need one in place. I find it's much easier to work with code that isn't restricted by countless constraints that have been placed on a table from the start merely because the developer at the time thought that field 'x' was a required field and should have a constraint on it.

Freelance Update #1

It's been six months since I started working as a freelance web developer. In this time I worked harder than I've ever previously worked. And that's a great thing. I'm actually enjoying the work that I do. This wasn't always the case. As a seasoned cubicle worker and a developer in a number of small companies, adjusting to working independently was difficult, but the transition has been worth it. A couple of things have really stood out for me in the last six months.

I'm enjoying coding again

Now that I am using Ruby and Rails on a full-time basis, I've never enjoyed programming so much. Most of my time is spent working on traditional Rails applications. I practice behaviour driven development using Cucumber and RSpec for these applications. In the past I've had limited exposure to Cucumber and RSpec, but the last six months have really seen me gain the experience I needed to cement my knowledge on these tools.

With this new found love for coding, I'm also much more invested in staying as a freelance web developer for as long as possible. To do this, I've been re-reading books like The Passionate Programmer and other books aimed at the Ruby programming language.

I have flexibility

Working from home does require discipline, but there's also the added bonus of being more flexible. I still do a typical day from nine to five, but I've found that without a commute to do I can use that time for other things.

One added bonus is that I can walk my oldest son to school or in the better weather cycle to school with him. It's only a minor thing, but starting the day with a walk (or cycle) to clear your head is better than having to make a daily commute to a remote office.

I'll be making another freelance update in six months (hopefully) with a view to discussing my finances, goals for the next 12 months and looking at side income. Here's to another six months!

The Blog Post Calendar

Keeping up with posts on a daily basis is becoming a little more work than I anticipated. Previously I would try to write a couple of blogs every couple of days and then maybe a couple at the weekend.

In the last two months though this plan have suffered. Scheduling time in during the day is quite difficult with the the day starting early with a school run and then I need to hit client work as soon as I get back home. At the end of the day it is time to get the kids their dinner, have a play with them and then get them ready for bath and bed. By the time that's done and everything is ready for the next day, it's nearly 9pm and the thought of sitting at the computer is just not that appealing.

I need a plan of sorts. Simply picking off ideas for writing every couple of days is becoming difficult. I have enough ideas, I just need a plan to get them written.

Here's what I'm thinking. I should schedule what I am going to publish in my calendar and then work towards writing the articles that are due to published in the coming week.

One benefit of this is that deciding what to write about is taken out of my hands at an early date. I'm planning on scheduling blog posts at least a month ahead. The second benefit is that I can start writing posts even if they are not due to be published for a week or two.

I'm tired of deciding what to write about not the actual writing itself. So I need to schedule ahead and take that decision out my hands at an early stage. Time will tell if this idea for a publishing calendar pays off or not.

Turning Pro is Hard ...

... and Steven Pressfield knows it.

The person who is going to change is going to change anyway. She has no choice. She is impelled by inner necessity. While the person who is not going to change is not going to change no matter how many seminars or retreats she attends or how much money she pays to those who promise to help her make the change.

How hard is it to turn pro? by Steven Pressfield

Feeding our Reading Habits - The Book

Alex Kessinger has compiled all his blog posts on the future of feed readers into one handy little book. The full document is here but there's also downloads in the form of a PDF and a Kindle book.

It's great that Alex has done this as feed readers really are an underappreciated tool. I'm actually glad to see that Google's Reader platform being turned off. It's opened the market for more feed readers that each have their own thing to offer.

Feedbin: A Review

Feedbin

With Google Reader going soon, people have been looking for a replacement RSS Reader. Fortunately for me I decided look for an alternative a few weeks ago when I wanted to go Google free. I looked at a number of different options for an alternative RSS reader at the time, but Feedbin really stood out for me.

It's a paid product. Not free. That's important for me because I want to use the product in the long term. Supporting this product by paying money to use it is just common sense. Free products can come and go but investing your money in a product provides some sense of insurance that it will be around longer. This is by no means a guarantee that Feedbin will be around forever. An annual Feedbin subscription is just $20 per year.

As an RSS reader, Feedbin does everything you expect a reader to do. You can subscribe to feeds using the textbox at the top of the screen. Underneath this are three panes. The far left is your list of feeds or folders of feeds if you like to be organised.

The feeds and folders pane

The next pane is the items in that RSS feed or folder. You can navigate these easily with the mouse or with keyboard shortcuts.

The items pane

Finally the far right pane is the current item you are viewing or the reading pane.

The reading pane

Keyboard shortcuts can be used to move about between feeds, folders and items. From what I remember most of the shortcuts are similar to Google Reader so those migrating from Google Reader should be able to pick up the new shortcuts quite fast. As an ex-Reader user, I find it easy to navigate about Feedbin.

Feedbin also has support for sharing to an extensive range of services. You can share items to many services like Instapaper, Pocket and Evernote. This is done through the use of URLs that many services provide. Feedbin provides tokens that can be used within these URLs so that you can include the entry title, url and feed name within the URL to the service you wish to share to. I love this feature as it simple to customize what you're sharing. Some people may not like that it's not truly integrated with other services and instead relies on just URLs to share to other services, but given the number of services Feedbin can share to, I can wait for better integration.

Finally there's iOS support. The Reeder app is the best way to view your Feedbin feeds on your iPhone. Unfortunately at the moment there is no Reeder support for Feedbin on the iPad or OSX, however Reeder development will resume at the start of July and hopefully we'll see more Reeder support coming.

It's an interesting time for RSS readers. Many people are turning to Feedly as a replacement for Google Reader, but I just didn't like the Feedly interface or the it's iOS applications. In the time that I have used Feedbin I've had no reason to complain about the service. Aside from the unread counts being a little out on some feeds Feedbin really is a great little RSS reader. I'm looking forward to seeing what the future holds for Feedbin.

Update: Shortly after this review was written, Feedbin was moved to much faster servers. Performance of Feedbin on the previous hardware wasn't much of an issue for me but I did read about others complaining of speed and response time. On the new setup though Feedbin is definitely faster than it was previously.

The Unread eBooks

While going through my Dropbox, I came across a number of programming ebooks that I have yet to start reading. Shocking I know. I mean, who buys books and then doesn't read them?

At the time I thought the book was a necessary purchase but after buying it, I simply forgot that it was there. Over the months it seems I have built up quite a collection of unread programming ebooks.

I never had this problem with a book. You buy it, you read it. You read it because the book takes up physical space in your surroundings and therefore you are continually reminded that the book is there to be read. Most of the time I would place my book beside my bed. It's the one time of the day where I can get a quiet half hour to read. Every night the book is there as a reminder that the book needs to be read.

Wat about ebooks though? They're there somewhere in your room, you just have to look for them. And that's my problem with them. Out of sight, out of mind. There's no reminder in my space that I have a book to read. I have a Kindle yes, but there is at least eight books on there that I haven't read, but by looking at my Kindle from across the room, I just can't know that there is eight books on it that I have yet to read.

So what's the answer? Being accountable for the books you read and publish your reading list for others to see? Perhaps. Maybe people can give you a poke when you haven't updated the reading list for a while?

It's worth a try. I'll do anything to try and get my money's worth from my unread programming books.

Why do you Blog?

I get asked this quite a lot. "Why do you do it?" people ask. Here's just a few reasons why I blog.

I Have Ownership

My blog is my own. My little space of the internet. Okay, so I don't own the hosting server that my blog runs on, but the text, images, links and videos are all carefully crafted or curated by myself to form a timeline of my thoughts, likes and dislikes. And I own that little timeline. I don't need to ask permission from a third party to get that timeline back. It's sitting on my MacBook Pro at home as a series of little Markdown files, that when passed through a program, form the lovely little timeline that is my blog.

A Network Tool

My blog isn't just for me though, it's for you. It's for everyone if they're interested. To reach a wider audience though, it helps if you have a network of other bloggers to rely on. This is something that I was late to realize when I started blogging. The power of a network. I wouldn't say I was part of a formal network like Svbtl or Medium but I do have a circle of fellow bloggers who link to my blog frequently.

Every once in a while a fellow blogger in my network will like my post and link to it from their blog. In return I too will link to blogs of those in my network. There isn't a "tit for tat" rule though. This is simply sharing content that we like and recommend. Over the last couple of years I've built up a nice network of fellow bloggers who not only have interesting blogs to read, but also find my own content interesting.

No Restriction

Take a look at any social networking tool and you'll find restrictions that limit the content that you can publish. Post length, media type and reach are all restrictions that will prevent your post from reaching the world. No fear of that with a blog.

  • Your content doesn't need to be finely worded so that it adhere's to the 140 character limit that's imposed on you.
  • Your content is easily accessible to the world. Nobody needs to sign up to read your content.
  • Depending on your choice of blogging platform, your content is free to move anywhere you want it to. No requesting of data from a third party just so that you can move your blog to another host.

Writing Practice

For me though the main attraction to blogging is the practice of writing. I love writing and using my blog as a way to practice writing is time well invested in my eyes.

Sitting down to write a novel is a serious long-term commitment, but a blog allows you to work using a smaller commitments. You can write something about 500 words in length, then edit it until you're happy with it and publish it for the world to see. My blog gives me this chance to practice my writing.

So that's why I blog. What's your reasons for blogging and what motivates you?

Taking the Time to Read

In this age of always on firehose content, it can be too easy to simply read something and forget to retain any meaning from what you have read and use it.

Maybe you just shared an article about the importance of open communication, but then disregarded comments from someone who tried to bring up a problem with you. Regardless of what it is, you’re wasting your time with all your reading if you don’t use it to drive action.

Do you really read? by Jason Evanish

I'll definitely be making more of a point in the future to review more of what I read online.

Blog Heroes #1 - Nicholas Bate

It's hard say when I first started reading Nicholas' blog and how I found it, but it's been required daily reading for me for at least the last five years.

Over that time Nicholas has produced hundreds of blogs that centre around real life personal development and productivity. I say real life because there are thousands of blog posts and dozens of systems that claim to have the golden key to "getting things done". Only Bate's blog has a realistic view of productivity and it's place in life. Nicholas' posts range from lists and series to drawings and photos.

Not only is Nicholas' blog a great source of content for those who are on the path of personal development and improvement, but he also has a great catalogue of mini-books on topics that have featured in his blog. Personal favourites of mine are his Instant MBA and Be Bold 101 books. Not only are these books easy to digest and read but they're quite small and therefore easy to carry about.

If you're in the market for a life coach, don't bother. Save yourself the hassle of someone prodding you to do the right thing and read Nicholas Bate's blog every day for a better career and life.

Just a Web Page ...

... or is it more than that?

Think about all the things you could communicate with a simple page like this. If you're a businessperson, you could sell something. If you're a teacher, you could teach something. If you're an artist, you could show something you've made. And if your words are good, people will read them.

Just a Web Page by Justin Jackson

Breaking Out of a Reading Genre

Last week I mentioned that I was bored with the fantasy genre for reading. It's not very often I decide to read something out with this genre, but after having put down a number of fantasy books before finishing them over the last few months, I decided that enough was enough.

The first book to read out side this genre was Max Brook's World War Z. I enjoyed watching the first series of The Walking Dead, but I've not been in a hurry to watch any of the series that followed. I did enjoy it, but for me it wasn't a must watch show. Which was why I was apprehensive about reading World War Z. It's a genre that I haven't really wanted to read, but with the movie coming out this year, I decided that I wanted to read the book before watching the film.

I loved it. I really loved it. Telling the story from different eye witness perspectives was a great way to write the book. You get to see so many different reactions to the oncoming threat and how people deal with it. It also shows the ugly side of humanity when it comes to a world disaster. Too many books and films use the idea that humanity would be united in such a scenario, but this book shows a more realistic human responses when faced with such a disaster.

A great read, highly recommended.

Generate Blog Post Ideas With a Mind Map

Coming up with new blog post ideas can be difficult if you're the kind of person who likes to post on a regular basis. I'm trying to write a blog post every weekday but I'll admit there are days where I am just not getting any spark to write about something. Not wanting to have another miserable blogging month like May where I missed a number of days, I wanted to start writing my blog posts ahead of their scheduled date they will be published.

I needed to generate a slew of ideas for blog posts and I needed it fast. Enter the mighty mind map.

My Blog Ideas Mind Map

Right so let's get something out the way first. My mind map might not look like a typical mind map, but space was limited in my notebook and rather than squeezing something unreadable in, I opted to list the final collection of blog posts in the bottom middle section of the mind map.

Let's get started

Okay, so you want to mind map ideas for blog posts. Why not just get started then? Well, mind maps work well when you have related ideas. That's the benefit of a mind map. It can let you generate related ideas and keep these ideas together.

Rather than simply adding blog post ideas to your mind map, take a minute to think about the categories on your blog. Can you generate more ideas for these categories? If not, then think about generating ideas for a series of related blog posts. A series has the benefit of having similar formats, with just the content being slightly different from one post to the next. It might sound like a cheat but keeping your posts short means that they'll havea better chance of being read.

So on your mind map, draw an image in the center for the central topic of your mind map, if you're not the artistic kind then simply the words "Blog Posts" will do.

Basic ordering ideas are the first level of branches that we add to our mind map. In our case each basic ordering idea branch is a blog post series or a category from our blog. Now for each basic ordering idea, simply add a branch for each related idea you can come up with for your blog.

My mind map has basic ordering ideas for the following series or categories:

  1. Blogs you Must Read
  2. Building a Blog Dashboard in Octopress
  3. Review posts
  4. Bike posts

Lastly I wanted a list of blog post ideas that were unrelated to any of the above series. With very little space left on my mind map, I decided to simply list the blog post ideas at the bottom. Mind map purists will be screaming at their screens at the moment, saying that this isn't a true mind map. Does it matter? As long as it works for you.

I set myself a time limit of 10 minutes to do this and managed to generate 30 blog post ideas. Don't worry if you can't generate this number of blog post ideas. With practice you'll be able to quickly generate more ideas with mind maps.

Take action

Now we have a list of ideas, what next? That's down to you. Add them to your to do list, start outlining them or even mind map each blog post idea!

I have my own method. In order to reduce the element of resistance (I'm lazy), I'm going to create draft files for each of these ideas in my blog. That way I can get started on writing them straight away and as each one is completed I can schedule it in for a specific date.

Your mileage might vary with a mind map. Some people get them, others don't. I've long been a fan of mind mapping so it is easier for me, however don't give up on it before you have tried it!