Sunday, August 17, 2014

FINAL POST!

Hey everyone thank you all for following my blog.

It's been officially 2 weeks since the end of the bootcamp and I am proud to say that I am employed full-time as a Full Stack Software Engineer.

I have my first official day tomorrow.

I couldn't be happier with the result of Coding Dojo's bootcamp experience.

3 months ago I took a dive into the world of coding without being fully certain as to whether I'll be employable as a developer in a matter of 3 months.

Now I am very proud of myself and many of my classmates who received job offers.

As of now, I believe about half of my classmates have received job offers and the other half are still working on getting their skills up to par. That's really the beauty of coding dojo. If you work a little slower than the pace of the class or if concepts take a little longer, you are more than welcome to stick around and make sure you are ready to enter the workforce.

On the other hand, there were some students that ended up voluntarily dropping out of the program for various reasons. Some thought that the curriculum didn't fit their learning style and some simply could not keep up with the concepts and new information. Coding Dojo definitely works hard at making sure that their curriculum is updated, however there will always be some students that don't do as well in any academic setting.


My best advice for anyone considering Coding Dojo are the following:
1. This bootcamp is not a joke. Expect to dedicate 70 hours a week to coding.
2. Notify your other priorities that you are not as available. Whether its parents, significant other, etc it's important that you set reasonable expectations for them.
3. The people that learn the quickest are the ones that have had the most exposure to coding. Do as much self-study as possible before coming for your first day. You don't have to know a lot, but it's important to be exposed to the topics and concepts.
4. Don't try to learn everything on the first try. Whenever I learned a new topic, I never tried to understand every little aspect of it on the first time around. Coding Dojo's curriculum is made so that you are to learn through repetition. With each iteration, you get better and better.
5. Take care of your body. The bootcamp is a marathon, you gotta stay healthy. Don't go out drinking or put your body in harm's way. Each day that you miss is a huge loss and you gotta dedicate some time over the weekend to catch up.
6. If you're not behind the curriculum, relax as much as you can on the weekends.


I have gotten everything I wished for in this bootcamp.

I have entered an exciting industry, I am getting a much better salary, and I have acquired many skills that are so valuable.


If you guys have any personal questions feel free to email me at twhang.dev@gmail.com

Monday, August 4, 2014

Day 60: Last day (Presentations)

Today I had some more phone interviews all morning in which I did much better than my previous ones.

But other than that I brushed up my application and got it ready for my Demo Day.


Here is a picture of me presenting my fitness application to my class.


Here's a game that one my classmates made. It's a multiplayer game where multiple users can log onto the node server.


It feels surreal that the Dojo is all done. My learning will continue as I stick around for the residency program. I am pretty optimistic about my career. Now my focus is 100% on finding a job!

Friday, August 1, 2014

Day 59: More layouts of TrainerExpress and more contacts from hiring managers

Boy it's hard to get "plugged in" to my project when I'm constantly getting emails and phone calls from recruiters and hiring managers.

Tomorrow I have a phone interview with a fitness app startup in Seattle for a full-stack Rails dev. I hope they don't ask too many theoretical technical questions and instead ask me to do code challenges. I'm not quite up to par with all these different tech vocab words and need to brush up on it well. My first tech interview screen kicked my butt as I didn't know a lot of these terms. This is actually the type of company I do work for so I hope I do well!

Other than that I've been just doing some last steps making sure that my project will be good for Demo Day. Tomorrow is the last day and we're just going to show each other the projects that we've been working on. I'll still be around for the "residency program" where you can stick around the dojo and keep working on your project, assignments or whatever it is you're working on. I think about 4 more students in my cohort are doing the same.

These last 3 months have gone a lot quicker than expected. I've learned so much and am ready to enter the workforce. I just gotta make sure I can convey that to recruiters and hiring managers!

Wednesday, July 30, 2014

Day 58: Phone interviews and working more on the UI of TrainerExpress

This morning I had two phone interviews from prospective employers. One was for a front-end developer position at a major fitness company and the second one was from a tech consulting company.

