Coworking at the Majoran Distillery

I am writing this post from the Majoran Distillery in Adelaide after my first official day of “coworking”. The Majoran Distillery is a space for digital entrepreneurs to collaborate and share ideas in an environment that’s intends to encourage innovation and lift the status of the Adelaide startup community.

The coworking area at the Majoran Distillery

The coworking area at the Majoran Distillery / Image “borrowed” from their website.

I recently discovered the existence of the Distillery after searching for WordPress meetup groups in Adelaide. When I looked at the details of a recent event I was surprised to find it was held in a coworking space. This sparked my interest and I spent the next 4 hours researching it and imagining what it would be like to be involved.

The Majoran Distillery was founded midway through 2012 and has already moved into a new home after outgrowing its first. It’s based on similar concepts all over the world, including Fishburners in Sydney and York Butter Factory in Melbourne.  Here I believe there are about 25 full-time members, ranging from accountants, to freelance developers, to accomplished business people working on their second startups! The basic idea is that you rent a desk in the space on a casual or monthly basis. They give you a chair and wifi, and you sit there and do work. Simple. Of course there’s the added benefit that the guy sitting to your left is a Ruby on Rails expert, and the guy to the right is a social network guru. There are regular workshops and guest speakers hosted in the space. I’ve also heard rumours of hackathons. You can book rooms to meet with your clients, and even use the Distillery as your registered business address. If you want to be involved in the Adelaide startup scene then this is the place to be!

So why am I doing this? I have a nice comfortable office at home that’s effectively rent free, so why am I looking at paying $300 per month for a full-time membership? Well the simple answer is for the experience. Most of my time in the industry has been very focussed on high level government work. Budgets are huge, required returns on investment are minimal, and projects drag on forever. I have never really worked with people doing things on the same scale as I am, and often I’m just flying blind. Another reason is that I miss interacting with real human beings on a regular basis, and I have a real need to bounce ideas of like-minded developers. I’m could easily write the cost of the Distillery off as training because I’m going to be able to interact with so many amazing and accomplished business people. I believe those opportunities will be priceless. If I can’t earn an extra $300 a month through the contacts I make in this place then I’m doing something wrong! (A great example is a guy who joined the distillery less than 2 months ago, and in that time he’s hooked up a connection with a rising startup and is flying off to Silicon Valley to work!)

After a full day working here, I was surprised at the level of productivity. I imagined that the place would be noisier with more interaction, but people here are very focussed. There’s certainly a lot of collaboration going on but most people are just getting things done. The building is a lovely old space above a pub, albeit a little outdated but with lots of character. The main coworking area is bright and open, with a comfortable level of noise coming from the street. There is a real buzz to the place that adds to the energy.

I haven’t quite felt the sense of community here yet, with people arriving at different times and their gazes being locked into their monitors. It’s just like any new workplace, and I suspect after a week I’ll be completely involved and spending more time helping out than actually working. The ones who I have spoken to are very nice, and it’s quite a nice change to be in a group of highly motivated entrepreneurial people. It’s actually quite intimidating, but there’s nothing like being the smallest fish in the pond for encouragement! I was invited into the official Facebook group today, and there’s a good level of conversation going on there.

I’ve signed up for a month just to see how it fits with the way I work, but I predict this will turn into a long-term thing. I can already see the potential and I don’t want to miss out on the opportunities that this place can bring! If you’re even just a little bit interested, check out their website or come for a visit after lunch on a Friday afternoon for “Open House Fridays”. I’ll keep posting updates as I discover more, but that’s nothing like being here in person.

I hope to see you around the distillery soon!


Tonight on the local news there was a report about Adelaide’s startup community that included the Majoran Distillery! It’s only a couple of minutes, so make sure you watch it on the Yahoo 7 website!

URL Rewrite to Remove File Extension (PHP, ASPX, HTML, etc)

For simple websites built-in a dynamic language such as PHP, it is best for your URLs to be technology agnostic. What I mean by this is that a URL such as implies that page was written using PHP. While you might be proud of this fact (or not), what happens when you decide (or are told) to change technologies in the future? Say your new boss has a passion for .NET and wants everything rewritten in ASPX? You’re either forced to change the URLs and potentially break bookmarks and Google rankings, or you can trick the server to process .php as ASPX.

