Midwest.io: quality over quantity

If you've not heard about it there is a great conference here in Kansas City called Midwest.io. I spent November 9th and 10th getting to hear a lot of really great talks and chatting with a lot of smart people. I recommend you come every year after this one, it's that good. The talks range from low level technical details, such as using Software Transactional Memory, all the way to improving yourself as a developer using the Talmud.

My notes for each of the talks I attended are below. There is a link to each of the talks below the heading. The notes will be fairly short, you should watch the talks. My notes are only here to give you an idea of what I took away from each talk. Maybe they'll help you maybe they won't.

Day One - November 9th

Leagues of Sea and Sky

Video

Cool Bits

  • Used augmented reality via the projector which led to some really cool ways of conveying information
  • Charles Lindberg did not give credit to his manufacturers
  • Government funded prizes for innovation are interesting forms of motivation and corruption

Take Aways

  • Partnership is not about credit
  • Partnership should help and/or strengthen both parties
  • Try to make partnerships, working solo is usually not best

A Gentle Guide to Genetic Algorithms

Video

Cool Bits

  • These are still fun
  • Fitness algorithm is key

Take Aways

  • Genetic algorithm could be good to use when trying maximize a choice
  • Your heuristics matter a lot when defining your algorithm
  • If what your trying to find is a sequence it could be good, (think survival of the fittest)

A Brief History of (Logical) Time

Video

Cool Bits

Take Aways

  • Using normal timestamps in conjunction with logical clocks can help a lot

How to Write a Worthwhile Test

Video

Cool Bits

  • Look into using given, when, then
  • Specifically look at mocha-given
  • Concepts of false negatives and true negatives. False: you had to fix the test only when a test failed. True: your code was actually broken when the test fails.

Take Aways

  • Write small testable chunks of code
  • Consistency is most important
  • Don't strive for small tests, strive for readable tests
  • Always add good useful messages (assertion libraries can help here)
  • Look at how assertions work in testing libraries, not just the syntax of it, but the messages that come out
  • Measure false negatives to see where tests are getting too out of hand

Achievement Unlocked: A Better Path to Language Learning

Cool Bits

  • Interesting idea about using pet project to learn a new programming language
  • MAL -- Make A Lisp

Take Aways

  • When learning a new language try to build something real, you already know

Measuring the Performance of Single Page Web Applications

Video

Cool Bits

  • There is a NavigationTiming API
  • Boomerang exists for measuring performance of frontend
  • Concept of hard (refresh, first landing) vs soft (after single page loads) navigation
  • Can use XHR to get a feel for what's happening

Take Aways

  • Use Boomerang
  • onLoad is no longer reliable for single page application "first load time"

You May Not be a Polyglot, but Your Software Needs to Be

Video

Cool Bits

  • i18n + l10n == g10n
  • Trip Advisor does a great job globalizing content
  • There are differences in meanings of words between Spanish speaking countries (e.g. not a word, but in one means naked)

Take Aways

  • Always write code assuming globalization
  • Know where you need to support (languages like Arabic are really hard, don't invest time if you never need it)
  • Culture matters when choosing colors or phrases for branding
  • Need to have localization experts look over all content, not just words

Day Two - November 10th

Reliable Concurrency Without the Actor Model

Video

Cool Bits

Take Aways

  • STM kind of allows for concurrent access, it rolls back and retries the one out of sync
  • A log to keep track of what has occurred is interesting
  • The model for STM could be applied to a distributed system

Chaos Engineering

Video

Cool Bits

Take Aways

  • Do not assume what a talk is about based on title
  • Works well for decentralized development teams
  • Must always look at entire system, not individual parts
  • Data visualizations of the "health" of a system can be very useful see Intuition Engineering

Securing Your Company's Data: Encryption, Deleting and Other Best Practices

Video

Cool Bits

Take Aways

  • Secure data at rest
  • Only gather data you need

Sparkling Pandas

Video

Cool Bits

Take Aways

  • Sparkling Pandas replaces PySpark
  • Running Python code while running the JVM is not very great for performance

Writing Custom In-browser Tools for Smarter WebApp Development

Video

Cool Bits

Take Aways

  • Building a custom Chrome Dev Tool isn't so bad, could let you make tools that give you application specific info

Telling Stories with Data Visualization

Video

Cool Bits

  • I still like D3
  • Your visualization choice always adds a bias, which isn't necessarily bad, but it is a bias
  • Take a look at Edward Tufte

Take Aways

  • Visualizations tell stories, always start with the story
  • Flow of visualization creation: story -> visualization
  • User's point of view is paramount to telling the right story, and then choosing the right visualization

Talmudic Maxims to Maximize Your Growth as a Developer

Video

Watch this talk! It had some of the best content at the conference. Great job @coderabbi

Cool Bits

Take Aways

  • In software people are most important (users, developers, et al)
  • Don't side project alone, find a buddy
  • Seek out ways to help others
  • Always be coding
  • Consistency is key to growth (if you don't always do something - at least a little - how does it get better?)
  • Avoid fear of: failure, growth, questions, looking dumb
  • Beginning something is often the hardest part