October 01st 2010
I have just released the first version of The Good JuJu List Machine. This is a viral list building application that’s similar to Frank Kern’s Good Karma List Machine.
If your not familiar with the idea basically it’s a tool to help increase opt-ins to your mailing list virally. It offers free content as bait to get people to subscribe to your mailing list. Then when the subscriber confirms their email address they receive their prize and are also encouraged to share the link with their friends to receive even more free content.
I have listened to the people on the warrior forums and have implemented mostly everything that’s been asked for, I know there where sticking points with a lot of the alternatives.
- Wordpress plugin, written for version 3.0.1
- Supports any list provider like Aweber that can forward confirmed opt-ins to a “thank you” page.
- Doesn’t require password or anything else that could confuse or annoy potential subscribers.
- Free + opensource, I’ve coded it from scratch and released under the GPL.
- Completely customisable HTML for each page.
- Link reminder feature helps keep everyone happy.
The script works slightly differently to the alternatives, I’ve re-designed the process to reduce confusion and annoyance. First off I removed passwords, replacing them with a “private page link”. I did this because we’re trying to increase opt-ins not protect access to the bait content. Second I’ve re-structured things to allow integration with pretty much any list provider.
Demo / Screenshots
I developed the script on a new website I’m working on, the site isn’t finished but you can give the JuJu list machine a test. Just opt-in at the top right and you will see how it all works. Also here’s a quick screenshot, I’ll add some more later.
Setting this thing up is easy:
- Firstly download the script and extract the archive into your wp-content/plugins/ directory.
- Now load your Wordpress admin, click ‘Plugins’ and then click ‘Activate’ below the ‘Good JuJu List Machine’ plugin.
- Now click ‘Good JuJu List Machine’ under the Plguins menu on the left hand side.
- OK, now follow the instructions on the JuJu page. (There’s not much to do, just customise the templates, set 3 preferences and configure your email list.
There are a few codes you can use in your templates to help insert the dynamic elements:
- %private-link% - The user’s private page link.
- %referal-link% - The user’s referral link.
- %referals-sofar% - How many referrals the user has racked up so far
- %basic-link% - Link to the free content.
- %extra-link% - Link to the extra free content given for the referrals.
- %email% - The user’s email address.
- %content-links% - The links to the content, it includes either the basic links or extra links depending on their referrals.
- %lost-link% - A link to the ”I’ve lost my link” page.
- %outside-link% - A link to the front page of the script.
- %referals-needed% - The number of referrals needed for the extra bonus content.
Edit: This didn’t go down too well, the warrior forum guys just deleted my post and no one even tried it. The code isn’t too nice, it was a very quick initial version I wanted to get out there to get feedback. It’s not bad but it’s got plenty of room for improvement, who knows maybe it will take off sometime. It definitely taught me that I don’t want to work with the warrior forum crowd anyway.
January 06th 2012
My SHA1 code was returning a different hex digest when run on my Telit GM862 GPS. I eventually tracked the problem down to the hex() function. Simply put hex(3181490320L) does not return the right result!
Run this test script and post your results below.
import sys, SER, MDM
# Set up printing to serial
def write(self, s):
SER.send(s + "\r")
sys.stdout = sys.stderr = SerWriter()
# Simplistic AT command function
# Clear the command interface buffer
# Send the command
MDM.send(command + '\r', 0)
# Create a buffer
buffer = ''
# Listen to serial port for click
incoming = MDM.receive(1)
# If we got some data handle it
buffer = buffer + incoming
if buffer.find("OK") > -1:
elif buffer.find("ERROR") > -1:
# Run the tests
i = 3181490320L
print long(hex(i), 16)
# Restore standard out
sys.stdout = sys.stderr = sys.__stdout__
My output was:
Edit: In case anyone’s interested here’s my hex() replacement. It’s probably much slower but it works and can pad the hex string to x bytes.
def write_hex(x, bytes=1):
h = ['0'] * bytes * 2
i = 0
while x > 0:
if i < bytes * 2:
h[i] = '0123456789abcdef'[x & 0xf]
h.append('0123456789abcdef'[x & 0xf])
x = x >> 4
i = i + 1
December 08th 2011
I get loads of emails from SEO peddlers via my contact form, it’s irritating! Anyway I’ve decided to do something about it, each time they mail I’ll fain interest and then post the details of those responsible online.
So without further ado I present the SEO contact form spammers gist of shame, first up is Bibin Alexander from Clearpath Technology.
I’ll keep updating the gist as the spam comes in, if you want to avoid being shamed please stop spamming me!
April 07th 2010
Well hello and welcome to the fresh new blog. I wrote it using web.py, couchdb and python.
It’s looking pretty nice, comments are outsourced to Disqus. It’s all pretty simple, I am quite pleased with it though.
It now means I can quick edit code samples by adding a
<code> tag around the sample. It escapes everything and renders it in a
(Doesn’t sound like much but in Wordpress I had to add an I-frame to each code post by hand, save the code to HTML with Emacs, upload the html and reference the file for the I-frame. It was the only way I could stop Wordpress from fucking up my code let alone getting it to display properly.)
Everything is stored in Couchdb, the URL’s are sensible, it’s all under my control and I generate an atom feed using libxml.etree.
I spent a while getting Nginx forwarding on all the old URLs properly. Also I have added some nice features to the admin system so it’s easy for me to maintain everything.
After writing it though I got thoroughly annoyed with Python, I’ve decided to go back to learn Clojure, I’ve just bought a copy of Programming Clojure and in a few months I expect to re-write everything using that.
So anyway all the code is really messy for now but it works nicely and most important of all It’s not wordpress.
Let me know if something breaks, if an old URL doesn’t work or if there are any issues :) Also if anyone is interested how I coded parts of the blog just ask and I can explain.