Hi. I'm Justin Woodbridge, I run Raffle Creator and write about it.

Another A/B Test: Adding A Quote

February 08, 2014

After trying a more radical design with my last test, this week I scaled back to a simple tweak: adding a customer testimonial with a bright picture.

The results surprised me:

Variation Visitor Count Engagement Sign Up Clicked Sign Up Button
Original 200 67.0% 12.0% 24.5%
Variation 182 67.0% 12.6% 24.2%

As you can see, there’s no real difference by having Sam and his quote on the page. I thought I would see at least a bump in engagement or clicking the sign up button, if not a noticable rise in sign ups. Huh. Well, that’s why I run these tests: I really don’t know anything about what works, failure is one step forward in getting there.

This week I’m implementing a Highrise-style marketing page inspired by Basecamp (née 37signals). I have the pictures sitting on disk, just need to sketch out a layout I like, then push them live.

By the way, I’m using Optimizely for these tests. I really don’t like it: it has an unintuitive interface and bad defaults. I’m still on the lookout for a decent A/B testing tool that focuses on two things: rapid code-based changes and a trimmed dashboard focusing on numbers, numbers, numbers.

A/B Testing: Setting up A Canvas

January 25, 2014

Today marks day 15 of a marketing page A/B test I am running, and the results aren’t looking good.

My main project for Raffle Creator right now is isolating down the exact features that sell customers, importantly, the best way to sell those features (coy and layout-wise).

Of course in science, the ritual that comes before conducting an experiment is to trim your environment down to bone leaving little to interupt the variable you’re monitoring. When you’re testing human behavior, things get very tricky. So I decided to be a true scientist and keep it simple: I split the traffic up between my two page designs and assume they are otherwise the same.

But I’m not skimping on all my isolation. What I can control is the amount of interacting copy on my pages. Since my goal is to measure which features work, I want to keep the focus of my pages as much on those features as possible. To do so, I created a “blank canvas” design for Raffle Creator’s landing page — a very simple page revolving around the copy where I can test various headlines and pitches in relative isolation. To zoom in on the exact features that turn customers on to Raffle Creator, I need to try selling each one individually, or at least with focusing the page on it.

I came up with this (click it for the full size):

I tried to squeeze out the most essential bits from the old page: a few features, a testimonial, and a screenshot:

Here’s the old, workhorse page design for reference:

As I said before, I’ve let the experiment run for 15 days, logging a little over 700 samples.

The results are… disapointing. See for yourself:

Variation Visitor Count Engagement Sign Up Clicked Sign Up Button
Workhorse 359 61.6% 14.2% 21.4%
"Blank Canvas" 343 53.1% 8.2% 16.3%

As you can see, my blank canvas is bombing.

What have I learned from this? Well, my gut tells me that my mistake was not copying over the massive sign up button in the grey box from the original design. That whole page zooms you into looking right at “Start Building Your Page For Free”, and right about it “Sell Tickets Online. Right Now, Easily”. As you can see, that copy/layout outperforms “Sell Tickets Online. Reach Everyone” by almost 50% (in terms of signups).

That’s something I completely overlooked as I was planning out blank canvas. Looking back though, that focused call-to-action section on the original homepage design was completely accidential. I did not mean to create such a clear attraction.

So, while this experiment failed to get me a better homepage design, it gave me a little more insight into why the current page works, and why the original page failed. I now know one more way of how not to get customers to sign up, if that worked for Edison, maybe it’ll work for me.

Index Cards and The Stream

January 21, 2014

Marco posted a snippet of an interview with John Roderick on his blog, crystalizing something that’s been nagging me for a while. The whole thing is spot-on, so go read it. But here’s a particularly salient bit:

Now, we live in a world where there are probably more records coming out this week than what came out in all of 1967. All of that quantity probably hasn’t produced a single record that was as good as the worst record from 1967. Everything is easier to make, so more people are making it, the standard is so much lower for what you need, and it’s a confusing din.

As a culture, we are satisfied with worse, because there’s so much more of everything.

I think there’s another problem that goes hand-in-hand with this rising glut of media: the rampant, anonymizing “stream” that has been so popular in recent years: Facebook’s newsfeed, Twitter’s timeline, Instagram’s stream of pictures, and Tumblr’s infinite scrolling wall of gifs.

