I used Ruby and Minitest with my Blink(1) to TDD through this very big Kata. It was fun and a great learning experience. It did a good job of going slowly at first to get the basics and then ramping up. There is much left that I could do here for further practice.
This was a good introduction to Elixir and the Erlang runtime. I got a good feel for the language and also a good look at some of the power of macros and other functional aspects of elixir. We saw how to keep state in a purely functional language by looping infintely on ones self. We saw a widely distributed, fault tolerant Tweet aggregator running on all of our laptops.
Erlangs message passing and mailbox are very interesting.
Emergence: Movement from low-level rules to higher level sophistication
- Examples: Snowflakes, Corral Reefs, Cities (Venice)
- Scaffold, not Structure
In software, I think this shows up in how we either create features that enable our users or create features that force our users into one path. We can create tools that become something bigger than themselves or we can create tools that dictate a certain way of thinking (usually ours).
I noticed this element of emergence in the original Settlers of Catan game. In contrast, the expansion Explorers and Pirates felt very structured and was not nearly as enjoyable.
They use streams for tracking everything. If another system wants to use that data, they just fork the stream for that particular topic. They use "at least once" messaging guarantees with retries to ensure delivery. Custom NSQ open source messaging system with efficient wire protocol.
It was really cool seeing what was possible with clojure in the web. It's a very declarative way of building web pages and APIs. The REST API framework, liberator, looked pretty amazing. It supports the full WEB RTC decision tree for the life cycle of a request.
Basically learned how much crap Matt and Dave had to go through to get Softek started. The speaker had very similar roots, starting small and in consulting, although he still has not made a jump to product development.
The obligatory Jon Skeet talk since I hadn't heard him speak before. Live coding session on building a Tetris game that supports Console, Twitter, Email, and Wpf clients. Showing choices that he made or would make to make the API make sense and the extended clients make sense.
A good talk on Angular.js (a client-side MVVM-like framework like knockout.js). Although it was fairly advanced, it was good to see the power of Angular once you get past the 'Hello World' type application. Important to note that he successfully uses Angular to support IE7+ clients which was a concern for us.
- Making money in gambling is about making choices, yet there is always a weakness in each choice. It's about making the least worse choice, usually based on incomplete information.
- This is also the case in software, whether it's choosing between languages, frameworks, or open source projects.
- The important thing is to analyze failure and dig in to the process rather than just chalk it up as a failure. Gamblers cannot be affected by their mistakes, they have to learn from them.
- In software, we too should be resilient to our mistakes and learn from them rather than be defensive or try to cover them up.
- Played with an Oculus Rift (pretty amazing virtual reality)
- Sat in a Tesla Model S
- This Tesla was part of a presentation using the Tesla API to honk the car on a build failure. The API can do other things like lock the doors or close the windows. Really cool.
- Demos of AR Drones powered by node.js (one that followed a person with a bright green shirt)