Meetups: Women Who Code SF

wwc

Event: Ruby and Web Tuesdays

This is a study group and you are welcome to work on anything you would like in our friendly and helpful environment. Organizers and core team members of the Ruby Study group will be present to help you with any Ruby related questions. We welcome many levels of attendees: brand new beginners, coders new to Ruby/Rails, experienced Rubyists, and anyone in between. Work on tutorials, personal projects, or just network! 

Agenda

6:30 Dinner 

7:00 Introductions

7:05 – 7:15 Introduction to Premise Data by Yang Hong

7:15 – 7:25 “Authentication, Authorization, and Why You Need Them Both!” with Ellie Day

7:25 – 9 Code!

Group: Women Who Code SF

Women Who Code is a global nonprofit organization dedicated to inspiring women to excel in technology careers by creating a global, connected community of women in technology. The organization tripled in 2013 and has grown to be one of the largest communities of women engineers in the world.

Women Who code is a professional community for women in tech. We provide an avenue for women to pursue a career in technology, help them gain new skills and hone existing skills for professional advancement, and foster environments where networking and mentorship are valued.

Location: Premise Data

Experience: So, I went to a Women Who Code study group way back, about 5 months ago! It was WWCode East Bay’s Programming and Dev study group held at Clef. I had a mixed experience at that event, mostly due to the long commute and lack of structure to the night.

My experience at the Ruby and Web Tuesdays (why don’t they just call it Ruby Tuesdays???) study group was much better, and I can attribute most of that to the fact that we were all there to study Ruby. There were two quick talks to start off the night (an overview of Premise Data, the company who was hosting the study group that night, and a very clear introduction to authentication and authorization), and they were both interesting, but also just the right length. Turnout at this event was stronger, with about 30 people. The women I met were of all skill levels, some a few years into web development, and one woman who had just created her GitHub account the other day! I got a bit of studying done, and managed to help a person or two, but as usual, going to this study group was really more about being around other people.

Verdict: It was a positive experience in a supportive environment. I’m definitely adding it to my regular rotation of meetups, and since it happens every other week, I think that’s sustainable.

Getting Started with Python for Data Science Presentation

I was poking around through my GitHub, trying to clean things up and find bits to highlight for my portfolio, and I came across this presentation I gave on getting started with Python for data science. Thought that I might as well share it here. It’s from last year, but I updated it in February and most of it is still relevant.

Highlights include: 

  • Why learn Python? How can we use Python to work with data?
  • Getting started: Installation Options and Orientation
  • Editing / Running existing scripts, Installing Modules…
  • APIs & reading documentation
  • Ideas for first projects w/ social media data
  • Additional resources for learning

Algorithms: Compute the nth Fibonacci Number

So I’ve been using a variety of resources for studying algorithms, from InterviewCake to FreeCodeCamp to Coursera, and many more. This is a problem that keeps coming up everywhere, so I thought that it would be helpful to walk through it.

Problem: Write a function fib(n) that takes an integer n and returns the nth Fibonacci number. Example functionality: fib(1) => 1, fib(3)=> 2, fib(5) = 5.

Background: In the Fibonacci sequence, each number is the sum of the previous two Fibonacci numbers. The first few numbers (0 and 1) are base cases. Here are the first few numbers of the sequence:

0, 1, 1, 2, 3, 5, 8, 13, 21…

Approaches:

Since Fibonacci numbers are created by adding together previous numbers in the sequence (also themselves Fibonacci numbers), handling this with recursion is an option.

fib(n) = fib(n – 1) + fib(n-2)

Recursive Solution:

Adding in base cases for 0 and 1, the function would look something like this.

def fib(n)
   if n == 0 || n == 1 # base cases
       return n
   end
   return fib(n-1) + fib(n-2)
end

Of course all of this recursion will require a lot of time, O(2^n) to be exact. This exponential time cost comes from the fact that we’re repeating quite a bit of work. Memoization is a technique that we can use to save results and avoid repeated work, but instead of recursion, we can also go the other way and solve the problem iteratively, AKA “Bottom up.”

Iterative Solution: 

def fib(n)
   # edge cases of negative entries, 0 and 1
   if n < 0
       raise Exception, “Index can’t be negative.”
   elsif n == 0 || n == 1
       return n
   end

   first_num = 0
   second_num = 1

   (n-1).times do
       current_num = first_num + second_num
       first_num = second_num
       second_num = current_num
   end
   return current_num
end

The time complexity for this version of the solution depends on just how big n is, so O(n). The recursive solution is beautiful and short, but I think that the iterative version makes more sense in my head. Shockingly, it’s also faster!

Algorithms: Binary Search

Lately I’ve been all in on the job hunt. I’ve been tweaking my resume and LinkedIn. I’ve been thinking deeply about who I am and what I bring to the table for a potential employer, and how I might best express that in an interview conversation. I’ve been attending events and trying to get involved in the local community as best I can. I’ve been coding away on a number of silly little projects. I feel ready to start applying for jobs, except for one little thing…

The technical interview. Interviewing is hard enough, but knowing myself, I am terrible at performing on the spot. My thinking freezes up. Then you throw in the anecdotes that technical interviews are all around stressful and are meant to push you to your breaking point… well, I feel a bit intimidated.

So I’ve been preparing the best way I know how. Studying and practicing technical interview stuff until it feels routine. Taking in as much information as possible. Basically I’m trying to cram a semester of data structures and algorithms into my head. I still don’t feel ready at all, but I thought that it might help me cement some concepts by trying to explain them here.

