logo

Versus

Comparing two or more concepts is fun, and probably the best way to truly understand them.

Web (WWW) vs Internet

  • Web: the pages you see online; the services running on top of the infrastructure. Using HTTP.
  • Internet: the underlying infrastructure / network. Using IP.

Service Discovery vs DNS

Service Discovery is for internal, while DNS is for external. Consul supports both, but Zookeeper is only for Service Discovery.

Hetero- vs Homo- arrays

Homogeneous array vs Heterogeneous array

  • Homogeneous arrays: values of the same type, [1, 2, 3]
  • Heterogeneous arrays: values of different types, ['hello', 12, true]

Homogeneity vs Heterogeneity

  • Homogeneity: statistical properties of any one part of an overall dataset are the same as any other part.
  • Heterogeneity is the state of being heterogeneous. It is the nature of opposition, or contrariety of qualities.

Dimension Table vs Fact Table

  • Dimensions in data management and data warehousing contain relatively static data about such entities as geographical locations, customers, or products
  • Fact tables contain the data corresponding to a particular business process. Each row represents a single event associated with that process and contains the measurement data associated with that event.For example, a database may contain a fact table that stores sales records.
  • a dimension table is one of the set of companion tables to a fact table.

Mechanism vs Policy

  • mechanisms: low level, how processes are implemented
  • policy: high level, how processes are scheduled

Daemon vs Server

  • A daemon is a background, non-interactive program
  • A server is a program which responds to requests from other programs over some inter-process communication mechanism

Static Website vs Dynamic Website

  • Static website: individual web pages include static content. They may contain client-side scripts.
  • Dynamic website: relies on server-side processing, the content may be dynamically generated(e.g. loaded from database)
    • examples: server-side scripts such as PHP, JSP, or ASP.NET, Node.js, Dyango etc.

Front End vs Back End

These 2 terms are relative, if we are talking about web/app or job titles, client side(like UI) is front end, server side is back end; the external API layer can be the front end of the internal services; for the reverse proxy, everything else is back end; compiler also has its front end and back end

Authentication vs Authorization

  • Authentication: verify your identity(you say you are X, and you are indeed X)
  • Authorization: given your identity, check your access(if you are indeed X, do you have permission to read/write Y)

401 Unauthorized vs 403 Forbidden

  • 401 is actually "Unauthenticated", not unauthorized
  • 403 is actually unauthorized...

301 Moved Permanent vs 302 Moved Temporarily/Found

  • 301: "the page is moved and you should visit the new url in the future"; search engine(Google) will update its index, so if you are moving or renaming your websites, this should be used
  • 302: "go to this url for now, but come back here in the future"; this will not update Google's index

monomorphic vs polymorphic vs isomorphic

  • monomorphic(strict signature)
  • polymorphic(... in signature)
function createElement(
    type,
    config,
    ...children,
)

In react: JavaScript engines struggle to properly optimize methods that are polymorphic in this manner. It’s more efficient to keep methods/functions monomorphic by having a strict signature of arguments.

  • isomorphic: backend and frontend js?

Lazy vs Eager

  • data processing tools like Pig(a good name for lazy evaluation) only materialize changes when the final action is called, and only related code will be executed.
  • Tensorflow 2.0 changed from Lazy to Eager so it is easier to debug.

Unix Domain Socket vs TCP/IP Socket

  • UNIX domain sockets are subject to file system permissions, TCP sockets can be controlled on packet filter level.

To list all Unix Sockets:

netstat -a -p --unix

RPC: In-process vs Loopback vs Over-the-wire

  • Loopback: same RPC as over-the-wire, however never leaves the local machine. The request is sent to loopback network interface and routed to local port. The process that listens to the port may be the same process that sends the request, so it is both client and server.
  • In-process: never leaves the process. The client directly invokes the server code. No serialization of request and response, not sending over the wire, no network communication.

Parameter vs Argument

  • Parameter: variable in the declaration of the function
  • Argument: the actual value passed to the functions

However they can be used interchangeably.

SiP vs Soc

system-in-a-package(SiP) is like system-on-a-chip(SoC) but less tightly integrated and not on a single semiconductor die.

NAS vs. DAS

  • DAS: Directly Attached Storage.
  • NAS: Network Attached Storage.

Blocking vs. Non-blocking

  • blocking: an operation that blocks further execution until it finishes, it may be waiting for some event to happen.
  • non-blocking: does not block execution.

Day 0 vs Day 1 vs Day 2

  • Day 0: at a pre-install facility, precurement, install, bootstrap.
  • Day 1: at customers, power up.
  • Day 2: maintenance and upgrade.

CCJ vs CUJ

  • CCJ: Critical Customer Journey. Customer: maybe 3p companies that adopts your APIs.
  • CUJ: Critical User Journey. User: end user who would actually use the product.

Semantic Data vs Structured Data

Structured data means data that has some meaning to you (the owner of the data) and that can be described using a key/value pair or collection of key/value pairs.

Structured data is also sometimes called "semantic data".

Snapshot vs Backup

  • snapshot: stored locally, "local backup", fastest, non-DR (will be gone if the storage appliance breaks), to protect users from accidentally corrupting or deleting their own data
  • backup: upload to a secondary storage
    • native backup: the secondary storage is of the same type as the primary storage; performant, safe
    • portable backup: slower, use 3rd party format/impls, necessary for migration

Stream Processing vs Batch Processing

  • Stream processing: Observe what is happening, and act on events as they occur.
  • Batch processing: Periodically crunch a large amount of accumulated data.

gRPC vs ProtoBuf

  • ProtoBuf is the IDL (Interface Definition Language) and serialization library. Think XML and JSON, but smaller, faster, and simpler.
  • gRPC is the RPC framework that utilizes ProtoBuf.

Using gRPC by default means you are using Protobuf.

backplane vs motherboard

A backplane is a printed circuit board just like a computer's motherboard, but lacks the on-board processing and storage elements. A motherboard aggregates all of the computer's primary system components on a single printed circuit board, whereas a backplane is a board with no little or no active circuitry.

The backplane is a printed circuit board containing connections (slots) for expansion boards and allows for communication between all connected boards.

A backplane is generally differentiated from a motherboard by the lack of on-board processing and storage elements.

chip vs integrated circuit

An integrated circuit a set of electronic circuits on one small flat piece (or "chip") of semiconductor material, usually silicon.

A chip is a common term used for Integrated circuits.

E.g. memory chip, cpu/microprocessors, chipset on the motherboard

Character device vs block device

When you run $ cat /proc/devices, you will find devices are put in 2 categories: block devices and character devices. How are they different?

  • Character devices: process data in its raw, individual form, and are used for devices like serial ports, keyboards, and mice. They provide direct access to the hardware device, and allow programs to transmit data between the disk and the user's buffer.
  • Block devices: manage data in fixed-size blocks, and are used for mass storage. They provide buffered access to hardware devices, and allow programmers to read or write blocks of any size. Block devices are used for devices like hard disks, floppy disks, CD-ROMs, SSDs, and flash drives.

In file mode, b = block device, c = character device.

Block devices transfer data in whole data buffers at a time, while character devices send and receive data in single character chunks.

Monolithic vs Microservices

  • Monolith use modules by func calls
  • Microservices use modules by grpc calls