How I Got Brave Enough to Speak at Conferences

In March of 2006, I attended my first tech conference. And while I came back invigorated, inspired and bubbling over with new ideas, I also realized that what I really wanted from a tech conference was to be on stage. Number one, there were not nearly enough women on stage. Or at the conference, for that matter. And number two, I was smart, dedicated, passionate, and I felt like I had something to contribute to the conversation.

But I didn’t even try to speak at conferences until the very end of 2011. Why? Continue reading

How to Make a Local Copy of a WordPress Site in 5 Minutes or Less Without Dealing with Code, Terminal, or PHPMyAdmin

WordPress 3.8 was released today. Maybe you’d love to give it a try, but you’re not sure how it might work on your own site. Will it break any features on your site? Will your favorite plugin turn out to be incompatible? Chances are slim that you’ll run into any problems, but of course, you want to be absolutely sure before you upgrade.

How can you be sure? By making a local copy of your site to use for testing. By ‘local copy’, I mean a copy of your site that lives on your own computer instead of on a server. You’ll be the only one who can view it. Local copies are also great for adding new features, coding child themes, making adjustments to an existing theme and more. Think about all the things you can do with a WordPress site that you don’t necessarily want your site visitors to see in an unfinished or half-baked version. Continue reading

Leave the World Better Than You Found It

In America, we live in a culture of more, more, and more. We’re never happy with what we’ve got. We always want something else. Something newer, bigger, faster, better.

We forget that if we’ve got a roof over our heads, enough food to fill our bellies, and clean water to drink and bathe in that we’re doing better than:

Those numbers are so big. How to make a dent? How to make a difference?

Living in Los Angeles, sites like this one are common:

Homeless: Art for Sale

I didn’t take this photo, NoHoDamon did. But I recognize this woman. She stands in the median where Crescent Heights meets Wilshire Boulevard near Museum Row. Rather than just ask for handouts, she sells artwork – childish drawings done on cheap paper with crayons. I know that because I worked in the building behind where she’s standing for a year.

Like a lot of people, I’ve always been a little uncomfortable with the idea of handing out cash, and I don’t tend to carry much of it around with me anyway. But I always wanted to do something when I saw homeless people in the streets. So I gave it some thought and I came up with the idea of making up little kits that I could keep in my car and hand out as needed. Of course, I’m not the first person to come up with this idea, and you’ll find lots of websites giving ideas and recommendations on what to include. I call them homeless kits. No two kits are ever the same – it depends on what I was able to get hold of when I was putting them together and what time of year. But here are some of the things I have included:

  • Food – nonperishable items that can be opened without a can opener like beef jerky, pull-tab cans of fruit cocktail, crackers, granola bars, etc.
  • Plastic utensils and napkins
  • Plastic zipper bags in a couple different sizes
  • Bandages or small first-aid kits
  • Shampoo
  • Deodorant
  • Hand sanitizer
  • Razors
  • Soap
  • Socks
  • Flip flops
  • Phone cards
  • Paper, envelopes, and stamps
  • Tampons and pads
  • Pens or pencils
  • Small notebook
  • Gift certificates for grocery stores or fast food restaurants
  • Tissues
  • Toothbrush and toothpaste
  • Sunscreen
  • Lip balm
  • Gloves
  • Hat
  • Lighter
  • Flashlight
  • Lotion
  • Comb or brush
  • Deck of cards
  • Paperback book
  • Baby wipes
  • Nail clippers and nail files
  • Bottle or two of water
  • Sunglasses

Then I  pack up cheap bags – giant plastic zipper bags, cheap gift bags, or re-usable shopping bags – with these items and leave them in my car. There’s a big supply in the trunk and I put 1 or 2 in the backseat so I can easily reach them when needed.

It feels really good to be able to give back and make someone’s day a little brighter and easier.

Image credit: Pedro Ribeiro Simões


Sketch Letter B

Now, the second in my series of hand-drawn letters: B

I bet you never thought the second letter would be B.

I’m releasing these under a Creative Commons Attribution-ShareAlike 3.0 License. You might use them as fun drop caps or they might inspire you to create a whole floral alphabet.

Other letters in the series:

Creative Commons License
This work is licensed under a Creative Commons Attribution-ShareAlike 3.0 Unported License.

Have fun! And please drop me a line or leave a comment if you use them.

How to use Google Web Fonts in your WordPress theme

Of course there are plugins for using Google Web Fonts on your WordPress site, but if you’re developing a theme, chances are you’d like your typography choices to be tied to your theme, not dependent on a plugin. Here’s how to use Google Web Fonts in your theme.

