WordCamp Philly 2012 Scholarship

I’ll be speaking at WordCamp Philly coming up October 20th and 21st this year. Would you like to join me? Do you want to mingle with the smartest folks working on WordPress in the Philly area and beyond? Are you a little strapped for cash and balking at the $20-$25 tickets?

Well have no fear. We’ve raised enough money via CharityGoal (runs on WordPress, show it some love) to provide scholarships for 4 attendees to this year’s WordCamp Philly. Big thanks to Scott Kingsley Clark who donated on behalf of the Pods Framework.

What?

  • One Saturday or Full Weekend Pass (your choice) to WordCamp Philly, October 20th and 21st 2012.

How?

  • Make sure you are available to attend. Did I mention the conference is October 20th and 21st, 2012?
  • Write in the comments here or by email (a) how you would benefit from going to WordCamp Philly, and (b) why we should pick you over the others trying.
  • Optionally, send out a tweet thanking @Jason_Coleman and @ScottClark for the opportunity.

I will pick four lucky winners by October 1st and announce them here.

WordCamp Philly 2012 Scholarship was last updated on September 20, 2012. Bookmark the permalink.

Making QR Codes with Google URL Shortener and Google Charts

One way to make a QR codes to use the Google URL shortener.
  1. Goto http://goo.gl/
  2. Enter a URL
  3. Click shorten
  4. Click “details”
  5. Note/save the QR code

If you dig deeper, you find that you can click on the QR code there, which will take you to a Google Charts link. For example, here is the Google Charts link for a link I made Paid Membership Pro’s page in the WordPress repository:

http://chart.googleapis.com/chart?cht=qr&chs=150×150&choe=UTF-8&chld=H&chl=http://goo.gl/sLIg0

Hmmm, what if we just change that URL at the end of the query? Will it generate a new QR code for me? For a non-goo.gl URL? Yes!

This link works too, and doesn’t go through Goo.gl:
http://chart.googleapis.com/chart?cht=qr&chs=150×150&choe=UTF-8&chld=H&chl=http://wordpress.org/extend/plugins/paid-memberships-pro/

Some people will want to use the shortened code since Google adds some value by showing link throughs, etc. Some people may like that their own URL shows up in the QR reading for a moment and choose to roll their own code using the Google Charts API there.

Have fun making those QR codes!

 

Making QR Codes with Google URL Shortener and Google Charts was last updated on July 17, 2012. Bookmark the permalink.

Seeking Programming, Design, and Marketing Interns for 2012

A true internship benefits the intern more than the employer. We’re looking for motivated people to take part in development, design, and marketing activities at Stranger Studios. Interns will be involved in real projects and given the education, resources, and tools to do productive work for a cutting edge web development company. Interns will be groomed to take on a full time position at a company like Stranger Studios or to do freelance work in their field.

The three positions we are hiring interns for are WordPress Developer, WordPress Designer, and Internet Marketing Specialist.

All positions are full time, 40 hours per week, for a 3-month period beginning February 2012.

All positions are unpaid. Although some payment may be possible.

All work will be done remotely. Interns within driving distance of Reading, PA will meet with us onsite or offsite on a biweekly basis.

We are interested in recent college graduates or candidates between jobs looking to gain experience and build their resumes. Applicants who are still in school may also be considered.

WordPress Developer

Help with the development of our various open source and for-pay WordPress plugins and themes. Assist with customizations for website clients. Learn how to bend WordPress to do anything. Learn how to find, sell, deliver, and profit from website development projects.

Candidates should either be strong programmers with an interest in learning how to develop with WordPress or be familiar with WordPress setup and management with a desire to learn development.

WordPress Designer

Setup and customize WordPress installs for real clients. Tweak WordPress theme designs and develop new themes from scratch. Learn UI and UX best practices for website designs. Learn how to work with clients to deliver excellent websites that demand premium compensation.

Candidates should have some HTML/CSS experience or a strong desire to learn. Javascript or PHP experience a plus. Should have strong design skills. Experience with Photoshop and Illustrator a plus.

Internet Marketing Specialist

Generate and execute a marketing strategy for our WordPress membership plugin Paid Memberships Pro. Help design the email marketing integration and affiliate features for Paid Memberships Pro. Manage a real advertising budget. Learn how to make money online.

