Yesterday when I came home from co-working with Andrea (all WCSF, all the time, that’s us), I was surprised to see a crow sitting in my front yard. You don’t usually see crows sitting on the ground, so at first I thought it had been injured — despite repeated pleas from the Audubon Society and the American Bird Conservancy for people to keep their cats indoors, there are a lot of free-roaming cats in my neighborhood. I walked toward it to check (I grew up with an endless stream of injured wild animals being rehabbed thanks to my mom and grandparents), but it stood up and started walking around.
a crow in the front yard
As I got even closer it finally flew away, and I went about my business.

This morning I walked over to the coffee shop on the corner while it was still dark. When I came back the sun was up and I saw something dark in the yard in the same spot the crow had been sitting in the day before. It was the crow again. I thought maybe it was sick or stunned, but I could walk right up to it and it was not moving — neither the tremble that goes with the trauma stillness so common to birds, nor any movement indicating breathing. So I guess it died. Why it came back to that same exact spot I have no idea. It didn’t really look like it had fallen out of the air while flying, it looked like it had been sitting there again and keeled over (though I suppose Jasper the neighbor cat might have had a hand in it, I didn’t see any obvious attack signs).

They say finding a dead crow on your lawn is a sign of good luck, because crows in general are an omen of death and misfortune. I happen to really like crows and don’t think of them that way (possibly because of nursing a crow back to health with my family when I was a kid). To me it just means I have to dig a hole (note to self: buy shovel since SE Tool Library not open until weekend) and bury the bird. That said, I have a couple of trees arriving this weekend that I’m supposed to plant anyway, so at least one of them will get some good fertilizer.

Ways Men In Tech Are Unintentionally Sexist

Jen Mylo:

Kat just saved me a couple thousand words.

Originally posted on this is not a pattern:

A friend of mine posted this on Twitter:

I really respect the amount of self-awareness it takes to ask that question! It’s easy to disavow the trolls sending rape and death threats, but it takes much more courage to acknowledge that you might be perpetuating harmful attitudes in less-obvious ways.

[Author’s Note: I felt like it was important to establish some context, but you can also skip the 101-level discussion and jump right to the list.]

This question hints at two important concepts: implicit biases and microaggressions.

