How well does the age someone starts to learn programming correlate with their long-term technical ability and professional success?

I’d say anyone would have a much easier time starting today, regardless of their age, because you can find anything you need to about programming on the internet.  You know what you need to do to look up something in your favorite language? Google it.

To me, your total time invested is worth far more than when you started.

4th of July

After working most of the day and getting a head start on our 3rd major project, we decided to take a break and celebrate 4th of July away from our computers.  There’s an electronic dumkit, some guitars, and a PA system so Rick, Nick, and I jammed out for a while.  I haven’t played drums in a while so it felt good to get some energy out.  Sarah made bbq tri-tip, chicken, and corn and afterwards we ate s’mores! The head of a company called WhalePath was over hanging out with Nick so we talked to him a bit about the problems his company is having. When it got dark we went up to a hill nearby to watch the fireworks, but it wasn’t that great because the hill is up so high all of the fireworks were far away and below us.  It was still a great view of silicon valley though. When we got back we played some poker and talked more about the problems facing whalepath.  The ceo has a very specific vision for the company and it is really future oriented which is great, but the technology necessary to do what he envisions won’t be available for quite a while.

Express.js, Node, and Firebase Meetup

Yesterday we went to a meetup at firebase’s HQ in San Francisco. We had contacted the CEO about a tour so we arrived early and James showed us around the office.  It seemed pretty typical of startups: paintings on the walls, open floor plan, and small conference rooms.  We After getting a look around we entered the largest conference room and had a quick Q&A session with James and Sarah, their developer advocate.  They asked us what we’re learning and working on and were surprised to hear we had used firebase a couple of times already.  The office is really close to my apartment in SF and I really like their product, so I’m thinking about applying there before this bootcamp ends. When asked if they were hiring, it seems like they are looking for more senior talent, but it wouldn’t hurt to try! 

The meetup had a couple of speakers, one that introduced a real-time web app using firebase and another that used rethinkDB, the other meetup sponsor.  I had never heard of rethinkDB but it seems like a great solution for real-time scalable databases.  We’re learning mongoDB right now and I was talking with one of the developers and he said I should continue to learn mongo because it would be painless to switch to rethinkDB as their query languages are similar.  The third presenter talked about CodePad, which is a browser based code editor on steroids.  It handles all major programming languages and lets you debug in real time. The creator was really passionate about how coding interviews right now are terrible because they are filled with hypothetical situations and whiteboard solutions. This isn’t ideal because developers expect to be able to try out code, debug, and iterate on the job, so why should it be any different in an interview? I for one think it’s a fantastic product and he was hilarious as well, ending his speech with: soo who’s gonna pay me?

Fast forward to today, we received our 3rd project, which is a re-write of our restaurant application from week 1.  This time, however, we must use node.js and mongoDB for the backend.  We spent the evening planning out how we would tackle this beast and tomorrow will assign tasks.  I really hope to work on the node.js and express routes as that’s currently the hardest thing for me to grasp and there would be no better way than to create/fail/iterate on an actual project.  I spent the day doing tutorials on mongo/node/express and tomorrow I need to as well. Hopefully I can find a good course that can walk me through an entire application using these technologies as I learn faster through doing.  Doesn’t everyone?

Day off was a nice break…but still work needed to be done

Sunday is our “day off” at coding house and although I was able to head back to my apartment in SF to hang out with my girlfriend, I still had some work to do.  First I had a soccer game, which was a pain to get to because SF PRIDE takes up all of market street and pretty much destroys the ability to use roads in the city.  Seriously though, events of this magnitude (over 100,000 I read?) really show the poor city planning of SF. Not sure could be done to fix this as the infrastructure is so ingrained with the city layout, but hopefully someone can figure out something better in the future.

After the traffic > soccer game > traffic, I worked on my portfolio site redesign for a bit and I finally figured out a bug that was tripping me up! Before I started coding, I thought about the design of the website and I knew I wanted to have all of the content be displayed without refreshing the page.  In order to do this I considered using AngularJS as I have worked with it before and really like the SPA aspect, which was my goal.  However, I remembered the adage “use the right tool for the right job” and angularJS for a simple portfolio site is just overkill.  Instead, I imagined how I would develop the site using jQuery and after an initial prototype I got working in 10 minutes, I decided it would suit my needs just fine.  So now users can navigate my site and view all the projects and the page never reloads.  The tradeoff is that when the front page first loads, there is an initial hit as all the content needs to be parsed, but with any decent internet connection it is still a minimal amount of time.  I’m still having a little bit of a conundrum about whether to include all of my contact information in a dropdown menu on the top navbar or include icons in the footer of the page.  Today we have a critique from Nick about our websites so maybe he can provide insight on what to use. 

We went to Co Namm, a vietnamese fusion restaurant, for dinner and it was amazing.  Afterwards we walked down polk street and got donuts for dessert at the famous Bob’s Donuts, where there is always a line out the door.  I don’t normally eat donuts but wow, if you’re around polk street you owe it to yourself to try their donuts. I settled in for the night and knew I would have to wake up early to catch the fremont BART in order to be back at the coding house in time for lecture.

