How to Raise Your Kids to be Asian

This article was lighting up Twitter today, so I took a peek. The premise is that Asians in America are routinely discriminated against in the college admissions process, at least among top tier private universities. This trend is nothing new, and, rather than debate the point, the article focuses on why Asians excel in the first place.

Well, as it turns out, I'm an Asian American who went to college, and therefore I have something worthwhile to say about this topic!*

*Remember when Vice President Dick Cheney shot a man in the face, and everyone, overnight, became a comedian/expert on the matter? That's kinda how I felt when this article came out.

Life isn't fair

Some people are blessed with swoopy hair and trust funds. Others are blessed with immigrant parents who work their fingers to the bone so that their children have a better life. I would fall in the latter category. Here are the unfair advantages that I had growing up:

  1. Parents who left their home country because they wanted their kids to get a better deal. I remember visiting Seoul with my mom when I was 5. On the plane ride back, when she thought I was sleeping, she cried to herself, silently. I have never, ever forgotten that -- my beautiful, unreasonably cheerful, strong-as-nails mother suddenly seeming so vulnerable and sad. I imagined how heartbroken I'd be if I had to leave her, my dad, my brother and my sister behind to go to a new country, and realized that was exactly what she did for me. I didn't know it at the time, but what I felt eating into my heart, it was guilt. That guilt stays with you. That guilt gets you into the Ivies. 
  2. A cultural community where education is everything. It's easy to ace the SATs when you start studying for them in junior high. Have you heard of Kumon? It's basically a place where you do math problems in a booklet for gold stars that map to, literally, nothing. My sister and I started that in elementary school. I began piano lessons when I was 6, then switched to flute at 11 because it was "edgier." My dad took us to the library every week, where we'd check out no fewer than 20 books at a time, followed by lunch at Arby's. Reading, writing, arithmetic, and beef 'n' cheddar sandwiches. This was life in the Kim household. 
  3. A cultural community that values grit. The power of hard work and human agency is a common thread in the Korean community. Work hard. Work harder than you can imagine. Work harder than everyone else. Don't complain. This is the norm for most Korean youth, particularly those who are fortunate enough to have immigrant parents. My parents had very high expectations for me, but these expectations were backed by unconditional love. Who was I to complain? 
  4. A really good Korean church. Korean churches are LEGIT. Organized religion kept me on the straight and narrow, and made me a better person. I did a lot of volunteer work through church, and met all kinds of people who were way worse off that I was. As a practical matter, it's hard to get into trouble when your weekends are occupied practicing flute with the praise band. My faith became especially important for me in high school after I finally grew boobs. Those boobs were for Jesus. Besides keeping me out of trouble, religion gave me a safe space to be myself -- a total weirdo -- and be OK with it because I knew there was a higher power out there who had a plan for me. And, as it turns out, hardworking weirdos at peace with themselves totally win at life. 

The majority of these advantages can be replicated by anybody. Raise your kids to work hard, teach them that they can do anything, provide a strong moral compass, and love them unconditionally. The one thing that you can't replicate is immigrant guilt. That is super powerful and amazing. I think its power comes from the complete lack of entitlement, and prevailing sense of gratitude it imparts. Growing up, we never felt anyone "owed" us anything. We were just super fucking happy that our parents moved to America! If you can find a way to instill those values somehow, you'll be good.

Inconclusive Factors

There are a few other factors of my upbringing that contributed to how I turned out, but I'm not sure were essential to success. In any case, most Asian students at top universities probably didn't have all these advantages, and they turned out fine.

  • Getting teased for being different. When I was little, kids routinely teased me for being weird. Rocking an Asian Mom Perm as a kindergartener probably didn't help. In middle school, a mean girl called me a "chink." (To which I responded, "That's not even the right racial slur!" and then cried.) I got rejected from the drill team, which is possibly the dorkiest after-school activity to get rejected from. Kids teased my brother all the time. All these things made me stronger, more empathetic, and more driven to get the hell out of Sacramento.
  • Having an autistic brother. The New York Times did an excellent series on autism in America back in 2004. One article focused on the impact that an autistic child has on his or her siblings. It can be stressful, but for me it was a healthy kind of stress. Children are far more resilient than many of us assume. More than anything, it helped me bridge cultures -- between Korean and American, and between autistic and everyone else. I dealt with a lot of complexity, and had a lot of opportunities to solve real-life problems from a very young age. 
  • Going to public schools. I'm a big fan of public schools. School taught me how to be scrappy and exposed me to a ton of diversity. Sheltered I was not. I know a lot of students get in to top tier universities from elite private schools, but that's not how I did it. I did it by going to decent public schools, and making the most of every resource I could find. I spent lunch in my high school guidance counselor's office poring over the scholarship binder. I was in every academic club. I hustled and got things done. College was a pristine bubble compared to high school. 
  • Being raised in Seoul by a loving extended family. I was born in America, but my parents sent me to my grandparents when I was baby because, with two little ones already, they needed help. I spent the first 3 years of my life being loved and doted upon by my grandparents, aunt and uncle. All of this adult attention turned me into a little monster, and is the best explanation I have for my unjustifiably high level of self-esteem today. I didn't realize this until after I read Tina Fey's Bossypants, where she recounts the boundless encouragement she received as a child after being slashed across the face by a stranger in an alley, and how that attention made her think she was special. I got all the benefits of that, without the violence.
 Growing up in Korea, dressed like my grandpa

