Monday, August 31, 2015

Day 31: Final LAMP Project

Week 5 and I have reached the age of confusion.

I'll get to that in a moment but first I want to say that I retook the Red Belt exam yesterday and I did even worse than the first attempt. It wasn't that the task was difficult, it was actually a lost easier this time, but more so that I didn't have enough time. I spent half the time doing validations and database design that I didn't have enough time to build the profile page. By the time I had half-an-hour left I started to panic and made some terrible mistakes with further designs and eventually I just turned it in incomplete and messy minutes before the deadline. The instructor said that I'll have another chance to take it on Friday. This time I decided to get a little creative. There are only a limited number of variations of the test that could be given, so I asked one of my classmates to give me the instructions for his test so I could do it in advance. This might be considered cheating except instead of looking up answers to the exam I'm giving myself extra time to complete it. I have no problem being tested on my performance, I just have a problem with the time pressure.

So back on topic, today marks the beginning of the e-commerce project, a weeklong project that will evaluate everything we have learned from the LAMP stack. As the name hints at, this week we are going to build an e-commerce site using CodeIgniter, jQuery, Bootstrap, and Ajax/API's that, at the very least, processes credit card transactions. The first three features are easy enough to contemplate but the real problem involves using Ajax and API's. Ajax and API's are designed to make our sites dynamic by providing real-life information without having to rewrite code and while the concept is easy to grasp coding it is another issue. I've only covered the basics and don't really understand how we apply commonly used API's from Google Maps or Uber.

I got in my group with three other classmates and we agreed to create a project that collects recipe ingredients and sends an order request to a local market and has it deliver to the user's home by a certain time. We'll be using at least five different types of API's that includes Stripe's for payment and Yummly's for listing of ingredients.

I'll do my part in the project but without a clear understanding of API's and Ajax I fear I'll be of very little use to the guys. I started to get that feeling even before the topic of API's were covered. We started the project off by discussing the database design. CB had already designed a database that looked well planned but then there was a discussion about if his database was too complicated than the site needed. A couple of hours passed and I lost touch on what they were talking about and I just tried not to fall asleep. Boy did I feel useless.

We finally got to coding and I was awake for that. After setting up the shared repository on Github we distributed out work for the night. The first step is to set up the front-end pages and we were each given a few pages to create by the end of the night. CB spent the night researching the API's we'll be using. If this were brain surgery I'm the guy who cuts open the skull and he's the guy who's going to go in there and rewire the brain.

It's getting late and I'm once again feeling defeated. Just when I think I got coding down it turns out there's another entity I need to conquer.

On a bright note VT's team won the hackathon last weekend. The prize is a free course from Coding Dojo which means he could potentially be hanging around America one month longer. He's an awesome guy.

The Dojo was very light today because the senior class graduated last Friday. Next week a new class will begin and the place will be filled up with liveliness. I wouldn't mind that on account that we'll be moving from LAMP to MEAN stack. I am getting a little tired of LAMP. I've been coding LAMP material nonstop for almost two months and my fingers can't take anymore dollar-sign variables and form-validations. I hear the frameworks in MEAN and Rails are going to be way more automated which will expedite everything. Thank you!

Friday, August 28, 2015

Day 30: AJAX/API With CodeIgniter

I found out this morning that I didn't pass the Red Belt test. I'm going to retake it on Sunday and I got the correct code from SP to review my mistakes.

It's almost midnight and I just really want to get to bed so I'll make this entry as short as possible. Yesterday was an introduction to AJAX and API's with some brief assignments to illustrate the point. Now that we have an understanding of how it works and why they are important in dynamic web development we have begun using them in CodeIgniter. This weekend I need to cover the entire chapter on that.

We also had a graduation today for the senior class. They demoed their projects which were designed in either Rails or iOS. Afterwards began the hackathon for Liberty In North Korea. As much as I wanted to participate in it I am behind work and need to stay rested for the Red Belt retake on Sunday.

I went home early today and saw some old friends and had a beer with them. After being in the Coding Dojo almost all week it was a relief to see these guys again. They help me relax after nonstop coding and remind me of what I am working towards.

And now I sleep.

Thursday, August 27, 2015

Day 29: Ajax API With JQuery

I overslept and arrived late this morning. It turns out that about half the class was late today and the instructor had to delay algorithms until a majority showed up. I guess I wasn't the only one who was beaten up from the Red Belt exam. The instructor was pissed and reminded us that lessons start at 9AM. He'll be fine with students showing up as late as 9:02AM but not a minute later. 

Algorithms came and went and then we had a presentation from a professional engineer who was brought in to share with us his experiences. He talked about the differences between working at a big company to a small startup. Big companies are safer in terms of job security and pay rate while startups are risker but with the possibility of reaping great rewards if it is successful. During recruitment companies look for projects the candidate has participated in and when they bring them in for an interview they expect that they know their algorithms. I really need to get a book for that. 

With the Red Belt test completed for the majority of us we began a new subject: AJAX. AJAX (Asynchronous Javascript And XML) is a series of web techniques designed to work with data without users having to leave their webpage. Lets take Facebook for instance: when a user makes a post the site changes without leaving it (even for a microsecond) for the processor where the changes happen. The changes happen on the current site and becomes present without reloading the page. We're still on the LAMP stack but knowing this will be crucial for the next stack. 

And with AJAX comes an introduction to API's. An API (Application Programming Interface) is a component that could be added to an app to enhance performance and provide commonly used features like Google Maps or credit card transactions. Some of the more popular API's are provided by companies like Google and Uber that give users the ability to create an account using their google account or to call a taxi. API's are built by these companies and AJAX allows developers like us to harness their potential. 

By noon we were all free to begin the day's workload. By now we're pretty much done with the LAMP stack and most of us don't have to continue with the remaining PHP and CodeIgniter assignments. It's all the same by now and from what some of us heard we'll be forgetting much of it later on as we move towards web frameworks that are more automated and easier to use, like Rails apparently. The day's work is to begin basic AJAX.  However most of us were still tired from yesterday and we headed out as a group to get lunch in hopes of waking up. 

