I Don’t Have To Choose

My favorite story when I was trying to describe myself while looking for a job involved the fact that I had a very non-traditional path to Software Engineering. I wear it as a badge of honor that I am able to do all of this without a degree in Computer Science. I went to a boot camp, worked my butt off, and got my dream job at Udacity.

As I explain it, I came to a breaking point about a year and a half ago where I knew I wanted to be a software engineer but I had no background and not a lot of skill and as a woman, I wasn’t really feeling welcomed.

So I decided to do something drastic. I decided I needed to quit. But then what? I’d been taking CS classes at my local community college in hopes of maybe getting a Masters and I’d learned about these cool bootcamps in San Francisco. In fact I told my best friend about them and she’d just been accepted to one (of course, she already lived in the Bay Area).

I made my decision when I realized I didn’t have the patience or money to sit around for three years before maybe feeling like I could get a job. I wanted to go out and solve “real” problems and not get a meaningless job to get me (maybe) through a Masters in three years.

I still really want that Masters. Honestly, it’s something that I need for selfish reasons. To prove that I can do it. But also to feed that craving for more academic knowledge. So I applied to the Georgia Tech Online Masters Program. And last night I got my acceptance letter.

A year ago I had recently quit my stable job and left my nice apartment and the state I’d spent my entire life in to live on my friends couch and work myself to exhaustion 6 days a week at Hack Reactor. Now I have that nice apartment and an awesome job and I’m learning things all the time and at the same time I get to work on my Masters without fear of a dead-end job or a tuition bill I couldn’t pay.

So it’s time for a new Category! And a new iteration of numbered weekly posts! And lots more exciting learnings. Heck, maybe I’ll end up making the robot that starts the robot apocalypse. You’ll only find out by following my blog (or possibly the news, if I do end up making that robot).

6 Months Later – A Much Needed Recap

I’ve been at Udacity for over 6 months now. I’m also about a month a way from that fateful day when I started Hack Reactor. Life has been pretty kind actually. I feel like I’m growing as a person. Personally I’m still spending all my free time with friends and trying to do some knitting and and and…

Professionally, I’m enjoying my work more and more and more. I’m back to working on my first love, which is APIs and integrations and making the internal tools that our company needs. I love that part. Throughout my life I have said I always wanted to be the sidekick to the superhero. Some days I wish I could do that a little more literally, but building the tools that other people at Udacity can use to help educate is a pretty good consolation prize.

It’s also time for round two of Hackbright mentorship. I find out who I’m mentoring tomorrow and I’m really excited. I think I learned lessons from the first time around about how to help another person to learn (and I’ve used these lessons with some of my more nontechnical friends). I’m played the token woman in engineering a few times this summer, but I’m happy to do it if it furthers my world domination plans (because that’s obviously what would happen if we had more women engineers).

Last but certainly not least, I’ve gotten antsy to take some structured learning again. And what better way to continue learning that go back and get my masters right? It’s something I’ve always wanted to do, especially to have that extra knowledge actually focused on Computer Science. So I’ve applied and have my fingers and toes crossed and am holding my breath and all that fun stuff. Wish me luck.

I Need to Stop Apologizing (subtitle: Objective-C and ME)

…And start just actually updating this thing. I could tell you about my life changes – finally got my California drivers license! I lost 5 lbs! Or my work changes – Imma try to be an iOS Engineer! Udacity did a short blog article on me to hype up one of our classes! I’m mentoring cool women at Hackbright! Or just daily life – I stopped biting my finger nails!

I think for this update I’ll stick to the code related though. Lemme take a moment to sound like an idiot – I have tried my damnest (not consciously) to forget my Java/C college days and I’m getting ALL the flashbacks while I try to teach myself Obj-C. It took a very long time for me to even be OK enough to actually read Objective-C. But now that the brackets everywhere don’t scare me. I’m starting to enjoy it.

I’ve written all of two or three lines for our actual Udacity app but I’m learning on my own and with the support of our mobile team! In a bit of return I’m working on integrations with them to hook them up to our web backend better. So see kids! You don’t have to know Objective-C to be considered part of the mobile team! I’ve transitioned over and still get to stay in my comfort zone of Python a lot.

I think the most important thing I’ve learned so far is that it’s not the language that is difficult to learn, it’s that iOS development is a completely different mind-set, especially coming from a backend heavy few months. I like crafting functional APIs that do what they’re told and I’ve learned to find map reduces fun. But now I have to think about user experience? And does the button need to be orange? Should the robot picture be above or below the text? Should the background be white or black? Should we AB test this on boarding screen? It’s nuts, but in a good way.

I know backend engineering has had my heart but I never wanted to get stuck there. I wanted to be able to have options. To learn ALL THE THINGS. And my awesome coworkers at Udacity have been nothing if not supportive of that goal. One week I’m learning how to write map reduces, another I’m researching video transcodings for mobile video streaming (and playing with PBS open source software!), and just this week I got to play a mini round of tech support as our Georgia Tech Masters students started their term on Monday. It’s a hell of a ride so far and I’m just getting started. Hopefully now that I’m settling a bit on what I want to learn next (iOS) I’ll get back to a more consistent blogging schedule.

