Category: coding

Hack Reactor: Day 13 – Monday, the 13th…

It’s kind of amusing that our 13th day at Hack Reactor is on Monday, the 13th. After the way things were going recently, you wouldn’t have been surprised if this day was coincidentally on Friday, the 13th instead.

Anyway! I am happy to say that today was downright amazing. Especially compared to last week.

We started off with a self assessment and I think I did as well as I could have. Pretty much completed all the problems — though this time 3 of them involved writing about time complexity. Not coding, but actual writing. This is something we lightly glossed over in an earlier lecture, but they really want us to understand it. I’m gonna need to spend more time studying it.

The other two problems involved translating something from one style of code to another style (mostly easy though something was breaking for me) and finally writing a function that can return an array of duplicate letters given some input (eg., Mississippi return an array of [i, s, p]).

I finished right as our hour long block of time expired. Then we started a new white boarding experiment (instead of the usual sprint reflection). This time, we had to whiteboard a problem that involved using recursion to traverse a tree and return every value in a flat array. I can’t even attempt to type that out, but you can see the results in the attached image for this journal.

We paired up based on who was sitting next to us, so my new partner was this fun Russian classmate who had hosted a meetup for a number of us prior to the start of the program.

One of the things that our instructors mentioned we should eventually do is to try to do this stuff in an interview style. One person sits and the other explains the problem. I don’t think anyone is quite ready for that yet so we both worked on this together.

Afterward, we went to lecture to learn about our new sprint: using jQuery and AJAX to interact with servers and navigate a RESTful API. We were going to build a chat app (and all the data was going to be shared and available amongst the entire cohort, which set up some epic trolling).

One of the things our instructor informed us about is that we’re going to be converting our web app later this week to a framework called “Backbone” and he said it’s generally one of the more difficult problems in the course. “Basically, this week is going to really suck for you guys.”

Whatever, I’m not scared!

(Oh shit oh shit)

We went back to our desks to work on the problem on our own before lunch. Most of the assignments we get involve a suite of tests that we need to complete and pass before we can move on. I was so excited to start playing with the API, I just dove in without looking at the tests. Oops!

What’s crazy is that I was getting things working pretty quickly. I think it’s because I have some familiarity with this sort of thing thanks to some previous projects. That said, it was pretty easy to figure out any potential problems that came up. It was a nice confidence boost.

Lunch came and went, and we had a brief lecture on cross site scripting vulnerabilities and how the browser security model copes with this sort of thing. It turned out to be especially relevant after everyone paired up and started coding.

My partner for this sprint was a fellow Oakland resident (like us, him and his wife also found out they were pregnant right before classes started). I met him the week before school as well, so we have a bit of history already.

Let’s just get this out of the way: he was awesome. He’s really sharp and I was able to learn a lot about debugging our web app from him. He has a pretty keen eye when it comes to spotting errors and deciphering what they mean.

We were able to pass all the tests relatively quickly. We did get hung up on the last test and asked for help. The HIR said, “eh, don’t worry about that test. It looks like your code works already, just implement the basic functionality of the app for now.”

And we did. It is soooooo refreshing to have a partner who is on board with that!

Anyway, since we were all building a chat app that wrote and sourced data from the same database, you can imagine the fun that people started to have. Building functions with 100 millisecond loops that would repeatedly post stuff like “8th floor rules!!!!!” And trading barbs with the cohort on the 6th floor (who were using the same database).

People also realized that they could inject JavaScript files into other students’ browsers that would change how the page was displayed, how certain actions behaved and even throwing up infinite pop up loops. It was mayhem. We basically invented another form of Reddit. (Didn’t I make that same joke on day 1?)

Anyway, it was getting obnoxious, so I found a function that sanitized user data and stripped out all these annoying XSS attacks. I posted it in our Slack chat channel (our official internal chat service as opposed to this thing that we were building). People seemed to be pretty happy that I found that.

Dinner was frantic because I was finishing up my PRESENTATION.

At 6:30, everyone gathered into the lecture hall and I gave a 5 minute presentation called “A brief (and animated) history of the GIF.” It went really well and people seemed to really enjoy it. It was fun!

After that, we spent the rest of the evening cleaning up the rest of our code. After hours, I started to watch a Lynda.com video on the Backbone library to try and get a head start on this week’s main topic. It’s going to be intense.

I left the building tonight at 9:30pm.

Hack Reactor: Day 12 – Ignore complexity. Ignore it. No really, stop it.

So, I got home last night and tried meditating thanks to a suggestion from Kerry and one of our neighbors. Basically, it’s been hard for me to fall asleep because I bike a mile from the BART station late at night on my way home, which gets my heart racing. On top of that, my mind is still so wrapped up from the events of each day that it just races like crazy.

