12.16.2017

Finding Your Zen for the Holidays in Spite of Everyone Else

I'm really fortunate in that this year I will be spending another Christmas with my amazing significant other, and doubly so that his family is joining us for the New Year. There's even a good chance that my parents will be here, too, and while in the past this may have been something of a mixed blessing, I'm proud to report that we are all in the process of checking ourselves before we continue to wreck ourselves, so this is now something to celebrate, although it's slightly terrifying that my mother and I are now each other's Sane Person.

In short, it's shaping up to be a good holiday. A busy one, and I'm trying to avoid thinking about what it's going to be like to make menus and cook and clean for that many people without incapacitating myself, but as the anxiety starts to rise it really helps to remind myself that they're good folks, Brent, and they're not like my first ex's family who hated me largely because I was Jewish.

...Let's just say I've had plenty of crappy holidays before this point.

I'm still trying to come back from previous years. It's all a matter of re-learning that just because my ex-mother-in-law called me trash for microwaving frozen vegetables and I once had my head put through a wall for daring to have chipped nail polish during a religious holiday service does not mean that's going to happen again. For a long time, I hated the holiday season and just wanted to hide in my room until the festivities were over; it simply wasn't safe to do so before then.

There is still one person in my life and the lives of my loved ones who I sincerely wish was not there. Unfortunately, I'm not in a position to remove them, although I would love to do so, preferably through a plate glass window on the top floor of Nakatomi Plaza. They will not be coming to our home for the celebrations, but I will still have to see them at least in passing, and their continued existence on this planet is enough to send me into heart palpitations. I have lost sleep over how much I despise this person due to their abusive, narcissistic behavior and the way that they keep being rewarded for it. Yes, I am a tiny ball of anger with a history of going what scientists refer to as "ape-shit" on those who cross me or the people I care about. I tried a yoga-and-meditation class once and had to leave early because everyone seemed so smug about how peaceful they were that I was feeling that familiar twitch in my right eye (I have since determined that I was just in the wrong yoga class for my personal needs). The thing is, I would probably not do well in federal prison, and chances are that neither would you. So how do you keep it together without the felony assault charge, especially during the holiday season, when stress levels are sky-high and you're face-to-face with whatever bigoted uncle or body-shaming aunt has tormented you since childhood with nowhere to go?

I'd like to point out here that I'm not a mental health professional, nor do I claim to be, although I'm pretty sure I've paid for college for the children of several of them during my lifetime. These are simply things I've found that help me, and maybe they'll help you, too.

The Most Important Thing: Someone Sees You, and Your Feelings Are Valid

Sometimes it feels like you're screaming into a void, especially when you've made your feelings about a particular person known and you still find them on the invite list for Christmas dinner. How many times have people told you you're being ridiculous or that you just need to calm down and count to 10, as if either of those things have ever actually brought anyone back from the brink at any point in time ever?

Feelings are not the enemy. We all have the right to feel whatever we please. We are not weak for being scared or sad, and we are not broken for being angry. If someone or something sets off those alarm bells inside your head that say "DANGER, DO NOT WANT," there's a reason for that, and it is a valid reason. Period. Why some people want to tell us otherwise is beyond me, but I imagine back in caveman days, their ancestors were the ones telling Glorg to stop freaking out because there were definitely no hungry wild animals hiding in the tall grass and were then summarily mauled to death while Glorg high-tailed it back to his cave to stress-vomit for another day.

You're not alone, as you may have gathered from my lead-in. I get it. In addition to the current source of toxicity in my life, I've cut multiple friends and family members in the past from my life for similar reasons, although not without a lengthy waiting period and plenty of suffering around it. I know what it's like to be in that limbo and I know what it's like to not have anyone you can go to about it. If you have nobody else you can talk to, talk to me. There are contact links at the top of my blog, or you can leave an anonymous comment, however you're most comfortable. I'm here for you.

You Don't Owe Anyone Respect

The corollary to feelings being valid is that unfortunately, we cannot go punching people in the teeth all willy-nilly. The only thing we need to control is how we express those feelings. While going up and over the table at Racist Aunt Millie may feel pretty cathartic in the moment, the consequences to those actions will cause us more trouble than they're ultimately worth.

Note also that I'm saying us and not them. If someone has treated you like crap for your entire life or makes you feel unsafe or bad about yourself, they do not deserve your consideration. Consider yourself. Go with the bare minimum of civility. Put Vaseline on your teeth if you need to keep a polite smile up. Do exactly enough to keep yourself as far from the center of any drama as possible; remember, if you're the one who's being polite and not ranting and raving, you aren't the one who looks like the jerk.

We're taught as kids that everyone older than us automatically deserves respect and that rebelling against them makes us Bad People. The problem with this mentality is that it's too general. By that logic, we're doing something wrong by standing up to abusers or making our own choices about who we want to allow in our lives. I use a modified version of it: everyone starts off with my respect, and then keeps it or loses it based on their actions. Once respect is lost, it's incredibly hard to get back -- as it should be. If you don't want to talk to your biological father because he was and still is a violent drunk, and you have determined that forgiveness is not in the cards, that is completely your right and your decision, and you are not a less kind person for it. Being kind does not mean being a doormat.

Worst case scenario, I grew up in the South. "Bless your heart" and "I'll pray for you" are two of the most devastating insults you can throw at someone while maintaining the guise of politeness. If, however, your family is Southern, the magic here is sadly lost and you should not say these because they'll know you're really telling them to go pound sand.

You Are (Probably) Not Under Any Real Obligation To Go

Guilt is a harsh, harsh motivator. My grandmother is the master of the Level 3 Guilt Trip. I understand that not everyone has a passive-aggressive old Jewish woman from Queens to help them develop an immunity to guilt, so let me put it bluntly: unless your life would be in danger by not going to dinner, or they're threatening to cut off vital assistance if you don't go, or a very tiny number of other edge cases, you do not owe anyone the pleasure of your attendance.

There are plenty of good excuses that don't involve flat-out telling someone that they suck and you hate them:
  • I'm too sick to go -- that holiday flu is awful, you know
  • I have to work a mandatory shift
  • I already made other plans which I can't cancel
  • It's too far to travel (probably only works if they actually live far away and not, like, down the block)
If you're confident enough to take a stand and tell them exactly why you don't want to go, good on you. Do it. They will huff and puff and stomp their feet and act much like a child throwing a temper tantrum, and then they will get bored when they realize that they're not getting their way or the attention they so desperately crave and move on.

In the event that you do really need to go, reach out to a trusted friend. Let them know the situation and ask if they can be your rescuer in case things get really bad. Worst case scenario, leave early, even if that involves having them call you with a pretend work emergency or something similar to give you the excuse. I've walked out of a bad home situation and walked down the side of a major freeway while sobbing to a friend to please come pick me up on more than one occasion. That's the great thing about friends: they're friends.

And honestly, if you can't get past the guilt and go anyway? That's okay. You are not a loser, or a failure, or weak. You are doing what you need to do to survive no matter how awful it is, and that is an admirable thing.

Remember That We Get What We Give

Warning: this one is easier said than done.

Call it karma if you want, but terrible people who do and say terrible things usually do not end up having happy lives in the end. It may seem that they're getting everything they want out of life, but eventually the sort of folks who are absolutely awful to other people will do something to screw up their own lives. It may take a long time to happen, but trust me -- it will. 

Some people may say that's a terrible mentality to have, but I say it's a worse mentality to chastise victims of abuse or harassment for being upset with the people inflicting that sort of suffering upon them. This is not Minority Report, and there are no thought crimes. If there were, there would be nobody left to police them, because I guarantee you there is not a single person on the face of this earth who has not seen someone doing or saying something awful and at least thought "Man, I hope every single Chipotle order they make from here on out is dry and unsatisfying."

So if it helps you remember to breathe, by all means, put your faith in the universe to take care of its own. If you want to expand that to be a specific deity you follow, that's great, too. Or if you simply want to remember that even the most skilled manipulator can only keep their mask up for so long and that it's only a matter of time before their own horribleness gets them into trouble because that's how deception works, yep. Do that. 

Ask For Help

Maybe you've done everything you can possibly think of to cope and things are still bad, and you're having trouble keeping your head above water.

That's where the best of humanity comes in.

