In Defense of Duplication

A meme going around PHP lately is that developers should stop building open source libraries that duplicate existing establish packages. I couldn’t be more against this line of thinking. A few points on why.

Duplication Is How Technology Moves Forward

no matter what tech you are talking about it always evolves by people building on what came before. Sometimes directly, other times by taking a slightly new angle on the issue.

We tend to think of technological advancement as huge leaps but of course it is the slow grind that pushes us forward year after year.

You Can’t Know the Future

3 years ago if I told you an .NET/COBOL developer would build a hugely popular PHP framework that would be a big part of the revitalization of PHP you would call be bat shit crazy. But we can’t know the future. We don’t know who will come up with the breakthrough at the exact right place and time.

3 years ago people said we had plenty of PHP frameworks. Codeigniter might have been somewhat neglected but it was still being moved forward by users and was easy to use. If you wanted a “real” framework we had Zend and Symfony. Beyond that all the others like Cake, Yii, etc.

Lucky for us at the time nobody gave a hoot about PHP and so nobody bothered to tell Taylor that Laravel was stupid and pointless duplication.

Duplication as Learning

Often those objecting to duplication are very accomplished developers. Yes, for these people building Yet Another Cache Package may be a waste of time. However for a less seasoned developer, the process of building a package that duplicates high quality existing packages can be a great learning experience.

This is especially true in open source where the dev may often be working in isolation from other more experienced engineers.

This also leads to the obvious other issue of what should they build instead? People often bring up more complicated problems that people should be working on. In my experience in open source though telling others what they should build doesn’t work very well.

It’s also very often the case that the developer is not ready to take on that more complicated project yet. There’s nothing wrong with them taking in more established problems before moving on to bigger fish.

Let’s Not Discourage Future Greatness

I get really concerned that when we talk down about these projects that seem duplicative we’re pushing out developers who may bring PHP great innovations in the future.

Keeping the community a positive welcoming place is really hard, but so important.

Why Do You Give a Fuck?

Finally 🙂 there’s 800,000 packages nobody uses on Github. Is one more really a problem? Is it actually causing confusion? Seems very unlikely to me.

The downside is so minimal and the upside so great. Let’s keep encouraging people to develop new code in PHP and the rest will work itself out just fine.

Why Apple Watch Is All About The iPad

I was pretty down on Apple Watch yesterday. I was really expecting something far more revolutionary.

It had no real surprises in terms of tech other than perhaps not having any connection capability of it’s own at all, making it a simple accessory for the iPhone rather than a freestanding device.

The more I’ve kicked it around though, I think the long term play for the Watch becomes apparent. It’s the successor (in a business sense) to the iPad.

It’s widely known that iPad sales have gone flat and are likely to decline. People keep iPads longer than phones because they’re not subsidized and are simply less critical/useful for most people than a phone.

Now, enter the era of the 5.5” phone. Many folks will say there’s no good reason to have a 5.5” phone in addition to a 7” or even 9” tablet. The phone does everything the tablet does with only slightly less screen room. Why buy a $700 phone (before subsidies) and a $500 tablet?

So what is Apple to do? iPads are already on the slide and now they’re introducing 4.7” and 5.5” iPhones that are only likely to further cannibalize iPad sales.

Apple did sell about $100 billion in iPhones last year so they’re not hurting, but to maintain that $500 billion dollar valuation you have to sell a lot of everything. iPhones on their own aren’t enough, the iPhone needs a +1.

In this sense the watch, at least on paper, is a great fit. It’s dependent on the phone (for now), but even better it can have an entirely different marketing angle.

The problem with the iPad is it really is just a big iPhone. Yes, it’s nicer to sit in bed with your iPad than your 4” iPhone, but it’s not THAT much better. And when you’re phone is 5.5” many people won’t think the iPad is different at all.

The watch is nothing like the phone/tablet so there’s already a nice marketing angle as an accessory. Better yet, it’s primarily a fashion item. It’s apparent they’ve put a lot of thought into the metals used and the band system. Really the fashion end of the Apple Watch is more fleshed out than the actual technology end.