So, I downloaded an app and tried it out and I think it really helped. It’s weird and crazy and strange, but I dunno. It was kind of nice to try and force your mind to not think about anything for 10 minutes or so.

Anyway, I woke up this morning and started to re-implement the project we were supposed to work on yesterday on my own. I made some pretty significant progress before I had to leave the house and head to school (wait, is it Saturday?? Oh man, it’s Saturday).

Today’s toy problem was a bubble sort. It’s one of the most basic concepts of computer science and we had to come up with a way to implement it from scratch. This means you’re given an array that looks like [5,1,3,4,2] and have to come up with a way to return [1,2,3,4,5].

It wasn’t too difficult though I don’t think I solved it in the most efficient way. I feel like I can work on that sort of thing later when I have more fundamentals down. Right now, at least I can solve the problem.

After that, it was pair time. I showed my partner the progress I made and he seemed impressed. So, he begrudgingly agreed to let us try modifying our existing code from my own source code. So we did! Mostly. But then we got stuck on stupid stuff and went to get help from an HIR who basically said “you guys really need to ignore this complexity. I know you talked to Marcus last night but that guy it a genius and probably explained things in excruciating detail. You don’t need to know any of that!”

No kidding. I’ve felt pretty comfortable not totally understanding how certain things work when it comes to these third party libraries and I think that’s important. I get the curiosity, but we don’t have the time to get hung up on it. The HIR left us with some more advice, “use whatever resources you have available to you to implement the code and then start trying to understand it once you compete your basic requirements.”

At this point, my partner gets bummed out and sad and I basically had to drag him through my code to get stuff implemented. Right before lunch, we FINALLY got about 75% of the basic requirements implemented. I told him to stand up and then gave him a hug. A bunch of people laughed, we all high fived, it was good.

It was still frustrating but I tried to have a much more positive attitude about things today. I think going into the day with that mindset is huge.

Before lunch, there was a final piece of the basic requirements to implement and we were having a lot of trouble getting things to work. I suggested that we should just look at someone else’s code to get an idea of what was going on. My partner was almost incredulous, “wait, do you mean another Hack Reactor student?!?”

Errr, yes.

Lunch came around and he took off. I walked over to some of our neighbors and asked what they did to get this feature working (basically how to get our web app to respond to mouse input and actually drag and drop elements around the webpage.)

The answers were amazing. “To be honest, I have zero idea how to do it. I just copied someone else’s code and it worked.”

“Oh! The drag and drop code? I just found this example and copied it.”

“Oh, hahaha. That thing? I copied the code from our neighbor. It just works.”

So, I did just that and went to lunch. We got back from lunch and I showed him the updated code. “Look at this crazy thing. It works! Amazing!!!”

That did it. We finished the basic requirements. Since it’s Saturday, the official learning portion of the class ends at 5:30 (before our weekly social night kicks off). So, at that point we had a few hours left. I ended up watching the solution lecture videos that Hack Reactor provides after each sprint and then worked on some algorithm problems.

After that, social night officially kicked off at 6:30. The theme this week was karaoke night. So, a bunch of us went down to the 7th floor lecture hall, had a few beers and sang the night away.

Hack Reactor: Day 11… or something

It’s about 9pm and I just left Hack Reactor. Today was an outrageously frustrating day that made me feel like I might not be cut out for this. It’s a stupid and over dramatic thing to claim, I know.

Anyway, there’s a lot of unhappiness and negativity in today’s journal.

I woke up early and worked on my “letter asteroids” game for a bit and ended up showing a number of people this morning before classes started. People were getting an absolute kick out of it and it was great seeing the reactions. Tons of people had suggestions and wanted to see me take it further. Awesome!

We worked on a toy problem to attempt to calculate the nth element of a Fibonacci sequence. I completely screwed it up and spent 45 minutes just spinning my wheels and doing absolutely nothing. So, that was great.

Then we had our standard sprint reflection for a bit before we broke for our mid-morning lecture for our new sprint. This was going to be focused on a data visualization package called D3. I’ve been really excited about learning more about this library for a long time and have considered this sort of thing to be one of my strong suites.

The objective for this sprint was to build a simple game using D3 to show how powerful it was and other ways it could be used. (Hey! Another game, alright)

Basically, we were going to be re-implementing a game that was written in another programming language and we’d be able to reference these documents whenever we needed. Alright, seems easy enough. That’ll leave some time to really have fun with this package!

Hahahaha.

Today, we switched up to new partners. Someone I hadn’t worked with with yet wanted to pair with me and I said sure. He’s been pretty interesting to talk to in the past and he’s one of the few I met from the meet up prior to school starting.

So, I think I said this yesterday, but I distinctly remember one of the things our lecturers said during the first week was how pair programming was going to make us better communicators. And they also had a warning that if you are someone who has a problem with a lot of other people, maybe the problem isn’t them, but it isn’t you.