The interviewer for the tech company asked a bunch of technical questions regarding front-end development. Although I know a lot of these things in actually implementation, I had a difficult time answer specific technical vocabulary questions (e.g. What's the difference between progressive enhancement and graceful degradation). The interviewer was nice enough to give me the answer he was looking for so that I can be better prepared for the next one. All in all, I don't expect to be moved forward with the next step of the process. It was a humbling yet great learning experience from my first interview.

The second one was for a tech consulting team that's trying to expand to Seattle. They are quite present around the world but they're looking to fill their tech needs in this new market. The phone interview just composed of simple questions about me and my background. He then sent me an email containing a few algorithm questions. They were so simple that it kind of threw me off guard. I made sure that I submitted the most efficient algorithm to my knowledge. There will be more of these coding challenges in the future which will be much harder I'm sure. I think this first one was to weed out extreme beginners. I expect to get a second coding challenge in the future.


After those two interview in the early afternoon, I was actually pretty exhausted. Being that they were my first phone interviewers with actual hiring managers instead of recruiters, I was very nervous. After taking a long break, I started continuing my project.


Here is a quick snapshot of the finished page of my application.

My brain is definitely fried and feeling the pressure of finding a job. I just need to remind myself that this can become a long process and that I should really take things one day at a time.

Tuesday, July 29, 2014

Day 57: Designing the User Interface for TrainerExpress

I'm getting another step closer to having my application "launchable".

Today I focused most of my time on the User Interface for my application. It's probably the section that I'm weak at but me being a perfectionist, I still had to make it look pretty good.


Here is me taking a photo and tinting it just a little bit so that my the white font can be visible. I had such difficulty making the white text look good because it would blend it with the sky, making it really difficult to read. However I asked one of my classmates who is a designer and he suggested that I just tint it just by 10 to 20% and it'll make the white text visible while keeping the picture bright.

Simply brilliant. There's a reason why we have designers in this world in addition to developers. I also asked him to take a look at more of my application and help with the UI. I'll be doing most of the coding of it but it'll really help getting a designer's eyes on it.

I'm really excited to get this out there on my portfolio.

I'm still having plenty of recruiters calling me. This project should be good to go in about 2 more days. I give it another day for the UI and another day to get the other stuff done like a solid "ReadMe" file and resume updates.

Although I may sound really ecstatic on this post, in reality today was really difficult because I had such difficulty figuring out what would actually look good. But all in all, some progress is better than no progress and I'm just excited to be one step closer to finishing my project.

Monday, July 28, 2014

Day 56: Finished all basic features of TrainerExpress

All throughout the weekend, I worked on the necessary functions of my fitness application. Users can login/sign up, create their own workout routines, see a list of all routines, and initiate a workout routine session. As of now when users begin their routine, they can only click next for you to continue onto the next step. I plan on using some voice recognition so that users can say the word "Next" to continue to the next step.

I'm extremely comfortable with Angular and how they have the code structures in controllers, views, and factories. There's a lot of demand and I'm sure many hiring managers will be impressed with the code that I have produced.


Here's a quick glimpse of what the user interface looks like on the last step of a workout routine.

For the rest of the night, I'm going to figure out how to use PhoneGap to make sure that I can get this to become a mobile app!

Friday, July 25, 2014

Day 55: More progress on TrainerExpress

After about 8 more hours of working on TrainerExpress, I've gotten about 50% done with the application. I definitely need to come in on the weekend and go hard on it next week to make sure everything looks great.

Javascript is a difficult language in that it is extremely difficult to debug when you make an error. Hence it's taking me much longer to do everything. Furthermore, the lack of structure in a NoSQL database in MongoDB makes this much more difficult to enter into the Database. But nevertheless, I am still making relatively good progress. I give myself maybe 2 more full days until all the functionality is perfect. After that it's all about making the UI beautiful and exporting it into a mobile app.


Here is just a quick snapshot of the user homepage with available workout routines. On the right is the database structure for my application.

I'm not the only one here staying late working on my projects there's a good handful of us really working our butts off making sure that our portfolios are looking sharp. Definitely gotta keep going strong at this and secure a developer job that I actually want!

Thursday, July 24, 2014

Day 54: Working on TrainerExpress

Today I started my ambitious day on working hardcore on my application.

I did not get nearly done as much as I wanted to. Honestly if I was doing a Rails application I would've completed all 7 of my objectives.

But after one day of working on this, I only ended up barely completing 1. Ouch... I kept running into little bugs and difficulties connecting the pieces together. Not to mention I am a little rusty on Angular, Express, and MongoDB.

The thing I had the most difficult with was rendering the partials properly.


I was constantly asking my classmates and instructors for help on fixing bugs. I probably asked more than I ever did on any other day during the bootcamp.

Since this is going to be on my personal portfolio, I really want to make sure it looks good and presentable to hiring managers and others.

Wednesday, July 23, 2014

Day 53: Meeting with Recruiter, Wireframe approval, building Front-End of Project

Once again I woke up to phone calls from Recruiters starting at 8AM. Those ones are usually from the East Coast. The number one skill that is in highest demand is Angular. I have gotten 90% of my calls because I have Angular listed on my resume. The other 10% were simply Front-End Development. At around 9:30 I got a call from a recruiter who's office was about 3 minutes away from where I lived so I went ahead and scheduled a meeting with him.

The meeting was surprisingly good. There really are a lot of opportunities out there. The recruiters wanted to push my application forward but it's difficult when I don't have any projects live. I really need to make progress on my projects so that's exactly what I did today.

First things first I wanted my personal website up and running even though I'm not 100% satisfied with it. I already had a domain from GoDaddy and hosted my site using HostMonster. It can be found at www.tedwhang.com

It's also responsive!



In the picture below I have my wireframe and my rough draft of my rendered code. I didn't want to over spend time figuring out the design as there might be some changes when implementing the back-end. I'll definitely be retouching the front-end repeatedly throughout the development process.


After a good days of building the front-end and making sure that my wireframe is approved, I decided to spend the rest of my time figuring out what I'll aim to accomplish tomorrow.

It's ambitious but I want to build all necessary functions tomorrow.


Enough talking about me all the time. Here a quick snapshot of a project one of my classmates is doing. It's a javascript game where the characters are based off of the Legend of Zelda.


I love how Coding Dojo doesn't restrict you from building what you want. Whatever interests you and will put you in the best position to go whatever direction you desire is what you can build. There are no limits here!!!

Tuesday, July 22, 2014

Day 52: Recruiters and Project Wireframes

First thing I was to state is that yesterday I posted my updated resume to a website called Dice and I have literally received 6 calls from different recruiters. Literally one call every hour this morning from 8 to noon and 2 more in the afternoon.

Some of them really had poor English skills and it was difficult to communicate with them. I definitely don't want to work with them but I was polite as they might end up having some opportunities that I'll be really interested in.

I didn't really have any live projects up so it was difficult to get to the next step but the recruiters just wanted to get to know me and my background and see how they can help me get employed.

After all is said and done, I am still surprised by the shear number of people that called me.


I must say I was pretty lazy and sluggish this week but all these calls really built a sense of urgency to start working on those darn projects!!!


I have two applications in mind: One is a textbook marketplace app and another one is a personal trainer app.

Here is a quick wireframe of the personal trainer app:


Michael Choi wants to take a look at everyone's wireframes before we start so that we don't run into dumb roadblocks or mistakes.

I'll be continuing my app building so that I have something to show hiring managers!

Day 51: Final Resume and Build Online Profile Presence

First off I got my Rails Black Belt exam result and... I barely didn't pass. Yikes. To be honest, I got a little too cocky with that exam. I'll be taking another Rails belt exam at the end of this week and I'll be sure to double and triple check. I think my brain was also too exhausted from all the coding. Gotta make sure that my brain is ready next time.

But on to a more positive note, Michael Choi took a look at my resume. After making some minor formatting changes it was time to unleash my resume to online profiles. I have updated my LinkedIn, created a CareerBuilder, Dice, etc. and am seeing what kind of opportunities recruiters bring. In less than one day, I've already received 1 email and 2 phone calls from recruiters. Unfortunately, none of them are what I'm looking for because these opportunities are on the East Coast but that's okay. I expect to get recruiter phone calls all the time.

I found it difficult to work on my project so instead I decided to work on my personal website.


Not quite something I'd be proud enough to put online but it's a good start.

Sunday, July 20, 2014

Week 10 wknd: Beginning of Rails project (TextBookSnap.com)

Today I seriously started working on my application that demonstrates my Rails knowledge and skills.

I'm creating an application where students can buy and sell textbooks.
Some features I want to add are:
1. Ability to see what the current market is buying and selling the books for.
2. Sign in using Facebook (oAuth)
3. Search functionality

But first things first, I need to make an app where users can log in and post books that they want to sell.


Here is a quick glimpse of my work station. I have my models and checklist on the whiteboard while my code and rendered pages are on the screens.

I came in on this Sunday just to get the wheels rolling and map out what I was going to this whole week. I have most of the user RESTful routes working and login/registration finished. Tomorrow I'll be working on getting the ability for books to be uploaded and displayed on user's homepages and whatever else I can accomplish.

Friday, July 18, 2014

Day 50: Rails (deployment with Heroku) and writing my new resume

Deployment is simply a breeze with Heroku! Kind of too easy that it's scary. All you really need to do in a Rails application is change your database to Postgres, make a Heroku account, type in some things in the Terminal an voila your app is now hosted. Now you just gotta point your domain and you're all set to go.


Above is the beautiful UI that Heroku has to see all the applications you have uploaded. The funky name are done by default so that there isn't any conflicts with names.


Well I'm actually done with the curriculum of Coding Dojo! I mastered PHP (Codeigniter), Javascript (MEAN stack), and Ruby on Rails.

Now that I've gotten the necessary skills, it's time for me to start doing what I came here for: to find a developer job.

Michael Choi as well as other classmates who have a lot of experience in the industry and have seen a lot of resumes each took a look at my resume. I received a lot of great criticism of my old one and have created a new one (not quite finished yet).


I plan on iterating on it by constantly making adjustments until it's something that I'm proud to send to hiring managers and recruiters. For now I'm going to leave this resume alone and have more people take a look at it on Monday. Until then it's time for me to work on my personal projects!!!

Day 49: Rails Black Belt Exam

After finishing the Test-Driven Development portion of the curriculum. I figured I was ready to take the Rails Black Belt exam and become a "Double Black Belt".

The Exam was to build what I thought was a modest application, but as I made my way making the application, it turned out to be much more complicated than expected.

The application was a money-lending platform in which users can register and log-in as a lender or borrower. Every time a lender decides to lend money to a borrower it would automatically update on both user homepages. It seems relatively simple but there were many features that to it that it took me much longer than any other exam I've taken.

Nevertheless I think I passed but we'll see about the results when they do come in! Up next I will be doing a little bit of Heroku (which I actually have a lot of experience with when I did Michael Hartl's Ruby on Rails tutorial) and start my job searching!

