Build a Business ...
... a better business, with Nicholas Bate
Family guy and web developer
... a better business, with Nicholas Bate
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.
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.
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.
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.
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.
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.
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.
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.
Looking back at the last year of work, it's clear that my strengths now lie in the following stack for web development:
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.
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.
Nicholas Bate has some pointers to get you started.
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.
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.