Candidates should be comfortable internet citizens with an interest in social media and business. Experience with WordPress a plus.

How to Apply

Please email me at jason@strangerstudios.com or via our contact form. Note the position you are applying for and provide a way to get in contact with you. Briefly state why you believe you are qualified and provide any information you think would be useful.

We will do our best to respond to all candidates and will follow up with qualified candidates to schedule a phone interview and further screening.

Here are some of the exciting things going on at Stranger Studios that you can take part in.

  • Our memberships software Paid Memberships Pro launched last fall and has been downloaded over 5000 times.
  • We have over 40 paying customers for our Paid Memberships Pro support package.
  • Last year we launched over 30 websites for our clients.
  • Our site WineLog.net has grown to over 33k users and an email list 27k strong.
Seeking Programming, Design, and Marketing Interns for 2012 was last updated on January 12, 2012. Bookmark the permalink.

Don’t Break The Code

Last Saturday at WordCamp Philly, I ran a session on “Building a Plugin in One Night”. Together, with about 50+ attendees, we brainstormed ideas for a new WordPress plugin that I could code that night.

The brainstorming went great, coming up with some good ideas… like plugins to:

  • Help first responders after a disaster (Big Idea!)
  • Add VIM (a Linux editor) shortcut commands to the Visual Editor
  • Disable the Visual Editor on a per-post basis (The Winner)
  • Allow users to create pages from the front end
  • Add easy donations
  • Log into WordPress via Google+ (Brian did it!)
  • Add syntax highlighting to the Visual Editor (Chris did it!)

The concept that the audience voted for me to work on was a way to disable the Visual Editor tab on a per-post basis. The motivation for this is the fact that the autoformatting of the Visual tab will sometimes break a complicated (or not so complicated) HTML structure ruining your code. Folks wanted a way to say, “Hey, WordPress, back off on this page/post.”

And someone (you introduced yourself to me later, but I forget your name) came up with a kick ass name: Don’t Break the Code. It explains the purpose and also harkens back to my days at Haverford College, which has a strong social/academic honor code.

I had hoped for something a little more mainstream. Only a developer or power user will really appreciate a plugin to disable the Visual tab, but that’s okay. The effort would be appreciated.

Turns out there are already a few plugins that either disable the Visual tab or remove other filters to keep WordPress from breaking code. The started trickling in after the presentation wrapped:

… and probably a few more. So we weren’t blazing new ground.

Still, some good ideas came up during the session that could improve the experience of using a plugin like this. Like:

  • Put the checkbox to disable the editor in the screen options area so it doesn’t clutter up the editor
  • Only allow admins to disable the editor. Other roles will see what the admin chose.
  • Allow admins to add a note RE why the Visual Editor is disable.
  • Remove other filters (like wpautop) to lower interference even more.

I spent the spare time I had during that day and then after the after party from midnight to 5:30am the next morning looking through the code in the existing plugins and piecing together the best pieces of them. I liked how “Disable Visual Editor WYSIWYG” just grayed out and struckthrough the Visual tab instead of removing it directly. I liked how Raw HTML put things in the screen options space and also how they allowed for disabling the other filters.

Anyway, the plugin released that morning on GitHub and then later at the Dev Day to the WP repository. You can grab it here:

Don’t Break the Code WordPress Plugin

So far it allows admins to disable the Visual Tab just like we said. I improved on the DVE WYSIWYG plugin by disabling via Ajax for a better user experience (you don’t have to click update for it to take affect). And after trying to copy Raw HTML’s method of placing things in the screen options, decided to scratch that and just code it myself using some tutorials I found online.

It works nicely. I plan to add checkboxes for disabling other filters similar to Raw HTML and also want to include that “add a notice” functionality somehow. I was going to incorporate the syntax highlighting, but that works really well as a stand alone plugin. Chris’s code had some problems on my setup that I hope to look into and patch for him.

Let me know what you think of Don’t Break the Code. If you want to contribute, you can fork and patch via GitHub here.

Thanks!

Don’t Break The Code was last updated on November 10, 2011. Bookmark the permalink.

CharityGoal.com Launches, Support our Cause