The solution is easy and comes down to a simple directive in a .htaccess file placed within your root directory. For PHP, copy and paste the following into the file and save it.

For other dynamic web languages, replace the .php with your particular extension.

Now when a user types into their browser, the server automatically adds .php in the background and runs the correct script. The other added bonus is the URL is now more user-friendly and removes information that is irrelevant to the content.

It’s a win for everyone!

Gmail Unread Message Icon – Where Have You Gone?

The web browser is the ‘home screen’ of my computer, with my most regularly accessed sites pinned as tabs in Google Chrome. The number one tab is of course Gmail, the webmail client of choice for millions around the world.

Gmail has a number of ‘Labs’ features that you can enable to enhance the default functionality and make small modifications to the user interface. Amongst the Google Calendar Widget and the ability to Undo Send to recall a message, I have enabled the Unread Message Icon.

See how many unread messages are in your inbox with a quick glance at the tab’s icon. This lab only works with Chrome (version 6 and above), Firefox (version 2 and above) and Opera.

When a new email arrives, the favicon in the pinned tab should look something like this:

Gmail Unread Message Icon

The Gmail Unread Message Icon.

But for the last couple of weeks, this is how my pinned tabs looking in Google Chrome:

My Pinned Google Chrome Tabs

My Pinned Google Chrome Tabs.

That’s right, there’s no message icon! The unread mail count is missing and I have no idea why…

After feeling like I must be the only person on the internet with this problem, I came across a Google Groups post discussing the problem but without solution. Apart from that, there don’t appear to be any other blogs discussing the issue.

I just want it back, so if you’re experiencing the same problem or have a possible solution, please hit me up in the comments!


Using Uploadify and Kohana without HTTP Error 302

It’s 11:30pm and I’m in bed. Slowly drifting off to sleep when I’m awoken by a buzz and the glow of my phone. It’s one of my clients. He’s having problems with his site.

Hey Mate,

Staff are having trouble uploading photos to the website. I just tried to do it also,
Here is a screen shot of the error message I received. Both Images were errors.

Great. After a few minutes of ignoring it, my brain was churning away and I couldn’t get back to sleep. I snuck past my sleeping cat, Pixel, and jumped onto the computer. Looking at the screenshots of the error I could tell there was something wrong, but it didn’t make sense.

Uploadify HTTP Error 302 with Kohana

Uploadify HTTP Error 302 with Kohana.

This particular site uses Uploadify to let staff upload profile images of themselves to a Kohana based backend. Uploadify is a Flash widget that allows the users to pick multiple images and upload them asynchronously without ever leaving the page. It makes for a very slick user interface when combined with other AJAX components.

Kohana is a (fairly) lightweight PHP framework that provides a simple ORM (Object Relation Mapping) mechanism and enforces an MVC (Model View Controller) architecture. While I quite like working with the framework, the documentation is atrocious (filled with comments like ‘we should include an example here’ – face palm) and recent version changes have outdated a lot of tutorials.

Uploadify 302 Redirect

What struck me first is that 302 is not actually an HTTP error. A quick search confirms my suspicion that HTTP 302 means ‘Moved Temporarily’ and is a way of redirecting the browser to another page.

An example of when you might use this is if the page requires authentication and the user isn’t logged in. In this case you would detect the user’s status and 302 redirect them to the login page.

But that didn’t make sense in this case because the user must already be logged in to even access the upload page. Or so I thought…

Adobe Flash Does Not Send Session Cookies

I’d obviously tested this previously and made sure it worked before I released it, so why wasn’t it working now? I spun up Google Chrome and was able to upload an image just fine. In the screenshot I saw my client was using Safari so I gave that a try.

Aha! HTTP Error 302!

It turns out that Adobe Flash has a bug that prevents the session cookie (or presumably any cookies) from being submitted to the server. Effectively this means that although the user was logged in on the browser, they weren’t logged in on the Uploadify Flash component. Google Chrome embeds its own version of Flash in the browser and that doesn’t appear to have this bug.

