• Shuffle
    Toggle On
    Toggle Off
  • Alphabetize
    Toggle On
    Toggle Off
  • Front First
    Toggle On
    Toggle Off
  • Both Sides
    Toggle On
    Toggle Off
  • Read
    Toggle On
    Toggle Off
Reading...
Front

Card Range To Study

through

image

Play button

image

Play button

image

Progress

1/252

Click to flip

Use LEFT and RIGHT arrow keys to navigate between flashcards;

Use UP and DOWN arrow keys to flip the card;

H to show hint;

A reads text to speech;

252 Cards in this Set

  • Front
  • Back
  • 3rd side (hint)
What is the name of the latest JS build tool that uses trees as a first class primitive for describing file transformations.
Broccoli
http://alexmatchneer.com/blog/2014/04/12/ember-cli-and-npm-fights
Run this command inside a node project folder to install its binaries to your system
npm link
http://alexmatchneer.com/blog/2014/04/12/ember-cli-and-npm-fights
This is the state machine compiler that backs the Mongrel HTTP parsing engine
Ragel (http://www.complang.org/ragel/)
http://alexmatchneer.com/blog/2014/04/21/daily-journal
Joyent's parser written in C was taken from this server's codebase
nginx
http://alexmatchneer.com/blog/2014/04/21/daily-journal
Who was the author of nginx?
Igor Sysoev
http://alexmatchneer.com/blog/2014/04/21/daily-journal
This Ruby server combines the Mongrel HTTP parser, Event Machine, and Rack, and can be configured to enable threading.
Thin (http://code.macournoyer.com/thin/)
http://alexmatchneer.com/blog/2014/04/21/daily-journal
The author of Mongrel
Zed Shaw
http://alexmatchneer.com/blog/2014/04/21/daily-journal
Is Puma the only multi-threaded Rails 4 HTTP server?
No, there's Net::HTTP::Server, Phusion Passenger 4, Rainbows!, Reel, Thin, Webrick, Zbatery (http://stackoverflow.com/questions/17902386/is-puma-the-only-multi-threaded-rails-4-http-server)
http://alexmatchneer.com/blog/2014/04/21/daily-journal
A fork-less HTTP Rack server based on Rainbows! -> Unicorn -> Mongrel and inherits parts of each, supporting thread/fiber/event/actor concurrency (just not threads)
Zbatery (http://zbatery.bogomip.org/)
http://alexmatchneer.com/blog/2014/04/21/daily-journal
Based on Unicorn, this HTTP Rack server is designed for applications that expect long request/response times and/or slow clients
Rainbows! (http://rainbows.rubyforge.org/)
http://alexmatchneer.com/blog/2014/04/21/daily-journal
For Rack applications not heavily bound by slow external network dependencies, consider this instead as it simpler and easier to debug.
Unicorn
http://alexmatchneer.com/blog/2014/04/21/daily-journal
If you're on a small system, or write extremely tight and reliable code and don't want multiple worker processes, check out XXXXX, too. XXXXX can use all the crazy network concurrency options of Rainbows! in a single worker process.
Zbatery (http://rainbows.rubyforge.org/ and http://zbatery.bogomip.org/)
http://alexmatchneer.com/blog/2014/04/21/daily-journal
A website that mocks a slow API
http://slowapi.com/ - e.g. curl http://slowapi.com/delay/1.0
http://alexmatchneer.com/blog/2014/04/21/daily-journal
Asynchronous HTTP Client (EventMachine + Ruby)
em-http-request (https://github.com/igrigorik/em-http-request)
http://alexmatchneer.com/blog/2014/04/21/daily-journal
A HTTP client lib with a common interface over many adapters (e.g. Net::HTTP, Excon, EventMachine, etc), with a Rack-like middleware system
Faraday (https://github.com/lostisland/faraday)
http://alexmatchneer.com/blog/2014/04/21/daily-journal
This command line tool from Apache benchmarks a server's response time
ab -n 600 -c 200 http://mycoolasync.herokuapp.com/async_test
http://alexmatchneer.com/blog/2014/04/21/daily-journal
Fully async real-time web app Ruby framework. Built on top of EventMachine, designed for large number of open connections and providing full-duplex bidirectional communication.
Cramp (http://cramp.in/)
http://alexmatchneer.com/blog/2014/04/21/daily-journal
What does full-duplex mean?
It means transmitted data does not appear to be sent until it has actualy been received and acked by other party.
http://alexmatchneer.com/blog/2014/04/21/daily-journal
What is the difference between a thread and a fiber?
Thread execution can be interrupted at any time (preemption), possibly leaving data an unsafe/unfinished state. Fibers are "cooperative", and cannot be preempted, and must explicitly yield to give up control.
http://alexmatchneer.com/blog/2014/04/21/daily-journal
The Reactor Pattern
A single-threaded queue, all IO shoved into kernel thread, rejoin single-threaded reactor queue when it's done.
http://alexmatchneer.com/blog/2014/04/21/daily-journal
Python's Reactor pattern solution
Twisted
http://alexmatchneer.com/blog/2014/04/21/daily-journal
Ruby's Reactor pattern solution
EventMachine
http://alexmatchneer.com/blog/2014/04/21/daily-journal
Java's Reactor pattern solution
JBoss_Netty
http://alexmatchneer.com/blog/2014/04/21/daily-journal
PHP's Reactor pattern solution
Non-existent
http://alexmatchneer.com/blog/2014/04/21/daily-journal
Ruby library of convenience classes to untangle evented code, allowing you to write code in a non-callback-y manner.
em-synchrony (https://github.com/igrigorik/em-synchrony)
http://alexmatchneer.com/blog/2014/04/21/daily-journal
OSS version of non-blocking (async) Ruby web server powering PostRank. Uses Ruby 1.9 fibers to de-callback-ify your code
Goliath (http://postrank-labs.github.io/goliath/)
http://alexmatchneer.com/blog/2014/04/21/daily-journal
Nginx, Beanstalkd, EventMachine, Twisted, Node.js are all examples of servers that embrace this pattern
Reactor pattern (http://www.igvita.com/2010/03/22/untangling-evented-code-with-ruby-fibers/)
http://alexmatchneer.com/blog/2014/04/21/daily-journal
What word describes the act of interrupting a task without its cooperation? How does this term apply to the various concurrency models?
Preemption. Threads can be pre-empted (except user-space threads). Fibers cannot.
http://alexmatchneer.com/blog/2014/04/21/daily-journal
What is `ignoredModules` useful for in the `broccoli-es6-concatenator` plugin?
It prevents a file from being transpiled, and basically marks a module as something that'll be implemented later
http://alexmatchneer.com/blog/2014/04/28/daily-journal
Why explicitly set constructor when creating a JS subclass?
Because otherwise constructor will refer to parent class constructor
http://alexmatchneer.com/blog/2014/04/26/daily-journal
RSA
Encryption key is public, decryption secret. Used for generating symmetric key in TLS
http://alexmatchneer.com/blog/2014/05/01/daily-journal-2
Query param for telling QUnit to grep module names
filter=wat
http://alexmatchneer.com/blog/2014/05/01/daily-journal-2
denormalize
Adding duplication/redundancy to a system, e.g. storing a person's first name in multiple tables, often for the purpose of optimization
http://alexmatchneer.com/blog/2014/05/01/daily-journal
quick way to stub out a Ruby method so that it accepts any number of args
def meth(*args)
http://alexmatchneer.com/blog/2014/05/01/daily-journal
Fight nils by using this Hash/Array accessor instead
Hash#fetch or Array#fetch (note that there is no Enumerable#fetch)
http://alexmatchneer.com/blog/2014/05/01/daily-journal
Command to change directories, saving the current location
pushd /some/place; popd
http://alexmatchneer.com/blog/2014/05/01/daily-journal
Vim: surround a word in ']'
vsiw]
http://alexmatchneer.com/blog/2014/05/04/daily-journal
Vim: surround a chunk word in ']'
vsiW]
http://alexmatchneer.com/blog/2014/05/04/daily-journal
Vim: change surrounding ' to "
cs"'
http://alexmatchneer.com/blog/2014/05/04/daily-journal
Vim: delete surrounding "
ds"
http://alexmatchneer.com/blog/2014/05/04/daily-journal
Vim: wrap line in parens
yss(
http://alexmatchneer.com/blog/2014/05/04/daily-journal
Design principles: How can TDA and SRP conflict?
Either you stuff all the things that the User class can handle in user domain-specific terms (which breaks Single Responsibility Principle), or you add additional classes that know enough about User to ask it for property and values and make transformations/decisions based on that knowledge (which breaks Tell Don't Ask)
http://alexmatchneer.com/blog/2014/05/04/daily-journal
Quick way to mark an rspec test as pending
change `it` to `xit`
http://alexmatchneer.com/blog/2014/05/04/daily-journal
Cisgender
aka cissexual; a person whose gender matches that assigned at birth
http://alexmatchneer.com/blog/2014/05/04/daily-journal
HAL
Hypermedia Application Language; missing some features that make json api rad
http://alexmatchneer.com/blog/2014/05/04/daily-journal
=== in Ruby
subsumption or case equality operator; overridden by context-specific subclasses. Module#=== will return true if passed an object that has included that module
http://alexmatchneer.com/blog/2014/05/12/daily-journal
Uniform Type Identifiers
Apple's system for uniquely describing a type, using reverse domain name notation
http://alexmatchneer.com/blog/2014/05/15/daily-journal
Reverse domain name notation
e.g. com.alexmatchneer.StringBuffer; allows for more sensible sorting
http://alexmatchneer.com/blog/2014/05/15/daily-journal
LevelDB
library (as opposed to database server) that provides kv storage; can wrap in an app via C++ API
http://alexmatchneer.com/blog/2014/05/15/daily-journal
Shift V in Vim
Visual line mode; select whole lines
http://alexmatchneer.com/blog/2014/05/15/daily-journal
GlobalId
ActiveModel GlobalID: a way of serializing a model into a string so that it can be looked up by some later process
http://alexmatchneer.com/blog/2014/05/19/daily-journal
var a = 'A'; a.foo='wat';
This doesn't work in use strict, breaks in Safari
http://alexmatchneer.com/blog/2014/05/19/daily-journal
What's the difference between array and reduce computed properties?
Reduce CPs can reduce to anything you want, either a single value or an array. Array CPs are instances of reduce CPs that always return arrays.
http://alexmatchneer.com/blog/2014/05/22/daily-journal
Variable Timing
Messaging, as opposed to synchronous communication (e.g. RPC/RPI), doesn't peg the sender's performance time on the receiver's performance time, e.g. a sender isn't just as fast as the receiver
http://alexmatchneer.com/blog/2014/05/24/daily-journal
Throttling
RPC/RPI can overload a receiver if too many come in at the same time; messaging involves queues == throttling
http://alexmatchneer.com/blog/2014/05/24/daily-journal
Reliable Communication
Storing the message means retrying, handling failures.
http://alexmatchneer.com/blog/2014/05/24/daily-journal
Disconnected Operation
Offline apps can use messaging to queue data to sync when reconnected
http://alexmatchneer.com/blog/2014/05/24/daily-journal
Mediation
Mediator pattern from GoF; if an app gets disconnected from others, it only needs to reconnect to the single messaging system
http://alexmatchneer.com/blog/2014/05/24/daily-journal
Thread Management
Because async, threads no longer blocked on a response (unless they want / need to be)
http://alexmatchneer.com/blog/2014/05/24/daily-journal
CORBA
Common Object Request Broker Architecture: a platform-neutral RPC spec
http://alexmatchneer.com/blog/2014/05/24/daily-journal
n-tier
(multi-tier): client-server architecture in which presentation, application processing, and data management are physically separated; 3-tier is most common; some similarities w MVC? Also, n-tier is distribution, not integration.
http://alexmatchneer.com/blog/2014/05/24/daily-journal
git predecessor
BitKeeper, no longer free of charge in 2005.
http://alexmatchneer.com/blog/2014/05/24/daily-journal
git checksum
SHA-1 hash
http://alexmatchneer.com/blog/2014/05/24/daily-journal
`git add` will store things in...
.git/objects
http://alexmatchneer.com/blog/2014/05/24/daily-journal
3 locations for git config
/etc/gitconfig, ~/.gitconfig, .git/config
http://alexmatchneer.com/blog/2014/05/24/daily-journal
git bakes this into your commits
user.name and user.email
http://alexmatchneer.com/blog/2014/05/24/daily-journal
git config a.b.c lol
puts [a "b"]
c = lol in .git/config
http://alexmatchneer.com/blog/2014/05/24/daily-journal
what config is totally necessary to use git?
user.name and user.email
http://alexmatchneer.com/blog/2014/05/24/daily-journal
git globs files
so you can do git add log/\*.log
http://alexmatchneer.com/blog/2014/05/24/daily-journal
git log with diff
git log -p (the p stands for patch)
http://alexmatchneer.com/blog/2014/05/24/daily-journal
git log limit to 2
git log -2
http://alexmatchneer.com/blog/2014/05/24/daily-journal
difference b/w git author and committer
author wrote the code, committer merged or applied to repo
http://alexmatchneer.com/blog/2014/05/24/daily-journal
can only push to this kind of git url
SSH URL, e.g. git@github.com:machty/ember.js
http://alexmatchneer.com/blog/2014/05/24/daily-journal
command to display lots of live info about a remote
git remote show origin
http://alexmatchneer.com/blog/2014/05/24/daily-journal
difference between lightweight and annotated tags
lightweight just points to a commit; annotated are full git objects, checksummed, contain tagger name, message, can be GPG (GNU Privacy Guard) signed
http://alexmatchneer.com/blog/2014/05/24/daily-journal
how to annotate tag
git tag -a v1.4 -m lol
http://alexmatchneer.com/blog/2014/05/24/daily-journal
command to inspect a tag for more info
git show tagname
http://alexmatchneer.com/blog/2014/05/24/daily-journal
GPG signed tag
git tag -s v3.0 -m haha
http://alexmatchneer.com/blog/2014/05/24/daily-journal
tag previous commit
git tag v.retro shortsha
http://alexmatchneer.com/blog/2014/05/24/daily-journal
How many chars is a short sha?
any number of chars so long as it can be matched to a longer one
http://alexmatchneer.com/blog/2014/05/24/daily-journal
how to push a single tag?
git push tagname
http://alexmatchneer.com/blog/2014/05/24/daily-journal
how to add git auto complete
you need bash, source gitrepo/contrib/completion/completion-something.bash
http://alexmatchneer.com/blog/2014/05/24/daily-journal
shorthand for declaring a git alias
git config --global alias.something 'reset --HEAD'
http://alexmatchneer.com/blog/2014/05/24/daily-journal
what's in a git commit?
pointer to snapshot, author, message, 0+ pointer to parent commits
http://alexmatchneer.com/blog/2014/05/24/daily-journal
HEAD
pointer to the branch you're currently on
http://alexmatchneer.com/blog/2014/05/24/daily-journal
When can you fast forward?
When the current branch head is an ancestor of the named commit. You're literally just moving a pointer.
http://alexmatchneer.com/blog/2014/05/24/daily-journal
Upstream
The originator of the data, which flowed to you at some point, e.g. when you cloned a repo, or you created a branch.
http://alexmatchneer.com/blog/2014/05/24/daily-journal
What are the 3 components of a 3-way-merge?
Common ancestor, current HEAD, and to-be-merged branch.
http://alexmatchneer.com/blog/2014/05/24/daily-journal
What's unique about a merge commit?
It has more than one parent.
http://alexmatchneer.com/blog/2014/05/24/daily-journal
show all branches and last commit for each
git branch -v
http://alexmatchneer.com/blog/2014/05/24/daily-journal
Show merged / unmerged branches
git branch --merged ; git branch --no-merged
http://alexmatchneer.com/blog/2014/05/24/daily-journal
git push origin master expand to...
git push origin refs/heads/master:refs/heads/master
http://alexmatchneer.com/blog/2014/05/24/daily-journal
command to create a new branch starting off of another one
git checkout -b newbranch existingbranch
http://alexmatchneer.com/blog/2014/05/24/daily-journal
`git branch -d branch to delete` will yell at you under this circumstance
it's not merged into the current branch
http://alexmatchneer.com/blog/2014/05/24/daily-journal
what happens if you do `git checkout origin/some-remote-branch`?
Detached head state. To create a tracking branch, do `git checkout localbranch origin/some-remote-branch`
http://alexmatchneer.com/blog/2014/05/24/daily-journal
tracking branch
a local branch that have a direct relationship to a remote branch; `git push` and `git pull` will go to the tracking branch
http://alexmatchneer.com/blog/2014/05/24/daily-journal
another way to write `git checkout foo origin/foo`
`git checkout --track origin/foo`; creates local foo tracking origin/foo
http://alexmatchneer.com/blog/2014/05/24/daily-journal
Delete remote branch foo
git push origin :foo; remember: `git push origin [localbranch]:[remotebranch]`
http://alexmatchneer.com/blog/2014/05/24/daily-journal
dog-ear
bend a page to make it easily findable later
http://alexmatchneer.com/blog/2014/05/24/daily-journal
The rule for when _not_ to rebase
Don't rebase commits that you've pushed to a public repo
http://alexmatchneer.com/blog/2014/05/24/daily-journal
difference b/w `git clone /path/to/repo` and `git clone file:///path/to/repo`
`file:///` uses the remote file transfer stuff that it would use for anything remote, whereas direct path directly copies and uses hard links and what not; `file:///` gives you a more pristine copy, less junk
http://alexmatchneer.com/blog/2014/05/24/daily-journal
limitation of SSH repo access
no anonymous access, possibly bad for open source
http://alexmatchneer.com/blog/2014/05/24/daily-journal
git protocol
daemon packaged w git but w no authentication; no pushing (in general, since it opens to the door to anyone)
http://alexmatchneer.com/blog/2014/05/24/daily-journal
Speed of git protocol relative to SSH
way faster since no authentication and encryption overhead
http://alexmatchneer.com/blog/2014/05/24/daily-journal
solution to SSH non-anonymity and git non-auth
configure server to use both; git protocol for cloner/pullerss, ssh for repo write access homies
http://alexmatchneer.com/blog/2014/05/24/daily-journal
git command to init a bare repo in folder foo
`git init --bare foo`
http://alexmatchneer.com/blog/2014/05/24/daily-journal
after creating a bare repo and running http server, git clone fails. Why? How to fix?
HTTP hosting implies you have static files to serve, but these don't magically exist by default. They can be generated via the post-update.sample hook, which runs `git update-server-info`. You can either manually run this or enable the hook and push to it once (not via HTTP)
http://alexmatchneer.com/blog/2014/05/24/daily-journal
start a ruby server hosting files in this directory
`ruby -run -e httpd . -p 5001`
http://alexmatchneer.com/blog/2014/05/24/daily-journal
API for growl-esque notifications in websites
Web Notifications
http://alexmatchneer.com/blog/2014/05/25/daily-journal
Conway's law
Organizations which design systems are constrained to produce designs which are copies of the communication structures of these organizations
http://alexmatchneer.com/blog/2014/05/25/daily-journal
Information Portal
Aggregation of multiple sources of information into a single display
http://alexmatchneer.com/blog/2014/05/25/daily-journal
Data Replication
e.g. user's address may be redundantly stored in many places, but needs to be updated if they change it in one, which requires integration
http://alexmatchneer.com/blog/2014/05/25/daily-journal
Shared Business Function
Multiple components need to perform the same operation; integration means exposing this one thing as an integrated service
http://alexmatchneer.com/blog/2014/05/25/daily-journal
Service-Oriented Architecture
a Service is well-defined function that responds to requests from Service Consumers. 1. Needs a service directory for discovery. 2. Each service needs to describe its API.
http://alexmatchneer.com/blog/2014/05/25/daily-journal
Distributed Business Process
Mediator; one component handles the coordination of a single business process among many other components.
http://alexmatchneer.com/blog/2014/05/25/daily-journal
Business-to-business integration
Basically, all the above, but not restricted to within a single enterprise (business). So you might use a 3rd party company to calculate shipping rates
http://alexmatchneer.com/blog/2014/05/25/daily-journal
Loose coupling tradeoff
The more assumptions can be made, the more efficient the communication, but the more brittle in response to change or interruptions
http://alexmatchneer.com/blog/2014/05/25/daily-journal
Making remote invocations feel like local calls
RPC/RMI
http://alexmatchneer.com/blog/2014/05/25/daily-journal
RPC/RMI difference?
RPC is C-based, not necessarily object oriented. RMI is method / OO-based
http://alexmatchneer.com/blog/2014/05/25/daily-journal
RPC/RMI Advantage
1. Local invocation well-established and familar. 2. Defer the design decision to make a procedure call remote or local.
http://alexmatchneer.com/blog/2014/05/25/daily-journal
RPC/RMI Fail
Waldo et al in 1994 reminded us that object interaction in distributed system fundamentally different; so many things can fail/mismatch, how to recover, what if args mismatch, etc.
http://alexmatchneer.com/blog/2014/05/25/daily-journal
EIP: Problems w just transmitting TCP/IP bytes to request deposit
1. converting integer bits has incompatibility w different number representations, 2. big-ending / little-endian. 3. brittle if destination changes, or needs to go to multiple destinations. 4. TCP/IP is connection-oriented, so both machines must be present at the same time. 5. Data format changes requires updating both server and client
http://alexmatchneer.com/blog/2014/05/25/daily-journal
EIP: Solutions to TCP
1. XML for self-description and platform-independence. 2. Use named channel rather than hard-wired hostname. 3. Queue up sent messages so that receiver doesn't need to be online to send messages. 4. Channel can convert messages in case either side changes.
http://alexmatchneer.com/blog/2014/05/25/daily-journal
MOM
Message-oriented middleware, handles sending and receiving messages b/w distributed systems
http://alexmatchneer.com/blog/2014/05/25/daily-journal
Sneakernet
Transfer of data by physically moving the stored data from one place to another, because you wear sneakers to get it from a to b.
http://alexmatchneer.com/blog/2014/05/25/daily-journal
EIP: Channel
How data gets from A to B, e.g. TCP/IP connections, shared file, shared DB, floppy disk + Sneakernet
http://alexmatchneer.com/blog/2014/05/25/daily-journal
EIP: Message
snippet of data with agreed-upon meaning to both sides; format may be different, but intent/meaning is the same
http://alexmatchneer.com/blog/2014/05/25/daily-journal
EIP: Translation
translate FIRST_NAME and LAST_NAME fields to Customer_Name, etc.
http://alexmatchneer.com/blog/2014/05/25/daily-journal
EIP: alternative to having customer service broadcast address changes to everyone else
Have a routing component (e.g. a message broker) split the message to many components
http://alexmatchneer.com/blog/2014/05/25/daily-journal
EIP: the thing that monitors what's going on inside the entire system
Systems management; monitors flow, makes sure all apps and components up and running, reports errors to central location
http://alexmatchneer.com/blog/2014/05/25/daily-journal
EIP: message endpoint
connects a system explicitly to an integration solution; useful for legacy code
http://alexmatchneer.com/blog/2014/05/25/daily-journal
Process Manager (two responsibilities)
1. storing data b/w messages (inside a 'process instance'). 2. Keeping track of progress and determining the next step (by using a 'process template')
http://alexmatchneer.com/blog/2014/05/25/daily-journal
React and Object.observe
At odds, because the re-render everything upon change doesn't take advantage of the fact that Object.observe is a thing that will tell us exactly what changed and what needs to be re-rendered
http://alexmatchneer.com/blog/2014/05/25/daily-journal
NIH (also, what's the antonym?)
Not invented here; antonynm: Proudly Found Elsewhere
http://alexmatchneer.com/blog/2014/05/25/daily-journal
4 Application Integration Options
1. File transfer. 2. Shared Database. 3. Remote Procedure Invocation. 4. Messaging
http://alexmatchneer.com/blog/2014/05/26/daily-journal
EIP: freshness
File-based integrations have staleness considerations; e.g. process address change at night, but a shipment happened that day after the request. Also, the longer the length of time to sync, the more conflicts can sneak in.
http://alexmatchneer.com/blog/2014/05/26/daily-journal
File Transfer relative to Messaging
High-frequency file transfer is like messaging, but way inefficient, error prone, etc. Similarities include storage, fire and forget, etc.
http://alexmatchneer.com/blog/2014/05/26/daily-journal
Semantic dissonance
aka conceptual impedance mismatch e.g. two very similar seeming applications have subtly different specific definitions of a concept that can result in differing implementations
http://alexmatchneer.com/blog/2014/05/26/daily-journal
Political considerations of shared DB
Challenging/delaying to conform multiple applications to a single schema, irresistible pressure to split
http://alexmatchneer.com/blog/2014/05/26/daily-journal
Shared DB limitations
External packages have their own schemas which also might change b/w versions; company merges occur later, thwarting the previously consolidated plan.
http://alexmatchneer.com/blog/2014/05/26/daily-journal
When to use RPI?
To integrate application's functionality rather than data.
http://alexmatchneer.com/blog/2014/05/26/daily-journal
WSDL
Web Services Description Language; XML-based description of a service: expected params, structure of data produced, error format
http://alexmatchneer.com/blog/2014/05/26/daily-journal
UDDI
Universal Description, Discovery, and Integration; dictionary of WSDLs
http://alexmatchneer.com/blog/2014/05/26/daily-journal
SOAP
simple object access protocol; XML-based protocol for structuring messages to web services
http://alexmatchneer.com/blog/2014/05/26/daily-journal
List of RPC implementers
CORBA, COM, .NET Remoting, Java RMI
http://alexmatchneer.com/blog/2014/05/26/daily-journal
RPI's familiarity w normal method invocations has this weakness
Familiarity conceals major performance/reliability implications
http://alexmatchneer.com/blog/2014/05/26/daily-journal
RPI relative to Messaging suffers from ______
Tight coupling; interfaces are designed for specific applications, not resilient to change
http://alexmatchneer.com/blog/2014/05/26/daily-journal
Cohesion / Adhesion
(in regards to working w remote applications) cohesion is local work and adhesion is remote queries
http://alexmatchneer.com/blog/2014/05/26/daily-journal
to avoid or not to avoid semantic dissonance
a corporate merger or necessary integration w 3rd party software is going to require it anyway, so best to address the issue w messaging rather than design applications that avoid it
http://alexmatchneer.com/blog/2014/05/26/daily-journal
How do you transfer packets of data?
Sender sends a Message via a Message Channel that connects sender and receiver
http://alexmatchneer.com/blog/2014/05/26/daily-journal
How do you know where to send the data?
Sender can send to Message Router, and it can decide
http://alexmatchneer.com/blog/2014/05/26/daily-journal
How do you know what format of data to send?
If sender/receiver can't agree, sender can send to Message Translator, which translates and forwards
http://alexmatchneer.com/blog/2014/05/26/daily-journal
If you're an app dev, how do you connect your app to messaging system?
Implement Message Endpoints to perform sending and receiving
http://alexmatchneer.com/blog/2014/05/26/daily-journal
Message Channel
Virtual pipe that connects sender and receiver; newly installed messaging systems typically don't contain any; up to you to define for application's need
http://alexmatchneer.com/blog/2014/05/26/daily-journal
Pipes and Filters
Any validations/transformations/etc that happen b/w sender and receiver
http://alexmatchneer.com/blog/2014/05/26/daily-journal
Endpoints (messaging)
Layer of code in an application that touches both app and messaging code; a bridge between worlds
http://alexmatchneer.com/blog/2014/05/26/daily-journal
Message consists of N parts:
1. Header (origin, destination, describes data). 2. Body, generally ignored by system and simply transmitted onward
http://alexmatchneer.com/blog/2014/05/26/daily-journal
HEAD in git
a reference to the currently checked-out commit
http://alexmatchneer.com/blog/2014/05/26/daily-journal
Abstract Pipe
an interface for IO (such as used by filters) that could either be local memory or a full on Message Channel
http://alexmatchneer.com/blog/2014/05/26/daily-journal
Potential downside of Filters and Pipes
Each pipe is a connector between filters, and if implemented via a Message Channel could consume much memory and CPU cycles for storage, translation, etc
http://alexmatchneer.com/blog/2014/05/26/daily-journal
Throughput and Filters
Filters with their own thread/process and connected via async cross-process/cross-thread channels can achieve higher throughput, pipeline style
http://alexmatchneer.com/blog/2014/05/26/daily-journal
Parallelize
(vs. sequential); add more instances of a some process working at the same time; multiply process X by N so that as input comes in, one of the N processes can process it
http://alexmatchneer.com/blog/2014/05/26/daily-journal
Filter overloading
Filter can mean 1. a step in a process that applies some logic / transformation, or 2. something that removes data from a set based on some criteria
http://alexmatchneer.com/blog/2014/05/26/daily-journal
predictive / reactive routing
Message Router knows destinations vs Pub Sub channel consumers choosing themselves
http://alexmatchneer.com/blog/2014/05/26/daily-journal
Failover
Automatic switching to redundant system in case of failure
http://alexmatchneer.com/blog/2014/05/26/daily-journal
Content-based routing
Routing based on message content
http://alexmatchneer.com/blog/2014/05/26/daily-journal
Context-based routing
Routing based on environmental conditions, e.g. load balancing, etc.
http://alexmatchneer.com/blog/2014/05/26/daily-journal
Message Channels and load-balancing
Rather than using a router for load-balancing, you might already have load balancing if Competiting Consumers are pulling messages off of a channel as fast as they can; tradeoff is that Message Routers have more information to make this decision
http://alexmatchneer.com/blog/2014/05/26/daily-journal
Round robin
maintaining a list of output channels (could be ip addresses) and cycling through them in some manner
http://alexmatchneer.com/blog/2014/05/26/daily-journal
Live update a router
Using a Control Bus
http://alexmatchneer.com/blog/2014/05/26/daily-journal
Integration equivalent of GoF Mediator
Message Broker
http://alexmatchneer.com/blog/2014/05/26/daily-journal
HTTP
Hypertext Transfer Protocol; application protocol
http://alexmatchneer.com/blog/2014/05/26/daily-journal
Application Protocol
Sit on top of transport layer. Controls message body format to do application-specific things without having to be concerned about TCP/IP considerations, etc
http://alexmatchneer.com/blog/2014/05/26/daily-journal
HTTP is this kind of protocol
application-layer
http://alexmatchneer.com/blog/2014/05/26/daily-journal
Internet protocol suite
More commonly known as TCP/IP. Transmission Control Protocol + Internet Protocol
http://alexmatchneer.com/blog/2014/05/26/daily-journal
SOAP and caching
SOAP is shitty at caching because resources are not a first class concept like they are in REST, which deprives of verbs
http://alexmatchneer.com/blog/2014/05/26/daily-journal
transport vs transfer
The dumb/blind carrying of data from A to B (transport) vs (transfer) the consideration of message content / what's being sent to effectively process the transfer. HTTP is transfer, evidence of this is all its verbs and status codes.
http://alexmatchneer.com/blog/2014/05/26/daily-journal
XSL
Extensible Stylesheet Language: family of languages to transform and render XML docs (XSLT, XSL-FO, XML Path)
http://alexmatchneer.com/blog/2014/05/26/daily-journal
ActiveX
Microsoft framework that adapts earlier Component Object Model
http://alexmatchneer.com/blog/2014/05/26/daily-journal
Create an XML doc in JS
document.implement.createDocument()
http://alexmatchneer.com/blog/2014/05/26/daily-journal
SGML
Standard Generalized Markup Language; derivatives include XML and HTML
http://alexmatchneer.com/blog/2014/05/26/daily-journal
XML rel to SGML
subset of features to allow for easier parsing among other things
http://alexmatchneer.com/blog/2014/05/26/daily-journal
DOMString
UTF-16 string; JavaScript already uses these, so a DOMString is just String. (there is no DOMString class in JS)
http://alexmatchneer.com/blog/2014/05/26/daily-journal
XML Namespace
A URI, e.g. URL for the author's webpage, e.g. http://www.w3.org/1999/xhtml. The URI/URL doesn't need content, just uniquely refers to that spec
http://alexmatchneer.com/blog/2014/05/26/daily-journal
set an Element's attribute in js
element.setAttribute('onclick', alert('wat'))
http://alexmatchneer.com/blog/2014/05/26/daily-journal
Difference b/w Node and Element
Nodes could be text nodes. Just nodes in trees. Elements are named, can have classes and IDs, etc. An Element IS a Node.
http://alexmatchneer.com/blog/2014/05/26/daily-journal
Inline event and translation
onclick='alert("****")' becomes anonymous fn that gets `call`'d with clicked element as the context
http://alexmatchneer.com/blog/2014/05/26/daily-journal
DOM Level 0 events
inline and traditional; only single handlers supported
http://alexmatchneer.com/blog/2014/05/26/daily-journal
Standardizes ECMAScript
TC39
http://alexmatchneer.com/blog/2014/05/26/daily-journal
Standardizes Web Architectures
W3C TAG (Technical Architecture Group)
http://alexmatchneer.com/blog/2014/05/26/daily-journal
Mr. Promises is a member of ...
W3C Tag
http://alexmatchneer.com/blog/2014/05/26/daily-journal
Rick Waldron is member of ...
W3C Tag
http://alexmatchneer.com/blog/2014/05/26/daily-journal
Yehuda Katz is member of ...
TC39 and W3C TAG
http://alexmatchneer.com/blog/2014/05/26/daily-journal
iOS click events
don't bubble up to document, unless 1. native button/link clicked, 2. handler explicitly added, 3. cursor: pointer (which prevents copy/paste from working as expected)
http://alexmatchneer.com/blog/2014/05/26/daily-journal
Start of xml doc
<?xml version="1.0" encoding="UTF-8"?>
http://alexmatchneer.com/blog/2014/05/26/daily-journal
XSLT is a member of this family of languages
XSL, extensible stylesheet language
http://alexmatchneer.com/blog/2014/05/26/daily-journal
XSLT
Extensible stylesheet language transformations
http://alexmatchneer.com/blog/2014/05/26/daily-journal
Message Endpoint
code custom to application and messaging system's API
http://alexmatchneer.com/blog/2014/05/28/daily-journal
Magnet
a url hashed by the content of the file it points to
http://alexmatchneer.com/blog/2014/05/28/daily-journal
btih
BitTorrent Info Hash; SHA1 of the bitorrent metadata
http://alexmatchneer.com/blog/2014/05/28/daily-journal
When do CPs get overridden?
When they're get only (CP fns have <= 1 arity)
http://alexmatchneer.com/blog/2014/05/28/daily-journal
Why is Ember.computed.reads in the docs
Because defeaturify doesn't run before the API docs are generated (maybe that'll change?)
http://alexmatchneer.com/blog/2014/05/28/daily-journal
Difference b/w computed.defaultTo and the CP severing behavior
defaultTo isn't a binding; it only retrieves the target defaultValue when the cur value is null
http://alexmatchneer.com/blog/2014/05/28/daily-journal
Coneheads antagonist
Michael McKean
http://alexmatchneer.com/blog/2014/05/28/daily-journal
Thread.current[:a] = 5
Store a=5 in Fiber-local var.
http://alexmatchneer.com/blog/2014/05/28/daily-journal
IEEE
Institute of Electrical and Electronics Engineers; not-for-profit corporation, specified telephony, networking; produces 30% of world's literature on EE and CS
http://alexmatchneer.com/blog/2014/05/28/daily-journal
IEEE 802
Family of standards dealing with LAN and metro area networks
http://alexmatchneer.com/blog/2014/05/28/daily-journal
WLAN standard
IEEE 802.11; media access control (MAC) and physical layer (PHY)
http://alexmatchneer.com/blog/2014/05/28/daily-journal
IEEE 1003
POSIX
http://alexmatchneer.com/blog/2014/05/28/daily-journal
POSIX
Portable Operating System Interface (1988): family of standards specified by IEEE for maintaining compat b/w operating systems. POSIX defines API, command line shells and utilities, e.g. awk, echo, ed, threading lib
http://alexmatchneer.com/blog/2014/05/28/daily-journal
Holder of UNIX trademark
Open Group
http://alexmatchneer.com/blog/2014/05/28/daily-journal
Linux and POSIX
TODO
http://alexmatchneer.com/blog/2014/05/28/daily-journal
What is Linux?
It's just a kernel; Linux distros are Linux kernel + lots of other utilities, mostly from GNU
http://alexmatchneer.com/blog/2014/05/28/daily-journal
Solaris
Unix operating system originally by Sun, now by Oracle
http://alexmatchneer.com/blog/2014/05/28/daily-journal
What does it mean for an OS to be considered a 'Unix OS'
http://alexmatchneer.com/blog/2014/05/28/daily-journal
A free UNIX OS
OpenSolaris
http://alexmatchneer.com/blog/2014/05/28/daily-journal
The X in OS X
Signifies relationship to uniX
http://alexmatchneer.com/blog/2014/05/28/daily-journal
Logivision POS / LPOS users
Union Market, Gourmet Garage
http://alexmatchneer.com/blog/2014/05/28/daily-journal
ruby: break x
force the method that yielded me to return x
http://alexmatchneer.com/blog/2014/05/28/daily-journal
RSS (memory)
Resident set size: portion of process's memory that is held in RAM, as opposed to swap or filesystem
http://alexmatchneer.com/blog/2014/05/28/daily-journal
Enumereable Lazy
Ruby 2.0's ability to lazy eval what might be an infinite sequence; not eval'd until something like `to_a` called
http://alexmatchneer.com/blog/2014/05/28/daily-journal
Why couldn't Ruby pre 2.0 use OS COW semantics while forking?
Because setting FL_MARK was rightfully interpreted as a write; bitmap marking got around this
http://alexmatchneer.com/blog/2014/05/28/daily-journal
Stoma
Smoker hole cut
META_DESC
The ES5 descriptor for the meta property on an object; non-enumerable and non-configurable
http://alexmatchneer.com/blog/2014/05/31/ember-meta
EMPTY_META
The read-only, empty meta object returned by `meta(obj, false)` when obj has no meta already
http://alexmatchneer.com/blog/2014/05/31/ember-meta
How do I find all the properties that have property as a dep key?
obj.meta.deps[changingPropName]
http://alexmatchneer.com/blog/2014/05/31/ember-meta
What causes the forgetful consumption behavior of lazy observers?
didChange on CP removes dependentKeys
http://alexmatchneer.com/blog/2014/05/31/ember-meta
If CP#didChange removes dependent keys, who adds it back in template situations?
The view that was installed will call get() on that CP, and .get() on a cacheable property will call addDependentKeys
http://alexmatchneer.com/blog/2014/05/31/ember-meta
Why is it that an observer can be properly set up, but it doesn't look like it when you inspect the containing object?
It might be declared on the prototype, which doesn't show up in Chrome by default. defineProperty on the obj itself would reveal `listeners`, but rest assured in the prototype, it exists
http://alexmatchneer.com/blog/2014/05/31/ember-meta
Observers aren't lazy when observing static values, but only CPs... why?
Static values have different rules... really the lazy CP behavior kicks in when you have Observer -> CP -> Depkey and nothing has consumed to CP, hence when the depkey changes, no change event fires unless someone has consumed cp
http://alexmatchneer.com/blog/2014/05/31/ember-meta
Where do file descriptors live for subprocess file-y operator
/tmp/fd
http://alexmatchneer.com/blog/2014/06/29/daily-journal
Run a command, capture its output in a file descriptor
<(echo wat)
http://alexmatchneer.com/blog/2014/06/29/daily-journal
What happens if i just this command: `<(echo 'wat')`
Permission denied, because <(echo 'wat') evaluates to a tmp/fd/3 path and is interpreted as attempted to execute a file, but it doesn't have these permissions
http://alexmatchneer.com/blog/2014/06/29/daily-journal
`ps`, but with hierarchy
`pstree`
http://alexmatchneer.com/blog/2014/06/29/daily-journal
http://alexmatchneer.com/blog/2014/06/29/daily-journal
Capacity equation (bandwidth and signal-noise ratio)
C (bits per sec) = BW (Hz) * log2(1 + S/N (watts))
http://alexmatchneer.com/blog/2014/07/05/daily-journal
Total capacity (bits per sec) of wireless transitions is proportional to...
Bandwidth (Hz)
http://alexmatchneer.com/blog/2014/07/05/daily-journal
thrashing (vm)
degradation of performance due to too much swapping/paging
http://alexmatchneer.com/blog/2014/07/05/daily-journal
'zones' w.r.t Cocoa and alloc
regions of memory; alloc'ing in the same zone may prevent virtual memory thrashing
http://alexmatchneer.com/blog/2014/07/05/daily-journal
The two implicit vars provided when running a method in Objective C
`self` and `_cmd`; `_cmd` is the message sent
http://alexmatchneer.com/blog/2014/07/05/daily-journal
Pre-ARC approach for preventing thrashing in allocated Cocoa objects
allocWithZone and -zone
http://alexmatchneer.com/blog/2014/07/05/daily-journal
Cocoa: when do you use `finalize`?
When you're using ARC and you have things like legacy allocated objects to release or file handles to close
http://alexmatchneer.com/blog/2014/07/05/daily-journal
Hibernia Express
London-New York underground cable for financial institutions; shave 5ms latency off, $80M per millisecond saved
http://alexmatchneer.com/blog/2014/07/08/daily-journal
Four components of latency for a typical router
Propagation delay, Transmission Delay, Processing Delay, Queuing Delay
http://alexmatchneer.com/blog/2014/07/08/daily-journal
Propagation delay
Time required to travel from A to B, bounded by speed of light
http://alexmatchneer.com/blog/2014/07/08/daily-journal
Transmission delay
Time required to push all packets onto the link, function of packet length and data rate
http://alexmatchneer.com/blog/2014/07/08/daily-journal
Processing delay
Time to process packet header, check for bit-level errors, and determine destination
http://alexmatchneer.com/blog/2014/07/08/daily-journal
Queuing delay
Time in router queue waiting to be processed
http://alexmatchneer.com/blog/2014/07/08/daily-journal
Bufferbloat
When routers ship with large incoming buffers to prevent packet loss, thus breaking TCP congestion avoidance algos - Jim Gettys 2010
http://alexmatchneer.com/blog/2014/07/08/daily-journal
Refractive index
Ratio of speed of light in vacuum to speed in material. ~1.5 in fiber.
http://alexmatchneer.com/blog/2014/07/08/daily-journal
World circumference propagation time
200 ms
http://alexmatchneer.com/blog/2014/07/08/daily-journal
Last mile latency
Phenomenon that significant latency is introduced due to neighborhood routers / signal aggregators
http://alexmatchneer.com/blog/2014/07/08/daily-journal