One Year

I decided to become a software engineer one year ago.

My internship at Socrata is over halfway finished, and as I begin piecing together my resume, I’m reminded of how much this year has changed my life.

This year, I:

  • Visited the west coast for the first time
  • Moved to Seattle
  • Started climbing mountains and circling lakes
  • Joined the 4th cohort at Ada Developers Academy
  • Learned Ruby, Rails, Javascript, Go, Scala, Java, Python, HTML, CSS
  • Celebrated the births and adoption of many amazing children
  • Grieved the deaths of a friend, a great-uncle, a former student, victims of police shootings, and victims of homophobia and transphobia

…and much, much more.

Wish me luck as I start applying for jobs in the coming month.

IMG_2884

Capstone Finished!

IMG_5505

IMG_5507

Hop over to #feels to see my published capstone project!

You can also see my presentation slides here.

Lastly, code for the back end API written in Go, and code for front end Rails.

Huge thanks to everyone who helped me out: Ada teachers, fellow classmates, friends, TAs, friends of TAs, and my partner for illustrating the buttons on the main page, emotional support, and cooking dinner most nights.

I’m incredibly proud of what I (and each of my classmates) was able to accomplish in one month! I’m putting together a short talk for the April *.rb meet up about lessons I learned, which I’ll share when it’s done.

I’m also excited to announce that I’ll be interning with Socrata, which builds software to organizations (including Chicago and Seattle city governments) manage and share their data.

thumbs_up
Socrata’s mascot, Snuffleupadata

To prepare, I’m learning Scala, a language that draws from Java, and incorporates both object-oriented programming and functional programming. It’s been challenging to find engaging tutorials on it, so if you have any recommendations, please send them my way!

Other adventures have included:

  • Making hamantashen with various jams, poppyseed filling, pumpkin butter, and peeps:

IMG_2584

  • Visiting Mountain Lake near Mt. Constitution (top), and Turtleback Mountain (bottom) on Orcas Island:

IMG_2533

IMG_2576

Capstone Week 3

Week 3 really brought things together for me!

  • Finished my MVP (minimum viable product) on my Go back-end API by the end of the day Wednesday, including having it deployed, with database purging and updating happening on a schedule, with about 30% test coverage.
  • Build up basic functionality and very basic styling for my front-end Rails app, including Twitter OAuth.
  • Bought a domain name and connected it with my API as a test. Next week, I’ll deploy my Rails app and hook it up there.

Deployment details:

After hours and hours of struggling with Elastic Beanstalk, I finally switched over to deploying on an EC2 instance. This means it’s running on one of Amazon’s computers, just like I run it on mine. Go is a compiled language, meaning you have to type the command “go build,” which creates a binary, executable file. Then I run the executable file in my terminal. Rather than jumping through all of Elastic Beanstalk’s hoops, all I have to do is tell my go files to compile for the EC2 instance’s operating system, then copy the executable file over to the EC2 instance, and run it from there.

Testing details:

I’m incredibly proud of my 30% test coverage for my Go API. That doesn’t seem like a lot, but my Go code has been tricky to test for a few reasons:

  1. Compiled: Because Go is a compiled language, testing is different. For Ruby, I test to make sure methods return a variable of a certain type – like a string, integer, etc. For Go, I have to explicitly specify what types functions return, and the program won’t compile if these aren’t strictly followed. This eliminates a bunch of tests I’d normally write for Ruby.
  2. Database: I’ve also run into a lot of issues with testing functions that interact with my database. I don’t want my tests to change my real database, so there are a few ways of building up a fake database and running tests against it. In Rails, the Rspec gem takes care of this for you.
  3. API calls: I don’t want my tests to communicate with real, external APIs. In Rails, the gem VCR makes an API call only once and stores that data. Each time tests are run, the VCR gem stops them from calling to the real APIs and instead regurgitates back that stored data. This is possible to do in Go, but more manually. I’ve only tried testing my Go code that calls to the Twitter API via the package Anaconda. Because it calls to the API through that package, I haven’t been able to figure out how to intercept it, and reference stored data. Hopefully I’ll have time to try testing my functions that call to the sentiment analysis API, where I’ll have more success.