Manual Transfer of Session ID

The solution turned out to be fairly trivial to implement, although it took over 2 hours of trial and error to get just right. Rather than relying on the session cookie to send the session ID to the server, you can configure Uploadify to send it manually and tell Kohana to parse and use it.

Uploadify formData

The Uploadify side is simple, and only requires one more line of code when you generate your view.


The formData field takes an arbitrary JSON object and sends it to the server as a parameter in the POST request. As the value we’re echoing the name of the session cookie as well current session ID.

Kohana Session Manipulation

Playing on the Kohana side was a bit trickier, since Kohana provides its own abstraction over the built-in PHP session mechanism. I also include my authentication/redirection mechanism in a base class, and so it was important that any changes to the current session were made globally.

This code has been taken from my image upload controller in Kohana, with the important parts highlighted in yellow.

The technique is to extract the session ID from the post data and set the session cookie before the Kohana session is initiated. For this reason, it’s very important that this occurs before Session::instance() is ever called, otherwise the passed in session ID will be ignored.

This is also why the method for extracting the session cookie name is so convoluted. Normally you could call Session::instance()->name() to get the cookie name, but that instantiates the Kohana session too early. Instead it is extracted from the configuration file in the same way the framework itself accesses it. Of course if you know the name of session cookie and are sure it will never be changed then you can hard code this.


With a few lines of code, this bug was easily squashed. The workaround checks for the correct flash behaviour and so it will continue to work even if Adobe fixes the session cookie problem in the future. My client and his staff can now get back to uploading images with the fast and smooth interface thanks to Uploadify.

How to Clear Space on My Hard Drive

When I purchased my MacBook Air about 18 months ago, I shortsightedly believed that I would only use it for casual browsing and that a 128 GB solid state drive would be more than enough. Why would I bother paying a couple of hundred dollars just to double that?! Less than 6 months later I quit my job and it became my main work machine…

Almost every day I’m greeted with the message that my hard drive is full. I keep my recycle bin empty and try to delete things immediately after I’ve finished with them, but it’s getting worse and worse. Since I keep all my work files in version control it means I’m effectively keeping at least two copies of everything.

For some strange reason I find that restarting my computer will clear up 5 to 10GB of space, which is then slowly eaten up as my computer does its thing throughout the day. I guess it must be some sort of cache (maybe Google Chrome?), but I haven’t been able to narrow it down yet.

Rather than bite the bullet and buy myself a bigger SSD I regularly enact a cleaning ritual. These are the steps that I follow to make my drive nice and happy again.

Identify Large Files with ‘Disk Inventory X’

Disk Inventory X is a nice little utility that will scan your drives and display a nice graphical representation of the files, their sizes, and their types. It’s available for Mac OS X 10.3+ and is free under the GPL.

Disk Inventory X displaying the results of my hard drive scan

Disk Inventory X highlighting a large file from the SSD scan results.

I use this tool to identify large files that are taking up more than their fair share of space. Often these are large apps/zips that I’ve downloaded or videos that I’ve saved for later viewing. A few clicks quickly finds files that I can delete or archive on my external disk.

Find Duplicate Files with ‘Araxis Find Duplicate Files’

A recent addition to my cleanup process is to scan for duplicate files. These generally occur when I lose track of what I’ve downloaded or where I’ve stored it, and in almost all cases the duplicates aren’t needed. There’s lots of tools to find duplicates on a Mac but at the moment I’m trialling ’Araxis Find Duplicate Files’.

Araxis Duplicate Files

Results of the Araxis Duplicate Files scan.

A scan of my entire user directory took about 15 minutes, and highlighted 84971 duplicates. After sorting them by size I was able to find and delete around 1GB worth of data including an entire directory on my desktop that was accidentally duplicated and contained hundreds of photos.

Cleaning Out My Downloads Folder

I used to use the desktop as the ‘bedroom floor’ of my computer, but when I outgrew that my downloads folder became the new home of junk. When I’m running low on space I usually sort the files from largest to smallest and progressively delete items from the top.

Downloads Sorted by Size

My downloads folder sorted by size.