These apps are designed so their users scarfs down as much content as fast as possible. All of this has led to something that’s unnerving: a deemphasis on the identity of the creator. People aren’t as interested in who is making the things that they read or look at, they just want to consume a lot of them.

And importantly, because of the short time frame that the stream allows, people aren’t as interested in the quality of the picture or song as they are interested in getting lots of them. Quality doesn’t differentiate enough to bring attention to the creator, because it doesn’t keep the viewer’s attention long enough. Because when you’re in that stream, there’s this potential, this vague, ‘perfect’ thing that could come up next. Of course that perfect ‘next thing’ will be better than whatever you’re currently reading or listening to, so you flick up to take a look at it. Quality can’t compete with the smacking-high of a new piece of content, and it definitely doesn’t carry enough weight to bring attention to the creator.

Even place like the niche subreddit (/r/realdubstep, /r/hiphopheads) fall victim to the stream effect, I think. The same apathy and deemphasis of quality still applies. People want new, new, new. Focused channels are no savior to the creator here.

There are two problems for someone who wants to make something: 1. An insane amount of people trying to get things in front of anyone who will listen, and 2. even if you do get attention, people don’t give it nearly as much weight as they used to. Sure, quality helps to an extent, but a great essay isn’t savored in proportion to its quality difference, at best the delta only provides a fixed little bump.

The stream has slashed away great’s once-large differentiating advantage over good. It’s drawn the focus away from the unique quality of the content being consumed, and thus from the uniqueness of the creator, towards the sheer volume of how much one is consuming. Sure, there’s still some advantage to being great, but the steady tide of the stream is wearing the once elevating mountain down to a tiny pebble ready to slip out of the creator’s hands.

Getting people to care about the creator and notice the difference between good and great content is getting harder.

Where do we go from here?

First Fish

January 18, 2014

Yesterday I added the first (and probably only) fish to the tank:

He’s a little Yellow Clown Goby (Gobiodon okinawae).

I got some pellets to feed him, but he’s not eating them. It seems these gobies have a reputation of being picky eaters, and he’s still new to the tank, so I’m not worried yet.

If he still doesn’t eat in a couple of days, I’m going to get some frozen mysis shrimp to feed him. It’s a shame that all the good aquarium stores are so far away, it really adds friction to my decision making when the results could mean an hour drive.

Kanye's Soul Mix Show

January 12, 2014

I just found this tape that Kanye West released in 2006, only in Japan 1.

It's a compilation of the samples from Kanye's early productions: The College Dropout, Late Registration, Be by Common, and The Blueprint by Jay-Z. Here's a taste:

  1. Seriously, this is one of the few defining phrases that come with being a geek on the Internet. So much great stuff is always uncovered with the explanation for the mystery behind it: “only released in Japan”. See also: Super Mario Bros: The Lost Levels.

Building Up The Toolkit

January 04, 2014

I visited Triton Marine today. It’s a small, family shop that just opened up this fall. They don’t have a ton of livestock or coral, but I like their mindset: a large part of the shop is “Triton Hospital”, where new fish are quarintined to ensure their health.

I didn’t get any coral or fish because I’m letting my tank adjust to its new snails. Getting a fish, on top of the 8 other snails coming some time next week, would probably have overwhelmed my nacent bacteria colony. I’m going ot be patient for the first time in my life.

But, I did get a small submersible pump, and a little heater to go along with it. I’m going to use them to aerate and heat my water changing buckets. Here they are in action:

Aerating and Heating My Water

On the way home from Macedonia (!), I stopped in Half-Price Books and found this:

The Marine Aquarium Reference by Martin A. Moe, Jr.

The Marine Aquarium Reference

It seems perfect for what I want: a rigorous, technical, but high-level, narrative approach to the basics and theory behind marine aquariums. Hopefully it’ll help me distill and sort through the heaps of conflicting, anectodal advice that I’ve been reading on forums.

First Inhabitants

January 02, 2014

I paid a visit to Shawn Paul and took a tour of his aquariums setup. His tanks are impressive. Hopefully this little aquarium can grow into something close to them.

He gave me a frag of his Green Sinularia and a pair of snails Here are some pictures:

The Shipping Vessel

The shipping vessel (the coral is upside down so it remained submerged.)

Green Sinularia Just Arrived

