On Failing Gracefully

I haven’t blogged in three months.  To be honest, blogging is just another one of the things that have fallen by the wayside while I’ve been making a desperate attempt to keep my life in some semblance of order.  There has been so much going on (I’ll get to explaining why in a moment) and I’ve been trying to juggle so many things that I end up just dropping them, sometimes without even realizing it.  And so, for awhile, I’ve planned to write a post on failing gracefully–because that’s exactly what I haven’t been doing.

As a brief explanation of what I’ve been up to the past couple of months–I started having some stress about work, so I stopped working on my personal projects because at the end of the day, I was exhausted.  I also very suddenly had to move at the end of last month, into a house that needs a lot of renovation work.  I fought with my boyfriend a lot because I was so stressed out.  My dog destroyed my parents’ picture window, because she was also stressed out.  My kid started Kindergarten, so his tuition bills came due, and of course no one’s helping me with those.  To top everything off, I’d been talking about going up to Maine and backpacking for the better part of a year… and because of the move, the trip I’d been looking forward to couldn’t happen.

It’s been a pretty crappy time, to be honest.

Things came to a head the day before I had to sign the lease on the house, when my boyfriend (who is also stressed out because his business has been lagging) made the spur-of-the-moment, stress-induced decision to tell me that he couldn’t help pay the rent and I shouldn’t sign the papers.  The house is my parents’ rental property and they need a tenant to pay the mortgage on it, so if I didn’t sign the lease, my parents’ finances would take a tremendous hit–and they were already mad enough about my dog that I really had to be out of their house.  The only way I could afford the house and the rest of my bills comfortably is if my boyfriend moved in, so when he delivered this news–via Facebook Messenger, in the middle of my workday–I very calmly got up from my desk, locked myself in a stall in the womens’ restroom, wrote him a breakup text, and proceeded to completely lose my cool.

So why am I sharing all of these stressful failures with you, dear readers?  Do I expect you care about my window-eating dog, my parents’ rental house, and my boyfriend’s business ventures?  Not really.  But I do want to upfront and honest about something: I fail at things.  A lot.  And I don’t always fail gracefully.

What does it mean to fail gracefully?  In software, a one-sentence definition might be “averting catastrophe and providing a clear, understandable error message to the user when things go wrong”.  In life?  Perhaps we can emulate software–avert catastrophe, provide error message.  Instead of freaking out every time we fail at something, graceful failure means accepting that particular failure, moving past it, and learning from it.

I picked up a neat project at work, so I’m less loathsome of my office.  I signed the papers and moved into the house–and my boyfriend provided a check for half the rent.  I purchased a couple of radio barrier transmitters for my dog (like an indoor wireless fence), and she’s stopped eating windows.  I have enough money to pay for my child’s education.  None of the things I was so worried about turned out to be terrible–and, deep inside, I probably knew they weren’t going to be.  I allowed myself to catastrophize failure so much that I kept failing repeatedly, like software with no exception handling–the failure bubbled up until I broke down in the restroom.

Looking back on the last couple months, I’m a little embarrassed.  But I’ve tried to fail gracefully at my failure to handle failure–when I get stressed out over the house or work now, I ask myself if it’s really worth getting worked up over.  Most of the time, I realize that continuing to stress about it is counterproductive, and that makes it easier to either take corrective action, or to sit back and let the situation run its course.

For example, renovating the house–I pulled down wallpaper in the living room, and found that the previous homeowner (before my parents) had DIY’d some wiring.  I found this out because he had left gaping holes in the walls and stuck the wallpaper over them.  I’d been ready to paint the wall (the wallpaper had been sealed and painted over previously, but I found an unsealed spot to start peeling it up and couldn’t resist), but suddenly I was set back a week because I needed to patch large portions of wall.  Although I was distraught when it happened, the next day it was funny.  My boyfriend picked up some wall patches and compound on his way home from the office, and I put the wall back together.  Crying about it wasn’t going to fix the wall, so I laughed about it instead and did what I could to solve it.  Now that the wall is patched and painted, you can’t even tell where the holes were.

And so, gentle readers, do not be me.  Next time you experience a failure, take a step back, take a deep breath, and ask yourself if things are really as bad as they seem.  Chances are they’re really, really not.