First, head over to Google’s Web Fonts site and pick out the fonts you’d like to use. Use the tools on the left side to narrow down the options because there are a lot. For this blog, I knew I wanted a chunky serif font for the headers and blog title, so I picked serif from the Categories dropdown and then moved the thickness slider over to the right.

Searching for a thick serif

That handily narrowed down 617 choices to just 5. You’ve got quite a few options for previewing the fonts – you can view a word, a sentence, a paragraph, or a poster. You can choose from some pre-selected preview text or you can type in your own, and you can also select a font size.

Preview choices for Google Web Fonts

Once you’ve found a font you’d like to use, just click the Add to Collection button.

Click the Add to Collection button to choose a font

Yes, you could add dozens of fonts to your collection. But you won’t, right? Because you know that just because you can, doesn’t mean you should. Try to limit yourself to a maximum of three. Two is better. For performance reasons, I still like to use an old-fashioned web-safe font for body text and save the web fonts for headers and other elements that need special emphasis or attention. Be careful about the legibility of your fonts – there’s no use using some snazzy font if it means your site visitors can’t read what you’re writing.

As you add fonts to your collection, you’ll see them listed in the blue section at the bottom. Once you’ve got the fonts in your collection you’d like to use, just click the Use button.

Use your selected collection of fonts

And you’ll be whisked off to a screen with 4-step instructions on how to use the fonts. If you’d like to download your choices to use in a graphics editing program to produce a comp or maybe a fancy screenshot.png for your theme, you can do that by clicking the Download Fonts button at the top right. If you just want to use your font in your theme, then you don’t have to download your collection.

In step one, you can select which weights or styles you want include in your collection and in step two, you can select which character sets you want to include. You can also see the impact your font collection will have on your page speed.

Now, in step three is where things get tricky. Step three gives us code to add to our websites – three different options. Go ahead and select the Standard option, but we’re going to deviate from Google’s instructions a bit at this point to follow WordPress best practices for adding styles to our WordPress theme. In the code for the standard option, just copy the URL that’s listed as the href attribute for the <link> tag.

Copy the URL in the href attribute

Then, open up your theme’s functions.php file. We’ll create a function for loading the CSS that we’ll be using with our theme:

See that ggl prefix on my function? That’s a WordPress best practice. Always prefix your WordPress function names to reduce the chances that they’ll collide with some other function in a theme, child theme, or plugin.

Now, inside that function, we want to register our stylesheet from Google:

We’ll use the wp_register_style WordPress helper function. The first parameter is a handle, or shorthand, that we can use to refer to this stylesheet later on in our code. The second parameter is the path to the file. We’re using the URL we got from Step 3 in Google’s instructions.

Next up, we’ll enqueue our main stylesheet for our theme. You didn’t put a <link> tag in the <head> section of your header.php file, did you? If you did, go and remove it. Then enqueue your stylesheet in your functions.php file:

Here we’re using the wp_enqueue_style WordPress helper function. It’s got the same parameters as wp_register_style. First we assign our stylesheet a handle. Second, we get the path to our stylesheet. Handily, WordPress provides us with a function, get_stylesheet_uri(), that we can use to get the path to our theme’s style.css file. Third, we list dependencies. Our style.css file is dependent on the Google Web Fonts stylesheet, so we pass in the handle we assigned to that stylesheet when we registered it.

Finally, we’re going to use the wp_enqueue_scripts action hook to call our function:

Now we’re all done with functions.php and there’s only one thing left to do to use our Google Web Font. Step four of Google’s instructions for using the web font will show you what values you’ll pass to the font-family property to use your font. I want to set all of my headers in Holtwood One SC:

And I want to set my site description in Rouge Script:

That’s all there is to adding Google Web Fonts to your WordPress theme. Remember, with great power comes great responsibility. Use them responsibly!

That time I got fired

Yes, it happened to me. I was fired from a job. It happened about 6 years ago.

I was looking for a new job, but the job market wasn’t great at the time. The web industry was still recovering from the dot com crash. I snagged a couple of interviews that went nowhere. Then I got an interview with a little consulting company who was building a web application to help them collaborate with their clients.

I was to interview with the CEO and the lead, and until that point only, developer on the project. The CEO was late. I sat down with the lead developer and talked to him for less than 10 minutes when he concluded the interview and started to show me out of the office. My heart sunk – I didn’t know what had gone wrong.

The CEO showed up just then, exclaiming surprise that I was leaving the interview so early. He took me back into the office and asked if the developer had shown me the application. He hadn’t – there hadn’t been time to talk about much of anything.

