Blog

More old hand-written notes

Touch Events

  • Events
    • touchstart touchmove touchend touchcancel (vague)
  • IE does it differently
  • "stick with click" reliable
    • really means "activate"
    • sadly slow (300ms)
    • chrome experiment (removing click delay)
  • The event cascade
    • anything but tap
    • single tap
      • IE quirk with mouseout event
      • safari, if a content change occurs on mouseover or mouseout, the rest of the event stack is canceled
  • Separate events
    • no touch-specific focus / blur
    • does every interaction class need its own set of events? "YES"
    • Microsoft suggest merging pointer and touch
    • new set of Microsoft events -ms-touch-action: none
  • Hover
    • hover is an intent, might use later
    • event info works, but coordinates are different
    • use changedTouches
    • not in the MS model

Web components can do that?

  • configuring things with meaningful tags with data though attributes
<x-miley>
<slideshow>
    <img>
</slideshow>
  • Polymer
  • attributes customise <select> behaviour
  • should work with other components
  • change attribute callback for customer elements
  • scoped styles
  • new selectors to style shadow dom root ^ elem, root ^^ elems
  • EVERYTHING is an element

You don't want an object

  • Object
    • messaging & late binding
    • hidden state
    • controllers should not be objects, they're stateless, no need to persist
  • Having 1 user shouldn't limit us to 1 model
    • "we do lots of things they don't care about"
  • most 'models' are modules
  • if modular, they are easy to unit test
  • objects are bad at values
  • streams (like gulp) properties
  • keep an eye on the goal, not what you're working with
  • check your assumptions

Bits Behind JSBin

  • stream create() on JSBin
  • debounced saving
    • "spike.js" send only the panel that is updated
  • Phonegap JSBin app
  • if (res.connection.writable === false)
  • upstart to keep it running
  • need to be careful with how easy it is, don't get lazy

/Reg(exp){2}lained/

/^Reg(exp?|resessions)$/

  • leaverou.github.io/regexplained
  • matches cannot intersect
  • /a{5}/g => "aaaaa"
  • {5,} at least 5
  • {5,8} 5-8 range
  • * => {0,}
  • + => {1,}
  • ? => {0,1}
  • qualifiers are greedy
  • .+? is lazy instead of greedy
  • [] any from
  • a-z for range
  • \w => [a-z0-9A-Z_]
  • \d => [0-9]
  • \s => all whitespace
  • can be used in range
  • /[^\w] => not in range
  • \W = [^\w]
  • \D = [^\d]
  • \S = [^\s]
  • /w(tf|ft)/ wtf or wft
  • () grouping
  • (?: stops it being a capture group (eg $1 or \1)
  • /^$/ beginning and end of string
  • /^$/m beginning and end of line
  • \b => word boundary
  • /a(?=b)/ matches an a followed by a b
  • (?! negative lookahead
  • don't match for matching's sake
  • /('|").+?\1/g' matches a string,\1` is an internal reference
  • Keep It Simple Stupid
  • don't be greedy
  • don't forget anchors
  • be as specific as possible
  • use non-catching groups where possible