The sinularia getting back on its feet.

Green Sinularia Acclimated

Taken this morning. The sinularia is looking better. Bonus: Notice the little asterina star on the heater. So cute.


The tank parameters are stable, which is a good sign. Once my Reef Cleaners get here, I’ll get a watchman goby or a flock of sexy shrimp.

The Cycle Is Complete

January 01, 2014

I’m 10 days into the tank, and it it looks like the cycle is complete. The readings from today’s test:

PH Ammonia Nitrite Nitrate
8.0 0 ppm 0 ppm 20 ppm

In the last few days, the diatom grew ferociously in the tank. The whole left side of the sand bed is carpeted with the stuff 1.

Today, I put in an order at Reef Cleaners for their smallest Quick Crew. It’s an assortment of different species of snails that’ll clean up the diatom algae and as any leftover food when I get livestock. Reef Cleaners seem like a nice company, as I was writing this I received a personal email from them thanking me for the order and telling me when it would be shipped out.

Diatoms Blooming In The Picotope

Diatoms in the left corner

Another thing I want to add to the tank is a glass top. The tank evaporates fast. Right now I’m topping off the tank twice a day, with about one to two cups of fresh water.

After the agonizing week-long wait for my snails to get here, I’m planning on ordering a trio of Sexy Shrimps for my first batch of livestock.

  1. It’s only on the left side because of the coverage of lightining. The lamp that came with the picotope is pushed off left of center because of the filter’s large size. I’ll probably fix it when I upgrade to a hanging PAR bulb and throw out the stock fixture all together.

The Tank: Day Two

December 24, 2013

The tank and its accoutrements arrived in three big packages yesterday.

Before setting up the tank, I picked up two pieces of live rock from Blue Fish Aquariums. Blue Fish is a nice, but expensive, store. The live rock cost $50.00!

With the live rock in hand, I followed El Fab’s Guide on putting all the pieces of the aquarium together.

Setting up the tank went smoothly, but I hit a small delay when I mixed my first batch of water. It’s best to use clean, filtered water for the aquarium, so I got a jug of Distillata water. The terse instructions for Red Sea Coral Pro Salt only say 1.4 lb of salt for every 5 gallons of water. That would have beeng great, my jug had exactly 5 gallons, but I had no way of measuring the salt’s weight. I ended up using 1/2 cups of salt for every gallon, so 2.5 cups. This got me to a specific gravity of 1.018, one more cup got me to 1.025, right where I wanted to be1.

Setting Up The Aquascape

Blurry, dirty, and cloudy. Trying to figure out the aquascape.

Setting Up The Aquascape

The tank is setup.

The tank cleared up after a few hours.

A Clear Tank

Need to clear up that foggy band around the waist of the tank.

This morning I took the initial readings of the tank.

The measurements

PH Ammonia Nitrite Nitrate
8.0 0 ppm 0.25 ppm 0 ppm

Not sure if I’m in store for an ammonia spike, or if I’m just in the middle of the cycle already, as the spike of nitrites suggests. Hopefully the cycle goes quickly, can’t wait to get something in the tank.

  1. I’m using a flaky Instant Ocean Hydrometer, it took a few readings of each batch to get a semi-consistent reading. Do not get one of these if you can afford not to. I’m going to be getting a nice refractometer ASAP.

Aquatic Bonsai

December 22, 2013

I’m a researcher. There’s nothing better than plunging into a fresh stack of books and websites as I try to get my bearings on a new topic and project idea. So when turned my attention to keeping marine fish, I was hooked. saltwater aquariums provide ample opportunities for research, planning, thourough understanding, and at the sime time, blind experimentation.

It all started when I was in the 3rd grade when I got a copy of Saltwater Aquariums for Dummies. I read that thing over and over, wearing it down to tatters, planning out my ideal setup down to each model of filter, heater, a skimmer I’d need. I was all set to go with a long-list of equipment and livestock to get The only problem was paying for it.

That kept me tank-less, and aquariums got put on the backburner over the next several years.

But now that I’m self-employed and earning a small income, I’m able to make the plunge into aquariums. This time, however, I have a different goal. I’m not interested in the biggest or most marvelously complex aquarium. I crave natural simplicity. I want biology, not technology. I want a simple ecosystem, a small world entirely definied by me. It’s like bonsai or a zen rock garden where small, deliberate, well-planed actions grow over many years to create beauty. I’m keeping this tank as an exercise in patience and commitment.

