Matthew Lang avatar

Matthew Lang

Social media is killing social media

In the quest to find news users for people to follow in my Netterpress newsletter, I started putting together a few scripts that would poll new accounts created on App.net and update them over the course of the week. I only filtered for accounts categorized as 'human'. I figured that this would limit some of the spam accounts I would get. At the end of the week I would sort the accounts by the number of posts made for each account and then starting hand checking each account from the top of the list looking for interesting users to include in the Netterpress newsletter.

A sound idea in theory, but when it came to checking the accounts, I was disappointed to find that most of the active accounts at the top of my list were in fact spam accounts or valid accounts entirely powered by automated feed tools. There only a handful of actual human accounts in the fifty most active accounts that I looked at last night.

I've never previously done this on other social networks like Twitter or Facebook, but given my experience on Twitter in the past it's hard to be surprised by this.

Social media is it's own worst enemy in my eyes. The very tools that make it easy for us to post from one location to different networks are the very same tools that are used to automate the posting of irrelevant and unsolicited content.

The barrier to many social networks is nothing. All the networks I have heard of are free. Even App.net has a free tier for anyone to join. It's that free entry that makes it so appealing for many, but to others they see an opportunity to post irrelevant content.

In App.net's case, there is a growing number of feed accounts appearing on the platform. While that's okay for feeds that deliver valuable content, there's no getting away from the fact that people will setup accounts to deliver unwanted content, regardless of the social network you use. It doesn't matter what social network you are a member of, there will always be spam accounts trying to dilute the pool of valued content.

I'll be checking through the data over the weekend in preparation for the next Tuesday's newsletter. Hopefully I'll be able to pull together a list of some new users to recommend to others for the next edition of Netterpress.

Plodders

I would love to show one of my teachers this.

"You're a plodder. You will never amount to anything", he would say to me.

No plan involves later

Curtis McHale knows the benefits of working smarter, not harder.

You should too.

Mountain bike lovers beware ...

... Thomson (yes that Thomson) are making frames now.

Click ahead to the frame in all its beauty while I wipe the drool from my chin.

Fixie Friday - Victoire Cycles Polo Bike

I just couldn't resist.

via CycleEXIF

Detach yourself ...

... for a clearer view.

Thanks Michael.

Quality and Time

I take pride in the work that I do as a web developer. I always try and deliver the best possible work that I can. If you're a developer of any kind whether it's systems, mobile, web or any other type of developer, one of your aims each day should be to deliver the best possible work you can. When we do this we take the time we need within our estimate to deliver the highest quality of code we can afford to.

Quality and time go hand in hand in this case and it doesn't just apply to programming. It applies to everything that we do. If you want to do something right, take the time to do it well.

I come up against this on almost a daily basis with my oldest son. He rushes his homework and then asks me to check it for him. Untidy writing and stupid mistakes in his arithmetic are just two hallmark traits of his rush to finish his homework. At this point I rub out all his homework, even the stuff he got right, and ask him to do again. Before he begins his homework again I tell him that rushed homework is bad homework. If he wants to get it right in the future first time, then he needs to take the time to do it properly. As with all kids he doesn't remember this advice from one day to the next and so he needs to be reminded of it daily. He's getting better and it's good to get him in into the habit of taking his time with his homework now before he starts high school.

A simply example of applying the right amount of quality and time to our work but it's amazing how often I have come up against this in a professional working environment.

I've been in this position a few times where you are expected to deliver a specific piece of work within an allotted time. The time you're given isn't adequate for the amount of work needing done. In the past I would have cut corners. I would have written code without writing tests for it, tested it through the happy path and delivered it for it's intended audience. Bear in mind that while I do this, my line manager at the time is aware of the short cuts taken and is okay with the end result. It's reminiscent of the 'live to fight another day' mantra.

I don't want to fight another day though, and a couple of years ago I remember spending weeks just putting out fire after fire. It was an unpleasant experience made worse by the fact that there was just no room for spending time to deliver quality work. At the time, the company had too much work and little resources to handle everything. So corners were cut and everyone suffered. It's not a nice experience and it's a difficult to recover from this.

I'm more aware now of the need for both quality and time when it comes to delivering your best work. I write tests for my code where I can, I take the time to refactor my code, I test it in a staging environment to check it is working as expected.

When it comes to your work, regardless of the what you do, don't forget that time can have an effect on the quality of your work. It's not a perfect world though and we don't always get the time that we need. We've all been faced with the dilemma of delivering work within a tight amount of time, but rather than letting that be the norm, let that be the exception.