After lunch most of us were in a better position to begin coding. We had to go back to Javascript for this topic and I needed to brush up on that language. It felt a little odd going back to hard-coding everything after experiencing a framework and their pre-built functions. The next stack will be mainly in Javascript so this will be a good preparation for next week. 

For our assignments we had to create a site that displays all the information on Pokemon. So apparently there exists an API that lets developers get all the information on Pokemon characters without having to hardcode any of their information on our page. It took me the entire afternoon to understand it but by the time I completed the second assignment I was able to use the following, tiny pages of code:


To generate this page:


I did not code a single Pokemon character into my code. Using the rules set on the Pokemon API site the only codes that are in my pages if for how I wanted the characters and selected info displayed. 

I accomplished everything laid out for me today and I am going to go home and catch up on more needed sleep. This weekend is the North Korean hackathon at the Dojo and the weekend workload looks very light. The only real work I might end up doing would be the Red Belt retake on Sunday and if I have to take it the best thing I could do is get as much sleep as possible so I'll be in the right state of mind for Sunday. 

So good night people. 

Wednesday, August 26, 2015

Day 28: Red Belt Exam

I must have been up to 1:30AM last night completing the Red Belt preparation. Being in the Dojo really inspires me to code, however I'm not always aware of what I am coding or how. I just code.

At the end of the night I took out my sleeping back and went to sleep to the sound of students playing ping-pong. Seriously, there is always someone using the ping-pong table and you have to put up with the perpetual sounds throughout the day. Fortunately I'm usually too wired to care or in this case too tired. As VT mentioned the following morning, people were playing ping-pong until 5AM!

We skipped morning algorithms to review for the Red Belt. We got lunch early and the test began at noon. We were each given a random assignment and had 4.5 hours to complete it. The instructor kept telling us that the main component of the test will be to set up a login/registration page, which I've already done like five times by now. 

The test began and my assignment was to set up a simple poke page. In Facebook users can "poke" their friends and Facebook would keep records of it. Only two pages needed to be set up and with no other parties besides the users. I looked at everyone else's assignments and they looked way more complicated so I took a breather and felt that I got off lucky. Boy was I wrong. 

After quickly setting up the login/registration page I moved to set up the database schema. I thought I got past the hard part but the database was much harder than expected since the only way to link the users who have been poked to the users who did the poking was through a self-join. A schema consists of tables, with each table containing basic information like a user's name and password. Tables are linked together based on mutually shared columns of data. In simple sites few tables are needed but the bad part is that there are few relations to set up and so the table has to link to itself, which is referred to as a self-join. I've had very little experience with self-joins and had no idea how to set it up. Do I put all the information on a single table or two? If I use two tables what pieces are data will get shared? I was so screwed. 

After experimenting for over an hour I set up a scheme expecting that it may not work out properly. That turned out to be the case. Time was running out and the only thing I could do was keep moving forward, skip a feature, and just complete the assignments. Students can still pass even if a feature doesn't work. 

I completed the test on time but I felt like I had failed. The instructor said that there won't be any subjects to cover for the remainder of the day and we could go home and rest. Many of us decided to go to Dave & Busters to celebrate but I was so defeated that I stayed behind. After two days of sleeping in the Dojo and possibly failing this test I just wanted to go home and get some real sleep in my comfortable bed. Traffic was have around that time and my plan was to stick around till 7PM when it lightens up but there wasn't anything else to do for the day and the internet weirdly slowed down. I couldn't even get a good LTE signal on my phone outside. So I decided to face the traffic congestions and leave earlier than expected. I sat in silence for over an hour in the traffic. I'm always talking about making choices that will lead me to a more fulfilling life but at that moment of being stuck in traffic after two days of hard work that potentially could have been for nothing I felt like I had reached a new low point. 

I got home and took a long, dreamless nap. When I woke up it took a moment to remember who I am and it hit me that I had forgotten to submit the required video description of my site in action. I emailed it to the instructor, hoping that I wasn't too late. I skipped dinner and spent some time watching videos and for the first time in my time in the Dojo not wanting to show up the following day. Today felt like a Friday and I wanted to sleep in and not think about coding, or my future, for a while.

The instructor said that we can retake the test on Sunday if we failed and that is looking like a possibility for me. I want things to slow down for a couple of days but that's not looking like it might happen. Today felt like a Friday and so does tomorrow. I've been doing this for over a month that my internal clock is getting disoriented. 

I wish I could stop moving for a little while. 

Tuesday, August 25, 2015

Day 27: Red Belt Preparation

Man did the last 24 hours pass by quickly.

Passing the Red Belt test has been on my mind since the previous night and after a brief motivational speech from VT I decided to spend the next two days at the Dojo to prepare for it. I went home briefly yesterday to get dinner and pick up some stuff for the next two days. I got back to the Dojo and did some work for another hour before sleep got the better of me and I fell asleep on the couch. The facility has a shower that I used in the morning and after a quick breakfast at a nearby McDonald's I got straight back to coding before the morning algorithm practice began. At this point algorithms has become difficult to handle. I normally don't have a problem coding these days but that's usually because I can google the answer to complicated problems like sorting. The instructor was adamant that we need to figure this out on our own since many job interviews consist of us answering these problems and potential employers want to see your analytical skills in action to see if we're worth the hire. I've heard of students who studied entire algorithm textbooks just to get a job. I'll keep this mind for the end of the bootcamp so I can purchase the textbooks to review on my own.

After lectures the class spent the entire day working on the Red Belt preparation assignment, which is is a slightly more complicated version of The Wall. It's almost midnight and I'm almost done with it. It took an entire day to work on this and the test tomorrow will 4.5 hours. How exactly am I suppose to create an app as sophisticated as The Wall in that short timespan.

Coding Dojo is a development accelerator but everybody prefers to call it a "coding bootcamp" because it is so demanding it requires that you give up everything you're doing for twelve weeks so they can break you down and rebuild you as a coder; much like military bootcamps break recruits down to rebuild them as soldiers. Many students have quit their jobs, moved away from their homes, and even left their families to attend this bootcamp. By now most of us don't have lives outside the Dojo besides sleeping, and even some of us sleep here so we can get back to coding the moment after we wake up. It is hard on all of us emotionally, especially to those who have boyfriends/girlfriends, wives, and children waiting for them back home.