Please, if you are having trouble this holiday season, here is an international list of suicide hotlines staffed by caring people who really want to help you make it through this. If you have anxiety related to talking on the phone, you can hit up the Crisis Text Line or 7 Cups of Tea, which is online chat-based. If you're in the US and are deaf or hard-of-hearing, there's a TTY crisis line here. There's also the Trans Lifeline which covers the US and Canada.

If you're in a good situation this holiday season but know someone who isn't, please pass these phone numbers on to them and let them know that you're there for them. A simple hug or a friendly face can go a long way to remind someone that they have someone in their corner -- be a beacon in the darkness they're dealing with.

I Love You, You're Fantastic, and I'm Proud of You

I just really wanted to get that message across in big letters so nobody misses it.

11.15.2017

Wrangling Ghosts and Fighting Evil

Good lord, has it really been almost two months since I last updated my blog?

There's been a lot going on -- mostly good stuff, thankfully. I found accidental success with my CppCon trip report, raised $800 out of my $1000 goal during Extra Life for All Children's Hospital, and tried to get started with NaNoWriMo. I'm sorry to report that the last one on the list has not been going particularly well. It's just too difficult for me to write on a deadline, especially with my current schedule. At the moment, plans are to write that darn book for sure, but to do so bit by bit and on my own time. 

In addition, I managed to unlock Affiliate status with my Twitch channel! This means that viewers can now subscribe to me for a couple of bucks per month, and in doing so they get exclusive emoji, immediate access to my past broadcasts, double entries for giveaways, and my undying love. Originally I was on a three-a-week schedule, but literally the same day that I got my Affiliate email, I was also asked to join up and volunteer with the Zonta Southbank club, which I very readily accepted. Through the power of social media and making our voices heard, we are fighting for equal rights and empowerment for women from all walks of life around the world. It's a cause I feel strongly about and well worth scaling back on the streams for a little while during the spin-up period.

Yet in the midst of all of this excitement I've also been feeling a little sluggish. I've had words in my head begging to be put to paper -- or LCD monitor, I guess -- but finding the motivation or coherence to do so has been nearly impossible. I've had multiple flare-ups of my illness, probably due at least in part to trying to do everything at once, which has led to another mild bout with depression. The silver lining here is that I'm not suicidal or completely non-functional during this round, I'm just numb. I feel like I'm viewing everything through a lens covered with Vaseline at half-speed.

Folks, from here on out, we're going with a pretty massive trigger warning for domestic violence, rape, murder, all kinds of stuff. Here's a link to the fantastic Wholesome Memes Twitter account which may be a better option if you are sensitive.

I'm fairly certain that I've inadvertently triggered myself with a social media campaign that I created and am currently running for the Zonta Southbank club, primarily on Instagram. As part of the larger Zonta Says NO campaign, we're featuring a profile and photo on a different woman who has died from domestic violence. It's a way to bring something to light that so often happens in the shadows or warrants nothing more than whispers, and a way to make sure that these stories -- typically buried under other articles deemed "more important" or "less morbid," or only show up in search results under their murderer's name and not their own -- are heard, and seen, and that these women are not forgotten yet again. But sifting through story after story of women being beaten, hacked, or burnt to death has affected me because it reminds me of my own past.

I made it out of multiple physically, sexually, and emotionally abusive relationships alive. I was one of the lucky ones. But that's not what this post is about. As tempting as it is to name names and bring all of the horrendous details to light of what it was like to be beaten, tortured, and raped countless times over the span of nearly a decade, I'm still afraid to do so. One of my abusers tracked me down a couple of years ago and attempted to "remind me" that he still had control and ownership over me. Another, a family member, is still lurking in the shadows, every so often attempting to get information as to my current whereabouts or contact information through others; he's the reason that the name on my government-issued ID card is completely different from the one on my birth certificate. There are people I love dearly who still don't know the details of what I experienced and I'm not sure that I ever want them to, because I know it would destroy them, and if I'm going to go "nuclear," so to speak, it won't be for them to find on a public blog post.

This is about why, if it's so difficult for me, I still continue to run these campaigns; why my bookshelves are full of titles on criminal psychology, true crime, the worst of the worst as far as murderers and rapists and thieves go. For most of my adult life I've had people accuse me of being morbid or weird. My own boyfriend winces every time I crack open another book with a crime-scene photo on the cover, and I have to wait until he's out of the house to fire up any of the crime documentaries on Netflix that I like to watch because he's squeamish about those sorts of things. I suppose most people are, and maybe I should be.

These books and films are about the darkest parts of humans, about what is often classified, simplistically, as "true evil." They're not shocking to me because these are things I have seen and experienced already. I know what horrible things human beings are capable of, and while I am nowhere near desensitized to it, I'm no longer surprised by its existence in the world. Angry about it? Saddened by it? Of course. And as long as I can still feel those things, I think I'm okay.

No, I'm trying to figure out why the men who did the things they did to me did them in the first place. I don't want to understand it to empathize with them or make excuses; I want to understand them in the hopes that new ways to prevent these terrible things from ever happening to anyone else can be discovered. I'm trying to find new ways that I can make more people care that these things are happening -- often right under their noses -- and bring them into the fight to stop them. I want other survivors to gain some sense of closure, to at least understand that what happened was not their fault, because I remember that guilt and how hard it was to shake off all on my own. I want to fight back against the evil that was done to me by using it, against its will, for something good.

I have been left with many things: damage to my hips, some physical scars, complex post-traumatic stress disorder, a pervasive obsession with seeing justice done. I am not the same person that I was before the first event took place. After around a year of regular, intensive EMDR therapy and building a solid support network, I am more myself than I have been in a very long time, but I will never be 100% who I once was. That is one of the awful things that I don't see talked about much; you may be alive, physically, but there is at least a part of you that is killed in the process of surviving. For a long time I was terrified that I had turned into a sociopath or a psychopath as a result of what was done to me. I had -- and still have -- dark thoughts, and what seemed like immense amounts of rage swirling around inside of me like some awful, burning mist. It was thanks to my EMDR therapist and subsequent research into psychology on my own that made me understand that no, the fact that I was distressed over such a thought meant I was nowhere near what I was afraid I'd become. In fact, the clinical definition of a psychopath states that feelings of anxiety, fear, or true remorse rule it out completely.

And this is part two of why I surround myself with this troubling media -- to understand that the way I am now is perfectly normal, and to identify what I'm feeling and why to keep that "darkness" in check. Survivors are expected to be superhuman levels of strong and cheerful; we're never allowed to point out that maybe we are anything other than sunshine and rainbows after our experiences because it "makes people uncomfortable." I went through a period of my life where I let it overwhelm me in the form of self-medication and some truly awful behavior. I still struggle with the anger, and in fact I think it's a large part of what drives me to keep fighting; as long as that anger isn't directed at myself or the people I care about, as long as it doesn't consume me completely, I feel I've got it down to at least an uneasy alliance where I work with it as best as I can, but am always keeping watch on it out of the corner of my eye.

I am sad that I'll probably never have the opportunity to go to school and get a degree in something like forensic psychology. The extreme financial burden that comes with higher education in the US and the unpredictable nature of my illness makes it highly unlikely that I'd ever be able to make it through four years or more of full-time study, and then I'm not sure what I'd be able to do with it -- I certainly wouldn't be able to manage a traditional career. Criminal justice, I've come to realize, has been my passion all along; in kindergarten, I wanted to move to Canada to be part of the RCMP, then I wanted to be a forensic pathologist, and then a regular police officer, then a detective, and now a forensic psychologist or researcher in that field. Now if only I could find a way to parlay that into game development, I'd be in good shape.

9.30.2017

A Beginner's Guide to CPPCon 2017

When we last left our heroine, she was just stating that although she'd be accompanying Ben to Seattle for his talk at CPPCon 2017, she wouldn't be attending the actual conference...

There were a few reasons I didn't intend to go. For one thing, I'm very much a C++ novice, just wading my way through the beginning of my education. I assumed that there would be nothing there for me, and although the conference is quite reasonably priced -- less than $1k for a whole week of content! -- I was unsure as to whether it would be a waste of money for my skill level. Plus, there's that pesky impostor syndrome that sneaks up on me with a less-than-friendly reminder that I'm highly unintelligent and that should I dare darken their doorstep I would be swiftly exposed as the fraud I really am.

Indeed, I had planned a whole week of excursions and exploration in Washington State when Ben invited me to dinner with him and a few colleagues from the conference.