Binary Search

Let’s start with the good ole’ binary search algorithm. Binary search is one approach to the problem “How do you find something in a sorted array?”. Note the word SORTED, that is key here.

To use binary search, you start in the middle of your array, then compare that item’s value to the value that you’re looking for. Is it bigger or smaller than your target? Whichever it is, you now know which half of the array you need to search next. With this, you’ve effectively cut the number of items you need to search in half. You continue along in this fashion, repeatedly comparing values and eliminating options until you come to your value (or not!).

A real world example of using the Binary Search Algorithm is when you go up to pick up a graded assignment from your teacher’s desk. They’ve sorted all the assignments alphabetically by last name. My last name is “Tran”, so in order to find my assignment I’d check the stack somewhere in the middle, perhaps see that where I’ve stopped is “Hall”, and then I’d limit my search to the second half of the stack. Then I’d check a random spot in this stack, and see “Vick”, and realize that I went too far. And on, and on, until I got to my paper.

Time Considerations

The worst case scenario for searching a sorted array would be O(n), where n is the number of items in the list. This is assuming that you have to check every single item in the list to find what you’re looking for.

Using binary search, every time you check the array, you’re splitting the problem in half. This results in a time cost of O(log n), also expressed in shorthand as O(lg n), which I don’t understand how saving the time of “o” is really all that big of a time save, but so it is…

Further Resources

Learn set me up with a subscription to InterviewCake, and I’ve found it helpful so far. Their intro page on Binary Search includes links to relevant practice problems at the bottom.

Notes from Forward JS

AKA baby’s first JavaScript conference

I’m not the hugest fan of JavaScript, so how did I find myself at Forward JS, a JS conference? Well, I’m on a number of email lists,and last week Girl Develop It was offering a great discount for Forward JS – $19 for the one day conference (no workshops), down from the original price of $249. I do love a bargain, and I figured that I would learn something, so I impulsively purchased a ticket.

The event took place at the Regency Ballroom. I think I saw CocoRosie play here a long time ago. One guy I talked to mentioned that he had his high school prom at the Regency. They do everything!

I tried to hit up as many talks as possible, but I got tired as the day wore on, and left before the afterparty.

Here’s what I saw:

How Your Brain is Conspiring Against You Making Good Software

  • Jenna Zeigen, Engineering Manager @ Digital Ocean
  • The keynote was pretty interesting. It was all about cognitive biases and how they affect development – from building teams, to coding to project planning. It pushed for greater diversity and inclusion, which seemed to be a theme of the conference.

IMG_3734

Forward themed tampons! Yeah diversity! There were a lot more female attendees than I was expecting, and maybe half of the speakers I saw were women. It felt really good, and positive.

Coffee break – Coffee & Stroopwafels – Apparently last year they promised stroopwafels and there were none? They were delicious. Various tech companies had booths set up in the social hall, and I ended up learning about some cool technologies like IBM’s ez API builder, API Connect.

IMG_3735

Bringing Dynamic Back

  • Raymond Camden, Developer Advocate @ IBM
  • This session was all about finding ways to make your static site more dynamic. I gave static a try with Jekyll and didn’t end up sticking with it, but this talk was still pretty helpful.

There’s a Bookmarklet for That!

  • Justine Lam, Web Developer @ ShareProgress
  • This talk was a lot shorter and more straightforward than I was expecting. I think it finished in 20 minutes when there were 40 minutes scheduled. Justine made bookmarklets look easy, so I’m working on my first one. It’s a bookmarklet to replace all images on a webpage with photos of Bill Clinton playing with balloons. I call it “Billoons.”

IMG_3740

Lunch Break

React/Omniscient and Immutable – the Gateway Drugs of Functional Programming 

  • Erin Depew, Front End Engineer @ Bit.ly
  • This one was incredibly popular, probably because it was about React, but also because it was held in the room where lunch had just ended, and there were so many people already seated that maybe they just decided to stay?
  • I got to see how Bit.ly uses React along with Omniscient and Immutable, and all the challenges they’ve run into along the way. I haven’t used React yet, but the talk was easy to follow. There wasn’t much emphasis on functional programming, which is what I was expecting from the title.

IMG_3742

React Native: Learn From My Mistakes

  • Joe Fender, Senior Developer @ Lullabot
  • Another React talk (there were 4 total), things to consider when using React. I had a harder time following this talk. Guess it’s time to learn React!

IMG_3755

Practical Performance Tips to Make your Cross Platform Mobile Apps Faster

  • Dr. Doris Chen, Senior Technology Evangelist @ Microsoft
  • I was excited about this one. It was basically tips and tricks for speeding up your apps. She was trying to condense an hour talk into 40 minutes so she didn’t quite make it to the end, but it was still enjoyable. One of the better tips: you don’t have to put event listeners on everything, just set it on the parent, and let bubbling up take care of that for you.

IMG_3756 2

Coffee Break – Milk & Cookies

By the time it was cookie time, I was exhausted. While I could have checked out another hour or so of lectures, I decided that it was a good time to call it quits. Overall, I’m really happy that I went. I met some interesting people, and the energy was good. Everybody, male/female, young/old was there to learn. Do I like JavaScript any more than before? I don’t know. It’s a useful language, that’s for sure.

 

Scroll To Top