We’re starting what will probably be the most challenging phase today: mongodb, express.js, and node.js.  All of these are interrelated and I’m excited about learning the backend side of web development.  Before coming to this bootcamp I studied almost exclusively front-end material, focusing heavily on javascript.  Once I learned about node I was pretty happy I focused my efforts on js because it seems like a solid foundation is needed to understand how to construct node code with everything essentially being event driven callback functions. Anyways, it’s time for me to get started! 

Second Project, end of phase I

Two weeks have gone by at coding house and the first phase will wrap up today. It’s definitely been a crazy couple weeks and I’ve got a lot done. Instead of describing everything I think a quick list is in order:

-went through 30 days of jQuery

-Learned and implemented local storage

-Introduced to Firebase and have used it as the database for our first two major projects.  Managing sessions and login with password and email.

-Introduction to JIRA, a project management system. Not a huge fan,but I can understand how in a big organization it would be helpful

-More in depth knowledge of git.  Came in with a lot of knowledge but Git Immersion taught me a lot of new techniques and habits to get into.

Our second project is due today and is mostly done except for a few minor bugs we need to fix with the login and admin registration. I spent the last couple of days building a lot of the javascript logic behind the forms and data visualization.  Our project lead chose to use Charts.js and although it looks nice: 

I wish we would have been able to use D3 as I only have had a couple of hours to play around with that library and I’ve seen a lot of companies using D3 for data visualization.  Hopefully in the next project I’ll be able to include some of it.

We have a test today and then I think I’m going to head back to my apartment in SF.  Since I was here at codinghouse during my birthday my girlfriend wanted to celebrate it this weekend which is fine with me! It’ll be nice to get a little break from working these long hours in order to relax before node.js express.js and mongodb are introduced.

Birthday at coding house

Yesterday was my birthday and a lot has happened here at coding house! We have been working on a new project that will help us track our social media duties per day, and the plan is to use the D3 library to visualize our statistics over time. For the first project we were divided into two teams of three people each but for this project all six of us are collaborating.  To prepare us for team collaboration, coding house introduced JIRA, a task manager, and we spent a while figuring out how to divide up the tasks and estimate our time to complete each one.  

To start my birthday off we had yoga in the morning and it felt amazing to get that kind of stretch and strength training in.  Our instructor has a good balance of hybrid exercises and while they never seem impossible, they definitely require dexterity, strength, and endurance.  Especially the portion where we do 60 push-ups split between bridges and planks, whew!

Since we have six people working on this project we decided it would be good to pair program tasks and my partner is Aleks, the guy from Denmark.  We made a lot of progress in the morning but then got stuck on a problem with firebase, a data service we are using for logging in, controlling sessions, and storing our data.  The problem for us occurred when we were trying to load previous data into our variables.  The confusion stemmed from firebase’s reliance on event based data-reads.  So, instead of us being able to just say, hey we want data from X table, we have to create a callback function that reads data based when an event occurs.  The curious part was that our program was working, as long as we didn’t redirect the user after they submit their information. Long story short, our script was correct, but we were only triggering it when we clicked on the submit button, and the script needs to occur both when the page loads AND when the user submits their information (to detect if there are any changes in the database). The solution was to copy the portion of the script and paste it into the document.ready function.  As much as it was frustrating, I can’t be mad because little things happen like this in programming all the time, and it requires patience and logical thinking to overcome seemingly trivial bugs like this.

Halfway through this bug the doorbell rang and it was a special delivery for me from my girlfriend! She had found a really good cupcake bakery near our house and ordered strawberry and cookie butter cupcakes.  They were amazing, I highly recommend cookie butter on anything! We continued to work and finally got to a spot where we were happy, and right after we fixed the bug, dinner was ready! I requested the chef make pad thai as I haven’t had thai food since we’ve been here.  She seemed hesitant at first because she has never made it, but it was amazing! She really outdid herself, including baking me a cake along with cookies and cream ice cream. We all celebrated by devouring the cake and then playing games the rest of the night.  All in all a great birthday, but I can’t wait to head back to my apartment in the city on sunday and spend time with my girlfriend.

Right now we’re watching the USA v Germany world cup match and deciding on what the tasks for the day are.  I still need to finish my personal website, as well as review some tutorials because we will be having a test over the first two weeks of material this upcoming saturday.  I’m not worried as I have a pretty good grasp of html5, css, bootstrap, git, javascript/jQuery at this point but I just want to make sure there isn’t anything important I’ve overlooked before we head into the mongodb/node phase.  Until next time!

jQuery, pair programming, and first meetup while in Coding House

Today I spent nearly all day working on our first project which is a restaurant ordering app.  We need to get a list of restaurants and their menu items, allow users to select and place an order, and then store the information in localStorage. After that we need to read from the localStorage and somehow render the data.

Initially our instructor said we could just allow users to click a checkbox for an entree item, but we thought it would be more realistic to have a number input field so users could order multiple items.  I was pair programming with one of my group members, and it was a great experience solving problems collaboratively. Then we thought it would be a cool idea to display the total order amount in real time.  This choked us up a little bit as if the input field hadn’t been clicked on yet it was NaN! We went through a few different solutions that didn’t work, but then found some good documentation on NaN. Turns out NaN has some weird quirks.  For example NaN === NaN would return false! How can something that looks like it should be equal not be equal? Finally we decided to use the method isNan(num) to create an if statement that ignored all empty input fields.  