Career Advice

I was recently asked by a close friend for some career advice. They're in a good job with a good salary and good long-term prospects, but that's it really. It's just good. When I asked them about what they really wanted to do as a career they simply had no idea. All my friend knew was they didn't want to do the job they're doing at the moment.

If I was asked the same question about what I wanted to do in the future I know what my answer would be and it's not building web applications. It's not my strength though, which is why I continue to do what I do today. I haven't completely discounted the idea of doing my ideal job, but then things change so fast now. Next year's dream job could change over time and evolve into something else.

It's part of the world we live in now. Everything moves at such a fast pace and things are changing constantly. There's is no job for life anymore. And yet there's plenty of opportunities for people with even the remotest idea of a new business. There's so much that people can do from their own homes, that the dream job that they have now is within reach. How long would that career last though?

I've no idea if my dream job will still be around in 10 or 20 years but it would be great if it was. Jobs for life are very few and far between now, but in their place are more opportunities for individuals than ever before.

Back to my friend who I give this advice.

If you want to make a career and living that plays to your strengths, then look beyond what you do at the moment, and try and apply your strengths to other roles and positions out with your comfort zone.

Identifying what you really want to do is key too. Without knowing what direction you want to head in, there's no way of making the first step in the right direction.

I'm not a career advisor, but it's was the best advice I could come up with for them. If you were in a similar position, what advice would you give to someone looking to change their career but not knowing what they truly wanted to do?

Unproductive Day

Today hasn't been a good day. It started going wrong before lunch-time with crossed wires with a client and then after that the plan for the day had to be drastically altered to include work for a deadline. From there on in it was a downward spiral.

These days happen. They don't happen very often but when they do, they can suck the life out of you. It's like having a little Dementor over your shoulder that strips away all the good plans that had been made for the day.

Tomorrow is another day though, and while I also had plans for tomorrow it looks like they will need to be re-shuffled to take into account this pressing work. At least now though I know what to expect from tomorrow and I can adjust accordingly.

Turbocharge your Lego ...

... with Atoms.

Marked 2 - An Essential Markdown Viewer

Markdown. It's become so engrained in my workflow that I barely think about the syntax now. This post is being written in Markdown, as does most other things I write. To support this markup I need tools that are not just Markdown compatible, but champions of Markdown. Marked 2 is one such tool.

Marked 2 is an OS X markdown viewer. If it sounds like Marked 2 only does one thing, you're wrong. There's more to this app than simply viewing a file.

Many Markdown viewers and editors give just the basics of viewing Markdown. The markup formatted as HTML with your choice of theme to make it all pretty to look at it. Marked 2 does this too, but it also does so much more.

More Statistics

We've all the seen the word count feature on lots of editors. In fact I would say that almost all editors have this feature included in them. Marked 2 includes a word count for your document, but it also other statistics:

  • Character count
  • Paragraph count
  • Sentence count
  • Reading time
  • Average words per sentence
  • Average syllables per work
  • Reading ease

That's not all of them as well, there's more, but you get the idea. The great thing about the statistics is that on Marked 2 you can leave this pane on the app open and it will update the statistics as you type.

Probably not a good idea to be continually looking at this as you type, but periodically I like to see how much progress I've made and whether my editing has improved my document.

Excellent Keyword Analysis

You can highlight repeated keywords from your writing, which will highlight those keywords in pink. Once you have done this you can also click those keywords to darken the rest of the document so that you can see only the keyword you clicked and where it is repeated in your document.

During this view you can also zoom out from your document and get an overall view of your document with those keywords still highlighted.

I've been using this to replace poor choices of words and replace them with better choices. The keyword analysis can also be customised so that you can include words that you want to avoid when writing.

Lots of Preferences

My blog is a static website that is regenerated each time I deploy it. However before I publish a post, I use Marked 2 to preview my post to check everything is where it should be and that it reads well enough.

Octopress posts are markdown files themselves, but they contain a section of YAML at the start that contains details like the title of the post, the published date and any categories I want the post to be assigned to. Marked 2 has a preference for striping YAML from your document before it converts it for you so that you can view the content of your post without the messy distraction of YAML.

There are tons of other peferences as well covering window behaviour, choice of Markdown library, style settings and even settings to adjust how the document will print.

Use Your Favourite Editor

I'm a Sublime Text user for both writing code and blog posts. I've tried a few other editors, but with shortcut keys that I have memorised, it's hard to use anything else but Sublime Text. Marked 2 is great in that if I am viewing a file, it has a shortcut key that you can change to switch to your preferred text editor, where it will open up your document, ready for you to edit it.