Clojure Makes Me Feel Stupid

…but I’m kinda in love with it. Thanks to a friend/coworker I’m cautiously dipping my toe into the world of “functional programming”. I’m still not 100% certain I get the full gist of functional programming but, to my newb mind, I’d explain it as programming without consequences. Functions only depend on their inputs and external forces/state cannot muck with your function.

Apparently this makes it easier to predict what’s going on, but I still have issues reading what I just wrote. Parenthesis all the way down dudes. Also prefix notation is technically useful, but warping my poor little brain.

So 1 + 1 in Clojure is actually written as (+ 1 1). Makes sense, right? Sorta, except for the years and years of basic math classes that NEVER LOOKED LIKE THIS. Oh my brain. But it’s kinda cool that instead of 1 + 2 + 3 + 4 I only need to write (+ 1 2 3 4).

But seriously. This is a function in Clojure:

(defn adder 
  [x y]
  (+ x y))

(adder 3 4) ;; 7

Wat? So the first line defines the function name. The second line is the parameters that you give to the function and then the last line adds those two parameters together. I then call the function on line 5 with the arguments 3 and 4 and then the semicolons denote comments and I use that do show what the output of the function is… 7.

As a super ridiculous aside. Parameters vs arguments? Parameters are the things that you define with the function. So x and y on line 2 are parameters. Arguments are what you pass to the function when you want to actually use it. So 3 and 4 on line 5 are arguments. Now go forth and be awesome!

So how do you be Clojure learners too? Currently I’m running through the clojurebridge curriculum on my own. Clojure in 15 minutes looks like a decent-y rundown of most of my syntax options. If you don’t want to put anything on your system yet, or just want to mess around with the syntax, there’s always Try Clojure which lets you program from your browser. And I’ve bookmarked Clojure for the Brave and True mostly for the title, but I haven’t really read any of it yet.

Bored Again – Time to Create

On Repeat

Tomorrow is my three-month reunion for Hack Reactor. I’ve done some cool things since I graduated, but I’m still not doing everything I wanted to. I want to be the change I want to see in the world, or however that goes. I just became a mentor for Hackbright Academy so I feel a little less adrift without a social purpose, but I’m still itching to create things.

I’ve started knitting again, but it’s not solving the itch. I have half-finished things on the needles again, but I’m still bored. I think there is no hope for me. I just need to be coding.

About a year ago. I was sitting in a crappy gelato shop in downtown Burlingame with two of my best friends who already lived in California. I was still living and working in Oregon, but I knew I needed to be moving on soon. I was getting restless. That day we made a pact, all of us before this crazy thing called a dream turned us into a software engineer, a software engineer, and a novel writer. We were The Clever Girls and we were going to create something amazing together eventually. Part of that dream is how I ended up down here and now I’m realizing I need to start doing my share.

So I’m going to dive back into programming completely solo, completely public, with my work, as shitty as a lot of it probably is, committed for all to see on Github. I hope soon the three of us can get back on the same page and actually make something amazing. For now I’ll just leave you with the copy I wrote for a fake starter page a year ago when The Clever Girls were still fresh in my mind:

“Computing is too important to be left to men.”
Karen Spärck Jones

Women are underrepresented in computing not because they aren’t good with computers but because they are never given the opportunity to fall in love with them. The Code Girls‘ goal is to create fun, educational games geared toward younger girls that will teach them the basics of how programs work. Using an easily readable language like Python, girls will code their way through the platform challenges and create fully functioning programs as they progress.

Code Girls present Octavia and the Clockwork Code is the first game in the series. It tells the tale of 12-year-old Octavia, a precocious tween who sets out to win a mechanical competition. Along the way she codes her way through puzzles and helps out friends and competition alike.

The Code Girls is a fledgling startup created by three women who are passionate about women in computing.

Lindsey – The Creator

Founder, primary coder and herder of cats. Lindsey always wanted a game like this when she was growing up. Now that she’s technically grown up, she decided to take the idea into her own hands.

Ava – The Teacher

Our resident little girl expert. Ava has a Masters in Education and a passion for teaching children using methods that create a deeper understanding.

Alyssa – The Storyteller

World builder and character flaw creator. Alyssa creates and drives the stories we tell. She lives and breathes the Code Girl worlds.

Home – For Now

The updates got away from me. Life has just been flowing one day to the next. A mix of sun and California and coding. Days will go by where I forget how I got here. It feels like I’ve always been here and then I see or hear something so stereotypically Bay Area-ish that I have to shake my head and realize I don’t know if I ever want to be completely sucked into this candy coated, rose-colored-glasses kinda world.

