Software Engineering

Parallelism v.s. Concurrency

Another pair of terms that are easy to confuse are parallelism and concurrency. Parallelism has to do with many workers working simultaneously. Concurrency, on the other hand, is about being able to make incremental progress on more than one task.

Scalability v.s. Performance

The terms scalability and performance are sometimes used interchangeably, but they actually mean two entirely different things. Let’s make sure we understand the difference. Performance is about how well your application runs for one user.

Docker and the Rise of Microservices

As an application attracts more users, the ability to scale becomes paramount. The solution often is to decouple your application and turn you monolithic codebase into multiple microservices. Why is Docker a key component in this new architecture, and what does this all even mean?

A love letter to Software Engineering

I’ve been making a career transition to software engineering for about a year and a half, starting first in a –gasp!– bootcamp and then eventually to Launch School. I’m at a good inflection point now to reflect on the journey so far, talk about the process, the challenges, the joys–and be grateful for everyone who has made this transition possible.

Understanding the Model-View-Controller (MVC) Pattern

One of the most basic and fundamental models for application architecture is the Model-View-Controller (MVC) pattern. Many architectures leverage this pattern – whether in a Ruby on Rails, server-side application or a React front-end interface – so it’s important to understand how, why, and so what?

Understanding the JavaScript Runtime Environment and DOM Nodes

The JavaScript engine is only one of several tools browsers use to deliver a user interface that is both dynamic and able to asynchronously interact with multiple databases and events. Other main components include WebAPIs (including the DOM), two queues, and the Event Loop.

How to use Handlebars.js for templating

Sometimes, we need to display the same basic HTML, but with some customized data interspersed here and there. The Handlebars.js library is perfect for this. It takes less than 5 minutes to learn how to use this simple and efficient templating tool.

Understanding Prototypal Inheritance and Object Creation Patterns in JavaScript

Probably the least understood aspect of JavaScript, the prototypal inheritance model is also coincidentally its most salient and powerful feature. This flexible system enables a rich variety of ways to create objects.

Creating a Calendar Day Converter from Gregorian to Persian

Let’s figure out how we can create an interactive interface that converts a Gregorian Month and Day to a Persian Month and Day, and vice versa. In the process, we’ll review some of the key Javascript concepts and methods for DOM manipulation.

How the Internet Works, Part III - Reliability and Security

In Part II, we learned how an HTTP request travels across the Internet to the correct destination server, through several layers, and returns with a response. But how does this happen reliably and securely, without becoming corrupted or being intercepted by a malicious hacker?