CodeMash 188.8.131.52 marked my 5th time at CodeMash and it was probably my favorite one overall. This was the first year that my family came out for the whole week so my eldest son could attend KidzMash. KidzMash was packed, usually 50+ kids per session.
I enjoyed having my family there, but it did make it more stressful than normal. Some tears here and there, and the baby decided he didn’t care for the hotel room. My normal nights of not much sleep were cut even shorter. BUT - CodeMash comes once a year.
I started off Tuesday with a session on D3. It started a little slow and by the time it got interesting we were just about out of time for the session. I did learn about crossfilter.js, chloropleths, and dc.js. dc.js seems like a useful library to pull in initially, as it provides a DSL for creating d3 graphs. I finished off the day with a chat with @searls and a trip to the waterpark.
Wednesday was React all day. This was an ambitious sesion from @ignu. Initially the plan was to do web and react-native, but by lunch time it was clear we weren’t going to make it through all that. We spent the afternoon mostly on redux and a quick overview of react native in the last hour. I enjoyed the session, again we moved a little slow, but I was comfortable enough with react that I could play around with some other ideas while I waited to move on. Sessions where you can hack a bit are under-rated.
Thursday was a great day! I started out with @codestars working through creating a binary parser in Elixir. This was pretty heavy for 8am, but once my brain woke up, it was super cool. My favorite talk of the conference. Elixir’s pattern matching capabilities made it so the whole parser was mostly defined in the function headers. I’ve written a few of these (in C and java), and I was amazed at how well this worked without resorting to if/else blocks. I then hit a session on go, but it wasn’t really about go in particular, more about splitting off a service (micro isn’t a good description). After that I saw @samjonester, and he filled my brain with the possiblities of types. I’m particularly intrigued by this idea of representing partially constructed objects as different types (like an UnconfirmedCustomer). I think Sam’s observation about these pre-ready state transitions often leading to defensive coding was astute and something I hadn’t really considered before. Next I hit up @luckygirliegirl’s session on emotional intelligence. Christina Aldana is a very engaging speaker. I felt like this was a good reinforcement after my recent dive back into Crucial Conversations. The key take away for me was that you can control how you feel about something.
I grabbed a quick lunch and then jumped into @cc_jonknapp’s session on serverless. I’m fairly experienced with lambda, so this was largely entertaining storytime for me (Jon is always quite good). I liked Jon’s attitudes about serverless: “Serverless is a mindset” - Relying on amazing work by other people to build your own amazing things. I also liked his exploration of both the visible client objectives(provide a search interface for 3rd party data) and all the hidden objectives(no tech team to maintain, unknown load, keeping the code small) that would push you towards building a serverless application. After that I went to @aeden’s session on the v1->v2 API upgrade that Dnsimple went through. It sounded like an interesting slog because they spent a lot of time trying to make it incremental and “right”. My favorite idea from the talk was that @weppos went out and found all the open source projects that used the Dnsimple API. He then authored a pull request for each one to make the upgrade completely painless for the maintainers. This is so smart and allows you to quickly deprecate (and DELETE!) an old api quickly.
I had a quick coffee chat with @danthompson then popped into an Elixir talk on Property testing by @chriskeathley. I think this is the third time I’ve tried to really grok property-based testing and I think I’ll just have to sit down and try it. I finished up my day with a neat talk on Consumer-driven contract testing. @Fitzoh gave a nice demo, showing how he would test-drive adding a service to service interaction. This idea looks like it’s come a long way since I last looked at it and I’m interested to seeing if pact can help me package up an idea I have on oauth testing.
Friday I again hit the best session first. I spent the morning hacking Arduino and Scratch with my son at KidzMash. We had a blast and I think @Kyle_Mckee did a great job putting the session together. I then attended S.O.L.I.D Elixir with @daveshah. I enjoyed the session as I’d been talking to Dave about it for the last six months. It came out well. Dave consistently took the definition of a principle (back to its roots, usually in the 80s) and then thought about how to apply it to FP. I thought he had interesting takes on how to handle the I and L of the acronym, which were the two I was unsure could transfer to a functional language. With ISP, Dave equated that with making a commitment to decrease the volatility of a particular area. These are the things you can depend on. LSP felt a bit more like a cop out to me, If you say you’re going to do something, you should do it. Still better than anything I could come up with.
The afternoon was a bit more swiss cheezed as my kids needed a little more TLC. I attended a talk on the circuit breaker pattern and Hystrix. This was one of those talks that felt like I should just read the README, but maybe I was just hungry. I also bounced into one of @chzy’s sessions, and well, it was a lot like the many talks I’ve enjoyed with @chzy. I finished up the day on good note, learning about social capital, communities and de-escalation from @jonathanpopham. And one more mandatory trip to the waterpark.
I’m always sad when CodeMash ends, but I’m also pretty desperate to sleep and recharge for a little bit. I really enjoyed seeing so many friends, playing board games, and arguing about types, testing, OO and FP. I met some new friends and got an invitation to come to Barcelona! My brain is crammed full of new ideas!