Life is pretty amazing now. I’m happy and working and finally have my cats and my car. I could never live in San Francisco proper for the sheer joy I get in sitting in my car, driving on a long stretch of road with my music blaring. I drove from Portland home to Burlingame and the views were breathtaking and I felt so much at peace as I curved around the mountains of Northern California.

Oh yeah, cats:

I was terrified they would hate it here and then I’d be the horrible person who drove them 14 hours away from Oregon. I haven’t lived with my cats for 7 months and it’s been excruciating. Thankfully they seem to be enjoying themselves. There are windows that I can actually keep open all the time and floors to stretch out on in the warm, warm sun. And of course I’m here to know Isaac really likes his head scratched and Jack likes to hold your hand with his paw. So yeah, I’m pretty happy. I do have more nerdery and tech blogging to do (I’m trying to learn Swift! and hopefully tech mentoring! and maybe even public speaking?!) and I plan to get to it, but I first had to get the reintroduction out of the way.

Also, this post (and maybe many posts to come) has a theme song:

Week 4/5: #FAIL

Life has been awesome, so awesome in fact that I have had no time to put words to “paper”. I’m finishing projects and starting new ones at work. I’m having fun with friends on weekends. I even signed up for online dating, but that’s a hilarious post all by itself.

I also managed to do the age old terror inducing thing that most programmers do at least once in their lifetime. I broke our website. It was fast, over before most people noticed and totally my fault. The silver lining was that I was able to also fix my own mess without much assistance and in less than an hour. Still I felt like an idiot for the rest of the day.

The next day though we were on to the next feature, the next quirk, and I was able to breathe again because I’m slowly realizing that none of this will ever be the end of the world. Just like I don’t believe any one thing can “disrupt” the way we do things (and I hate that most startups think that they will), I believe that we can all help to shape something. That we each contribute our own little parts and my contributions also don’t have to be perfect. We have code reviews and tech leads and lots and lots of awesome mentoring opportunities to fill in our lack of knowledge.

Also, FYI, I’m including my Twitter feed to the right for now because I update it more than it might this blog.

Week 3: Giving Back

Week 3 ended a few days back (sorry y’all I had a busy weekend) and it was awesome. I’m learning new intricacies of our systems and learning to be more confident in myself when I know I know it (or maybe even think I do! Being wrong isn’t the end of the world!). My favorite part of this week though was the weekend.

On Saturday I got to volunteer at an all girl (10-17) JavaScript intro class with CoderDojo. I was a tech mentor, but I didn’t have to do a lot . I was super impressed with the girls! And I got to teach a couple of them that docs are super helpful! They were all so creative and awesome and I hope a lot of them decide that programming is as awesome as I think it is. For a short write-up (and to see what some of the girls made!) check out the write up for the event here.

Also, as an aside, can I just take a moment to say that I think Pamela Fox is amazeballs? She spoke at Hack Reactor during my time there and I’ve been following her on Twitter for a while, but I fan-girled hard when I realized she was the instructor for the class. She is such a smart, funny presenter and she was amazing with the girls. I aspire to be more like her when I “grow up”.

I could see myself filling my weekends with tech mentoring/hanging out at places like Women Who Code, Girl Develop It, and PyLadies. It’s something that I’m super passionate about (it’s why I wanted to work at Udacity so badly). I think mainly because it’s something I wish I had when I was growing up. I wish I could have seen women being awesome programmers, making a career out of it, and how much fun it could be. I never thought I would be one of those people who didn’t just have a “job” they had a calling, but I’m positive I’ve found me.




Week 2: Ticking All the Checkboxes

How is it possible that I’ve already been working for Udacity for two weeks?!

I have done real tangible things since last week (I did real, tangible things my first week but nothing I could really point you to). This week, I integrated Github linking!! If you have an account on Udacity, you can now link your Github account to it here. This doesn’t actually do much more at the moment, but it’s all a part of a master plan. If you don’t have a Udacity account (why not?!) or aren’t using Github, here’s an action shot from my account:

My first contribution to Udacity

I’m settling in to my place a little more (I also discovered the spider I threw outside was not Selma, but Selma is in fact outside now too). I have a new whiteboard that is currently just practical (groceries and upcoming things), but I’m sure it will end up with weird pictures of animals and penises.

The Whiteboard of Doom

My plans this weekend involve groceries and finally getting a San Mateo County library card, so I’m pretty excited!

How to Git Ignore without .gitignore

So I had this problem at work. I’m running a virtualenv instance on our main git repo for all my python packages. The global .gitignore obviously doesn’t know about it the way it knows to filter out node modules and other fun bits of localization and I sure as heck don’t want to add my own one line fix to the global .gitignore file.

So what’s a girl to do? Does she just ignore that one annoying untracked file line every time she does a git status from the terminal? Nope, she uses git exclude.


So for me this meant I had to create a info folder in my .git folder in the repo. Then I created a file called exclude (no file extension). The syntax in that file is exactly like the .gitignore file, it’s just very very local (to your computer and only for that repo).