Growing up in Korea, dressed like my grandpa


"Cultivate the Karass" -- Saying Goodbye to Jake Brewer

 

Karass: "A network or group of people who, unknown to themselves, are somehow affiliated or linked, specifically to fulfill the will of God."   -- Kurt Vonnegut, Cat's Cradle, 1963


 Jake's mom, holding the post-it that he had on his monitor at the White House

Jake's mom, holding the post-it that he had on his monitor at the White House


  My So-Called Life , episode 14: "The Wagon"

My So-Called Life, episode 14: "The Wagon"


Last Saturday, we lost Jake Brewer, at age 34. He spent his life helping others, died helping others, and made the world a better place. He is survived by his incredible wife, their little girl, and a baby on the way.

In other news, absolutely nothing about life is fair.  

I met Jake 7 years ago, back when I was living in DC. We were part of the same group of friends, slouching purposefully towards adulthood together. I didn't see him often, but every month or so I'd hear from him by email, or read about something cool he was working on. 

I was sure that our paths would continue to cross, since he was working on tech policy, right around the time I left government and joined Udacity, an education startup that few people had heard of. Jake, being Jake, sent me a note of encouragement.


The last time I heard from Jake was in May. He was two weeks away from being appointed to the White House, and he took the time to respond to an email I sent to our friends group asking about contacts at 18F.  A friend of mine was interviewing there, and I wanted to put a word in for her. 


That was Jake. No matter what was going on in his life, no matter how busy his day, he made time to help a friend of a friend. 

Later that month, I heard the news that he'd joined the White House as a Senior Policy Advisor to Chief Technology Officer Megan Smith. At the time, I was working crazy hours, and I didn't pause to congratulate him for this seriously awesome achievement. I told myself I would "later," then I forgot. That's because I'm not Jake Brewer; none of us are, or ever will be. Now that he's gone, we all need to step up our game.

Today, a friend sent me a photo of a post-it that Jake had tacked onto his monitor at the White House: "Cultivate the Karass." 

That was the perfect way to describe it. Of course, Jake! We were part of the same karass. I'm sure many people felt this way about him. Jake dreamed big and believed not only in his dreams, he believed in yours, too.

There’s a concept called Dunbar's Number that posits that a single human being can only have 100-250 “stable social relationships,” which refers to “relationships in which an individual knows who each person is, and how each person relates to every other person.”

Jake basically exploded that concept into outer space. His Dunbar Number was easily in the thousands. Which makes sense, knowing Jake. He was always an extreme overachiever, and that extended to his superhuman capacity to love and connect with others.

Jake's funeral (I can't believe I'm typing this) is this Friday at the National Cathedral, so instead of graduating from Hack Reactor as planned, I’m flying 2,442 miles to say a final goodbye and thank you to my friend. 

Jake’s passing has me thinking a lot about our purpose in this world, which I suppose is cliche, but I’m human, so bear with me. I'm going to revisit this thought in a moment, but right now, I need to tell you about something important.

When I was 10, my brother died in his sleep, a few weeks before his 14th birthday. He was mentally disabled, and two autopsies revealed no conclusive cause of death. He went to bed, and, come morning, his sweet, loving spirit had left us.

That night, I remember watching the local news intently, waiting to hear the newscaster broadcast his death. But there was no announcement. The next day, I got up at the crack of dawn to wait for the newspaper -- surely, the Sacramento Bee would print a front-page article about "the tragic passing of Edward Kim, aged 13." But there was no article. There wasn’t a single mention anywhere of the light that had gone out of my world.