Between the last few days and today, I’m starting to think the problem is me. I mean, I don’t think it is! But things just went wrong from the start. We came back from lunch and sat down to get to work and it turns out he hadn’t even read the intro docs yet (which by the way, we had 45 minutes set aside BEFORE lunch for this specific purpose).

So he wanted to do that before we began. Sure, sure! Then we started trying to implement the game — he was driver since he was less experienced and comfortable in D3 and I would navigate. But he second guessed every decision I would make and strongly suggested that I not look at the source code for the previous game (again, written in another language, mind you!).

The API documentation for D3 is about 2,000 pages. There is no way we’re re-implementing this stupid cheesy game from scratch without some sort of documentation or reference material. I said as much, but he wanted to really dig in and reverse engineer a bunch of complexity from scratch. One of the things our lecturers really stress is that we should avoid unnecessary complexity. I was going to try and help him walk through it but it wasn’t going well.

On top of that, he grabbed one of our whiteboards and started to write a list of words we should not say to each other! Stuff like:

  • I think
  • I feel
  • basically
  • actually
  • we should
  • actually
  • like

And he continued to update it whenever he heard a new word that he didn’t like either of us using. Great! I quipped that if he kept this up we wouldn’t be able to talk to each other.

Anyway, we continued struggle a bunch before dinner and I think people around us were picking up on our frustrations and realizing that we needed to clear our heads. A fellow student was sitting at the workstation next to us and asked me, “umm, want to get out of here for a bit and grab dinner?”

I ended up inviting my partner as well since he had no where to go. We had a pretty good chat about what was working and what wasn’t working and it was kind of nice to have a third person there to break the tension.

So, dinner was great! We returned to our workstations with renewed vigor and a sense of purpose.

And pretty quickly ran into the same problems again and again. Arrrrggggghhhhh.

On top of this, an HIR wanted to talk to me about Monday’s self-assessment test, which I had thought I’d done pretty well on. We sat down and he pulled up one of my problems and said, “I’ll be honest. I have absolutely zero idea what you were trying to do here.”

So, we went through this problem and 2 others, rewriting my code line by line. It was definitely helpful but I was a bit flustered from the day’s events and struggled my way through it. It’s stuff like this that fosters imposter syndrome and makes me wonder if I’m in over my head.

Toward the end of the night, I finally suggested that we should scrap everything we have, start over from scratch and reference the provided source code (since everyone else was doing that, too). My partner replies “Dave, I really don’t appreciate your negativity right now.”

I’m assuming a staff member heard us because a few minutes later Marcus, one of the cofounders (and a lecturer) came over to us and asked if everything was okay.

He has the patience of a saint. I felt like my partner was getting bogged down in the complexity of how the library worked and Marcus spent the next hour and 15 minutes explaining to both of us how this sort of stuff worked but why it was important that libraries abstract this stuff away from us. It was great spending one on one time with Marcus but frustrating to realize what sorts of things were blocking us from being able to move forward.

Ultimately, we accomplished approximately zero things today. I finally left “early” at 9pm because I couldn’t take it anymore.

Maybe a night of solid sleep will help. Reset, reboot, and head in tomorrow with a better attitude.

Hack Reactor: Day 9 – Spinning wheels while others spin games

I really started to hit a wall today in terms of energy level. I think Sunday gives a lot of time to cooperate, but by midweek we’ve run out of adrenaline and energy. From lunch time until I left at 9:40PM, I could barely keep my eyes open. I imagine most of my fellow students feel the same way. Nearly the whole class went home by 8:30PM.

But more on that later.

We started off the day with a toy problem called “IsSubsetOf?” Basically, you’re given an array that looks something like ['dave','kerry'] and you want to find out if it’s a subset of another array that contains ['dave','kerry','benson','tegan','tosh']. Which it is! You’re looking to see if all those elements are contained within another array.

I ended up finishing the problem with about 4 lines of code and it took me 10 minutes at most. It was deceivingly easy. Too easy. I kept looking over things to make sure I wasn’t missing anything. Finally I submitted it and ended up getting 8 out of 8 points from Taser. Awesome!!

The entire rest of the day was spent on our sun class sprint. So many people in the class were building actual games that would take user input, move elements around the screen, and react to user input and other elements. It was amazing.

Today’s student presentation was given by this sharp kid about how he wrote a way tracing app in JavaScript. I’ve talked to him a few times and have always been struck by his intelligence. He’s really young! We were chatting about where we grew up and he mentioned he moved away from the Bay Area when he was 10 years old.

“So, that was around 2005 I think.”

Hooooly crap. Believe it or not, there is also a 15 year old kid going through the program in the other cohort right now. Insane!

Anyway, we wrapped things up and went back to our desks. There was a lot of laughter and people were having fun showing their projects to each other.