My experience as a female programmer has made me incredibly wary when it comes to meeting my male counterparts. I've implemented entire automation frameworks and spearheaded learn-to-code initiatives only to have the credit ripped away from me and given to a random guy on my team. Once in a while I've even run into the dreaded brogrammer, the type who reads manifestos detailing why women are supposedly unsuitable for engineering jobs and agrees with every word. If I had a nickel for every time I've been talked down to or talked over, or a sentence to me started with "I don't know how much you know about code, but..." I'd have fled the country and bought myself a lovely estate somewhere in Devon by now.

Thankfully, not a single person I met during the past week fell into that category.

Instead, I was surrounded by programmers of all education and skill levels, genders, races, and areas of expertise. It was an environment that inspired collaboration and the exchange of knowledge, encouraged friendly debate and intellectual discussion, and made me feel truly welcome and safe. CPPCon has and enforces a zero-tolerance policy of harassment or other bad behaviors, which is more than some other conventions and conferences out there can say for themselves.

I expected to put in an appearance as The Significant Other of Benjamin Deane and quickly find myself left out of the conversation or otherwise cued to leave. Quite the opposite happened -- I was treated as an equal, offered multitudes of invaluable advice on my own programming efforts and fighting back against impostor syndrome, and reinvigorated with regards to my personal projects. For a long time I was so demoralized that I stepped away from code. Suddenly I felt like the world was shiny and new again, and that I could do this, I wanted to do this.

At the encouragement of my new friends, I ended up attending the evening lightning talk sessions, which were open to the public, and I was hooked. With just five minutes to present various food-for-thought topics related to C++ and general programming, it was a smorgasbord of brilliant engineers from a wide variety of industries. Although some of the concepts were definitely above my current expertise, it was still easy to recognize the value of those I didn't yet have context for.

As it turns out, Friday, the final day of the conference, was open to the public. Ben kindly lent me one of his dev shirts -- I was entirely unprepared in this regard, since I never dreamed I'd be brave enough to attend a programming conference, after all -- and off I went, a small Bunny in a world of very smart giants.

Choosing which talks to attend was harder than I imagined it would be. My sole complaint about the conference is that there were several equally fascinating talks by major players in the C++ world in conflicting time slots, and the only two talks given by female engineers were also slotted against each other. The good news is that videos of all the talks from the current year and previous years are made available on the official CPPCon YouTube channel shortly after the conference ends, but it's not quite the same as being in the audience for the live presentation. Unfortunately, it may be somewhat unavoidable with a limited number of days for the event and so many quality presentations to offer.

Undefined Behavior is Awesome! by Piotr Padlewski: I'm a huge fan of edge cases and learning how to avoid common coding pitfalls, so attending Piotr's talk was a no-brainer for me. Not only were some of the most pervasive undefined behavior sins outlined here, but tips and solutions for their mitigation followed each case. This invaluable information was presented with exactly the right amount of humor -- enough to keep it interesting, but not so much that it cheapened or drowned out the point. My main takeaway is that compiler optimizations are an awesome way to save us from ourselves (and the neverending hunger of Clang), and I'll definitely be toggling a few of them on before I start any projects!

Traveling the Solar System with C++: Programming Rocket Science by Juan Arrieta: Rocket science. ROCKET. SCIENCE. How could I pass this one up? Juan is an engaging speaker who worked on our dearly departed Cassini at JPL and used that experience to bring us a fascinating overview of what it takes to power a spacecraft with code. If I had to choose a single favorite talk, it was this one. As soon as the presentation videos are uploaded to YouTube, I plan to watch it a few more times. Juan starts with a brief history of what we know about the universe and then gives some easy-to-grasp examples of not just the code itself, but some very unique considerations that must be made when programming for space exploration. I'm sad to say that the slides for this talk haven't been uploaded yet, but if you ever wanted to be an astronaut as a kid -- heck, or especially as an adult -- do not miss this talk once it's made available! Also, Juan, please write a book, because I would love to read it, and I'm sure I'm not the only one.

Curiously Recurring Bug Patterns in C++ at Facebook by Louis Brandy: Another chance to learn about all of the interesting ways that code can go wrong! Louis was quick to point out at the beginning of the talk that he wouldn't be covering some of the more arcane bugs in his talk, and while I'd love to see a second presentation to go over those, it was a choice that added much more value to this one -- after all, it's much more useful to be made aware of mistakes you might actually make than the one-in-a-million errors unlikely to ever happen. Like Piotr's talk about undefined behavior, solutions were offered alongside of each case study. ASAN is our friend and we should not fear it. The bugs selected for discussion are also not exclusive to Facebook's architecture; these are the types of simple errors that any C++ engineer at any company in any industry could make. All in all it was an entertaining and extremely well-curated presentation.

Unbolting the Compiler's Lid: What Has My Compiler Done for Me Lately? by Matt Godbolt: Yes, THAT Matt Godbolt, the angel who brought us the Compiler Explorer tool. Ever wanted to see under the hood of your compiler for various architectures? Compiler Explorer lets you do that. I'm not ashamed to admit that a good chunk of this talk felt a bit over my head, as I'm not yet developing anything in C++ to the point that I need to worry about compatibility testing my code against multiple chipsets, but there is something oddly enticing about assembly language and being able to access it so readily. If you're feeling generous, please support Matt and his Compiler Explorer project on Patreon, because in addition to creating a really useful tool that's being used heavily in the programming community, he's just a really nice guy.

Building for the Best of Us: Design and Development with Kids in Mind by Sara Chipps: Teaching the next generation to code from an early age is so important, especially when you focus on girls. Our society doesn't encourage girls nearly enough when it comes to STEM, and Sara is working to change that with Jewelbots, friendship bracelets that can be programmed simply in C++ using the Arduino IDE. Not only did we hear from Sara herself on the challenges surrounding designing a programming project that's easy enough for kids without dumbing it down to the point of losing educational value, but we were honored to hear from two brilliant young ladies, Sumeya and Eleanor, who have jumped right into their own Jewelbots projects. I teared up a little hearing them talk with such passion and professionalism about code -- I wish I had grown up during a time where something like this would have been available to me. I truly hope that the day comes soon where we'll be seeing their talks at CPPCon! I'd also like to admit that as a fully-grown woman, I want a Jewelbot for myself, although based on whispers I heard in the audience, I'm not the only one. Jewelbots is an open-source project, so if you have experience with Arduino and/or C++ and want to contribute to encouraging girls to code, wander on over to their GitHub and commit a few things!

So was it worth it for me, as a beginner, to attend this conference?

Absolutely.

I can't stress enough how grateful I am to the C++ community members I met during the dinners and lightning talks and event for restoring my faith in the programming community and inspiring me to get back into my IDE. I don't feel like an impostor or like I'm not good enough or that I'll never be able to achieve anything after talking to these folks; instead, I feel like the world is my oyster, and my goal is to submit a presentation to CPPCon 2019. In the meantime, I'm already planning how I might make it to the full week of 2018's conference, and look forward to seeing everyone there!







9.20.2017

Streaming for Good and Other Scheduling Tidbits

The first of September kicked off what is almost always my busy time of year -- hence my blogging has been sporadic at best for the past couple of weeks and may or may not continue to be that way through the holidays. In the past, it was due to the extreme content push that accompanies every BlizzCon. This year, it's all stuff that I actually want to do and enjoy doing, so while I'm still unbelievably exhausted, I'm at least falling asleep with a smile on my face!

At the beginning of the month I visited my parents in Northern California and got a brief tour of the Super Evil Megacorp offices in San Mateo. If you're not familiar with the name, they're the masterminds behind the mobile-friendly MOBA Vainglory which is starting to make some serious waves in the esports scene. It was great to see a studio full of such passionate individuals and see all of the growth they're currently experiencing! They were also kind enough to give me this incredible T-shirt to commemorate my trip, so now I guess I need to get some mad Vainglory skills to replace the "free kill to all other players on the map" ones I'm currently sporting.


That trip was the first time I've traveled by myself in about a decade, a testament to exactly how far I've come in conquering the agoraphobia and anxiety caused by my CPTSD. I dealt with one flight cancellation and multiple delays without even batting an eye and now I'm afraid I've been bitten by the Adventure Bug that's making me want to hop more planes to more places.