The huge iPhones are also just less nimble to carry and take out. The iPhone now becomes your base station with the watch as the (first?) satellite accessory.

Instead of selling you an iPhone and a big iPhone (iPad), they can focus on the “it does everything” iPhone and the handy and fashionable watch as a nice add on sale.

This is actually a pretty interesting strategy. Beyond that, it’s very short sighted to think about it as being about this year. This year means very little. The Apple Watch is all about version 2 and version 3. 

That’s when it’s really going to shake loose. It will get thinner of course, but also add in those bits it needs to be truly useful such as GPS and probably wifi. The ability to let you untether from the phone at times like when you’re working out or hiking or just running your day around the house.

That’s the part I was most disappointed in. V1 needs the phone at all times. A huge 5.5” phone, but by V2 and V3 I’d expect that need to be gone. Sure, you’ll probably need your phone to make calls, but it will be able to work on it’s own for long stretches to map your run, make edits to your calendar and so on.

I suspect we’ll also see a lot of outside the box uses. The  clip system for the bands looks ingenious. They’ll be clips to hang it off your bike, lock it to your fridge, place it anywhere you might want a phone satellite.

Yesterday I wasn’t that excited about the Watch, but today I’ve started to get more interested in the possibilities. Especially for what it may transform into over the next few years, just like the iPhone transformed between version 1 and 2.

69 Bootstrapping Resources

Some of the books, blogs, podcasts and resources I’ve found useful while bootstrapping UserScape for the past 9 years.



  • Bootstrapped – I tried to find another to list, but really this is it!

Link Sharing Things







I consider these critical for anyone starting a business. Yes, these are in order of importance.


It’s hard to justify spending a lot of money on design early on, but if you have the means these are the designers I’ve worked with over the years. All are top notch.

Professional Services

Apps & Services

These could go on forever. I’m limiting this to ones I personally find very useful.

  • HelpSpot – What good is a product without great customer support!
  • Forge – Spin up servers without a fuss.
  • Convert Kit – Really nice email list management.
  • – Email automation without a bunch of other junk.
  • Dribbble – The best place on the internet for inspiration.
  • Feedbin – RSS isn’t dead yet
  • Scribbleton – The personal wiki.
  • Laracasts – Primarily aimed at PHP developers, but really anyone who works in code should be checking this out.
  • Laravel Jobs / Laravel Gurus – Business person and not a coder? Don’t want to learn to code? Hire one.

Wufoo as CMS

I made a CMS out of Wufoo.

It’s pretty cool actually. I wanted to put together a quick little site for Laravel consultants that would be my go to place to send people when they ask me where they can find Laravel consultants (genius!). 

I wanted to spend as little time as possible on this. In reality we’re talking about building a list here. This would only take 1 table in a database, but I don’t want to run another database. We have databases everywhere.

I could have manually built the list, but then I’d have to type all the info in. Plus, I still need a way to get the info in the first place. This is where Wufoo comes in.

You probably already know that Wufoo is a form building tool. It’s pretty good at collecting basic info, but for my purposes what’s even better is it has a decent API. It can handle the things you’d expect like getting a list of your data, but it can also do more advanced stuff such as send you back a filtered list.

So what I did was build my Wufoo form and via Twitter got people submitting their entries. Next, I built out a simple site in Laravel that has exactly 2 application routes. One that queries the Wufoo api, caches the results and lists the entries and a second for me to manually clear the cache when we get new accepted submissions. 5 minutes of work!

They have a pretty good editing interface, so nothing to build there. To mange the listings I made a few hidden fields. One of which shows if I’ve accepted a company for listing and another where I can store any special tags/notes that need to be show. These are used for highlighting companies that have sponsored Laracon’s or use LaraJobs to hire developers.

I manually edit these fields as needed, hit the route to clear the cached version of the homepage and whamo, the listing is live.


p class=””>Of course, I could have built all this, but it was fun to do it a different way and it still took less time than building out my own forms with validation, file uploading for the images and all that mess.