Wednesday, July 16, 2014

Day 48: Rails TDD (Rspec, Capybara, and Selenium)

Now I'm getting into the meat of what Test-Driven Development is all about. It's really about making sure that everything that you intend your program to do is done properly. Although it's initially slower to make these tests, in the long run you run into much less debugging issues and is better in the long run.

Here's a quick snapshot of my code for testing.



What my Selenium code is actually doing is actually visiting the intended external site and doing whatever I tell it to do. In this example I'm telling the code to put in information in the email and password input fields and click submit.

The crazy part is that it does the whole thing right in front of my eyes. The code literally opened up my Firefox Browser, filled-in the proper input fields and clicked "log in"



It's quite amazing how sophisticated these tests are capable of. It'll probably take me another half of a day to solidify this. Once that is done, I'll be learning deployment to make this Ruby on Rails stack full circle.

Day 47: Intro to TDD (Test-Driven Development)

I couldn't get much done today because of some prior engagements but I did manage to get as much done in terms of dipping my feet into the world of TDD. Ultimately TDD is a way to test your code as you're writing code making sure that the code acts as expected.

It's really crucial that you are constantly writing good code and making sure that your code isn't bugging along the way. It really comes in handy when you are debugging your code as well.

Furthermore TDD has gotten so popular that it is widely accepted in the Rails community as well as in the workplace. It's definitely something to have in your resume.