The work is peaceful, it’s routine, and it’s methodical. Tending to my fish and coral will be an exercise in mindfulness.


I ordeded a small 3-gallon JBJ Picotope, a hang-on-back filter, and a simple heater. Here’s the full order (Both from MarineDepot and Amaazon):

Order #001

JBJ 3-Gallon Picotope $53.99
Eheim 50 Watt Heater $23.99
AquaClear 30 Filter $32.99
Caribsea Live Sand (5 lb) $8.99
API Master Test Kit $19.99
Red Sea Coral Pro Mix (55 gal) $24.99
Marina Floating Thermometer w/ Suction Cup $2.49
Total $167.34

The whole rig will be here on Monday. I’m still not settled on what’ll go in the tank.

My favorite coral right now is Dendrophyllia, dendros for short.

Dendros Coral

Time to dive back into the books.

A Few Months With Olark

August 22, 2013

A few weeks after Raffle Creator launched, I installed Olark onto the marketing pages. Olark is drop-in IM-style chatbox that hangs in the corner of your web pages. You, the owner, connect to it through your IM client, like Adium and your customers send you messages. It works even if you’re offline, messages go straight to your email inbox.

Here’s how it’s gone so far.

Here’s the data table. See the footer for my preparation technique1.

As you can see, the resuts are mediocre. On my best day, I had 3 messages from visitors to rafflecreator.com. On most, I had none. The conversion rate is 0.32%, definetly not worth the $17 a month I’m spending for Olark. I’m going to cancel my subscription.

Even if the chatbox was getting more action, I probably would have removed it anyway. I prefer the time to think through and write a thorough response that email gives me over the few seconds that Olark chat provides. I’m not a very outgoing person either, so my natural charms don’t get me very far with my customers. The mesasges would always come at the worst times, like when I was knee-deep in a design problem and I would start the conversation annoyed at the interruption. Not a great way to get customers.

Don’t get me wrong, Olark is very cool, and well made, but it’s just not working for me. Most of my customers go straight to emailing support@rafflecreator.com.

Give it a shot, see how it works for you. As me for me, I’ll be working on my FAQs section to cut down on support emails.

Credit to Horace Dedieu for making me crave graphs enough to do this post.

  1. I made this by exporting my chat history from Olark, which worked great, then manually plucking out my traffic history from Google Analytics and stitching it together in a Numbers spreadsheet.

Managing My Library Books

July 29, 2013

As part of my 2013 goal to step up my reading, I’ve been checking out a lot of books from the library. This works really well. I keep a running list of all the books I want to read, and when I’m ready for another batch of books, I just request them online, and they get delivered to my nearest branch.

Many times, though, I need a niche book (ACADEMIA!) or journal, so I go to Kelvin Smith Library at Case.

Keeping track of my accounts at these two different library systems can get confusing, so I made a program to smooth things out integrate the two. I call it ‘books’, mostly because that’s a nice command to type in my terminal1.

Download books

Installation and Usage

  1. Just drop the program somewhere on your path. I like ~/bin.
  2. Edit the file with your card numbers and passwords.

Run It at your terminal to test out your installation:

> books

Here’s the output of my account:

I’m going to add the ability to see your current requested books and their statues (requested, in transit, available for pickup). Then maybe I’ll hook it up to a cron job and email out the table when I have overdue books.

Hopefully someone else in Cleveland might find this useful, if you do, please let me know!

Oh, one more note. My account at KSL is through the Cuyahoga Library system, not through Case’s official system. So, books won’t work for you Case students. Sorry! Patches welcome :)

  1. Ah, Unix. Saving us from thinking of marketable program names since 1970.

How I Messed Up Raffle Creator's Google Rankings

July 01, 2013

I have a bad habit of not being very meticilous when it comes to my web pages. I never follow the proper ceremony of preparing a page. The extent of my work on a new document is typing html then hitting TAB and working with the bare-bones skeleton that comes out in Sublime Text. This, of course, is lacking the basic requirements like, um… title.

So what happens is I’m merrily coding along, tweaking my design, adding some more content and CSS for a few hours, and then, shippin’ it ™1 without adding the trappings of a real page.

Well, what happened this time was I forgot to set actual <title> tags2 for my Raffle Creator marketing pages. Yup. Every. Single. Page. They all fellback to the default / index title (“Raffle Creator - Promote and Sell Raffle Tickets Online”). Every one. And they sat, festering in Google’s index, marked as duplicate titles, all twenty of them. This absolutely killed my search traffic.

It was not a good day when I discovered that.

But it got worse, way worse.

Once I realized what was going on, I searched Google’s index of rafflecreator.com to survey the damage3. The first few results were exactly what I expected, my few main pages (/pricing, /, /support) all with the same titles. But then, another result caught my eye. It’s URL was stage.rafflecreator.com. Hm, I had used a staging server a few months ago before I officially launched Raffle Creator, but I thought I had shut it down. I clicked on the link to see where it would go and I was met with the ominious blood-red phishing screen in Chrome that prompted me to turn away.

I overrode Chrome’s advice by popping the URL into Safari where I was greeted by Trinity Christian Academy’s Homepage.


Here’s what happened (I think).

  • stage.rafflecreator.com pointed to, which was my old IP for my Linode VPS.
  • When I launched Raffle Creator, I moved to Digital Ocean and abandoned that old IP, updating rafflecreator.com’s DNS but not stage.rafflecreator.com’s
  • Linode sold the new IP to the Christians.
  • I look like a phisher while getting my Google results polluted with Christianity.

All in all, a win!

My Advice: Always set your <title> tags! And your <meta> descriptions. Make sure to clean up your old IPs.

Now, if you’ll excuse me, I have some serious cleanup to do, and it’s going to take time to repent to the fickle god that is Google.

If you're listening... I repent! Take my money!

  1. Ship it! Lean! Rapid iterations! Time to go find 5 customers! Woo!

  2. Every SEO guy is rolling in their keyword-rich grave right now.

  3. Tip: search Google with a query like site:rafflecreator.com and it will only show pages from your site that it has in its index.

New Type

July 01, 2013

H&FJ just launched their Web Fonts program. I let out an audible yell when I saw the news on Twitter. I’m on the $99/year program right now. They give you get 5 free fonts when you signup.

I’m currently testing out Ideal Sans (hat tip to Vesper) for headlines and links and Mercury Text for the body. I like it. I also picked up Whitney, and I’m tempted to get Verlag and of course, Gotham to get my Obama on.

Raffle Widgets

June 25, 2013

Right now, I’m in exploratory mode with Raffle Creator’s marketing. I’m throwing out a bunch of small experiments and seeing what sticks. I’ve spent the last few days working a new feature for Raffle Creator: raffle widgets. These widgets are a potential way of getting links at rafflecreator.com from all over the place.

They’re the classic embeddable chunks of HTML that users paste into their sites and show off vanity stats (think “I have this many karma points on Reddit”). My widgets display how close a raffle is to reaching its fundraising goal. When I was building it, I was a little confused over a. the best way to make it, and b. the best way to reap the SEO rewards. So I’m going to write a little about it in case someone else does the same.

The implementation is really, really simple. I just render a stripped down layout of the raffle page when passed ?embed=true and then stick that in an iframe. Then, I drop a little link back to Raffle Creator outside of it. Google isn’t going to index anything that is in the iframe, so if you leave your site’s link there, you won’t get any juice.

Of course, my users could delete the Raffle Creator link. We’ll see if they do. Like I said, I’m casting a wide net with what I try. It’s really easy to get weighted down reading a million blog posts about the best way of marketing and doing SEO, but in the end, I think you just have to get out there and try your own ideas out and see what works. Then you can go back in and optimize with other people’s findings.

I have some other tactics that I’m brewing as well.

So far, the majority of Raffle Creator’s traffic is coming from organic search to my blog post “How To Sell Raffle Tickets Online”. I’m going to try to expand on the blog more soon, but I don’t want to let the Raffle Creator blog fall into the trap of churning out top ten lists and recycled common sense 3 paragraph essays.

I also wrote a small tool that the user quickly generate a sheet of custom raffle tickets as PDF. Then, I took that and embedded it on a bunch of pages specific to certain kinds of raffles. So I have a middle school page, a high school page, etc.

That hasn’t been successful yet, but I think that was caused by an egregious error on my part that left my pages heavily discounted in Google. I’ll post about that soon.

Marketing Raffle Creator has been very fun so far, it’s like trying to design the best aqueduct possible to pour my raw traffic down the spout into signing up for the trial and then buying a raffle. There’s so much to try, I haven’t scratched the surface.

March 04, 2013

Gruber Vs The Internet

I kid because of I love. But seriously, the punditry about Apple vs The World is just getting stale.

Image based on the classic comic from xkcd.

Maker Vision

March 03, 2013

I’m really close to shipping Raffle Creator, closer than I’ve ever been to shipping anything.

But the closer I get, the further I feel from finishing. Everything feels wrong. Whenever I try to evaluate Raffle Creator’s progress, I’m plagued by all the things that could go wrong. When I click a button, I cringe knowing all the ways the AJAX request could fail. When I try to design, I can’t stop thinking about all the ways it could be better.

This is the exact opposite of how see other products. When I see other people’s work, I can only see whats great about it, all the things they got right. I see all the great details without having to know about how it was made, without being burdened with knowing all the massive imperfections that the designers and developers are coping with.

I used to think that it would be possible for me to see my own work this way, that the only thing keeping me from getting there was skill. Halfway through a project, I’d give up because of the absolute despair I felt. The code felt brittle, the design was wrong. I’d scrap the whole thing, and move on. But I’m realizing now that it’s impossible.

The creator sees the flaws, the consumer sees the perfection.

Shipping a product isn’t about eliminating this anxiety, it’s about coming to terms with it, biting your tongue, and getting the work out there.

Expect to see Raffle Creator soon.


January 19, 2013

Introducing diffpad, a little tool for collaborating on a chunk of text. It keeps track of all changes made and lets you run diffs over them. Its heavily inspired by Writeroom, you can read more about that over at the diffpad origin story.

Diffpart is part of my 2013 goal to ship more projects. That means actually finishing all of the little projects and hacks that I start.

Give it a try and let me know what you think.

Big Week, Huge Week

January 11, 2013

Today, we took a leap and submitted our project’s page to Hacker News. If you’re not familiar, a group of friends and I are creating a trip to NYC this spring to visit some pretty cool startups and learn from them. Check it out: East Coast Economics.

Anyway, it was a scary step. Its always easier to stay out of attention and tweak endlessly. But we fought that instinct and threw our baby into the wolf den: Hacker News.

At first, we thought it wasn’t going to work out. 20 minutes passed and our story only had 2 points, not enough to get any attention. And It kept dropping down the newly submitted list, pushed by new story after story. The newest submission list on HN is like the River Styx, a constant stream of hopeful, but ultimately doomed souls floating away. Only a lucky few get their chance at a shot at life: being on the front page. The front page is where the traffic comes from, where everyone looks. And luckily, our story was one of them. By some stroke of luck, we got a third vote, and that pulled us right onto the front of Hacker News. From there, traffic increased steadily, and so did the points. Over the course of a few hours, we climbed to the #2 spot with 37 points, not bad. Watching the traffic come in with Gauges was very cool, the pins that represent a person on our map kept dropping, and my little linode chugged away serving a couple requests a second a peak.

By the end of our little 3-hour reign, we received over 2,000 unique visits, pretty cool.

raffle creator traffic map

The Air Traffic Map in Gauges. Each pin is a person.

big wave of traffic sent by my server

The big spike in data sent by my server

So, how did we do?

I’m very happy with how our site performed. We sold tickets to four people and we’re grateful to them. But the bigger return was the offers that we received. Several people got in touch about meeting up when we visit NYC, which is going to make the trip much better. Also, Raffle Creator, my current big project, got a little bit of attention as well. About 200 people visited the landing page from our East Coast Economics page, and a few even signed up for invitations to use the app. Thanks guys!

And of course, thanks to Kevin Croissant for emotional / technical support and advice as traffic started to ramp up quickly.

To quote Merlin Mann and Dan Benjamin: Big week, huge week.

We’ve got a lot more work to do, but this was a great day.

The Graveyard

January 05, 2013

I launched a new version of the Raffle Creator landing site today. It looks a lot better, and I switched from using Wufoo for collecting emails to MailChimp directly. MailChimp is genius, I’m a sucker for everything they do. They have a great, quirky sense of humor and design that makes me want to find a reason to uses their apps.

