Explain how the “this” keyword works in JavaScript.
The “this” keyword in JavaScript is a value in the current context of a function. For example in an on.click function, “this” would represent the element that was clicked on.

Another example would be if you created a function inside an object (known as a method). Within the method you could use “this” to refer to the object.

How do you delete a specific elements from a array?
Using the method splice() can remove an element. It takes two arguments; the first argument is the starting index and the second argument is how many elements to remove.
For example myArray.splice(2, 1); (remove one element at index 2).

How can you change the CSS of an element using JavaScript?
First you can select an element on the page using document.getElementById(“idname”) then change the style property to a new value.

How do you call a JSON file with jQuery?
You can use $.getJSON to call a JSON file.

What is the same origin policy?
The same origin policy prevents resources from loading from another URL.

It does not apply to scripts so you can add JavaScript padding to circumvent the same domain policy.

Crossorigin.me is a free CORS proxy that can circumvent the same origin policy if you append https://crossorigin.me/ to the beginning of your API request. For example: https://crossorigin.me/https://maps.googleapis.com/maps/api/place/details/json

How do you create new elements and add them to the DOM?
This snippet from W3 Schools shows how to create an element in the DOM and append it do the document:

Solve the Fizz buzz problem.
The key to solving Fizz buzz is using an if/else statement and the remainder operator (%).

What are the restrictions for naming variables in JavaScript?
You can not start a variable name with a number. You can not use dashes or periods in the name. You can not use keywords or reserved words (e.g. var).

Tell me about yourself
I am a father, Army veteran, and front-end web developer in Seattle with a passion/obsession with coding. After graduating from the University of Washington I worked as an online marketing consultant for several Northwest companies over a five year span before making a career change to front-end web development. I spent my nights and weekends for a year in a mentorship with a senior front-end developer from Groupon and then enrolled in the Seattle University Web Development Certificate program to deepen my knowledge and improve my skills. I deployed a blog ranking Angular application at RankedBlogs.com and became a contributor to the open source project Operation Code which helps military veterans gain coding skills.

My core attributes are dependability, grit, focus, and curiosity. I am someone who can be depended on to show up prepared day in and day out and trusted to deliver on time. When obstacles or set backs occur I am relentless in pursuing angles to attack the problem to come up with a solution and I don’t give up easily. I believe in the importance of “deep work” which Professor Cal Newport describes as long periods of focused attention on hard problems and constantly work on strengthening my focus muscles and the practice of enduring discomfort. Finally, I love learning and am a voracious reader of audiobooks and consumer of video courses like Lynda.com.

How do you change an element attribute with JavaScript?
You would use the method setAttribute.