I’m happy to announce the launch of CharityGoal. This is a site we built for a client whose goal is to enable anyone to raise money for any (legal) cause. CharityGoal gives you an easy way to accept donations online, a beautiful landing page, and quick access to social network sharing.

For those interested, the site is built on top of WordPress. “Causes” are custom post types. A custom plugin we developed allows users who have signed up to create new causes through a front end form and to manage that cause. The checkout code was pulled from the Paid Memberships Pro plugin (also developed by us and GPL) and tweaked to work specifically for this site.

So take a look. While you at it, I’d appreciate a donation to our cause:

 

CharityGoal.com Launches, Support our Cause was last updated on September 21, 2011. Bookmark the permalink.

Don’t Call Your Customer a Dick

Yesterday Adriaan Pienaar, a.k.a. “Adii Rockstar” of Woo Themes posted on his blog about a tough client asking, Am I being irrational? He later followed up on Twitter, calling this customer a “dick client”.

http://twitter.com/#!/adii/status/95897185144676352

Now I’ve definitely had similar conversations among friendly company in private, but I would never post something like this to my blog or Twitter. I feel bad even propagating the story more, but I’ve seen some similarly toned tweets go out by developers and consultants and I want to (1) talk about why this might be a bad idea and (2) find out why most people seem to be okay with these kinds of expressions.

Judging by the comments on the blog and Twitter, the WordPress community has mostly got Adii’s back on this one. However I think in this situation, while Adii has some good points and understandable “beef” with this client, he is being a bit irrational.

The back story.

You should read his blog post for the proper context and to read Adii’s and others’ comments. I’m going to paste what Adii wrote of the exchange here, even though it’s about 90% of the entire post, because it’s short and I want to be clear about what I’m referencing. Adii writes (emphasis mine):

  1. Customer notes to us that he is struggling to achieve something with our product.
  2. We explain that this is currently a limitation, but immediately update & release a new version of the product to help the customer achieve their goal.
  3. Customer isn’t happy, e-mails us for refund.
  4. [This is where I come in.] I ask the client whether the fix worked in an attempt to determine how I can help the customer.
  5. Customer says they didn’t try it and won’t try it, because they don’t want to be a guinea pig. Insists on refund, threatens with chargeback.
  6. I explain that we released a fix for the problem and hence it’s not about being a guinea pig; we’re just doing our job & helping them out.
  7. Customer ignores last e-mail, rudely threatens to publicize this and again threatens to go the way of a chargeback.
  8. I issue refund and at least attempt to explain our actions in this regard & how we actually tried to help. Still awaiting response (if any is going to be forthcoming).

Now, to be fair, Woo Themes has a “no refunds” policy (see below). So Adii is in his right to refuse a refund initially (though he eventually gave one). And I think the client is lame for threatening to do a charge back through his credit card (which would refund the money and add another fee to Woo Theme’s account). However, despite the no refunds policy, Adii does end up giving one and seems open to giving them with justification. It’s clear that Adii doesn’t think “fixing a bug”, as he called it, is a good reason for a refund. And it’s possible Adii only gave the refund to avoid the bad publicity and bad affects of a charge back. Adii writes in the comment how he is frustrated at the power customers wield in these transactions.

Is this customer irrational to want a refund?

I think the customer here wasn’t being irrational (in his refund request at least, though he may have had an irrational tone). It sounds like this customer bought the theme thinking it already had a feature he needed. It didn’t, and although Woo Themes fixed the issue right away, I think it is okay for the customer to not be satisfied with this. The customer expected one thing and got another. Despite the quick fix, the customer has reason to question the robustness of the “fix”, which is grounds for a refund in my book.

10. [Woo Themes] Refund Policy

Since WooThemes is offering non-tangible irrevocable, digital goods we do not issue refunds after the subscription or individual theme purchase is made, which you are responsible for understanding upon registering at our site.

By the way, just because the customer may have some justification for asking for a refund doesn’t change the fact that it sucks to lose a customer and to have possibly done some work on a feature just for them. It sucks.

What are we even talking about?

Adii seems to want to bring up two points for discussion. One is about the power customers wield with the threat of a chargeback. The other related point is about the desirability of unconditional refunds. The points are related because it seems the chargeback threats are effectively forcing Woo Themes to offer unconditional refunds even though they may not want to.

