Matthew Lang avatar

Matthew Lang

Spent most of the day looking at Wordpress as a CMS for a local school. Like what I’ve seen so far.

Deciding on a Pricing Strategy

I've been working on a new idea for a service for the last few weeks and I'm just about ready to take the wraps off it. While the core functionality of the service is happily working, I've been thinking a lot about the pricing strategy for it.

Freemium

I considered giving a basic level of functionality away for free, but the problem I have with this is that it is difficult to work out just what to include when you give a service away for free. Too much and you end up with more customers sitting pretty on the free service, too little and it's hard to get customers just to sign up. There's also a little bit more work involved in separating the free functionality from the premium functionality in a service. You have to ensure that the free tier of customers can use the application at the same time as paid customers who will have added features available to them.

Given that I prefer this pricing strategy for the services that I use, I found it strange that I didn't sway towards this from the start. When you make a product or a service, you want people to use it and the easiest way to do that is to provide part of it for free. It's certainly not the best strategy for getting lots of sign ups, but it is the easiest.

I hesitated on using a paid strategy to begin with because I wanted people to experience the service first in it's entirety before deciding to pay for it. The only way to do this then is to give people a free trial period of the application in it's entirety. No locked or restricted features, just a window of time to try the whole application before they decide whether it's for them or not.

I'm Going Paid

And that's what I am sticking with. A paid strategy with just a 30 day window to try out the application for free before the customer has to decide whether to subscribe to the service or not. I think it's definitely the best strategy. Committing to a paid service or product means that you are more accountable for the success of it and therefore you are more likely to want to make it succeed.

I've had positive feedback on this already, but the only way to truly see if the service will be a success is by releasing it to the world and that will hopefully happen in the next couple of weeks. Stay tuned!

Write For Yourself

A fantastic piece on the drawbacks of using publishing platforms such as Medium.

In truth, Medium’s main prod­uct is not a pub­lish­ing plat­form, but the pro­mo­tion of a pub­lish­ing plat­form. This pro­mo­tion brings read­ers and writ­ers onto the site. This, in turn, gen­er­ates the us­age data that’s valu­able to ad­ver­tis­ers. Boiled down, Medium is sim­ply mar­ket­ing in the ser­vice of more mar­ket­ing. It is not a “place for ideas.” It is a place for ad­ver­tis­ers. It is, there­fore, ut­terly superfluous.

The billionaire's typewriter by Matthew Butterick

My Wall Calendar Problem

I would love to have a wall calendar that would give me an at a glance view of what's coming up the next few months. Here's the problem though, my office is just a small corner of a larger sitting room we call "the den". I already have nice pictures on the wall and therefore I would rather not try and squeeze in a wall calendar when I only need to see it when I'm working. So what are the alternatives?

Whiteboard + Wall Calendar

One idea I had was to use a whiteboard to put my chosen wall calendar on and bring it out only when I'm working. The only issue I have with is that the only space where I could put this is behind me and therefore it wouldn't be within my sight. This is only a minor issue though. It would still be within easy reach to keep updated.

Printable Calendars

A printable calendar might be an option but then I think the main problem I'll have with this is size. The biggest I can print to is A4 and even printing a calendar across two pages is going to be still too small. Also spreading the calendar across separate pages loses it continuity.

In searching for printable calendars though, I did discover a great calendar by David Seah. Although it isn't suitable for my needs, I think there might be a few of you who might find it useful.

Desktop Wall Calendar

Right, I know what you're thinking. This is probably the last place you would want to view a full year calendar. Well, yes and no. Ideally I would like to have something away from my desktop, but I'm pretty limited in choices there so why not explore the possibility of a desktop calendar? My monitor is big enough that I wouldn't need to squint my eyes to see the details and I run most of my day to day applications full-screen anyway, so why
not?

I've tried running Calendar full screen using the year view but this isn't what I'm looking for. The months are spaced out with white space between them and I already have various calendars populating this. I would rather just see a blank calendar that doesn't show me my day to day appointments.

I also tried creating a wall calendar using Trello, but with it only showing seven lists on my screen, it's hard to see the whole year at a glance. This was a long shot to be honest. I knew this might not work but still I gave it a try.

Next I turned to the Internet yet despite the vast volumes of free tools and resources on the web, I couldn't find a tool or open source library that can do this for me or even come near it.

