Skip to content

Instantly share code, notes, and snippets.

@davekonopka
Created April 13, 2010 15:57
Show Gist options
  • Save davekonopka/364757 to your computer and use it in GitHub Desktop.
Save davekonopka/364757 to your computer and use it in GitHub Desktop.

Philadelphia Emerging Technologies for the Enterprise conference, April 2010

Day 1

Keynote - Bad Code, Craftsmanship, Engineering, and Certification, Bob Martin

  • The only way to go fast is to go well.
  • Keep functions as short, single function as possible
  • Function is small enough when it can't get any smaller
  • Keep argument collection small
  • Avoid booleans arguments, create two functions
  • Strive for simplicity = understandability
  • Create a class when you create a bunch of variables in a function
  • Craftsmanship is not the next big thing, it is the thing
  • Test Driven Development is accepted, move on
    • Like handwashing for surgeons. People fought it. It won.
  • Continuous Integration
  • Pair programming
    • Do it 50 - 60% of the time, spontaneously
    • Cross training built in
  • QA groups exist only because developers produce garbage
    • QA should be writing acceptance tests up front, not after
  • Craftsmanship is not a management decision, it's your decision.
    • Don't ask, do work professionally.

Open source is a commercial enterprise?

  • Risk: Open source could disappear
    • Many projects would survive the sponsoring companying closing shop with community support
  • Risk: Open is a security risk
    • Distribution model puts more eyes on it, shakes out bugs
    • There are gatekeepers that control contributions

Rails 3 / Web 3.0

  • Rails positioned it self by embracing the RESTful nature of the web.
  • Areas of concern: the client
    • disconnected content, partially disconnected content
  • Avoid incremental rendering, stale data is better than no data
  • RESTful, Semantic HTML

Scala @ Twitter

  • Twitter throws things out to see what sticks
  • For person search, they launched one version in three weeks then moved onto iterative improvements
  • Settled on Scala partly because it's cooler than Java

Java Concurrency / Clojure

  • Functions should affect no external change
  • Values are snapshots in time
  • Clojure handles value immutability without much effort

Rockstar developer qualities

  • Balance between humility and pride
  • Awareness of one's own ignorance
  • Questioning "conventional wisdom"
  • The Invisible College
  • Master of tools, being an optimizer not a customizer
  • Discerning technology trends
  • Motivation
  • Knowing when it's time to change jobs
  • Having a non-IT plan B
  • http://ridingthecrest.com

Day 2

Keynote - The Pragmatic Cloud, Michael Coté

  • Ops innovation is held back by change management.
  • Operations as code - scriptability of configuration, deployment, etc
  • Keep it as simple as possible to be able to deploy anywhere.

Mocks

  • TDD is about gradual design and pacing (small, steady steps progress).
  • Testing helps your refine what your software should do.
  • Changes to code requires changes to tests.
  • Mocks force you to consider how your objects will interact.
  • Key point to agile: remove friction from workflow. Fix problems. Work life gets easier.

Semantic Web

  • Connected vs disconnected
  • Data knows about its origin, connection
  • Examples: GetGlue, Twine
  • SQL Data -> RDF
  • Sparql querying language

Cassandra

  • NOSQL = Not Only SQL
  • RDBMS
    • Consistency: all nodes will report the same data at any given time
    • Difficult to scale: scale up, not up
  • CAP - Consistently, availability, partition tolerance (pick 2, ditch 1)
    • RDBMS = CA
    • NOSQL = AP
  • Cassandra
    • = Dynamo + BigTable
    • Column oriented
    • Auto scaling
    • Read repair
    • Location awareness
    • Gossip
      • Nodes randomly connect to cluster to get state update
    • Anti-entropy
      • Uses layered checksums to detect disk corruption
    • Fast reads
      • Mysql 100ms, Cassandra 10ms
    • Super fast writes
  • Cons
    • No JOINs
    • No automatic indices
    • Thrift
  • Applications: logging, batch job output, social network data

CS for Non-CS folks

  • Liskov Substitution Principle
  • Knuth premature optimization dictum
  • Law of Demeter
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment