Farewell Snappy

A little over three years ago the team at UserScape had the idea to start a new light and simple helpdesk application that would later be named Snappy.

snappy-tear

Today it was announced that we will be shutting it down. For me, this is a sad day. I’ve spent countless hours on the project, but it’s deeper than that. When you and your team have built something from just an idea on a whiteboard, you have a passion for it that others can’t see. It’s your baby.

There is a popular mantra among programmers, “You are not your code” and it’s true. I don’t want to be defined by any code I’ve ever created, but the code and product as a whole are deeply personal. Saying this is the end is sad.

As with all failed projects all you can do now is look back objectively. Try to grow from the experience and keep pressing forward.

My thanks to everyone involved in the project. It was a fun ride.

Twitter Cards for One-Click Newsletter Signups

Last week I moved my Laravel Newsletter off a self hosted newsletter application and over to Campaign Monitor. While I was working on the move I remembered a post by Ryan Battles on how to integrate one-click Twitter signup and decided to set it up.

Integration was super easy and in fact it would even work with the self hosted app Sendy if you have an SSL. I didn’t.

To get started I filled out all the instructions and downloaded Ryan’s free psd template. A few minutes of customizing and I was up and running.

laravel-newsletter

I pushed the Twitter card live on November 28th and have already seen good results. In five days, around a holiday, I added over 100 new subscribers from just the card. I assume that is a decent number.

I am curious to see how it works over a longer time frame or if this is just a short term gimmick.

Verizon iPhone Trade-In Ripoff

About a month ago my two year Verizon wireless contract ended and they had a special trade-in offer. Trade in any iPhone 4 or higher and you could get up to a $200 gift card. I thought this seemed like a decent offer and up until this point I have been satisfied with Verizon.

I filled out the information on 4 iPhones, all in great condition by the way. Removed activation lock and did a full factory reset on each, then sent them off. Tonight I was sent an email with the value of the first phone. They gave me not $200, not $100, not even $50. A $36 credit!

I am upset and just thinking about the run around I’m going to have to go through makes my blood boil.

Apparently, I’m not the only one either.

What also surprises me is that I follow a lot of Apple bloggers and I haven’t heard mention of this.

How Broken Glasses Led to Great Customer Service

Have you ever had those crazy weeks where everything goes wrong? That describes this week for me.

It all started Tuesday night. After dinner I dropped my glasses and the lens fell out. I squinted while trying to fix them but that just caused a massive headache. Concerned about staring at a computer the next day and the ensuing headache, I asked for the morning off so I could get them repaired. But not before fixing them myself:

glasses

Pretty genius right? I think so as well.

The next morning I dropped the kids off at school and went out on a mission to get them fixed. The first place I stopped, a nice lady welcomed me and asked what she could help me with. I told her my situation and she took the glasses back in a top secret room where I can only assume they do really cool stuff.

A few minutes later she came out and had not only fixed the problem, but tightened all the screws and even got the glasses bent back in shape. At that point I asked, how much do I owe you? It caught me by surprise when she said nothing.

I’m not sure if my genius™ fix made her feel sorry for me or if it was just the store policy. (I’m thinking the former) Either way for my future vision needs they have a new customer.

Writing as a business

A writer with no head for business isn’t going to make a living with the words they write, no matter how glorious, how well-crafted, how extraordinary they are, outside an incredible run of good luck.

— Kameron Hurley on Writing as a business

This applies to developers as well. Even if you have no aspirations to start your own business, knowing about options, employee contracts, personal finance, and retirement would do you well.

Open Source Marketing Tips

It’s 1 am, I’m unable to sleep and have all these crazy ideas running through my head. As I start to doze, I have a spark of genius. I think to myself this would be an awesome open source package. I guarantee others would love this. It’s so useful why hasn’t anyone else thought of it.

Over the next two weeks I spend hours and hours thinking, building, refactoring, and creating this package. I think it’s going to be the best ever. Seriously it has to be, it’s so useful.

I’m finally ready to release it. I spend at least an hour crafting the best tweet I can. Secretly wishing it will go viral, hoping others will love it, and just from one single tweet Hacker News will have it featured all day. It’s time! I hit “tweet”, sit back, and watch in great anticipation.

After the first five minutes nothing happens. Sure, some friends retweet it but it’s not gaining momentum. So now I think I’ll just wait till tomorrow when more people have seen it. But still nothing.

Where did I go wrong? Was this a dumb idea? Why doesn’t anyone like it? Is the code horrible and no one told me?

As software developers we tend to look at things from our own perspective. Assuming everyone else will see it the same way. I’ve spent all this time developing but I didn’t take those extra few minutes to really polish the marketing text. This is the big mistake. I know you are thinking it’s open source, do I really need marketing? Without a doubt yes you do!

Your readme is the first page people see when they find your package. It’s important to clearly define what the package does. List out benefits not features. Features are important but only after you’ve sold me. I need a quick overview of why your package is going to make my life easier.

The fact is you have very little time to sell someone and people do not read. They glance. If nothing stands out, they move along faster than a cheetah chasing a gazelle.

I’ve seen it time and time again where I find something that sounds cool only to have this be their main section of the readme:

  • Includes awesome package
  • Uses x design pattern
  • BDD, DDD, TDD
  • And on and on.

What does that tell me? Nothing. I really don’t care about this. Instead show me the benefits. Show or tell me why my coding life is horrible without your package.

Here are a few packages I found that I believe excel with this:

Intervention Image

Look at the demo code which is the first thing you see:

// open an image file
$img = Image::make('public/foo.jpg');

// now you are able to resize the instance
$img->resize(320, 240);

// and insert a watermark for example
$img->insert('public/watermark.png');

// finally we save the image as a new image
$img->save('public/bar.jpg');

I think to myself. WOW. That’s all it takes to upload and resize an image? I’m using this!

Carbon

Both Carbon and Intervention use the same style by letting the code speak for itself. Here is a portion of their main page:

printf("Right now is %s", Carbon::now()->toDateTimeString());
printf("Right now in Vancouver is %s", Carbon::now('America/Vancouver'));  
$tomorrow = Carbon::now()->addDay();

Dispatcher

Dispatcher is a package for scheduling tasks inside Laravel:

dispatcher

Notice how these packages explain and demonstrate why I would want to use them. It’s really that simple!

Take the extra 30 minutes and ensure your readme is clear, precise, and tells me why I should care. Be specific. Sell the benefits. Take a screen shot. Wow me.