Mostly I find application archives or files that were emailed to me and I only opened once and these can be safely deleted. I also kinda use this folder as long term storage for things that I’ve been too lazy to move to their rightful homes. In an ideal world, I should be able to complete empty this folder and not worry about having lost anything. This still needs a bit of work!

Empty Trash

After meticulously going through the files and finding ones to delete, don’t forget to empty your trash! If you’re really struggling for space like I am then it’s probably good to do a full restart as well. If you have any ideas as to why restarting would help then I’m all ears!

Of course what I should probably do is spring for a new SSD and install it my laptop. I haven’t really looked into installing OS X but a full reinstall is going to blow a couple of days of productivity. I don’t even know where to start. Do I need to get a disc from somewhere? Do I download something? I think I’ll just stick to my daily triage for now.

January 2013 Review

As part of the effort to increase transparency in my company, I plan to follow-up on my goals and review the results at the end of every month. This is mostly for my benefit as it forces me to pull together some key performance indicators and to take action if things are not heading in the right direction.


January was a month of transition and holidays. Most of the income received was for work completed in late 2012, and as such wasn’t included under the company name. I also took a couple of weeks off over Christmas, and spent the Australia Day long weekend down at the beach. Then the majority of my productive time was spent on strategising and putting into place processes for the rest of the year. As a result, we only achieved a very limited income which coincided with abnormally high expenses as a result of paying for multiple services in advance.

January 2013 P&L

January 2013 Profit and Loss Statement


In the future I should probably start breaking the income up into multiple accounts for reporting purposes. This month it mainly consisted of one finished web project, a few consulting hours, and a small amount of web hosting income.


As I mentioned before, I paid up front for a number of services to receive a significant discount. For example by paying for 12 months of web hosting from my wholesale provider I was able to save 30%. Similarly with my accounting package, paying up front saved me a month’s worth of fees. These expenses won’t come up again until next year, but it was certainly a bit of a hit to the budget this month. The other primary expense was contractor fees, and this was due to the web project being almost entirely handled by a member of my team. The software components were for a client project that I unfortunately couldn’t quite complete by the end of the month, but this expense will be fully billed to the client in February.

Profit and Revenue

Making a loss of -$41.94 for the month is hardly desirable, but as you can see the trend is shifting since the company started trading in November 2012. February should hopefully see  the company returning a profit for the first time. The total revenue of $2220 falls short of the $5667 required per month to meet my targets for the rest of this financial year. I haven’t properly kept track of the remote/passive sources income, but at the moment it’s negligible.


To be honest, this is the first I’ve ever really thought about forecasting finances for the month ahead. Without having much previously recorded data this is going to be a wild guess, but at least it’s a starting point…


  • Project #9956 ~ $600
  • Project #9997 ~ $300
  • Project #9961 ~ $130
  • Recurring/Direct Debits ~ $30

Total forecasted income in February 2013 is $1060


  • Subscriptions ~ $30
  • Advertising ~ $400

Total forecasted expense in February 2013 $430

The forecasted February 2013 profit is $630 – well that looks a bit bleak! There are a number of large projects in progress, but the problem is I don’t expect any of them to bill in February. I need to keep better track of these projects and slot them into a longer term forecast, but right now I don’t really have time. It’s something I’ll work on for next month.

What the forecast does show me is that I need to actively be finding some small/medium-sized work that we can hopefully complete and bill in February. Cash flow is everything, and I’m seeing a real lack of it here.

Logo Venture

I’ll give a quick little update on my logo venture. After about $200 spent on advertising, I still haven’t received a single conversion. This is not surprising because I haven’t implemented any of the changes I discussed earlier. It’s been a bit of a lower priority for me and I never get around to it. In the mean time I’ve now paused the AdWords campaign and will let it sit for a bit. The advertising did generate plenty of traffic and provided some interesting analytics to review. It’s not a loss yet, I just need to give it the effort it deserves.

Other Results

