So long, cruel world!


Two and a half years ago, I was driven to attend a coding bootcamp. Driven, but not ambitious. Driven, by the marketing of these magic training facilities that churns out 6-figure making developers. Invest 3 months to make at least 60k? Sounds like a deal, I'm in. The truth was, I was 80% in it for the money, as much as I wanted to think otherwise. It makes sense, after all, bootcamps' marketing is all about salary, salary, salary...

Make the money don't let the money make you

The allure of making tons of money sitting at a desk has completely escaped me by now. I am currently working as a tutor and plan to take pre-requisites for a teaching credential program at CSU Fullerton. I have found something more meaningful in life than looking at one's and zero's on a screen, all day, every day.

So why am I here? I always kept it as a duty to come back to this blog and finish it. It may be flawed, it may be incomplete, but I can at least put in the effort to put a final message out there to people about to drop a ton of money for something that might not be worth it. So here it is:

1. The rabbit hole goes deep- They aren't lying when they say one can never stop learning as a developer. I have found that passion did a whole lot of nothing to help me through the learning. It's the dedicated and hard-working that truly succeed as the developer. Me, I'm lazy, and life is short. No thank you. 
2. There is so much more to tech than problem-solving- Surviving in the tech world is hard not only because its coding concepts are hard, but because it requires the mental fortitude of a rock to go through 3-hour interviews, endure office politics, and keep up with all the connections that may or may not help you get a job later. 
3. Be careful who you trust- Most people in this field want to make money. That has its implications. There are so many people coming in the field for the greens that it's hard to see the true and the false. Be careful who you share personal stories with. 
4. Bootcamps are businesses- In the end, they are there to make money.

All this being said I learned so much and met so many amazing people at bootcamp. Hopefully my input has helped some of you decide if bootcamp is right for you.

var finalMessage = "So long, cruel world!"
console.log(finalMessage);

Always be committing

it's all about being a self sufficient learner
it's all about knowing how to work as a team
your coding skills mean jack if you can't be a team player

it's all about how much work you want to put into it.
contribute to the project. always learn new stuff. always be committing

MKS, you are one hell of a life experience

Jian Yang!


I was Jian Yang tonight. I had all these great ideas, but I couldn't pitch 'em. What use is that?


W7 Solo Week: Interlude

I don't know which came first -- the loneliness or the depression. Living on my own, away from my parents in Los Angeles has been great: drive 5 minutes down Western Avenue and I have access to all the good restaurants and soju bars of K-town. However the loneliness of being away from my close friends and family has been making me unbearably lonely, and what with all the stress from Makersquare and group projects, I've been struggling internally, with no one to vent or lean onto.

Per usual I turned to videogames to ease my mentality. I ended up binge gaming the recent weeks away, playing for hours and hours whenever I had the chance, only to regret it in the end.

I couldn't help but think about her during these timesShe, who said she'd be there for me for the rest of my life. She, who would be there to console me whenever I had a rough day. On one night I dreamed of her and how we got back together in some miraculous way. Happiness flooding through me as I found solace from loneliness, only to wake up with an empty feeling in my stomach and a bad taste in my mouth.

I need someone next to me. Sigh.....

What I did on solo week:
Our group decided to


W6D1 ~ 2: MVP projects

MVP = Minimum Viable Product


For our first project assignment we were to make a working full-stack (front-end and back-end) MVP using any technologies. The point of the project was to see how efficiently we can utilize whatever we've learned over the past five weeks and come up with a compelling product. The only catch was... we had only 2 days! 1.5days, in fact, since it took half a day for them to kick-start and inform us about the project.

We were told that developers are infamously bad at estimating how long a project would take. Instead of over-promising to our future employees and regretting it later, we should under-promise and leave enough of a time buffer for any kinds of obstacles on the way to completion -- because nothing else matters other than having a completed product by the deadline, according to a former project manager, Bobby.

Makersquare's idea of coming up with a viable project idea:
1. Come up with an idea that you think you can finish by the deadline
Cut that idea in half
Cut THAT in half
You have your viable project idea


We all scurried to think of an idea and start working on our assignments ASAP. I've always wanted to make an app that allows the users to make a personal recipe book online, a personal menu of sorts, to keep record of what they are able to make and show their dinner guests. I chose to use HTML, CSS and the Angular framework for the front-end, Node and Express for the back-end.

I went to work alone in one of the "secret" MKS rooms on the second floor. It was a nice change, not having to pair-program. I reveled in not being around any distractions of being around others, and I was able to get a lot done in that short amount of time.

One of the problems I had was figuring out how to pass factories into controllers.
HEREEE


I was not able to implement a user sign-in page nor deploy my app to the heroku server, but I got all of the MVP functionalities running by the end. My home page was the actual menu itself, with a listing of all the entries that the user has added. The "Add entries" button in the navbar directed the users to a form with the fields of: entry name, picture (I was almost done implementing the picture upload functionality, but time ran out), meal type (drop down list of "appetizers", "breakfast/brunch", "desserts", "entree", "lunch", and "snacks"), country of origin, description, ingredients, and directions. Users were able to add more ingredients and directions as they wanted. Clicking on a individual entry in the menu directed users to another page with all the details of the menu entry, including directions, ingredients, and picture. In the last hour I hurriedly included a CDN (content-delivery-network) of bootstrap (a framework that makes styling easy) and a picture of a chef hat in my main HTML page in a last-ditch effort to make my barebone app look somewhat decent.

