Next Steps

I graduated from Ada Developer’s Academy a month ago!

img_3108

And I accepted a job as a Software Engineer at Indeed! After a month and a half of a well-deserved break, I start work on Halloween.

After finishing my internship mid-September, I attended Strange Loop, a rad conference about functional programming, visited my family in Kansas City, then knocked out some goals here in Seattle.

img_3144
Slide from Julia Evans’ talk on Linux debugging tools #lifegoals

I’ve been going hiking:

img_3172
At Lake 22 a couple weeks ago

Hosted my parents, who visited Seattle for the first time:

img_2934
Me and my dad at the top of the Space Needle

Went on lots of walks around Greenlake:

img_3218

Hung out with my cats:

img_3165

And I wouldn’t feel complete without spending a bunch of time in the kitchen, whipping up whole wheat sourdough, beet burgers, and pumpkin custard.

While it’s amazing to spend the majority of my time on non-code things for the first time in over a year, I don’t want to get too rusty. I’m teaching myself some basic Java and React to prep for my new job, and I put together a presentation about Elasticsearch for *.rb (slides here) which I debuted last night.

Life is good ❤️

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

Capstone Week 2

The exciting news first: my Go API is 80% finished! YAY!

It successfully gets what’s trending on Twitter, pulls 100 tweets for that trend, runs a sentiment analysis on those tweets, and saves the trend in a database if it has a strong enough positive or negative sentiment. I finished this piece up last Thursday morning.

The bad news: the last 20% is taking FOREVER.

Since Thursday morning, I’ve been trying to deploy my API on Elastic Beanstalk, an AWS service. I did a test deployment on Heroku yesterday, to make sure my code works (it does!), but we’re supposed to learn a new deployment service for capstone. We each got a $100 credit for AWS, so Elastic Beanstalk seemed like a good choice.

Unfortunately, Elastic Beanstalk has horrible documentation and is not beginner-friendly. There are very few details about how to deploy a Go app, how to troubleshoot, how to connect with a database, etc. I’ve been fumbling around with this for days, in spite of having multiple people help me out.

 

Other updates:

  • Pomodoro Timer: I found this to be super useful for keeping myself focused last week as I finished building the main components of my API. You time yourself to work for a certain period of time, then take a timed break. It helps me work when I’m working, and relax when I’m relaxing.
  • I tried out testing some of my code, but struggled with not making fresh API calls to Twitter each time I run my tests. I’ll hopefully pick back up on this laster this week.
  • I attended the Lesbians Who Tech conference in San Francisco, specifically in the Castro. The talks were less technical than I was hoping, but I met some really fantastic people, and got to go dancing!
IMG_2461
At 9pm, the official afterparty ended, and the bar immediately put this sign up. Perfection!

 

 

Capstone Week 1

This afternoon, I’m heading off to the Lesbians Who Tech Summit in San Fransisco. I don’t identify as a lesbian or a woman, but am super pumped to be around a bunch of queer tech nerds!

This means I’ve had a shortened first week of working on my capstone project. Because of that, I’ve been working really hard this week.

Here’s what I’ve done:

  • Build a support network: This is probably the most important thing! I’m brand new to learning Go, and any lower-level languages (meaning you have to explicitly take care of a lot of things that Ruby, and especially Rails, does for you). The internet can teach me a lot, but there are times when asking a human can cut off hours and hours of searching. It’s important to have multiple people I can ask for help. I’m more likely to get faster answers, get to practice explaining my project and questions with more people, and learn a few folks’ perspectives on Go. I’ve also joined the newbies channel of Gophers, a Slack channel for Go.
  • Learn basic Go: Things like Go’s tour and this video (actively following along in my own text editor) helped a lot.
  • Tutorials on RESTful APIs: Actually seeing Go in practice, in simple examples I can understand! This post was especially helpful, though I like to reinforce with multiple examples, so I also looked here and here. Of course, none of these do exactly what I want my app to do. Most importantly, they’re missing a database.
  • Struggle a lot: Figuring out how to create and connect with a database almost made me jump ship. I’d researched for hours and hours, but felt like I was missing some piece of fundamental knowledge that was preventing me from even knowing what questions to ask. I alternated between, “how will I ever do this?” and “I’m doing a great job at learning something brand new!”
  • Learn about databases: This project is basically me learning over and over how much Rails does for you automatically. I finally realized I needed to create a database and tables on my local computer, then use the Go tutorials to learn how to connect with that database. This was a HUGE moment of pure joy when I got it working!
  • Connect to database with Go: Tutorials like these two made a lot more sense once I had a database to work with. From there, I started writing my own functions to interact with my data.
  • Draft my app’s architecture: I’ve laid out plans for most of the functionality of my app. I’ve created files that logically separate functionality, and commented out functions within those files to describe what each block of code should do. This isn’t finished, and I expect it to change a lot, but it’ll give me a strong starting point.

And now I’m going to experiment with calling to Twitter’s API to find out what’s currently trending.

I’m feeling like there’s still a LOT to do, but also pretty satisfied with how I’m (mostly) following the project timeline I’d created. Next week be the true test.

IMG_2445
Our wall of disposable camera photos from interview week 🙂

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.

Ada + 2016

IMG_2260.JPG
Outside Green Lake Elementary School

I wrote on Oct 25,

Sometime during week 2… I realized I was coding things that, less than 24 hours earlier, I couldn’t even conceive of myself as understanding.

Still SO relevant. A couple of months after writing that, I can now create real websites and publish them on the real internet.

Here‘s my first website on the real internet, created in a short afternoon using Sinatra and pushed online using Heroku.

Learning Ruby on Rails leveled up our websites:

I now understand the basics of HTTPS verbs, SQL, user authentication, RSPEC testing, and Computer Science fundamentals.

IMG_2294
#proud

A big focus in the last few weeks has been learning about the companies who are sponsoring us. It’s been an incredible opportunity to network with professionals, get a sense of the breadth of opportunities, and begin to articulate what my ideal workplace looks like.

I’ve also enjoyed attending tech events, like *.rb, started by Ada alum Hsing-Hui, and Lesbians Who Tech.

And for fun over the holidays, I’ve been working on Advent of Code‘s puzzles.

I’m looking forward to return to class tomorrow, after two weeks off, and travels to Kansas City, MO, and Ann Arbor, MI.

My classmates are awesome enough to build the weirdest gingerbread houses with me:

IMG_2271.JPG
Here comes the Ada Lovelace version of Socrata’s Snuffleupadata
IMG_2270
She’s after the Darth Vader version of Snuffleupatada!

Chicago

I should be doing homework, but my heart is still in Chicago.

Chicago, where powerful organizers shut down Magnificent Mile on Black Friday.

Chicago, where people took to the streets in response to city officials covering up the police murder of Laquan McDonald.

Chicago, where mayor Rahm and police superintendent McCarthy are forced to respond to the people’s demands that they resign.

Chicago, where Charlene Carruthers, National Director of Black Youth Project 100 said,

“We will not put up with violence against our bodies. We are here to organize. If you want to build with us, we will not tolerate: misogyny, patriarchy, homophobia, transphobia. Ever. Respect us. We started this shit. We gonna finish this shit.”

Chicago, where my family and friends organize, build power, resist hopelessness, resist apathy, make mistakes, grow love.

I miss you ❤