I won't need to wait long for it, either; in a few days I'll be on a plane to Seattle, accompanying Ben on his travels to CPPCon 2017. He'll be reprising the amazing talk on constexpr magic that he gave with Jason Turner at this year's past C++Now conference in Aspen. I won't be attending the conference myself, but I'll be serving as his executive assistant, handling day-to-day details so that he can focus on C++ deliciousness instead. Since there will probably not actually be any details to handle, I'm planning to visit a few friends and explore Bellevue -- this is my first trip to the Pacific Northwest and I'm thrilled because it's a place I've always dreamed of visiting! I've already been warned about the cool temperatures and frequent rain because apparently a lot of people consider that a bad thing. Weirdos.

A week or so after we return to Southern California, we'll be hosting a couple of his family members who will be visiting from England. For some, this would be a nightmare, but I happen to adore everyone in his family, so I'm quite happily dashing around trying to make sure all of the necessary arrangements are made for a fun few days! I don't often get to see them due to the distance, so I'm excited for the chance to do so twice in one year.

Then I'm celebrating my five-year anniversary of participating in Extra Life! Extra Life is a charity gaming event benefiting Children's Miracle Network hospitals. Participants pledge to stream games for 24 hours, either all in one shot or broken up over the span of a few days, with the goal of raising funds for the CMN hospital of their choice. I'll be streaming from 9 a.m. to 5 p.m. Pacific time starting on Monday, October 16th and going through that Friday, which is actually almost double the 24 hour requirement, but it's for such a fantastic cause that I'm pleased to make it my full time gig for that week! The stream will happen on my Twitch channel each day, and donations can be made directly to Extra Life via my fundraising page -- only the hospital I'm supporting, All Children's Hospital in St. Petersburg, FL, will be able to touch that money. Donations are tax deductible and many employers will match the amount, so even just $5 (cheaper than a pumpkin spice latte) can do some serious good! If you're unable to donate, please feel free to share the link to my fundraising page and help me get the word out.

In case you missed the link to the fundraising page in the paragraph above, it's here.
November brings with it NaNoWriMo, which I haven't actively participated in since before I started working at Blizzard -- I just didn't have the time to devote to it. This year I'm jumping back in the saddle by writing a salacious historical romance novel so steamy that I fully expect it will bring shame to not only my family, but the families of anyone who reads it or associates personally with me. In keeping with the event's rules I haven't written a single word of it yet, but the working title is Master of the Moors, there will be scullery maids and brooding aristocratic widowers, and I'm so sorry, mom.*

* = Actual regret content is less than 0%

Beyond the firmly scheduled upcoming events, I've also got a lengthy to-do list:
  1. Keep working towards Twitch Affiliate status
  2. Figure out some social media platform art (headers, et cetera) and a logo -- and then how to pay someone to make them for me because artists do not and should not work for free
  3. Take a refresher course on crochet
  4. Reopen my old Etsy store, or more than likely just create a whole new one
  5. Flesh out some short story ideas that are kicking around
  6. Actually self-publish my dirty book on Amazon
  7. Maybe self-publish the short story ideas in an anthology if I get enough of them written
  8. Complete a full-stack web development bootcamp
  9. Put together a weekly Diablo 3 stream co-starring Ben (his request!)
  10. Put together some sort of nice, supportive weekly gaming stream where I can focus on the community, tentatively titled A Nice Cup of Tea and a Smackdown
I'll admit that I've got a lot of ideas I'm excited to implement, and I'm always trying to figure more out -- but it's a little overwhelming at times. It's hard to focus on just one of them at a time because I want to do them all right this minute even though I know that's impossible, especially with my constantly lengthening schedule. When you're working for yourself, it's easy to get distracted and lose motivation. My hope is that by blasting it to all corners of the internet that I'm doing stuff, it'll keep me honest and on the track to eventual world domination.

9.04.2017

Still Sick, Still Living Well

I've been mulling over a polite way to talk about something that really distresses me: the assumption that just because I'm open about my chronic illness and because I stay home instead of having a "real job" my life is somehow less fulfilling or sad or that I'm just laying around on the couch all day eating bonbons and whining about my joints.

These are all things I've heard in some form from strangers, yes, but also from family and friends -- thankfully, those I'm close to fall more into the concern category than the accusations of laziness, so in a way I'm grateful that they're worried about me, but regardless of their intent, it basically invalidates all of my small victories that I do accomplish.

In general, I am extremely content with my life, even if it has deviated from the norm a bit more than I ever accounted for. Sometimes I feel like maybe there's something brutally wrong with me because of that. People are telling me "oh, you poor dear, why don't you get out and do x, y, and z to make up for it?" and I'm just sitting back blinking my eyes thinking "But I wouldn't want to do those things even if I were healthy." If others look at my life and walk away dissatisfied, does that mean that I am in the wrong for being satisfied while living it?

For example, the gym. Oh God, let's talk about the gym. Look, I know that eating right and staying active and all of that fitness stuff is important. It doesn't change the fact that I hate working out. I have hated working out since I was little, I have hated working out since before I started developing Sjogren's symptoms, and I sure as heck hate it now that sometimes just walking across the living room is enough to make me double over in pain. On occasions where I'm feeling pretty good, I'll do some yoga as a way of keeping my mobility up and centering my brain. That's... pretty much it. Oodles of respect to those out there who feel that certain "high" I keep hearing about whenever they go to the gym, but I just don't feel it, and I never have.

Unrelated to my illness is the simple fact that I am an introvert. Even without the complex PTSD, even without the depression, I find being surrounded by tons of people and noise and other sensory stimuli confusing and exhausting. So yes, if you invite me out to a club or to hang out with a big group, I'm probably going to say thanks, but no thanks. It is true that in years past I was totally down to party. These were times when I was also drinking heavily and so could mask the unease and misery I felt in these situations, because I had also not mastered the art of putting myself first and saying "no" when I didn't want to do something instead of pretending like I was happy to go along with it so I didn't hurt anyone's feelings. Most people think I'm joking when I talk about my "party budget" -- I essentially prepare myself for the energy for about four parties or major events per year. Additional events will be considered, especially important ones like weddings, birthdays, et cetera, but it's not guaranteed that it's in the budget. And you know what? I'm perfectly happy with that.

I don't feel like I'm missing out on the world, although I am more than mildly irritated that my days as a Dance Dance Revolution champion are over. I don't feel that I'm not accomplishing anything in my life. Some days I will accomplish more than others. Today I have done all of the laundry, served two meals, helped make pancakes, made double chocolate chip banana bread from scratch, cleaned up the kitchen after said banana bread exploded a little in the mixer, spent time with the kids and my boyfriend, and now I'm sitting down to write while I wait for the dryer load containing our bedsheets to finish, after which point I will put the freshly laundered sheets on the bed. Later tonight I will clean up the kids' room and cook dinner. I will do the dishes. If I have time, I will play some Diablo 3 with my boyfriend and wind down for the evening by reading more in my current book. I will fall asleep happy and proud of myself for accomplishing as much as I have today. Perhaps it's not as prestigious as working at a major game company, but it's my life now, and I love it.

Caring for other people has always been my passion in life. The only reason I didn't go into nursing or a similar field is because I was terrified someone might die on my watch, knowing that it'd probably haunt me for the rest of my life. I also love baking and cooking, but only as long as I know that the person (or persons) eating whatever I make are enjoying it, so that ties directly back into the primary passion. I'm in a position now where I can not only take care of myself, but others as well. I can stay in a controlled environment that can be as dark or bright as I want it to be, as cold or as warm, as loud or as quiet. If I'm having a bad flare-up, I don't have to scrape myself off of the bottom of the shower and stress myself out about how I'm going to find the strength to function for a nine-hour workday. I can just say "Okay, self, we're not going to run any marathons today, so just do what you can and we'll be fine." I've reached the point where I can ask for help without feeling guilty for it or worrying that I'm going to lose my job for it.

Wouldn't you know it, I'm actually feeling better since I left my career and focused on my own interests and making a happy, safe home for myself and my loved ones. I feel like I've made more of a difference in people's lives in the last three months than I have in the last three years. I'm not running myself ragged and pushing myself to my very limits so that instead of feeling lousy for one day, I feel lousy for a whole month.

I'm in an extremely loving, supportive relationship. I have time to pursue additional knowledge. I have time to try new hobbies. All of those cookbooks I've been hoarding are getting plenty of use now because I have the time and energy to finally give all of those tasty recipes a shot. My brain is in no danger of withering away from lack of stimulation! I keep in contact with my friends and family all day long. I interact with the gaming community. Just because there's nobody else home doesn't mean that I'm isolated.