Meanwhile, my partner and I had completed our “Sharknado” and he was searching for how many Jean Claude Van Damm images we could put on one page before it caused epilepsy and wouldn’t let us move on to adding interesting feature simply because a few images kept moving outside the bounds of our page.

One of our fellow classmates came over, laughed and remarked that it looked like a Geocities page from the early 1990’s.

Yea, no kidding. So, that was fun.

When we were finally able to move on, we had trouble trying to implement some features like detecting basic user input and both him and I were getting frustrated. Plus, we were all so exhausted too. It was hard to think!

It got to the point where he asked me what else we should add and I told him “nothing!” I was just done with this project. I don’t think he was that thrilled but if we couldn’t stop getting hung up on making everything perfect from the moment we add it, there was no point working on more stuff for our “Geocities” page.

The day wrapped up and him and most of the class called it at around 8PM. Despite being exhausted, I stayed and worked on a brand new project using some of the things we learned (or were supposed to learn) over the last two days.

After seeing all these other people create actual simple games, I wanted to try doing that too. So, from 8PM to around 9:45PM, I was furiously trying to my own game. And you know what? I have a pretty decent start!

Basically, think of the old video game “Asteroids”, where a player controls a spaceship on screen and has to dodge incoming asteroids. I decided to do that but with letters. The player is assigned a letter (e.g., “A”) and has to dodge letters that randomly appear and float down the screen. However, if they see their own letter appear, they need to capture it by running into it.

In about 2 hours I got most of that working on my own! Letters randomly appear, the player can move around their own letter, it’s awesome! Still need to add collision detection and scores but that shouldn’t be too bad at this point!

It was awesome to see that come together so quickly and I feel like I salvaged an otherwise wasted day! By the time I left for the night, I was one of 3 students still there.

Hack Reactor: Day 8 – Getting into a groove

I think we’re finally getting into a groove with how our schedule is supposed to work at Hack Reactor. We started the day by going over a solution to yesterday’s toy problem. It was ultimately a solution that involved some recursion and considering how to navigate through a decision tree.

My attempt at the problem wasn’t that great. But hey! It’s a learning process. We received our second toy problem, today. This time, we had to return the first non-repeating character in a string. For example:

AAB would return B
AACADE would return C

I implemented a proper solution in the time allotted. I can’t say it was the most efficient way, but it works! And it turns out that this was probably the first time that Taser (our test robot) said my code passed all tests. Absolutely amazing!

Rather than have a reflection to go over our recent two-day sprint, we ended up working in random groups trying to whiteboard a bubble sort problem.

Our mid-morning lecture involved introducing us to a new sprint called “Sub Class Dance Party.” The goal is to look at how various objects we create can inherit certain unnamed properties and methods from their parents.

It’s like having a factory that creates cars. Every car has certain rules it follows. 4 tires, 4 doors, seatbelts, etc. That is the parent class.

The children classes get created when you want to create new things based on that original object.“ Okay, we have the blueprint for a car. Now let’s turn it into a limo with a subclass.”

The only thing this subclass would say is that the car is longer. And maybe a bit more expensive.

But that’s basically it. Anyway, we had to create a cheesy little webapp that would display some random dancers on screen (represented by little dots though people were doing some crazy things with them by using images and GIFS).

After lunch, we paired up with new people for this sprint.

My partner and I worked well together and we were able to move through the exercises pretty quickly and polished off the basic requirements before dinner.

My sister was randomly in the area, so she stopped by and had dinner with a few of my classmates and I. It’s especially amusing since her old boss is one of my fellow classmates! It was good to see her and kind of fun to randomly run into my sister while we were at dinner. She seemed to enjoy talking to my fellow classmates.

After dinner, it was fun time!

We went back to our desks and started coding. By the point, most people had wrapped up the basic requirements, so they were going crazy. I wish I had screenshots or links to share. There were hamburgers floating across screens, dancing bananas, people making trippy scenes that looked like you were in drugs, etc.

We were all having a lot of fun. It was nice to have something a bit more low key to work on after grinding so hard over the last week and a half on heavy concepts.

My partner and I were randomly playing around with how to make our objects move on a sort of random fashion. We ended up adding an image of a shark and having some fun getting it to display and move on screen. My partner had to go to the restroom so I decided to try and quickly add an Easter egg. I created a function called “Crazy Shit Don’t Touch This Button Mode.” If you clicked it, it would randomly spawn 2,000 objects (in the case, sharks) all over our screen. I was having so much fun and laughing so hard I had tears in my eyes.

He came back, clicked the button and thought it was amazing. We then wrote a function that would take all these objects and move them to random locations. Something went wrong and our sharks started to spin around each other like a tornado. It resembled the horrible movie “Sharknado.” We were laughing do hard that people kept coming to our workstation to see what was happening. Hah!