For the record, I think unconditional refunds are a good idea… especially when it comes to GPL software.

For one, the point about digital good being irrevocable (made in the Woo Themes policy) doesn’t hold as much weight when the software could technically be distributed for free elsewhere due to the nature of the license. I think many are trying to offer GPL software for a fee and basically hoping that a free version doesn’t crop up… or using split licenses to try to keep a free version from cropping up. Despite the legality of charging for the software in this way and mantras of pro-GPL folks that it’s “free as in speech, not as in beer”, GPL software WANTS to be free as in beer too. It’s kind of natural. it’s supply and demand. People will want your software for free… and if it’s GPL and distributed there will be those able to redistribute for free.

I don’t think you need to stop charging for software (there are many benefits to getting the software “from the source” which is worth a fee), but you shouldn’t be upset if someone gets your software for free… whether it’s from Bit Torrent, an official flavor variant, or by asking for a refund after downloading the software. I’ve only come around this this opinion recently, but I believe that to do GPL software right, we need to make sure most of the value is in that “other stuff” around the software: support, documentation, packaging, trust.

Anyway, back to unconditional refunds. In my experience (and from what I hear) they cause more good than harm. A few will abuse them, but this should be more than made up for by the increased number of sales you’ll get since customers will feel safer about buying something they haven’t tried out yet. That is the argument.

What I would do have done.

It’s funny that the same day Adii posts about this customer, we have a similar experience with a customer for Paid Memberships Pro (our “premium” WP membership plugin). In our case, the customer thought we integrated with a payment gateway that we don’t integrate with yet and asked for a refund. I made the refund first, and then replied with our unwritten policy that we’ll add integration for any payment gateway a paying member requests… it just may take a moment. In this case, our potential/lost customer says no thanks. And I understand, because the customer expected one thing and got another.

As I said, I’ve only come around to this kind of thinking recently. Over the past two months, our return policy has changed from one requesting a reason and requiring the customer to delete the software and vow to not use it, to just requesting the information we need to process the refund. (BTW, Bed Bath and Beyond is a bricks and mortar store that does no-questions refunds to good success.)

Another part of what people expect out of a “premium” WordPress product is better support. And it’s funny that in these cases good, fast support was mostly ignored. This sucks. Not everyone is going to be a customer.

And that brings up another idea that is floating around this discussion: irritable, bad, (dare I say “dick”) clients should be avoided. (The customer we lost was very nice about everything by the way.)

Avoid bad customers. Just don’t feed the trolls.

I agree with the general idea (promoted recently by one of the 37 Signals guys — Jason?) that you don’t need everyone to be your client, and you should use pricing and marketing to target better customers. I would just add that you shouldn’t air the dirty laundry when you do manage to shrug off a bad client. Calling them out in public (if they’re not under a rock, they’ll know that you’re talking about them) may bring them back for more. It will definitely send a message to potential clients reading the rant that working with you might be difficult.

Maybe you don’t want clients who are afraid of being called a dick. You only want clients that are willing to spend a lot of money and never ask for a refund. Just be careful that you’re not turning off clients you do want. There is a fine line between “keeping it real” and pushing away perspective clients.

In summary…

In summary, I think Adii probably handled things correctly up to the point that he posted about it on his blog and twitter. He was trying to bring up some things that should be discussed, but I think his emotions lead him to post it too quickly and in a way that makes it obvious who he is talking about… and he used that D word there.

He could be scaring away potential customers. (I mean look what Chris Pearson’s attitude towards WordPress did to his credibility in the community. Our attitudes toward our clients are similarly important.)

Adii, and some others in comments/etc, missed the point that the customer paid for something under false pretenses. Whether this is the customer’s fault.. or if in our opinions the customer should have been happy about the quick fix, he or she still has a decent reason to want a refund: it is valid to question whether the “quick fix” will be as robust as the customer expected. Whether or not one should be granted is up to the business and their refund policy.

Customers threatening chargebacks when they aren’t warranted sucks. I feel in general though, it is more important to protect customers by allowing chargebacks than it is to protect businesses from their misuse. We don’t make money by forcing people who don’t want to pay for our products to pay for them. We make money by making the customers that are willing to pay happy.

