Half-Elf on Tech

Thoughts From a Professional Lesbian

Tag: business

  • But Seriously…

    But Seriously…

    In reviewing people’s code for WordPress, I’m constantly struck by the lack of foresight people put in to their success. When a developer makes it clear they intend to run a business or have some modicum of popularity, one would expect them to put a bit of effort into it. Instead, I’ve watched people make the same mistakes over and over. And they complain to me about why their plugin is failing to become “the one” to use.

    The answer always seems to surprise them. People don’t take them seriously because they are unprofessional.

    WordPress Basics

    First of all, no one magically knows all this when they start. So it’s alright not to know. However. If you’re going to go into business based around anything, you need to learn the rules of the road. Take the time to learn that it’s WordPress with a capital P, that there’s a foundation, a trademark, and, yes, that you cannot use WordPress in your domain name.

    If you were going into business with PayPal or CitiBank, that’s all legwork you are expected to do beforehand. This is a business, and when you don’t take WordPress seriously, you won’t be taken seriously by WordPress.

    SEO Basics

    Pick a good domain name for your business site. Make sure you’re not violating a trademark or copyright. Pick a good name for your product. For the love of all things whiskey, don’t name your slider plugin “Slider” and stop using “Mega” as a prefix for anything. Remember, the name of your product cannot infringe on anyone’s trademark. So while “Shoppable Cookie Cutters” is not trademarked, “Shoppable” is. And yes, you’ll get a C&D for being similar.

    Write good copy for your website. Have a clear mission statement, a human about page, and some semblance of being real people. This extends to your documentation. Write it. Write it good. Write a readme that tl;dr pitches your product, explains why someone needs it, and details out what kind of services it uses (if any). Remember that most of your SEO comes from humans. Write for them.

    Community Basics

    The OpenSource community in general will help anyone who asks politely. So be polite. Be respectful. Be courteous. Be generous. If people are helping you for free (and most of them are) then thank them and ask how to pay it forward. Offering services, answering generic questions, educating users, or even just publicly thanking volunteers helps.

    The community also includes your users. Respect them. Especially when they’ve gone off the deep end and accuse you of wild impropriety. Your plugin hacked their site? Probably not, but treat them with respect and kindness. It goes a long way to inspiring the volunteers to back you up. But also don’t spam your users with a million in-product reminders to review your product, give it five stars, or otherwise distract them from actually using your plugin.

    Universal Basics

    Do your research. There is nothing on this earth that is a get-rich-quick, so study what you’re getting into. Don’t jump in blindly. Make sure the community is one you can work with, that they have ethics similar to yours. And if not, make absolutely sure you really are comfortable with going for the money.

    Set your expectations realistically, and be willing to have them reset. Take your work seriously, don’t make excuses like “someone else did this first!” Own up to any mistakes or missteps you make. Remember, you absolutely will screw something up along the way. The measure of success can be found in how you handle it.

  • What Are You Paying For With That License?

    What Are You Paying For With That License?

    My friend Andrea recently complained about confusion between support licenses and the GNU Public License:

    This lead to a WP Tavern post about how Commercial WordPress Product Descriptions Can Mislead Customers into Purchasing More Licenses Than Necessary.

    GPL Freedom to Use

    WordPress is licensed as GPLv2 and in the preamble it says, rather boldly:

    The licenses for most software are designed to take away your freedom to share and change it. By contrast, the GNU General Public License is intended to guarantee your freedom to share and change free software–to make sure the software is free for all its users.

    The GPL is intended to be about freedom in the code you acquire (be that for free or for purchase) and your ability to reuse it as you see fit.

    If you really want to understand the GPL and WordPress, I highly recommend you pick up A Practical Guide to WordPress and the GPL. It’s actually written by a lawyer and it’s $25 for the ebook, which seems like a lot until you realize that to hire a lawyer to go over all this would be over $400.

    The point for this post is pretty simple though. The GPL gives the user of a theme or plugin in WordPress the freedom to use the code as many times as they want, on as many sites as they want, for as long as they want.

    The Restrictions of Products

    I purchased a theme called Utility Pro from Carrie Dils. I love that theme. On her site, the various licenses are restricted by support.

    • Support for 1 Site
    • Support for 5 Site
    • Support for 25 Site

    All licenses come with “1 Year Support and Upgrades” and the ‘pro’ version has these extras:

    • DesktopServer Blueprint (quick setup for DesktopServer users)
    • Developer’s Edition (Grunt, Sass, and more)
    • WP Development Workflow course

    What am I paying for here? Support for X sites for 1 year, and updates. It doesn’t say if the updates are for all my sites, but I’m going to assume that if I get support for 5 sites, I get upgrades for 5 sites. The thing here is that the GPL would allow me to install this theme on 250 sites if I wanted, and not only can Carrie do ‘nothing’ about it, but she wouldn’t care. She knows how the GPL works, after all.

    This still leaves me with a couple questions:

    If I pay for support for one site, what happens when I put my license on two sites?

    The best case scenario would be I’d get a message telling me that I’ve used up the sites available to my license, and I’ll have to remove one to add another. I’d add in a link to buy more licenses personally.

    What’s to stop me from lying about the site I’m having a problem on?

    Well … Nothing. And unless I need Carrie to log in, she’ll never know! Even if I did let her log in, I could show her a demo site and explain “I’m working on a new version of my site and this is my code…” Which is a totally legit reason to be testing out her code on an ‘unlicensed’ site.

    Can she stop me from copying the updated version to an unlicensed site?

    Nope! In fact, if I’m super smart, I’ll always leave an unmodified version on a site that gets updates, and then use that as my base to update anything I’ve forked. Oh, and my version is so forked, it’s practically not her theme anymore. But that’s okay. I renamed it from utility-pro to utility-jo (it’s funnier to me).

    Change What We Pay For

    I’m going to propose a different way to handle licenses.

    Instead of paying for X number of sites for support, pay for X years of support + updates + features.

    That’s right, I’m suggesting this price point:

    • $80 for 1 year of support and updates on unlimited sites.
    • $200 for 3 years of support and updates and those nifty things on unlimited sites.

    The word ‘unlimited’ may sound terrifying. If you allow unlimited usage, what’s to stop me from opening a million tickets for my million sites for help? Nothing. Not a damn thing. Except there’s nothing stopping me from doing that right now anyway except my own pathological honesty when it comes to respecting the work of others.

    The people who will abuse this system are, for the most part, the people who already are. All the license has to check is “Is this license valid? Yes? Push the update!” Now the theme developer will always be pushing her latest, most secure, code to everyone, which is a win all around. Oh yes, did you think about that? If everyone always gets an update, then everyone always has the ability to be secure.

    Now there is one big pain point here. What if I give someone else my license key?

    Well… What if you just give away updates anyway?

    Genesis does. No license check needed. I can take my Genesis core theme, install it on any site, and if it’s out of date, I get an update alert.

    If you buy their Pro Plus All-Theme Package, it works like this. You shell out $499.95 at first and then $99.95 per year for access to every single theme they make, plus 3rd party themes, plus theme updates, plus support.

    The thing is I never put in a license number to Genesis core or my children themes. Ever. The updates just happen, even if I don’t have an account. So what am I paying for with Genesis? I’m paying for the code base, the support, the advanced documentation, and the access to everything I may need to make my site damned awesome.

    But What About Big Changes?

    The game is a little different with plugins. See, a theme actually rarely changes. Once you’ve made a theme, it stays roughly the same except for library updates and security issues. A plugin though, they can add new features. So instead, let’s take a page from the Apple. The Apple App Store does not charge you for updates. They charge you for mini-transactions which, love ’em or hate ’em, actually work. If you need to charge for an update, you make a new version.

    Think about that for a second. In the App Store, version 4.1 is a minor release, but version 5.0 is a major release. This is not the same as WordPress’ semantic versions where 4.1 and 5.0 are both major releases, but 4.1.2 is not. When someone has a major release on the App Store, they retire their existing app and add a new one. The upgrade process mostly works. There’s always a weird period of time where things are odd.

    When we look at plugins, it’s a heck of a lot easier but you would have to use a license check to restrict updates. Using your licenses and the plugin headers, you can check “If someone’s on version 4.1 and I have released 5.0 and their license is active, push the update.” That’s the easy check. The fun check would be “If someone’s on version 4.1 and I’ve released both 5.0 and 4.2, but the license is not active, update them to 4.2 only.”

    Hold the phone. Why am I saying this? Because now you’re pushing security updates to your 4.x branch while not giving someone the new 5.x features. You win, because you’ve made the internet safer. The user wins, because they’re safer and possibly inclined to trust you more. Slip in a little alert to the top of the 4.x admin screens to say “There are new features in version 5.x. Upgrade now for 30% off!” and you’ll be converting sales!

    While someone could change their plugin headers to lie and say that their 4.x version is really a 5.x version, there’s no benefit to them to do this if you’re simultaneously requiring an active license.

    So What Does This Have to Do With GPL?

    Going back to what Andrea said, it makes it clear what your freedoms are.

    You can take code, install it where ever you want, and no one should actually give a damn. But by making updates easier, companies have to worry less about people wrangling, leaving them free to handle the egregious issues, like reselling.

    • The GPL allows me to take StudioPress themes and resell them if I want.
    • StudioPress has the right to delete my account and break my ability to update if I do that.

    Without touching on the hot-button topic of the ‘spirit’ of the GPL, we’re talking two separate things. The GPL allows me to do what I want with the code. The terms of use of StudioPress as a service, providing me with updates, is not bound by the GPL, nor should they be. But Andrea’s point, that our terms of use and licensing (billing) structure can confuse people with regards to our GPL freedoms, is totally valid.

    The onus is on the seller, not the buyer, to explain the difference between the GPL freedoms (do what you want, basically), with the Terms of Use freedoms. GPL doesn’t give you the freedom to defraud a company, for example. If they chose to cancel your account because you resold their product, that’s their right. Your freedom to resell is not impinged by the GPL. You can go for it. But they aren’t obligated to give you free updates anymore if that’s the case, and they can probably slap you with a c&d order.

    The point is the GPL and its freedoms can live side by side with making a profit. We just have to be honest about what we’re selling. We’re not selling the code at all, we’re selling the service.

  • Mailbag: Getting Started as a Freelancer

    Mailbag: Getting Started as a Freelancer

    Neil asks:

    I am a web technician and proficient in Wordpress. I’ve worked on a number of WP sites, as well as other types of scripts/sites. Some of my work has been volunteer, and assisted by Dreamhost’s non-profit hosting. Would you have any suggestions as to how or where one might be able to start in obtaining freelance work? I know it’s a bit presumptuous but I thought I’d ask- I’ve seen many of your posts in the Dreamhost forums helping out. Kindest Regards, Neil

    I should preface this with a reminder that I’m not a freelancer for a reason. I hate the constant hustle of it.

    I don’t think I’m really qualified to answer this one. But you know who is? Chris Lema. And you know who talked on the Matt Report about how to become a great freelancer?

    But that doesn’t answer where one gets freelance work.

    If I had to start from zero, I’d pick the WordPress Jobs Board and snag a couple people there. Chris Lema supports Codeable, though, so that’s also a really good pick.

    Hey readers, who do you use?

  • WordCamp Elevator Pitches

    WordCamp Elevator Pitches

    When I go to a WordCamp, I bring a little notebook. We had a DreamCon and there are about a vigintillion little Scout Books branded for it and no one at the company wants them, so I have 20 at my desk and a couple boxes more at home, and every month I burn through one. But I also bring a fresh one to each WordCamp:

    Both of those notebooks are 90% full right now. At the end of a month, I copy over everything that wasn’t done in the previous book and put it on the first page. After that everything gets a new page and I X out the page when it’s done.

    But this isn’t about how I take notes, or not, it’s about how I learn something new at every WordCamp I go to. Often I learn about new products from people I know, but other times I learn about new methods to coding, tricks I can use to improve my development processes, or just understanding a feature a little better.

    I stress everyone should unplug at a WordCamp, turn off the laptop (unless you can just take notes without checking Twitter and Facebook compulsively), and listen. I take notes by hand because it forces me to focus. I have to listen and write and pay attention. By hand I can doodle as well, so I give myself visual clues to what I was thinking later on.

    One thing I also do is that I take notes on sessions from the front to the back, but from the back to front I write down all the new-to-me products and features. Sometimes it’s just ones I know about and need to look into a little more. Sometimes they really are brand new. This is why I don’t take your business cards. I write down what I need to know, what I think about it, and your URL. If you can’t give me a URL (or your URL is too long) maybe I’m not going to look at your site.

    After a camp, in my ‘downtime,’ I go back through the notes I’ve made, look them up, and decide if I like them or not. From that I’ve sorted out some tips for vendors and people trying to give me their elevator pitch on why I (or my company) need to pay attention to them.

    Make It Short

    If it takes you longer than 5 minutes, I’m tuning out. You’re at a WordCamp, people are generally checking you out in between sessions, so we want the tweet version of what you’ve got.

    Our product compresses images better than SmushIt.

    That was perfect. That got my attention and immediately had their name in my notebook.

    Make It Easy To Find

    If I go to your URL, the one you gave me, and cannot find the ‘WordPress’ product in one click, you’ve failed and I’m not looking at you anymore. The aforementioned image compression tool failed on that one. I went to their company site, the one they gave me a URL to, there was no information on that specific product. In fact, it’s been a few days, and I googled for it, and I still can’t find it! I know it started with a V, but I assumed that they’d have a link to their WordPress related products on their webpage.

    If the main URL of your site is not the one with this product, make that clear.

    Check out example.com/product-name/

    Oh and that’s a great URL.

    Have a Demo

    I want to see how good this is. Period. With the exception of ‘I’m a new webhost’ if you have a product, let me see if and if possible play with it. This is incredibly true of people who have proprietary code, like a service. No demo? Not going to look further.

    Be Ready for Tech Questions

    You’re at a technical conference. I’m going to ask things like “Have you benchmarked against TinyPNG? What’s the improvement over the similar functions in Photoshop like XYZ? Does the plugin hook into an API on your end? How do you handle network latency and speed? What happens if it times out? What’s the failback?”

    75% of the vendors I talk to at WordCamps tell me “I’m not the technical person…” That’s disheartening. If your sales people can’t answer the basic questions, or you don’t even have a white paper with some tech dirt, you’re not thinking about your audience. Selling to WordPress people means you shouldn’t forget the devs. You can sing and dance your cool factor all you want, but if someone asks a technical question, you should have a technical person around.

    Show Me The Code

    This annoys me a lot. When people are selling a plugin, I have to buy it to see the code. So when someone asks me to eval, the first thing I ask is “Is this a service?” If it’s not, I’m annoyed I can’t see your code. Moreso when I ask you “Well I’d eval but it’s pay for. Can I look at the plugin source code?” and you say no.

    If you’re at a tech conf and they want to see your code before committing, you may want to consider who you just asked to evaluate the code. I do explain that I’m a plugin reviewer for WordPress.org and I work for a webhost. Now if you’re interesting enough, I’ll buy your plugin and check it out. Still. A lot of us want to see the code.

    Your Product Beat Your Swag

    There were two vendors at a recent WordCamp where the swag they gave out was more memorable than what they were selling. That’s just sad. I don’t care that you were giving away notebooks or watches or cups or shiny balls. I care what you’re selling.

  • What I Learned From The Man

    What I Learned From The Man

    It’s no secret I worked for “The Man” for nearly fourteen years. I’ve learned some pretty amazing technical things from that, but I also learned some tricks about ‘working’ with a big company that have yet to fail me no matter where I worked. They were all lessons my family instilled in me, but having some pretty amazing people like Bonine, Margie, Joe P., Nikki, Rae, and a host of other amazing people all reinforce the morals of the stories, and it made me know that these were the right things.

    Always Admit Fault

    Scariest moment of my life was the day I accidentally rebooted a trading server at 10am on Thursday. Those were only supposed to happen at 10pm on Thursday nights, well after all trading was done for the day. I did it mid-day which meant there was a high risk that in-flight data could be lost. I was tasked with diagnosing what had happened and, after a lot of review, I came back and said the only logical reason was I had typo’d when I scheduled the time. We since changed to 24/7 clocks and not AM/PM to mitigate, but I was up front about the error being me. Similarly, when a bad change I made to a script broke the internet for all of our UK offices, I said it was me, I fixed it, and I took the hit. This meant later when a change I’d fought against was put in and caused an outage, everyone believed me when I said I’d done it, but it was someone else’s idea. I had credibility and history and (of course) documentation on my side.

    Document It Or It Didn’t Happen

    I had a boss whom I did not like. I liked the work, but working with him was terrible. He didn’t grove like I did, he was misogynistic and racist. He also had a flagrant disregard for protocol. Love it or hate it, when your company has specific steps to follow to do a thing, you do the steps. He didn’t want to and demanded I make an on-the-fly change. Verbally. I didn’t. This ended in a shouting match which our manager had to step in and settle. But before that event, I was told to make a change I knew was wrong. I demanded it be documented that this was a change in scope and a requirement by him. I then, under duress, made the change. It broke. I backed it out. That marks the last time I ever let it go that far and may explain to many people why I’m so firm about not letting people do ‘wrong’ or ‘bad’ actions. If I know something’s wrong, I won’t do it and I won’t help you do it.

    Remember You’re Special, And So Are They

    I’m a techie. I know all sorts of weird things. Remembering that I know those things and understand the different between minimizing a screen and closing a window is important. Joe reminded me about that once. I never forgot it. I also don’t forget that my place is to make sure problems are solved. So just because I don’t panic doesn’t mean I’m being cavalier, but at the same time I have to make sure the other person knows that.

    "Oh, you're using their Chrome APP, not their Chrome EXTENSION. They're very similar but one handles window creation differently." is a thing I hope I can stop saying soon.
    Credit: xkcd

    That window resize via a resolution change was the only way to fix a specific problem with a specific app. I used to travel across town to do it for people because trying to walk them through it on the phone was too difficult.

    Use Your Calendar

    “I’m sorry, I’m really busy.” has a lot more weight when they look at your calendar and see it’s booked. Solid. When I know I need to spend time working on a specific project, I schedule it as booked time and that way everyone can see and understand I’m busy. This is also a respect issue. If someone schedules a meeting, you confirm and click that damned ‘I accept’ button. It’s a contract, or a friendly agreement, in order to tell someone ‘Yes, I will be there.’

    Don’t Waste Group Time

    Irony. If you think about big companies, you think about wasted meetings where people never get anything done. I’m not talking about that (which is a thing). I’m talking about wasting time with being disrespectful of the meeting. Keep your phone/mic on mute in a conference call so no one hears you pounding on a keyboard. Turn off your video feed if you’re not presenting so you speed up the internet for everyone. Joining in a massive meeting with hundreds of people? Get a conference room for your location to prevent overwhelming the system. If it’s an on-line, text meeting, follow the announced protocol.

    What Did You Learn?

    I’m not the only open-sourcer who used to work for the Man. Did you learn anything that you still use today?

    Those meetings, by the way, are generally a waste of time. I greatly prefer stand-ups. Everyone gets 60-90 seconds to state status. Everything after is taken outside meetings.

  • Distributed Company

    Distributed Company

    In the past, a company’s staff all sat in the same area, cubes or desks in a little area where they were grouped by their job functions. Shipping sat here, processing here, accounting there. IT had the closet. As time passed and systems grew, teams became more diverse. The shipping mavens needed to know what the processing people were doing, and cross-training became the norm. People stopped being able to say they had one role at work, and started becoming generalists instead of specialists. There was always (and will always) be a role for the super specialist, but not everyone had to be one.

    In IT, this has become even more prevalent. It’s not good enough to just be great at Windows IIS, you have to know Apache, Lighttpd, nginx, and countless other systems, just to keep up with our fast paced world. Thankfully, a lot of us spend our time learning the basic concepts of how things work, we learn to think logically, and apply that skill to any product, regardless of our familiarity with it. We adapt.

    But for the brick and mortar companies, many people have sat ‘with their team’ for their careers, and the idea of splitting up is mind boggling. “How can we work if half the people I need to talk to are in another building?” they cry, after a reorganization moves people around.

    Here’s a true story.

    We split up our teams recently, into ‘Design The Software’, ‘Build The Software’ and ‘Support The Software.’ The designers are ‘architects’ who create the scheme of things and decide how the software will work. The builders do the grunt work and build it. The ‘Supporters’, for lack of a better term, are the folks who use it every day and answer the phone when it breaks. Oh yeah, they have to fix it when it breaks.

    Many of us straddle at least two teams, and some of us are in all three, so where you actually ended up has very little bearing on what you do, and more on where you sit. I sit a floor away from people I work with every day. Now, when a server goes down, someone over there may be working on it at the same time I am, and conflicts come up.

    We’ve tried to address this with ‘team twitter’ accounts (not actually Twitter, we made our own little applet for it in Sharepoint). Someone will post ‘Ticket Foo came in, I’m on it.’ and we know to look there first. Sometimes we post ‘Hey, server Bingo is crashing. Anyone know what’s up?’ and we’ll reply. Personally, I wanted to grab a page from WordPress and make a P2 blog where we could all just login and post, but that got shut down.(We’re trying to rewrite it for SharePoint right now, but oddly people are against sharing personal information with other people who already have access to that information…) Still, not everyone remembers to use it, and since it’s ‘just us’ and not a corporate initiative, we get people complaining ‘I have to run across the hall, down the stairs and down another hall to tell Bob about this!’ and ‘I can’t hear what’s going on!’

    We’re far too set in our ways, clearly. The fact that no one is willing to even try to look at the benefits of distributed collaboration depresses me. I don’t have to sit by someone to IM them a question. I don’t have to call them to ask a question. I have email, I have IM, I have a phone, I have a group ‘board’ where we can have lengthy discussions about ideas, before we sit down and waste an hour in a meeting.

    What I don’t have is buy in. I don’t have people willing to try something new. “The old way worked!” they shout. No, it really didn’t. It looked like it did, but how much time was wasted running around trying to find someone, not knowing where they sat, when you should have just put a message up and they should have read it, replied, and moved on. Interoffice memos in J.K. Rowling’s world were paper airplanes. Wouldn’t it be nice that you could use that? Oh wait, it’s called email!

    The future of communication in a company isn’t going to be ‘How do we schedule a meeting across four continents?’ but in ‘How do we keep our communication flowing, 24/7/365?’ At this point, my company has offices in over a dozen counties. We still rely on ‘shift hand-off’ emails which no one reads because we get too many emails to begin with. We have people who spend so much time filtering email that they half-ass updates to support tickets, so the next shift has only half an idea of what’s going on.

    Your company needs to be available when people use it. For a Bank (like I work for), that means every day except the days you’re legally obligated to be closed. Which means there actually isn’t a time when we’re 100% closed.(Sometimes I joke that the sun never sets on our company.) Obviously this isn’t true of all things. A grocery store should be open most hours of the day, if possible. A restaurant should have longer hours on the weekend. An on-line store maybe needs 24/7 support, or maybe it just needs 5 day a week so people can catch a break. But you decide when you need to be available, and then you make it happen. And if being available means you need someone to be around for 14 hours, then you need a way to hand off that person’s work to the next guy in a way they can easily pick up and run with.

    The future is decentralization. It’s time to embrace it and learn how to use it best.