To me, it was shattering. This was the most painful event of my young life, and I couldn’t understand why the whole damn world wasn’t hurting as bad as I was. People should know about my brother. They needed to know. Because he was beautiful and special and utterly important. I thought if the world only knew, it would validate my pain somehow. But the world didn’t know. And so the world kept moving, not stopping for even a glance.

The world felt a lot smaller back then. There was no Facebook, no Twitter. It was the era of dial-up and AOL (if you weren’t around for this, imagine the sound of, “oooinggeeeeonninggeeeongkk,” followed by, “You’ve Got Mail!”).

My family and our close friends were alone in our shared grief. The walls of our home enclosed it, like something finite and palpable, as if opening a window would let it seep out and escape -- the smells of Korean potluck left out in Pyrex casserole dishes, the warmth of our family room where bodies huddled on overstuffed sofas, the sounds of my mother wailing, the prayers to God sent heavenward, the voices of children crying and asking why -- our grief was contained within four walls, under one roof. Our grief was unitary, compact, an island. It was unfathomable, and it was all ours to bear.

In the years since then, I’ve lost friends and family members, as many of us have, and the act of grieving is different every time. Social media has changed the way we know each other, so naturally it’s changed the way we mourn each other. Our grief is diffuse, broad, visual, and everywhere.

When I heard about Jake last Saturday, I was in shock. I read the initial news item in the Post, and thought, “This isn’t enough. This doesn’t tell the world enough about who Jake was.”

I knew in the days ahead, his beautiful, loving family and his vast network of loyal friends would tell that story. And they did. We did. On Facebook and Twitter. On email lists and at gatherings. In the New York Times and the Washington Post. On TechCrunch and Re/code. On FOX News and MSNBC. Even from the offices of the White House, where President Obama issued a statement. Unlike my brother, the world knew who Jake Brewer was. They cared. They understood the magnitude of what was lost.

The strange thing is, the recognition, itself, hasn't made the loss any easier to process. If anything, it makes grieving more painful because you realize, objectively, how much Jake meant to so many people outside of your orbit. It's like standing before the Pyramids of Giza. You look up, overcome by the scale of the thing. It is grief, beyond measure. And it is heartbreaking.

I don't know how one person was able to touch so many lives, to be a friend to such a broad slice of humanity. At one of several memorial services that change.org hosted this week, a friend talked about how Jake always made sure to open 5 slots for every one that he took. Another friend noted that Jake knew himself, but he also knew who he strived to be, and he worked his ass off everyday to be that person.

All of this has me wondering, with respect to my year-long journey to become a software engineer, “Why am I doing this, anyway?

Ultimately, I’m doing this because I want to build things that help people. I'm doing this because I want to solve real-life problems with code. I'm doing this because I want to, in Jake's words, "totally rock this," and, like Jake, I'm going to bring a shit-ton of people with me along the way.

So, I guess, my question to you is: Why are you doing what you’re doing? What is your life’s higher purpose?

That's a question that Jake would have loved to chew on. We can't have that conversation with him, so let's have it with each other, with Jake in mind. Let's cultivate the karass. For Jake. 

Hack Reactor Mail Bag!

Hello, reader! 

