Danielle Pham

Computer Science & Biology student
& current Hacker Schooler (S'14)

Day 31

  • Spent the morning pairing with Marisa to debug bullet/asteroid collisions in the Asteroids game! It was sooooo fun! We ended up realizing exactly what was wrong after simplifying the game (using one asteroid with a simpler shape, logging coordinates, and ending the game at convenient times). The bullets are discretely moving at 5px/frame, so it makes complete sense that the collisions weren’t occurring frequently! I definitely have a renewed sense of excitement for this game!
  • I had another one-on-one with Mary over lunch. We talked about what I’m working on and why, how to evaluate progress, why I shouldn’t be concerned about some things, and that I should do more of what I enjoy than what I think I should do for some hypothetical company.
  • In the afternoon, I read about HTTP! I want to make some kind of fun HTTP server, but I haven’t decided what I’d like to do yet. Reading the specs made this project seem much less daunting.

Day 30

  • Talked to Marisa about goals for the Asteroids game. I tried to figure out why my bullet/asteroid collision detection isn’t working, with limited success. I hope she’ll have some insights into why the math isn’t quite right!
  • Took notes on HTML/CSS things I thought I understood but didn’t (mostly related to positioning, box-sizing, specificity). I’m thinking about how I want to redo my personal website.
  • Went to Gayle Laakmann McDowell’s talk on Cracking the Coding Interview. She has a lot of interesting tips about the interview process. I feel better about knowing what to expect and how I should break down technical questions. Takeaways: remember that everyone is supposed to struggle through the problem-solving process, work with a good example to develop the algorithm, you can’t possibly know how you did because evaluation is based on how you did relative to other candidates on the same question.

Day 29

  • Attempted to implement backpropagation for ML Week 5 Neural Networks: Learning homework, looping through the m training examples as suggested by Andrew Ng. The math wasn’t working out quite right, as gradient checking showed.
  • Met with Jessica McKellar, who explained sockets and gave suggestions on what kinds of projects would help with understanding them (TCP server & client, HTTP server & client, ping, traceroute, looking at strace). I feel a bit constrained while trying to exclusively write JavaScript, but I’ll look into these projects and see what would be most useful to attempt.
  • Reattempted the backpropagation algorithm in vectorized form as suggested by a TA on the discussion board. This worked fine. It seems like looping through each example would work too, just that each operation would be done on a vector instead of a matrix with m rows. Finally done the homework!
  • Worked on tic tac toe a bit so clicking on a square emits a ’click’ event, which is received by the server over the socket. The socket responds to ‘click’ events by playing a piece in the corresponding square of the game, and emits a ‘played’ event that sends the game as data. The client socket logs the game to the console on a ‘played’ event. I haven’t decided how I want to rerender the game onto the page yet. The socket stuff is experimental while I consider how I want to organize my application.

Day 28

  • Mary and I went over how I might abstract the traversal logic from my local version control system (VCS) into higher-order functions. I currently have two similar functions for copying a directory, and for clearing a directory. I didn’t do this yet, mostly because the way I’ve done part 1 of the VCS may be affected when I write part 2 on metadata.
  • I spent some time talking to people I’d like to work with. Marisa and I are going to continue the JavaScript Asteroids game, which is super exciting! I hope she can help me fix the bullet collisions. I’m hoping to understand sockets better with Alex Jose and Jessica McKellar. Costa may be able to help us out as well.
  • Most of my afternoon was focused on the Coursera ML Week 5 videos on Neural Networks: Learning and the backpropagation algorithm. I’ve done the quiz and homework up to backpropagation, and I think I’ll try to work on the rest throughout the week.

Day 24-27

Things I’ve been working on in the past week include:

  • Writing quick READMEs to wrap up previous projects
  • A very naive rock paper scissors game (Node/Express)
  • The beginnings of a networked tic tac toe game (Node/Express/Socket.IO)
  • Coursera Machine Learning Week 4, Neural Networks: Representation
  • Part 1 of a local version control system for the Friday challenge (Node)

The Hacker School party was a lot of fun! I talked to lots of great people!

These are photos taken in one of the photo booths. They turned out great! Thank you to everyone who worked on fun projects that made the night such a success!

(Top: me and Alice) (Middle: me, Minnie, Ryan, and Max) (Bottom: me, Brent, and Alice)

Day 24

Today, 30 more people joined our summer batch. Everyone I talked to this morning was nice! The space is noticeably louder though. I’ll have to see what will help me stay focused.

In the morning, I read the free chapter of Functional JavaScript, read the docs for Underscore.js, and wrote a few READMEs for my previous projects. I then watched the week 4 videos on neural network representations and started the homework.

Day 22-23

Alan helped me out with combinations by talking me through the algorithm and implementing it in Haskell! Doing these things in JavaScript feels mighty unnatural.

Today I wrote a trie in JavaScript, and imported almost 80,000 valid Scrabble words into it! I had been struggling with my implementation of the trie until I asked Alex Jose and described what was going on. He suggested writing a function to find the lowest matching subtrie, and that got me unstuck. I can now draw a hand of Scrabble tiles from a bag and find all the valid words you could make with them! I might go all out with this Scrabble thing.

Day 21

Permutations and Scrabble tile representations! I’m having a hard time with combinations, so I’ll try to get more help tomorrow. I understand that some people can do the same thing in less time, but I’m moving at a pace where I think I’m making progress and understanding things better than I used to.

Day 20

Alex was in town so I didn’t come in last Friday to work on the challenge. (I’m secretly looking forward to learning Haskell after the batch is over, which I am not currently doing so I can focus on JavaScript.)

I’m going through the recursion exercises, and writing tests in Jasmine! When I first learned about recursion, I was confused. I definitely think it gets easier with practice, and it makes more sense when it’s decomposed. I’m attempting to write more functional JavaScript. I wonder if it’s reasonably straightforward to write a tail recursive interpreter.