This month I'm traveling by myself for the first time in years to visit my parents up in Northern California. At the end of the month, I'm accompanying my boyfriend to Bellevue for CPPCon. In October, I'll be running a week-long Extra Life charity stream. In November, I'm going to participate in NaNoWriMo. In between all of this I'm streaming regularly with my World of Warcraft guild's Wednesday night casual raids and anything else that strikes my fancy. I'm writing on a more consistent basis than I have before.

So why do I talk so much about my illness? Because I know too well what it's like to feel scared to talk about it. I know the stigma that exists around invisible illnesses because I've run up against it countless times. I want everyone else out there who is dealing with a diagnosed illness or even just the symptoms right now in their battle to be taken seriously that they are not alone. I want people to learn about my illness, to ask questions, to maybe look at the sick or disabled people in their lives through a slightly clearer lens, to not blame themselves for feeling sick. Support networks and the feeling of normalcy while still receiving understanding and compassion for limits that may be different from a healthy person are incredibly vital in living a good life with a chronic illness or disability.

I'm not trying to single anyone out with this Treatise On My Awesome Life or make anyone feel guilty. I'm not angry. I'm flattered that there are so many people who want me to have the highest possible quality of life. This is just me saying loudly and proudly that I am doing fine. I am handling what life has thrown with me, and then probably making cupcakes with it.

8.26.2017

Stealing the Neighbor's Internet: A Tech Mystery

Last weekend, we moved into a lovely new apartment with much more space and much better sound insulation than the last one. We also upgraded our internet service to 300mbps downstream which is a HUGE improvement over the "standard" package we used to have! Speedtest confirmed that, in fact, we were often getting above 300mbps. Dreams of super-high-quality streams and next to no latency in raids were dancing through my head.

Unfortunately, the active coaxial port was not located near enough to our computer desks -- Ben and I both require an ethernet connection directly to the modem, so going wireless wasn't an option. The kids' computer was in their room and so would never be close enough to the router for a hardwired connection, but we planned to use a powerline adapter to bring the internet in for them. In the meantime, I connected using a powerline adapter myself until a tech could come out to switch the active port to one in the same corner as our desks, which is exactly when the trouble would begin.

The problem

The internet was working after the tech left, but it was much slower than it had been before. A quick check on Speedtest showed that not only were we only getting somewhere around 16mbps down, we also had AT&T as our internet service provider -- which was extremely strange, considering that our ISP is actually Cox.

A false positive

Commence contact #1 to tech support. The representative confirmed that he could see the modem and was able to issue a reset from his end, meaning it was definitely connected to Cox's network; Cox could see us, but we couldn't see them. He did notice that the IP address I was seeing on my computer didn't match the IP address he had listed for us. After about an hour of working with him I noticed that the ethernet cable for my computer was loose in the modem port, and when pushing it back in, the problem seemed to resolve itself. I very sheepishly apologized and gave him permission to use me as an "idiot customer" story on his lunchbreak and figured everything was fine.

Alas, it was fine for about five minutes. Note that I'm still not sure why this seemed to temporarily fix the issue, but I was never able to reproduce this fix, even when unplugging and plugging it back in.

Enter Ricky and Vicky

It was at this point that we also noticed we were unable to reach the router on our local network via the typical 192.168.0.1 address. We were, however, able to access the address listed as the default gateway in my ipconfig results, which brought us to the control page for an AT&T network owned by "Ricky and Vicky." GeoIP initially showed this as being a network located in Georgia. Frighteningly enough, this page listed plaintext passwords for their network, the MAC addresses and IPs for every device connected to it, and the ability to control those devices. In a previous life, I would have had lots of fun running a MitM attack to monitor keystrokes and maybe score some sweet banking credentials or just cause some childish mayhem. Luckily for Ricky and Vicky, my hat has faded a few shades in the wash.

The theory, developed with lots of help from my telecom friends on Twitter, was now that the equipment used to belong to Ricky and Vicky had been wiped improperly, possibly because an AT&T tech had overridden the base configuration of the modem to pull down the MD5 from the same TFTP every time -- they're not necessarily supposed to do it, but it's still a fairly common practice. As to how the modem then ended up in Cox's leasing pool was anyone's guess, but probably they switched ISPs at some point and it got taken to the wrong place.

Ruling out devices

Contact #2 involved going to the Cox store, giving a very high-level overview of the problem, and retrieving a brand-new, never-before-leased modem. If the problem was indeed an improperly wiped device, this would be an immediate fix.

No such luck. Upon setting up the new modem and plugging everything in, Ricky and Vicky were once again flashing up on the screen. It was statistically possible that we'd been given two bad modems from the same location back to back, but very, very improbable.

The issue was confirmed to be showing up on both computers on the hardwired connection, ruling out any strange DNS or proxy settings on one machine or the other. Virus scans came up clean. The final evidence that the computers themselves were not the culprit would come during the next tech's visit, when upon plugging his laptop directly into the modem, he saw the same exact behavior.

Plugged into the wall below Ben's desk, a small white box sat quietly, innocently, going largely unnoticed during the troubleshooting process.

Renew and release: an exercise in futility

Contact #3 was another hour or two on the phone to a customer support representative who was just as stumped as everyone else was. He insisted there couldn't possibly be anything wrong because he could see our modem and issue remote commands to it; we informed him as patiently as we could that we were aware of this, but that we were still getting AT&T's service through a Cox router. 

This is where I'd like to make a controversial statement: ipconfig /release and ipconfig /renew have never once solved anyone's problem. Ever. I have been using, fixing, and building computers for more than three quarters of my life and renew/release has never once been the solution. 

Although this representative was surprisingly hesitant to send out a tech, I finally put on my sternest Mom voice, explained that I was four days into not being able to work reliably -- the reason that there was no blog post last week, in fact -- and that the 20 minutes of dead air punctuated with "ummmmm" and "I don't know" indicated to me that he had done all he could to help and that the next step was sending a tech out to look. He finally agreed.

A networking nightmare

My next theory was that the issue had something to do with the cabling. I was confident it wasn't an issue with the main line, since multiple representatives had confirmed there were no outages in the area and no similar reports had come in from anywhere, let alone our apartment complex. This was actually good news, as an issue with the main line takes a lot more time and manpower to fix. It seemed like two cables were resting against each other somewhere in such a way that they were causing AT&T to override Cox with regards to the information being sent to the modem. Or, more likely, the first tech had grabbed the wrong cable from the box when switching the active port.

When the second tech showed up, he helped me rule out the "wrong cable" theory by explaining that AT&T isn't actually cable internet, it's DSL, and thus doesn't use the coaxial port like Cox does. This actually made the entire situation even stranger, as if the modem wasn't receiving information from Cox, it should have just shut off completely. We also noticed that somehow, even when the modem was restarting, I still maintained a connection to Ricky and Vicky's network, which was now showing up in the list of available wireless networks -- GeoIP was incorrect when it told us Georgia. It now seems that they're either our upstairs or downstairs neighbors.

The issue persisted even when running the cable line straight from the external box into the modem. After two hours, the tech brought another brand-new modem up from his truck as a last ditch effort to solve the problem. To our shock, it worked. I was back on Cox and getting my blazing fast speeds. My connection persisted through a computer restart and power-cycling the modem.

Must have been that statistical improbability of two bad modems, we thought. As he was packing up his tools, I noticed that my computer was the only one hooked into the modem. Ben's computer and the powerline adapter for the boys' room were unplugged.

The powerline adapter.

Not wanting to keep the tech out any longer than the poor guy had already been held captive, I saw him out, then came back to the computer area and plugged the powerline adapter in.

AT&T.

I unplugged it again.

Cox. All without having to even restart the modem or my computer.

Unexpected answers

Telecom Twitter to the rescue again as I explained the ultimately nonsensical situation -- although I don't have a way to crack open the wall to verify, it's most likely that we have poorly shielded copper wires in the wall where our computers and the newly-activated port reside. Cross-talk is occurring between the electrical and phone lines, and then when the adapter is plugged straight into the modem, it's allowing it to use the modem for the DSL line instead of the cable while still maintaining a connection to the Cox network.