In my post setting goals for the next 6 months, I discussed a number of qualitative things I wanted to improve this year. The biggest was to improve communication with our clients. This has been a great success, and I feel a much more positive vibe with all our relationships. In particular I make sure to reply to customer calls and emails as soon as physically possible (within business hours). Even if I can’t complete their requests immediately, I at least let them know that I’ve received their message and will work on it as soon as I can. I have also been issuing weekly update emails every Monday morning to make sure the clients are fully up to date with the status of their projects.

Lately I have been better at turning down or reducing work that would be detrimental to the company or the team. It’s not always easy to say no to a client, but I believe this has helped to cut our stress levels too.

I haven’t yet been able to increase our team size or expand our areas of focus. There have been a couple of stumbling blocks/opportunities that have distracted me. February will hopefully see an improvement in this as I make the most of the quieter period.

Personal Results

Just a quick update on the personal goals that I set.

I have managed to work less than 40 hours per week and I mostly finish up before 7pm at night. I haven’t been able to take a full day off yet, thanks to one of my other goals: getting back into fitness.

Waking up early (5AM) on multiple mornings to go to boot camp has killed my productivity. I end up being exhausted most of the day and not getting anything done. I am working on trying to shift my sleep pattern because this is not a workable situation!

Lastly, blog posting has been less regular than I would have liked. A lot of that comes back to the early mornings and lack of productivity. I’ve also felt a little blocked a couple of times with some posts being hard to start. Instead of changing to a more interesting topic I just end up skipping a post that day. It’s early days, but I do enjoy it when I get a post out the door.

That’s the January 2013 update! How was your month?

WordPress Quick Install Script

Where I live my internet speed is about 7Mb/s down and 0.3Mb/s up. While the download speed is certainly not the worst I’ve ever had, the upload speed can have a crippling effect on my productivity. Take for example when I need to upload a fresh install of WordPress to a client’s server. Downloading the 5MB file takes a few seconds, but the struggle to upload via FTP can take up to an hour, and that’s assuming the connection hasn’t reset before then!

The Solution

My solution was to put together a little script that would download the latest WordPress installation directly to the server, completely bypassing my local computer all together. It then automatically unzips the files and removes the surrounding wordpress directory. As a final security measure, the installation script then deletes itself so that it can’t be mistakenly (or nefariously) run again in the future.

The script is an embarrassingly simple, hacked together, ugly piece of code. I am releasing it here because in spite of its flaws, I find it super useful and easy to use. I may update it in the future but for now it does its job.

The License

I’m releasing this script under the “As-is, do anything you like with it, but don’t hold me responsible for anything it does” license. Be warned that I have barely tested it, and it could very well delete everything on your computer/server or launch the first incarnation of Skynet.

The Usage

  1. Download the archive.
  2. Unzip the script.
  3. Upload it to the directory on the server where you want to install WordPress.
  4. Open a browser and visit the URL where the script is located, eg.
  5. Wait. Be patient, it might take a few minutes.
  6. Click the link to begin the rest of the normal WordPress installation process.

The Code

For those that are interested, you can browse the source code below.

The Conclusion

I’ve found that not only does this script save me a tremendous amount of time, it also helps colleagues that have great internet connections. I think it’s by far the fastest and simplest way to install WordPress while ensuring you have the latest version.

Let me know if it’s useful to you, and please report any bugs that you find.

Is it Better to Have Multiple Websites or One Combined Super Site?

As I start to explore new areas of my business, I feel the need to spin up a new website for each aspect. For example I intend  to transition into more software development project as that’s where my expertise lies. I have been considering registering a new domain name to host a site specific to software development.

The advantage with having independent websites for each product/service is that the content can be optimised to target that particular audience. Instead of requiring a visitor to navigate to the “Software Development” section of the site, all the information they need is right in front of them. This would make it much easier to convert visitors into paying clients.

On the flip side is the fact that you’re distributing your search engine optimisation efforts over multiple sites, effectively diluting your search engine rankings. It’s hard enough trying to get quality backlinks to my main website, and when I have five or six different sites it becomes next to impossible to do it effectively.

As content marketing becomes increasingly popular, your workload is increased dramatically with every new site you add to your portfolio. The power of snowflake queries will only increase traffic to the site the content is posted on, and your sites with similar content will begin competing for rankings with each other! (And don’t even think about using duplicate content!)