Monday, July 14, 2014

Day 46: Ajax with Rails

Back to Monday again!

Today I finished the giant Wall assignment in Rails and moved onto utilizing Ajax in Rails. I didn't think I would see Ajax again because of the technologies in Angular.js and other front-end frameworks. But it is good to re-learn Ajax. I must admit that I forgot how to actually do an Ajax call in the traditional way and had to go back and relearn it. Thankfully it was like riding a bike and I was able to do the assignment without too much trouble.

Here is the good ol' Ajax assignment back when we were still doing PHP. The only difference is we're doing it in Rails.



Up next we have TDD with RSpec and Capybara.

Friday, July 11, 2014

Day 45: More Rails Applications

Today was simply more iteration on creating Rails application. This time we were to create the infamous "Wall" assignment.

I thought I was going to blaze through this assignment like I was doing with the previous assignments but this is taking much longer than I expected. It mostly took me a long time to figure out the logistics and what the steps were that I needed to take.


Here's just a quick glimpse of my workstation with my code, rendered view, terminal, and assignment.

These weeks have been going by really quick and I can't believe it's already Friday. Had an intense week of coding and will definitely do my best to relax this weekend so I can finish the Rails section strong!

Thursday, July 10, 2014

Day 44: Rails (Controllers, RESTful routing)

