Apr 5, 2013

Posted by | 3 comments

I wrote some code

The following is the starting point for a talk that I hope to eventually give at a meetup or two in Wellington. I’ve modified it to fit better in a blog format. I’m interested to hear your feedback on it.

A weekend

I want to tell you about a weekend I sat down and wrote some code, but before I get to there, let me tell you a little bit about me. My accent is a blend of English, Kiwi and American. I’m a geek in many ways and in 2010 I spent 3 months volunteering in Philippines, working with prostitute rescue ministries, and 3 months in Hawai’i, giving IT training and doing web development, but none of that is terribly relevant, because this isn’t about me, it’s about you.

Everything you do has an impact on the people around you. When you include the Internet, what you do can impact a lot of people. If I wanted you to leave here with one take away, it’s that you have the potential to improve the lives of a lot of people.

Everything starts small. Google started out in a garage, so did Apple. Overnight successes don’t just happen, they start as small efforts and eventually get noticed. Trace the history of successful people or companies and you’ll also find the failures that paved the way, so don’t expect to change the world overnight with a terminal, your favourite text editor and 15 cans of Red Bull.

But everything starts small and my small project took two afternoons of my weekend and a Monday evening. I wrote a twitter bot, let me tell you why.

Last year I came across a twitter bot called @NeedADebitCard which retweets photos of debit and credit cards that people have put on Twitter or Instagram. Some of you may have seen this already but for some it’s the first time. You’re right to ask “why would they do that?” I did too. I followed the bot, it became a personal reminder that people don’t understand security. I’ve never been interested in doing anything with the card numbers, but that doesn’t mean others have been so well behaved.

The main type of cards being photographed are most certainly personalised cards. Generally from Chase in the USA and Barclays in England. Many are brand new debit cards and don’t have much money on them.

It’s tempting to think “they shouldn’t be that stupid, this will teach them a lesson they deserve” but after a while I came to another conclusion – these people don’t realise just how silly they’ve been. This isn’t a case of stupidity, it’s poor education.

This change of viewpoint was very powerful – I stopped putting blame on the people posting the photos and started asking “how much education is available about the risk of credit card numbers?” my conclusion: not nearly enough. At this point I could have started blaming credit card companies, banks, Instagram, camera manufacturers, you name it.

But I have the Internet and with the Internet I can impact a lot of people. I know how silly it is to share a credit card number online and I can make a website that tells others about it. I made this one step simpler and did the absolute bare minimum – I added a page to my blog instead. It explains the danger of what they had done and urging them to cancel that card. I was feeling imaginative that day so I named it Cancel That Card. I registered a twitter account called @CancelThatCard and decided this was a great time to learn a new programming language and I’ve always wanted to do something in Python, so I did.

The end result is 72 lines of truly awful python code that follows the @NeedADebitCard account, sees when it retweets a photo and then tweets to the person who took it, suggesting they cancel that card. There are no smarts, no image recognition, no dedicated website, just a page with useful info and a bot that links people to it and that’s enough.

I set this running on my server and since then I’ve only made slight tweaks. Because it just keeps on running without my intervention I can go on holiday knowing that people are still getting warned about posting their photos. What I’ve done has not been difficult for me and I know many people who could have done it better than I have, but none of that matters.

I didn’t know how well this project would be received. 200+ tweets later I’ve had mostly positive feedback, some minor trolling and some interesting conversations with people who posted their cards and it all makes me want to keep going and improve what I’ve got so far.


Now I said this isn’t about me, it’s about you and I meant it. I have my project to work on, do you have yours? It doesn’t have to be geeky, it doesn’t have to use the Internet, it just needs to make a positive impact on the people around you. Maybe like me you’ve had something you’ve meant to get to for a while – start this weekend, book time in your calendar, sacrifice an evening of TV and get cracking.

I advocate for online because I’ve seen how far projects can spread and connect with people but the Internet can’t give you a hug and sometimes that’s the best thing you can do. Play to your strengths and go for something you’re good at.

Geeks are the ones with the power in the online world, but we’re limited by our desire to do the job perfectly. Ignore that, it stops you doing something good and you’re too busy to put the time into make it great. If the impact your work has is positive then be willing to write quick and dirty code to get there. While the bad code is helping people you can write good code – the end result is more people helped.

Now, pick your project and go make the world a bit better!

Feb 3, 2013

Posted by | 4 comments

Changes in 2013

In my 2012 redux I said that this year will be different from 2012. Now that it’s been organised, agreed on and shared with my team I can finally let the cat out of the bag! I’m going to spend less time at work this year so that I can spend more time on the projects and activities I have a personal passion for :) Starting March 1 I’ll not be going in to work on Fridays. I’ve had this plan for a long time, but it conflicted with my desire to travel and do missions work, so I had to be sure I was staying in Wellington for the year before I could commit to it.

What has surprised me the most is how much support I’ve had from work and my client when I’ve told them my plans. Everyone has been supportive and interested in my plans, even a bit envious that I’m able to do this at all. Now is a good time for me to do this – I’m single, I have a stable income and projects that I want to put more time into, more on those soon. I’ve known for a long time that money won’t make me happy so I’m not chasing it. I work in a company that believes in Open Source, with smart, funny people who enjoy life and clients who have big goals and visions of the future. I’m looking to draw on all of these examples in my own projects.