How I Won my Coding Bootcamp by Ponyrolling

If you’ve been on the internet for longer than ten minutes, you are probably familiar with Rickrolling–tricking someone into listening to the earbug that is Rick Astley’s Never Gonna Give You Up under the guise of sending them legitimate information.  Before Rickrolling, there was Duckrolling, which is where you’d get sent this stupid wheeled duck instead of Rick Astley.  Either way, *rolling is bait-and-switch, you expect one thing and get another.  For example, I won my bootcamp by ponyrolling.

It all started three weeks into the program.  We had whiteboard tabletops, and I drew this on the table:

My Little Pony: Coding is Magic

It was pretty funny, the instructor took a photo of it, I took a photo of it, everyone laughed.  So a week later, I drew another pony while we were talking about data structures.  And I drew a couple ponies when we talked about exception handling.  And it got to be a thing that I was making ponies out of programming concepts and computer languages.  Just a quirky little thing, right?  Ponies on whiteboards.  Nothing extravagant.

We were assigned final projects with a week to go: make a portfolio website using ASP.NET MVC, hook it up to a database, do some other stuff, it has to have this, this, and this other thing.  By the middle of the week, a classmate had told me that I had to put a pony on it, because of the whiteboard ponies.  So I brought in my Macbook, opened up Photoshop and made a good version of that original C# pony:

C# Pony

Originally, I just had C# Pony hanging out on the home index view as a way to take up space.  I was going to remove her and put in another image later, but people would walk by and comment on the pony, and then they were upset when I said I wasn’t going to keep her there.  So I tweaked the stylesheet to make the site purple, and kept the pony, because so many people said they really liked the pony.

I got done with the site pretty quickly, and decided to make another pony.  Since the site was done in C# + HTML and drew project information and image URLs from a database, I decided that C# Pony’s companion would be SQL Pony:

SQL Pony

People were getting a pretty good laugh out of the ponies, which made me happy.  I really like My Little Pony, although I’m not completely sure why.  At least part of it is nostalgia value, having watched the cartoons and played with the toys growing up.  The newest incarnation of My Little Pony, Friendship is Magic, is actually a really good cartoon, if you can get over the characters being colorful small horses.  Plus the main character reminds me a lot of myself (Twilight Sparkle is a total nerd unicorn who special talent is being a total nerd), and her friend Pinkie Pie is a dead ringer for my dear friend Terri (in personality, of course, Terri is a real person and not a pony).  I don’t really have a large problem with being an adult who likes a little kid cartoon, either, although it’s also not as though I go to parties and introduce myself to people by comparing myself to Twilight Sparkle the nerd unicorn.

Moving on.  People were getting a pretty good laugh out of the ponies, and I liked that.  I like it when I can make other people laugh, especially when it’s over something small and silly.  I also don’t particularly mind making a fool of myself for a joke, so long as I’m sure people are going to laugh and not just silently wonder if I need to be institutionalized.

That Saturday evening, a little more than 24 hours before the project was due, it came to me:  it’s not enough to have two ponies.  If my bootcamp pals wanted ponies, then by all means, I would give them ponies.  I would give them so many ponies. 

Just as I had finished reading about session data and writing up some very basic code that switched the CSS the site used based on a session variable, my classmate Stephanie posted something on my Facebook wall.  She was at Plato’s Closet, which is a kind of resale clothes shop, and she had found a marvelously pink My Little Pony sweater, in my size, for $8:

pony sweater

Just as I was about to ask her to get it for me and I’d pay her back, she asked if I wanted her to get it for me and I could pay her back.  Of course I wanted it, because it was the perfect accompaniment for my plan to unleash so many ponies on my unsuspecting classmates.

I spent most of Sunday at Panera, eating an almost sickeningly sweet carrot cake muffin, drawing ponies and giggling to myself in the corner.  Late in the afternoon, I had a stylesheet that my eight-year-old self and her collection of My Little Ponies would have been immensely proud of.  I just still felt as though it was missing something

Only one of my classmates knew of my daring plan.  When I confessed on Facebook Messenger that I felt as though my utterly ridiculous style change was not ridiculous enough, this happened:

