Half-Elf on Tech

Thoughts From a Professional Lesbian

Tag: essay

  • Impostor Syndrome

    Impostor Syndrome

    Shortly before I pushed out an ebook (WordPress Plugin Support) I had a rush of panic and fear. “Why do I think I’m capable of this!?” I asked myself. “I’m not a great coder like Jorbin! I don’t know deep seated WordPress secrets like Otto! I’m not an autodidactic trac machine like Sergey! Where do I get off thinking I can write a book about plugins!?”

    Torn poster with the word 'Truth'Then I stepped back. I wasn’t writing a book about how to write plugins or how to code, or even everything that everyone did wrong. I was writing a book about how to submit a plugin to the repository. I was writing about how to handle support, how to document, how to reply to people, and generally how to not be a pain in the ass. That’s all stuff I know damn well, and I’m good at!

    So why was I scared?

    Impostor syndrome is a weird idea. It’s basically feeling like you’re not worthy of the praise you get. Have you ever had someone say “Thank you!” and you replied “It was nothing.” even though it was hours of thought where you racked your brain for a long lost memory? Why didn’t you say ‘You’re welcome.’ instead? It’s because somewhere, deep down in your head, you were sure you didn’t deserve it.

    Mentioning this on Twitter brought up the suggestion I write a book about impostor syndrome and how to overcome it, but the fact is I don’t know how.

    Oh, don’t get me wrong, I know what I’m supposed to do, but I can’t do it and not feel a little bit like a fraud. I was always told ‘Write what you know!’ and that gave me the courage and confidence to hit the publish button on a lot of posts here, and my books. Certainly I wasn’t raised to not be confident, which is funnier if you know my father. I have absolute confidence in myself and my abilities. I know I can do things, but still I get scared.

    Here’s what I do know. At some point in my life, I lost that ability to be certain at all times. But only when I’m alone. Before I speak at a WordCamp, any WordCamp, I am tense and stiff, not very funny, anxious, and nervous. People get a lot of crappy pictures of me that way. I told the photographer at Las Vegas “It takes a bit for me to warm up. As soon as I start talking, though, I’ll be fine.”

    And this is true. Once I start doing it, I’m fine. As soon as I hit publish, the fears were gone. As soon as I did something I felt great. This is true pretty much all the time (except the one time I clearly remember thinking “Bad choice! Bad choice!” and it ended in broken bones). I know it won’t be perfect, and I know I’ll probably have to go back and fix things, but that’s alright.

    Que es la veritat?

    What is the truth here? Am I really lying to myself at one point in this process? Do I really know nothing? Why can’t I, or anyone, just shake it. It’s not true, and I know it, that I’m incapable of things, but fear and all this stuff that’s ‘in my head’ is frustrating especially because I know it’s pretty much all in my head.

    The point, and this comes back to why this is on my ‘tech’ blog and not my personal one, is that what holds us back more than anything else is ourselves. The reason I don’t code ‘as much’ with core is not because I can’t but because I still feel awkward and slow when doing so, which holds back a process which is running along so fast now, it can hardly stop to wait for me.

    But instead of grumbling and giving up, I’ve been slowly, steadily, working on what I can do, making it good– no, making it great, and moving forward with that. Sometimes that develops into a patch, and sometimes it means I write a long blog post about things and what they mean to me, or how I learned them.

    That’s my truth. The only way to keep fighting that impostor feeling is to ignore that inner-me telling me I’m not good enough, accept the fact that I’m probably not fast enough for the rapid development world, and just truck on keeping up and fixing what I can, when I can.

    But this is my answer. It’s not going to be the same for everyone, and that’s why I can’t (yet) write a book about this. Because there is no answer for everyone, or even enough people, to make that doable. Still, know this. If you did something, if you tried something, then you did it. You tried it. No one can take that away. Not even that really annoying inner you who thinks you suck.

    Because you don’t suck.

  • Open Source Olympics

    Open Source Olympics

    I try never to argue about the ‘spirit’ of the law these days and god help me if I ever consider talking about the spirit of GPL. But I do have a firm belief in the spirit of what Open Source is and how that impacts what we do.

    I generally tell people I’m a Socialist and that’s why I love Open Source. It’s also true that I love the Olympics not because I want my country to win (I rarely keep track of medal counts) but because I want to see people exceed their expectations and go higher, faster, stronger. I cheered when the Dutch finally won the shorter length races in speed skating. I was sad when Simon Ammann did not place in ski jumping (I’ve been watching him jump for 16 years!). I was delighted to finally see women’s ski jumping!

    But if I wanted to sum up exactly why I love the Olympics so much, this single viral photo sums it up:

    Russian skiier, Anton Gafarov, gets a new ski from Canada

    If you watched the US broadcast of the men’s cross country finals (individual sprinting – they’re basically doing running on skis, it’s brutal), you saw Anton Gafarov wipe out, or at least part of it. They readily admitted they missed why he fell, but rewound so you could see this poor guy, skiing in his home country, come flying down on his back, behind the other skiiers, and crash into the wall. He lay on the snow in anguish, because he knew he would never get a medal now. He had trained his life for a moment that may never come again, and that hurt.

    But, and this is what you didn’t see on NBC, Gafarov got up and kept racing.

    Russia's Anton Gafarov falls with a broken ski during his men's semifinal of the cross-country sprint at the 2014 Winter Olympics, Tuesday, Feb. 11, 2014, in Krasnaya Polyana, Russia. (AP Photo/Matthias Schrader)

    And then he fell again, because (as you can see), his ski was broken beyond repair. It would be illegal for him to finish on foot. His race was totally done. In a sport where the difference between first and second is tenths of a second, he was out the moment he fell, but now he wouldn’t even be able to place and would end his Olympic experience disqualified. If you’ve never been a part of a competition where you DQ’d, I promise you that hurts way worse than not placing well.

    That’s not where the story ends, though. Go back to that first picture. See the guy on the right side getting him set up with a new ski? That would be Canadian coach Justin Wadsworth.

    Canadian coach Justin Wadsworth ran to Gafarov with a replacement pair of skis and putting them on.

    Wadsworth took new skis out, helped Gafarov put them on, and thus the Russian finished the race (in dead last) to rousing cheers from the crowd. When asked by Canadian news site The Star why he did it, the answer was simple: “It was like watching an animal stuck in a trap. You can’t just sit there and do nothing about it. … I wanted him to have dignity as he crossed the finish line.”

    We love to say that the Olympics are about overcoming adversity and doing amazing things, but much of Olympic spirit is inclusion and helping others. It’s never ‘us versus them’ but ‘look at how cool humans are.’ And to me, that’s what I mean when I talk about the Spirit of Open Source.

    Open Source is about people creating amazing things in an open environment, without fear of restrictions. It’s giving incredible freedom to let the art of code shine through the function, and it allows for astounding advancements because of that. But it’s also about making things better by doing it together, and by enabling the next guy to take your work and do more.

    If we see someone who has a need, we try to meet it. Not always for those wants (like I’d love a new iPad and laptop, but I don’t need them), but when someone’s in a massive car accident, or loses a job, or wants to go to an event and can’t afford it, we move heaven and earth.

    Open Source would bring Gafarov a ski.

  • Just Ask

    Just Ask

    Someone asked me why I spoke at some events and not others. Or why I was on some podcasts and not others. For WordPress, I do generally apply to speak if I’m going (for what I consider obvious reasons, I’m good at it and I actually enjoy it, shut up Jenifer, you were right) but I also like going to WordCamps just to learn and be social in a businessy sort of way. This is my job, after all.

    So why did I talk on WPWatercooler or MeetWP or The Matt Report? Why did I do the interview with Code Poet? It’s so simple you’ll laugh.

    They asked.

    Just Ask: Woman stretching out her handI very rarely say no. The two days I tend to are Fridays and Saturdays. I’m not online Saturday, and Friday is usually pretty busy for me. Okay, and I admit Sundays I’m usually out at the archery range or solar (it’s an arts and crafts thing), but still, with enough warning I can make some time. The point being, I’m totally fine with people asking me “Hey, can you be on our thing?” Unless you’re totally hate filled, anti-everything, jerks (which is … surprisingly hard to find in the WP world), I’ll likely say yes if I have the time.

    Mind you, I don’t listen to or watch most podcasts or hangouts in real time. I just don’t have that time anymore. I have a backlog saved, and when I’m at work, I play them on my iPad when things are slower.

    I am sorry to have had to turn down WordCamp Orlando last year, but I’d just come off of three funerals and 6 events in 8 weeks, and I was burning out emotionally (I’m putting you on my list for 2014!). I’m sorry I had to turn down a same-day request from the Matt Report once, but it was just phenomenally bad timing that day. I didn’t even see the email until it was almost too late. Yeah, that kind of day.

    The point to all this is that while I know a lot of people don’t find me super approachable because I like having my personal space respected, and I feel that an unsolicited email is roughly the same as a phone call, my real intent with that viewpoint is to make you think. Think about what you’re asking. Think about what you’re giving to people and what they’re giving you. Don’t take brutal advantage of their good nature, and always respect them as humans with lives and agendas that may not be 100% the same as yours.

    See that’s not hard? Give and take is what makes WordPress great.

  • Poor Customer Service

    Poor Customer Service

    Bad News GuyI have to start this with a confession that I screwed up and lost my WePay account.

    I lost my WePay account for something that was totally my mistake. I have no complaints about that, I screwed up and missed the clause in their ToS that says you can’t use it for digital goods. This needs to be stressed: this was no one’s fault but my own. You can think it’s a stupid clause as much as you want, but it’s theirs, and I agreed to it and broke it. On accident. But ignorance of the law is no excuse. I know this, I support this. I have no quarrel with this.

    My issue is how I found out, and what WePay did about it when I had questions.

    How did I find out I was in violation? I got this email:

    It seems you’re using WePay for one or more of the activities prohibited by our Terms of Service. Unfortunately, you can’t use WePay to accept additional payments. Any pending payments will be canceled and you won’t be able to withdraw funds at this time.

    More specifically:

    We are unable to process payments for digital goods including ebooks.

    Thank you for understanding and we apologize that we couldn’t offer a better solution.

    It’s a nice email, all told, but it doesn’t explain things. Like … if pending payments are canceled, do they get refunded? What about completed payments? Do those get refunded or do I get my money? At first, I had about $70 stuck in some weird degree of transaction hell. Now it’s down to under $20 and I’m still struggling to get a good answer as to where that money goes. Will I get it back? Will my customer get it back?

    I logged into WePay and everything looked … normal. I checked my payment pages, as myself, and they were active. Logically I thought they had disabled my payment API and would be refunding money, but I could find no information on that on my pages. Then my friend Kat pinged me to tell me my Donation Page for ebooks was down. THAT is how I found out my account was actually disabled.

    I emailed them and right away and was direct that I knew, understood, and accepted, that I was at fault, but I asked if they meant by “Unfortunately, you can’t use WePay to accept additional payments.” Forever? Everything? It was over and done with? I felt that was pretty nice, all told. I understood that it was my bad, but I wasn’t clear on what they meant by the wording and asked for clarification.

    They replied with that yes, this account was good and done and gone forever more. I could no longer use it though paradoxically when I was logged in, there was no obvious mention of this. The only way, logged in, to tell I was persona non grata was to try and withdraw my money. Then it said to contact customer service. But my support guy said all was not lost, I could make a new account, and as long as that didn’t break the rules, I would be allowed to stay, “Your current account though, can not be utilized unfortunately.”

    It was a strange way to tell me “Your account has been suspended.”

    Stack of Uruguay BillsBut okay, that’s fine. I accepted this and replied asking if my customers, the couple who were in some various state of pending (I think it was a total of $19.50) would get their money back. And this is where my tale went from ‘Stupid me’ and right into ‘What the hell is wrong with WePay?’

    The initial email I got was at 4:12pm. I didn’t see it until nearly 8pm but I replied right away when I figured out what it meant. I did not know, at that time, that they only did support from 6am to 6pm Pacific, but since I got a reply within 30 minutes, I assumed, like you would, that they had 24/7 support. The second email, my question about the refunds, was sent at about 9pm, and there was no reply by 11pm. As anxious as I was, I went to bed.

    In the morning, there was still no email, so I sent another asking for an update, and repeating the question, at about 6:30am. After two more hours, I thought something was up. Normally you get a reply telling you there’s a ticket. Instead I got asked to ‘rate’ my ticket; it had been closed. Instead of replying via email, I logged into their system and marked the ticket as unsatisfactory, with a now angry rant that I was trying to get an answer. Then I forcibly reopened the ticket and put in BOTH my emails asking for the same information.

    All I wanted to know was if the people who paid me, and whose money WePay put a hold on the payments, get THEIR money back?

    I know I screwed up. But that money, if it’s not mine, is theirs and not WePays.

    It took six more hours for someone to reply to that question. I poked their Twitter account about it, and was told that my 11pm email was outside support hours. I asked (via Twitter) for someone to look at my ticket please, and got no more replies from them. At this point I put my effort into getting Stripe up and running, making my own donation page, and figuring out how PayPal handles invoices again.

    At this point in the game, I was no longer annoyed and understanding, but pissed off and vocal.

    I probably sound angry, and I am. I’m angry at myself for not reading the ToS. I’m angry that WePay actually has a ‘no digital goods’ rule for a online payment service in 2014. I’m angry that I didn’t get a warning and a chance to correct myself. I’m angry that their UI made it so I couldn’t see I was actually suspended. I’m angry that their support system which said ‘reply to this email to reopen the ticket’ decided to turf my mails instead, with no notice.

    I’d been with WePay for over four years. I really liked them because they were everything PayPal was not! You can customize a donation page with a pretty URL, or send a custom invoice that looked personable. And back four years ago, I didn’t have to fight to get answers, I got a freakin’ phone call asking me if everything was okay. Yes, I remember that call and said “Well DAMN, this is great!” That was customer service worth lauding, and why for so long I’ve told people to use WePay.

    This experience was not WePay. I told them “It’s like finding out your favorite actor is a racist.”

    Customer service will make and break you. Customer perception is a huge part of that. WePay went from a service I adored to one that I outright dislike now. And no, I’m not mad at them about shutting my account, I’m mad at them for how they handled it. How they talked to me, how they dealt with my questions, and how I waited almost 6 hours for a reply during business hours, but got them quickly outside them. The money has being refunded to my customers, and I have personally apologized to them for my mistake. I’ll miss you WePay, and I wish you could be less stupid about digital goods. I hope you change your mind one day, but even then I won’t be back. My accounts are deleted, we are no more.

    The coda to all this is that on January 16th, WePay announced they were shutting down everything except their API. No more buttons, no more donation pages, no more crowdfunding, no more store. Just an API, like Stripe, only you can’t sell electronic goods, making it officially the least useful of all the online API stores out there. Way to take a great product and kill it.

  • SEO Advice I Ignore

    SEO Advice I Ignore

    I watch a lot of WordCamp presentations, and I pick up on a lot of ‘advice’ people give. Some of it is, I feel, useless. Today I want to tackle all the SEO advice I’ve seen and read lately that doesn’t matter as much as it might, or at least, not enough to make me change.

    Fisherman and Pelican ignoring each other on a beach

    Before that, though, I want to stress the one part of SEO that will matter, now and forever, no matter what Google does, and that is to have Good Content. Second to that is to have a good network of people who link to you, share your posts, and retweet them. Human interaction is the best measure of your SEO. If people are sticking around, you’re going to be okay.

    Don’t Use Dates in Your URLs

    While my SEO hero, Yoast, isn’t a fan of dates in URLs, here’s what he says:

    “Putting the date in the URL has very few benefits, if any. I’m not a fan because it “dates” your older results, possibly getting a lower click through over time.”

    So I use them here, and on my personal blog, as example.com/%year%/%postname%/ for a couple reasons, but it boils down to the fact that dates matter with the content I provide. The first thing I look at when I see a post about a technical subject is when was it written. Then I read the post to see if it mentions a specific version of the product. If there’s a notice at the top like “Read the updated version…” then I’ll go open both and read the older and the newer.

    The point is, as Jen Mylo might say, technology changes. And because of that, it should be obvious when a post took place. So I firmly think dates matter for the humans. And since they don’t matter for SEO, use what makes you feel good. Of course… shorter URLs are better. I’d suggest more people use categories if they could manage to only post in one category at a time. Still, go to https://halfelf.org/recovering-your-cape/ and you’ll be redirected because WordPress is really good.

    Use Related Posts

    I can see why people think this is important. Establishing cross-links between your old posts can pull new readers over. But I find this is more important in getting the search engines to scan your older content. I cross link between posts manually all the time, not to get better SEO, but to help my readers see where I came from before. So I don’t need to have them automagically made for me. This comes back to good content. My good content is relating posts in the best way possible, and making sure they’re the best links to relate.

    Always Use Images

    Images are pretty, I agree, but I think it’s more important to use images that matter. You don’t have to use images all the time. Certainly people like them, it breaks up the monotony of a post, but for SEO, you should worry more about your alt/description fields than having an image. Also remember to compress your images, please. It’ll make your site run faster which will help your SERP. When in doubt about an image, leave it out. Or use something silly.

    Suomi: Jymyjussien pelaajat vaihtokopilla
    Suomi: Jymyjussien pelaajat vaihtokopilla
    Source: WikiCommons

    Never Change Your URLs

    While this is just good advice, as long as you have good redirects for your old links to the new ones, you won’t lose your Google Juice. So yes, you can change your URLs. I do it all the time, but I’m proud to say that links from fifteen years ago still work. They redirect to the new URLs, of course, but they work because of those redirects, and my Google Juice is amazeballs.

    Keep Posts under 600 (or 750) Words

    I laughed a lot here. While people like Otto marvel at my verbosity, and other people tell me “Your posts are too long!” when I cut a post back from 2000 words to 1000 it’s not because of SEO, it’s readability. If a 4000 page post is the most popular on your site and CNN links to it, I’m pretty sure your SEO won’t get hurt. Your post should be as long as it needs to be to clearly and accurately communicate what you’re trying to communicate. That’s your rule. Keep with it. Now, if your human readers tell you that you’re too verbose, that’s something else.

    Use Subdomains

    I’m going to quote Matt Cutts (aka Mr. Google) here, on the subject of sub-domain vs sub-folder:

    “They’re roughly equivalent. I would basically go with whichever one is easier for you in terms of configuration, your CMSs, [and] all that sort of stuff.”

    Can we move on now, please?

    Use Menus

    500 Menu Items? Ain't nobody got time fo that!Okay, yes, you should use Menus, but I’ve seen people stuff every possible link into a menu, and then be upset no one sees the menu item that’s four tiers down. I barely use menu tiers, or if I do I limit them to one, and only one, sublevel. So the SEO advice of jamming everything into a menu is just useless, and given how people are using it like keyword stuffing, I bet Google’s next release (Penguin, Panda…. Pterodactyl?) will check if the CSS or HTML5 code indicates a menu and, if so, ignore it. I know I would.

    Anything Else?

    What do you think is just plain ol’ outdated or wrong SEO advice?

  • It’s Never A Good Time

    It’s Never A Good Time

    One of the biggest things I learned working for a bank was that there is never a good time for an outage.

    Take, for example, my ongoing argument about how we had to reboot servers with as little downtime as possible during our deployment process. This is pretty simple, right? If you have to reboot something, it has to be turned off for a little while. Now with a clustered distribution setup like we had, with ten servers in three locations (30 servers), we would deploy to every server in location A, reboot, then B and so on. Now naturally this causes an outage in each location, and we always had different ideas about how to handle it.

    Australian Roundabout warning signOne option would be to have the second step of our deployment process be to put up a ‘Sorry’ page, saying the service was offline, and then push to all three locations at once. That minimized downtime to about thirty minutes on average. We’d push the code zipped up to the servers as step one, sorry page was two, gently disconnecting inflight traffic without losing any transactions was three, and unzipping new files was four. If needed, reboots were five, and then six was to remove the sorry page. Pretty fast, right? The downside was that there was an outage, and if we had a problem it would take longer to fix.

    The other main option would be to turn off location A, shunt all active users to B and C, upgrade, and repeat. This took longer, usually around 90 minutes, but no service outage, right? Right…? Nope! The problem with shunting users was that we had to wait until the transactions were done before we could redirect them to the new server, which meant servers at locations B and C would be handling a sixth more traffic each, which meant when A came back online and we sent traffic to it, it was more than we had moved off it, so it took longer. Oh, and now A has new code, which B and C does not, so now we have two versions of the service running, and we can’t dynamically flip people around. We have to check service versions before our Round-Robin would work.

    Now, in both cases, the longest part of the process was usually the ‘gently disconnect all inflight traffic’ part. But you can see how it gets super messy really fast. The reason this was always a point of contention was that we really didn’t want our customers to have downtime because there was absolutely never a good time for everyone. We picked Thursday nights at ten pm Central for our updates, since we were a Chicago based company, but as time went on, we had to move some to Friday, which you’d think would work for a bank. After all, no one does business on weekends?

    I hope you laughed a little at that.

    As the Internet makes it more and more possible to work at any hour, we find that services need to be available at any hour. The whole concept behind ‘business hours’ making things standard never really worked for everyone. I mean, if your company was 9-to-5, you would have to do the brunt of your personal business on lunch and breaks. At least today, if I needed to run a personal errand at 2pm, I can just leave and come back to finish my work. Can’t do that at a bank, though! People need to come there to get their work done, so you have to be there.

    It’s really annoying, and it comes down to a simple fact: There’s never a good time to turn something off.

    Closed Sign

    This came up recently a friend asked what I was doing at work on December 24th and I replied “The usual. Answering tickets, making the Internet better, closing vulnerable plugins.” He was surprised and asked if I felt mean closing people’s plugins on Christmas Eve. This lead to me teasing the hell out of him for nagging me one weekend with two emails, a slew of tweets, and a text, asking for help with a problem (the last email was, I kid you not, ‘never mind, I read your ebook!’). While I was annoyed then, he apologized and we’re still friends (if the teasing didn’t indicate that already).

    But it did bring up something important to him. The time he had to work on his side project was weekends and nights. The time I had to provide random help was weekdays and maybe Sunday. For him, to have his friend and Multisite Resource not available was killing his ability to finish the project. Now, he freely admitted that banking everything on asking someone for free help was a terrible business model, and since then he’s stepped up, read the books, practiced on his own, and he’s now a pretty darn good admin for a network.

    Still, on December 24th, he asked if there was a ‘worse’ time to close someone’s plugin. “Sure,” I replied glibly. “The day their mother died. The day their car broke down. The day their tech quit. The day of their product push. The day we upgrade WordPress….” He realized I had a lot of examples and conceded the point. There’s never a good day because we don’t know what’s going on in your life. We can’t know. I’m not actually psychic, after all.

    Keep Calm and Carry OnSometimes people like to complain that we don’t ‘run WordPress’ like a business. If we did, we’d never close a plugin on a Friday night, or on the eve of a major holiday, or without warning, or … You get the idea. And they’re partly right. If WordPress.org was a business, a lot of things would be different. We’d have any easier way to warn people and put shutdowns on a timer, or delete accounts, or help everyone who posts in the forum. But the mistake here is not ‘ours’ for making WordPress what it is, but in you for expecting a free, volunteer, community to act like a company.

    Cause we ain’t.

    So while it’s never a good time to close a plugin, or reboot a server, or install new software for everyone, we’re going to have to do it at some time. An individual can’t be available 24/7 because we have to sleep, and we have other things to do. So accept that it’s just never a good time, fix it as soon as you can, and carry on.