I've gotten a variety of questions about Hack Reactor, and am batching them here since they are often repeat questions. My goal is to help prospective students without undermining Hack Reactor's admissions or assessment processes (I'm not going to repeat what questions were asked, and how I answered them, for example). 

Keep in mind that Hack Reactor updates their processes regularly, so my experience may not be relevant to whatever is in place by the time you are reading this. 

With all caveats declared, on to the questions! 

About that Hiring Day Assessment...

Question: In "Day 41 of Hack Reactor: Hiring Assessment and Solo Week", you mentioned the repercussions of not passing the assessment. If you don't pass it, is there an opportunity to take it again? Does anything else happen if you don't pass? Have you heard if you have passed yet and do you know the pass rate?

Answer

If you don't pass, there is not a second chance to take the exam. The point of the assessment is to do just that -- assess where you are, at that point in time -- not to pass the exam, itself. What matters is that you and the teaching team at Hack Reactor have a solid understanding of where you are, relative to the bar they set for hirable engineers, and if you aren't where you need to be, then you have a good basis for planning how to get there. 

I cleared the bar, but I found that the assessment was a legitimate challenge. I don't feel comfortable disclosing the pass rate because it's going to vary per cohort, and cohorts are relatively small (40 students in mine), so even one person not passing will have a non-trivial impact (on an absolute scale) on the pass rate. I can say a very small number of students did not pass the assessment. If you don't pass, then Hack Reactor cannot recommend you to their network of companies, BUT they will still help you strengthen all the skills you need in order to get a job as an engineer (technical skills, professional skills, interview prep, etc). 

Just to be clear, passing or not passing the Hiring Assessment (or ANY test), says nothing about your potential. It says nothing about how hard you've worked, or how hard you will continue to work to reach your goals. It says nothing about you as a person. All it reveals is where you are, on some pre-set scale, at some arbitrary moment in time.

Had I not passed, I would continue to make the most of every opportunity to learn and grow, which is what I've done my whole life, and what has gotten me so far in the first place. I would continue to have the same, positive attitude about learning and finding solutions to novel problems, and I'd continue to seek out help and feedback in areas where I need to improve.

Most importantly, I would be just as proud of how far I've come, whether I had passed the test or not. No test could ever change that.  

Admissions: If you get asked to submit a project...

Question: How did you decide on what project to create? More specifically, how did you decide on something that might show the growth you've had since your last interview, without picking something too ambitious? 

Answer

I took the Udacity Javascript basics course (all content/projects free) and did the resume project. I also made a TODO list after taking a Treehouse course (paid). I submitted both, and am not sure if one or the other was more responsible for getting me a second interview.

If I had to do it again, I would pick ONE project that involves taking a user action (i.e. a click), and having that action render something to the DOM (i.e. display a photo) on the screen. I would not focus on style, just on pure functionality.

The "Cat Clicker" project in JS Design Patterns (free) is a fantastic model.

Don't feel like you need to rush to complete the project just so you can say that you did it. What's important is that you actually understand what is going on in your program, so you could explain it to someone if asked.

You should be able to explain your app logic, for example: What happens when a user clicks on the button? What is communicated to your program? How does your program handle the click action, and what does it do as a result? 

If you take the time to build and fully understand a project like the Cat Clicker (or anything else that involves a user interacting with the DOM, and something happening to the DOM as a result), you will be in a really, really good place entering Hack Reactor, and should have no problem with the interview because you'll learn so much through building the project. 

The callback struggle...

Question: I am having the same issues with understanding callbacks as it look like you were when applying. I applied to MakerSquare and got the same " you're so close" email as you and am supposed to interview again in two weeks. Would you be willing to or know someone who could talk to me about callbacks at some point? I'd really appreciate it!!!

Answer

If you are struggling with callbacks, you are not alone. This is one of the most common questions I get. I recommend looking for JavaScript meetups (Google "javascript meetups") in your area to find other developers who you can talk to. Keep looking until you find just at least one actual, living, breathing human being who has an interest in teaching (or just likes helping aspiring engineers). Buy that person food and/or coffee and ask for an hour of their time. 

If you live in the middle of nowhere and/or are not physically able to go to events like this, then it's going to be harder for you unless you're willing to commit to self-directed learning and don't give up easily. If you aren't getting anywhere after a few weeks and you've done the related section in Eloquent JavaScript and JavaScriptisSexy, then you could try hiring an online tutor through a service like eLance.

And if you can't hire anybody, my best advice is to get to know the Google Developer Tools console because it is every JS developer's BFF. Practice writing and calling simple callback functions, and track what happens at every step of the program using Dev Tools. I find that making callbacks explicit (i.e. actually seeing what value is getting passed to what function at what time) can really help demystify the concepts. And, bonus, Google Dev Tools is something you will use throughout your time at Hack Reactor (and as an engineer), so your time familiarizing yourself with it is going to pay off no matter what. 

How to Give GREAT Presentations

I have witnessed (and delivered) some crappy presentations. You all know what I mean. I don't understand why we continue to present with Powerpoint slides that are crammed full of text and read out loud. 

If you're interested in improving your presentation skills, I highly recommend this video. Scroll ahead to 1:57 if you want to skip the intro and dive right in. 

Side note: I am of the belief that presentations should be as BRIEF AS POSSIBLE. If you're showing off a product to your company or team, it shouldn't take you more than 5 minutes to demo it and be done.

My general rule of thumb is, no one should be talking for more than 10 minutes straight. Getting from the red square to the green square should be a sprint, not a marathon. Sprints are focused, motivated and quickly rewarding. Marathons are laborious, chafing, and people start dropping from exhaustion.

Stuff I'm Bad At: The Art of Abstraction

"Learning is any change in a system that produces a more or less permanent change in its capacity for adapting to its environment."

-- Herbert Simon 

 

Usually, I write about things that I'm comfortable with, and maybe even reasonably good at doing. Because a blog called "Stuff I'm Bad At" would be full of parallel parking, deciding how much food to order, and writing thank you notes on time. Who wants to read that? 

But today, I'm going to talk about an immense learning challenge I have, and it's going to be way more interesting than anything else I could write about. My problem lies in the task of abstraction. Specifically, I have trouble abstracting away from the internals of the "black box" of what a program is doing without mixing it in with the interface (what the user or, in our case, programmer, sees). This applies both to understanding and writing code, and it is the biggest hurdle I face on my path towards becoming a software engineer.


"Wonderful, but not incomprehensible."

 

What I love about programming is that it can explain and generate wonder, all at the same time. As Herbert Simon writes in The Sciences of the Artificial:

For when we have explained the wonderful, unmasked the hidden pattern, a new wonder arises at how complexity was woven out of simplicity.

The idea of unmasking simplicity is very much connected with the concept of abstraction, which I refer to in the context of programming as the practice of concealing unnecessary or irrelevant details of a program, and surfacing only its essential features. A programmer who is able to abstract her way around a seemingly complex system and grab ahold of only the relevant details of that system to apply to her particular task has potentially endless power. For me, learning how to do this is akin to discovering a new natural law. 

Programmers rely on abstraction to build clean and intuitive interfaces that allow others to interact with their programs. An interface, broadly speaking, is the meeting point between an inner and outer environment.

For example, imagine you have a mug (hopefully you don't have to imagine too hard because mugs are pretty awesome). Your mug is made of a solid material, has a capacity of 16 fluid ounces, and has a handle -- these qualities serve as affordances that guide you to the mug's proper use: to hold liquid and physically maneuver that liquid with one hand. The mug is your interface to drinking coffee, tea or other beverage. In order to understand the mug's intended task, you don't need to know how the mug was constructed, or whether it's ceramic or porcelain or glass. You just need to know that it's a mug. 

Applying this model to a code example, consider Underscore's function signature for the array method _.indexOf:

_.indexOf(array, value, [isSorted]) Returns the index at which value can be found in the array, or -1 if value is not present in the array.

  _.indexOf([1, 2, 3], 2);
  => 1
  

Just like how anyone can pick up a mug and know what it's for, a programmer should be able to read the _.indexOf function signature (the interface) and quickly grasp the essential features of the function it represents, without needing to "go to the mug factory" by diving into the code that comprises the function line by line.

And just like how a mug is designed to present its most obvious use to the external world (the outer environment), so too must a programmer take care to design an interface with clarity and precision; by naming functions and inputs appropriately, for example. This helps account for weirdos like you and me who otherwise might try to use their program in some way it was never designed for.

So, what happens when we breach the mug factory and go "under the hood" of _.indexOf?

From the Underscore documentation:

_.indexOf = createIndexFinder(1, _.findIndex, _.sortedIndex);

That doesn't look so bad, right? As it turns out, _.indexOf is simply an invocation of a generator function, createIndexFinder, which takes in 3 parameters. Let's find that helper function...

function createIndexFinder(dir, predicateFind, sortedIndex) {
  return function(array, item, idx) {
    var i = 0, length = getLength(array);
    if (typeof idx == 'number') {
      if (dir > 0) {
          i = idx >= 0 ? idx : Math.max(idx + length, i);
      } else {
          length = idx >= 0 ? Math.min(idx + 1, length) : idx + length + 1;
      }
    } else if (sortedIndex && idx && length) {
      idx = sortedIndex(array, item);
      return array[idx] === item ? idx : -1;
    }
    if (item !== item) {
      idx = predicateFind(slice.call(array, i, length), _.isNaN);
      return idx >= 0 ? idx + i : -1;
    }
    for (idx = dir > 0 ? i : length - 1; idx >= 0 && idx < length; idx += dir) {
      if (array[idx] === item) return idx;
    }
    return -1;
  };      
}

Welcome to the mug factory! At this point, you've likely forgotten why you're even here. I have, and I'm writing this thing.

My challenge is to avoid taking unnecessary tours of mug factories, while also building my own super awesome mug factories. I'm making good progress on the first part of the task: it takes some discipline, but I've definitely become more sensitive to internal and external flags telling me when I don't need to know the internals of some piece of code, and it's OK to move on. 

What's much, much harder for me is building the mugs and the mug factories, or programming both the interface and the "black box" code that you shouldn't worry about.

It's a super weird sensation to know that you're writing code that a future version of yourself will deliberately ignore, and at the same time having to remain cognizant of how Future You and other programmers will interact with the interface to that code. Coding becomes something of an out-of-body experience.

For me, the real problem is that I've never been particularly good at thinking in abstract terms. My mind jumps into details and keeps digging until every possible nugget is unearthed. This impacts how I reason about a program because I can easily lose sight of what the hell it is I'm supposed to be returning.  

In other news, I've learned that I have far less mathematical intuition than I previously assumed. Apparently being able to do basic math in your head really fast doesn't actually make you a mathematical thinker.


"The best thing that can happen to a human being is to find a problem, fall in love with that problem, and live trying to solve that problem, unless another problem even more lovable appears."

-- Karl Popper 

 

I am in love with my problem. I'm positively obsessed with it. Who could wish for a better, more lovable problem? We all should be so lucky to be made aware of any deficiencies impeding us from doing our best work. Otherwise, we would never know to improve!

After sharing my situation with a number of people who I respect and admire, I've put together a few strategies to help address this challenge:  

  1. Draw pictures. I've found that mapping out a problem on paper helps me tremendously, which makes sense since the very act of drawing something to represent something else is a method of abstraction. 
  2. Write your test suite first. As the maybe 3 readers of this blog know, I'm a big fan of test suites. By keeping your eye on the prize, you're less likely to go astray. At the very least, always know what a function or a program is expected to return to the person who calls it. Write it down in a comment at the top of your code if you need to.  
  3. Stay vigilant. I spend a good portion of my day wrestling with myself to stop thinking so much like myself, and imagining what it's like to think in this totally different way. It's a little exhausting. Eventually, it will become less so (I hope). 
  4. Find examples. When I witness a classmate making a cognitive leap, I'll ask how they got from Point A to Point B. I find it super interesting to hear how others visualize and reason about problems, and I hope that I'll eventually get to a similar level of intuitive cognition. 
  5. Have empathy. This particular strategy is fairly easy for me to enforce. It feels very natural for me to imagine how someone else would feel in one situation or another, and this will help me build better interfaces that account for a variety of potential users. 

If you have other strategies to share, please do so in the comments! 

 

 

Google I/O, Android Nanodegree, and Not Doing Homework on Time

Oh my gosh. You guys. I know. I have been really really bad about blogging of late, but I have a good excuse! Which is, um, just lots of work! I have been a busy little bee.

Google I/O 

We launched the Android Developer Nanodegree at Google I/O on Thursday! Or, more specifically, Sundar Pichai announced it at the Keynote, and I launched it from my kitchen table, in my pajamas and rocking a scrunchie (according to the lady who cuts my hair, I have a lot of breakage, so I've taken to wearing scrunchies to bed).

 Photo:  Techcrunch

Photo: Techcrunch

This was my second I/O, and it was definitely more chaotic than last year. First of all, Udacity and Google had a Developer Training booth this year, where we gave out these phone battery charger thingies in exchange for downloading the Udacity app and signing up for one of our free Google courses. Holy crap. People really wanted those phone charger thingies. They went like hot cakes, if those hot cakes also charged your phone. On Day 2, we ran out and gave away Udacity sunglasses instead. These were markedly less desirable than phone charger thingies. Here is an actual conversation I had with multiple people about the sunglasses:

  • Patron: What are those?
  • Me: Sunglasses. 
  • Patron: OK. But are they 3D? VR? 
  • Me: Um, no, notsomuch. 
  • Patron: (visibly confused) What do they do?
  • Me: Oh! Well! They block 100 percent of UV rays from your eyeball area. Also, there's this nifty Udacity logo on the side... (voice trails off as patron wanders away, distracted by a cardboard box that transports them to outer space) 

I did, at one point, attempt to model the sunglasses. This resulted in one person handing them back to me. Whatever. I am an excellent Booth Human, no matter what people say. 

Also adding to the chaos, the prevailing interior theme of I/O this year seemed to be "low to the ground" because the entire venue was full of bean bag/pouf cushion seats. I think this was supposed to give everything a relaxed, chill vibe. Anyway, it really reminded me of this:

 Lounging on dog beds = the new hotness

Lounging on dog beds = the new hotness

At one point, I legit tripped over Sebastian, Udacity's CEO, while en route to get sour apple gummy rings (they were running low, and I panicked). Sebastian, to his credit, does not care in the slightest about getting tripped over, and we went through the slides for his I/O session on democratizing education, which ended up going very well. 

Android Nanodegree 

So this is what I've spent the last 6 months working on. Our team made a whole slate of world-class educational courses with Google, and all these courses are now available to anyone with an internet connection, for free. The Nanodegree is the credential, and that costs money, but the content, itself, is free (and always will be). Weirdly, there are a lot of MOOC haters out there, and I don't really understand what MOOCs ever did to these people besides have a seriously unfortunate acronym, but even the worst hater can't be opposed to bringing free programming courses online, right? 

Trailer video for the Android Developer Nanodegree (Production Credit: Calvin Hu) 

Not Doing Homework on Time

I cleared the soft deadline for Hack Reactor's Section 1 homework, but did not make Section 2 (it's tonight). The hard deadline is at the end of the week, and I'm feeling good about making that one. It's unnerving how quickly time is flying by. My cohort starts in 4 weeks! 

What I'm working on this week: Learning jQuery, implementing a front end, and re-implementing a few advanced Underscore functions. 

Complete and utter mayhem

That's how I would describe my week.

First of all, I spent last weekend shoveling -- I kid you not -- over 1,000 lbs of dirt from my driveway, and wheelbarrowing it out to the garden. This was very tiring, as you can imagine, especially for someone who dislikes exercise as much as I do. My body was confused by all the exertion, and I was sore all week. 

Second, someone broke into my car and smashed a window. Nothing was stolen because there is nothing in my car worth stealing, unless you're really into pet hair and first aid kits. Anyway, the whole thing was a pain, but I'm grateful it wasn't worse. 

Third, endless work! Endless work! ENDLESS WORK!

On the bright side, I did build a website and I learned about Bootstrap. On the not-so-bright side, my website is a HOT MESS. Oh well. You have to start somewhere, after all. 

Also this week, I refreshed my python skills and coded up a few tests for a work assignment. It was fun, honestly. Python is lovely.

I am so happy it's Friday! Sweet Jesus! 

Hack Reactor homework comes on Monday. I guess I'm as ready as I'll ever be. 

Goals for this week

This week I will:

  1. Make time to learn: I have dedicated 6:30am-8:00am on Monday-Thursday for learning. 
  2. Finish the Treehouse How to Make a Website course -- I'm almost halfway done, and have created a spectacularly ugly website! Right now, I'm learning about CSS and styling. Did you know that RGB stands for "Red," "Green," "Blue," and that the 6-character hexadecimal value is just a pairing of the red, blue and green amounts in a color? I did not know this. I also didn't realize that hexadecimal refers to a base-16 numbering system, where the letters A-F stand in for numbers 10-15. That allows you to use a digit of value 0-15 per character, vs just 0-9. All of a sudden, a lot of stuff makes more sense!  
  3. Account for weird decimal edge cases in my Random Number Generator -- Thanks to a tip from fnenu, I will try using the isNumber property.  

I think that's a reasonable amount of stuff for this week. Let's see how I do! 

Using JavaScript to solve a real life problem!

This is for fnenu, who reminded me that I have yet to post this month!

OK, so I totally missed out on April Fools Day and had no time to create a fun fool-themed post (one of the many untethered ideas I come up with while commuting). So instead I'm going to talk about the first time I used code to solve an actual problem I was having. This was a very powerful moment for me because it took all this learning that was living  ^way up here ^  in my mind, and brought it down to earth.  

I've been trying to reorder checks through my credit union's website for months, but their partner site wouldn't allow me to edit the information (name and address) listed on the check. Even after I called my credit union to change the associated address, the partner site added a number tag to my name that was visible on the check in an uneditable text field. 

Seemingly uneditable, I should say. Because once you know your way around a JavaScript console, you have access to a whole new world of possibilities. 

I opened the console, located the div in question, and manually changed the text to be displayed just how I wanted it. When I proceeded to the checkout screen, the changes I made were reflected on the final product! Victory!!! I felt like a low-rent hacker. Which is to say, I felt indescribably proud. 

I got my checks delivered today, opened them up, and sure enough, they are exactly as I wanted! (Side note: It kind of feels like, since it's a site tied to banking, maybe you shouldn't be able to do this so easily? But whatever. I got my checks to look right, so YAY.)

Thinking back to the last time I struggled to reorder these stupid checks a few months ago, I never would have imagined that I'd be able to overwrite what I saw on that janky web page with just a few short keystrokes. I think that's the most powerful part of programming -- discovering that there are SO MANY possibilities for doing stuff that you hadn't ever considered before, and knowing that there is real, non-magical code behind the page that you can access and manipulate. 

Career change is scary

Lindsey (badass full-stack engineer/Hack Reactor alum whose career path I'm basically copying) and I had a genuinely fun time talking to students about how to kickstart their career search on the Udacity channel today. In other news, I still cannot adequately describe how to use Twitter. #Imightnotbeyoung

Here's a sample personal inventory/career research spreadsheet (I reference this in the presentation) that maps pretty closely to what I did 2 years ago when I decided to quit my pretty-damn-good government job on the chance that I could achieve something greater.  

Doing this session today made me sit back and reflect on how scary it was back then (and still is now) to stretch yourself for something that you really don't know you'll achieve. I'm so glad I took the risk, as disheartening and sucky as it was at times (as an aside, moving back in with your parents and waking up on your 30th birthday in your childhood trundle bed is not something I recommend to anyone, ever). Because, with the exception of the Rapid Ramen Cooker, the greatest rewards in life don't come by just doing what's easy.  

Happy Birthday to the Notorious RBG

Today is the Honorable Ruth Bader Ginsburg's 82nd birthday. There are many stories out there documenting RBG's badassery. I thought I'd share mine. 

In 2012, I was working at the State Department in Washington, DC, and my bureau supported a grant that sent Afghan women judges on an educational tour of the U.S. I was the program officer for the grant, and accompanied the women on a visit to the Supreme Court (we also went to a Super Walmart in Vermont - it was a diverse tour), where they had a private meeting with Justices Ginsburg and Sotomayer. 

This was obviously very exciting. Our group got there early, and we were ushered to an elegant meeting room with a silver tea service, fine china, and a silver platter filled with giant cookies. Everyone was buzzing with excitement -- no one dared to touch the cookies, we just sat down with tea. Soon after we arrived, Justice Sotomayer appeared. She was warm and funny, and connected instantly with the women judges, asking them about their families and the challenges of balancing work with family commitments. 

An attendant comes in to announce that RBG was on her way. Sure enough, we see this tiny, impeccably-dressed, imperial figure stroll towards the entry way. I am FREAKING OUT with excitement. RBG enters the room, helps herself to a giant white chocolate macadamia nut cookie the size of her face, then turns to us and asks, "Why hasn't anyone taken a cookie? Take a cookie!" 

Everyone immediately leaps up out of their chairs and takes a cookie. Because when RBG tells you to have a cookie, you damn well better have a cookie. After we're all seated again, RBG leads an hour-long conversation with all of us, and she is so fabulous and wise and gracious, my heart is about to burst. She is everything she's hyped up to be and even better than you can imagine. She is sharp as a tack, asks good questions, listens, and genuinely seems to care about the women seated around her. 

At the end of the meeting, she poses for pictures and says her goodbyes. On her way out, she stops to take another cookie for the road. The last thing I see is the figure of RBG strolling down the corridor of the Supreme Court holding a giant cookie. I have never been prouder to be an American than I was at that moment. 

 If you look closely, you can see the&nbsp;cookie behind RBG's water glass in&nbsp;this photo.&nbsp;

If you look closely, you can see the cookie behind RBG's water glass in this photo. 

Happy birthday, RBG. Stay gangsta. 

hello world

Six months ago, I decided to change my life. I was on honeymoon, watching sea turtles off the lanai of our rental in Hawaii, and floated this idea past my husband: "What if I were an engineer?" He was instantly supportive. Yes! Great idea! You can do it! [Life advice: Marry someone who believes in you.]

So, in typical fashion, I did a massive amount of research and narrowed down my options to two programming bootcamps: Hack Reactor and Hackbright. I'd been trying to learn programming in my free time for about 18 months at that point, and hadn't gotten very far (having a full-time job, plus major life events like a move, a wedding and a German Shepherd made it hard to study continuously). I felt that an intensive, bootcamp environment would be my best shot.

I started applications for both camps, but pretty quickly became engrossed in the Hack Reactor admissions challenge, and never finished my application to Hackbright. I also have a badass friend (Hi, Lindsey!) who went to Hack Reactor, which helped solidify my decision. Because, in general, I'm a big fan of:

  1. Identifying who you want to be (Hi, Lindsey!)
  2. Finding out how they got there, and doing exactly that

Fast-forward to today: After 5+ months of studying/struggling (and 3 attempts to pass the technical interview), I got into Hack Reactor -- yay, learning! Presently, I started this blog.   

Here's what I'd like to do with this blog:

  • Go back in time, and map out the path I took to learn javascript, from zero knowledge to a very basic level of proficiency.
  • Document what I'm learning in the next 3 months, as I prepare to start Hack Reactor, and continue this to some degree once my cohort starts.
  • Share totally random, non-coding projects because I'm crafty and like to make stuff.

Ultimately, I hope this blog is a helpful resource for new programmers -- I learned a lot from other student blogs, and want to spread the learning.

 Inspirational sea turtle

Inspirational sea turtle