I was stuck in the middle of how to parse the whole menu table when we needed to leave for a meetup.  It’s definitely not fun when you’re right in the thick of solving a problem and get interrupted.  Oh well.  I rode with Nick, the Coding House CEO, and we passed by Facebook HQ which was pretty cool.  We headed to the Ninefold Meetup which had the speaker Yehuda Katz, a well-known thought-leader in the programming world, who gave a demo of Thor which is based in Ruby.  Since I haven’t studied any Ruby, a lot of the technical demonstration didn’t make sense to me due to the syntax, but I was able to follow his logic as he built a quick program that allowed you to see other github user’s profiles.  He also built a quick program that converted an image into ASCII, pretty cool. 

After the meetup we headed back here and had our daily circle talk about highs and lows for the day, which ended around 10:30.  We were all pretty tired but Nick encouraged us to get a couple more hours of work done and I’m glad that he did because I returned to my previous problem and was able to figure out a good solution for getting all the relevant data from the user’s restaurant order and then I went through a tutorial on localStorage.  It is actually pretty simple, but obviously shouldn’t be used that often due to the low amount of memory that can be allocated.  What does seem interesting about localStorage though is the possibility to save form fields.  So, if a user is filling out a really long form with tons of different information and accidentally close their browser or something goes wrong.  If you have a script autosaving their progress every few seconds, you can make it so users can pick up where they left off.  This seems like a cool html5 feature that is subtle, but very effective.  I can’t even fathom the amount of times I’ve hit the back button or accidentally closed out of an order form only to have to re-insert every tiny detail.

Tomorrow we’re going to figure out what to do with the data from the user. The other group mentioned something about D3 so I may look into that library to see if there’s anything cool we could do with it.

First Day at Coding House - Hackathons, Unix, and Epics

I arrived at coding house last night and had a great time. Nick explained the mission, introduced us to what we’d be doing and how to maximize our time while living here.  We discussed who we are, what we want to do, and ideas for moving forward.  It was great hearing how many members of my cohort already had ideas for projects they wanted to work on as well as getting feedback on the few project ideas I came up with.  After everyone dispersed to work on prepping for the week, John and I watched the season finale of game of thrones to unwind before starting what we knew would be an intense first week.  I ended up going to bed past midnight and normally I would sleep in when going to bed this late, but I was surprised when I woke up without an alarm at 6 am this morning.

The reason it was so surprising is that I’m normally not a morning person, but something about gearing up for 60 days of straight coding must have riled me up. Without waiting, I launched up the folder for my website redesign and ended up getting a lot of work done with the jQuery part of my portfolio.  My goal is to completely re-design my website from scratch using bootstrap+jQuery.  I considered using AngularJS as I worked on a previous project with it, but our teacher Oswald today mentioned how you should use the right tools for the job and Angular would be overkill for what I want to accomplish.  I’m excited to get into the bulk of the jQuery work I have to do which will involve transitioning from project to project, detaching and re-adding elements to the DOM, and adding subtle animations to give it a more modern feel.

After everyone woke up and we ate breakfast we went hiking at mission peak, a hike I have often heard about living in SF but was never able to go to due to it being all the way down here in Fremont. Since we left a little late we decided not to hike to the top which normally I would be a little bummed, but I am still sore from playing soccer yesterday so it was the right amount of stretching and exercise for me.

After we got back we did some tutorials and went through the basics of html5 and css3, most of which was review for me but it was interesting to see how a professional defined some of the basic terms in a new way. After tacos for lunch Oswald sat down at my computer and gave a whirlwind of information on Unix all while blazing through the command line.  I think he was intentionally trying to show us how much there is to know as I felt really overwhelmed even though I have some experience with it.  

The most exciting part of the day was signing up for a hackathon. Lincoln Labs is putting it on and there’s a $10,000 prize! Needless to say I hope to have enough skills to create a quality entry, but really I’m just excited to attend one.

At dinner Nick asked us about what we wanted our final projects to be as well as the types of companies we’d want to work for. I’ve been asked this question a lot and it never ceases to stump me. Obviously somewhere awesome! Well, to me it doesn’t matter all that much as long as the product/mission really resonates with me and there are senior devs who would challenge and help me grow as a developer.

It’s been a long day and I still have a lot to do, until next time!

While learning javascript by myself through online materials, I’m constantly amazed when I come upon articles like this that will help me organize and understand how to write functional code.  So far I’ve been working on smaller projects/problems that haven’t need to utilize modules, but after reading it seems like any professional dev must use this or similar patterns so they don’t pollute the global namespace in case other libraries use certain variable names.  

In the online angularJS course I took from Udacity, Dan Wahlin structured all of his angular modules like this and it makes a lot more sense to me now.  By doing this, it allows flexible development as anyone can come in and start working on a project by creating their own module, and then either import (dynamically inject) or export the components they developed.  I’m looking forward to trying out this pattern in my next dev projects