It takes two arguments, the name of the attribute as a string (e.g. href, classname) and the new value you want to replace the old value (e.g. “http://www.udacity.com” or “mainPanel”).

It also helps to have your stylesheets linked within the head section and have your script files linked at the bottom of your page.

What are the differences between == and === in JavaScript?
== means pretty much equal and === means strictly equal. == converts the operands to the same type before comparing them while === does not. In other words if the contents of two operands are the same but they have different types (e.g. string and integer) then they are not strictly equal.

Why is it important to generally avoid global variables in your code?
One reason to avoid global variables is to avoid naming conflicts. It is common for multiple people to be working on the same code base. Two people may use the same global variable but assign it different values (e.g. msg = 42 and msg = “Hi”) which can cause bugs in the code.

Tell me about a time where you faced a difficult situation and what steps did you take to overcome it?
Following the 2008 financial crash, I was laid off from my job working in the media department of a financial services firm. I took advantage of the situation to start an online marketing agency with a colleague. We were able to sign contracts with several local and national companies to provide SEO and online marketing and we were able to maintain a steady number of clients for about three years.

What do you perceive to be your greatest weaknesses?
I tend to get nervous in public speaking scenarios. I have worked on this skill with a college course on public speaking and guest lecturing at Seattle Central College. I often worry about things that I can not control which is an inefficient use of energy.

When do you need to use JSON parse?

Explain closures in JavaScript.
Normally, a local variable defined inside a function is not accessible after the function has executed. However, with a closure the local variable is still accessible outside of the execution of that function.

A closure is created when an inner function is made accessible from outside of the function that created it. This typically occurs when an outer function returns an inner function.

How do you do a pull request with Github?
A pull request is request for someone to review the code in your git branch. If they approve your changes, they can merge your branch into the master branch of the repo.

How do you update your local version of a Github repo with the latest changes to the remote repo?
fetch upstream
merge upstream master
git push origin master
(git pull combines fetch and merge into one command).

What is an interesting “quirk” about JavaScript?

What techniques or strategies do you use for time management?

What is Typescript?
It is a superset of JavaScript that can be transpiled into regular JavaScript ES5. It adds “optional static typing and class-based object-oriented programming to the language”.

Why do you need to include doctype in your HTML?

Describe how prototype works in JavaScript.

What is the purpose of a JavaScript callback function?
A Javascript callback is like when you call customer service and they they call you back instead of you waiting on hold.

It is a function that is passed as an argument to another function and is executed after its parent function has completed.

What happens when you pass a function too few or too many arguments in JavaScript?
If you pass too many, the extra ones are ignored. If you pass too few, the missing ones are assigned the value undefined.

Why do you want to avoid polluting the global name space?
It is best practice to use local variables when you can because global variables can cause conflicts, especially when multiple people are working on the same code.

Explain how prototypal inheritance works.
Every object has a prototype in JavaScript and prototype can be shared with other objects. When a constructor function creates a new instance of an object, it inherits the prototype from the constructor function.

How would you change the size of the menu bar as the user scrolls down the page?

How would you retrieve a specific value from an array of objects?

What are some of the advantages of array methods?
They are self contained (you don’t have to set a variable outside the function), they are chainable, they require less code, and they are functional.

What are truthy and falsey values in JavaScript?

How do Promises work?
A promise is like an IOU for some data.

Explain how HTTPS works.

How does the spread operator work in ES6?

What is immutable data?

What’s the difference between const and let?

How do fat arrow functions work?

What are some differences between arrays and objects in JS?

How do you prevent the default behavior of a button element with type=”submit”?

What are the security issues with third party CSS?

How does the fat arrow function affect this?
It ensures this inside the function is bound to the component.

Explain event bubbling.
When you add an event listener to an element it also listens on the parent.

What is the difference between null and undefined?

What is a pure function?
A pure function always returns the same value when the same value is passed into the function. A date function would not be a pure function because the output is constantly changing.

Describe your workflow.

Corrections or improvements to any of these answers are welcome in the comments.

Since I completed the Bloc front-end web development online bootcamp, I have been looking for ways to take my coding skills to the next level.

I still had a lot of GI Bill benefits remaining (about 24 months) so I was interested in using them before they expire for me in 2019. While there are a very limited number of coding bootcamps that you can attend with the GI Bill, certificate programs at universities are frequently covered by the GI Bill. So I reached out to the people in charge of Seattle University’s Web Development Certificate program and learned that it was recently approved for the GI Bill.

With free self-teaching options like Free Code Camp and low cost options like Lynda.com and Treehouse, I didn’t want to pay a lot of money out of pocket for a program. Seattle University’s Web Development Certificate is a year long and costs $16,000 in tuition, however with my 60% benefit with the Post 9/11 GI Bill, I determined that my out of pocket costs would be zero.1

The veterans department at Seattle University also told me that the program is considered exclusively online or distance learning although it requires frequent in-person labs and meetups in Seattle. GI Bill benefits (specifically monthly housing allowance) are reduced significantly for exclusively online programs so my out of pocket costs would have been thousands of dollars. However, the program director was able to resolve this issue with the veterans department changed the classification of the program to in-residence or on-campus.

Week 1

I took some time to get acclimated to the format of the course which is taken through the popular Canvas platform. The content is delivered via videos, text pages, external resources like blog articles, and discussion boards. The in-person portion of the course involves labs at Seattle University and meetups with speakers from the web development field.

Week 2

I attended the monthly networking meetup for the program this week, which was a presentation by a recruiter at The Creative Group. I also attended my first lab which was a meeting on campus where two instructors helped students with any questions they had. It is like office hours but you are required to attend two lab sessions each month.

There are required readings assigned and additional optional readings that is recommended to explore deeper into a topic. This week we read about the history of the Internet and how it works. The coding practice included adding HTML markup to a page of text and images. We are currently using Code Anywhere which is a cloud-based text editor and then we are pushing our changes to Github pages so that the code becomes a webpage that can be viewed online.

There is an active Slack room for the program and there is usually an instructor on there to help out with any issues. I had a question about the coding exercise and an instructor answered my question within minutes. Slack also allows students to communicate with each other in real-time which is great for a mostly online program because it makes it easier to socialize with fellow students.

I also had the chance this week to meet up with a designer and developer at Moz, a marketing software company and got to tour the office. I want to continue to work on meeting and connecting with people in the development community.

Week 3

This week was focused on learning about the fundamentals of CSS and implementing some CSS properties and values to a simple webpage. We push our code to Github Pages so my webpage is available to view online at http://charlessipe.github.io/wats1010-css/.

This week we also had to turn in a research question so I choose to research why Automattic decided to rewrite their user admin in JavaScript to replace PHP and how that will impact the future of the Web since WordPress powers an estimated 25% of websites. I am also interested in how this will affect the job market for JavaScript developers as more companies are choosing to build their applications in full-stack JavaScript.

Week 4

This week we continued learning about CSS with a focus on CSS layout. There were several required readings on topics like the box model and the 8-hour Lynda CSS Layout course was recommended.

I attended a lab session this week at Seattle University so it was great to interact with the instructors in person. There are multiple instructors at the lab to help with any issues you come across or to answer any questions you have. The only challenge was to find parking on campus on a weeknight. The visitor lot was completely full so I ended up parking about a mile away from the classroom.

I learned a neat shortcut for selecting multiple cursors at the same time which is helpful if you need to edit multiple lines of code at the same time.

On Mac you have to enable three finger drag, which is in System Preferences > Accessibility > Mouse & Trackpad. Then you can hold option while three finger dragging to enable cursors on multiple lines simultaneously. I also learned that highlighting a code block and then holding shift and then tab will reverse tab that section of code.

Week 5

This week we learned about graphics and video and I learned how to encode a webm video file to mp4 and then display it on a page with the video HTML tag. I used the Miro open-source video player to convert the video file. We also read articles about web standards and regulations that developers should keep in mind when building web sites.

We had a monthly meetup this week with Hank Yates (@hankyates) speaking about functional programming in JavaScript. I found it difficult to follow the live coding but I was exposed to some terminology and concepts that I can research more at a later time. He discussed setting a fallback value for a function’s argument which I think is new to Ecmascript 6. He also mentioned the JavaScript lambda or arrow functions which I want to read up on.

There was a lot of reading this week, mainly chapters 3,4,7,8 from the online textbook Web Style Guide. We learned about information architecture concepts, wireframing, and usability.

I worked on writing a topic summary and annotated bibliography on my research topic of Automattic rewriting their admin interface with JavaScript instead of PHP. The project this week was to create a wireframe for a redesign of the CSS Zen Garden webpage. I used Balsalmiq for the first time to create a design mockup.

I always enjoy tinkering with CSS to manipulate the appearance of a webpage. I also continued researching articles about WordPress’ redesign of the user admin interface using JavaScript. I read about the WordPress API which will be interesting because it will allow you to create a JavaScript app that utilizes the WordPress PHP backend.

This week the reading consisted of articles about Restful APIs and Caching. I learned why CDNs are useful since they can serve content from a closer location therefore increasing page speed. Restful APIs provide endless opportunities for combining data from different websites in interesting ways which is awesome.

Week 8

This week we started the design and development of a imaginary product page.

Since students publish their projects on GitHub Pages, I was able to view over 20 examples of past student projects by looking at the Network Graph of the original Github repo and then modifying the URLs of student Github repos into a Github Pages URL.

I created a wireframe/mockup of my design of a product page for the “API Superstore” and used Adobe Illustrator CS4 since I like it more than the wireframe tool Balsalmiq.

I am involved with the non-profit Operation Code, an organization that helps military veterans learn how to code and advocates for allowing veterans to use the GI Bill for code schools or coding bootcamps. They have a pretty active Slack channel and I was able to connect with a software developer in Seattle who is interested in speaking at an upcoming Seattle University web developer’s meetup. I introduced her to the program director and she may speak at a future meetup.

Week 9

This week we had time to work on coding the HTML and CSS of the imaginary product page which is coming along well. I am using the Bootstrap framework for the website and it makes it easier to get my design up and running quickly.

We were assigned to write a mini summary about a research topic of our own choosing for this week about web development culture. I chose to research whiteboard interviews and found some interesting articles criticizing whiteboard interviews as a way to evaluate candidates. Some of the criticisms are that it poorly simulates a real development environment and creates unnecessary pressure. One alternative that I learned about at a Code Fellows panel on getting hired in tech is an approach by the company Substantial. Instead of whiteboard interviews they give candidates a problem to work on overnight on their own laptop. However, many employers are still relying on whiteboarding so I have set up several white boards at home to practice.

I also finished up a 1,000 word reflection/research paper on how WordPress switched to a JavaScript powered user dashboard and how it affects the future of JavaScript development. We are required to create a research artifact so I created an explainer video using the screen recorder from QuickTime Player and I published it to YouTube.

This completes the first two courses in the program: Foundations of the Web and Intro to Web Development.

I’m looking forward to the next two courses: Intro to JavaScript Programming and Intro to Servers and Hosting.

Week 11

I heard there are around 40 students enrolled in the program this quarter so they had to get a second classroom for the labs.

This week we started learning about JavaScript and web hosting. The program director Shawn wrote a GitBook on JavaScript and that was the main reading for the week. The beginning of the book covered some of the basics of the language like data types and loops. I also started reading the first couple chapters of Eloquent JavaScript which is available to read for free online (this is a supplemental reading assignment).

The first project was the classic problem FizzBuzz which I’ve heard of but never attempted previously. I was able to work it out pretty quickly.

We also read some articles about choosing a good domain for the Hosting and Servers course. Our project for the course was to host our Github pages URL on our personal domain by creating a CNAME and pointing it to our personal domain. My Github pages URL is now http://portfolio.charlessipe.com/

Week 12

This week in Intro to JavaScript we read about arrays, functions, and objects at Shawn’s GitBook on JavaScript. The optional reading included chapters 3-6 of Eloquent JavaScript which provides some excellent explanations of JavaScript concepts and useful code examples.

The JavaScript exercise this week was to shorten a snippet of text like you might see in Google’s search results where the snippet is cut off after a specific number of characters. This requires using some JavaScript methods to manipulate the string such as converting the string to an array of words, removing array items, then joining the array back into a string.

We also learned about some useful Unix commands to navigate the terminal. There was a “scavenger hunt” which consisted of using Unix commands to answer a list of questions.

Week 13

This week we focused on learning about manipulating and traversing the DOM with JavaScript by reading the DOM chapter in Eloquent JavaScript.

In the hosting course we got acquainted with Digital Ocean. We set up a droplet, which is a private server, and cloned a Github repo into the droplet. You can log into your private server from the terminal using the command ssh root@. We also learned about generating a SSH key and adding it to Digital Ocean and Github so that you don’t have to enter your password when pushing Git commits.

The folks at Operation Code let me know about the Github Student Pack which is a collection of freebies and discounts for student developers. It includes a $50 credit to Digital Ocean which is pretty sweet.

Week 14

This week we focused on learning jQuery to add interactivity to a webpage at http://portfolio.charlessipe.com/wats1020-dom-manipulation/. The project included using jQuery to show and hide text using click events and jQuery methods. We also updated a bar graph based on the number of votes by incrementing the vote count when the voting button was clicked.

In the web hosting course we learned and practiced with command line text editors like Vi and Nano which are helpful when you need to edit a file that is on a remote server like Digital Ocean.

Week 15

This week we worked on a Bootstrap based webpage with some JavaScript elements like a carousel, clickable tabs, and a map. The map was added using the Leaflet.js library. I struggled with getting multiple layers to work on the map although I was able to add markers to the map.

I’m also reading the book JavaScript and jQuery by Jon Duckett which explains concepts well. I actually tear out pages and scatter them throughout the house to study whenever I have free time. It can be nice to take a break from screens once in a while.

In the web hosting course we learned about hosting a static site with Digital Ocean and hosted the 2048 game.

Week 16

This week we learned about AJAX or XHR and the project was to create a Flicker image search that would append images to the page based on the value entered onto the form.

We used a jQuery getJSON method to request the data from the Flicker API. It took me longer to get the grid layout to align the images since the size of the images varied.

In the web hosting course we worked on getting a dynamic PHP website served on a Digital Ocean server using Apache. The code for the website was provided so we just had to get it hosted by configuring the virtual host.

Getting familiar with adding CNAME or ANAME records is eye-opening because you could potentially create an app and host it and then add it to a client’s subdomain without having to touch their code.

Week 17

In the JavaScript course we learned about creating a good web form experience with helpful validation. We used the jQuery Validation plugin to easily add validation functionality to a common form. A simple JavaScript object contained the rules for the validation and it didn’t take long to get the validation to work and dynamically insert text warnings when a field did not meet requirements such as a correct credit card format or too many characters.

We also started planning our final projects for the quarter and I am attempting to build an employee training tracker and a video voter app.

Week 18

The weekly required reading is taking about 3 hours per week give or take. I was on vacation with my family this week but managed to get most of the reading and coding assignments done.

This week we learned about responsive design, mobile-first design, and adaptive design which involves dynamically changing the content based on the screen size. We also read up on things to consider when choosing a WordPress plugin.

This week’s project was to create a responsive layout for a card matching game.

Week 19

I’ve been working on two small apps for the final project in the JavaScript course and the hosting course.

In the JavaScript course I am building an app that tracks employee training for a given topic. The user can check off articles, videos, and other items that they have completed and it shows the progress.

It is connected to a Firebase database so the status of each item’s checkmark is being stored. It also calculates the total percentage of training completed with a progress bar at the bottom of the page.

There is still a lot to improve on like refactoring the code but I’m making good progress so far. In the hosting course I am building a video voter that shows a list of videos on a topic and allows users to vote on individual videos.

Week 20

This week ends the second quarter and I have reached the half-way mark of the program.

I turned in my employee training tracker app with some basic functionality completed. However I haven’t had a chance to add user authentication so that people could log in and store which items they have completed. I also need to refactor the code because there is a lot of unnecessary repetition.

The video voter app still lacks the ability to store votes which I could add by updating the WordPress mySQL database. I would need to read up on how to do that. Also, I wasn’t able to pull in data from the YouTube API for the view counts. I don’t think the YouTube API provides view count data anymore or I just haven’t found the right documentation yet.

The employee training tracker app seems more promising. If I focus on just training people on JavaScript, I could test to see if people would use it. Then I could expand it to other topics. I still have a lot to work on to make a usable JavaScript training tracker app.

I attended a mini-hackathon at Galvanize in Seattle with three other students from Seattle University and it was a fun experience.

The theme of the hackathon was eighties rehab and our team’s idea was a quiz to determine how addicted you are to the 80’s.

We used the SlickQuiz jQuery plugin to get a simple quiz working in a short amount of time.

We have a couple weeks before the next quarter starts so I have been working on my training tracker app. I was able to get app to show which items were checked previously and the updated progress bars based on the items completed (it stores and retrieves the data from Firebase).

Quarter number 3 has started this week and this quarter’s courses are Building JavaScript Web Apps and User Science and Testing.

In the User Science class we are reading the Steve Krug’s classic “Don’t Make Me Think” which is a pretty short read and provides a lot of really useful insights into how people really use the Web.

One insight is that people often look for the quickest solution that might work instead of the best solution. For example, most people do not read instructions but instead try using the item intuitively.

In the JavaScript Web Apps class we worked on getting our development environment set up with Yeoman and Grunt. We used Yeoman to scaffold a web application directory and then served it locally with Grunt server.

We also got a brief introduction to SASS and SCSS which adds useful features to CSS like variables and functions (called mixins).

Week 23

This week we learned about deploying our very basic web application so it is available online through Github Pages which is free. We are using the online book “Introduction to Building Webapps” which walks you through how to deploy your application to Github Pages.

We also read a couple more chapters of Don’t Make Me Think about user experience testing where you observe people using a website and identify issues that they experience. We were assigned with observing three people using a site and writing up a report on the results of the test.

Week 24

We continued reading the Introduction to Building Webapps Gitbook which explained the basic concepts of the Angular JavaScript framework for building web apps. It covered Angular topics like models, routes, and controllers. We also delivered a description of what we are planning to build for the final project. I am planning to create a simple app that helps small businesses survey their customers and view feedback in a simple dashboard.

In the UX course we continued reading Don’t Make Me Think which covered concepts like mobile usability and website accessibility.

The monthly speaker meetup was on Tuesday and the speaker was Jeff Meyerson, host of the Software Engineering Podcast. The talk was titled “You Are Not a Commodity” and it was a really interesting discussion about how corporations tend to view software developers as commodities and how there are increasing opportunities for developers outside the corporation. If you are interested in this topic, Jeff discusses it on this episode titled 10 Philosophies for Engineers.

Week 25

This week we worked on bootstrapping an Angular application with Yeoman, Grunt, and Bower. We used Grunt build control to deploy the app online at Github pages: http://portfolio.charlessipe.com/angular-app/#/

We followed the directions from Introduction to Building Webapps so it wasn’t difficult to get a basic Angular application started and deployed online.

In the UX course we focused on learning about accessibility principles which included tactics like adding image alt tags to images and including a text transcript for videos.

On the side I started working on an open source project at Operation Code. I worked on an issue and committed some code changes to the Github repo at Github.com. I then made a pull request and got the changes approved and merged.

Operation Code is built with Ruby on Rails which I have some very basic knowledge of. However, as a web application framework there are some commonalities with Angular application development. I was able to clone the repo to my computer and then serve the Rails app locally with some help. I had to install Postgresql onto my computer and then use some rails commands like bundle install, rake db:seed, and thin start –ssl to get the app running locally. One of the speakers at the Seattle University Web Developers Meetup suggested working on open source projects to show your abilities to potential employers.

Week 26

This week we worked on adding data into our Angular app with RESTful APIs. We used the $Resource service that is built into Angular and generated a factory with Yeoman using the “yo angular:factory namehere” command.

I started out trying to pull Yelp rating data into my application but had some trouble getting the API request accepted due to a invalid signature error. So I decided to use the Google Places API instead and that worked right away.

It is currently displaying the business rating and the latest reviews from Google Places.

I’m making progress on my customer survey application with Angular. I have set up some routes, or different views for different URLs.

I added Firebase and Angular Fire to my app with Bower and created a Firebase object in my main controller so I could add information to the database when someone submits the survey form.

Week 28

I had a front-end developer interview this week and spent a good amount of time researching the company and familiarizing myself with Shopify and their liquid templating language. The interview was with the company CEO and I think it went well although they are looking for someone with more experience for this position.

I’m reading the book Grit by Angela Duckworth about the importance of long-term effort in achieving goals. Grit is valuable in web development because you have to stick with it over the long-term and not give up when setbacks inevitably happen.

In the UI/UX course we went through the free course, Fundamentals of Digital Analytics from Google Analytics Academy which provided some useful information on how to set up goal tracking and marketing funnel analysis in Google Analytics.

I was able to push the value inputs from the survey form to the Firebase database and save the values in Firebase. I was also able to get data from Firebase and display it on the dashboard page.

I wasn’t sure why the data from Firebase wasn’t displaying on the page but I figured out that the page was probably loading the $scope.businessName before it was updated from the data from Firebase. I used $apply() to update $scope after the Firebase data was loaded.

I added a nice banner image to the homepage from Unsplash.com. Unsplash provides a ton of professional quality large images that can be used for free.

I added email authentication using Firebase’s authentication feature. Users can log in with one of the test email and password combinations (csipe84@gmail.com and popcorn84). I manually created the test logins in the Firebase graphical interface for now.

I like working with Firebase and I haven’t had much trouble getting it to work. There was a major update to the product so sometimes it is unclear what code works with the old version and what works for the new version. There can also by async issues because the page loads before the data has been received from Firebase which can be addressed by utilizing promises.

Currently you can log in on the login page with one of test logins (the test logins are listed on the homepage). When you log in, the alert box at the top displays that you have logged in. The user identification number (UID) is then cached to the $scope variable as $scope.currentUserId. The application checks the $scope.currentUserId and displays the matching content for that user on the dashboard page. It also uses the $scope.currentUserId to switch to the current Google Place ID and pass it to the Google places service that makes the API request and returns the latest reviews from that business to display on the dashboard.

I also added a logout function so the user is logged out when the “Log Out” button is clicked on the login page.

The survey page requires that the password match in order to submit the form. If the correct password is not entered, a red alert box displays that states the password is incorrect.

Week 30
I’ve made it through 75% of the program and have just one quarter left.

This week was spent polishing up my application and sharing it with my classmates on the discussion page.

In the break between summer and fall quarter, I traveled down to San Francisco for the Github Universe conference. I received a free ticket from Operation Code and met up with the founder of the organization, David Molina.

The conference was a great learning experience and I met several developers and six other veterans learning to code from the Operation Code organization. On the second day David gave a talk on how conference attendees could help the organization by volunteering to mentor a veteran.

There were a couple interesting presentations including one about the Electron framework that makes it possible to create desktop applications with JavaScript. The presenter said that we are now in the golden age of JavaScript thanks to tools like Node.js.

I also attended a workshop at Coding Dojo in Bellevue about how to create apps or “skills” for the Alexa devices from Amazon. I learned how to create a random fact application that plays a fact when you ask Alexa. The JavaScript code is uploaded to Amazon Web Services and you also provide information about the app on the Alexa page of the Amazon Developer Console. After the apps are reviewed by Amazon and approved, they can be used by Alexa owners. I submitted a Random Sheldon Cooper Fact application that plays funny quotes from the TV show, The Big Bang Theory.

Week 31
The final quarter of the program has started and the first lab was on Tuesday where we did brief introductions to meet our fellow students and new instructors.

One of the new students offered to create a logo for anyone that needed help and she designed an awesome logo for my Ranked Blogs application that I built during the Bloc coding bootcamp.

We are starting to work on our portfolios for the program by creating a personal statement and planning document.

The two final courses are Professional Practice and Web Development Capstone Project.

In the Professional Practice course we started working on a group project for a Poetry Magazine website. It is a simulated work environment project to practice collaborating with a team.

I already had an idea of what I wanted my portfolio to look like and found a Photoshop template on Themeforest to use as the design. I used Bootstrap for the CSS framework and the banner background image from Unsplash.

Week 32

This week we learned about writing user stories for our imaginary group project to build a poetry magazine website.

We also worked on creating wireframes and planning documents for our professional portfolio.

This weekend I attend the T-Mobile IoT hackathon and it was a great experience. I was able to work alongside experienced developers all weekend and we were selected as a finalist. There was also a lot of free food. I highly recommend hackathons for students looking for employment because it gives you an opportunity to work with people who may want to recruit you to their company or team. I’ve heard of developers getting job offers from simply attending a hackathon.

Our project is called Nahm and it measures water input to an appliance like a shower or sink and tracks the water usage in the web application and iPhone app.

I also worked on my hackathon project by adding some charts with Chart.js that update automatically when the Firebase database is updated with new water data.

In the professional practice course, I collaborated with my team to make time estimates of our user stories for our poetry magazine website. We entered our estimates into a Github repo wiki which is very easy to use.

Week 34

My hackathon team ended up winning first place at the T-Mobile IoT Hackathon so it ended up being a really great experience. My team presented our project at the Seattle Interactive Conference on Tuesday and it was cool to see the Seattle University program director, Shawn attend the presentation to show his support.

This week I worked on putting together planning documents and wireframes for my final capstone project, Code Coach.

The goal is to create a directory of coaches, organized by category, who can help developers reach their goals through pair programming and mentorship.

Code Coach solves the problem of finding a good coach who can help a developer improve their skills by providing guidance, feedback, and motivation.

In the professional practice course, we worked on creating issues in Github for specific tasks to complete during our first sprint (using the Agile Scrum methodology).

Week 35

This week I dug in and made progress on my Angular application Code Coach.

The tasks I accomplished this week were:
1. Setting up an Angular and Bootstrap scaffold with Yeoman.
2. Setting up routes using Yeoman.
3. Deploying to Github Pages with Grunt Build Control
4. Adding the Firebase database
5. Adding Firebase storage in order for users to upload a profile picture
6. Created category pages to display coaches in a specific category from the Firebase database using ng-repeat and Angular filters.

I learned that ng-repeat isn’t intended to filter objects which are returned from Firebase. I had to convert the objects into arrays to get the filters to work in order to display only JavaScript coach profiles on the JavaScript coach page.

Week 36

If you have any questions about the program, I would be happy to help. My email is csipe84 at gmail.com

Footnotes:
1. The Post 9/11 GI Bill covers 60% of tuition for me and I receive 60% of the monthly housing allowance (MHA) which for SU is $1975 per month. The program is 10 credits per quarter or about 83% of full time, so my monthly housing allowance is about .83*.6($1975) or $983.55/per month. I should also receive a book stipend, which I estimate to be .83*.6($1000) per year ($41.50/per month). I am responsible for 40% of tuition that is about $533.33 per month. MHA + Book Stipend is about $1025.05 per month so I should be in the positive by $491.72 per month. However MHA is not paid when class is not in session so MHA is reduced in any month where there are days without class (e.g. spring break). It can be complicated to figure out how much your actual school costs will be when using the GI Bill, especially if you have less than the 100% benefit.

This post was inspired by Patrick Jones’ extensive review of TeaLeaf Academy which details Patrick’s journey of learning Ruby on Rails. If you are interested in learning about Rails, I encourage you to check out his post.

I was fortunate to have been awarded a full scholarship at Bloc through their Veterans Program which awarded about a dozen full scholarships in 2014. If you are a military veteran, I strongly encourage you to apply for this. There are several coding bootcamps that offer partial scholarships to veterans, but Bloc is one of the few that generously offers full scholarships (update: currently Bloc is offering partial veteran scholarships).

I was previously enrolled in the HTML5, CSS3 & Responsive Design for Web Development program at University of Washington but I switched to Bloc when I was awarded the scholarship. The University of Washington offers some terrific web development certificate programs including JavaScript, Ruby, Android, and iOS. You can take the programs online and the price for each 9-month certificate program is about $3,000.

It has been my goal for about a year to become a front-end web developer and I am excited to be moving toward that goal. While it is possible to learn on your own, I think that having a mentor and focused curriculum can accelerate the learning process.

Pre-Work Week 1
The pre-work consists of the HTML/CSS course and the Javascript course of Codecademy.com.

The JavaScript course with Codecademy can be challenging if you are new to the language. A lot of the obstacles result from problems with syntax. However the hints and Q&A forum help you get unstuck very quickly. I’m starting to get comfortable with the JavaScript syntax including the different types of loops (for, do while, if/else). Understanding objects is one of the more challenging concepts to grasp for me. Codecademy is a great place to start for anyone learning to code because you are getting hands on practice and having to work through problems instead of just passively consuming information.

Week 1
Once the program starts you get access to the “roadmap” which consists of short tutorials to work through (called “checkpoints”). The first couple checkpoints have taken me about 30-60 minutes each and focus on a specific topic like the command line, the development environment, or Github.

I had my first mentor meeting where I had a chance to ask any questions that I had about my mentor and about the web development field. I learned that developers need a continuous learning mindset because a popular framework today may be irrelevant in a couple years. There is demand for junior developers despite the widespread growth of bootcamps and in particular it is difficult to find good JavaScript developers. The students who have been successful in this program tend to be individuals that go far beyond the minimum requirements and seek out additional learning opportunities.

In addition to Bloc, I’m using other online tools to learn more about JavaScript and CSS such as Treehouse, Lynda, and Code School. I like Treehouse and Code School because they are very interactive and you can practice writing code. Lynda is less interactive but they have a great Android app so the videos are really easy to access whenever you have spare time. I’m also reading Modern JavaScript by Larry Ulman and Javascript & jQuery by Jon Duckett which are both excellent. I’ve also heard great things about JavaScript the Good Parts by Douglas Crockford (h/t Starthere.fm).

This is an excellent talk by Mattan Griffel on how to learn to code. In it he talks about learning from multiple sources because sometimes one teacher’s explanation may stick better. I have found this approach helpful when learning concepts that I don’t understand right away like objects in JavaScript.

I also received a neat welcome package from the Bloc team with a hand written note, Starbucks card and some Bloc swag.

Week 2

I’m still working on setting up the development environment including a virtual environment using Vagrant. I also set up a Heroku account and deployed the practice application. I think setting up the development environment can be challenging but I haven’t run into any issues yet. I have some prior experience with Git, Github, and using the command line from the UW HTML and CSS certificate program so that has helped.

I think one of the hard things about learning to code is seeing the light at the end of the tunnel. Sometimes the goal seems so far away but it is a matter of just improving every day. I like what Travis Neilson from DevTips says about not thinking about how long it will take but how long you are willing to be uncomfortable.

I’ve noticed that there is some backlash to coding bootcamps in the web development community as evidenced by this Reddit thread. However the negative view of bootcamp grads is not shared by everyone and reputable code schools seem to have very high employment rates.

Week 3

I’m continuing to learn a lot by going through the tutorials and completing the assignments. I was stuck for a little bit because I cloned a folder of exercise files to my Vagrant virtual machine but the folder was not showing up in my local machine. After talking to my mentor, I took some steps back and realized that I cloned the files to the root directory in the virtual machine instead of /vagrant and that was causing the issue.

This week I read through some tutorials on JavaScript basics like strings and functions. This is mostly review but it was helpful to go through the exercises. I learned about Mocha tests which allow you to test whether the JavaScript code is producing the desired output.

It is great feeling when the Mocha test produces all green checkmarks.

I’ve also been watching a Lynda course titled Introduction to the JavaScript Language which is helping reinforce the fundamental concepts of JavaScript.

Week 4
I’ve been working through practice exercises for arrays, objects, and loops. Now things are getting more difficult and I’ve found myself stuck multiple times. Part of my stumbling around is due to an unfamiliarity with the JavaScript syntax. You have to get the syntax exactly right to work but sometimes you don’t know what exactly right looks like because you haven’t seen it before. Fortunately the struggle is where a lot of growth is taking place and your mentor is always available to help you when you can’t get unstuck on your own.

Sometimes you will feel like this:

Week 5
I’m continuing to work on practice exercises for loops which are challenging because I don’t have a solid grasp of the syntax yet. For example, an exercise may require writing a function where you are given an object argument and you need to transform the object into something else. This requires a lot of trial and error although you can always get help from your mentor if you are completely stuck. It’s almost like playing Smurfs on ColecoVision.

One thing that seems to helps me get some of the JavaScript syntax to stick is to watch tutorials on Treehouse or Lynda about JavaScript and then write down the syntax on paper. I often come across segments of code that I don’t understand so I re-watch the tutorial until it makes sense.

A helpful feature of Bloc is the alumni group on Facebook where you can interact with other Bloc students and alumni and discuss career topics, learn about what graduates are up to, or team up for side projects. This provides a good way to connect with others since the program is online.

Week 6

I’m moving on to setting up the music player application which is a lot of following the steps of tutorials. This is much easier than JavaScript syntax for me and it is fun seeing my application start to take shape. I have been adding the HTML and CSS to the application and pushing those changes to Github and Heroku. I ran into an issue with getting the server to run on my local machine and my mentor helped me come up with a workaround.

Learning the terminology of the front-end is a important part of learning front-end development. There are so many tools and frameworks to become familiar with. One thing that may help with learning the terminology is to listen to some front-end development podcasts. I enjoy Shop Talk and How to Hold a Pencil. I also listen to JavaScript Jabber but most of the time I don’t know what they are talking about. Starthere.fm is a good beginner focused web development podcast.

Week 7

I told my mentor that I felt pretty weak at JavaScript so he recommended that I do some more review before moving forward. This week, I have been working in Codecademy to finish the last 20% of the JavaScript course (I completed the first 80% before I started the Bloc program). I also read some JavaScript documentation at MDN (Mozilla Developer Network). I’ve been told that W3Schools is more beginner friendly but MDN is a great resource for learning the ins and outs of JavaScript.

One of my mentor’s recommendations was to contribute to open source projects on Github. So I asked if we could go over doing a pull request. A pull request allows you to submit code changes to a specific Github repository. The owner of the repository can review your pull request, respond to it, and merge the code to the master branch if they want to.

Week 8

I am currently learning a lot of jQuery while putting in the interactive elements of the music player app. jQuery is an extremely popular JavaScript library that allows you to do a lot of common interactive things in the browser with a few short lines of code instead of having to write many more lines of JavaScript.

So far, building the first application has involved following a text tutorial which walks you through each step. This is a good way to get your feet wet and to get an overview of the different aspects and tools of front end web development but you don’t have to solve any problems on your own yet. I know it will get a lot more difficult with subsequent projects.

A recent Bloc front-end graduate, Abdullah Alger, was interviewed by Course Report about his experience with Bloc. It is an excellent interview and Abdullah developed an app for his final project that allows you to record voice notes that are sent to your Evernote account.

Week 9

The JavaScript Jabber podcast had an excellent interview about getting started in web development with one of the instructors at DevMountain. The instructors at DevMountain highly recommend the book A Smarter Way to Learn JavaScript which is a combination of reading and online exercises. The Kindle version is just $6 so it seems like a great resource for learning JavaScript.

Tyler McGinnis from DevMountain described learning to code as struggle, failure, tears which is how I definitely feel sometimes.

This week I learned about selecting elements with jQuery and that it is a good practice to assign the selection to a variable so it is stored in memory. You could also add a method to the selection but it is not as efficient, especially if you need to do something else with jQuery to the same element.

// Update the album title
var $albumTitle = $('.album-title');
$albumTitle.text(album.name);
// Same
$('.album-title').text(album.name);

A quarter through the program, I feel like I have come pretty far but still have so much more to learn. There is a lot of information to take in and I’m trying to retain as much as possible. I just started learning about Angular JS which is a front-end JavaScript framework for building interactive web apps. I’ve gathered that it uses the Model View Controller pattern like Ruby on Rails and is intended for CRUD functionality (create, read, update, destroy). It is completely foreign to me so I’m trying to get used to the syntax.

Week 11

I’m continuing to learn more about the Angular JS framework and Bloc is walking me through how to convert the jQuery for the music player app to Angular instead. Angular looks like a great framework that does a lot of things that would normally require a lot of JavaScript, similar to how you can build Ruby on Rails apps without a ton of Ruby knowledge.

There are a ton of Angular resources online for learning about the framework, so I’m excited to become more knowledgable about how to use it. I just stumbled on some free web development video workshops by Microsoft including one on Angular. These workshops are several hours long and they cover a lot of useful information for beginners.

One of the difficult parts about Angular is learning how the parts fit together. For example, how a service relates to a controller. There is also a lot of terminology to become familiar with like dependency injection and two way data binding. A simple way to view dependency injection is passing the object to the function instead of creating the object inside the function. I found the Angular documentation to be very helpful in understanding the terminology.

Week 12

I’m almost finished with adding the functionality to the music player app with Angular.

This week I attended a Node School meetup in Seattle. Node School is a great open source workshop where mentors help attendees learn about JavaScript and Node.js. Attending meetups is important for building your network, especially when you are enrolled in an exclusively online bootcamp, since a high percentage of job openings are not posted online.

One of the neat things I’ve learned recently are directives in Angular. Directives allow you to extend the functionality of HTML using Angular.

Here is an example of an Angular directive that counts the hover time over an element (JavaScript source Stack Overflow).

I haven’t been stuck very much lately but mostly that is because Bloc’s course material guides you step by step through building the Angular app. Some of the instructions are difficult to understand at first but it makes more sense the second or third time reading through a section. It also helps that I can read the course material on my mobile device whenever I have an opportunity throughout the day.

For me repetition helps me grasp new concepts so I am constantly listening to Angular tutorials on YouTube, Lynda, Microsoft Virtual Academy, or Treehouse to supplement my time studying Bloc’s material. One thing I like about Bloc is that the course material is in text format instead of videos. I personally find text content easier to absorb than video lectures, especially for complex material.

Week 13

I’ve completed the first project, the Rdio-like music player app. You can view it at: https://whispering-atoll-9327.herokuapp.com/. It still needs some polish but it is pretty functional and accomplishes the main requirements like playing songs, changing the volume, and moving to a specific point in the song.

Next, things should get really interesting since I will be working on projects without step-by-step directions.

Week 14

I’m continuing to learn more about Angular and how the different pieces fit together.

Gordon Zhu has an excellent YouTube tutorial on how to create a To-do list with Angular in your browser (using JSBin). For some reason it doesn’t work if you link to the latest version of Angular but I got it to work here. It also syncs with Firebase, which is a backend service that makes it easy to store data so you don’t have to code the backend of your application.

For the next project, I’m working on a to-do list with Angular JS that automatically removes tasks after 7 days.

Week 15

I’m making progress on the destructing task list application.

My mentor showed me how to set up the scaffolding of the application using Yeoman, which is a front-end development tool that does a lot of the setup for different types of apps (including AngularJS). I also synched my application with the Firebase backend service so that when I add a task to an array in the controller, it is simultaneously saved in the Firebase database.

Week 16

I’m continuing to work on the destructing task list application and figuring out how to implement the required features. I haven’t been hitting any major roadblocks recently which is encouraging and I hope it is not a fluke. With each feature I have been writing some code that I think might work and then constantly iterating the code until the output is what I want.

Week 17

One of the required features of the destructing task list is to self-destruct tasks that are more than 7 days old. This has been the trickiest feature to implement because you need to calculate how old a task is. My mentor recommended the JavaScript library Moment.js which seems to work well. My mentor helped me come up with code to calculate the age of a task.

moment() represents the current time, .diff calculates the difference between two times, and $scope.exampleTasks[start].timestamp is the time the task was initially submitted.

When the checkbox is clicked, the app shows an alert box with the number of minutes passed since the task was first submitted. I’m now working on a function that will loop through each task, check if 7 days has passed, and then change the task to “destructed” if 7 days has passed.

I noticed since I have a mentor meeting every Thursday, I stay pretty focused and motivated during the week. I know I need to prepare for the meeting and have questions ready so that I can make the best use of the 30 minute meeting. Also, knowing that you are held accountable to someone helps to limit procrastination.

Week 18

I have finished the first self-directed project, the self-destructing to-do list, although I need to fix one issue and get my app to work on Heroku. Since I built my app with Yeoman, I need to set up a server for the app to work on Heroku.

I was able to meet up with another front-end development Bloc student who is also in the Seattle area and it was great to chat with a fellow student going through the same experience. We compared our experience and shared useful resources which was great.

You can add tasks with a priority level and any tasks you don’t mark complete within 7 minutes will automatically move to the “Self-Destructed Tasks” list on the “Task History” view.

I’ve made it half-way through the program!

Week 19

I’ve started on project #3 which is a chat application that looks similar to a basic version of Slack. I used Yeoman to set up the structure of the application with AngularJS.

I saw on the Bloc Facebook group that one student got hired just two days after graduating Bloc, which is encouraging.

Week 20

I’m back from a mini-vacation and making progress on my chat application. I was struggling with creating a child array in Firebase to hold the names of the different chat rooms in my application but my mentor helped me get it set up.

Adding child arrays in Firebase is really useful because it allows you to have multiple arrays in your application. I currently have one array that contains the objects for each message and another array that contains values for the different chat room names.

Week 21

I’ve been stuck on trying to show only messages from the selected chat room but I finally found a way to make it work using a custom comparator suggested on Stack Overflow. I was trying to use a custom filter but it just wasn’t working. Now I have most of the functionality working in my chat room except for allowing the user to choose a username.

To deploy an Angular app generated by Yeoman to Heroku requires a couple extra steps such as using Grunt Build to create a dist folder for the app. The article Deploying a Yeoman/Angular app to Heroku provides good instructions however it forgot to mention that you need to remove dist from the gitignore file so that you can push the git commit to Heroku.

Week 22

I feel really good about my progress. I have over 12 weeks left in the program and just my capstone project left so hopefully I can build a great final project.

I’ve started to plan my capstone project, Top Programming Blogs. It is intended to be a mix of Reddit and Product Hunt for blogs. I had the problem of not being able to find a well-organized list of good programming blogs so I’m aiming to solve that problem. I also want the app to show the latest article title from each blog so users can quickly scan about 50 programming blogs for something of interest. Users will be able to vote the best blogs to the top.

I’m feeling a lot more self-sufficient than I did in the first couple months. I can figure out a lot of issues on my own through trial and error or searching through Stack Overflow. My brain seems to be catching on to a lot of patterns in JavaScript so solutions are arriving much quicker now. I still seek help from my mentor when I feel really stuck but my confidence is growing and the self-doubt is diminishing.

Week 23

I’m making some good progress on my top programming blogs voting app. I added the ability to login with Facebook OAuth and then vote once per blog. When the logged in user votes for a blog, their Facebook uid is pushed to the “votes” array within the “blogs” object. The “votes” array contains the Facebook uid of each user that has voted for that blog.

I’m getting somewhat stuck on accessing some Restful APIs from Angular. I was able to do a JSONP call to the Mozscape API to get some data back that shows up in the console but I haven’t been able to store the data into a variable.

Week 24
I was reminded of this great quote this week from the late Randy Pausch:
“The brick walls are there for a reason. The brick walls are not there to keep us out. The brick walls are there to give us a chance to show how badly we want something. Because the brick walls are there to stop the people who don’t want it badly enough. They’re there to stop the other people.”

I’m hitting some road blocks this week in getting my Restful API calls to work properly and feeling like this:

But it is okay because I know it is part of the process of growing as a developer and I am learning a lot even when I’m stuck.

Week 25

I’m making some good progress and have added the feature to show the latest article for each blog. The app also displays the user’s name if they are logged in with Facebook OAuth by accessing the displayName property of the Facebook OAuth object.

I learned that I actually already met the graduation requirements by completing the Bloc Jams application and two technical projects. You have the option of improving your first two projects or working on additional projects if you have time left.

Week 26
I took a short break since my wife just had a baby on Wednesday and am now back to coding my final project.

Bloc’s flexibility makes it possible to keep learning even during major life events. They also offer the option to freeze the program if needed. It is tough learning to code with a newborn, so I’m really grateful that I can adjust my pace as needed.

I’m trying to nail down the Restful API requests to Twitter in order to automatically show the number of followers for each blogger’s Twitter account. I know that GET users/show can return the “followers_count” data. Twitter’s new API requires authentication for each request and I’m trying to work that out. After what seems like looking at endless Stackoverflow questions that were somewhat relevant but didn’t help, I’m glad I can get some clarification from my mentor.

I’m starting to feel confident enough to start applying for jobs now. I will also be ramping up the networking efforts and preparing for interviews. I’ve got 10 weeks to go so I’m planning to push myself with the finish line in sight.

Week 27
My mentor suggested I install a Node library by Desmond Morris that makes it easier to make authenticated requests to Twitter’s API.

He helped me add the following code in my /server/routes.js file to make the GET request to the Twitter servers:

I was finally able to get data back from the Twitter API. The only problem is that the data is in the backend and I need to figure out how to get it to the frontend.

I attended the Tacoma Javascript meetup this past week which was focused on discussing Angular. I learned some new things like how to set up a quick local http server with one line of code in the Terminal: “python -m SimpleHTTPServer 8001” and met some local software engineers. The meetup presenter mentioned Introduction to Angular.js in 50 Examples on YouTube which is a very informative presentation on Angular.

Week 28

I have made a lot of progress this week and have been able to work out of a few jams on my own. I used the Node Twitter library to get follower count data from the Twitter API on each blog’s twitter name and then I was able to pass the data from Node to Angular and save the data in the Firebase backend. I also found the Mozscape Node library which made it pretty easy to make API requests to the Mozscape API. I was able to connect the API request to Angular and also save the data to Firebase for each blog on my list. Next I created a function to calculate a “BlogScore” for each blog based on the number of votes, external links, Mozrank, Page Authority, and Twitter followers. I used the orderby filter for ng-repeat to order the blogs in my table by descending BlogScore. I then updated my addVote function so that the vote would be added to the correct blog after the table is re-ordered.

Here is what I have so far:

Week 29

I was having trouble deploying my app to Heroku so my mentor helped me get my app live at http://www.topprogrammingblogs.com/. It was originally hosted on Heroku until I created a CName record in GoDaddy and set up the custom domain in Heroku.

I added the apps URL into Firebase’s dashboard and changed the Facebook app settings to be available for the general public.

I also added a function to randomly change the full-width background image with images from Unsplash.com which provides free high resolution photos.

Week 30

I showed my app to some developers at Operation Code’s Slack community and got some great feedback on ways to improve the user experience.

I was also invited to an in-person interview for a front-end web developer position in Seattle! I am excited for the opportunity and have already started discussing interview preparation with my mentor.

Week 31
This week I had my first interview for a front-end web developer on Tuesday and spent a lot of time researching the company. I was nervous for the interview but it went great and I received positive feedback on my preparation.

I have also started the job preparation phase of Bloc which includes several additional checkpoints like the telephone interview and in-person interview. The curriculum provides helpful information for seeking employment and there are some practice interviews with your mentor to work on your interviewing skills. Technical interviews typically involve a problem-solving component where the interviewer may ask you challenging questions to see how you react. I’m also researching common front-end interview questions and found a helpful list of questions on Github at https://github.com/h5bp/Front-end-Developer-Interview-Questions.

I joined a group project with some other Bloc students and we met on Skype to discuss ideas for the project. A group project is not required but it can provide great experience with working with other developers on a project. You can also collaborate with other students on projects after graduation by connecting via the private Facebook group for students.

Week 32

It turned out that I didn’t get offered the job so I am continuing with Bloc’s job preparation phase and have a mock interview with my mentor on Thursday. I am preparing by reviewing important JavaScript concepts and this long list of front-end developer interview questions.

The mock interview went well although I was really stressed because I didn’t want to look bad. I was able to answer most of the questions and learned several new interview questions like how I would search for bugs and how I overcame a difficult problem.

Conclusion

I finished the program ahead of the 36 week timeframe and am continuing to work on my skills in preparation for employment or freelance work. I am very happy with the program and feel like I learned a tremendous amount and have become a much better developer over the past 32 weeks. I think it is definitely worth the cost of the program. I didn’t have to pay for the program but I probably would have learned even more if I did pay for it because I wouldn’t want my money to go to waste.

I was expecting the program to be more focused on CSS and HTML, but it was actually heavily focused on JavaScript and the Angular framework which I think is great. I did not know much JavaScript before the program and am now comfortable writing JavaScript code which allows me to build almost any web app I can think of. I still have a lot to learn to become a competent front-end web developer but I am a lot closer than I was six months ago.

Frequently Asked Questions
Here are some questions that I have been asked about the program.

Were you working while going through the Bloc program?
Yes, at one point I was working about 10 hours a week on an SEO project as a contractor while also taking care of my two-year old daughter. You can choose different course lengths based on how much time you have available. I had about 10-20 hours available per week to work on Bloc so I chose the longer time frame of 36 weeks.

Prior to Bloc, did you have any prior experience in programming?
Yes, I tried a lot of self-learning resources like Lynda, Treehouse, books, and Codecademy. These are great, but it can accelerate your progress to have regular meetings with a mentor who can help you get unstuck and point you in the right direction.

Did you find that the training from Bloc was sufficient to get a job in the field?.
I think the Bloc front-end program provides a solid foundation but you should continue to build on the basic skills by practicing JavaScript and building additional projects. It is possible to get an entry-level position right after this program but you have to really hustle (e.g. attend a lot of events, meet a lot of people, etc.) My view is that the junior web development job market is very competitive so you have to work really hard to get your first job.

I keep seeing job postings that ask for lots of additional requirements not covered in the Bloc program: Ajax, JSON, PHP, CMS, React, Node.
The requirements that are listed on many job postings are generally a wish list and the employer is often looking for only a few important things. I actually used Node, AJAX, and JSON in my final project so you can get experience in additional technologies if you ask your mentor.

Do you have to complete all the pre-work prior to starting the program?
You don’t have to but it certainly helps. I didn’t finish the Codecademy Javascript tutorial when I started but I completed it a few weeks after I started because I wanted to understand JavaScript better before starting the project phase.

Update: I have been working on improving my Bloc final project. I changed the domain to RankedBlogs.com and it now ranks blogs in multiple categories.

My Mentor
My mentor was Jason LaChapelle who works as a software engineer at Groupon. He was super helpful in helping me debug my JavaScript applications and getting unstuck. He was very responsive most of the time despite working a full-time job.

If you have any questions about Bloc or learning front-end development, feel free to contact me at csipe84(at)gmail.com.

After researching several options for training to become a web developer, I have found Bloc to be one of the most compelling options. I recently applied to Bloc’s veteran scholarship which is awarding 10 veterans with a full scholarship to attend their online bootcamp (Update: I was awarded a full $5,000 veterans scholarship! Thank you Bloc). This post outlines some of the positives that stood out for me compared to other options such as an in-person bootcamp or a college certificate program.

One on One Mentorship

In Bloc you are paired with a single mentor for the entire program which means that the student teacher ratio is 1 to 1 the whole time. This contrasts significantly with colleges or in-person bootcamps where you are in a cohort of 20 or more students. The one on one attention is a tremendous differentiator for Bloc and really helpful for students starting in web development. The mentor meets with the student about 36 times and this time can include helping you get unstuck, pair programming, and answering your questions.

Project-Based Learning

Students complete 4-6 projects during the program which can be showcased in a portfolio. This is excellent if your end goal is to show potential employers what you can do and get a job in the web development field. In web development, employers don’t care about credentials as much as what you can do. The projects seem really impressive like a clone of the music streaming service Rdio.

Flexibility

Bloc really stands out in the flexibility that it provides students which strongly contrasts with in-person bootcamps which tend to be pretty rigid in terms of having to be in the classroom for set hours. This is ideal for people who do not have the option of leaving their full-time job for 2-3 months to attend a bootcamp. Bloc’s online format allows you to schedule meetings when it fits your schedule, which can allow you to continue working full-time if needed. You can also choose the intensity of the program with options of a 12, 18, or 36 week program (the shorter program involves more frequent mentor meetings). Additionally, since you are working 1 on 1 with a mentor, they can customize the program to match with your specific interests, goals, or type of app that you want to build.

Affordability

Compared to an in-person bootcamp, Bloc is less than half the cost at $4,999 ($5,500 if you pay in 6 installments). If you consider the opportunity cost of having to leave your job for 2-3 months for an in-person bootcamp, then Bloc could be a quarter of the cost of an in-person bootcamp. Bloc recently launched a Coding Bootcamp Cost Calculator that helps you estimate the cost of a bootcamp.

Job Preparation

Bloc recently added a job preparation phase that takes place after you have successfully completed the mentorship part of the program. The job preparation includes 3 additional meetings to help you craft your resume, portfolio, and practice technical interviews. It seems like this is a great service for people who have the goal of getting hired after the program. Bloc also has an alumni group of former students who can help each other.

There are a few weaknesses I perceive for an online coding bootcamp like Bloc when compared to an in-person bootcamp. As a part-time program it is not immersive like an in-person bootcamp which puts you in an environment where you are around dozens of passionate students like yourself. With an online program you may miss out on building strong relationships with your peers who are going through an intensive and sometimes challenging experience along with you. You can miss out on gaining experience working collaboratively on a team. Additionally, some in-person bootcamps offer a hiring day where dozens of potential employers meet you and many in-person bootcamps have strong relationships with recruiters who they can recommend you to. With these factors in mind I still think that Bloc provides a flexible alternative to in-person bootcamps at a fraction of the cost.

Bloc is already the largest online coding bootcamp and have recently raised a $6 million series A investment to help them continue to expand. This signals that Bloc is here to stay for the long term and will continue to be the leader in online web development training. You can learn a lot more about Bloc’s offering through their webinars on YouTube.

Quora

“It is the nature of man to rise to greatness if greatness is expected of him.” ― John Steinbeck

“You can get everything in life you want if you will just help enough other people get what they want.” – Zig Ziglar

“Success is getting what you want. Happiness is wanting what you get.” -Dale Carnegie

“We don’t beat the reaper by living longer, but by living well, and living fully — for the reaper will come for all of us. The question is: what do we do between the time we’re born and the time he shows up.” – Randy Pausch

“Don’t ask what the world needs. Ask what makes you come alive, and go do it. Because what the world needs is people who have come alive.” – Howard Thurman

“Would you tell me please, which way I ought to go from here?” ”That depends a good deal on where you want to get to,” said the cat. “I don’t much care where…” Said Alice. “Then it doesn’t matter which way you go,” said the cat. – Lewis Carroll, Alice in Wonderland

“I not only use all the dreams that I have, but all that I can borrow.” – Woodrow Wilson

“Only those who are asleep make no mistakes.” – Ingvar Kamprad, founder of IKEA

“There is nothing that the busy man is less busy with then living; there is nothing harder to learn.” – Seneca

“There is more to life than increasing its speed.” – Mohandas Gandhi

“There are many things of which a wise man might wish to be ignorant.” – Ralph Waldo Emerson

“Whenever you find yourself on the side of the majority, it is time to pause and reflect.” – Mark Twain

“By working faithfully eight hours a day, you may eventually get to be a boss and work 12 hours a day.” – Robert Frost

“The miracle is not to walk on water. The miracle is to walk on the green earth, dwelling deeply in the present moment and feeling truly alive.” – Thich Nhat Hanh

“I am an old man and have known a great many troubles, but most of them never happened.” – Mark Twain

“Many a false step was made by standing still.” – Fortune cookie

“There is no difference between a pessimist who says, ‘oh, it’s hopeless, so don’t bother doing anything,’ and an optimist who says, ‘don’t bother doing anything, it’s going to turn out fine anyway.’ Either way, nothing happens.” – Yvon Choinard, founder of Patagonia

People are rewarded in public for what they practice for years in private. ~ Anthony Robbins

“Everybody is a genius. But if you judge a fish by its ability to climb a tree, it will live its whole life believing that it is stupid.” – Albert Einstein

“Try not to become a man of success, but rather try to become a man of value.” – Albert Einstein

“Don’t let making a living prevent you from making a life.” – John Wooden

“I am the master of my fate; I am the captain of my soul.” – William Ernest Henley

“If you aim at nothing, you will hit it every time.” – Zig Ziglar

“Follow your dreams, or you’ll spend the rest of your life working for someone else who did.” -Anonymous

“Do or do not. There is no try.” – Yoda

“Action is the real measure of intelligence.” – Napolean Hill

“Life is either a daring adventure or nothing at all.” -Helen Keller

“Success is the progressive realization of a worthy goal or ideal.” – Earl Nightingale

“Most people go through life quietly and safely tip-toeing to an early grave.” -Les Brown

“Unless you try to do something beyond what you have already mastered, you will never grow” -Ralph Waldo Emerson

I’m a fan of Tim Ferriss’ writing and advice for getting the most out of life. He provides great content on life hacking, entrepreneurship, and gaining new skills. Here is a curated this list of every Tim Ferriss audio interview I could find online which equates to over 12 hours of content. Enjoy!

Firefox doesn’t support MP3 with the HTML5 audio player so you will have to follow the links to listen to the interviews or switch to Chrome 6+, IE 9+, or Safari 5+. The audio should load when you click play.

In recent decades there has been a significant increase in the research on positive psychology or happiness which has resulted in interesting findings that can help individuals make decisions to increase their happiness. Here are some of the interesting articles and resources I have come across and my top takeaways.

The Myths of HappinessBarry Schwartz, Salon
-Happier people live longer and do better work.
-Experiences do a lot more for our happiness than possessions.
-People focus too much on the goal and not on the journey.

But Will It Make You Happy?New York Times
-Spending money on experiences produces longer lasting satisfaction.
-Money up to a certain point makes people happier because it helps them meet certain needs.
-Hedonic adaptation describes how we quickly adapt to changes.

Don’t Indulge. Be Happy.New York Times
-Survey data shows higher income resulted in better moods, but the impact tapered off after $75,000.
-How we spend our money is more important that how much we make.

Is Money the Secret to Happiness?Psychology Today
-Much of the pleasure of acquiring things is in getting them.
-We tend to overestimate the impact of higher income.
-One of the most common regrets is not spending more time with children when they were young.

The Pursuit of HappinessPsychology Today
-Some people are born with a more positive outlook.
-Things are never as bad or good as we expect them to be.

With Age Comes HappinessTime
-Both happiness and depression can increase with age.
-A tough economic time period can affect the well being of an entire generation.

Too much happiness can make you unhappy, studies showWashington Post
-Ed Diener found those who reported the highest life satisfaction later reported lower income and dropped out of school earlier.
-Studies show that sad people are attentive to detail and externally orientated.

Does Having Children Make You Happier (audio) NPR
-Things that people think make them happy often don’t.
-Parents are slightly happier than non-parents.
-Parenting appears to increase happiness more with men than women.

What You Need To Be Happy by Professor Ed Diener (video) Baylor University
-Having work that you love is important for long-term happiness.
-Active leisure is a key to happiness like going hiking.
-People who live in a concrete jungle are not as happy.
-Air pollution lowers life satisfaction.

Can Money Buy Happiness (video) AsapScience
-People who win the lottery often report becoming very unhappy, partly due to ruined social relationships.
-People who spend money on others feel happier.
-Giving gifts to others is positively correlated with happiness.

Happiness Inc.New York Times
-Unhappy people compare a lot and care about the results.

Using Money to Buy HappinessScientific American
-Simply having more money doesn’t guarantee happiness.
-The greatest increase in happiness is often in the weeks leading up to a vacation, which shows the power of anticipation.

CommutingThe Frontal Cortex
-People consistently underestimate the pain of a long commute
-Frey and Stutzer estimate that a person with a one-hour commute has to earn 40 percent more money to be as satisfied with life as someone who walks to the office.

Does Smiling Make You Happy?How Stuff Works
-Studies consistently show that smiling causes happy feelings but there isn’t a definitive explanation.

The response has been overwhelmingly positive and I was even contacted by a director of marketing in the medical field who offered me great feedback on my company website. The comments on SEOMoz were really supportive and I’ve been able to meet some great new people in the SEO community.

Finally, as I noted in an update to my SEOMoz post, Diet Coke sent me an interesting note via Twitter:

I finally received the package from Diet Coke today: A week’s supply of Diet Coke and a nice note.

The note says:

Hi Charles,

We loved what you did for our fan @portentint on Twitter. In fact, we loved it so much that we wanted to follow your example of social media savvy and give you a Diet Coke surprise of your very own.

Please feel free to enjoy it yourself, or use it to surprise other extraordinary Twitter fans in need of Diet Coke.

Operation Code – A non-profit organization that helps veterans learn to code and advocates for the GI Bill to be approved for code schools or coding bootcamps. They have an awesome Slack channel where you can chat with veterans who are learning to code or developers who can help you. They also provide scholarships to conferences so you can attend some developer conferences for free.

Treehouse – A large library of web development tutorial videos. Veterans can receive a discounted rate after sending in proof of service. Currently it is $9 per month for veterans. Just contact customer service and ask for the discounted veteran rate.

Lynda – A larger library of web development tutorial videos. Veterans can receive a free year of Lynda access by filling out this short form.