Him: My recommendation: have the ponies dance by tilting them left and right with 2 stunning frames of animation.
Me: …oh my god
Me:  You’re a genius.
Me:  That idea was too much for Visual Studio, apparently, because it’s crashed.
Him:  You should be able to do it with the same CSS animation tools I used for blinky text.
Me:  It’s perfect.
Me:  You don’t know why it’s perfect because you are not looking at the pony extravaganza right now, but trust me, it’s perfect.
Him:  I’m helping!
Me:  You’ve just saved Christmas.

It ended up being more a gentle rocking motion than the original vision of “two stunning frames of animation”, but that actually ended up as a good thing.  The effect is mesmerizing.  He also suggested making the cursor into a pony, which is surprisingly easy to do with CSS3.  I remember back in the day when loading up a horrible, hard-to-use custom cursor on your Geocities page required a ton of JavaScript, but now all you have to do is something like this in your stylesheet:
body {
cursor: url("Other_Images/ponycursor.png"), auto;

So I had a custom pony cursor, dancing ponies, a rainbow gradient header background, fluffy clouds for the body background, I had a very girly cursive font courtesy of Google Fonts… and the majority of my content was the same.  For all intents and purposes, I had taken a very boring, adult website and overloaded it with pink/purple/rainbow/ colors and so many ponies.

Stephanie brought my awesome new pony sweater to class on Monday morning, and I parted with $8.  I put the sweater on and waited until just before lunch to present my masterpiece.

I got my laptop plugged into the projected and started.  The site begins looking like this:

site with normal stylesheet (boring!)

I clicked through the pages, pretending like nothing was wrong and like I also wasn’t wearing a pink fuzzy pony sweater.  A couple people who had seen the site that Friday were disappointed that the ponies were removed.  Good.

The project page has all of my bootcamp projects laid out in little display boxes.  There is actually a box for the ponies, and, because I have the projects being sorted alphabetically on the back end, they ended up right next to box for the portfolio project.  So I could laugh it off, haha, yeah, I put the ponies on here for you guys, you can find the ponies on Github.  (You can, for the record, find the ponies on my Github.)  I clicked into the detail view for the portfolio project to show off the jQuery lightbox (Fancybox) I’d used to scroll through the screenshots for the project… I had included one of the second stylesheet.

Down at the bottom of the page, tucked under the copyright information in the footer, are three small icons.  Clicking an icon fires an AJAX post to the server that resets the session variable; when the post is successful, some jQuery takes care of scrolling back to the top of the page and refreshing the browser window.  Some Razor at the top of the layout partial view for the site loads the session variable and uses it to determine which stylesheet to apply, so clicking the second icon flips it from the above image to looking like this:

moderate pony stylesheet

There were some laughs, oh, I got them good, haha, the site is purple and there’s ponies!  I clicked through all the pages on this, too, just to show that it was the same site with a different stylesheet.

But wait.  There are three icons at the bottom of the page.

I toyed with my sweater a little.  The thing about being an adult who likes My Little Pony, I said, not quite looking at anything, is that you really have to own up to it.  It’s not just a casual thing, you kind of have to really go big or go home… so I decided to go big.

Are you ready for Super Bonkers Pony Mode?

Are you really ready for Super Bonkers Pony Mode?

Because here it is:

super bonkers pony mode

The ponies in the header sway gently back and forth.  Constantly.  The cursor is a tiny pony (unfortunately, Windows screenshots don’t pick up the cursor).  The only thing it doesn’t do is play the My Little Pony theme song, because I absolutely hate websites that auto-play music… but I’m kind of thinking that maybe it should do that.  I was also hoping to get some things to sparkle, but the jQuery plugin I found to make DOM elements sparkle didn’t work, and I ran out of time to futz with it.

The reaction to Super Bonkers Pony Mode was outstanding.  I wish I could have taken a photo.  There was so much laughter.  It was everything I had hoped it would be.

On my peer review form, under the question, “What could be improved?  How?”  someone wrote:

Nothing.  She won, it’s over.

…and that, ladies and gents, is the story of how I won my coding bootcamp by ponyrolling.  Please hire me, I’m funny.