Index, new, create, edit, update, show, delete are the 7 routes that are part of the RESTful architecture. Pretty much stating that all users need these 7 functions.


This morning we had a lecture about this RESTful architecture originally thought of by a Stanford Ph. D. The rails community has heavily accepted this and have created routing rules so to make it easier to organize your code.

Today we continued working on assignments by building application. This time actually using a SQLite database to connect with the Views and Controllers.

The true beauty of Rails is how quickly I am able to build this application as opposed to Codeigniter or Express. It's no wonder that it has such popularity amongst the startup community!

Wednesday, July 9, 2014

Day 43: Rails (Controllers)

Now we're on to the Controllers and Views portion of Rails.


Here's the "smoke page" to let you know that the Ruby on Rails server is running and you're clear to start making your application.


One of the best parts about Rails is how easy it is to install dependencies using 'gems'. I am easily able to install Twitter bootstrap and make it available to all the view files.

The type of applications that we make as part of our assignments are similar to the ones we've done in other languages but this just time we're doing them in Rails. It really makes you think that languages are just different ways of accomplishing the same thing. Although each language and framework does have their strengths and weakness, they are much more similar than different.

I'm really loving how I am understanding what exactly is going on when Rails is generating a model, view, and controller and how the routing rules dictate how the application is run. It's probably the best framework to build a prototype because of how fast it is. You really do save a lot of code because of how Rails does a lot of connecting and rendering for you. You have the follow the "Rails Way" else all the functionality doesn't work at all!

A lot of my classmates as well as I are definitely feeling burned out. I try my best to take periodic naps and breaks and remind myself of why I embarked on this journey in the first place. This bootcamp-style learning was never meant to be easy, but in the midst of it it's often difficult to keep the drive strong. Definitely not for the weak-hearted!

Tuesday, July 8, 2014

Day 42: Rails (Models)

Coding Dojo teaches you how to work with Models first when learning Rails. I especially thought this was clever because models do take some time to learn and can be learned independently. The other components (controllers and views) are heavily reliant on each other along with the routing, so it's best to chip away at these as simple as possible.

Rails uses ORM (Object Relational Mapping) to communicate with the database. Regular SQL queries can be used however it is frowned upon in the Rails community. When possible, we should always be using ORM.


Above is just a picture of me working with the database in the Terminal. Eventually these queries will all be made in the application code but its good to get comfortable with queries using the terminal as practice.

Monday, July 7, 2014

Day 41: Finishing up Ruby

The results from the exam last Thursday came in and I passed the Black Belt Exam!


I didn't pass with flying colors but the mistakes that I did make were easily fixable.

Now that I have the javascript stack behind me, it's time to tackle Ruby on Rails.

After priming my brain over the weekend, I really cruised through the whole Ruby section. I really like all the cool stuff you can do on Rails. For example you can use a selector in a parameter which allows you to submit a varying number of parameters when calling a function.


It is quite frustrating sometimes when using a new language especially when you're trying to do something as simple as a for-loop. But with any new language it'll come with time and exposure.


Here is an assignment that I particularly enjoyed. We were to override functions that are built into Ruby and simple re-create them. It showed us that all built-in functions are just a combination of basic functions that we know very well.

After zooming through the Ruby portion, it's time to tackle Rails!

Week 8 weekend: More Ruby

This weekend I simply worked on getting my brain wrapped around the Ruby language. I still find it difficult to code using it because it's not as "traditional" as the C-family languages (Java, PHP, C++, etc). There are just so many new functional (although very helpful) that it can get a little overwhelming.

