Advertising - An Update
Back in January I decided to try a short experiment by adding ads to my site, just to see what happened.
I only intended to leave it in place for a couple of months, but I think I've established by now that I'm at the very least a chronic procrastinator.
In the 10 months that I have had adverts on my site, I have made a grand total of £2.66; since Google puts a payment threshold of £60.00 on payments, it would take me about 20 years just to get paid.
I don't think I'm uncovering any Grand Truth or anything here - my blog traffic is small, but when I looked at the quality of the adverts I was displaying, I realised that it just wasn't worth it.
I have removed ads and will henceforth be writing for the sheer pleasure.
Never tell people about your projects
I last posted here on the 1st of July. Not the longest outage, but possibly the most irritating.
I'd been working hard on my mo.lecul.es project and was getting myself psyched up to actually release it.
Then I went on holiday for a month, came back and went back to my day job which is very demanding and simply didn't have the time or enthusiasm to get things moving again. I still use mo.lecul.es every single day and it works fantastically for my needs. There are a few bugs here and there and the web app client still leaves a lot to be desired but it happily does its thing every 15 minutes, works wonderfully well with Reeder 2 and I love it.
Talk about RSS aggregator services however seems to have completely died. Everyone seems to have picked a replacement service for Google Reader and moved on with their lives! I've pretty much convinced myself that at this point, if I fixed the bugs and sorted out a payment service, I'd get all of about zero customers. This is mostly why I will never be a Silicon Valley Gajillionaire, but I think I'm mostly OK with that.
What it did do though was make me too afraid to write on my blog. I got anxious about it, thinking that if I posted about anything that wasn't "I made a startup, pay me money now please", people would see that I had failed. Maybe I have, although ultimately, I have a nice little RSS aggregation system that keeps my thirst for stuff to read sated.
I worked out the other day that of the 24 hours I get in each day, after taking off my job, looking after my children and sleeping, I get about 2 and a half hours of my own, during which I eat and spend time with my wife! This is why Silicon Valley Gajillionaires are almost entirely very young, single and childless.
I still love to tinker with stuff, and I'm hoping that by coming to terms with putting mo.lecul.es to sleep for the time being, I'll be able to let myself actually play with other things:
- A pixel art game heavily inspired by FTL
- An RPG type game to let me relive my glory days in Ultima Online
- Learn Ember.js so I can write a cool web app for mo.lecul.es
- A project management type app that that brings my Todo App, Bookmarking App and stuff all together in a really useful tool.
- A Gallery thingy so I can put my photos on my website
- Finally create an iOS app
As I write this, Google Reader is still available but its lifetime is measured in hours.
For the last 3 days, I have been using mo.lecul.es via Reeder on my iPhone, using the Fever API option, and the web app that I started building on Friday on everything else!
It is my intention to launch mo.lecul.es as a paid service in the next week or two. I had hoped to be finished with it before Google closed the shutters on Reader, but life got in the way a little.
The system is functional, but it is still a long way from properly usable. Some things that still need to be done:
- Add a way to subscribe to feeds without having to log into the database and manually type in SQL!
- Add a way to un-subscribe, move feeds into groups and rename them.
- Add a 'logout' button
- Add a way to change your password
- Create a signup page
- Integrate with a payment processor
- Make a nice landing page with tour screenshots
- Implement the Google Reader API
- Miscellaneous design/layout tweaks
I realise too that the payment processor part is going to take a little while, but I'm giving myself a little extra time on that one - all accounts will start off free for the first month. I think paying for software is really important, but I also like to take things for a test drive before I plunk down cash. I guess the clock starts ticking on that one the moment I get my first customer!
Tasks for today are numbers 1, 2 and 3 on the list.
Mr. Reader got an update today, it now supports a whole slew of sync services including Fever.
I'm still working hard on mo.lecul.es, my RSS Sync Service and updated it today to work with Reeder (iPhone), Mr. Reader and Sunstroke. So currently the API side of things is in Private Beta and I'm working on a web frontend to enable management of subscriptions and groups.
Things have been moving slowly in the last week on account of a new arrival in our house!
However, I have built the very basic skeleton of an RSS sync system that uses the Fever API. Here's a screenshot of Reeder syncing with my test server (currently only subscribed to the feed for this website!)
The Fever API doesn't allow for editing feeds, so currently in order to add a new subscription to my account, I have to log onto the database server and manually add it, but it's a good start and I think I've got the hardest 2 parts done. Just the huge easy bit of building a webapp to manage it all to go!
I'm planning to enter Ludum Dare tomorrow, just to start easing myself back into coding, so I'll probably be writing a fair bit about that as I go.
RSS Sync and Google Reader
Google announced yesterday that they are shuttering Reader. I'm rather sad about this since I use Reader and a number of apps that interface with it many times every day. It's the first tab I open when I start my browser.
Back in 2011 I wrote a post about developing my own system. I've noticed that it's getting quite a few pageviews at the moment! I did indeed begin developing my own service, but it was a bit of a forever project for me. I have a domain, a database and a skeleton api but nothing fully working; yet.
I'm going to switch priorities on this now and start building something that I would be happy to use myself in place of Google Reader.
Maybe my forever project could become my forever career
A couple of weeks ago I started running Computer Club at the school I teach at. Last week we started playing around with a space shooter akin to Xenon 2* and its ilk.
The code is available on GitHub and you can also Play the Game.
IMPORTANT NOTE: The graphics are intentionally crappy! The idea was to offend the kids' sensibilities so much that they made their own art!! (The game is rubbish because making games is hard)
* Cute fact, my brother and I called this "Exanon" for far longer than either of us care to admit when we were kids.
Static Blog - The New "Hello World"
I've been thinking about a comment I read on an HN thread introducing a static blogging engine someone had written.
It's difficult to tell the tone the line was written with:
Are static site generators the new "hello world?"
when reading anything on the internet, one's immediate reaction is usually that the person is criticising or disparaging, sometimes this is even without merit!
I kept thinking about it though. In April of 2012, I re-wrote my PHP based static blog engine using Python; not because there was anything particularly wrong with the system I had already built and was using, but because I wanted to learn Python.
"Hello World" is a deeply dissatisfying first step in learning a language. I remember sitting in the computer lab at my school, aged 13, entering into a BASIC prompt:
10 PRINT "HELLO WORLD"
20 GOTO 10
and feeling very foolish when I had to ask someone how to make it stop on the unfamiliar machine I was using! Following that, I was left with the question "What now?"
The great thing about building a static blogging engine is that it touches on most of the fundamentally important aspects of creating a useful application:
- Reading and writing files
- Capturing user input
- Formatting Strings
- Loop and other flow control
- Arrays and other simple data structures
- Incorporating external libraries
You start off (ironically) creating a simple HelloWorld.txt entry and learn how to open the file and read in the contents. Then you start to think about outputting that as HTML, working in templating and markdown libraries, and writing it to a file. And so on.
It's clear from some of the other comments in that thread that some people believe that once there is a good solution for a given problem, there is no merit in creating more. I'd say that my current static blogging engine is a long way from the best option, but I enjoyed writing it and I learnt a lot by doing so.
Whilst I would recommend building one to anyone thinking of learning a new language, nothing compares to solving an actual problem you have right now.
There are only really 2 ways to make money from writing on the internet:
The problem with a Paywall is that you really have to have a fairly large audience to start with. The problem with Advertising is that it's advertising.
Really though, there are others, these two are just the obvious ones.
In around February of 2011, I decided to take a slightly different direction with my online writing. Up until then I'd just written about whatever came to mind, which was usually a brief opinion on something that someone else had written. I was trying to emulate the blogs that I followed myself, but I'm not that strong a writer and I don't have access to the juicy inside information (or any information really). I was just adding to the echoes.
I started writing about my adventures in tech, explaining how I solved various coding-related problems. I was emulating a different set of blogs that I follow (of which there are fewer), but also the kinds of resources that I was using myself every day to solve the problems I would then write about.
My intention was to add value - where I had to cobble together 3 or 4 different blog or forum posts to find a solution, those that came after would find my single post that explained exactly how to do what needed to be done. If nothing else, I'm creating a resource for myself, so that when I come across the same problem next time, I can simply search my own blog.
A few of my posts seem to have served their purpose though, my Deploying Flask to Apache post has nearly 400 hits at time of writing.
So far this year, I've noticed an increase in traffic of about 50% overall, so I decided to try an experiment. I've added Google Ads to the sidebar, just beneath the main navigation. It's not in the perfect place for maximum eyeballification, but it's there, and I'll be interested to see what happens with it.
Personally, I rarely, if ever click on ads, my brain has mostly learnt to filter them out so I don't think I'll get many pennies from this endeavour. It would be nice to make enough to pay for my hosting, which is currently very cheap (no kickbacks, I feel nothing but positive about them!). I might experiment with writing some reviews of stuff I buy and including affiliate links, although again, I want to make sure I'm actually adding value somewhere.
I've enjoyed writing my blog far more since I switched to a more technical slant, and a brief look at my post archive suggests that I've been keeping it up for longer than ever before! It has had an interesting effect on my coding too - I find myself working on things in my spare time much more often, so that I can generate things to write about in my blog!
I shall give it a few months and report back with what I find.
Toggling field values in PostgreSQL
It's important to me that each time I do something new, I move forward with knowledge of the technologies I'm using.
This weekend I created Ticks, a super simple TODO list. I needed a way to toggle a task between complete and incomplete. This status is stored simply as a timestamp field. If the field is
NULL then the task is incomplete, otherwise, it was completed on the date stored.
SET completed =
WHEN completed IS NULL THEN CURRENT_TIMESTAMP
Nice and simple, with just 1 query.