Anyway. I’ve been running into a problem lately as the dust around Raffle Creator settles. See, its a weird, bastard of an app: part Backbone, part just straight-up old-school ERB templates. And as a result, my logic is split all over the place: some validation is client side, some is server side. Some routing is on the client, some is on the serevr. Its driving me crazy as I try to tighten up all the loose corners of Raffle Creator.

Just like any app, Raffle Creator is very different from when I started. From the data model to the interface, everything has undergone constant turmoil. Change happens constantly in development, and with every change comes little crufty artifacts from the last iteration. By the end of the project, you’re left with a big pile of little incosistencies and rough edges. Right now, Raffle Creator is far from a technical marvel.

This step, at least for me, is the make-or-break point of the project. The disarray of my code is shameful and suffocating. Its here that the siren song of wiping the slate clean and starting over begins to play. Its such a sweet idea: I’d be able to start with the right way to build this time, everything will go better and it’ll be a quick project. After all, I already have stepped in all the pitfalls the first time around. But here’s where that logic breaks down. You aren’t heading in a circle by starting over and refollowing your footsteps. No, you’re going to be heading in the same direction as you would have been if you hadn’t restarted, and you’ll run into new, just as frustrating pitfalls that will cause you to reevaluate. Its unavoidable, because everything can be improved.

Just like the sirens, this builder-instinct in me is a death trap. It leads me to the graveyard of products that have never shipped. And trust me, I’ve steered far too many projects to their doom this way. But its not going to happen this time around with Raffle Creator.

I’ve finally realized what is obvious: I’m not crafting an immaculate technical jewel, I’m building a product. The codebase is merely a side effect of building the product. Grooming my code to perfection, or even close to perfection, is not the right way to spend my time. Its a losing battle against constantly changing iterations of everything else in the product: design, features, and customers.

Of course I’m not out of the waters yet, Raffle Creator still has some work to be done, but putting up this landing page is the step I need to get past the sweet song of starting over. Its the declaration that Raffle Creator is my product, not just another piece of code on my hard drive.

December 31, 2012

I've been playing around with Sketch and made these logos for Raffle Creator. Might use them.

Doing It Alone

December 29, 2012

Launching an entire application by yourself is hard. It’s really, really hard. When you’re by your self, you have to do everything. You code, you design, you write. This forces you to get better fast. Its hard work, but it’s fun to expand your skillset. But each of these disciplines in isolation, regardless of how much you have to learn or improve, is fine. The real difficulty of being one man building an app is that you’re the general, too. Besides just being the craftsman of code or design, you also have to keep the big picture in mind. How is this change to the design going to affect code? If I re-layout, I need to tweak the copy. You’re quickly forced to deal with the fact that all of the components are tied together, like a big knot of strings holding together a building. Changing one is going to change the other. This can be suffocating.

I don’t have problems with the idea of keeping the big picture in my head, most of the time I love it. But it’s a burden when I’m trying to dig into a specific area of my work. When I code, I don’t want to think about design, but I have to. I have to steer the ship. I’m like Atlas. When I’ll building out the groundwork code, and the UI isn’t great, it hurts me. When I’m changing design, and all I can think about is how the code is going to change, it stresses me.

What compounds the pain is that everything I do is redone and iterated many times before I have anything close to shippable. Bouncing back and forth between programming and design when I’m iterating is maddening. I do it, but it really drains me. Add on striving for good copy and I go crazy.

In reality, I’m getting a ton done when I do this, but it doesn’t feel like it, and thats important for my morale. If I get to the end of the day and I have only have one small part of the app working well, I feel terrible. Because, for 90% of an app’s development, it looks like absolute hell: things are half-broken, ugly, and you need to understand how to tip-toe around the app to stop it from collapsing on you. And for 90% of an app’s development, my only goal is to rescue the app from this sad state. Most of the time I take one step forward and two steps back towards achieving this.

In the end, it seems like it’s something I just have to contend with. Its hard, but there’s no way it can’t be: I’m doing the job of many people.

This is the struggle of working alone.

December 23, 2012

A portrait.

December 22, 2012

I just finished up the latest Raffle Creator traffic chart. I built it with d3, which is really great.


Not much here, yet.