Saturday, July 5, 2014

Day 40: Intro to Ruby

Today begins the last stack we learn from Coding Dojo, Ruby on Rails.

Although there isn't formal class today, I decided to prime my brain for this new syntax that's completely different than PHP and Javascript. I really like how clean Ruby is. It's very similar looking to python. At times it's pretty refreshing to see code that doesn't have a bunch of curly braces making it look like machine language. Ruby reads a lot more like English and can be interpreted much easier (although that point can be debated).


This is a quick screenshot of tryruby.org where many beginner programmers start their journey to becoming Ruby on Rails developers. I really like how well this app was built to make it easy and fun to learn the Ruby syntax. Week 9 and 10 will be fully devoted to this topic!

Thursday, July 3, 2014

Day 39: Black Belt Exam

Still not feeling 100% today but much better than yesterday. The exam is scheduled to start at 1pm so I took the morning to lightly review node and express. We have Ruby on Rails as our next topic so I definitely want to do well on the javascript exam before moving on.

Vision was still a little foggy and nose was stuffed up, but when 1 o'clock exam started, I got in "the zone". I really enjoy that feeling when you're able to tune out everything around you and focus all your energy on the task at hand. Our exam was to create an application where users can create polls and vote on them where the information will be broadcasted real-time to all clients connected to the server. I finished the 4 hour exam in about 2 hours. I'm pretty confident that I passed the exam. At the time I felt like I did everything correct, but now looking back I feel like there were some features I could've done better.


Here is a little glimpse of my work station. Got my code, browser, console, and assignment. What was once a convenience is now a necessity. I literally cannot code without 3 screens. Haha.

Since tomorrow is the 4th of July, we aren't required to come in. But I know that some of my classmates are to work on their projects. I'll probably start working on learning Ruby on Rails at home and make sure I get this sickness fully out of my system. It's been a rough week...

Day 38

One word of advice over all: Take care of your body.

I am still sick and unable to even code a single line. I decide it was best to go home early and rest so that I can expedite my recovery. I also didn't want to get my classmates sick either.

Towards the end of the night I did feel a little better so I prepped for my black-belt exam that's taking place tomorrow. Michael Choi sent out a previous exam for us to study with. Even with the sickness, I felt pretty confident doing the exam. We'll see how everything goes tomorrow!

Tuesday, July 1, 2014

Day 37: Project Week (front-end)

Today I started on a personal project that a coworker and I decided to team up on. It's going to be a peer-to-peer book sharing/selling service targeted towards college students. It'll make it easy for students to connect buyers and sellers.


I worked on mostly the front end making sure my site has a good User Interface. Other than that I had to go home early. I really need to fight this cold.

Day 36: Finishing up Angular

There was no post last Friday because I was off on vacation! Woot. But after not seeing code for 3 whole days, it became extremely difficult to look at code again. Especially a difficult and new topic like Angular.js. 

The worst part about taking my vacation is that I got sick and my brain is just unable to function at the rate that I usually go at. I really need to make sure I take care of my body better.

After working on more assignments on MEAN stack, I decided to start working on a personal project. I wanted to create an application where users can upload things that they want to sell. I especially want to target textbooks for students.

Will post up more later. Time to sleep so I can fight this sickness.

Thursday, June 26, 2014

Day 34: Angular.js

Not too much to add today. All I did today iterate more on Angular making sure that I understand the concepts. The way that I'm making these single-page apps is just simply amazing. It's just so easy with this framework to make something that loads so fast and quick.

Here's a quick example of what my code is now looking like.


You can see that I'm using things called "directives" that start with the ng-. Each of them have special functionality that accomplish a lot with less code.

Really not much to show today. Project week starts next week and I'll be sure to have something hosted up for everyone to check out.

Wednesday, June 25, 2014

Day 33: More Mongoose and Intro to Angular.js

Today I simply worked on more mongoose. I still don't feel like I have a solid understanding of mongoDB and mongoose but I'm sure it'll come with time and repetition as with everything else we learned in class.  After about halfway through the day I finally finished my assignment. I got all the proper data into database, queried the database, and properly displayed all the information on the browser. Essentially covering all the CRUD operations.