My next step is to spin up a web page and run it full screen but given my commitments at the moment, it's probably the last thing I need to be doing. I'll keeping hunting for a solution in the meantime.

Draw Up Some Battle Plans

Alas, front-end design and web copy are really not my thing.

What is The Rails Way?

It's a question I've been asking myself as I switch between different Rails applications for different clients. In my early days of working with Rails, I had a preferred selection of gems that I liked to use and that I stuck with for many Rails applications. After a few upgrade issues on a couple of applications I started to pay more attention to how I build applications with Rails. I questioned the gems that I was using and my testing practices. As I've gained more experience I've started to see that working closely to the Rails framework when building applications has some benefits that I previously overlooked.

What you're about to read isn't a silver bullet approach to building Rails applications. This is simply a guide to what I've find works for me.

Application Architecture

In the past most applications I worked on followed the old favourite of "fat model, skinny controller". Most applications tightly followed the MVC pattern and very few classes or objects were located outside of these three folders of the application. It does work, otherwise Rails wouldn't be as popular as it is, but following the MVC pattern did present one problem. Models became huge wells of code as they tried to contain the bulk of the application's code. Now I try to follow some best practices when coding but I don't strictly adhere to them, but you have to admit that a model with a 1000+ lines of code could probably be trimmed down a bit.

Since reading and watching a number of different ways in organising your Rails application, I've started to see the argument for extracting business logic into individual classes. You might be thinking of service objects or Hexagonal Rails when I say this. It's the same idea. I've started to keep classes that contain business logic in the app folder, alongside the rest of the application's objects. The reason for this is that I see the business logic as being part of the application, not a seperate layer or component of the application. I'm using Rails for my application, so I want to keep the business logic close to the rest of the application.

Gem Dependencies

Gems sure are handy. Just add to the Gemfile, install and your application has access to new functionality when it needs it. While adding gems is the easy way to add functionality to your application, you then have a dependency on that gem to stay maintained.

Before you even begin adding the gem to your Gemfile, ask yourself if it is truly necessary for your application?

In the past I would happily add a gem that I thought I needed, but now I take a different stance on it. If a gem provides just a small bit of functionality to the application, I take the time to spike a similar or better solution for the application on my own. The reason for this is that sometimes a gem won't do everything you need it too. If it can provide everything you need then great, but if it only provide most of your needs, could you add the complete functionality that you need by yourself?

Building this functionality on your own isn't always the best way to go, but if your application has specific requirements, then I say it's definitely worth looking at. Rolling your own solution to your application's requirements means that your solution could be a better fit for your application than anything else that's out there. It also means that with your own solution, you are responsible for keeping it maintained. Lastly, it keeps your Gemfile lean and the dependencies for your Rails application lean. I don't suggest you do this for everything, just the gems that you might question over their suitability for your application.

Testing

In the past I was a keen advocate of Cucumber and RSpec. That has changed over the last year. I'm finding that the testing tools that Rails provides are more than adequate for new Rails projects and sometimes better suited for smaller Rails projects.

Out of the box Rails provides Minitest through Ruby to write your tests and fixtures to organise the data you want to test against. Minitest is flexible in that you can write tests or specs depending on your preference, so I don't have any issues there. Minitest in a new Rails application is straightforward and it doesn't require any changes to your application's setup to get it working. Why even bother changing?

The real benefit I've seen though is in doing testing the Rails way is by using fixtures. They do require some initial effort to put together, but they're always there for subsequent tests runs and soon you'll start re-using fixtures for different tests and rarely have to touch them.

Rails is a database backed web application framework. Now I've seen the arguments for isolating the database from your tests, but for a framework that persists its data to the database, I think it's overkill to start stubbing out calls to the database and canning data using factories. This is why I like using fixtures. It's real data you're working with. A complete working set of test data.

Finally, an argument against using fixtures in the past was that tests took too long to run. I have to say that this is not a concern now. I have worked on a number of Rails projects using Minitest and fixtures and while their test and assertion counts run into the hundreds, I've yet to see a test suite take longer than 30 seconds. And even if your test suite is on the large side, it shouldn't be a major concern as you should have your tests automated to run as you edit your code by using something like Guard or Spork.

So What is The Rails Way?