We had an after hours chat tonight by the CEO of a product management company. He encouraged us all the consider becoming PMs within a few years because having a technical background was something that was valuable and hard to get for a lot of product managers. Overall, this particular talk was kind of a waste of time.

We went back to our desks and kind of messed around with out project a bit more. At about 9:45, I hit a serious wall and called it a night.

Tomorrow is day 2 of the sprint and I think it’s just going to be a ridiculously fun day since we get to mess around and finish this project!

Hack Reactor: Day 7 – Looking for solutions to so many problems

Today was another one of those roller coaster ride of emotions days. It started off with our second self-assessment test, which I’m finding immensely stressful. They aren’t gated, meaning if you “fail” or do poorly, the onus is on you to improve in the areas you’re weak in.

I thought I actually did much better this time, even though my score was 18 out of 28. I made a pretty valiant attempt at every problem at least! The test basically asked us to write a number of functions from scratch.

- Add and remove items from a stack.
- Explain difference between a stack and a queue.
- Write a function to properly detect collisions when adding values to a hash table (and be able to resolve them.)
- Write a “reduce right” function that basically reverses the content of an array.
- Extend the JavaScript array object to be able to return the first and last items in an array by simply attaching a method.

One of the reasons I was dinged was that I left a bunch of debug code beneath one of my files. So when the automated testing system ran, it picked up the wrong values. Oops!

Of course, maybe if I put more time into writing better code, rather than witty comments inside my code, I’d do better…

  // This is going to be ugly, 
  // please forgive me computer gods.
  // Iterate through our list of arrays...
  // ...which is an array!
  for (var i=0; i < length; i++) {
    // Now, iterate over the elements
    // within a particular the array.

    for (var j=0; j < list[i]; j++) {
      // Call our iterator function 
      // and pust values into it
      result.push(iterator(list[length], list[length-1]));
    }
  }

Fortunately, the raw scores don’t mean too much. The self assessments are also examined by humans, too. So they can at least understand our ideas and then work with us directly if we aren’t understanding something (e.g., when they worked with me last week about recursion).

After this, we took part in a “sprint reflection.” Basically, we talk to Hack Reactor about what we liked and didn’t like about the most recent sprint and suggested ways to improve it. I think I wrote about this a few days ago when we first did it.

Then we went to our first lecture of the day (only one of two today!), where we learned about a new type of algorithm to tackle the “N-Queens” problem. Basically, given a chess board of n size, how many queens can you add before they are able to see each other within their range of movement.

Conceptually, it makes sense. But we were going to be lucky enough to get to implement a programmatic solution on our own. Oh, joy. Fun times were about to happen.

Before we left for lunch, we were able to do some initial solo coding and start working on the problem set for this particular sprint. I was able to tackle a few initial problems without much difficulty and even helped a few of my neighbors.

After lunch, we had a brief introduction to CSS and HTML, which most of us felt was a bit below our skill level and not an entirely good use of our time. I looked around the lecture hall and saw most people working on their N-Queens problem.

Fortunately, after this lecture ended at around 2:30pm, we had the entire rest of the day to code — from 2:30pm until the day ended at 8PM. This was a very exciting proposition and a lot of us felt that we’d be able to make some major progress with this problem set. (Ha ha ha ha…..)

Anyway, this is another sprint where they wanted to partner us up with someone of similar experience. They put a list of 10 questions on the screen and we lined up based on how many we were able to say yes to.

Last time, my ‘score’ was a 2 when I counted up all the answers I knew, and we know how that whole thing went. So this time, I counted up the number of questions I knew and maybe padded an answer or two with yes, and oh, sure I read about that one on Wikipedia one time.

So, this time, my score was a 5. A nice number that places me right in the middle of the pack. Coincidentally, there were a lot of other people who were also 5’s. Suspicious!

Anyway, after the brief introduction to our new pair programming partners, we were again thrown in the deep end of the pool. My new partner and I sat down and went to work.

Go figure, we immediately encountered difficulties with the problem set. Hack Reactor really makes you work hard to figure this stuff out and it can be such a demoralizing experience.

Basically, we were trying to implement a way to check whether any queens were in conflict (able to see each other) on a specific diagonal line. The code looked good but stuff kept failing some automated tests. Argggggh!

It sounds like a lot of others were having this issue too. The group next to us was stuck on the exact same problem. After 2 hours of trying various things, I suggested we skip this particular instance and just move on.

The second part of our problem set involves solving boards that the computer randomly generates and then asks us to try to put “x” number of chess pieces on the board without any conflicts.

We immediately ran into trouble with that too. We broke for dinner and then regrouped to tackle it.

The crazy thing is that we’ll just sit there and grind, spinning our wheels and not get anywhere. Then out of nowhere, one of us will have a brilliant, ingenious solution that we furiously code, only to find out that it doesn’t work either. This happened to both of us a number of times last night.