I can't help but admire my classmates who have wives and children back home and are able to come here. Coming from a traditional nucleus family I often saw marriage and parenthood as an end to individual aspirations. When you're single you're free to travel, work, and live however you see fit. However when marriage and children come into your life freedom walks out. I never had my parents move away because they are bored with the scenery and wanted change, or my dad quitting his job and leaving for three months so he can attend school with the hopes of getting a more fulfilling job. There are always bills to pay, kids to watch, spouses to please, and a tough job market to compete in. When I was younger and cockier I would tell my parents and friends that I'm not going to be like that, that even with the responsibilities that come with age I will still make time to go out and fulfill all my dreams and they were always quick to remind me that it won't be likely as I get older and if I refused to believe them they'd say that I'll learn the truth eventually. Then I got older and reality hit me. Perhaps that's why I might have a fear of commitment. That possibility hit me earlier this year when one of my closest friends become a father. I heard the baby cry and I knew that some of the promises we made to each other will never stick. How can I keep a promise to myself or to someone I care about with a situation like that in the background? Then I met this people at Coding Dojo who have managed to make it work. It isn't easy and many of them have to make compromises but it isn't an absolute trade-off. They might leave a little earlier than the rest, or skip a day or two, but they are here and they know the people they want to be.

Monday, August 24, 2015

Day 26: CodeIgniter, User Dashboard, and Red Belt Preparation

I apologize for any spelling or grammar errors in advance.

This weekend was dedicated to catching up with the CodeIgniter assignments. I was so determined to complete my assignments that I slept over on Saturday night. I completed an average of two a day but even with all that time and effort there was no much more to be done. It has gotten to the point where I'm no longer struggling with the logic or syntax but rather am annoyed by the tedious details of setting it up and running it. Overall I love it and sleeping over helped eliminate distractions that the moment I got up I resumed my coding and refused to go home until certain steps have been taken.

Today I spent most of the afternoon completing an advanced assignment before I encountered the User Dashboard, another milestone obstacle, like The Wall. I planned on getting started today and spending all of tomorrow working on it but that's on standby in favor of preparation for the Red Belt exam.

I passed my Yellow Belt exam three weeks ago that showed my knowledge of basic HTML and CSS. The Red Belt will cover CodeIgniter. The instructor gave the class a guideline for what to expect and VT, RS, and AD convinced me to put the User Dashboard on standby to spend the next 48 hours completing the guidelines so we'll be ready for Wednesday. The goal now is repetition so the exam will feel natural.

I've fallen behind by writing this entry so I got to get back.

Friday, August 21, 2015

Day 25: CodeIgniter Continued

It is Friday and thus concludes the third week. I'm getting really good at CodeIgniter and I'm not even thinking about it anymore. Earlier today we had presentations from the senior classes regarding their creations. Many of them had very interesting designs and made me excited for what more I could learn in the following months.

Unlike last week we all decided to take this Friday's activities lighter. For lunch we went out for Chinese at Shanghai Garden, one of those authentic restaurants where the meal was bizarre but closer to the real thing compared to the deep fried variations we Americans are so accustomed too, and for dinner we stayed in and had pizza from Costco. After dinner most of us went home but the dedicated ones are sticking behind for a few more hours. I'd stick around longer too but I got an invite from an old friend to attend a hangout. This will be a short entry.

I'll be spending the weekend here playing catch up.

Good days like this are the reason I signed up for Coding Dojo. Good night to all those who have loved me so. 

Thursday, August 20, 2015

Day 24: CodeIgniter

Yesterday had to be one of my worse days in the Coding Dojo. When I tried to teach myself Rails earlier this year I couldn't understand much of the material and it killed me that I might not be cut out for a career as a web developer. This last month has been very enriching with learning materials that would have taken me months to learn on my own. I felt confident enough to tackle on a simple web application framework like CodeIgniter as a baby step towards the bigger challenges of Rails in two months. However yesterday was spent mostly reading and rereading entire sections to just understand one stupid little line of code that I was having flashbacks to the failure of my independent studies. It was demoralizing and I went home defeated. 

I wasn't looking forward to today that much and procrastinated arriving here early by watching some documentary during and after breakfast. I got here on time for the more algorithm routine and I didn't contribute to the team effort, just laid there and watched everyone in a tired state. After we got going on our daily work routine I moved onto the next section which was a video demonstration on how CodeIgniter works. After spending all of yesterday reading the material and setting the framework up on my computer and github a lot of the materials were looking very familiar. I got cracking on the first assignment moments before the group went out to lunch and I felt much better. My dad would often tell me that I am too impatient. Whenever he tries to instruct me on something I'm obviously jittering with eagerness to get started, regardless if I knew what I was doing. Listening to lectures on Frameworks isn't fun but coding definitely is, even if I didn't know what I was doing. 

I remembered that I am here because they promised me full immersion into coding and less theories and lectures that encompassed most of my school time. More action and less talking.

I completed the first assignment after lunch and I felt proud about what I had accomplished with such an enormous subject. I moved on to the second assignment and then the third one, the one I was suppose to have completed yesterday. I'm probably going to have to come in here on the weekend but I'm already doing that so no worries. 

For lunch today a bunch of us went to an asian chain restaurant and I had the walnut shrimp with white rice. It was really good and in such high servings that I had to take some back with me. However after lunch I felt sick, like I got food poisoning. Fortunately I didn't throw up and I forgot about it after a couple of hours of coding. After I finished my second assignment I went to eat some more for dinner and the feeling came back. I don't think it's not so much food poisoning but something in the sauce that gives my brain the vomiting sensation. I've never had that kind of sauce before that I don't think my body is accustomed to it. Wouldn't be the first time that has happened. My parents are from Peru but whenever we go to visit I can't drink the milk because it is treated differently than in the US, and I never grew up on it, so I get sick. 

After going through a few assignments I began to recognize a pattern in the CodeIgniter framework that I forked a copy and made modifications to  it so expedite trivial tasks. I pushed the changes onto my Github account for rapid deployment. More modifications will follow. 