So the CEO sat me back down and proceeded to demo the application while the lead developer sat hunched with his arms crossed. Clearly this guy didn’t want to hire me. But the CEO was friendly and enthusiastic. It was easy to see that the application had been built by a developer with little thought to the user experience. The CEO’s main beef was that there were several points where making a selection or checking a box resulted in a sudden and complete page refresh. He told me they were considering using Flash to get around this problem, but weren’t keen on the idea, and asked me if I had any other suggestions.

To me, the solution seemed so painfully obvious that I hesitantly said, “Well, have you thought of using Ajax?”

The CEO had obviously never heard the term before – he asked me to explain, and I did. He jumped out of his chair and started doing what could only be described as a celebration dance. “Ajax! Yes! That’s what we need! Why haven’t we tried it yet? Did you know about this?” he asked the lead developer.

The lead developer shot me a murderous look and spat out, “That’s new, isn’t it?”

“Well, no, not really. It’s been around for ages,” I said. “Just not used very much.”

I sent them off to a couple of websites that had Ajax demos set up and the CEO got more and more excited while the lead developer got more and more dour.

Despite the lead developer’s attitude problem, I left the interview on a cloud, certain that a job offer would be coming my way. And sure enough, one arrived in my inbox the very next morning.

When I first arrived at my new job, I had a series of meetings with the CEO. I was going to be working closely with him to redesign for the application. He asked me to start creating HTML mockups. At the end of each workday, I was to upload these to a development server where he could review them early the next morning over coffee.

No problem, right? All I needed was the server address and credentials. I was told to get those from the lead developer. But when I asked him, he refused to tell me. He told me to email  him a zip file each day, and he would take care of putting them on the server. The lead developer worked at a separate office, so we didn’t get much chance to talk to him directly.

You can probably guess what happened next. Day after day of me getting phone calls from the CEO at 6am wanting to know why I wasn’t doing what he had asked. I was sending the zip files to the lead developer, but he wasn’t putting them on the server. The CEO couldn’t understand what the issue was, and the lead developer refused to give me access. Two weeks into the job I was on the verge of getting fired.

I finally reached out to one of our project managers to explain the situation. He interceded on my behalf and called the lead developer, who outright lied and said the reason he didn’t give me access to the server was because I had told him I didn’t know how to upload files.

I was outraged. I’d been building websites for 7 or 8 years at that point – how on earth would I have been doing that without knowing how to put files on a server? The project manager kept me calm, got me access, and explained it away as a misunderstanding.

After that initial drama, things calmed down for a bit. Four more developers were hired, all within a couple of weeks of me. I unfortunately need to mention that these were three men and one woman because that becomes important.

Things shifted and the lead developer had to come and work at the same office as the rest of us and it became obvious that this man simply did not want to work with women. As time went on, he got ruder and more blatant in expressing his distaste. He developed the shocking habit of stepping into the small office I shared with the other woman developer and telling us that his wife was at home, preparing his dinner, as she should be.

In a meeting one afternoon, the project managers requested a new feature for the application – the ability to sort search results on a certain field. “Not possible,” the lead developer said.  This turned out to not be a new request. The lead developer had been telling them it was impossible from the beginning.

My fellow female developer spoke up. “Actually,” she said, “I think you could do it.”

“No, you can’t. It’s absolutely impossible,” the lead developer said.

“No, it is possible, ” she said. “You could just…” and she proceeded to explain a potential solution to the problem.

The CEO intervened. “Let’s move on to the next request. If this guy says it isn’t possible, then it isn’t possible.”

Not one to be deterred, that week the female developer branched the code and went to work. Within a couple hours, she had the requested feature working. At the next meeting with the project managers, she hooked her laptop up to the projector and showed off her work. The project managers were ecstatic.

The lead developer insisted that what he was seeing was impossible. That the requested feature just couldn’t be built. Never mind the fact that there it was, working, in front of everyone’s eyes.

“Well,” said the CEO to the female developer. “I’d appreciate it if you didn’t work on that any more. It can’t be done and it’s a waste of time.”


How do you overcome prejudice like that?

Things got worse and worse. The more bad behavior the lead developer got away with, the worse he behaved. If either I or the other female developer checked in code with even a tiny bug in it, we’d be subjected to heated and nasty attacks, both verbally and via email. Suggestions we made were squashed without consideration and we were often subjected to ridicule.