We end up drawing the problems out on some portable whiteboards — it really helps when trying to figure something out (and it’s why I’ve been taking so many pictures of whiteboards lately). Eventually, we’re able to figure out where we went wrong and can fix it.

So, after another 3 hours, we finally, finally, finally solved the major problem we’d been working on. It was awesome! I jumped up, high fived the people around me and gave my partner a hug. (People probably think I’m weird, but whatever — we’re here to learn and have a good time, too.) We also solved it right as we were getting ready to leave at 9:30PM.

(The crazy thing is that the entire class was still coding at 9:00PM, an hour after the day officially ended — I think that shows how focused everyone was on trying to understand this problem. It was really cool to see!)

There’s still a lot to do tomorrow, but we left feeling much better.

A favorite Sublime Text shortcut: moving lines of code

3Ga4NL2mdm

Sublime Text is an indispensable tool to have in your arsenal of web development goodies. There’s a nearly infinite amount of shortcuts and tricks one can use to improve their workflow.

One of my favorite shortcuts is moving either lines (or entire blocks) of code up or down a page without cutting and pasting all over the place.

Simply select the line (or multiple lines of code) that you want to move, then simply hit

CONTROL + CMD + (Up or Down arrows) on OS X
CONTROL + SHIFT + (Up or Down arrows) on Windows

I guarantee if you do this in front of your friends or family, you will look like a wizard.

Hack Reactor: Day 6 – The first week is over!

Holy crap!

Is it true? Is the first week finally over? I’ve been having a blast but this is intense! 13 and 14 hour days straight for the last week. I’m going to sleep so hard tomorrow.

Except I probably won’t. My intention was to sleep in a bit today (hey, it’s Saturday!) which means waking up at 6:30 instead of 5:30. Naturally, 5:30 comes around and I’m instantly awake. So much for that idea!

BART is running a limited schedule today due to the holiday, so I was a bit afraid that the first train into the city would arrive later than I liked, so I took the bus in – it’s a good experiment to try since BART will be completely shut down during two days this summer and I’ll need to find some alternate ways to get to class.

Anyway, today was a slightly “easier” day. Maybe it’s because it’s the end of the first week, this is technically our Friday, or that we have a “social night” scheduled (more on that later).

We had a few lectures that consisted of:

- An algorithm of an algorithm: We talked about how to look at ways to approach and solve problems from a software engineering perspective.

-Advanced Data Structures and solutions: This lecture showed how to solve some of the crazy data structure problems we've been working on (involving things like hash tables, trees, binary search trees, and linked lists).

- “Blogging and You”: Hack Reactor highly encourages us to blog about engineering concepts that we learn, interesting problems we've solved or even the tools and apps we use on a day to day basis. They make a point that doing this makes it easier to market ourselves down the road, and prospective employers can learn more about us. I tend to agree, but I think the real question that most of us have is: when will we ever have time to blog???

- jQuery Presentation: This was the final presentation of the day and it was pretty light weight. We looked at the jQuery library and some of the neat things that developers can do with it. We've briefly played with it for some pre-course material, but it sounds like we'll be diving in more next week.

Spaced between those lectures was more time to code and work on our problems. It sounds like a lot of people struggled through this particular sprint. (By the way, I’m not sure if I mentioned it earlier, but a sprint is something that Hack Reactor calls a series of two-day long problem solving sessions and lectures. So, we wrapped up our data structures sprint today. On Monday and Tuesday, we’ll start an algorithms sprint).

It sounds like a huge number of us will be spending tomorrow (our “off” day, hah), hitting the books! I’m definitely going to be one of those people, since my partner and I weren’t able to finish all the problems in this particular sprint. On top of that, we have a brand new self-assessment test coming in on Monday as well, which will focus on the data structures concepts we’ve been covering.

This is actually one thing I’ve found slightly frustrating about Hack Reactor. One of the reasons I joined the bootcamp (and had started considering coding bootcamps in the first place) was because I wanted a more structured approach to learning these skills. Sure, I could have taught myself, but it would have taken ages and I probably would have skipped things that I found too difficult to grasp.

Hack Reactor provides a structured approach to learning these skills in that they have a roadmap that gives you a high level view of where we’re going, but when it comes to any particular detail within that roadmap (e.g., data structures), they basically make you sink or swim. So, my partner and I were forced to try and learn these concepts on the fly. When it finally works out and we get something, it’s a rewarding experience. But when we’re just spinning our wheels in one place, aren’t able to make progress on a single problem, and feel perpetually behind all our other classmates, I think that starts to become a problem.


Speaking of feeling behind and how difficult everything has been:

Toward the end of our lunch break, I wanted to do some extra studying, so I grabbed my laptop and went walking over to the lecture area (since everyone was having lunch in the kitchen, this ends up being one of the few quiet areas people can go to study). While walking that way, I saw a fellow student standing near some of the instructor desks (Hack Reactor is setup with this huge open floor plan).