When to Have Multiple Sites

  • When the content of one site is detrimental to the service of another
    I will always keep this blog separate from my main website as the transparency I provide here could potentially affect the image I’m portraying to my clients.
  • When the content of one site is completely unrelated to another
    If I had a site about my love for cats, incorporating it within my main site would distract potential clients from my main services.
  • When separating your personal opinions from your business life
    I am happy for my clients to read my personal opinions on which Vietnamese restaurant has the best mystery meat roll, but it’s important they can distinguish this from my professional persona.

When to Have a Single Site

  • When the products/services you are selling are related
    A visitor looking for one of your main services could well be interested in giving you money for one of your related services.
  • When you are targeting a different segment of your market
    I used to believe that this was a good reason for a different website, but I’ve since realised that you just end up competing with yourself. By having pages that offer services targeting different market segments, your visitors will self select the service that meets their needs and budget.
  • When you are blogging about topics that would interest your customers
    Having your professional blog on a separate website is a big no no! The core principle behind content marketing is to attract new customers to your website using your blog! In my case this blog is my personal persona and I write a customer orientated blog on my main site.

How Will I Implement This? is my main website, and it will host all variants of my software and web design activities. It contains the business related blog, a newsletter that visitors can subscribe to, and all consumer related software projects (such as the snowflake query plugin). is the home of my dedicated logo design business. Realistically if I was to do it again it would be better served as part of my main site. That way the pay per click advertising and content marketing would increase the exposure of my entire brand. is my personal blog that discusses software and my business from an entrepreneurial point of view. While it is a professional blog of sorts, it would not be of interest to the clients of my main business. will be a resume/portfolio site that simply lists my experience and the various projects I work on. It becomes an index page that links to my other sites and online profiles.

I am also considering registering a couple of domain names specific to a particular service and have them redirect to a landing page for that service on my main website. I would only use these addresses when directly marketing those services, such as with pay per click advertising or business cards and flyers.

What if You’re Not Sure?

The golden rule is that it’s easier to market one website than it is to market multiple sites. Focus your efforts in one location and you’ll have the best chance at success!

Snowflake Query WordPress Plugin

WordPress is awesome. It’s the most stable and extensible framework that I have ever worked with and you can do some pretty impressive stuff with it. It’s growing in popularity with an estimated 20 to 25% of new websites launched in 2011 using WordPress! If there was ever a platform with guaranteed growth then WordPress is it!

One of my goals for the next six months is to achieve a greater percentage or income from remote or passive sources. A simple way to get started with passive income is to create a small software project that I can sell through an online marketplace. The marketplace handles basic marketing, payment, and delivery of the software, and I get a share of the profits. All that I need now is an idea…

Choosing an Idea

If you’re a software developer then you’ll understand that I have no shortage of pet project ideas. In fact my list of project ideas is so big that I’ve even considered writing software to help my manage the list itself!

Once I exclude projects that are overly ambitious, unprofitable, or in crowded markets, I am left with a few reasonable options. I want to complete the majority of this project in a weekend (to maintain some motivation and reduce the risk that nobody would want it), and to improve my marketable skills in the process. Hence,  I have chosen to create a WordPress plugin.

Snowflake Queries

Something I have often noticed when reviewing my Google Analytics data is that visitors will find your site by searching for unexpected terms. For example, on my main website I found some visitors searched for “How do I backup my WordPress website?” and found the site as a result of pages that talk about WordPress web design. In response I created a new page titled Backing Up Your WordPress Website that included an instructional video and transcript. As a result I now rank higher in Google for that phrase, and the page has become one of my most popular.

Targeting these “long tail” keywords/phrases can be a great source of traffic. Content Marketing is the process of publishing content that attracts visitors to your website through search and sharing. It can be easier to rank highly for a large number of long tail keywords than for primary search terms such as “Web Development”. Each article you publish can also rank for a greater number of long tail keywords giving you a better return on investment.

My favourite blogger, Patrick McKenzie coined the term “Snowflake Queries” to explain this phenomenon. The idea is that the queries are unique one-off queries that Google only sees once (or a very limited number of times). These searches are often pre-sales enquiries as the visitors are looking for a solution to their problem and stumble upon your site. If you can convince them that you hold the solution then you have made yourself a sale. Patrick has used the idea of Snowflake Queries as the core strategy for marketing his Bingo Card Creator software.