W5D5: ....

What we did today:
1. Toy Problem

Longest Run

Write a function that, given a string, finds the longest run of identical characters and returns an array containing the start and end indices of that run.
If there are two runs of equal length, return the first one. Return [0,0] for no runs.

Examples

InputOutput
string:
"abbbcc"
[ 1, 3 ]

2. Lecture: Intro. to Deployment
Deployment = My app running on a remote computer. Essentially, letting our app be available for others to use on their browser.

3. Pair Programming on Deployment

W5D4: Feet

You made a new friend named Michael. Michael has a bad habit of grabbing is crotch every ~15 minutes. You don't judge, so you try to ignore whenever Michael reaches down for the goodies. But  it gets embarrassing when Michael does his weird behavior in public. You're not sure if he realizes what he's doing because you've never brought up the topic before. What would you do?

Well, there's this guy in my cohort and he has a problem: his feet smell dank -- and I don't mean dank like they smells good, but dank as in they smell really, really bad. To make his matters worse, he wears the same sandals every single day so that the stank can resonate to full effect, and get worse by the day.

He was my second pair programming partner and I noticed it immediately. As I saw him raise his foot to rest on his lap this was my reaction:


We're almost halfway through the program and I still see him wearing those god-awful sandals. Every time I walked by him or pair-programmed near his vicinity that familiar odor of feet wafted into my nose. I wondered if he knew his feet smelled and why nobody has told him yet, considering how strong the smell was-- I'm sure many cohortmates have noticed.

I felt bad for the guy. The guy always ate meals and hung out alone. We would talk about video games from time to time. He's a pretty nice guy -- just very awkward. I thought it was time someone stepped up to do the dirty work.

After contemplating for hours planning out what to say, I asked him if he wanted to have a talk privately, to which he agreed. We stepped out to the patio, I took a big breath and turned to him.

"Hey [name], what I'm about to tell you is very personal, and for your personal and professional development I would suggest you take care of your personal hygiene more"
With a blank face he gaped and it took him a while to respond

Him: "Oh..... uhh,.. hm, what -- which part specifically?"
I was so relieved that he said this as I grabbed the opportunity to get to the point:
"It's your feet, dude, they smell really bad. Maybe you could wear some shoes?"



An awkward silence fell before us but he was quick to recover. He told me he didn't know about the smell and would take care of it. I told him how I started to feel bad that noone told him yet, and he expressed his thanks to me for being so honest.

It felt good, knowing that I helped someone out. While the embarrassment was short-lived, the benefit of this exchange will (hopefully) help him in the long-run. I like to believe that what needs to happen, has to happen... eventually-- and since nobody was addressing the problem, I sacrificed myself for the good of everyone's olfactory senses.


What we did today:

1. Toy Problem


Async Map

asyncMap has two parameters, an array of asynchronous functions (tasks) and a callback.
Each of the tasks takes a separate callback and invokes that callback when complete.
The callback passed to asyncMap is then performed on the results of the callbacks of the tasks.
The order of these results should be the same as the order of the tasks.
It is important to note that this is not the order in which the tasks return,
but the order in which they are passed to asyncMap.
Once all the callbacks of the tasks are returned, asyncMap should invoke the callback
on the results array.
Example:
asyncMap([
  function(cb){
    setTimeout(function(){
      cb('one');
    }, 200);
  },
  function(cb){
    setTimeout(function(){
      cb('two');
    }, 100);
  }
 ],
  function(results){
    // the results array will equal ['one','two'] even though
    // the second function had a shorter timeout.
    console.log(results); // ['one', 'two']
 });

2. Townhall

3. Pair Programming on Angular
This is one of the few sprints in which my pair and I were not on the same page, but in this one in particular, we were on two completely different books. I didn't understand any of the ideas he was suggesting, nor did I agree with any of the changes he was making to the code. It's times like these when I really want to flip the desk and just do the sprint myself.


Here are some important concepts of Angular that I took away:
--Controllers = Where we store logic for the views
var app = angular.module('myApp', []);app.controller('myCtrl', function($scope) {    $scope.firstName = "John";    $scope.lastName = "Doe";});
--Factories = Provides properties/methods for the controller to use

var app = angular.module('myApp', []);
 
app.factory('testFactory', function(){
    return {
        sayHello: function(text){
            return "Factory says \"Hello " + text + "\"";
        },
        sayGoodbye: function(text){
            return "Factory says \"Goodbye " + text + "\"";
        }
    }            
});
--Scope = A special javscript object that joins the model with the views. Denoted by the $scope variable

--Directives =  extended HTML attributes with the prefix -ng. Has many roles, such as:
  • define a bunch of HTML (i.e., a template) to replace the directive
  • bind events to this element (or its children)
  • add/remove a class
  • change the text() value
  • watch for changes to attributes defined in the same element (actually it is the attributes' values that are watched -- these are scope properties, hence the directive watches the "model" for changes)
  • etc.