He looked a bit defeated, so I went over to commiserate and ask him if he was struggling with some of these problems as well. He looked up at me and I could see his eyes were a bit read and watery – like he was trying not to cry. He shook his head and I immediately knew what was happening.

Earlier in the week, during one of our “Welcome to Hack Reactor” lectures, the instructor mentioned that they offer a “mulligan.” If, after the first week of class, you feel that the pace is too fast, you feel that you won’t be able to keep up, or have some other concerns, you can withdraw from the class and get your tuition back (minus the deposit).

That’s what this student was doing.

“It’s just too much. I need more time to focus on these concepts and maybe I can try and come back in a later cohort.”

Oh, man. My heart breaks for him. I know exactly how he is feeling. This stuff is CRAZY. Just absolutely crazy and intense. I don’t think anyone can blame him for wanting to withdraw. I’m sure every one of us have had those thoughts multiple times a day while trying to wrap our heads around these difficult concepts.

Anyway, I wished him luck and told him I could only imagine how difficult the decision was and wished him luck in the future.


After our last lecture wrapped up, it was time for our first SOCIAL NIGHT. This is something that Hack Reactor schedules every Saturday night after classes wrap up, as a way to foster friendships and get to know each other better. Usually, they’ll have us stay at school and watch movies, play games, or do other fun things like that.

For this particular instance, we went up to Fisherman’s Wharf to watch the fireworks show. Around two dozen of us left at around 6:30 and hopped on the bus. We had sat down on some concrete bleachers / seats right on the water at Aquatic Park. Since the fireworks show wasn’t going to start until 9:30PM, a number of students went off to find food (I recommended the nearby In N’ Out, which is where I think everyone went to). I had saved left overs from lunch and ate them before we left, so I wasn’t too hungry. However, a few of us sitting near each other realized we were “thirsty.” I say thirsty, because Hack Reactor has a strict no-drinking-at-school policy, so we weren’t sure what the status was (turns out, since we’re outside of the classroom, it’s fine).

So, I recommended the nearby Buena Vista Cafe, which is a legendary place known for their Irish coffee. (I’m starting to realize that the vast majority of people in our cohort aren’t originally from San Francisco and they came to Hack Reactor from far and wide – this is apparently making me the expert on all things related to San Francisco.)

So, four of us snuck away and I got to introduce some people to their first Irish coffees – which were perfect for a typically cold and foggy San Francisco evening. Anyway, it was a great time and I felt like I really got to connect and chat with some of my fellow students. Everyone comes from so many different backgrounds and walks of life.

After this, we bought a 6-pack and then joined the rest of the class for the fireworks show – which was unsurprisingly obscured by the thick fog. That said, it was still fun.

Once this wrapped up, a different group of us decided to go out – somehow, we ended up at a dance club (you know how much fun I have at those). Fortunately, all of us nerds were able to check our computer bags. We chatted, danced and toasted over the next hour or so. Then it was time to catch the last BART ride home.

Oh, man.

Hack Reactor: Day 5 – Meditating on data structures again and again

Today was another one of those amazingly frustrating days that ended up fairly rewarding once things finally clicked. It started off with lectures. So many lectures. So many many lectures.

I guess we have more lectures this first week than any other week in the program. Part of that is obvious since there’s a lot of new student orientation stuff, there’s new computer science concepts to introduce, etc. But we were in lectures seemingly all day.

A sample of the lectures we had today:

How hash tables work
Test Driven Development
Language Details and Style Guides
Function Binding
Student Outcomes Program

Holy cow. And on top of that, there was an optional after hours lecture on Sublime and keyboard shortcuts from 8pm to 9pm, (which was awesome)!

In the limited time we had to code today, my partner and I were able to work through a few solutions. And then we got stuck with some method not working out when checking a tree for contents. And got stuck. And got stuck.

Like all day! My partner means well, but it takes a few times for them to really grasp concept. They continuously forget how certain methods and functions work and it’s just a really slow process. I guess these are the difficult parts of pair programming that are supposed to make us more skilled and effective communicators!

Anyway, while he was working through the problem and getting some help and explanation from HIR mentors, I was writing my own (RECURSIVE!!) function that would potentially solve the problem. I was still having little luck.

During dinner, I ambushed another classmate and we went through my code line by line. I was outrageously confused why my own implementation for our solution wasn’t working. They quickly noticed I was passing the wrong parameter into my recursive function.

ARE. YOU. SERIOUS.

I changed one line of code and it all worked, all tests passed, etc. I was elated and steaming mad (at myself) after realizing that. I tried to show my partner but they didn’t really understand what I did and wanted to try it a different way. Ah well. The good news is that I did it through recursion! Amazing! I’ve written like 4 recursion functions in the last 3 days.

Then it was time for lectures, more lectures and bonus lectures.

