Skip to content

Instantly share code, notes, and snippets.

  • Simplicity !== Easy
  • Easy is short term and can sometimes even introduce complexity
  • Simplicity allows for easy while avoiding complexity
  • Complect == tangling/braiding together
  • Complexity is the result of something that has been complected
  • Untangle complected code (e.g. decoupling of components)
  • Do not chain calls (i.e. Law of Demeter)
  • Consider Channels as form of asynchronous flow control
  • Ask yourself all the time: "can this thing be moved? does it have well defined boundaries?"
wget --mirror \
--convert-links \
--adjust-extension \
--page-requisites \
--header="Host: www.example.com" \
--no-parent https://beepboop.cloudfront.net

What’s the Best Practice for changing a DNS record?

For something relatively simple like modifying a single record to a domain, it might feel like overkill to have a “plan” or “strategy” – but given the very public severity of screwing up DNS some caution is warranted. It’s like the old saying: “A packet of prevention is worth a pound of cure.”

There’s a simple way to limit your mistakes: never update both a DNS record and a TTL for that record at the same time. Ideally you’ll have a process of:

  • Drop TTL on the DNS record to something very low a couple of days before you actually need to make the switch. Ex: 300 seconds
  • Change the actual record on your cutover date.
  • Several days after you’ve made the switch, up the TTL to something higher.

Modem

A modem is a box that you plug your telephone (or cable) line into. Doing this will provide you with a connection to your ISP (Internet Service Provider) who are the company responsible for providing you with a public IP address so you may connect to the internet.

The internet is based on the TCP/IP protocol, which means you need a public IP address so that any requests you make for online content has a place to send a response to (e.g. if you open a web browser and make a request for www.google.com then the response needs to know your IP so it can come back to you).

Router

A router is a box that allows multiple devices to connect to it. By itself it's probably not that useful (unless you configure it so that devices can share folders and files). So a router provides a LAN (local area network).

@MicFin
MicFin / README.md
Created May 5, 2017 04:21 — forked from necolas/README.md
Experimenting with component-based HTML/CSS naming and patterns

NOTE I now use the conventions detailed in the SUIT framework

Template Components

Used to provide structural templates.

Pattern

t-template-name

Designing Systems and Applications

This is a short document of tips and notes I've accumulated while learning more about designing distributed systems and building concurrent applications. It is by no means definitive and merely scratches the surface of what is needed to be considered when designing an architecture expected to handle large scale traffic.

Distributed Systems

Scale out, not up

There reaches a point in your application's design where by merely throwing more hardware at the problem (i.e. "scaling up") will fail to resolve the scalability issues you're encountering.

  • Dynamic Dispatch
  • Dynamic Method
  • Ghost Methods
  • Dynamic Proxies
  • Blank Slate
  • Kernel Method
  • Flattening the Scope (aka Nested Lexical Scopes)
  • Context Probe
  • Class Eval (not really a 'spell' more just a demonstration of its usage)
  • Class Macros