After that was all done, I started learning Angular.js, a front-end framework that helps you build Single-Page-Applications. It's just a cleaner, more organized way coding instead of doing tons of Ajax calls with callbacks in callbacks.

Below you'll see a list of users that I manually inputed. The search functions allows me to filter and only display the users that fit the criteria in the search box. As you can see only names that show up starting "jo" are displayed. This is the type of technology that is used on searches like on Facebook and other searches where results are dynamically changed based on the data in the search box.


Below is just an example of what Angular code looks like. It's nice because there's functions that really help you accomplish with less code (e.g. for loops replaced with ng-repeat).


Once again another new technology. My brain is getting pretty tired. After a little more of this, we'll have our project week where I'll be working on a personal project I was thinking of. Stay tuned!

Day 32: Mongoose

Today I started learning about MongoDB and Mongoose. MongoDB is simply a datastructure that is more flexible than SQL databases. However because it can become too flexible, it's easy to lose structure and organization for your databases. Mongoose is a helper for MongoDB (kind of like DataMapper) that provides structure in the form on schemas.


This morning we had a lecture on how to use MongoDB and Mongoose. It kind of sucks that MongoDB doesn't have a nice User Interface that MySQL has but it does "build character" when using the Terminal. It does make you feel more like a developer rather than a designer.


And then off to a familiar assignment except with totally new tools. We have now incorporated the "M" in "MEAN stack". All I have left in the future is to learn Angular which I will start tomorrow.

I feel like I'm learning this stack at a much slower pace than the MAMP (mac, apache, mysql, php) stack. It's kind of discouraging but I keep reminding myself that the desire to keep going on through the difficulties is what makes you into a great developer!

Monday, June 23, 2014

Day 31: More express.io

Last weekend I tried to force myself not too look at too much code so I won't get burned out this week and... I failed. I ended up working on some personal ideas but I made sure not to dive back into express.io until Monday(today).


Above is an example of users each an individual box where they can type in a message in the box and the text will be transmitted to all users. (Each browser acts as a new user, notice one is Safari and the other is Chrome). This allows for real-type typing as all users on the server can see the typing real time.


The next assignment is a pretty similar one in which there is a conversation board that users can log into. For each new session, the browser will only ask for your name once. If you visit the site again, you don't need to retype in your name as the server remembers your sessionID. Furthermore, the previous information is saved in the server and can be loaded up for all new users to see after logging in.

I've pretty much learned a significant amount of functionality with express.io. The only thing that I don't know yet is how to implement a database to this. Whenever the server is restarted, all the previous information is gone so it's important for me to learn how to keep the data persistent.

Tomorrow I'll be learning MongoDB, a no SQL database, so that I can connect information to these programs.

Friday, June 20, 2014

Day 30: Express + Socket.io

Halfway through the program! It's been quite a journey so far and I'm sure getting kind of burnt out. A lot of my fellow classmates are feeling the same. It's been intense. Really intense. Definitely going to take a break from coding this weekend so I can rest my brain.

Although I've been pretty tired I gotta say the stuff we're learning is quite cutting-edge stuff. Node with express as a framework really changes the way things are going to be done in the future.



The pictures above show how I'm making a persistent connection with my server using express.io. Rather than having the server or client make request back and forth, there is a persistent connection that listens for events that are happening.

Next week on Monday I'll be working on a chat room in which multiple users can log on. Using jQuery on top of that allows me to display on the HTML the content that gets passed back and forth between the client and server. Pretty neat stuff. This is the type of application that node shines in.

Alrighty time to wrap up this blog post short and enjoy my weekend!

Thursday, June 19, 2014

Day 29: Node and intro to express

This morning kicked off with a lecture about node.js. They broke down how it's different than other types of servers. Servers like Apache are multi-threaded and eat thread takes care of one client request. Node on the other hand is single-threaded but it's asynchronous.

A good (high-level) analogy is:
Node is a restaurant where there is only one waiter. That waiter takes your order and gives it to the kitchen and proceeds to take the next tables order and whenever the food is ready he will give it to you.

Other servers that are not asynchronous are restaurants where a server takes your order and gives it to the kitchen and waits in the kitchen until the food is ready and get it to you. Each waiter can only serve one table at a time, therefore they have multiple waiters (hence multi-threaded).

Once again node is something that seems so abstract but once you boil it down and it's explained to you, it becomes much easier to understand.


