Software Engineering

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?

How the Internet Works, Part II - Layers

What exactly happens when you enter a URL in your browser? How does your browser know what content to display? To answer this question, we need to understand how the various layers of the Internet work.

How the Internet Works, Part I - The Internet Infrastructure

ISPs, routers, gateways, LANs, HTTP, the cloud, the web… the Internet is so complex that we could spend days, months, and even years studying this stuff, and we still wouldn’t be done.

Encapsulation, Polymorphism, and Abstraction in Ruby

Did you know that Ruby was good for the environment? It is, because it follows strict EPA principles… Encapsulation, Polymorphism, and Abstraction. [Ducks a volley of Tomato objects thrown at him].

Mastery-Based Learning in the Age of Social Media

I have a confession to make. I’m an addict. I love everything about–and can never get enough of–learning. I keep coming back for another hit, over and over again. I’ve been doing it for over 30 years.

Using the TERA approach to solve algorithm and technical interview questions

The technical interview is a critical part of becoming a software engineer. It’s your chance to demonstrate your ability to break down a larger problem into smaller, more easily solvable steps, and to gradually slay the dragon (or chicken).

How To Build a Multi-Step Form

Sometimes, forms are too long and can be intimidating to complete. The go-to solution is to create a multi-step form, where the form is broken up into smaller sections that the user completes progressively.

How To Sort Array Elements in Javascript and Ruby

Sorting an array is one of the most common things we have to do as software engineers. It can also sometimes be the fastest way to calculate a data point–for example, the highest possible product of any three numbers in an array.