Starred notes from CodeMash 2017

0
January 15, 2017 // irl

It’s the start of a new year which means it’s CodeMash season and I’d like to share some highlights from the sessions I attended. 🙂  I also bolded the biggest takeaway from each session, in case you want to skim even faster.

Please keep in mind this is only my paraphrasing or lessons learned from each talk, and may not be even remotely accurate of what the speaker was trying to convey.  We all hear what we want to hear.. 😉

Introduction to Angular 2 (Part 1) – Jonathan DeJong

  • Binding directionality is explicit vs. Angular 1.x
    [] – JavaScript to HTML
    () – HTML to JavaScript
    [()] – Two Way
  • There is a ton of boilerplate and fanfare to create simple things. (my opinion)  We touched 10 files to create a list.
  • I’m sticking with Angular 1.x for now, and would strongly consider jumping to a whole new framework before going to Angular 2.x.  The learning curve would be the same.  Harsh but true! (my opinion)
  • Left early

Bring your Big Data to life using JavaScript and a browser using D3.js – Dan Shultz

  • Late arrival
  • Svg viewBox lets you control internal scaling (vs. external scaling)
  • Cross Filter is a map reduce in JavaScript
  • You certainly want to crunch anything you can server-side.. but allowing some client-side crunching allows for more dynamic (unexpected) use cases by analysts.

Unleash the computer on your data – Amber McKenzie

  • Kaggle has an amazing in-browser educational experience using Jupyter notebooks.
  • Precision: how often was your label (answer) correct? (e.g. predicted red and it really was red)
  • Recall: how often did you identify the label (answer)? (e.g. it really was red and predicted it)
  • Many ways to represent nature language text: Bag of words (yes/no word appeared), frequency count (how many times it appeared), TF-IDF (Term-Frequency, Inverse Document Frequency) frequent in your targets and infrequent in others, Word2vec (plot phrases as vectors)

Building Domain-Driven AsP.NET Core Applications – Steve Smith

  • Domain-Driven design puts your business logic as your core assemblies without dependencies
  • Inner layers define interfaces, outer layers implement them
  • Spend your dev time on your core domain (veterinary care) not on your sub-domains (billing, scheduling, etc.)
  • You may have shared components (NuGet package) but most things are in bounded contexts which have separate databases, teams, etc.

How to Win Friends and Influence People With Data Visualization – Amanda Cinnamon

  • Know your audience and target a visualization for them, don’t build complexity for all possible audiences
  • Enclosure (bounded box) is the strongest way to associate data
  • Data-ink ratio: How much data is being portrayed by how much ink.  Less is generally better.
  • Pie charts are evil (paraphrased)

Chipping away at the monolith with Go. – Aaron Salvo

  • At AOL they started builds via an AIM message to a bot
  • “go get” is not semantically versioned yet and can be a challenge
  • Design is more important than language.  A red octagon is still understood even when stop is written in another language.

That Time I Built a Thinking Robot – Seth Juarez

  • Robot scariness is an inverse of their eye size (see Johnny Five, who is indeed alive)
  • Taught a robot how to drive itself via light sensors (follow dark line)
  • Hooked up an XBox controller to easily associate labeled (answer) data for training
  • Machine learning can be done on IoT.. *mind blown*

Simplify Your Life with CQRS – Joel Mason

  • Segregate your commands (writes) and your queries (reads).. they’re fundamentally different.
  • CQRS is not so much a pattern for writing code as it is a pattern for thinking through interactions.
  • Track events instead of objects.  Allows you to trace what happened and replay as needed.
  • A system’s current state is an aggregation of its past events.

An Introduction to building websites with Aurelia and Asp.Net Core – Eric Potter

  • JavaScript Services is your friend
  • Aurelia is not opinionated, very flexible and has an opt-in model
  • ASP.NET Core has been bench marked faster than Node.JS in some conditions

Build a JavaScript Dev Environment in 1 hour – Cory House

  • Too many decisions, use a starter kit
  • Webpack is the new bundler de jour
  • Recommends: VSCode, EditorConfig, npm (yarn), Express, localtunnel, npm scripts, babel, ES6 modules, Webpack, ESLint, Anything testing, Travis or AppVeyor

Real-time Server Telemetry: The downfall of logging and rise of data pipelines – Stephen Shary

  • Have a correlation ID for all requests so you can trace things through all dependencies, even with external vendors
  • Common to cycle between feast (too many logs) and famine (not enough logs)
  • Keep all recent, aggregate older logs, eventually drop
  • Centralize your logs somewhere

The Mindful Developer: The Neuroscience of Successful Software Developers – Matthew Renze

  • Our bodies evolved to be largely relaxed, occasionally stressed
  • Modern society is inverted, constant stressors (texts, emails, notifications, alerts) with occasional relaxation
  • Mindlessness is our default behavior of reliving the past or worrying about the future, generating even more stress.
  • Mindfulness is being aware of the present with acceptance

MongoDB Aggregation like a Champ! – Nuri Halperin

  • Aggregation works as a pipeline.. filter on this, then group on that, then sort by other.
  • Group, sort, match, limit, skip, project, redact (cut depth), unwind (flatten), geonear, out, sample are available aggregate functions
  • “Sort sorts.. I don’t know what else to say about that”
  • Paging is available, but is not based on a snapshot so may get replays or miss data.
  • If you’re going to have sub documents (e.g. OrderItem), the lifetime of those should line up with the main document (e.g. Order)
  • Explain will show you the execution plan

Become a Remote Working Pro – Michael Eaton

  • Do amazing work on remote days to prove it works
  • Self promotion is harder when remote
  • Suggest everyone having a WFH day (e.g. once a week) to be cognizant of remote challenges

More Money with Less Effort: Validate App Ideas Before Coding – Scott Showalter

  • Big mistake is not sharing.. 99% of people aren’t going to steal your idea
  • Ideas are a dime a dozen, execution is what matters
  • Make ‘yes’ cost something to reviewers.. their time, reputation or money.  People just want to be nice to your feelings and are overly positive when it doesn’t cost them anything.
  • Time boxing is critical to stay low fidelity and fast

A Crash Course on Building Microservice-based Architectures – Shawn Wallace

  • Microservices are independently testable and deployable
  • Embrace async interactions and event driven architecture.  REST is not your friend, waits for a response.
  • Code re-use is overrated.
  • Data is not just at rest, also in motion.
  • RabbitMQ for event passing

.NET Standard for Mere Mortals – Jeffrey Fritz

  • .NET Standard is one API to rule them all
  • Lower versions (1.0) have fewer APIs, larger target footprint
  • Higher versions (1.6) have more APIs, smaller target footprint
  • 2.0 will have a much larger API surface and allow for referencing existing .NET Framework DLLs

Adding ES6 to Your Developer Toolbox – Jeff Strauss

  • Use Babel transpile to get the good stuff today without waiting for browers
  • Template literals (string interpolation) `This is ${expression}`  (expression = ‘Sparta’ of course)
  • Destructuring allows for direct assignment of multiple return values
  • Let provides the logical scope that var was always missing

Summary

A lot of effort goes into putting on CodeMash each year and I want to say thank you to the organizers, speakers, Kalahari staff and everyone who makes such an incredible event possible!

About the author

Steve Cadwallader is a software developer who geeks out on user interfaces, clean code and making things easier.

Leave a Comment