As to why the wires are not shielded correctly, it's a front wall and our computers are in what would usually be a dining nook. I'm sure it wasn't planned that people would be using this area of the apartment for heavy-duty telecommunications. There's also a very good possibility that the wires were initially shielded just fine, but ants -- of which we have many due to all of the trees and plants around -- have chewed through the physical shielding. The destructive power of ants is often underestimated, but we had a main cable line in one of my previous residences actually go completely down because of an ant infestation that had taken hold.

It's something that is incredibly unusual, but I guess we're just that lucky. At least the solution didn't require ripping out drywall or anything else messy, expensive, and difficult; we can just go with a wireless card for the boys' computer. Even still, I wanted to make sure to document the process for anyone in IT or customer service who may have a customer with the same issue, as everyone I spoke to along the way stated that this was the first time they'd ever heard of such a thing, even those who had been working in the industry for 10+ years.

I've also done some research regarding the particular modem we have, manufactured by Arris, and found that there are multiple complaints of incorrect IP addresses being assigned by them (although not as far as incorrect ISPs). I'm frankly a bit surprised that Arris wouldn't have included something in their firmware to prevent this kind of override. I'm also shocked at AT&T for the ease with which I was able to access my neighbor's sensitive information -- there was no initial login page, just an automatic connection to their network controls.

At any rate, it looks like this is the end of our adventures with Ricky and Vicky, until such a time that I muster up the courage to knock on their door and give them a quick lesson in network security.

8.13.2017

Bunny's Kitchen: Making a Basic Curry

When I'm not gaming, I'm usually in the kitchen testing out a new recipe or tinkering with ones I already know by heart to make them easier and better. I've tormented everyone on Twitter and Facebook with photos of the results, usually ending in requests for the recipe.

Let's be honest, curry isn't always the most photogenic of foods.


If done right, however, it's darn tasty, and the most you'll have to do is some serious chopping. Pictured above is a chicken korma I made this week, but if you master the basic paste that can be used for all varieties of curry, all you have to do is switch up the spices and the meat you use.

Getting Set Up

I use pre-mixed curry spices from Spice Mountain, which is based out of England. If you're on that side of the Atlantic, they have a lovely shop in the Borough Markets, but otherwise, they do ship internationally through their online store!

The recipe I started with was actually also from Spice Mountain, but I made a few tweaks here and there for ease of cooking and availability in the United States. The beauty of this recipe is that it doesn't use roux, meaning that if you use proper substitutes for meat and cream where applicable, it's perfectly suitable for vegetarians and vegans.

Before you start shopping for the paste ingredients, decide what kind of curry you want to make and do some research as to what kind of meats will work best with the flavors. For example, rogan josh works best with lamb or beef. Also determine if the particular curry should be creamy -- korma and tikka masala are best if substituting heavy cream for water. If you're using a dairy-free substitute for the cream, try to avoid coconut milk, as it tends to overpower the rest of the flavors in the dish; especially if you're making korma, cashew or almond milk is really good.

Also, if you plan on doing curries regularly, you may want to invest in a good food processor or blender. I have the Nutri Ninja Professional BL450 and it works wonders for the paste part. Plus, it gives you an excuse to have smoothies and milkshakes whenever you want.

This recipe makes enough for two people to have very generous portions. If you have any remaining, put it in a Tupperware container and store it in the fridge for the next day, then heat it up in the microwave starting with 1 minute 30 seconds on the timer and using an additional 30 seconds as needed. It's still very tasty as leftovers!

Finally, I should note that I'm fairly certain this is more on the British colonial side of curry style versus what you might get in an Indian grandmother's kitchen (note the lack of roux above). It is still really, really delicious in its own right.

Ingredients

  • 1 tbsp extra virgin olive oil
  • 1 large onion
  • 2 garlic cloves (or 1 tsp crushed garlic)
  • 1-inch piece of ginger root (peeled if the skin is very papery, otherwise fine as-is)
  • 2 tbsp tomato paste
  • 2 tomatoes
  • 1 cup water or heavy cream, depending on the type of curry you're making
  • 3 tsp curry spices
  • Salt to taste
  • Desired meat or meat substitute

Preparation

  1. Roughly chop the onion and the ginger root and add them to the blender bowl.
  2. Chop the tomatoes as finely as you can, put them in another bowl, and set aside.
  3. Chop up whatever meat or meat substitute you're using into bite-sized chunks and set aside.
  4. Add the garlic to the blender bowl and blitz it until all chunks are gone.
  5. Use non-stick spray on a large sauté pan if it doesn't have a non-stick coating before adding the olive oil; if your pan has the coating, just add the oil straight away and heat it.
  6. VERY CAREFULLY pour in the paste from the blender bowl and fry for 10 minutes -- seriously, go slowly, I've nailed myself and the rest of the kitchen with splashback from this more than once. The texture of the fried paste should be similar to chunky applesauce.
  7. Add the water or cream, spices, tomato paste, chopped tomatoes, salt, and meat or substitute. Stir it all up and simmer it for 10 to 15 minutes to thicken it.

Serving Recommendations

  • Research traditional preparations of the specific type of curry you're making and add nuts, sultanas, vegetables, potatoes, or anything else that might be recommended.
  • Serve over basmati rice.
  • Add a couple of scoops of mango chutney to the side.
  • Serve with papadums or naan. 

8.04.2017

The Temperature At Which Code Burns

I grew up with my mother's Commodore VIC-20 in the living room. By the time I was five years old, not only did I have a Performa 430 of my very own, but I'd taught myself how the system worked well enough that the teachers at my elementary school called me over the campus IT specialist to fix their computers -- a trend that continued well into high school. At the age of 15 I was reverse-engineering websites and building my own based on the tricks I learned from individual page sources.

I also did some reprehensible stuff that I'm not going to specify due to the fact that none of it was even remotely legal and I haven't been prosecuted for any of it, which is a track record I intend to keep. After a couple of close calls and a dose of maturity, I brought my own experiences as The Jerk On The Other Side Of The Keyboard to my career working for the good guys. After all, who could be better suited to point out potential vulnerabilities in web apps and software than someone who used to exploit them?

These days, I'm an old lady sitting in her ergonomic desk chair cheering for all the others who've traded in their black hats for grey, at the very least. I haven't kept up with the constantly evolving tech world as much as I used to. I don't need to; there are plenty out there who are much more prolific and involved than I ever was, doing better work than I could ever imagine. I am content here on the sidelines, just following the stories as they happen instead of taking an active role in them.

Imagine my joy when 23-year-old Marcus Hutchins, known on Twitter as MalwareTechBlog, quite literally saved the world from the WannaCry worm just a couple of months ago. All he had to do was register a domain contained in the malicious program's source code, triggering a "kill switch" that stopped the infection dead in its tracks. It was an example of the current generation who'd grown up with far more sophisticated technology than I using their powers for good, stepping up to the same plate I'd stepped down from. We are in excellent hands, I thought, with a sense of pride weighing in just under that of a mother watching her child graduate.

A couple of nights ago, I found myself reading The Virus Underground, an article published in the New York Times back in 2004 by Clive Thompson that would prove to be unexpectedly prescient in its discussion of the legal and moral grey area surrounding code authors and whether they should be held accountable if the code they make available to others for educational purposes is then used for those that are decidedly not.

I was pleased to think that now, 13 years after the article was written, we live in a society of GitHub and Stack Overflow, where code can be easily shared and discussed, a digital version of the Socratic method. It's common knowledge that mixing enough rat poison into a cake will kill the person who eats it. It doesn't mean those of us with that knowledge are murderers, or that an author who writes about such an M.O. is responsible, should the events be imitated in the real world.

Then Hutchins was arrested by the US government. His "crime?" Authoring a hooking engine that was then lifted by an unassociated third party to use in the Kronos malware, which was then sold on the black market along with instructions on its use.

There is no evidence that Hutchins was the one behind the final version of Kronos. There is no evidence that he was the person who put it up for sale. The only evidence in existence is that he wrote something that was later blended with somebody else's code by someone very much not him:
But because Hutchins created something that was eventually used for nefarious purposes -- once again, by a third party -- he sits in a jail cell.

Ask yourself if, then, we should arrest everyone who's ever contributed to a cryptography or hacking reference book. If we should burn every copy of each of the aforementioned volumes, just in case. If anyone who has them sitting on their shelves should be thrown in jail because they might use them for the wrong reasons, or author something that someone else will misuse.