This privilege means I need to make the most of the time I’ll have – this won’t be a day to relax, it’ll be a day of work. I’m looking at a few areas to spend my time on: projects, bible study & prayer, time with others, exercise, chores and eventually volunteering. I’m going to wait at least three months before I think about volunteering because I want to be able to make the commitment and stick to it, not try for a while and then decide I’m overcommitted and stop. Bible study, prayer and exercise are all important things I should be doing more of, they’re actually more important than the project work I have planned and more beneficial long term.

I’m under no illusions – the Web moves so quickly that anything I create will only be useful for a limited time, but that’s fine, these projects are something I have a passion for:

Sentinel – watching over your websites

Web developers like myself have a specific skill set that’s in demand in many places. It seems that every organisation needs a website, then a blog. New projects need their own space online so they make a new site. To make this as easy as possible you can download a system that someone else has made for making websites and install that. These systems are usually called Content Management Systems and many of them are Open Source, making them free to download and use. WordPress, Drupal and Joomla are all ways to make a website or blog. Other more specialised systems are Moodle for online teaching and Mahara for your online portfolio. You can mix and match these systems and before you know it you have them all installed and then you have a maintenance problem.

All of these projects have had security issues in the past and will do in the future. Much like a car, websites need to be maintained, but unlike a car, there’s no legal requirement to do that and people forget, move on or have a hard time justifying the time. The cost of not keeping sites up to date can be the loss of your data or your site can be used to attack your visitors. I saw this in YWAM Kona, a large base with a small IT team that has a mix of long and short term volunteers and a large number of independent organisations under one roof. This situation is a problem and there’s no good Open Source tool available for this kind of monitoring. There should be.

Wordpress status dashboard

A screenshot of “WordPress status dashboard” – another effort to fix this problem for WordPress sites

Based on similar concepts to the Archimedes project we use at work to monitor websites I plan to write a website that gives you a dashboard of your websites and tells you which ones need updating. I’ll be writing plugins for WordPress, Drupal and Joomla to start with and expanding to other systems as I have time. This project will be Open Source and free to download on Github. Others can also contribute to it and help make it better. I’ll be using PHP as the language because that’s what the other systems use, making it easier to pick up and install. I’m going back to the drawing board with the code too, swapping out Drupal for a framework, possibly Symfony.

Base Server – Low cost electronic learning server

The Internet is a wonderful thing when you have it. It enables so many things, including electronic learning. In 2010 I had the privilege of visiting the Philippines. I spent time on YWAM bases and all of them offered training to the people. YWAM isn’t unique in this, people all over the world are looking to learn new skills and the Internet can help them get there, but it can be expensive, intermittent, overloaded or just not there – how do we answer that?


Believe it or not, this is a proper computer – just plug in a monitor, keyboard and mouse

In the past year there have been a number of small but powerful for their size computers available for sale for around $50. The most well known is the Raspberry Pi and I’ve also recently received a cubieboard for testing and I have a third “TV Stick” PC on the way. My plan is to work with these credit card size computers and make them into a website in your pocket using Linux. They will run Moodle, an Open Source online learning system and can be pre-loaded with courses before they’re sent overseas, plugged in and left to run. I’d love to get these servers connected to the Internet when possible so they can be updated and courses can be shared around the world. It’s a big ask, but for this year I’ll be happy if I can get one system working fast enough to send away. I plan to use puppet to remotely manage these systems where possible.

Cancel That Card

It’s important to keep the details of your credit or debit card safe, especially on the Internet. Unfortunately with the rise of personalised credit cards people are taking photos and putting them on Twitter for anyone to see. My belief is that if they knew their card was at risk they wouldn’t post the photo, the most common defense I see is that the “Security code / CVV” on the back of the card is needed to use it, this is not true and cards can be used without that code.

One example of a credit card posted online

A credit card posted online, edited by me to block out the numbers, name and expiry

I have registered a twitter account that will automatically tweet people who post photos of their cards, linking to a page explaining the risk involved – hopefully people will cancel their card before it’s used. I haven’t decided which technology to use for this yet, but I think it’s a good opportunity to try my hand at python.


This is an ambitious set of goals to set for myself this year. I don’t expect to fully achieve all of them on my own, but I have a target to aim for and that’s more important. Even if I don’t make it, I want to look back on 2013 and be happy with what I will achieve and look forward to the next year!

“We cannot do everything, and there is a sense of liberation in realizing this. This enables us to do something, and to do it very well. It may be incomplete, but it is a beginning, a step along the way, an opportunity for the Lord’s grace to enter and do the rest.”

Bishop Ken Untener of Saginaw

I want to talk to you about this

Projects like this require many different people to be successful. A web developer in New Zealand isn’t enough and a community is far more capable than an individual. I want to ask you if you’d like to get involved with any of these projects in any way? If you have suggestions and ideas for hardware to try, software that I’ve missed that makes Sentinel unnecessary or just something I didn’t make clear, leave a comment, send me an email or tweet @serenecloud. This early in I’m still working out the details of each project so your feedback will really help me out.