This weekend, I’ve come down with a cold, so I’m sleeping as much as possible so I can hit the final week hard. Presentations are on Friday!

IMG_2483.PNG
View from my living room

All the Updates

2016 has been quite the ride so far.

I celebrated my birthday with my favorite tradition: cookie cake + friends.

IMG_2350

I tried pole dancing, thanks to Ada’s Executive Director, Cynthia Tee,’s expert teaching.

IMG_2358.JPG

A friend died of cancer.

Two groups of friends have welcomed new babies into their families.

My cats continue to be the weirdest and best.

IMG_2355.JPG

I’ve learned the basics of OAuth, APIs, Javascript, and jQuery:

  • FancyFeed (social media feed aggregator) – github
  • Integrated extra functionality into 2048 open source code – github
  • Wrote a simple version of Tic Tac Toe in Javascript/jQuery – github
  • Build an API that estimates shipping costs and integrated it into another group’s previous imitation Etsy project – github: shipping API, Etsy integration

I completed 7 interviews with 7 companies, and will find out which will be my internship site in a couple of weeks. After each interview, my classmates and I dressed up and took silly pictures.

IMG_2416
I’m the unicorn.

IMG_2429.JPG

Classroom instruction is officially finished for my cohort. Starting on Monday, we’re working full time on our capstone projects. We have a month to create a web app, start to finish. I’ve chosen to learn Go (programming language) and use it to build an API that consumes the Twitter API + a sentiment analysis API.

I plan on posting regularly here with my progress. It’ll help keep me accountable, and prevent procrastination as much as possible!

~~~

Applications open up this Wednesday, Feb 24th for the next cohort at Ada Developers Academy. I’ll be on the applicant info session panel that day from 6-7:30pm PST. I think there’s already a waitlist for in-person seats, but you can always stream it and participate via Twitter.

Gendered Code

We all make assumptions about each other. That’s a consequence of being able to make sense of the massive amount of information our brains process every second.

But not all assumptions carry equal weight in the world. Some assumptions have more power.

For example, the assumption that a young, black woman deserves to be violently assaulted while sitting in her desk at school is supported by a system of policing that targets primarily young black people in the US, as well as other folks who are trans*, poor, disabled, undocumented, not-white, perceived of as having any of these traits, etc.

I’ve been meaning to share this for a while: Falsehoods Programmers Believe About GenderEdit 11/9/15: updated broken link.

Here are the first four falsehoods from the website, out of twelve:

  1. There are two and only two genders.
  2. Okay, then there are two and only two biological genders.
  3. Gender is determined solely by biology.
  4. Okay, it’s mostly determined by biology, right?

It’s part of a longer list of false assumptions programmers make about the world.

We need to be careful about what assumptions we literally codify.

Ada Weeks 3, 4, 5

Sometime during week 2, I paused working on designing planets, an exercise that helped us learn what classes do in Ruby. I realized I was coding things that, less than 24 hours earlier, I couldn’t even conceive of myself as understanding.

That’s really cool.

Ada’s been a lot like that lately.

I’ve been:

  • Learning to use, then immediately using GitHub
  • Pair programming a word guess game (in mine and my partner’s, you’re a shark and one of the fish you’re trying to eat swims away each time you guess incorrectly)
  • Getting large sets of data, formatted in CSV files, to tell you neat stuff, like which vendor made the least amount of money at a specific farmers market on a specific date. (I remember reading the blogs of folks in cohort[2], and being like, “What the hell is FarMar??!”)
  • Learning to write tests for code, the testing my code over and over again. Feeling invincible when my tests show a line of green dots in my terminal, meaning all the tests passed

Other firsts in the last few weeks:

IMG_2088

  • Planting garlic

IMG_2078

  • Visiting Talapus and Olallie Lakes

IMG_2057

I just finished re-reading Parable of the Sower by Octavia Butler. A quote that has stuck with me for years:

All that you touch
You Change.

All that you Change
Changes you.

The only lasting truth
is Change.

God
is Change.”
Octavia E. Butler

Back to School!

The stickers on the door are courtesy of the awesome landlord
Stickers on the door courtesy of our awesome landlord

First day of school!!! WOO HOOOO!!!