Since I've made a few changes in how I build Rails applications, I'm definitely a more productive developer and I'm able to build new features with minimal fuss. The Rails way for me is working with the tools that Rails provides and building an application as close to the application's own models, controllers and views as you can. Simple patterns and designs are available to reduce complexity but aren't always necessary. I don't suggest you immediately think about re-writing your whole application to fit around these three suggestions, but bear them in mind for any future Rails projects that you have.

Clarity Through Blogging

Perfect time to be reading this again.

Even if nobody reads them, you should write them. It's become pretty clear to me that blogging is a source of both innovation and clarity. I have many of my best ideas and insights while blogging. Struggling to express things that you're thinking or feeling helps you understand them better.

You Should Write Blogs by Steve Yegge

A Big Problem for Google

Marco Arment on what could be Google's biggest challenge yet.

Shallow social-shareable listicles and clickbait headlines have always been plentiful on the web, but it does seem clear that they’re getting much worse and more dominant recently.

Google is making the problem worse, but they’re not the root problem. In fact, the real problem is a pretty big problem for Google, too:

Everyone’s spending increasingly more consumption time dicking around in apps and snacking on bite-sized social content instead of browsing websites and searching Google.

Google and blogs: "Shit" by Marco Arment

Does this explain why Google are going to show tweets in their search results?

If the postman wasn’t singing so bloody loud, he might have realised that he was delivering mail to the wrong door.

Short Term Contractor, Long Term Freelancer

Even before I started freelancing, I always got confused by the almost interchangeable career titles of freelancers and the jobs that were available to them. Contractor, consultant and freelancer. Are they specific to the type of work freelancers do?

When I started freelancing, I decided to market myself as a "Freelance Web Developer". I had thought about the different titles I could use but I paid more attention to the technology field rather than the type of work I would be doing. I stuck with the title of freelancer as I simply thought it best described who I was. This was almost right, I wanted to freelance but what I wanted to start work on was contract work.

Starting Out As A Contractor

To begin with I was keen to look for roles where I could gain a bit more experience working as part of a remote development team. I wanted to work in remote teams to see how they continue to progress with projects. In the past I worked in teams that shared the same physical space and therefore communication with other team members was easy. How does this affect remote teams?

I also wanted to gain more experience in my preferred choice of technology stack. I had a number of roles working with Ruby on Rails, but I was definitely far from being an expert on the framework. A few gigs working in different teams would quickly identify areas where I might be short on knowledge. Thankfully this wasn't a problem.

Armed with these two goals, I found out that contracting would be the best work for me. As a contractor I can market myself as a development resource to clients. They might be looking for that extra programmer needed to finish a project or they might need a developer with experience in a technology stack that they are lacking in. Whatever the reason, my primary role as a freelancer so far is as a contractor.

Long Term Focus As A Freelancer

I don't want to be a contractor forever though. In time I would like to gradually move across to being more than just another "butt in a seat".

Contracting is good because it means the decisions are largely removed from your hands. Your clients decide the work for you and you as the contractor fulfil your client's needs. While this type of work does pay the bills and keeps my career going, I don't believe that this should be my long term goal.

Doing the work is one thing, but advising the client in the way in which they can best achieve their aims is the work of the consultant. While I could market myself exclusively as a contractor, I would in fact like to be more than just another programmer in the team. I would like to be more of mix between contractor and consultant.

What's The Next Step?

This is where I believe the term freelancer applies to the type of business I want to have. I love programming, and being able to work with a client's team and help fill a gap is where I'm comfortable and productive. It shouldn't be my only selling point though. To do this, I'm going to need a web site that focuses on business and freelancing and nothing more. It's going to need material such as test cases and examples of work that back up my abilities as both a contractor and a consultant. I'll see what I can come up with.

NB Knows What's More Important

Routine & Ritual. Get the critical stuff, the vital stuff, the oh-so-easily-neglected stuff embedded. Make it a ritual. Make it a routine. Make it a habit. Every other drink is a beaker of water. No 'if's, no 'but's.

What's More Important Than Ever? 7 by Nicholas Bate

Read on for the remaining six nuggets of wisdom from NB.

Good Weekend For Golf

It was a good weekend for the members of Elderslie's Junior Newton Shield squad. Coaching on the Saturday with the club pro followed by an opportunity to play on the course for all levels of members in the junior section on the Sunday. All those involved with this in the club should be commended. It's great to see kids of all ages being encouraged to play and compete.