If that's the case, then hey, law enforcement agencies: here's just a few of many more reasons for you to show up at my door and drag me off in handcuffs, too. I'll put on a nice pot of tea when you get here.


By this logic, we can say so long to GitHub and Stack Overflow, farewell to computer science classes being offered on college campuses, auf wiedersehen to effective antivirus software -- because many of the threats that the antivirus program running on your computer right now defends you against are included thanks to multiple white hats who have identified vulnerabilities and notified the appropriate parties to get hotfixes and definition updates pushed out.

Anyone who writes a piece of code that could be used for malicious purposes and posts it, free of charge, in a publicly viewable location, does not do it because they want that code to be unleashed upon the world. The very minute code like that becomes easily available on the internet, those aforementioned defenses start building up. In-house software and security testing can only detect so much; there is no piece of code, let alone an entire, functioning application, that is 100% free of bugs or vulnerabilities, and there never will be.

But you know what gets it anywhere close? Discussion. Knowledge-sharing. Blasting it as loudly as you can to anyone who will listen when a potential landmine is found. The continued prosecution of white and grey hats for innocently pointing out flaws and disasters-to-be will put an end to that alert system; then it will be only the "bad guys" tapping away at their keyboards to let us know the hard way when a lapse is found, because the rest of us will be too afraid to share our findings.

Thankfully, the widespread sentiment is that the case against Hutchins is sufficiently weak, and that he is not the criminal mastermind that the United States government has accused him of being. Maybe the Feds are still sore about the ease with which hackers and security experts at DefCon this year broke into US voting machines. Maybe, given the current administration's attitude towards anyone not of sufficiently "American" pedigree, they're looking for an easy scapegoat. 

What is certain is that even if the case against him is dropped, simply arresting him under such flimsy pretenses sets a dangerous precedent for anyone else who has ever been curious or bored enough to experiment with code, who might just turn out to be the next superhero the world needs for the next malware attack.

7.28.2017

Fantastic Streams and How to Film Them

I'm not a professional streamer. I don't know if I ever will be, assuming that "professional" means anything other than "I stream on a somewhat regular basis because I enjoy doing it and once in a while people toss me a couple of bucks on Ko-fi. I'm completely fine with that, but I'm the type of person who likes to put the extra effort into any project regardless of profitability, popularity, or anything else.

In the past, I streamed mostly for Extra Life, a charity gaming marathon where participants stream for 24 hours and supporters donate funds to benefit Children's Miracle Network hospitals. I didn't know much about lighting or sound outside of its theatrical applications, so my "streaming rig" consisted of XSplit and a secondhand webcam. I used a gaming headset and whatever lights happened to be on in the background and that was it. It did the job, but it wasn't the greatest viewing or listening quality. I tried a couple of times to research what it would take to set up proper lighting and audio, but the handful of tutorials I could find involved a ton of effort and available space, or were unclear about where to obtain the items mentioned, e.g. all the articles mandating key and fill lights, but no real recommendations as far as how to set them up or what types of lights to use. They talked about green screens and softboxes and just seemed far too complicated for my budget or free time.

After leaving Blizzard, I found myself with lots of time on my hands for a change, and I'd saved up a decent amount with which to get myself started on some projects, including streaming more consistently. I wondered if, based on the information already available out there, I could glean enough to get myself set up for a decent-looking and sounding stream that wouldn't cost a huge amount of money and would fit in my current space, which is the corner of my average-sized bedroom. It would need to be easy to set up due to my health issues, which often leave me too tired or in too much pain to spend hours putting a studio together by myself. Since I don't drive, I wanted to find it all online without ever having to leave the house. Bless you, Amazon Prime.

Verdict? Totally possible. Behold, my incredibly messy, but still somehow effective workspace:


Again, I'm not a professional. I'm a beginner. The whole point of this is to put together an effective starter kit for the streamer on a budget who isn't yet an expert on the ins and outs. 

And now for the breakdown.

I'm using the Logitech C922x Pro Stream Webcam for video. The quality is pretty good even without the lights, but... eh...


I'd rate it a solid so-so. I'm committing a bit of a lighting sin here by not having that window covered to begin with, but with space being a consideration, I can't move my desk away from it, and being in an apartment means hanging curtains is a pain in the butt. I kind of blend into the background, which is just my bedroom -- heck, I think the bedsheets stand out more than I do. My skin looks really muddled.

That's where the two super-cheap swing-arm lamps you'll see in the workspace photo come in. I chose white ones partially for a stylistic choice and because white doesn't affect the coloring or brightness of the lights themselves as much. The TMS brand I went with work fine, but any halfway decent lamp should do -- I liked these because they were very inexpensive and they came with a C-clamp that made mounting them on the edges of my desk quick and easy. No sacrificing valuable floor space here!

For bulbs, I wanted something bright and clean that wouldn't jack up my electric bill any more than it already is during the SoCal summer. The consistent recommendation is to go with the highest color temperature you can find, which are better known as daylight bulbs. The high CRI, or color rendering index, that goes along with color temperatures of 5000k or above will ensure a well-lit subject while still maintaining the purest color representation possible (if you're a science nerd, check out this article about CRI and visible light spectrums because it explains the concept way better than I can). This 4-pack of energy-efficient 100w Philips bulbs boasts a 9.1-year lifespan and a color temperature of 6500k. Daylight deluxe, my friends.


Other than the fact that I'm bare-faced for this test image, thus causing the "hot spots" on my forehead and cheeks -- woo, oily Mediterranean skin -- you'll note that the blast of brightness from the window which really should still be covered up is lessened and the background is no longer the most prominently lit thing in frame (although this can and will change as the sun changes position in the sky throughout the day). My hair and shirt no longer blend together. One light is positioned to shine on my face at an angle behind the camera, and the other is shining from the side. Both are necessary to cancel out any harsh shadows on my face. The light itself could be softened more if needed by adding a diffuser to one or both lamps, which is easily made in about 10 minutes if you follow Carleyy's excellent tutorial. I could also adjust the brightness in my camera settings. There's lots and lots of options to tweak things depending on how much of a perfectionist you are, and all of them are exceedingly cheap or free. The best!

My lighting kit is technically still not complete, as I need to add a backlight behind me which will help pop me out from the background even more, and once I get more space, I'd like to set up a cheap green screen or at least a folding screen to separate me from the rest of the room; for now, though, I think this is already a noticeable improvement.

Bonus section on makeup: Foundation and pressed powder will take away any shininess on your face. Smashbox has an excellent Camera Ready line of color-correcting primers in case your skin tone doesn't look quite right on camera if you're really finicky; remember that green cancels out red, blue cancels out yellow, and cyan cancels out magenta (and vice versa).

So things look good now, but they need to sound good, too. Enter the beast known as the Blue Yeti!


Blue microphones -- that's the brand, not the color -- are some of the best USB mics around. Whether you go with the Snowball or the Yeti, you're in good hands. I chose to go with the Blue Yeti USB microphone based on recommendations made to me by a few friends who stream and record regularly. If you're big into aesthetics, it's available in several different colors.

The Yeti comes with a desk stand, but since my desk isn't that big to begin with, and having the microphone right on your desk can result in lots of background noise as it picks up "hits" from keyboard strikes and mouse clicks that vibrate through the desk. The solution is a shock mount that can then be attached to a scissor arm or boom. I went with this one from Auphonix with an InnoGear scissor arm, both of which were very inexpensive and sturdy enough to support the weight of the notoriously heavy Yeti. The arm uses a C-clamp like the lights to attach to the side of the desk and can be swiveled around as needed to make sure the microphone is in the best position to pick up your voice.

As a side note, the default positioning of the load-bearing screw on the scissor arm was set for a much lighter microphone. The instruction booklet came with a very clear how-to on how to move that screw to a different hole in the arm itself for the Yeti and other heavy mics, a process which took all of five minutes and a standard-sized Phillips head screwdriver and made a huge difference.

Attached to the microphone and mount is a DragonPad pop filter, which helps to cut harsher sounds like "P"s and "T"s while you're speaking. Like the microphone itself, it's available in a variety of colors to match your decor or personal taste. Over the top of the microphone where you'd speak into it is a windscreen to limit the amount of background noise that gets picked up during transmission, like the air conditioning kicking on or the sounds of typing and clicking. Any brand will do, just make sure it's sized to fit larger microphones like the Yeti -- it slides right on and can easily be removed if needed.