Eat less carbs

People who avoid carbohydrates and eat more fat, even saturated fat, lose more body fat and have fewer cardiovascular risks than people who follow the low-fat diet that health authorities have favored for decades, a major new study shows.

We’ve eaten Paleo/low carb for the past 4 years or so. I’ve probably been less physically active than ever in that time (this will be changing soon!) and still lost about 30 lbs (60lbs off my all time high) and have my other health numbers all in good shape. It’s remarkable.

How To Prune Your Twitter Account

Over the past few months I’ve been feeling a bit overwhelmed by twitter. It seemed my timeline was a never-ending stream of things I felt compelled to read.

Some of it truly was important (Well as important as a tweet can be). Much of it though was just chatter. Blocking me from reading more important things and honestly just plain demoralizing to read constantly.

So I decided to act. To take back my personal twitter steam.

I was following 299 accounts and my goal was to bring it down between 50–75. It ended up being easier than I thought to be honest, with minimal bloodshed. In the end I got it down to 90, a reduction of 67%.

The results were immediate and amazing. After being offline for hours I’m able to go into Tweetbot and have a handful of posts to read rather than hundreds. I can spend more time on replies and less feeling overwhelmed by the sheer volume.


The only tool I used is called SocialBro. It’s free for up to 2 accounts. Really any of these social management tools will probably work. What won’t work very well is your normal twitter client or the website.

You’ll need access to some more data than they provide. In addition, you need a tool that makes it easy to quickly delete a lot of your following. SocialBro has both, though they’re a little wonky to get at. Here’s a few screenshots to show you where the important stuff is and how to set it up.


The criteria drop down also has several other important options such as the ability to show you who you are following who’s not following you (dead meat!)


Getting in the right mindset

Now, you’re going to feel oddly sad about starting this process. You know these people, they’re your virtual friends.

Well, some of them are going to have to go 🙁

The good news though is that those who remain will get your complete focus. Also, you’ll be surprised how many accounts you follow aren’t people at all or are people that you have no idea who they are.

So let’s talk about the steps involved in purging your twitter account.

Step 1: Set a ridiculous goal

I literally thought it would be impossible to cut my following count anywhere near 100. Setting a goal beyond what you think is possible will help you click that unfollow button on those accounts that are borderline.

Step 2: Work through the list

Now, just start working your list. Here’s a few things you’ll want to sort by, look at and consider.


Pretty much all famous people and most internet famous people can go. You can catch up with them on TMZ or Hacker News (you don’t read that right? right?).

Link feeds

Top code tricks, inspiring advertisments, historical pictures, etc etc. All of these have to go. Replace them with RSS feeds if you can. Go read the actual sites if you have time.

These are some of the best ones to remove. They tweet often (always via automation) and usually contain links or other distracting things. Remove the accounts, remove the distractions, gain back 30 minutes a day.

Companies who added you on their own

If you use Twitter to authenticate with other systems or for those systems to tweet on your behalf they’ll often just add themselves to your following. Obviously those go.

People who don’t follow you

If they’re not following you they’re not going to be offended you ditched them! I realize this is a little bit harder for folks who don’t have a large-ish following, but if they’re not following you and you don’t regularly get value from their tweets let them go.

People who don’t tweet

We’re shooting for a goal here. There’s no point in following people who don’t tweet. They’re just clogging up your list.

Remove anything you can replace with RSS