On the flip side there is also a plugin for Sublime Text that will preview your document in Marked 2.

Easy Publishing

Marked 2 also supports a number of file types that you can export too. These are the most common document formats like PDF, DOC and ODT. As nice as Markdown is to write with, sending a Markdown document to someone who isn't familiar with the markup might struggle a bit. So it's nice to have the choice to export your document to a more friendly file type for everyone.

I've yet to try this myself but Marked 2 also includes support for the Leanpub publishing platform. lets you publish your document to Leanpub. This is great as it makes the journey to self-publication that little bit easier.

A Power Tool

Marked 2 isn't just a Markdown viewer, it's a Markdown viewer on steroids. A power tool. This is why I have Marked 2 running all day long on my second screen.

I've been continually tweaking the preferences as I go along to get the right environment for me to write in. It also doubles up as a document viewer for some lookup documents that I use on a daily basis.

Marked 2 offers so much more than just being a viewer and for me it's been money well spent on a product that gets used on a daily basis.

Lists for Life

Some suggestions for lists to keep. I actually have some of these as sub-lists within my master list.

Great Technology Advice from MininalMac

The one question you must ask yourself when you let new technology into your life:

[What problem does this solve?](http://minimalmac.com/post/73277791743/what-problem-does-this-solve What problem does this solve?)

Fixie Friday - RAVANELLO

Build a Business ...

... a better business, with Nicholas Bate

How to Run Cheaters with Pow

Brett Terpstra released a new version of his Cheaters cheat sheet system. Brett recommends two options to get this running. The first is using the Automator application in OSX and the second is using the Fluid app.

The one change I wanted to make was to make Cheaters run as a local Rack web application with Pow rather than from the already installed Apache instance. It's easy to do.

1. Create a Gemfile

Create a Gemfile within the root of the Cheaters source and include the Rack gem:

gem 'rack'

Jump back to the command line and run the bundle command to install this gem.

2. Create the Rack App

Next create the Rack file that will serve all the pages and assets from the Cheaters source. I've used this same code for lots of Rack applications.

require 'rack'

$stdout.sync = true

use Rack::Static, :urls => ["/css", "/js", "/images", "/cheatsheets"], :root => "."

run lambda { |env| [ 200, { ‘Content-Type’ => ‘text/html’, ‘Cache-Control’ => ‘public, max-age=86400’ }, File.open(‘index.html’, File::RDONLY) ]}

Put this in the root of the Cheaters source.

3. Symlink Cheaters

Now I'm assuming that you have Pow installed already. With Pow installed, change to the pow directory and symlink your Cheaters directory:

cd ~/.pow && ln -s /path/to/cheaters

I also use an app called Anvil that gives me access to my running web applications in Pow from the menubar. This can also create the symlink for you if the terminal is too scary.

Done!

That's it. Now if you visit [cheaters.dev](http://cheaters.dev), you'll find the Cheaters page. The reason I prefer this is that I already have a number of application running locally that I like to use, so running it from the browser is fine with me.

Solutions with Code

As a freelance developer working for a client, I don't have the luxury of daily stand ups to get the outline for a new feature I have to work on. I also don't have the benefit of having another programmer sitting beside me or even in a remote location to talk about the feature further in a pair programming session. When you're on your own, you need to find other ways to kickstart the development process of envisioning a feature of a system.

I generally have a rough idea of the feature, but sometimes even getting a rough idea can be difficult. It pays to talk to the customer or even the product owner to get all the details you need, but sometimes even after that you might still be unsure. Where I usually falter is that I understand the feature but seeing it in code or as a set of objects can be difficult.

One technique I've been using is writing the sample code of how I would eventually interact with the feature once it is shipped. This isn't production code or code that's even going to be run. It's just me hammering out sample code on text file. The benefit of this technique is that I can identify simple objects such as classes and properties without too much code. It also lets me see if I'm starting to build dependencies on other objects. It might not be viewed as TDD friendly, but when you're working on your own, anything that helps should be considered.

The code itself consists of creating a couple of instance objects and setting the attributes needed for each one until I've satisfied the need to have a set of objects that could be read from a database. There's no fancy Rails code here, it's just plain old Ruby. I don't even bother to refactor it at all as I'm just looking to get an initial design from the code. Then I can start TDD'ing the feature with the my new found understanding.

I've no idea if this technique has a name or not, but it works well for me when I have problems envisioning the design for a feature.

Time to Grow?

I always keep my ear to the ground when it comes to local businesses starting and closing in my local town. You never when an opportunity might arise.

A couple of months ago I noticed that a hairsdessers, whom I used to be a customer of and got to know the owners well, had closed down. This morning I found out that the owners (a married couple) were still working locally, but had decided to rent chairs in another local hairdressers so that they could continue to serve the customers that they had built up in their own business.

Being a business owner with staff is a huge responsibility and one that isn't easy to depart from. Once your employing staff and delegating duties to them, it's your responsibility to steer the business in the best possible direction, whilst also ensuring that your staff contribute and are paid well for their duties.

I've been in enough small businesses over the years to see this first hand. Sometimes the business owner does a good job and sometimes they don't. The majority of the time though, I've seen the bad side of this. The business as an entity isn't doing well enough to support it's staff which usually results in the laying off of some or all of those staff.

For whatever reasons you have as a business owner for closing down your business, it can't be an easy decision to make when there is staff involved. If you've built up a loyal army of staff over the years that can be depended upon, how do explain that they no longer have a job when your business closes?

As much as I would love to expand my freelance business over the coming years into a registered company with staff, I keep having to remind myself that there's a huge responsibility to employing staff and ensuring that there is enough there for people to be paid. I've been on the receiving end of three redundancies. I'd rather not be the guy on the other side of the table giving them out.

For the moment I'm happy to plod on as a single freelance developer providing a service and value to my clients. I only have myself and my family to look after and that's enough for me.

Fixie Friday - Leader Kagero x Stormtrooper

Sorry, I couldn't resist.

via PEDAL Consumption

The Cinelli Hobo Notebook

The journal for cyclists. I wants one.

via PEDAL Consumption

Offering Value

One thing that I will need to focus on this year is increasing my client rosta for my freelancing business. With just a handful of clients at the moment, I definitely have enough work to keep me going for the foreseeable future, but what happens when the work for those clients dries up? At the moment I have enough savings to see me through a few months of absolutely zero work, but that's not the fallback plan I had in mind.

Before I actually find clients though, I need to determine what value I can offer these clients, and that's where I need to start work. Approaching clients is one thing, but unless I can sell something of value then I am definitely not going to appeal to anyone.

Technical Value

Looking back at the last year of work, it's clear that my strengths now lie in the following stack for web development:

  1. Heroku for application hosting.
  2. Ruby on Rails as my chosen web development framework.
  3. Cucumber and RSpec as a testing stack I'm well versed in but I would actually prefer to be digging more into MiniTest, the test library that is now included in Ruby.

Selling this as a value though could be done with testimonials from my current customers, as well as showcasing some of the web sites that I have worked on over the last year.

The other option for displaying my value on this topic would be to write a book on one aspect of my development stack. I am leaning towards Heroku as a favoured choice having seen very little books in the past on Heroku. However Heroku is such a well documented service, would I be simply duplicating the docs that Heroku have? I would need to provide something more than the basic docs. Tips and strategies on getting more from Heroku while being able to keep costs down would be a good place to begin.

Knowledge Value

As for the my specialised field, I've been building web applications in the healthcare sector for the last 12 months. It's a sector I'm very experienced in having previously worked in the NHS and also having worked for a software provider whose main customer was the NHS.

For a product idea, I am currently building a CMS targeted at GP surgeries in the UK. The proving ground for this product is going to be the GP surgery where my wife is the practice manager. While building the CMS for this practice, I'll be able to get invaluable feedback from my wife who will be the administrator for the site.

Having this knowledge of the health sector would allow me to focus my attention on chasing clients similar to this. While many developers might have the technical skills that match mine, I will be the more valuable option for having the knowledge of the sector to help these clients.

I'm definitely not setting this in stone as the only two options for the year, but it's a start. I'm putting an emphasis on these two forms of value, as I am trying to attract clients that are looking for either of these forms of value, but it would be ideal if they needed both.

Need An Escape Plan?

Nicholas Bate has some pointers to get you started.

Apps - Free Isn't Free Anymore

Well on the app stores at least.

It's been bugging me for a while now, but you may have noticed the number of games on Apple's App Store that are free. There's quite a lot of them actually, but some of them are not in fact free despite their price.

There's a growing trend now of games that are utilising the In-App Purchases (or IAPs from here on in) ability in apps to subsidise the fact that the game is free to install. It's a freemium model really. Give the game away and then charge for extras. I first noticed it on the game Kindgom Rush, but this game can easily be completed without the need to purchase any of the additional characters that the game offers.

In other games though, the list of IAPs is there as an assist to players to finish a level or the game. Candy Crush Saga and Bad Piggies are two such examples of games in the App Store that employ this model. The purchases are enough to make think they're a one off, but I suspect that this is not the case with many people. Considering that King's (creators of Candy Crush Saga) monthly revenue was allegedly once reported to be half a million dollars a day, it's easy to see how those little purchases can add up given how popular the game is.

Here's the problem I have with IAPs.

I have two sons, a one year old who is too young to talk, never mind understand the value of money, and one seven year old, whose life revolves around technology.

I limit my oldest to the number of games he can have on his iPad and the amount of time he spends playing them. Nothing wrong with that. What's troubling though is the amount of times he has asked for IAPs for games from me. I'll let him make IAPs for the games he really likes but not on a frequent basis. Also, all his IAPs come out his own pocket money. It seems that a growing number of games are adopting an IAP purchase to unlock new features or get new addons. To an adult it's easy to say no. To a kid it's not so easy.

Like all trends though, today's hot new game is always going to end up the next day's old news. Which means that the money you can spend on IAPs for games, can be wasted if that game is no longer played with. It's not a major problem in our house now, as our oldest is extremely limited to the IAPs he can make. How annoying would it be though to spend so much money on a game for it to be deleted and never played again?

Mobile game developers have no obligation to only producing one-cost games, but it would be nice to see some of these game developers move away from the IAP model.

I grew up in an era where the computer game was a one off cost. You paid for the game and then you played it as often as you like. Console games are getting more and more expensive, but they are getting better and better, and most games offer hours of entertainment for that one off cost. It's an investment, but one that I think works very well, especially when you have kids that love gaming.

Thankfully companies producing games for the Microsoft and Sony games consoles are still following this model for the next generation of console games, but how long before we start seeing even these games adopting an IAP model?

I'm not sure that will happen to the level it's happening in mobile gaming, but I know one thing. I'm more wary now of those 'free' games that are topping the charts and proving to be hits with the kids. Even though they're listed as free, I know that for most of them, they're not really free.

Game of Thrones Season 4 Trailer

It's one of the few things I watch and enjoy on TV these days and also one of the very few "book to screen" transformations that doesn't dissappoint.

Budgeting Your Apps & Subscriptions

As part of my smarter budgeting theme for the year, one area I'll be looking to budget better for is the amount of money I spend on apps and services on the Internet.

It's no secret that I like to pay for the services I use. It just makes sense to support the products that you love to use. That's what keeps them in business. We all have preferences for the tools we use and how we work, but I thought I would share some of my thoughts on keeping your apps and subscriptions in check.

Keep A Budget

Common sense really, but things can get out of hand if you keep on subscribing to multiple services or subscriptions on the Internet. Set yourself a monthly budget and make sure you keep within that budget.

App stores and easier ways of paying online make instant purchases too easy to do now. You can quickly spend $20 or more in a few minutes on apps and services. Review your budget each month and be ruthless with making cuts to your monthly subscriptions.

Ensure you're leave yourself a little room in your budget for experimenting with apps. You can't trial an app before buying it, so leaving yourself a little room for trialling a couple of apps a month.

Find Value

I pay for things that give me value. The same goes for apps and subscriptions as well. I subscribe to a number of email newsletters, but they all offer some form of value. It's easy to subscribe to a newsletter thinking that it's $5 per month, but are you getting value from spending that money each month?

I think it's hard to quantify value, but the way I see it is that if I use that app or service on a daily basis then I'm getting value from it.

Don't Double Up On One Device

Having multiple apps on one device that do the same thing is a waste of money and time. At one point I had three apps on my iPhone for writing. Each was used for a different form of writing, but I've learned now that I can use one app more effectively for all my writing on my iPhone.

Doubling up on apps means that you also need to spend more time learning how to use those apps. Why spend the time learning about two apps when you can really master the one app.

Apps Can Vary Across Different Devices

So I mentioned there that I had three apps on one device, but what if you have a phone and tablet? Well in this case, you can use the same app for both devices if you can. If the app can work for you well enough on both devices then use it.

However, with devices having different form factors, it makes sense to use different apps that play to the strengths of each device. Yes you'll end up with multiple apps that do the same thing, but the money spent is justified in getting a tool that makes the interaction you need easier.

These are just some of my thoughts on the budgeting of apps and subscriptions. They're basically the guidelines I use to keep myself from throwing away money each month and drowning myself in unnecessary apps and subscriptions. I hope they can help you too.