Finally, impatient that he still had to share office space with us, the lead developer stepped up his efforts and started destroying the production site and then blaming me or the other female developer. He’d drop entire tables from the database. Or he’d open up one of my CSS files and randomly delete 100 lines or so from the middle of it. Then he’d check it back into source control and push it to production. The CEO would get phone calls from clients and he in turn would then call the lead developer. He would then simply revert his changes, and calmly tell the CEO that it was a problem with either my work or the work of the other female developer.

You might be thinking, “Wasn’t that all documented?” Yes, of course it was. The check-ins and reverts were right there in source control, plain as day, for anyone who cared to look. The problem was, nobody cared to look. Even when the female developer and I tried to show the CEO and Vice President what was going on, they refused to look at the commit history and simply told us, “Either you find a way to work with him, or we’ll find someone who can.”

As though we were the ones to blame.

Finally, I got a call from the office manager one afternoon, telling me they were letting me go. The other female developer got the same call a couple days later. It was crushing. And absolutely unfair. And ultimately, one of the best things that ever happened to me. I got a new job almost immediately, paying me about 30% more. The other female developer did, too. We talked on the phone a month later and wondered why we had stuck around so long, why we had put up with so much.

We were both stubborn. We both refused to give up in the face of injustice and discrimination. I can’t say that we won in the end and I can’t say we handled the situation the best possible way. But I don’t know what I might have done differently. Taking some kind of legal action seems unnecessarily drastic. Neither of us had any troubles getting new jobs or any other jobs since. In fact, about a month later, the project manager – the very one who helped me sort out the development server problem when I first started – called me and asked me to come back to work for them. He said he was calling on behalf of the CEO. But I already had my new position at that time, and with no desire to return to such an unfriendly environment, I turned him down.

Knowing as I do now that good front end developers are hard to find, and hard to keep, I’d like to think that karma took care of this for me, that they weren’t ever able to find someone to replace me. I don’t know what actually happened, so I comfort myself by thinking that ignorance robbed them of two of the smartest and best employees they ever could have hoped for.

What is the right way to handle blatant discrimination like that? We stood up for ourselves. We stuck around and weathered the storm. We spoke up and let people know what was happening. But nobody did anything. It was just allowed to continue. I think we’re all under the impression that all it takes is calling attention to what’s going on. But I know first hand, that doesn’t always work. What do you do when speaking up doesn’t fix the problem?

Sketch Letter A

Capital A - Color

I started creating some sketch letters on post it notes while I was sitting at my computer waiting for files to download or upload or assorted processes to run.

Here’s the first in the series: A


Sketch Letter A B&W

Capital A in black and white

Capital A - Color

Capital A in color

I’m releasing these under a Creative Commons Attribution-ShareAlike 3.0 License. They might make fun drop caps for the right design or could inspire you to create a whole alphabet.

Other letters in the series:

Creative Commons License
This work is licensed under a Creative Commons Attribution-ShareAlike 3.0 Unported License.

Have fun! And please drop me a line or leave a comment if you use them.

I Have the Smartest Clients in the World

One thing I’ve heard over and over again throughout most of my life is, “You should be a teacher.”

I’d usually cringe when I heard that. When I think of a teacher, I think of being overworked and underpaid. Of standing in front of a classroom of children who have no interest in what you’re trying to teach them and who only think of you as a nuisance when you have their very best interests at heart. No thank you.

Not that I don’t have the utmost respect and admiration for teachers. They are some of the most amazing human beings on the face of the earth and they deserve our undying support and devotion. And a tremendous pay raise.

I have some traits that would make for a good teacher. I love learning and reading. I like helping people. I’m patient. I have an understanding of different learning styles and am usually pretty good at trying different ways of explaining something until it clicks.

What I’ve learned is that if you’re meant to do something, it’s going to find you. What I’ve also learned is that you can still do your something on your own terms.

Over the years, teaching and I have had a few meetings. In high school, I volunteered to teach an arts and crafts class for kids. I signed up with the learning center at my university and tutored other students in subjects they were having trouble with. I volunteered with a literacy organization, originally wanting to teach an adult to read, but they had a greater need for teaching English to immigrants, so I got free ESL training and taught English to a Kazakhstani family. I worked briefly at a branch of Michael’s craft stores as the Event Coordinator, which involved leading demonstrations, teaching the Kids’ Club weekly craft project, teaching a knitting class, and teaching crafts to kids at birthday parties.

Lately, I’ve been interested in focusing my passion for web development and design into teaching. In my freelance work over the past six years, I’ve mainly been building web sites for small businesses. Over and over again, I’ve met small business owners who were being taken advantage of by people or businesses claiming to be taking care of their web sites. I had one client have her site black-listed from Google after she unknowingly hired a black hat SEO company to boost her rankings. I had one client whose web host had told her that he owned her files and that it was illegal for her to move her web site to a new hosting company. One client was paying $150/month in hosting for a small 5-page brochureware site.

