DigitalCrafts Coding Bootcamp Experience

Week 8

We started learning back-end technologies over the past week. DigitalCrafts covers Node.JS and the MEAN Stack as well as PHP and the LAMP Stack. As we have already covered JavaScript in the first half of the course, we moved straight into Node as it uses the same language. We started off creating a server with Node for practice. We had the server listen on port 8000 and load different pages depending on the URL name. This was a pretty straight-forward process although there did seem to be a number of steps “that we just needed to do,” without fully understanding. Part of this is due to the fact that Node.JS is essentially a huge package with tons of functions that do all sorts of things for you. Our curriculum is focused on learning to use tools and frameworks set up, not understanding the engineering behind every tool.

We later began working on a simple chat room that allowed multiple users to communicate with one another on one server. The application required the use of sockets which I understand to be like various entry points into one server. We ran a series of functions that are a lot like event listeners such as the ‘onclick’ and ‘onsubmit’ functions. One fires whenever a new message is submitted and responds by passing the data to the server. The other fires whenever the server receives a message and responds by posting the message received to all the sockets (from what I understand — the various channels to the corresponding clients). Whenever the message is sent to the clients, the HTML is dynamically created to insert the data passed in.

Our next in-class project utilized Express, Node.JS, MongoDB (database) and Mongoose. This application would allow users to vote on an image selected from our database. We would track the users by their IP address and allow only one vote per image. They simply vote if the image is cool or not, then we update the number of votes. I am still quite lost with Express. Similar to Node.JS, it seems to be something I simply utilize without needing to understand the mechanics of it. This is something that has continued to trip me up — this desire to fully comprehend a tool before using it. A better approach may be to just utilize the tool and gradually gain an understanding with time.

I did, however, get a better sense of what MongoDB does. I met with a tutor after the week ended and went over the basic concepts. From what I understand, it simply stores information in JSON format. But if the application requests the value of a property of a given object that doesn’t exist, it will break the application. We therefore use Mongoose. Mongoose provides a “schema”, or structure, for all information that we input into our Mongo database. This way we know that our data’s structure is consistent, and we can request values without fear of breaking our program. I know this isn’t the exact definition, but I feel that if I can get a basic idea of what’s going on, I can move forward. Everything will start to click with time.

The fact is that there is just so much to learn. I can’t grasp it all now. I wish I could. We covered eight new technologies last week. There is no way I’ll master any of them now, but I can at least get a grasp on how to use them. I have to get comfortable moving forward without gaining mastery. Fortunately, Rob told us that we won’t be covering many new concepts, and we’ll only learn a few more technologies. The next eight weeks should allow us more time to work with these technologies while honing our skill set.