Saturday, May 30, 2015

Framework, Library, API - What Are You!?

 
If you’re new to programming like me, you might be lost in all the labels. As I’ve studied, I’ve heard so many different labels tossed around — Framework, Library, API, Toolkit… they seemed to be used interchangeably. Then when I had an expert proof-read my resume, he told me “JQuery is a library not a framework, and AJAX is more of a technique”. I realized I needed to study a little bit of vocabulary here.

Well here’s what I understand, based on my research:

A Framework is like the skeleton of your software or website, it dictates the architecture of your software. Like the frame of a car, it’s typically a pre-designed template to support whatever it is you’re creating. Examples of frameworks: Bootstrap, Ember.

A Library is a bunch of code that you can easily use when developing any application, without having to focus on all the details of its inner workings. Libraries make development quicker and easier. Usually libraries focus on specific tasks, and don’t include all the services necessary to run an application like frameworks do. Examples of libraries: JQuery, Sass.

A Toolkit is similar to a library, in that it is a set of code that can be used for specific tasks. Toolkits are supposedly not so popular anymore, since libraries are now the preference.
Example: Dojo

An API (Application Programming Interface) is essentially the documentation, or the rules that govern a framework or library. You follow these rules to use a library correctly.

It seems that most of these resources clearly define themselves on their respective websites. Some seem to be oddly categorized though, for instance Angular defines itself as “a toolset for building a framework”, but I’ve also heard it referred to as a library. I suppose at a certain point the vocabulary becomes natural.


References

[1] http://stackoverflow.com/questions/3057526/framework-vs-toolkit-vs-library

[2] http://stackoverflow.com/questions/8772746/difference-between-framework-vs-library-vs-ide-vs-api-vs-sdk-vs-toolkits

[3] http://cs.lmu.edu/~ray/notes/toolkitsandframeworks/

Monday, May 18, 2015

Order Of Operations



When I decided to start exploring coding as a career, one of my first google searches was "what is the best order to learn programming languages?" This led to a ton of forums containing arguments about what the best order was and I never really found a solid answer. I was recently reminded that I'm still struggling with this order of things and having to back-track in my studies all the time.

A couple days ago in a meeting with a tech startup, I was told a little bit about what makes their website run. They told me I would be welcome to contribute to their project and learn from experience but first I should learn a JavaScript library called ember.js.

I ran home, found an ember tutorial, and dove right in. Then of course I saw the warning: "Before learning ember, you need to understand AJAX and JSON." I needed to back-track a bit to get through ember.js the right way.

Throughout the past six months of self-teaching, I've found that back-tracking like this is inevitable. Without any sort of course structure or counseling, you're faced with the challenge of not only learning the material but also figuring out the best way to learn it.

It seems like there are probably about 70 popular JavaScript libraries in use now, and over 1000 listed on JavaScripting.com. (If you're reading this far after May 2015, there are likley more!)

There's no way to be familiar with all the libraries and frameworks, but it seems to me the most important thing is to understand their foundations. From what I understand so far, not only does it help to thoroughly understand the syntax of core languages, but you'll also have a general understanding of what's happening under the hood of each method, and you'll have an easier time debugging issues or finding efficient solutions.

If you're trying to teach yourself web programming like me, I've found this is the best order to learning programming languages:

HTML - learn the DOM (document object model), and how a browser builds a webpage.
CSS - learn how a browser styles and positions elements, and the cascading effect (look into OOCSS for best practices).
JavaScript - the foundation for all the other libraries out there.
PHP - necessary for a lot of server-side tasks like writing to files or databases.
SQL - useful for many server-side tasks and data persistence.
XML - A good introduction to what JSON does better…
JSON - opens doors to work with AJAX pretty efficiently.
AJAX - allows fast, asynchronous downloads of information from server.
JQuery - learn how plugins and chaining events work.

I've learned all these things in a completely jumbled way, going from one to the other, and back again. Knowing what I do now, this is the most logical order I'd recommend going in.

Of course with my currently limited understanding of the industry, I can't claim I'm an expert here. I might find myself backtracking again next week. I'm just excited to continue exploring what else is out there and make some coding magic happen!

Wednesday, May 6, 2015

Hello NY Tech Meetup



One of the earliest career tips I received was to meet everyone I could possibly could, because getting a job today really relies on face-to-face connections. I won't lie... this is not my favorite thing. I'm just not the kind of guy who runs up to strangers to talk about how I'm changing my whole life around.

I'm sure I'm not the only shy coder out there. As someone from an entirely unrelated background, of course I feel like an impostor amongst the pros.

Well after weeks of anticipation, I finally attended my first Meetup — the NY Tech Meetup. It was probably the best grand entrance into a new community, with hundreds of attendees, the Skirball Center auditorium at NYU was packed to the brim!

Presentations included many very interesting startups, from furniture marketplaces, to language education, health, and even a cool AI personal assistant for your e-mail account.

There was lots of mingling, schmoozing and bumping elbows. I learned a lot, trying to be shameless about how green I am. Regardless, everyone I met was understanding of my position and very supportive. So far, the support has really been a warm welcome.

If you're like me, a newbie in such an advanced world, don't worry too much. Ignore those nervous thoughts and just pretend you belong, even if you don't believe it. Work out your elevator pitch, commit to a meetup, and put on a mask. You'll soon find that you won't be pretending anymore.

Afterwards there was the added perk of free alcohol and cake! I suppose I can muster the courage to mingle if cake is involved. 😝

Learning MongoDB from MySQL Background

Until this point, I've only had experience with using MySQL databases, but I've been wanting to try MongoDB because it has a fu...