One of the Dojo's philosophies is strength through struggle. There are plenty of hard times here and the temptation to quit does rise up but if we hold our ground, keeping coding and doing our assignments then we can overcome the struggles and become strong enough to handle even bigger challenges. There will be more days when I will be feeling down but I need to remind myself that it has passed once before and these too will pass. 

Wednesday, August 19, 2015

Day 23: PHP MVC With CodeIgniter

I ended my last entry with a description of Vietnamese coffee that made me so jittery that I had to move. When I got back home instead of sleep I decided to go for a run. I ran around the block for as long as I could and when my body couldn't run any further I walked several more laps. A combination of movement, caffeine, and punk rock got me jacked up and feeling invincible that afterwards I sat down and decided that I would not sleep until I complete the doubly link-list assignment. Two hours later it was midnight and I wasn't tired or done with the assignment but I knew I had to sleep. So I jumped into bed and laid there for an hour before sleep caught up. Did I suffer for that today.

I barely got five hours of sleep last night. Out of all the days I could have neglected sleep I had to do it today because this day we started the next milestone subject: MVC frameworks in the form of CodeIgniter. As technology grows automation is bound to happen. There use to be a time when automation applied to only physical labor where a machine could do the work of dozens of men at faster rates and a fraction of the cost. So many low-skilled laborers loose their jobs every year because of automation and the people holding higher positions believe they are protected because there is no way a machine could do their jobs more effectively and at cheaper costs but they are coming for them one step at a time. Perhaps a day might come when I get hired to build a machine to replace me upon completion (the plot twist in Kurt Vonnegut's Player Piano). Call it evolution I suppose.

MVC stands for model-view-controller and web application frameworks like CodeIgniter have their architecture built in that format. It is the division of labor between the database, the user interface, and the controller that mediates data that is passed between them. Companies built them because they've noticed patterns in development that could be automated, making it easier and faster for developers to create their programs. The Wall I created last weekend mimics modern popular websites like Facebook and Twitter but it doesn't have their flexibility or adaptability. I could spend weeks, even months, trying to get my site up to parr and that would involve thousands of additional lines of code. The alternative is to use pre-built functions on CodeIgniter that would significantly shorten my workload. Most web developers need to know MVC if they expect to be taken seriously.

I mentioned earlier that I spent the three months prior to Coding Dojo teaching myself Ruby on Rails, a framework similar to CodeIgniter except Rails is written in Ruby while CodeIgniter is written in PHP. I barely understood what I was reading but the experience left me with a basic understanding on how MVC works. So when the instructor began lecturing the class on MVC I kept up. After the morning lecture we began the chapter. Since the instructor could only cover so much during the lecture we had to read the rest ourselves and half the chapter involved just that, an annoyance for everyone. The details were a little hard to follow and I'm often finding myself rereading entire sections. Most of my classmates are ahead of me, if only slightly.

I tell myself that today was an off day on account of an inadequate sleep the previous night. My mind did something today it rarely has been doing since the bootcamp began and wander off. After each session I go on wikipedia and read up on something that catches my interest. At that moment it was automation, as you could guess from my earlier rant, and how humanity seriously needs to reconsider its role in a future where they are not needed in as high numbers as before. Does the future belong to man or the machine?

Tuesday, August 18, 2015

Day 22: Advanced Object-Oriented Programming

I feel like I should go through an average day at Coding Dojo. The day officially begins at 9AM but many show up as early as 8AM to get set up and continue the work from the previous night. At 9AM we spend 30-45 minutes on an algorithm challenge where we break off into groups of three to solve one algorithm problem. At the end one team presents and after that we work on the tasks for the day. The assignments involve reading instructions on the day's subject followed by a series of assignments. The instructors offer some guidelines and there are some TA's around to help but classmates are encouraged to rely on each other. Around noon we break for lunch. After lunch the instructor holds a lecture for an hour. After that it is back to our tasks which most of us work on until 8 or 9PM. By then most of us are spent and go home.

They call this an immersive experience and I could see why. VT told me last week that before coming here he worked as a teacher in South Korea for two years. Prior to the experience he didn't know a word of Korean. Two years later he's speaking fluently. He immersed himself completely into that country that he was forced to learn another language to the point of fluency. The same can be applied for almost any subject a person wants to learn. Coding bootcamps require you to be here all day in order to be immersed into the world of coding, which can cause you to learn so much in such a short period of time. I got to keep that in mind for my ambition to learn fluent German.

But I digress. Today was all about linked lists. After a good night sleep I was able to to solve the singly lists. Then in the afternoon came double links. It was a nightmare back in college but the way they approach it here and the experience I've had back then makes it easier to pick up.

For a couple of days some students have been getting Vietnamese coffee which they allege is the strongest stuff they've ever had. In the afternoon VT and RS went to get some and I was fighting the temptation to sleep and agreed to come along. I was so desperate to stay awake that I had forgotten that I can't drink coffee. It doesn't agree with me. I got a cup and it was the most concentrated brew I have ever had. It didn't hit me for a couple of hours and now I feel super jittery but my brain is still fighting the temptation to sleep.

I need to get up and walk. I'll talk to you later.

Monday, August 17, 2015

Day 21: Object-Oriented Programming

So I finished The Wall yesterday afternoon. It took me less than a week and it felt like an accomplishment. Back in college I had a term project for Web Programming 1 to design a website for healthy foods that included a message board. My partner and I held off on doing that work until the last three weeks. I must have spent about a week designing the front-end from scratch; after that I spent another week working on the javascript interactions; then finally my partner set up some cheap SQL database for messages. By the time presentation day came around we had a horribly built, barely interactive site for the class to see. I was more relieved than accomplished over the work we had done and as I saw other groups present more elegant and interactive sites I told myself that web development is not in my future. The negative feelings towards web design were driven future in during a Logic Design course where the TA told some students that he took that same web programming course years ago to fulfill a requirement and he thought it was so easy that it was almost insulting. He advised the class not to take it since it offered no real challenge. The Wall was twice as challenging and with less than a week to complete and I not only met the requirements but also turned it in with elegance and interaction. I didn't just survive, I thrived.

I was on another roll and got started on the next chapter: Object-Oriented Programming. I've been lectured on that stuff since my first engineering course. OOP deals with data structures. As data grows we need more efficient ways of managing it. Manage it improperly and it could take forever to do a search or log someone into their account.

I must have covered this stuff for about a year in college and while this was never my best subject the concepts are still familiar enough to handle the basics, which I mostly covered on Sunday. Monday was spent working on the advanced chapter. I'm only halfway done and am currently stuck on link lists. Link Lists: the bane of Advanced Computer Programming. I'm surprised I managed to pass that class on account of those little nodes linked together by pointers. If it were up to me I'd manage all my data through arrays but the professor kept saying that I'll be looking towards this on the day that my arrays are so big that I'll be waiting too long for them to get processed. That actually happened once for another class where I created a 100x100 multi-dimensional, binary array and I literally waited half-an-hour for the loops to process them. That's not an experience I intend on repeating.

Most of us are stuck on linked lists and we're waiting for the instructor to demo it tomorrow. I don't know if that'll help much but at least tomorrow will be spent mostly tackling this challenge. I can do it, The Wall proved that I can.

Saturday, August 15, 2015

Day 20: The Wall

This post was suppose to have been made on Friday night but due to some unexpected circumstances I am posting on Saturday.

The plan for Friday was to complete The Wall so I can dedicate this weekend to catching up on optional PHP assignments and possibly get a head start on the Object Oriented Programming (OOP) lessons we'll have on Monday. I made great strides on The Wall by the time lunch came around. For lunch a bunch of my classmates and I decided to go out and eat together. We settled for chicken wings and found a place a couple of miles from the Dojo. There were eight of us so we decided not to order individual meals but one huge order of chicken wings, in particular 60 wings with celery and carrots. I don't think I've ever seen an order of wings that big.


This year I wanted to experiment with the pescetarian diet. Ideally I eat fish and avoid other meats. However in circumstances like this I have little meal alternatives, so I ate the wings and enjoyed them. I'll probably abandon the pescetarian diet later this year. Everyone had fun and we decided to go out like this once a week. I haven't had fun with a group meal like this since I spent spring break in West Virginia last year with some college classmates. Also, since it was Friday we decided to head out in the evening for drinks in downtown. We couldn't do that in West Virginia

When we got back we had a lecture about cyber security and the importance of having a program that scrambles your password before inserting it into the database. After that I lost myself on The Wall. It was so much easier than I thought it be. 

Evening came and the group started packing up and getting ready for downtown. I didn't have much time for a post so I told myself that I'll come back early and make a post before leaving for home. That didn't quite work out.

We got to downtown and after a couple of drinks everyone started talking more. Without going into detail certain group members became the stars of the evening. We really learned a lot about each other that night. A bunch of us decided to watch Straight Outta Compton the following day. The classmate in the hybrid route also showed up to meet the rest of the classmates and I ran into some friends from high school. I introduced them to my coding group and it was fun to see them interact. After a while things got a little blurry but fortunately my high school friends took charge of me and they managed to get me back to the Dojo by 1AM. I was in no shape to drive so I slept on the couch. There was only one other person sleeping at the Dojo. 

I woke up to the sound of coders coming in for the day. I took off immediately for home, slept some more, showered, and returned to code a little more and to watch the movie. On the way to the theater we took a detour to check out the Google campus since VT wanted to see it. I haven't had much professional experience as a developer (for now) and so it is hard to imagine just how much their world really is or that places like the Google campus actually exist. After the movie I decided to call it quits to go home and sleep some more. Unfortunately I didn't get much sleep since my mind was still obsessed over The Wall. I worked on it some more and have a bunch of questions I need to ask my classmates tomorrow. I'm going to sleep early to show up early. 

Thursday, August 13, 2015

Day 19: PHP With MySQL

They say that one of the keys to success is getting a good amount of sleep each night. Sleep had always been in abundance and I took that for granted. Last night I got back home by 10:30pm and as much as I wanted to jump into bed I got a message from the classmate doing the hybrid route who needed additional help on another problem. I was in no state of mind to instruct her so I emailed her my work. It felt like cheating but I trust she'll take the time to review it and not just copy and submit the work. I figured that if I have my computer on I might as well look through my current assignment one more time to see what I did wrong. The first step of anything is always the hardest but once I take it that thing consumes me to the point of obsession. I finally got to bed by 11:30pm. I expected to wake up the next morning too dazed to even respond to the alarm clock. Much to my surprise I felt energetic and I just wanted to head over to the Dojo to resume the assignment.

The assignments combined everything we've leaned about MySQL and PHP. After two weeks of writing MySQl and PHP code it is all coming together as we use HTML, CSS, and Javascript to write the front-end page that users see; MySQL on standby to take in and push out data, and PHP to serve as the medium. I've been waiting for this moment for a long time; since the days in web programming when I was just taught the basics of front-end and everything else was left a mystery. I finished one assignment, then another one, and now I face The Wall.

The Wall's assignment was to build a basic social media site that users have to log into. Once logged in they can make posts and comment on others. It's basically a cheap version of Facebook that will instill in us the essentials of back-end programming. A month ago I would have had a panic attack but this last month and the last few assignments have prepared me. The only thing that holds me back these days is a good night sleep. Which I need since my brain is starting to slow down.

I did manage to gather enough energy to draw out a diagram for my website:


Each box represents a page. Every site begins on the index.php page where it collects the initial data from the user such as email, password, and username. Once that is collected and the user hits the submit button the information is passed onto the process.php page where it is analyzed and processed (as its name indicates) to the database, which is passed into the processor through the connection.php page. The user is then sent either back to the index page (usually when a piece of data is missing or formatted improperly) or sent to the main.php page, where the data is manifested along with other permitted data. The styles.css sheet adds CSS content to each of the display pages and script.js adds some behavior. 

Lets use Facebook for an analogy:
  1. When you type the site into the search tab it takes you to the main page (index.php)
  2. It is decorated a certain way (styles.css)
  3. You type in your username and password and the site takes it to the processor (process.php)
  4. After the processor validates your entries it calls the database (ex. MySQL) in to see if there is an existing account under your name (connection.php)
  5. If your account exists you are taken to your profile page (main.php) where you see you saved data and other data you are permitted to see like posts, pictures and comments
  6. If you inserted the wrong username and/or password the processor sends a warning back to index.php and displayed (script.js)
  7. When the time comes for you to log out you hit the log out button and it takes you to process.php which directs you back to index.php, concluding your usage
  8. There are a total of six pages involved in this interaction but the user will only see two of them, index.php and main.php, which is why styles.css is needed to make those pages pretty and presentable. 


I'm sure Facebook's setup is a little more complicated than the way I put it but the concept is still the same. Tasks are divided between a handful of pages and users only see a portion of them in action. 

I told myself to call it a night and dedicate all of tomorrow to working on The Wall but after setting up my diagram I got a surge of energy that I had to at least get the front page set up. Which led me to this: 


I'm doing something new where I include a navigation bar. I'm also having a laugh with this and make up some bizarre story about Facebook's unusual demise in 2019, which led to the rise of The Wall as the newest and hottest social networking site. 

Now I need some sleep and I'll be ready for an entire day of work in the morning. 

Wednesday, August 12, 2015

Day 18: Advanced PHP And The Wall

God I am so tired. I've barely scratched the surface. Our instructor understood that The Wall is much harder than expected and he's allowed us to continue working on it over the weekend. I'm relieved but it takes away the hope of sleeping in.

Okay I admit I haven't started The Wall today. I am backlogged on three other PHP assignments that I had to focus on that today. Only two more assignments and then The Wall. I'm worried I'm falling behind. A few others are in the same place I am and the hybrid is still in fundamentals.

Instead of doing work I spent the last hour talking to VT about movies, TV shows, and social paradoxes both in and out of America. I wish I had gone to the UK with my German friend last year.

Oh god, this is just web programming in college. I'm sleep deprived, at risk of falling behind, and it's getting to the point that the noises are starting to bother me. I actually like noise, a byproduct of growing up in the suburbs where the silence drove me nuts. One of my goals is to move into an urban sprawl. Stuff always happens there.

Stuff is happening now, got to run!

Tuesday, August 11, 2015

Day 17: Advanced PHP

Coding Dojo has this philosophy of learning through struggling that emphasizes spending chunks of time trying to figure out the solution to a problem on your own before you start asking for help. By making an honest effort of finding your own solution to a problem you are more likely to remember the solution when it is finally revealed to you. Today had to have been the first day that lesson actually hit me.

Today's lessons were the same as yesterday in preparation for something big that will begin tomorrow. During orientation last week the instructor explained a coding challenge known as "The Wall" which will act as a sort of crucible for our first-stack experience. The Wall is scheduled to begin tomorrow and will go on until Friday night. That frightened me since I barely understood how advanced PHP and Sessions worked. I spent the entire day working on a single assignment and only finished it by following the instructor's guidelines. Even though it isn't considered cheating I did feel like a failure for relying on that and not truly understanding how my code worked. Then came the evening and most of my classmates took off for the night, leaving me alone without any help or guidelines to help me out in the next assignment. I asked one of my classmates, SP, for help before he took off and he dropped a hint that the solution rests on a flag we need to put in our input tags. I tried to decipher what he meant and finally it was like all the day's effort finally paid off cause I knew what I had to do. It took me about three hours but I finally finished the second assignment of the day and I actually understood what the code meant. Boy is this day ending on a good note.

If you're actually interested in knowing what exactly did I do: I built a basic login page that tested if the user's inputs (name, email, and password) were valid. Three hours ago it looked impossible but I finished and am proud to say that it works perfectly.

I keep praising Twitter Bootstrap for making my life so much easier and giving me a certain joy I have never felt before in coding. I expressed this feeling to many of my classmates, but like I was a year ago they saw Bootstrap as too complicated to use. Then for some reason today word got around that Bootstrap makes coding simpler and prettier and now everyone wants to know. Some of them couldn't understand its appeal and expressed the same frustration I felt a year ago. When I tried to explain it to them they seemed confused as to why I love this framework so much.

Before lunch an announcement was made about an upcoming hackathon. One of the instructors had grandparents who escaped from North Korea during the Korean War. Because of that interesting piece of family history he announced Coding Dojo's collaboration with a North Korean refugee group to sponsor a hackathon starting at the end of the month to build an app that will spread attention against North Korea and the importance of rescuing dissidents. The winning group will win a free course from Coding Dojo. VT was intrigued and he started asking others if they wanted to form a group. I said okay. Why not? I've already done two of these and if nothing is won at least I'll get free food and gifts for my participation.

After lunch the career counselor came in to lecture us about job search strategies after we complete the bootcamp. I listened for a while before it started to sound like much of that stuff my college career counselor told me so I went back to work. Still, the counselor did remind me that I have to think about a plan for when I complete this. I have some ideas about where I want to work and how to apply but my worry is if the companies and their recruiters would take the time to interview me. I can't remember how many times I've submitted a resume for a position and almost never hear back from the company, even to tell me that I've been passed over. Will it be any different after this?

I shouldn't worry too much about that right now. I'm not even halfway through the bootcamp and I have The Wall coming up tomorrow.

Around 5pm a friend from college called to chat. He called at a good time since I needed a brief distraction from the mess on screen. He also reminded me that I have a life outside of the Dojo. I've been so consumed by this for the last three weeks that I am forgetting all the people who I knew out there. Days go by so fast and college is starting to feel like years ago. I can't believe all that stuff actually happened.

Another long day has gone by and an even longer day is waiting. I'm feeling better about it after the last assignment. Now I need sleep. Night.

Monday, August 10, 2015

Day 16: Advanced PHP

I don't have much time. We've moved on to advanced PHP and I'm pair programming to solve this complex problem.

By pair programming I mean we moved on to Sessions and Cookies, the essentials for sites remembering you when you leave and delivering you ads based on your internet search history.

I am determined to solve this problem by the time I leave to the night. Got to get back to it.

Friday, August 7, 2015

Day 15: MySQL and PHP Optional Assignments

First week complete and I am slightly ahead of schedule. I spent the day doing only the optional MySQL and PHP assignments I neglected to do earlier in the week. After two whole days of hardcore PHP it felt strange to get back on MySQL but I completed that one assignment before sunset and the majority of us were taking off for our Friday night social activities.

VT took off early today to catch up on sleep. Before he left he received a package of camping supplies which he intends to use for camping out in the Coding Dojo in the following weeks. Many of the students are talking about doing that at some point and even I'm thinking about packing my sleeping bag and buying an extra toothbrush. I got to say though that the stuff VT bought was not your usual camping gear. It was like something that came out of NASA. The sleeping bag was compressible enough to fit in one hand and his towel was so sensitive to moist absorption that it's constantly wet from the sweat it picks up from our palms. They are ultra light and ultra small that it beats anything campers lug around on those long hikes out in nowhere. I don't know where he got them but I'm interested.

I'm coming in here tomorrow to work on the final MySQL assignments and the sorting algorithms at the end of the PHP section. I feel great at everything I had accomplished this week and I feel confident that all of this will piece together to even bigger web development lessons.

Thursday, August 6, 2015

Day 14: PHP

I woke up at 5:30am again and I decided to not show up an hour early but instead let myself get another hour of much needed sleep. My body really needed that but my mind wouldn't relent. I laid there in bed for another hour, staring at the ceiling, burying my head under the sheets, and shutting my eyes. Nothing happened. Finally I got up and sat in bed for half-an-hour before I gave up and went through my morning ritual. This is all very unusual.

I got there on time and we got in groups of three for another morning round of algorithms. We were given a problem and off we went to the board. I had nothing to contribute and the VT led the other guy in solving the problem. They debated among themselves for a long time while fighting with the asian-hating asian, LN, by VT for control over the paper-towel eraser. I said nothing and stared at the board trying to piece things together in my head. Finally I got some paper and wrote some stuff down on my own. They continued to debate and fight with LN before I silenced them with the solution I had written. They asked me to write it on the board. We were the last group to submit and I got the strange feeling that all eyes were on me. When I finished the instructor said that while my solution was correct I designed it for an array of numbers when the instructions asked for only one number. I was congratulated for my cleverness but I still felt like I got slapped.

After the lecture we spent the day working on PHP. There were so many small assignments to do and it was all tedious. It's all going to build up to next week when we learn how to link PHP to the MySQL database. There was no afternoon assignment cause the instructors wanted us to devote all of today and tomorrow to complete the PHP fundamentals and optional assignments if we were ahead.

I often feel like I'm behind everyone else but as the day winds down and I speak to my desk mates I realize that I am exactly where the schedule says I should be. Some students are ahead of others but I'm not aiming for that speed. I'm just satisfied to be where I am. Two of my desk mates, VT and the RS, are behind by about two days. Part of the dojo's learning experience is helping others who are behind and it turns out that I actually like helping others out. In December 2013 I participated in my school's immersion program where during winter break I spent a week in Oakland. One day we went to an elementary school where I was assigned to help fourth graders with their homework. I sat there in silence for a while the other kids gathered around another volunteer before one of the kids asked me for help with math. Math is my subject and I quickly helped him out. Word spread and others were asking me for help. There was this one kid who I helped him complete his homework in under an hour and when his mom came to pick him up she thanked me for making her life easier for that night. I remember when I was in fourth grade and math was so difficult to comprehend. My parents spent every night helping me complete my assignments and I rarely got the chance to watch my favorite tv shows on weekdays. I saw a little of myself in these kids and I wanted to help them out if to make their lives a little easier for at least a day. It looks like the feeling has extended to Coding Dojo and I want to help others if I'm already on track.

So it looks like tomorrow will be spent working on all the optional assignments. I'm actually behind on those ones and I relish the chance to do more prep for the real interesting subjects of next week. I am liking my desk mates a lot. VT is often a source of humor while the RS shares a mutual love of beer.

I'm starting to suspect that the reason why my brain isn't letting me get the sleep I need is because I'm enjoying this way too much. Kinda like playing a video game you really like; at some point you should put it down and get some sleep but it's way too addictive.

Wednesday, August 5, 2015

Day 13: PHP and MySQL

These last three nights I've been sleeping for about six hours a night. Yet this morning I woke up without any drowsiness and eager to get up and get moving. I skipped the procrastinations, went through my morning ritual with code running through my head and a need to get back to the dojo and get a head start on the work. I got to the dojo on time and when I started setting up my work station I realized that I forgot to trim one of my nails and I had to spend that one hour before lecture driving to a place that sells nail clippers. I'm usually attentive to hygienic details but I'm in this unusual state of mind where I'm drowsy but numbed out to it and things aren't looking like the way they should. I've had sleepless nights in college and I spend the days fighting the temptation to sleep or sneaking off a nap in class. But with this bootcamp I don't have that same temptation as frequently, despite similar lack of sleep pattern, cause I've become numbed to it.

The morning lecture covered advanced javascript algorithm problems and we got in groups to solve a problem. The problem was trickier than usual but somehow I managed to pull up a javascript method that none of the other groups had figured out existed. It saved us time and I was complimented on my cleverness, even though I wasn't entirely sure what I did. See what I mean by feeling numb?

After lecture we were instructed on the day's assignment: PHP. The first two weeks were spent learning front-end structure but when we arrived here on Monday we went on a tangent to MySQL and database management. The purpose was to learn how to manipulate data structures for back-end implementation and today we learned that PHP is the medium between the back and front-ends of a website.

I still had the optional MySQL assignments to complete but we were told to work on that on the weekend. I hate leaving these things unattended for too long but I moved on. PHP started off tricky cause I wasn't sure if it was an HTML file or an extension to it. After some talk with my classmates I realized that it was a special HTML document that operated only on the server. You can add it anywhere on the HTML doc and as a result you get this:


I got to work but it was a slow process, mostly because I wasn't sure what I was reading. Lunch came and a classmate and I got lunch from a lunch truck. It's fun eating out but this weekend I need to look into making my own lunches because this will be very expensive in the long run. 

After lunch we had the second set of lectures which covered PHP. That didn't help much since I had barely cracked the chapter. The chapter consists of a few sections of lectures and a ton of assignments. After reading through the lectures I understood how the rules of PHP  I started the long and tedious process of solving all those problems. Back in school I often fell behind my other classmates and in the dojo I often felt like I was behind. Turns out that we are all in the same area. Some are ahead and leave early while others stay much later in the days but most of us, including me, are in the middle. 

I do enjoy the camaraderie that comes from working together. If we're not programming we're usually talking and joking around. It is very supporting, much better than those three months I worked on my own in the library. I did say that we have a diverse bunch. It also turns out that one of our classmates is a self-hating asian. 

Finally around 2pm I was listening to a video lecture when the numbness wore out and I suddenly passed out. One of my classmates woke me up. My first instinct was to ask if I snored. I've been told before that I snore very loudly. I decided to give in and take a nap in my car. It was hot outside but I didn't care and I slept in the hot car for twenty-five minutes. Am I a heavy sleeper or is it the unusual state of mind I'm currently in?

It's after 10pm again and I'm going to head out soon for another six hours of sleep tonight. It feels like a Friday considering how long I've been here. 

It's rough but I do like where I am. 

Tuesday, August 4, 2015

Day 12: MySQL

Setting up the database diagrams yesterday was difficult but manipulating them today was a lot of fun. I spent the morning trying to solve the MySQL problems from last night but got nowhere. A lot of my classmates had attempted the problems and just like me they answered a good chunk of the problems but left the impossible ones behind for the day's activities.

At 9am we got tested with Javascript and paired up in groups of three to solve a problem together. They placed out a problem and I was relieved at how incredibly easy it was. I wrote out the solution on the board and while the answer was correct I was embarrassed later to find out that the syntax was wrong. After the quiz we spent the morning coding MySQL. By noon we broke for an hour of sports. Every Tuesday and Thursday we have optional sports for an hour as a chance to bond and relieve some stress. Since this is the first week we were all required to attend. I like this idea but I forgot to bring my workout clothes and was stuck moving out in the hot sun with my constricted clothes for over an hour. Must remember to pack shorts and running shoes for Thursday.

In the afternoon we resumed the lectures and had another javascript quiz at 2pm. It was easy and I got a good score. By 5pm I understood how to manipulate with MySQL and I was off to work handling the brunt of the day's assignments. It was easy but tedious and I'm far from finished with the day's works. I want to carry on but it's getting too late and I'm too tired. Still a good day.

Monday, August 3, 2015

Day 11: Orientation (part 2) and Database Design

What a first day. I've been here for thirteen hours. I came in at 8am and spent thirty minutes prepping before orientation and got introduced to my entire class. There are a total of 21 students enrolled, myself included; 20 of which are onsite while one of them is going hybrid and we won't see her for another six weeks. The class is very diverse with students from all over the country and the world. From across the country we have people from as far as Florida and Rhode Island; from overseas they are from South Korea and the UK. Some came just for the bootcamp while others have moved here permanently with the intent of finding work after they complete the course. Some are recent college graduates while others have been out for a while and have professional experience. Some have engineering backgrounds while others never finished. Some are married and two have children. The ones from out of state all say that there is way too much sun, wonder how the locals stand the heat, awed by San Francisco, and horrified at the real estate prices. The British guy arrived only yesterday and is recovering from jet lag and the one from Utah said this state smells like flowers. Fun crowd. Things are bound to happen.

Orientation lasted an hour and it covered the usual topics about what we should expect in the next thee months, office rules, and advice from the older classes. I was still waking up and might have dozed off for a minute. After orientation my first instinct was to leave, as it has been a habit for school all my life. At the start of a new school term every class would have orientation that would last the entire lecture and then we'd all leave, expecting the work to begin on the next lecture. I had to remind myself that this wasn't school. That part of my life ended last year.

Instead after lecture we began the day's assignment: database design. We spent the last two weeks learning the front-end stuff, now is the time to learn about what happens in the background. Every website has data that is saved into databases such as the user's email and password. So we spent the day designing abstract models for future implementation. Earlier this year I read a MYSQL book that covered the basics and I had an idea about how this all worked. 

After using their material for the last two weeks I knew what I had to do and got to work immediately. This was my first day and already I was typing away like I've spent those last two weeks here. I've been setting up my databases and apparently there is more than one way to set them up and everyone has their own approach to it. There wasn't a single right answer, which wasn't something I was use to. Just finish the work and if you find out later that the setup was all wrong then just redo it!

At noon we broke for lunch. I saw on Yelp there was a restaurant nearby and my classmates and I decided to walk there. Ten minutes later we arrived and saw that it closed down but no one bothered to notify Yelp. So we walked back and drove this time to a different place. After lunch it was more of the same stuff, followed by a group exercise on the subject at 1:30pm, and by 5pm I finished the day's activities and decided to get a head start on tomorrow's assignment. Most of the class took off by 7pm and it was just me and the British dude, VT, who stayed until 10pm. He left just minutes ago cause his jet lag was too much and I'm going to take off soon as well. There are still people here from the older classes and I hear that some of them sleep here. They warned that I could be doing the same thing as the harder full-stacks start coming by. Can't really think about that now, I got to get up tomorrow at 5am so I can be here at 8am.

First day huh?

Sunday, August 2, 2015

Last Tango Then Bootcamp

This entry is going to be a short one. I completed the last of the jQuery assignments yesterday, which covered jQuery plugins created by independent developers. This is important to know since often the jQuery library won't provide everything you need to make your site presented the way you wanted it to be. After that chapter ended I moved onto wireframes, an outline tool for websites. This didn't last to long, it was clear why it is important and it's as easy as the web outlines I was taught at school. I'll have more exposure during the bootcamp. I ended the entire pre-bootcamp coursework satisfied and ready for what lies ahead.

Since today was my last day before the onsite course begins I went out with some friends and had a little fun, a last tango before the bootcamp begins. I won't have much of a social life for the next three months. I would have stayed out longer but I want to get up at 5:30am to get ready and be on the road by 7:30am. We're suppose to be there at 8:30am and I'm not sure how heavy the traffic will be going in that direction. I'm so excited for everything to begin!

Does the phrase "Last Tango" reference some Marlon Brando movie? I feel like it does but I'm a little worn out to put that together. It was the first line that came into my head as I started this entry. Sounded kinda catchy.