The microphone is arguably the most "complex" part of the rig, but it's deceptively easy to put together, pretty inexpensive, and gives a great end result.



An advantage of the Yeti is that it allows you to quickly switch between multiple recording modes, controlling the direction in which the microphone picks up sound. An omnidirectional mic will capture sounds in a 360-degree circle around the microphone itself, which is great if you're trying to record nature sounds or an orchestra playing, but not so much if it's just you talking while you stream. A cardioid recording pattern picks up only sound from in front of the microphone, which is preferred for any kind of solo voiceover work or vocal recording -- podcasters, this is also perfect for you!

You may also need to manually increase or decrease the microphone's gain, or sensitivity. Start off with the gain set to a value right in the middle and lower it for less sensitivity or increase it for more. Depending on how loud your mouse and keyboard are, you may need to adjust this even with the shock mount and windscreen, but it's important to note that most people I've spoken to have pointed out you likely won't be able to completely eradicate this noise, especially if you're using a mechanical keyboard; the goal is just to mitigate it so that it's not taking center focus in your stream. It's also good practice to try and avoid typing while you talk anyway, which helps this be less of an issue.

If you were feeling lost when it comes to setting up your own streaming space, I hope I helped to point you in the right direction! And if you've got your own tips, tricks, or anecdotes that might help, please leave them in the comments.

7.21.2017

The Sun is Shining and I'm Depressed

Note: This post talks about depression, self-harm, substance abuse, and suicide, which may be upsetting or triggering for some. If you are one of them, please go here to look at some cute pictures of zooming puppers and kitties instead.

I remember wanting to die for the first time in fourth grade.

I knew exactly what death meant. I've been able to understand death as well as any adult can since I was in preschool. I also knew that I was tired of being sad all the time and I just wanted it to end.

All through school I was bullied mercilessly, until I discovered black lipstick and stompy boots and aggressive-sounding music in junior high that I bore as a shield against the rest of the world, which always seemed to always be trying to hurt me. I won't get into too many details about my home life here, but let's just say it was not ideal. My sadness wasn't terribly surprising to anyone who knew these things -- although sometimes I also flew into an irrational, uncontrollable rage, and sometimes I just couldn't feel anything at all -- but it went beyond something situational and deeper into a constant, throbbing malaise.

It didn't matter if the sun was shining and life was going well at the time. Every smile was forced. Every social interaction, every morning that I put my feet on the floor was a measured act that should have won me an Oscar.

Sometimes the mask I wore would crack. I'd melt down. I'd cry out for help. And I was, more often than not, told to just snap out of it because it was clearly all in my head. My argument that yes, that was pretty much the definition of depression but it sure as heck didn't fix it went unappreciated and unacknowledged. "What could you possibly have to be depressed about at your age?" adults would scoff.

I started therapy when I was 12, medication roulette when I was 15. Antidepressant after antidepressant was cast aside because it either didn't work or came with horrendous side effects. Talk therapy only helped for about an hour after my session ended, and then the clouds would come rolling back in. I lost faith in anyone's ability to help me, so I started trying to help myself; by the time my 16th birthday rolled around, I was already an old hand at hangovers and mixing drinks. When I was wasted, I could feel the Terrible Things swirling around me, but they couldn't get in. It was like the alcohol put up some kind of barrier that kept them at bay, unless I'd get too drunk, which I frequently would, and then I'd be drowning in them.

Cigarettes became a friend around the same time because not only would they soothe that heavy tension in my chest, I could press the lit end against my wrists and arms and grit my teeth and finally have something to distract me from the emotional pain with which I struggled daily -- physical pain, I thought, being so much easier to deal with than its less tangible counterpart. I hid the marks under thick stacks of jelly bracelets and arm warmers, or hooded jackets when it wasn't so warm that anyone would question why I was overdressed.

At 19, a series of seriously traumatic events occurred, and these plus the Terrible Things got to be so much that I tried to overdose. I was in the psychiatric ward of the local hospital for two weeks around Christmastime. I remember the EMTs in the ambulance chastising me for making them drive out in an ice storm. When I was stabilized and lying in the ER, terrified, begging the social worker at my bedside to just let me go home, she gave me a hateful look and told me "You should've thought about that before you did what you did, then," turned on her heel, and walked out.

Nobody came to visit me. My supposed friends sent my calls straight to voicemail. They told me afterwards that they just didn't know what to say to me, and that my depression made them "uncomfortable," so they chose to abandon me instead.

I was diagnosed and misdiagnosed for years. My chart ran the gamut of borderline personality disorder from the hospital psychiatrist, who spoke to me for a total of 30 minutes during my two-week stay and made accusations rather than suggestions; bipolar II disorder from another therapist, later changed to just bipolar disorder by yet another who didn't believe that bipolar II or any sort of spectrum existed; and, of course, variants on the theme of "angry teenager" and "situational depression, it'll clear itself up if you just think happy thoughts."

I gave up on psychiatrists and psychologists and therapists and social workers for a very long time.

Then, with my self-medicating at an all-time high, unable to hold down a job, and my meager savings going to buy more alcohol and more cigarettes just to keep my brain quiet, I finally found a mental health crisis center that would help me. The diagnosis was now major depressive disorder and complex post-traumatic stress disorder. It was explained to me that the CPTSD, when combined with the MDD, would look exactly like borderline or bipolar disorder to someone with little to no experience in helping trauma survivors, or someone who couldn't be bothered to ask the correct questions.

I tell this story because with multiple recent celebrity suicides in the media, I feel it's important to do so, but with the following coda:

I'm still depressed -- in fact, I've been dealing with a bad downswing for the past week or so -- but things are better.

I'm one of the people that medication just doesn't work for, so there was never a good resolution to that. The closest we ever got was Celexa (citalopram), which worked for about a year before I developed such a high tolerance for it that there was no longer a safe dosage for me to take. I've been clean and sober for two years as of the end of August; getting there was an uphill battle with plenty of false starts and setbacks, but I'm finally at the top of the mountain. I quit smoking a few years ago and never looked back.

I found an incredible therapist specializing in EMDR to treat my CPTSD. After a year or so of regular sessions, I could finally deal with my trauma well enough that the only remaining beast is the major depressive disorder, for which there is no cure. Cutting ties with unsupportive "friends" was a step in the right direction. By being honest with myself and with other people about my mental illness, I've managed to curate an amazing support network of friends that always have my back, no matter how low I may spiral. I've found that, at least for myself, hypnosis has helped for severe depressive swings or anxiety attacks, although I also feel the responsible thing to do here is remind people to please continue taking your doctor-prescribed medication and do not stop in favor of something with no scientific or medical evidence and may, in fact, be entirely psychosomatic just because one person on the internet said it worked for them.

It took me a long time to overcome the fear of the stigma that surrounds mental illness -- the one that often prevents people from asking for help before it's too late, or makes them feel like if they speak up, they'll be outcasts. There's a certain guilt that accompanies depression, as well, especially when you can look around and logically say "yes, everything is great, there is no reason for me to feel this way," and yet you still can't feel anything approaching joy or contentment. You wonder what's wrong with you. Are you just being spoiled or entitled? Are you subconsciously just seeking attention like so many others have accused you of doing? Is it really just that you're not thinking happy thoughts hard enough?

No. The "problem" is that you have an illness, like an additional 42.5 million people in the United States alone, and that other people have made you feel bad about something that is entirely out of your control. It's the equivalent of having a broken leg and being scolded because you can't run a marathon, or telling someone with cancer that they're only sick because they don't smile enough.

For anyone suffering, please know that there are many resources available to you. There's online therapy options if you can't get to a therapist, or are nervous about talking to someone face to face, that can help you, no problem too big or too small. If you're in a crisis right now, please look here to find the Suicide Hotline for your country, or if you're anxious about talking on the phone, the Crisis Text Line will let you text with a counselor. If you, yourself, are not suffering but know somebody who is and want to help, check out articles like this one on how you can help your loved one.

Above all else, remember that nobody in this world is entirely unloved, even if it feels that way sometimes. Reach out to trusted friends and family -- and remember that yes, internet friends count just as much as real-life friends do. Do your best to fight the little voices of the Terrible Things that tell you you're burdening them or that they don't understand what they're getting into.

Be excellent to each other, folks, and if you can manage it, be excellent to yourself, too.