One of the lectures we had was from the Student Outcomes team. These are the people are teach you how to get a job, negotiate offers, and support you in your job search (immediately after Hack Reactor and in subsequent jobs in future years). It’s a really neat up sell and one of the reasons that made me want to attend Hack Reactor.

They showed a graph of graduates from 2014. About half of their grads found jobs within 6 to 8 weeks of leaving the program. That was amazing! Then they showed a graph that denoted the highest offers these graduates received (whether they accepted them or not). There were a number of buckets, but I found a few really interesting:

# of Graduates: Salary Range

51: $80K - $99K
93: $100K - $119K
43: $120K - $139K
6: > $140K

That’s a pretty amazing distribution. The biggest bucket is right around the $100K to $120K range, but a good number of people were in higher ranges. That’s really amazing! (The bucket with lower ranges potentially represents people who moved to other areas with lower salaries, etc).

One thing the lecturer mentioned was that there was no correlation between previous computer science degrees or engineering backgrounds and salaries. 4 of the people in the $140K+ bucket did not have CS degrees, one knew nothing about coding before Hack Reactor, etc. That’s really reassuring!

Anyway, after that lecture ended and the bonus “Sublime shortcuts” lecture ended at 9pm, I again stayed by myself to work on these data structure problems. There are a lot to go over and I want to make sure I rally understand them – it’s such an essential part of being a software engineer! Plus, a number of HIRs and seniors have said that having a solid understanding of these concepts will make the rest of the program much easier

I got some help and advice from an HIR who stayed late and gave me some great pointers on things to consider when writing to a hash table.

Anyway, after working through some problems on my own, I finally packed things up and left the building at 10:15PM. Another late night! I’m racking up the extra hours.

But I am feeling it. My head feels really foggy right now and I’m going to crash the moment I get home.

Hack Reactor: Day 4 – Time is Inconsequential

Last night, Kerry mentioned to me that I’m half way through my first week. I don’t think I even realized that! On one hand, the time has flown by. On the other, it’s all blurring together. Has it been 4 days already? A week? It feels like time has no meaning at this point. I get home late, talk to Kerry for 30 minutes or so, go to bed, wake up and do chores or get a quick run in and leave for class.

I am having fun and learning a lot, and I had a vague sense of how intense this would be, but oh man. This is really intense!

Anyway, Kerry left for Southern California for a few days and took Benson with her. I’m on my own! Sorry, cats! (Just kidding. I’ll take care of them.)

This morning we had a lecture on prototype chains which is picks up on the stuff we were learning last night. Afterward, my current coding partner, Erik, and I continued working on our data structure problems and were having some pretty good success!

Side note about Erik: When he first moved to San Francisco a few weeks ago, he was staying with a friend of his… who lives on the 18th floor of my old apartment building at the Carillon Tower. Crazy!

Around mid morning, we’re happily coding when an HIR came over to me to discuss my self-assessment results. Oh, shit!!! I just knew it was going to be about the recursive problem that I completely missed doing.

She wanted me to work through it and make sure I understood how things worked. It’s a pretty fair concern though, they probably want to make sure that I’m not trying to just coast my way through the program. That’s not good for anyone. So, we coded the problem from scratch. Man, it was rough but we ultimately got the correct result after about 30 minutes. I think I understand what was going on but I’ll need to spend some time studying and rewriting things.

Lunch was pretty uneventful. It was mostly used for Target errands and studying.

Anyway, the rest of the day was full of tons of lectures that left little time for coding. We ended the day with a “sprint reflection” which we’ll do roughly once a week. Basically, we give Hack Reactor feedback on what they could be doing better. It’s kind of an interesting way for them to iterate on student suggestions and make rapid improvements. Apparently, a number of previous cohorts have had suggestions that have resulted in some of the experiences we’re currently having.

After 8pm, the day was officially over, but I wanted to spend some extra time working on recursion problems. Boy, did I ever!

From 8pm to 9pm I took it upon myself to again rewrite the self assessment recursion problem to see if I could understand it. It would have been done in 30 minutes if not for some stupid bug (basically, I forgot to return a number. Duuuuuuuuuh.)

Once I finished, I stood up and high fived everyone around me. I was so ridiculously excited! Another student told me that this is basically like a drug – you go through these addictive highs and the crash, so you need to try to work on more problems. Hah.

Beth, the HIR (hacker in residence) who helped me earlier was sitting nearby and saw my excitement, so she asked if I wanted to work on another recursion problem. What the heck, let’s do it!

Go figure, that resulted in me staying until 10pm to work on it. Oh, man. I think I’m really starting to get it, but I just need more practice! I don’t want to shy away from these opportunities to learn and become better – this is what we’re paying for, right?

Anyway, this is the latest night by far: arrived at 8:30AM and left at 10:10PM. Damn. I’m going to regret this in the morning.