Bitmaker Labs – Day 29

Today was unlike any other, all we did was theory! Well, not entirely, but we talked a lot about optimal asset pipeline planning. In a rails app, everything is categorized into a folder structure. There’s a folder for the app, for the HTML pages, etc. There’s a set way to organize files, which is one of the ways that helps make Rails a powerful tool for fast prototyping. Following an optimal structure means planning your asset pipeline well.
Important lesson of the day:
//= require_tree . and //=require_directory are important to get right, and in the right order, based on where  your dependencies are.  require_tree asks Rails to search the subfolders and execute JS files in there. require_directory does the same thing, but in the main JS folder.

Bitmaker Labs – Day 28

Today we continued learning about AJAX and different scenarios in which to implement it. It’s still weird trying to implement AJAX; it’s coming down to memorizing a certain way of writing an on event. Today is going to be short, gotta catch up on assignments.

Bitmaker Labs – Day 27

Asynchronous JavaScript and XML(AJAX), now I finally know how you work. I can’t replicate the code to make you work, but I’ll get there. AJAX requires a different mindset than Rails, so it’s a bit confusing right now. Seeing it used on Rails makes it even more confusing, but also kind of awesome. jQuery makes AJAX so much easier too.

That’s basically it for today, now I’ve got a few tutorials to follow.

Bitmaker Labs – Day 26

Today’s lesson was a big departure from the simple JS lectures. We learned about closures, callbacks, and events. Events are straight forward and easy to understand. Closures and callbacks I’m still confused about. A closure is when a function captures the environment and freezes it for all its local functions. A callback is when a function executes within another, and sends the results to the parent function.

I’ll have to study this more.

Bitmaker Labs – Day 25

Today we learned about jQuery, which makes DOM manipulation so much easier than POJS (Plain Old JavaScript). E.g.

//To access a div element by a unique ID:

//In POJS:
document.getElementById('logo');

//In jQuery:
$('#logo')

 

The DOM is a new concept for me, but it’s one that I’ve heard of before. Manipulating the DOM is what jQuery basically does. Since the website you’re on is inside of the DOM, you can do a lot of neat things to it. For my first assignment today, I had some fun with Google:

Screenshot of Google search replaced by Bing.

Bitmaker Labs – Day 24

Day two of Javascript has been more or less been the same as yesterday. We continued talking about methods and variables, followed by simple functions and constructs. Constructs are a new concept, and it took me a fair bit to fully grasp their purpose, and now that I do, I appreciate how useful they can be. A constructor basically builds a new object for you, without you having to explicitly type everything out over and over.

function Student(name, age){
	this.name = name;
	this.age = age;
	this.school = "Bitmaker";
}

//Here I'm making a new Student object with salman as the variable.
var salman = new Student("Salman", 17)

//by calling salman, now you see what the constructor has done for me: It's created an object with attributes.
salman // => Student {name: "Salman", age: 17, school: "Bitmaker"}

This is pretty neat.Tomorrow we learn about DOM manipulation, which is the fun part of JS.

Bitmaker Labs – Day 23

Javascript has arrived, and JS is not as beautiful as we thought it would be. Especially when coming from Ruby, it takes a bit to get a grasp on the new syntax. Let alone on the fact that all the beautiful methods you loved in Ruby are no longer available. Going from a world of .map and .each to for loops is depressing.

On the bright side though, because I’ve already learned Ruby, picking up JS isn’t as hard as I thought it would be. For now we’re only doing the basics, so: making variables, using methods on them, and learning about objects. Not bad at all.

Bitmaker Labs – Day 22

Test Driven Development was the focus of our lecture today. We’ve done it once before, and today we reviewed it. Nothing new to really learn, so I felt it was a wasted class.

For lunch a bunch of us went to a jazz bar nearby, and had a fun time. It’s remarkable how fast we’ve all come to being close friends. I’m really curious as to how the dynamics will change post graduation. A common misconception is that we’ll all be competing for the same jobs, but that’s not quite true. An astounding number of my classmates are already scheming their own business plans, or already own a business. Some are at Bitmaker just for fun, while others just want to understand code, but not do it as a living. I guess that’s why it’s such a great mix of people.

Our cohort’s been dubbed the social one, because we prefer socializing over learning. The last cohort was at school till 11pm every day and back in for 8am most days. My cohort is usually half empty by 6pm, and some folks barely make it in for 10pm. So far only one person has dropped out, but another hasn’t shown up for two weeks, so he might too. Not bad I think, since the last cohort had at least 3 that dropped out.

I’ve been trying to do something special with my app that has been driving the instructors crazy. I’m making it much harder on myself by trying to do a calendar date-picker and a time_select_field for my application’s reservation page. If you’re purposely making things harder on yourself, the instructors tend to not be encouraging or helpful, which is disappointing. Pushing yourself to do complex tasks helps you learn more as opposed to just going with the easy route. Guess I’ll voice that in the feedback survey.

Tomorrow we start JavaScript. Hooray!

Bitmaker Labs – Day 21

It’s the start of my 5th week here today. School’s going by pretty fast, leaving four more weeks left till graduation. Graduation’s both scary and exciting, but that’s a topic for another time.

Today’s lesson focused on Date, Time, and DateTime objects in Ruby. There are some really cool methods that can be used on DateTime. Working with these 3 objects is a nightmare though. I don’t even want to think about factoring in different timezones and daylight savings.

Time.now #Gives you the time and date
Date.today  #Gives you the current day.
DateTime.now #Gives you the date followed by the time.
Time.zone.now + 1.week #Gives you the time in a week.

After class, we went back to working on our OpenTable clone, and I finally finished it with my friend. Now I’m starting it again from scratch to do on my own, to make sure I know the concepts.

Bitmaker Labs – Day 20

Today we started building our first app that has 0 instructions with it. We’re all left to our own devices to figure out how to build an OpenTable clone. The entire day was spent on trying to figure out how to proceed, and it feels overwhelming. Part of me knows this is about being resourceful and finding solutions on our own, but the other part kind of me feels this is harder than what they think we’re capable of. Right now we’re working on it in groups, so we’ll see how it goes.

I’m glad that the weekend’s finally here. Some extra hours of rest helps a lot.