I gave myself a full hour to get there by bus, even though google said it would only take 25 minutes. You know, don’t want to be late on the first day + the President of China is in town this week. I arrived in the classroom at 8:59, barely on time, and the last one to arrive. Good start, right?

It was so exciting to meet everyone today! I’m struggling to retain names and details, but I’ll get there.

When I got home, I did the homework both for tonight and tomorrow night. I’m obviously a lil excited to dig in 🙂

In other news, I went hiking near Mt. Rainier last weekend. It was stunning!

We had a super clear day for most of the hike!
I swear I was hiking on pure adrenaline for the first couple of miles, just from being so close to this mountain!

I learned about the 10 Essentials you should always carry when hiking. And I was like, “Pshhhh lolz who does that.”

http://tmber.com/sites/default/files/content/10Essentials_103.jpg

Turns out…it’s a thing.

I promise I’ll work on acquiring them.

Homework: Playing Games

Oh darn, my homework is telling me to play old adventure games…

Screen Shot 2015-09-04 at 1.03.52 PM
http://textadventures.co.uk/games/view/5zyoqrsugeopel3ffhz_vq/zork
http://rickadams.org/adventure/
http://rickadams.org/adventure/

Homework from Learn Ruby the Hard Way, exercise 14.

Before Ada stars, we’re supposed to complete the exercises through 34. I’m on 31, and it’s mostly review after completing codeacademy‘s Ruby course. I’ve been following along with Testhead‘s blog posts about the exercises to make sure I don’t miss anything.

I’m also taking time to explore around Seattle before Ada starts:

Enjoying the view at Rattlesnake Ridge a couple weekends ago
Rattlesnake Ridge a couple weekends ago

Octavia’s Brood

Have you read Octavia’s Brood yet? If not, you should. It’s “An anthology of visionary science fiction and speculative fiction written by organizers and activists.”

Scifi + social justice = <3!!!!!

I had the joy of seeing editor/author Walidah Imarisha and author Gabriel Teodros speak at the Seattle Public Library last Wednesday. Their words were so powerful, like Walidah saying “All organizing is science fiction,” and “All of us who are from oppressed communities are walking science fiction,” and Gabriel’s music performance.

IMG_1719
“All organizing is science fiction” – Walidah Imarisha

The most common pushback I get when discussing prison abolition with majority white and upper class folks is, “We need prisons for us to be safe,” and “What about the murderers?” and sometimes “But how?”

I understand the desire for specifics and logistics, but they’re distractions.

More important right now is the vision.

Walidah talked about how we often write out a 5-year strategic plan and feel really good about laying out specific, measurable, “achievable” objectives. But we need a 100-year plan, a 500-year plan. What do we want the world to look like for generations to come?

This is what visionary scifi does for us.

There’s LOTS more here to talk about, so I’ll just point to a few resources:

From Walidah’s slideshow at the event:

Other:

Let me know if you have some recommendations to share!

“Another world is not only possible, she is on her way. On a quiet day, I can hear her breathing.”
― Arundhati Roy

~~~

Not much coding progress, since I don’t have an internet connection at my new apartment yet.

I have finished codeacademy’s Learn the Command Line:

Screen Shot 2015-08-18 at 9.47.15 PM

And I’m working on Learn Ruby the Hard Way‘s Command Line Crash Course before starting on its Ruby exercises.

Gotta really start cramming before Ada starts on Sept 21 🙂

And cramming as many of these into my mouth as possible before winter comes
Also been busy cramming these into my mouth

Bring it on, Ada!

Ya’ll. I GOT IN.

All that studying really paid off…

Somebody tell this guy!

From their website:

Ada Developers Academy is a year-long intensive training program for women transitioning into software development. We’re located in Seattle, Washington.

We offer one of the most comprehensive developer training programs available: seven months of full-time classroom instruction plus five months of on-the-ground training ensures our graduates thrive in their careers as developers.

Ada is tuition-free and is supported by the tech community, public funding, and individual donors.

http://vignette1.wikia.nocookie.net/steven-universe/images/4/4b/Resized_i-should-buy-a-boat-cat-meme-generator-i-should-celebrate-81e508.jpg/revision/latest?cb=20150726204343