Photo of the junior squad practicing their short game

Getting Noticed

I've always been the quiet type, often electing for the quiet corner of the room rather than being the speaker on the platform. Paul Dessert's guide to getting noticed as an introvert though has me thinking I need to shake up this behaviour if I'm to push my career forward as a freelancer.

Here's his take on going to meetups:

Seriously, do it. I know what you're thinking, "screw that, why do I want to talk with a bunch of random strangers? Most people that go to those are greasy salespeople". Guess what, you're right. Most of them are filled with people handing out business cards. Ignore them. Find people that are interesting. They don't have to work in the same industry as you, in fact, I'd suggest seeking out people in industries other than your own. You spend most of your time at work or school associating with like minded people, step out of that bubble and understand the needs and pains of others.

Want to know the secret to a good conversation? Shut the fuck up. Plays right into our wheelhouse, right! People LOVE to talk about themselves. Let them. Just listen and learn. You'll make new friends and gain a potentially valuable contact you can lean on in the future.

The introverts guide to getting noticed by Paul Dessert

Well that was a crap movie.

Junior squad out with @ElderslieGcPro working on their short game. Good turn out as well. #growingthegame

Fixie Friday - Rozzo

Fixie or Singlespeed? Who cares. This Czech built bike is definitely a great looking bike.

Photograph of Rozzo bike

via Cycle EXIF

The One Ring Explained

A brilliant five minute guide to the history of the One Ring.

via kottke.org

Sell to Yourself First

The thing is, that even with all the successful projects behind us, we’re typically bad at selling ourselves to ourselves. Like my friend above, who for years had been the lead developer at an agency yet he underestimated the actual value he brought to the table.

Your First Sale is to Yourself by Curtis McHale

Patrick is Kicking Ass

Warning, this contains a lot of ass kicking, but it's well worth the read.

Centireading

I can't say that I've read a book over 100 times, perhaps the closest to that count is A Christmas Carol which I've read over 20 times.

Centireading reveals a pleasure peculiar to text lurking underneath story and language and even understanding. Part of the attraction of centireading is that it provides the physical activity of reading without the mental acuity usually required.

Centireading force: why reading a book 100 times is a great idea by The Guardian (Stephen Marche)

Doing a number of spikes with the Ionic framework this morning. Like what I’ve seen so far just by getting up and running.

Kids & Technology

Last weekend our son came home with the school quarterly bulletin. As always we familiarised ourselves with everything that was coming up in the next few months, asked him what events he would like to go to and made sure there was nothing else that needed our attention. One last thing caught me wife's eye though as she read through the bulletin. The school are looking for volunteers to help re-vamp their school website.

The next day I phoned the school to let them know I would be willing to help out. I got a call back a few minutes later with a date and time to speak to the assistant head teacher at the school who will be handling the website. All good so far.

The school's website is okay as an information portal but it definitely falls short in terms of how it looks. Well, when the site says that the school kids contribute to the look and content of the site, you're not exactly going to be expecting something that wins web design awards. Looking at other web sites in the area, and it's clear that the school web site isn't a primary concern for some schools. There is more an emphasis on getting the school children involved and that's not a bad thing.

Today's school children though are far different in terms of technology exposure than school children have been in the past. In the last ten years, mobile technology has become so engrained in day to day life that homes often have two or more mobile devices with kids often having their own tablet or even smartphone.

It got me wondering about the approach to take in getting the school children involved in the new school website. Is it better for them to know how to edit and update web pages by hand or will the kids be more interested in maintaining the school website through something like Wordpress?

I might be jumping the gun here a bit, but I've been keeping a list of questions like this to ask at my meeting with the school this week.

The main good thing to come out of this though is the chance to do something for an organisation in my local community. Yes, I'll be doing the work for the school for free but with our oldest already a pupil there and our youngest due to start there in a few years, the chance to contribute something to their school can't be a bad thing.

Back on Twitter

I'm back on Twitter.

After weighing up the options, I'm probably better being an active member of at least one social network rather than none at all. Working for yourself is great, but the lack of office banter can make for very quiet days.

Fancy following me? I'm @matthewlang.

Never thought I would be proficient with Vim on a day to day basis. It’s taken a number of attempts but I finally got there.