These kinds of stories break my heart. I know first hand how much small business owners sacrifice for their businesses. A web site has become a vital tool in promoting a small business and an online presence is increasingly important for winning trust and new clients.

These business owners are trying to do what’s best for their business, but they’re missing most of the pieces of the puzzle. They’re not sure who to hire, exactly what that person should be doing, or how much they should be paying them. They have no tools for evaluating the skills and expertise of a web developer. They get advice from practically everyone they meet, telling them they should be using Twitter, their site should be search engine optimized, they should get their site on Digg, all kinds of things – and they have no way to determine if the advice they’re getting is good or bad, useful or harmful.

So I’m stepping in. I took over the Los Angeles WordPress Meetup group and have been offering workshops and facilitating discussions between experts and beginners. I’m also working with some partners to found a cooperative of creative professionals called Purple Pen Productions, and part of our mission is education. To that end, we’re sponsoring workshops, teaching small business owners and individuals the things they need to know to have a successful web presence. Our first workshop, Help! I Need a Website will be held on September 10, 2009 at Loyola Marymount University. RSVP to attend.

I’ve also submitted a panel proposal to SXSW. In case you haven’t heard of it, SXSW is one of the largest interactive conferences, where geeks from the world over come together to learn from one another. It happens in Austin, Texas each March, and the 2010 conference will mark my fourth year of attendance.

My proposed panel is titled “Smartest Clients in the World” and I plan to encourage lots of other people like me who are in the know to educate and empower small business owners so they, too, can make a wise investment in a web site and online presence that is a perfect fit for their business at a fair price. Won’t you take a few minutes to vote for my panel so my chances of being picked are greater? You must create an account – without it your vote won’t be counted – but it only takes a moment and you won’t be spammed.

Thank you for your support.Православни икониКартиниИдея за подаръкикониикониПравославни иконииконописikoniсвети георги

Everything is Amazing

I’m making a conscious effort not to get bogged down in negative thoughts and to notice all the good things. I’m starting to notice all the ways different people around me are making this effort too.

Humorously, comedian Louis CK tell Conan how much we take for granted:

The Weepies sing about being simply overwhelmed with Beauty:

My favorite lyrics:

“All this beauty;
You might have to close your eyes
And slowly open wide
All this beauty;
We traveled all night
We drank the ocean dry
And watched the sun rise.

I can see you’re new, awake
Let me assure you, friend
Every day is ice cream and chocolate cake
And what you make of it
Let me just say
You get what you take
From it, so be amazed…”

And then, I keep stumbling across this concept of “First World Problems”. I’ve been noticing that all of my problems are first world problems, and somehow that makes them seem more manageable and less dire. Work doesn’t stress me out as much when I remember to be thankful that I have a job, that I have a paycheck, that I can pay my rent and buy groceries and pay my utilities, that I have a car at all, that I have internet access, that I’m surrounded by dear friends who are rarely more than a phone call, a text message, an IM, or a Facebook poke away.

So that’s my message for today – start looking around you at everything that is beautiful and amazing. Or else you might miss it.икони

The secret of the date bars

My grandmother was famous for her date bars. They had a yummy crust, sticky date filling and streusel topping. She brought them everywhere she was invited – to family reunions, Thanksgiving dinner, summer picnics, church get-togethers. They were delicious. People would even request them when they invited her. “We’re having a picnic at the lake on Sunday. Will you bring your date bars?”

She never gave anyone the recipe. It was her secret. No amount of begging, pleading or cajoling could get her to even hint at the ingredients or the temperature of the oven.

Sadly, several years ago, she passed away from cancer. She is sorely missed by everyone in my family.

While cleaning out my grandmother’s home, my mom opened a bottom corner cabinet, and hidden in the back were dozens of boxes of Betty Crocker date bar mix. My stepdad was in another room, cleaning. My mom said nothing, and packed the date bar mixes into a box, labeled it something else and took them home with her.

She waited until my stepdad was out to make a trial batch of date bars. As soon as they came out of the oven, she tasted one, and sure enough – these were my grandma’s famous date bars! She cut them up, arranged them on a plate, and left them out for my stepdad to find. He was so happy when he came home. “You found my mother’s recipe!”

He ate them all up. My mom would occasionally pull out one of the boxes and make it, but she never told my stepdad the real secret of the date bars.

Betty Crocker has since discontinued the date bar mix. I have no idea how my mom has explained that one.икони