A lot of companies and systems are just tweeting what they’re posting to a blog somewhere. Remove them from twitter and add them to your feed reader (I like and read it as you have time.

People you haven’t interacted with in forever

You know, the person you met at that conference 4 years ago. Those old coworkers you never talk to, etc. They have to go.

Move companies (only companies!) to a Twitter list

There’s some companies I need to follow. Perhaps they provide a critical system for one of our products for example. I want to stay up to date on what’s going on, but I don’t need it realtime in my timeline. For them, unfollow and add them to a Twitter list.

A lot of people recommend using lists to organize your twitter reading in general. To me, turning twitter into a 20 list Hydra sounds even worse than a single busy timeline. So 1 list for companies/services, that’s it.

Gut checks

People you kinda know, you sometimes interact with. Perhaps they’re part of a community you’re a member of. These are close, but most of them have to go.

Remember, they can still read you, they can still @ you, if you leave enough people from the community in your feed you’ll likely still catch important things they say/do via RT’s etc. You’re trying to up the value of your twitter world by subtracting noise.

Some of the noise is from nice people who you like and don’t want to offend. That’s why it’s better to rip the bandaid off! Get everyone removed all at once. Hey, you can always add them back if you need to.

The pause

Ok. You’ve worked through it all. Now let it rest for 20 minutes. Then go back in for another pass. You’ll see accounts you missed the first time. It also gives you time to think through any borderline ones you left in.

Step 3: Bask in the glory

Twitter is the fun useful tool you remember it being before you were following 800 accounts. You’ll be shocked at how much more time you have as well as the amount of focus you’re able to give what remains.

Landsman’s 10 Rules of Customer Support

I’ve been building customer support tools for about a decade now. Over that time I’ve pretty much seen every random thing a help desk can do.

There’s a few core principles though that I really believe all help desks should strive for. We build our products with these in mind.

These have served me pretty well, both as someone running a help desk and a software vendor creating them.

1. Do not require help desk software registration to contact support

This list isn’t really in a specific order… except for this one. I find nothing more rude and inconsiderate as a customer than to be forced to register for a separate help desk website/application when I go there needing support.

There is NO upside to this for the customer. I need help. At that point I’ve probably looked through your self help docs (well if those also aren’t behind registration!) and I’m getting worried/scared/mad. The very last thing in the entire world I want to do is go through a registration process.

Even better, often you will have registered in the past. Years ago. So now you get the fun of going through a password reset process. This also inevitably causes MORE support as people have trouble with the registration, they get confused by where they are and if it’s the correct place and so on.

The most infuriating part is that 100% of the time on these sites if you go to the sales contact form you can submit with no registration. Better yet, very often those emails go into the same system as support. So a customer that’s paid you already ends up with a worse experience than a potential customer asking sales questions.

2. Do not tell the customer “we’re marking your ticket closed”

I get these all the time. These days they’re almost always automated which makes them even worse. I don’t care if my issue is marked “closed” or not. Guess what, I already know if my issue is resolved or not!! There’s is no reason at all to tell the customer about the internal workings and organization of the help desk.

Also, these almost always come several days after the issue has been dealt with. If the issue is fixed I know that already and it’s worthless. If it’s not, then this only makes me angry as you’re closing my ticket and presumably done working on it even though it’s not resolved to my satisfaction.

3. Do not expose help desk data to the customer

In all but a few very rare circumstances there’s no reason to expose the customer to confusing metrics or data points stored by the help desk software. For example, the current “status” of a ticket. It’s category, who’s assigned, the ticket volume, etc.

From the customers perspective it’s all irrelevant. Even worse, it will often be confusing, especially if the status types, for example, are written in a way that makes sense to the staff in the help desk but not to customers.

4. Do not make the customer jump through hoops in order to acquire better metrics

We all love metrics, statistics, anything that purports to give us an edge. I don’t have a problem with that in general, but you shouldn’t modify the optimal experience for the customer in order to get them.

Don’t make me register before I get support so you can track me one extra step, don’t make customer ID required when I have a simple question unrelated to my account (can’t you look that up from my email anyway!) and so on.

Keep the flow smooth for the customer and work on filling in the blanks on your side.

5. Honor the customers time

This one’s obvious. I think we all know about the cable company and it’s policy of arriving between 8am and 6pm.

Just recently we had the same sort of experience with a Poland Spring water bottle setup. They were supposed to come between 9am and 6pm. OK, annoying but I was going to be to the office by 8:20 at the latest so no problem.

What time did they arrive? 8am and left when I wasn’t there. Now they’ve wasted my time by going to the office at all (which I otherwise wasn’t going to do) and having to reschedule and go there and wait again on a future date.

Wasting the customers time is one of those big ones that get people talking very negatively about you to everyone who will listen.

6. Organize self help resources for customers, not staff

It’s just natural instinct for support staff to write self help documentation in the way that makes the most sense to them. Unfortunately, as they have in depth knowledge of the product if they’re not careful it can often become difficult to navigate for customers.

The worse offenders tend to be support portals that are organized into folders as traditional knowledge base software tends to do. Folders are the worst as their nesting makes it impossible for people without fairly specific knowledge of the topic to find what they need easily.

Search isn’t always the solution either as it’s not uncommon for a customer to know what they need but not what it’s called. Whenever possible try to make self help resources easily visually scannable. This way customers can scroll through information without a lot of clicks and navigation.

It’s also a good idea to track the search terms entered into your customer self service area so that you can figure out what customers think things are called and adjust the docs as needed.

7. It’s OK to say I don’t know

It’s much better to say you don’t know then to provide inaccurate information. Usually this isn’t an issue on the policy level of the help desk, but rather staff don’t feel comfortable saying this to customers.

It’s OK if they don’t know. Replying quickly with an I don’t know, but I’ll find out is better than replying very late with an answer in most cases.

8. You will not use Do Not Reply email addresses

It’s amazing how often you still see these. Never ever ever send out an email for any purpose with a do not reply address. There’s just no reason for it. If someone has a reason to reply why would you ever make that email bounce for them?

If you feel like you must prevent replies then I would suggest still using a valid email and have the help desk software automatically reply to any emails to that address with useful information and where to go if they need further support.

9. Listen carefully

In the constant mayhem of the help desk it’s not uncommon to forget to simply listen. Your queue is a mile high, more are coming in, you’re trying to respond in a timely fashion to everyone and you just forget to actually listen (or read in the case of email).

I’ve done it myself more times than I’d care to admit. When it gets crazy try and take a moment and keep your cool. This is only email after all and the vast majority of help desks aren’t dealing in life or death issues. Be efficient, but don’t skim or be distracted while you’re working tickets.

10. Be human, be helpful

When the customer is coming to support they’re often a bit frazzled. Just be human with them. Empathize with them. We’ve all been on the other end of that support ticket. So stay cool and always be focused on remaining helpful.

Bonus #11

Don’t use your support email address for newsletters and other mass emails. This is done all the time and it’s a huge problem. Newsletters and such are much more likely to be marked as spam. That degrades the deliverability of emails which use those email addresses. Then, in the future when support replies from that address to customers they’re more likely to be marked as spam and the customer not see them.

So use an alternate email address or even a different domain ( vs for example) to send newsletters. That protects your deliverability and you can still have your help desk software track replies to both email accounts.


Article: Why Bitcoin Matters by Marc Andreessen

I was a big detractor of Bitcoin I have to admit. I’ve gone through more than a couple rounds of fighting in the UserScape chatroom on it.

I thought it was all silly geek stuff and maybe it is, but the article linked above has really connected some dots for me. It’s the first thing I’ve ever read on Bitcoin that was well thought out and talked about more than what’s on the surface.

All the chatter about people trading it like currency has little interest to me, but the article points out much deeper possibilities. The article really struck a nerve with me.

The closest thing I can relate it to is someone explaining the web to you in 1990. Could it be that kind of thing where right now is the time to get in and help shape it?

There’s definitely something there. Just like the internet isn’t only for viewing porn, Bitcoin apparently isn’t only for buying drugs. It’s potentially bigger than just making (or losing) a few bucks off a currency trade.

So what to build? How do you contribute? It’s a fairly complex technical challenge to even involve yourself in and base level apps and services are only starting to form to abstract some of that (which is why it smells like opportunity).

Money to be made, surely. But even beyond that, the potential to be in on the ground floor. That rare event that only happens every 10–20 years in tech to participate in something radical and brand new like PC’s or the Web.