We have all internalized harmful stereotypes about women — it’s part of growing up in a culture that inculcates gender roles from a very early age. Our culture has deeply-embedded patriarchal power structures (ditto racist and classist and ableist and transphobic and homophobic…

View original 2,602 more words

Site Setup Journal: Act II

Act II: Setting Up WordPress

Previously in Site Setup Journal: Prologue and Act I: Domains and Hosting.

One-Click Install Attempts

1-click installs are totally the way to go, right? I mean, 1-click sounds faster and easier than the famous 5-minute install that you get if you do it manually over FTP (according to the Codex). I immediately go into the Dreamhost control panel and went for a 1-click.

Screen shot 2014-10-05 at 6.36.55 AM

Okay, so 1-click, but 10 minutes. That doesn’t seem right, that it should take twice as long for the automated 1-click install as for a manual one. Well, too late now, right? Guess I’ll go feed the cats while I wait.

I have to kill a little more time than just feeding the cats, but eventually I get an email from Dreamhost telling me my WordPress install is ready for me, and linking me to install.php to set up an admin user and get going. I click the link and get a white screen. Hm. Try again. Hm. Open up FTP to see if the files are there, and they are. Start wondering if maybe 1-clicks can’t handle being in a subdirectory (where I’d put it), so think I’ll try another one in the root. Same thing, the 10-minute notice. Set up web email for the domain and send a test email so I can see if it’s just the website, or if it’s everything on the domain. Webmail is also whitescreened. Hm. Status on Dreamhost says my server is going to be getting some software updates and will be offline during this maintenance, but it doesn’t look like I’m in that time window. I get a 2nd automated email saying the 2nd 1-click has failed. I head into the support section.

The Live Chat support option shows as available, but when I click it it says that due to heavy activity there will be a 5-hour wait. Come on, just take down the Live Chat option when it’s 4am and you don’t have people on staff. I send an email, then another (first one re white screen, 2nd re install failure). In the meantime I start scrubbing through the Dreamhost support wiki.

I find the answer to the 2nd install failure before support gets back to me. Apparently, 1-clicks don’t work if there is anything in there already. So since I already have a subfolder in the root domain (from the 1st 1-click), trying to do a 1-click into the root won’t work. I have to empty it out first. That doesn’t make sense to me, but whatever. I wind up deleting everything via FTP and doing a manual install instead. Two, actually.

Manual Install

Well, then, back to the!

Screen shot 2014-10-11 at 8.04.50 AM

The “handy guide” is the Codex’s installation instructions page. Let’s take a look.

Before You Start

Screen shot 2014-10-11 at 8.22.15 AM

1. Minimum server requirements. As it happens, I had checked the php version stuff when I re-upped the hosting account for this domain, and had upped the version of PHP. Someone setting things up without my account gymnastics wouldn’t have encountered that, though, so I set out to find my hosting versions as specified in the ask-for-it text on the requirements page on

  • PHP 5.2.4 or greater
  • MySQL 5.0 or greater
  • The mod_rewrite Apache module

I log into the Dreamhost control panel. I look for a navigation label that says something like hosting environment, version information, about, etc. Don’t see anything. Click into Manage Account, nothing. Click into Manage Domains. Oh ho!

Screen shot 2014-10-11 at 8.28.41 AM

Clearly I’d only upped the version on the one domain, not both on that account, but even so, I can see that the php versions are both above the minimum requirement to run WordPress.

Next up, MySQL version. Clicking the MySQL Databases navigation item seems the most likely, so I do. Nope. No information shown here about MySQL versions. You’d really think you would see that on the page labeled MySQL Databases, wouldn’t you? There is a link on that screen to phpMyAdmin, so maybe I can find it there. Wait — Authentication Required!

Screen shot 2014-10-11 at 8.39.09 AM

Bah, which username and password combination does it want? The hosting account (server?) or a database user? A note here saying which password is needed would be helpful. I can’t get in with the ones I know off the top of my head so I close out of that and go back to the main Dreamhost control panel (the phpMyAdmin attempt had bumped me into a new tab). In the search box at the top, I type “MySQL version” and hit enter. The page refreshes, but I’m still on the MySQL Databases page where there is no version info displayed. I think maybe there’s some documentation with version info, so I look for support.

Now, having been around a long time, I know that Wiki, a small link in the upper right corner, means documentation. But a lot of people don’t (I doubt my mom — the most recent person to ask me to set up a site — would), so for the sake of the experiment I go looking for a Help or Docs or Support link. I find it (Support) in the bottom left navigation after scrolling down (below the fold), because for some reason the “Goodies” navigation section is open. Why? Because apparently that’s where the MySQL Databases page actually lives, despite being in the navigation up above as a top-level item. Come on, Dreamhost, who’s your information architect, and what are they doing?

Anyway, I click on Support. It drops a layer with 3 options. Contact, History, and Data Centers. Why not have a link here for Wiki (or better, Documentation, which is less jargony)? Hmph. If you do click on Contact Support, it takes you into a form. There’s a live chat button, but no links here to documentation either. Hm, what’s this “Help is Off” button?

Screen shot 2014-10-11 at 8.48.09 AM

I decide to click it. Then I see this:

Screen shot 2014-10-11 at 8.48.47 AM

Oh, how handy, a link to documentation and forums. Why it’s even optional to hide that text is ridiculous. Anyway, to the wiki!

On the Wiki Home there is a nice little menu, and MySQL is listed there, so I click it. I come to another list of topics. None of them say Version, so I start clicking them in the order that makes the most sense. MySQL and PHP does not have version info. Neither does phpMyAdmin, but it does tell me that the authentication password request was for the database user password. Upgrading from MySQL 4.1 to 5.0 tells me that, “DreamHost is currently slowly upgrading your MySQL servers from version 4.1 to 5.0. You can also email support and request they upgrade your databases. There are some incompatibilities between versions 4.1 and 5.0, particularly with JOINs. This upgrade could cause some breakage of your application(s).” It does not say how to tell which version you are currently on. At this point, some people might email support, but I think a lot would just shrug and decide to take a chance and hope they were already on 5.0. So I do that. Because let’s face it, any host that is listed on had better be running the minimum requirements, right?

Mod_rewrite! Since I’m already in the wiki, I do a search for “mod_rewrite Apache module,” the last item in the ‘email your host” list. The 4 search results are not helpful in any way. I remove “Apache module” from the search term and try again. Lots of results, none of them helpful. I decide again to shrug and assume, because this documentation is for the birds when it comes to confirming minimum requirements, and who has time to wait for support emails? Not me!

Around now I get an email from support about my earlier white screen issue. They say that it’s because the DNS hasn’t finished replicating. I might add that there’s a “works for me” comment in there that makes me purse my lips. But I stop to think about DNS. Yes, in the past I’ve had to set up a temp site on a dreamhosters subdomain if I wanted to work on a site before DNS caught up. Pain in the ass, yeah? Having to then do a move once the real domain is showing up? I hadn’t thought about that this time because the GoDaddy registration of the domain had been pointing at Dreamhost servers all along. I guess the hosting being down and then up created a DNS interruption. It was not explained to me satisfactorily, but I move on. Specifically, to step 2 of preparing for the install.

Step 2. Download the latest release of WP. Easy. Go to, click the big Download button. Oh, okay. That wasn’t really a download button, that was a navigation link to a download page. Okay. I skim the content in the middle and go to click on the… oh, that button at the bottom of the content area is to find a mobile app, and goes to a site at That’s not right. Oh, there’s the real download button up in the sidebar. It seems like those should have been switched, but whatever. Click! Download! 6.3MB, it takes 7 seconds.

Step 3. Unzip the file. Also easy. Do Show in Finder from the download bar on the bottom of my browser, double click the file, see the wordpress folder appear. 3 seconds.

Step 4. Secure password for secret key. Click on the link to read about it. Get distracted by the big-ass blue-i information icon alert at the top that says, “Interested in functions, hooks, classes, or methods? Check out the new WordPress Code Reference!” Why is that following me around on every page of the Codex? For someone installing WordPress for the first time, that is not helpful. At all. Further, there’s no x to dismiss the box, so if I’m not interested, I still have to scroll past it every time, and it pushes the content farther down on the page, not to mention making me feel like I’m probably not in the right place because they obviously think I am way technical. (Tangent: People keep saying that the fold is dead, but I think they are wrong.) Anyway, I’m already confused. I clicked on a link that said  Secure password for secret key, but I don’t see that language on this page. It doesn’t anchor link me to the specific section I needed, so I guess I have to read this whole page? With multiple mentions of passwords but no headlines that say secret key? I command+f to do a search for text on the page, which shows that “secret key” is mentioned in the section titled Security Keys. Hmph. Would a little consistency here be so much to ask?

Read the section. Questions that should be answered in this section before jumping into the history of adding stuff.

  • What is a key?
  • What is a salt?

Then it shows what secret keys look like from the online generator. Cool, I like online generators. But the wording all over is inconsistent and confusing — is it one secret key, or four, or eight? And where do I set a secure password for the key (or keys)? I don’t understand this! So! Many! Words! Used! Indiscriminately!

I cheat and use the fact that I know what all that confusing language means, and what it wants, which is simply the block of generated keys and salts, not a password for them.

Step 5. Print this page. So I have it handy during installation? I’m thinking this list was written in the days before browser tabs, because why would I print it when I can just keep a tab open? Silly directions. But! On to the actual install!

Famous 5-Minute Install

That sure was a lot to do before doing the install, but I’m ready now!

Screen shot 2014-10-11 at 8.06.30 AM

Download and unzip — check. This step, which was 2 of the steps in the Before You Install list, took under a minute total, about 20% of a 5-minute install.

Create a database and a MySQL user — check. This takes a couple of minutes. I have to log in to the hosting panel, locate MySQL Databases in the menu, and scan the resulting page to orient myself. The first thing on the page is creating a new hostname, and the WP instructions didn’t say anything about creating a new hostname. Below that is create a database, which has fields to create the first user at the same time. There’s no instruction on the difference between a database user, an ftp user, and an account user. I go ahead and made new host, db, and user (and while I’m in there I delete the databases left from the aborted 1-clicks), but I think it would intimidate someone who hadn’t done it before and didn’t really know what a database was in relation to a hosting account or a website. This takes me a minute or two, but would probably take someone who’d never done something like this a little longer, maybe up to 5 while they tried to grok the setup page on the host panel.

Edit wp-config.php — check. This step is labeled optional, but I’m not sure why. If you click the Editing wp-config.php link, it says WP will create the config file for you from info you enter, and that turning wp-config-sample.php into a real wp-config.php file is for advanced users. If it works fine to have it be auto-generated, then why have this step in there at all? If it’s really better to do it manually, then why have the auto-create version? In any case, I’m used to editing the config file at this step, so I do it. Takes a couple of minutes because I had to go back and forth between tabs and copy/paste stuff. I happen to have Coda installed so the file opened in that program, but normally I’d have used textedit.

At this point I’ve passed 5 minutes.

Upload files via FTP — check. I open Transmit and start the transfer. It takes twelve minutes. Why? My first guess is that it is shipping with 3 default themes now, all with retina-ready images. But I don’t know, I could be wrong. I know I don’t need all those themes, so I delete Twenty Fourteen and Twenty Thirteen while I’m in FTP, and plan to start out with Twenty Twelve.

Tangent: Why do I want to start with Twenty Twelve? I think Twenty Thirteen is really aimed at bloggers and it has an overwhelming brand/design to it. The site I’m making is for a class, and needs to be chill. Twenty Fourteen I just personally don’t like, for the same reasons I don’t like the general mp6 coloring/style, which I’ve posted about elsewhere before.

Run the script at the URL where you installed — screeech! Screech to a halt here, because I wind up on another white screen. Side note: the instructions say to go right to the root URL, not to install.php directly (like the 1-click email tells you). Are they two different locations? Does install.php automatically load at root? Bah.

I go ahead and do a second manual install, so now I have one in root and one in a subdirectory. White screens on both. So it seems that the DNS stuff is really going to hold things up. I decide to go to school and finish it off when I get home that night.


Stay tuned for the exciting conclusion in Act III, which will cover finishing the WP install, installing BuddyPress and other plugins, and setting up BuddyPress.


Passion Flower

passion flower

I live a block from Albina Press (Hawthorne location), a coffee shop that has a reputation for brewing Stumptown coffee better than Stumptown. When I walk there, I always pass this house with a great passion flower vine that covers their fence. Passion flower has been used effectively to treat anxiety, coming out as effective as some pharmaceuticals. I haven’t used it for that; I just think it’s pretty.

Site Setup Journal: ACT I

ACT I: Domains and Hosting

In Site Setup Journal: Prologue, I set the scene for an ordinary website setup project. The plan: re-up a hosting account gone dormant, make sure the registrar is a domain pointing there, install WordPress, add a few miscellaneous plugins, install BuddyPress, do some configuration and maybe a little theme tweaking, and then have a nice private group site for the students of a class I’m in. Simple, right? I figured maybe an hour or two. Boy, was I wrong.

Once I removed the option to ping knowledgeable friends and get a fast, accurate answer to any question (a privilege I appreciate even more after this experience) and had to rely on public documentation and support services, I re-discovered just how woeful they are. I’ll try to describe each of the steps I took.

Step 1. Getting a Domain

An average person creating a new site would need to buy a domain, but I knew I had an unused domain sitting around from when I used to freelance, so figured I’d save the money and the addition of another domain (because the class site might get moved to the school site eventually). I had hosting accounts on both Bluehost and Dreamhost, but wasn’t sure where I had hosted  the domain I had in mind.

First I logged in at Bluehost. The hosting account had been deleted in July, which I hadn’t realized because the email address was one I no longer check, tied to an old business. The domain listed wasn’t the one I was looking for, though, so I went over to Dreamhost. I had to do some login gymnastics there also, because I’d had two accounts there, and as it requires login to be an email address/customer ID rather than a self-chosen username, I had to try a LOT of times to get the right combination of email and password and domains (I’d had accounts under 2 email addresses because one was for helping non-profits get sites set up). Finally after resetting passwords on the emails still in use, I got in. The non-profit account was still active, but I wanted the paid account for this project. In retrospect that was unnecessary, since the school is a non-profit, but oh well. The paid account had also expired over the busy summer. This one I did vaguely remember seeing emails about, but had never taken the time to go and do the login hoop-jumping to pay for the coming year because I was busy with work. I paid to re-up the hosting account, and it was back in business.

The domain was still listed there, so I wanted to make sure the registrar was still pointing at the Dreamhost nameservers. I went to Namecheap first, but it wasn’t listed there, so I had to check GoDaddy. I have a couple of domains there still that I hadn’t transferred yet due to timing around expirations. I couldn’t log in because I didn’t remember my password (hey, lots of people don’t use password managers). I went through the reset process, and got access. A domain I’d been registering for my brother had apparently expired (oops, another victim of my changed-email status), but the domain I wanted to use for the class was still there, and it was still pointing at Dreamhost.

I wasn’t keeping track of time, but I’d guess this all took about 30-45 minutes of going back and forth between sites and emails (often not instant but instead a few minutes later, or later, or later.

Summary: Requiring email address and/or customer number as login instead of allowing user-selected username does not result in a good user experience. Only doing password resets via sending to the email on the account does not address the reason why a lot of people need help resetting a password, which is lost access to the email address on the account. User-selected security access phrases or questions are a more user-friendly path to password reclamation.

Stay tuned for Act II, Setting Up WordPress. This is when we get into the fun stuff.

Site Setup Journal: Prologue

I think that most of the people involved in creating software for the web have completely forgotten what it’s like to navigate these waters, and that “our setup is so simple!” statements are in general full of crap. Over the next few days, I am going to try to set up up a website on a domain I own using only the documentation and support available to the average person (who doesn’t have access to lead developers and heads of support teams). Is this decision predicated by the fact that none of those people were around when I tried pinging them today at 6am? Well, yes, yes it is. But given the frustration level I have encountered in the first 2 hours alone, I am glad they’re not around right now. I’ve been setting up websites since 1999, and I think we are making the process harder, not easier.

Get ready for some painful descriptions of just how janky all our product flows and documentation are. I know I’m wincing.

I’m thinking this will wind up being the equivalent of a play in 3 acts, but I could be wrong — it depends on how complicated things get.

Screen shot of unavailable webpage


A quiet home in the Pacific Northwest featuring cable internet with advertised speeds of 25Mbps down/10Mbps up. A comfortable bed with pillows propped against the headboard, against which our main character lounges at the opening of Act I, equipped with a MacBook Air circa 2010, an iPhone 5s, and a debit card.

Cast of Characters

Jen Mylo: An average web user trying to set up a site for the first time.

GoDaddy: The registrar holding the domain [Ed. Note: Legacy registrar; I’ll switch it to namecheap at some point before it’s time to renew].

Dreamhost: A web hosting company that Jen Mylo has loved forever and that employs one of her favorite people as their resident WP expert. They were hosting non-profits for free before it was cool.

WordPress: An open source content management system you can use to run a website. Claims a famous 5-minute install, “well-known for its ease of installation.” Rumor has it this web app is made by a bunch of weirdos.

BuddyPress: An open source WordPress plugin that creates a social network on your site. Also made by weirdos.

Rivermark Community Credit Union: A community credit union in Portland, OR that likes to do everything online; where Jen Mylo keeps some of her money.

Stay tuned for Act I!

Real Names on Facebook; A Vote in Favor

Trigger warning: mentions of physical and sexual abuse

Most of the people in the web industry, and especially in the diversity outreach circles, hate the Facebook “real names” policy. They say it prevents free expression, self-determination of identity, and privacy. While I have sympathy with some of the arguments, for the most part I support wanting real names. There’s a difference between lying about who you are and using a nickname or stage name. For example, a performer using their stage name on Facebook rather than their birth name seems logical, even if they haven’t gone to the trouble of legally changing it. A nickname that’s been in use for a long time and is more recognizable than your legal name — same thing. If you can show that the different name is what you typically go by, I think it should be allowed. Ditto for anyone who is transgender and still in the process of establishing a new name identity (or hell, anyone who’s using a different name and just hasn’t jumped through the hoops to legalize the change yet). As someone who has changed names twice, once just through common usage and once legally, I get the complications that name-dissonance can cause, and I don’t think Facebook should force people in those situations to live or die (at least on by the name on the birth certificate. But: kids!

I didn’t write about it here (though I alluded to it on Twitter at the time), but in 2010 I helped put an online sex predator in jail. I was at that point a primary caregiver of teenage girls, and thanks to a broken wifi card, a forgotten logout, and the fact that we were using the same gmail color scheme, I happened into email not meant for me. I was pretty horrified when I opened the first one; its references to what the guy wanted to do to various of “my” body parts were so far out there that my first reaction was that I was being trolled by someone. A second look told me it was intended for one of the teenagers, and that it was part of an ongoing thread, all of which was pretty graphic on his part, pretty blasé on hers.

After investigating the emails in the account, I started googling, and I found him on a site called Kupika, with a list of 300+ girls that he had relationships with, including an icon-based guide to how well he knew them, what level of naked pics and/or meetings he’d had with them, etc. There was also a VIP Calendar Girls room that required special access. There was a giant collage in the middle of the page, and when I saw a picture of my teenager, I flipped. I changed all her passwords that I could (since he was also on Facebook and her other social networks) and screamed for her to GET IN HERE.

As it turned out, this guy had been writing to her since elementary school, and had been grooming her for YEARS until she hit the age of legality in her state for sending naked pictures, at which point he made requests very specifically to keep him on the “right side” of the law. Now, sure, kids go through family crap and need outlets when the world seems unfair. In my generation, that meant crying in the bathroom mirror and reading Sweet Valley High novels. In this generation, that outlet is more likely to be online and/or over texts with strangers. It’s really scary. The guy in question’s profile said he was a hunky 19-year-old from California…what teenage girl wouldn’t want that guy to be her escape? But when I put Google to work (reverse engineering from his username and email address), I discovered he was a lawyer in his 40s who’d been excommunicated from the Jehovah’s Witnesses (How bad do you need to be for them to kick you out? The articles I found told me — really bad!), and a schlubby one with bad hair, to boot. He was also about to be disbarred.

cartoon showing dogs at a computer, captioned, "On the internet, nobody knows you're a dog."The anonymity of the internet is one of the things that appeals to a lot of people. But what if you’re not looking for an anonymous escape, you just want to use the technology to facilitate honest communication? We’re forced to assume that anyone or anything on the internet might not be for real, in a constant state of distrust. I have to think that is doing something to our collective psyche.

That guy? I worked with the LAPD, who’d been trying to catch him for years but had never been able to trip him up, and we got him. I won’t go into details, but basically there was a sting, he was arrested in a mall food court for traveling to have sex with a minor, and then they found all kinds of nasty on his computers and phone. He was sentenced to 6 years in Chico, one for each girl who was listed in the complaint (based on their parents finding out and reporting it, I believe).

So yeah, I like the idea of a social network, especially one that started out being for students and requiring a .edu email address to gain access, wanting people to not lie about who they are.

But it’s not just kids who get duped.

It was recently brought to my attention that my aunt had friended someone on Facebook that turned out to be my 1st stepfather, aka the abuser who molested me and beat me with a hairbrush every night when I was five years old. Insert family drama here, but it came down to my aunt saying she didn’t know it was him. Why? Fake name on the Facebook account. Why would she suspect that Elly Medina was actually Nicholas Nitura, 7-month husband of her sister back in the 1970s, and doer of all evil deeds? No, he’s not transitioning, the photos in the timeline show him as the same guy he was 35 years ago, but with more belly and less hair. I saw that he asked on the timeline if I (using my new last name) was her niece, and it sent me straight into PTSD relapse. So that was awesome. And then today, he left a comment on this blog — MY BLOG — in response to that picture from the Park City chairlift that I posted a week or so ago.


screenshot of comment notification

A) I guess he figured out I am me, and now he’s coming onto my site? B) What does that ‘two men and a woman’ thing mean… is he trying to imply he had something to do with creating beauty and tranquility in me? The only thing he created in my family was a bunch of fucked-up kids, a traumatized mother, and furious grandparents who spent years trying to undo the damage he did. C) What the fuck?! 

Cue the PTSD! So it happened again, while I was working this time, and I had to leave the coffee shop where I was co-working with a friend because I was pretty sure I was going to cry or have a panic attack (or both, or something else).

If he’d been using his real name on Facebook, then theoretically my aunt wouldn’t have accepted the friend request, he wouldn’t have had access to her family list, he wouldn’t have asked about me, he wouldn’t have found my blog. Okay, sure, people with good google savvy could do it pretty easily, but that’s not this guy. So, yeah.


  1. Monitor your kids’ internet activity. Know what the hell they are doing online, and who they are doing it with. If you would want to know where they are and who they’re with in person, don’t make the internet a big giant loophole. Even if they seem sweet and innocent. My teenager had been introduced to this guy on Kupika by a sweet Christian drama club girl at her school that could do no wrong.
  2. Real names are good.
  3. Don’t accept friend requests from people you don’t know just because you want to have a lot of “friends.” If they won’t bring you soup when you’re sick or pick you up from the airport, they are not your real friends.
  4. Child abusers are bad.
  5. Online sex predators are bad.
  6. Both deserve to rot in jail, but most don’t.
  7. Coda to #1.