The digital nature of software works both ways. Someone can get the software and then chargeback to effectively get something for free. But then it didn’t really cost us much to deliver the software either. Especially when working with GPL software, we should be ready to accept situations where people obtain our software for free.

Alright. Let me know what you think. Maybe I’m being irrational here. I don’t mean to pile on Adii. Like I said, I think he did it right up to the point of blogging/tweeting about it. This is all very subtle stuff. We probably agree about more than we disagree, but I don’t think it’s black and white… which is why I wanted to write a million rambling words about it.

Ok, hit publish already, Jason.

 

Don’t Call Your Customer a Dick was last updated on July 26, 2011. Bookmark the permalink.

WordCamp Columbus Slides: Licensing and Business Models for Premium Plugins

Here are the slides from my talk: Licensing and Business Models for Premium Plugins (ppt).

And FYI, slides from my similar talk at WordCamp Philly (pretty similar, but more stuff on GPL in the beginning)

What You Need to Know About the GPL, Download: pptpptx

 

WordCamp Columbus Slides: Licensing and Business Models for Premium Plugins was last updated on June 18, 2011. Bookmark the permalink.

I’m Speaking at WordCamp Columbus, June 18th at 11:30am

I’m excited to say that I’ve been accepted as a speaker at WordCamp Columbus this coming Saturday. I was a last minute addition… so thanks to the WCC folks for working that out. (Shout out to Angie Meeker: @angiemeeker / blog)

My talk is on “Licensing and Business Models for Premium Plugins”, which is a fancy way of saying “How I plan to make money with Paid Memberships Pro“. Sadly, the event is all sold out, but if you are going or able to squeeze in somehow, I look forward to seeing you there.

More info on the schedule: http://wordcampcolumbus.com/schedule/

Thanks WordCamp Columbus Sponsors: http://wordcampcolumbus.com/sponsors/

I’m Speaking at WordCamp Columbus, June 18th at 11:30am was last updated on June 14, 2011. Bookmark the permalink.

Fix for WP Page Tree Plugin in WP 3+

The WP Page Tree plugin is a nice plugin. It shows a tree view of pages in your WP site… but it’s been broken since about version 3 or so.

I’m sure there are other tree view plugins that work well, but I liked that one. And it is actually an easy fix to get it working in WordPress versions 3+.

The issue was that the links generated in the tree view pointed to the old admin URLs for editing pages (page.php?action=edit&post=#). The new more generalized URLs for editing pages is (post.php?post=#&action=edit).

So, what you want to do is find line 404 in wppagetree.php (of version 2.8 of the plugin) and change page.php to post.php. That’s it. The whole block of code around there should look like:

if ($public) {
	// Create our own link to edit page for this ID
	$out .= "" . $pageTitle . "";
}
else {
	$out .= "" . $pageTitle . " #";
}

Or download this zip here which has version 2.8 of the plugin plus that one fix. I may upload it to the WP directory sometime, but then I’d have to maintain. Feel free to do it for me. 😉

Download: page-tree-fixed.zip

Fix for WP Page Tree Plugin in WP 3+ was last updated on June 2, 2011. Bookmark the permalink.

Disable the WordPress Admin Bar for Non-Admins Only

Here is a variation of some code I found on Yoast.com to disable the WP admin bar for non-admins only.

function yoast_hide_admin_bar_settings() 
{
?>
	

Just copy and paste this code into your functions.php or another plugin/theme file that can add hooks. Save/upload and watch it work.

Let me know if you have any trouble using this.

Disable the WordPress Admin Bar for Non-Admins Only was last updated on June 2, 2011. Bookmark the permalink.

Locanda Osteria and Bar

A custom coded WordPress site using the client’s supplied design from Robert van Horne



Locanda wanted a unique restaurant website that featured full size photographs of the restaurant’s beautiful interior and even more attractive food! The client can easily update each page’s background image, and control the menu and logo colors to best complement the uploaded image.

The website is also coded to reformat seamlessly for use on a tablet or other handheld device.

Locanda Osteria and Bar was last updated on May 2, 2011. Bookmark the permalink.