This week we've been doing something pretty cool: Student-led talks. A lot of my classmates are from diverse backgrounds. Yesterday we had a mini presentation on freelance work, where we ran through how to establish your credibility in the freelance realm and how you should be doing business with clients.

Today we had a presentation from a classmate with a Computer Science background. He gave a slide show on assembly/machine language and how computers work on an extremely low-level.


If you can zoom in a little, you can see code that most people have never seen in their life. It's the code that speaks to the CPU telling it how it should store information in the RAM. I became extremely thankful for the advancement in computer technology so that I don't have to write low-level languages.


After working on learning node for about 5 hours, I needed to take a break but I still wanted to do some sort of coding so I decided to fork one my classmates project and add some tweaks to it.


He already had the basic functionality down but the layout looked like it needed some work. So I centered the program in the window and made the layout more appealing. I have a feeling this will be an ongoing project that we'll be working on when we're bored throughout our time at the Dojo and even beyond. haha.

You can find the current version of the www.comfroels.com.


After messing around with this it was time to get back on track. Up next was the Express framework, which is simply a framework that makes it easier to use node on a more structured level. It's not an MVC framework but we'll get to it once we integrate the other two components of the MEAN stack. Another 12 hours logged in today!



Day 28: Javascript libraries and intro to node.js

After tackling a bunch of javascript challenges and learning a bunch of cool ways javascript can do animations and illustrations of data, I decided it was time to move on to the back-end.

I really needed to hit the brakes and take my time when learning node.js. It's the first time we actually learn a server languages. Previously when we were learning PHP, we were simply using Apache as a server in the MAMP stack (mac, apache, mysql, php). But this time we actually begin configuring what the server will do when a user makes an http request.

Node.js is the most effective in situations when a two-way (or more) connection has to be persistent. Because of the nature of Javascript and how it's event-based, it runs continuously rather than other languages that stop running once the code is finished. Javascript and node continuously are listening for event that will trigger other events.


Here I have my node server listening for events on port 7077. Whenever a user makes a request to localhost:7077, the server acts accordingly.


And here is my server-side code, telling the program what to render depending on what the request url is.

Once again, nothing flashy here because we're dealing with server-side but node.js has seriously optimized the speed at which content can be delivered. Really excited to be diving deeper in this topic.

Tuesday, June 17, 2014

Day 27: More advanced Javascript

This morning started off with a really short lecture by one of the TAs. He just went over SVG and Canvas elements that allow developers to draw shapes on the browser.

When I went back to my computer, I was pleasantly surprised with an email from one of the remote TAs. She went over my code that I submitted yesterday!


It's just a brief 2 minute video, but it was awesome that she pointed out certain things about my code so that I maintain clean code.

We are really diving into what javascript can do in the browser, especially when it comes to shapes and games.

Here is a rendered view of my code in which I have generated 500 circles of random size and colors.


Pretty neat stuff especially since I can animate them and detect when they collide.


Above is a snapshot of my code that generated these circles.

I have gone through about 90% of the Javascript fundamentals all that remains are the optional work where I can do more advanced algorithms. Once I finish those up, I'll be starting Node.js, the hottest topic in development right now.

Monday, June 16, 2014

Day 26: Start of Javascript track

I took the weekend to spend some time with my family and take a step back from all the coding madness. All I did were some exercises to get my brain primed for Javascript.

First thing I want to show everyone is that I passed my PHP MVC exam. I elected to take the Red Belt exam which bypasses the green belt.


I'm able to get my black belt in as soon as 3 weeks after I master Javascript and all that it entails.


If you didn't know already, Coding Dojo teaches fast. I mean really really fast. Here we are on our first day of javascript and we're already talking about Callbacks. Which are essentially a function being passed as a parameter to a function. It's not easy to visualize functions as a variable you pass especially as a beginner. It doesn't initially make sense as a beginner.

But luckily for me with Javascript practically being my first language, I had a lot of exposure to this topic.


Above is just some lines of code that is for a little Ninja game that was part of our assignment.


We have my little ninja character moving around the screen controlled by the arrow keys on my computer. This reminded me a lot of pokemon haha. Now I understand how they got Ash to move around. Alrighty that's about it for today, tomorrow I'll be diving into more complex topics of Javascript before I start learning Javascript on the server side.