The Solution

It’s possible to regularly view your Google Analytics data looking for opportunities just as I did, but as a programmer I like to automate things. Reviewing and analysing the data can be very time consuming. Time that would be better spent on writing content.

There exist SAAS applications (such as HitTail) that perform the analysis for a regular subscription fee ($10 to $80 per month). That cost is easily justifiable given the increase in visitors you can achieve, but I don’t see the need for a hosted solution. The process doesn’t require the aggregation of data from multiple users and could easily be packaged into a single downloadable WordPress plugin.

My Snowflake Query Plugin (probably not what I’ll call it, for SEO reasons) will do the following:

  • Track referrals from major search engines.
  • Determine the long tail/snowflake queries that are bringing in visitors.
  • Create a list of these queries that aren’t already well served by the content.
  • Make it easy to create a new article based on a particular query.
  • Provide an option to purchase a custom article instead of writing it yourself.
  • Insert a list of the referrer queries of each post into the footer to give an SEO boost.

The idea is to make it as easy as possible to determine the best topics and write about them, making the most of your content marketing.

Marketing Strategy

I plan to sell the plugin through CodeCanyon (affiliate link), where I will receive 50% of the sale price. If I also refer customers using the affiliate link I can earn a bonus 30% of that person’s first purchase.

I will try to drive visitors to that page using a mix of content marketing and forum posting. I haven’t yet decided if I will create a website just for the plugin, use this blog, or use my main site. My instincts are telling me that I should consolidate but I’m not 100% sure.

At this stage I don’t believe a Pay Per Click campaign will be viable.

Technical Constraints

As this will be a fairly simple plugin I don’t anticipate too many technical issues. The only one that I can think of is that I need it to be compatible with other popular plugins, including caching plugins. This precludes me from relying on PHP page loads to track visitor referrers as often a cached page will be served. Instead I will have to embed some JavaScript into the page that makes a direct call to the server from the browser. Not too hard, and will also allow me to track each visitor only once thanks to the magic of cookies.


I am hoping that this will be a weekend project. In the near future I am heading to the beach for a few days with some friends, and although I’ll spend some time relaxing I also hope to get some coding done. Ideally the coding side of this should take no more than 24 hours, cost $0, and be done by February 7th, 2013. Fingers crossed!

Come back soon to see if I make that target!

Daily Todo List

Last week my productivity was pretty poor, mostly due to starting back at boot camp with one of my clients. Waking up at 5AM to do strenuous exercise doesn’t really go hand in hand with a full day of intensive work. I end up getting distracted and lack focus on what I should be doing that day.

To counter that, I’m slowly adjusting my sleep pattern so that early mornings aren’t as much of a problem. Also, I’m setting myself a daily todo list as a guide to push me through the day.

The List

  1. Pick a main goal for today
    It’s important to have one major thing to focus on and achieve.
  2. Respond to all client emails
    The most important so I’ll do this first!
  3. Write a blog post
    It doesn’t matter on which blog, but my posts are much more logical in the morning.
  4. Complete a task on each active client project
    Keeps each project moving along and brings in the dollars.
  5. Do one thing to help promote or market my core business
    I need a constant supply of new clients flowing in.
  6. Complete a task on one of my internal development projects
    Mainly for fun, but it could lead to remote/passive income.
  7. Complete a company administration task
    I often put off tasks that require a lot of physical paperwork.
  8. Update my books
    It’s a small daily task that can really snowball if I let myself get behind.
  9. Find and complete one old/lost task in Project Bubble (affiliate link)
    I often add tasks for great ideas and then completely forget about them.

Not only should this list keep me on track, but will also help balance the work so that I keep all aspects of the business working nicely. This week I’ll try printing out copies of this list and filling them out with tasks at the beginning of the day. That way I can tick them off as I go!

Ticking things off feels great! Blog Post – Done!

[Edit: Updated to include a main goal for the day based on a week of trying this out.]