Linked lists are data structures used to store linear data.

Unlike arrays, linked lists do not have indexes. Instead, they have nodes. A Node is a basic unit of a data structure with no particular index. In linked lists, nodes connect or link to other nodes via pointers forming a linked chain-like structure. In singly-linked lists, these pointers connect one-directionally (from one node to the next). In doubly-linked lists, pointers connect both ways (to and from).

Properties: The head of the linked list references the first node, the tail references the last node, and the length, like in arrays, the…

# Grid Algorithms

This week… Dungeons & Dragons!

OK, not really D&D, but close. During my first mock interview with interviewing.io (a fantastic platform, by the way — check them out!) I was asked to solve a problem involving a board-game-like set-up, sort of like the well-known Dungeons & Dragons role-playing game. The exercise read something along the lines of given a numerical input, create a 2-dimensional map measuring the length and width of the input value (e.g., if the input is 5, we want a 5 X 5 grid with a total of 25 spaces). Next, randomly populate the board with 1…

# OAuth / Open Authorization (Google Edition)

Most, if not all, of us have seen or used this feature. In this post I’ll be discussing…

# In-Place Operations(JavaScript Array Edition)

As I prepare for technical interviews, this week I continued to explore the popular two-pointer technique to perform in-place operations.

Why are in-place algorithms so popular? Because they can help us save time and space.

Take the following method for example, this in-place algorithm avoids the cost of initializing or having to copy the array onto a new array with squared values, or of having to allocate added space in which to store the new squared values. With an in-place solution, instead we can simply square AND reassign each element while iterating through the array.

`function squareInPlace(arr) {  arr.forEach((int…`

# In-Place Array Operations — LeetCode Problems

I decided to base this week’s post on the following LeetCode exercises (both of which involve in-place operations performed on an array):

## Remove Duplicates from Sorted Array

Given a sorted array nums, remove the duplicates in-place such that each element appears only once and returns the new length.

Do not allocate extra space for another array, you must do this by modifying the input array in-place with O(1) extra memory.

The instructions require that we modify the array in-place therefore we cannot simply loop through the array pushing all of the non-duplicate numbers into a new array, for example.

Instead, we need to find a…

# JSON as an alternative to XML in AJAX / Web Services Requests

JSON (JavaScript Object Notation) “is a lightweight data-interchange format.” — json.org

JSON is used primarily to receive and transmit data from a server and is characterized by key-values/objects. Keys being a string enclosed in quotation marks and values: strings, numbers, booleans, arrays, or objects.

The JSON syntax is built on two structures: arrays and objects. Objects which can also contain arrays or key-value pairs (as mentioned above):

`[{  "name": "Biscuit",  "age": 7,  "breed": "frenchie",  "owner": {    "name": "Daisy",    "homeTown": "Philadelphia"    ...  },  "hobbies": [    sleeping,     eating,    ...  ],},{  "name": "Lola",  "age": 2,  "breed": "chihuahua",...}]Above see…`

# Hash Maps

Note: JavaScript’s Map object is the equivalent of a Hash Map (not to be confused with the map function).

Hash maps (also known as hash tables, hashes and or dictionaries), similar to arrays, are data structures that can be used to store large quantities of data but with a faster and more efficient lookup time.

What’s wrong with arrays?! I like arrays. Really! They're neat, ordered, familiar…but here’s the problem…

Mock technical interview problem (Interview Cake):

You’ve built an inflight entertainment system with on-demand movie streaming. Users on longer flights like to start a second movie right when their first…

# Rack & Rake

Rack and Rake, although similar in pronunciation and spelling, are different Rails technologies.

Ever heard the term “Rails rides on top of Rack”?

## What is RACK?

“Rack provides a minimal, modular and adaptable interface for developing web applications in Ruby. By wrapping HTTP requests and responses in the simplest way possible, it unifies and distills the API for web servers, web frameworks, and software in between (the so-called middleware) into a single method call.” — rubygems.org

Rack is a Ruby gem that acts as a base web server or interface to allow different Rack-compatible Rails frameworks and Rack-compatible Rails web servers to interact…

# Thunk

Thunk. What a strange word.

“In computer programming, a thunk is a subroutine used to inject an additional calculation into another subroutine. Thunks are primarily used to delay a calculation until its result is needed, or to insert operations at the beginning or end of the other subroutine.” — Wikipedia

In simpler terms, thunk refers to a sequence of instructions embedded within another sequence of instructions by way of a function return from inside another function! Now, why on earth would we do that?! Well, as explained above, sometimes we need to delay or alter the course of our program…

# Intro to Big O Notation

In preparation for technical interviews, this week I began to explore Big O Notation.

What is Big O? According to https://web.mit.edu/, Big O, sometimes also referred to as asymptotic analysis, is a “symbolism used in complexity theory, computer science, and mathematics to describe the asymptotic behavior of functions.” It measures the runtime complexity of our algorithms, in other words, the efficiency or performance and scalability of our functions with accordance to their input value.

As an introduction to Big O, today I’ll be discussing the following runtime complexities:

• Linear
`Find max element in an unsorted array:function findMax(array)…`