├── .gitignore └── README.md /.gitignore: -------------------------------------------------------------------------------- 1 | notes.md 2 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # ElixirConf 2016 Summary 2 | 3 | A collection of links that cover what happened during ElixirConf 2016. Please feel free to submit a PR! 4 | 5 | 6 | ## Photos 7 | + [Photo Gallery](https://echobind.com/gallery/elixir-and-phoenix-conf-2016/) 8 | 9 | 10 | ## Day 0 11 | 12 | #### SimAlchemy by [James Edward Gray II](https://github.com/jeg2) 13 | 14 | - Slides: 15 | + [Process Basics](https://github.com/sabondano/elixirconf-2016/blob/master/process_basics_slides.pdf) 16 | + [GenServer and Friends](https://github.com/sabondano/elixirconf-2016/blob/master/genserver_and_friends_slides.pdf) 17 | + [Supervisors](https://github.com/sabondano/elixirconf-2016/blob/master/supervisors_slides.pdf) 18 | + [OTP Strategy](https://github.com/sabondano/elixirconf-2016/blob/master/otp_strategy_slides.pdf) 19 | - Links: 20 | + [Simulations](https://github.com/JEG2/simulations) 21 | + [Event Sourcing](http://martinfowler.com/eaaDev/EventSourcing.html) 22 | 23 | #### Phoenix - Getting realtime with channels 24 | 25 | - Links: 26 | + [Sketchpad](https://github.com/chrismccord/sketchpad) 27 | 28 | #### Taking Off with Phoenix 29 | 30 | - Links: ... 31 | 32 | #### Badge Hacking with Nerves - [Justin Schneck](https://github.com/mobileoverlord), [Frank Hunleth](https://github.com/fhunleth), [Garth Hitchens](https://github.com/ghitchens), [Chris Dutton](https://github.com/CaptChrisD), [Greg Mefford](https://github.com/gregmefford) 33 | 34 | - [Slides](http://www.slideshare.net/GregMefford/badge-hacking-with-nerves-workshop-elixirconf-2016-justin-schneck-and-frank-hunleth) 35 | - Links: 36 | + [Nerves Project Website](http://nerves-project.org/) 37 | + [Nerves on GitHub](https://github.com/nerves-project) 38 | + [Getting-Started Guide and Docs on HexDocs](https://hexdocs.pm/nerves/getting-started.html) 39 | + [Join us in #nerves on the Elixir-Lang Slack](https://elixir-slackin.herokuapp.com/) 40 | 41 | #### Learning Elixir through TrueStory by [Bruce Tate](https://github.com/batate) and [Eric Meadows-Jönsson](https://github.com/ericmj) 42 | 43 | - Links: 44 | + [Workshop](https://github.com/ericmj/workshop) 45 | + [TrueStory](https://hex.pm/packages/true_story) 46 | 47 | ## Day 1 48 | 49 | ### Talks 50 | 51 | #### Erlang Solutions Message 52 | - "supercharged observer" https://www.erlang-solutions.com/products/wombat-oam.html 53 | 54 | #### Opening Keynote by [Chris McCord](https://twitter.com/chris_mccord) 55 | 56 | - [Video](https://www.youtube.com/watch?v=qPiZTxUAaVM) 57 | - Slides - Not uploaded yet. Submit a [PR](https://github.com/poteto/elixirconf-2016/pulls) if you find it! 58 | - Links: 59 | + [2m connections in Phoenix](http://www.phoenixframework.org/blog/the-road-to-2-million-websocket-connections) 60 | + [Programming Phoenix book](http://bit.ly/phoenix_book) - Discount code: `ElixirConfUS2016_phoenix` 61 | + [Phoenix Presence blog post](https://dockyard.com/blog/2016/03/25/what-makes-phoenix-presence-special-sneak-peek) 62 | + [Nerves - Embedded Elixir](http://nerves-project.org/) 63 | + [New folder structure for Phoenix](https://twitter.com/antondom/status/771341202071384064) 64 | + [Phoenix Presence docs](https://hexdocs.pm/phoenix/Phoenix.Presence.html) 65 | + [Phoenix Presence podcast on the changelog](https://changelog.com/208/) 66 | + [CRDTs](https://en.wikipedia.org/wiki/Conflict-free_replicated_data_type) 67 | 68 | #### Abstractions: A Tale of Keys and Values by [Ernie Miller](https://github.com/erniemiller) 69 | 70 | - [Video](https://www.youtube.com/watch?v=eKbLOlyt11k) 71 | - [Slides](https://speakerdeck.com/erniemiller/abstractions-a-tale-of-keys-and-values) 72 | - Links: ... 73 | 74 | #### Implementing binary protocols with Elixir by [Ole Michaelis](https://twitter.com/CodeStars) 75 | 76 | - [Video](https://www.youtube.com/watch?v=RmKA-vdi04I) 77 | - [Slides](https://slidr.io/nesQuick/implementing-binary-protocols-with-elixir) 78 | - Links: 79 | + https://github.com/nesQuick/elixir-hpack 80 | + https://http2.github.io/http2-spec/compression.html 81 | + https://http2.github.io/http2-spec/ 82 | + http://daniel.haxx.se/http2/ 83 | + https://github.com/ninenines/cowlib/blob/master/src/cow_hpack.erl 84 | + http://elixir-lang.org/docs/stable/elixir/Bitwise.html#%3C%3C%3C/2 85 | + http://www.slideshare.net/peychevi/http2-and-quick-protocols-optimizing-the-web-stack 86 | + https://ma.ttias.be/architecting-websites-http2-era/ 87 | + https://benramsey.com/talks/2015/05/phptek-http2/ 88 | + https://speakerdeck.com/summerwind/2-prioritization 89 | + http://chimera.labs.oreilly.com/books/1230000000545/ch12.html#HTTP2_HEADER_COMPRESSION 90 | + http://tools.ietf.org/html/rfc6585 91 | + https://http2.golang.org/ 92 | + https://aprescott.com/posts/spdy-colon-headers 93 | + https://tools.ietf.org/html/draft-ietf-httpbis-header-compression-12 94 | + http://news.netcraft.com/archives/2015/06/25/june-2015-web-server-survey.html 95 | 96 | #### pg2 and You: Getting Distributed with Elixir by [Eric Entin](https://twitter.com/antipax) 97 | 98 | - [Video](https://www.youtube.com/watch?v=_O-bLuVhcCA) 99 | - [Slides](https://speakerdeck.com/antipax/pg2-and-you-getting-distributed-with-elixir) 100 | - Links: 101 | + [pg2 docs](http://erlang.org/doc/man/pg2.html) 102 | + [phoenix pubsub](https://github.com/phoenixframework/phoenix_pubsub) 103 | + [RePG2](https://github.com/antipax/repg2) 104 | + [gen_server](http://erlang.org/doc/man/gen_server.html) 105 | + [global](http://erlang.org/doc/man/global.html) 106 | + [net_kernel](http://erlang.org/doc/man/net_kernel.html) 107 | 108 | #### The future of deployment in Elixir by [Paul Schoenfelder](https://twitter.com/gotbones) 109 | 110 | - [Video](https://www.youtube.com/watch?v=0fuUtQFinZk) 111 | - [Slides](http://slides.com/paulschoenfelder/elixirconf2016#/) 112 | - Links: 113 | + [Distillery](https://github.com/bitwalker/distillery) 114 | + [edeliver](https://github.com/boldpoker/edeliver) 115 | + [OpenShift](https://www.openshift.com) 116 | 117 | #### Code Spelunking for Knowledge and Profit by [Brian Cardarella](https://twitter.com/bcardarella) 118 | 119 | - [Video](https://www.youtube.com/watch?v=jXVQ8nvuNas) 120 | - Slides - Not uploaded yet. Submit a [PR](https://github.com/poteto/elixirconf-2016/pulls) if you find it! 121 | - Links: 122 | + [Ecto](https://github.com/elixir-ecto/ecto) 123 | + [Phoenix.Naming](https://hexdocs.pm/phoenix/Phoenix.Naming.html) 124 | + [Compile.Phoenix](https://github.com/phoenixframework/phoenix/blob/master/lib/mix/tasks/compile.phoenix.ex) 125 | + [Kernel.pop_in/2](https://dockyard.com/blog/2016/06/05/elixir-1-3-kernel-pop-in) 126 | + [ExUnit.Case.register_attribute/3](http://elixir-lang.org/docs/stable/ex_unit/ExUnit.Case.html#register_attribute/3) 127 | + [elixir_rewrite](https://github.com/elixir-lang/elixir/blob/master/lib/elixir/src/elixir_rewrite.erl) 128 | + [Kernel.SpecialForms](http://elixir-lang.org/docs/stable/elixir/Kernel.SpecialForms.html) 129 | 130 | #### Giving up the Object-Oriented Ghost by [Zoe Laco](https://twitter.com/morganlaco) 131 | 132 | - [Video](https://www.youtube.com/watch?v=_VpZ6gQsyDY) 133 | - [Slides](http://slides.com/morganlaco/deck-2/) 134 | - Links: 135 | + [From Imperative to Functional and Back-Monads are for Functional Languages](https://www.infoq.com/articles/Dont-graft-Monads-onto-Imperative-Languages) 136 | + [From Imperative to Functional: How to Make the Leap](http://loup-vaillant.fr/tutorials/from-imperative-to-functional) 137 | + [A Practical Introduction to Functional Programming](https://maryrosecook.com/blog/post/a-practical-introduction-to-functional-programming) 138 | + [Elixir Getting Started Guide](http://elixir-lang.org/getting-started/recursion.html) 139 | + [Destroy All Ifs](http://degoes.net/articles/destroy-all-ifs) 140 | + [16 Months of Functional Programming](http://www.vasinov.com/blog/16-months-of-functional-programming/#toc-immutable-state) 141 | + [Learn You Haskell](http://learnyouahaskell.com/introduction) 142 | + [How to Switch from the Imperative Mindset](http://www.lispcast.com/imperative-mindset) 143 | + [Functional Programming Techniques With Ruby: Part I](https://www.sitepoint.com/functional-programming-techniques-with-ruby-part-i/) 144 | + [From Imperative to Functional Programming (for Absolute Beginners)](http://www.slideshare.net/alexbunardzic/from-imperative-to-functional-programming-43476397) 145 | + [Transposing a Matrix: Thinking Recursively in Elixir](http://langintro.com/elixir/article2/) 146 | + [Don’t Be Scared Of Functional Programming](https://www.smashingmagazine.com/2014/07/dont-be-scared-of-functional-programming/) 147 | + [Myth of the Day: Functional Programmers Don't Use Loops](https://two-wrongs.com/myth-of-the-day-functional-programmers-dont-use-loops) 148 | + [ElixirSchool](http://www.elixirschool.com) 149 | + [Elixir courses at Code School (coming soon)](https://www.codeschool.com) 150 | 151 | #### Nerves: Connected beyond the Node by [Justin Schneck](https://twitter.com/mobileoverlord) 152 | 153 | - [Video](https://www.youtube.com/watch?v=VhAIDmtKhO4) 154 | - Slides - Not uploaded yet. Submit a [PR](https://github.com/poteto/elixirconf-2016/pulls) if you find it! 155 | - Links: ... 156 | 157 | #### Selling Food With Elixir by [Chris Bell](https://twitter.com/cjbell_) 158 | 159 | - [Video](https://www.youtube.com/watch?v=fkDhU-2NWJ8) 160 | - [Slides](https://speakerdeck.com/cjbell88/selling-food-with-elixir-elixirconf-2016) 161 | - Links: 162 | + [The app Chris built for his client](http://cavagrill.com/) 163 | + [gen_retry](https://github.com/appcues/gen_retry) 164 | + [ets](http://erlang.org/doc/man/ets.html) 165 | + [immortal](https://github.com/danielberkompas/immortal) 166 | + [httpotion](https://github.com/myfreeweb/httpotion) 167 | + [httpoison](https://github.com/edgurgel/httpoison) 168 | 169 | #### Debugging techniques in Elixir by [Erich Kist](https://twitter.com/erichkist) 170 | 171 | - [Video](https://www.youtube.com/watch?v=pj6zAgvVt5w) 172 | - [Slides](https://speakerdeck.com/erichkist/debugging-techniques-in-elixir-elixirconf-2016) 173 | - Links: 174 | + [Stuff Goes Bad: ERLANG IN ANGER](https://www.erlang-in-anger.com/) 175 | 176 | #### Migrating an invoicing system to Elixir/Erlang by [Norberto Ortigoza](https://twitter.com/hiphoox) 177 | 178 | - [Video](https://www.youtube.com/watch?v=MmJaGGT28Js) 179 | - [Slides (zip)](https://dl.dropboxusercontent.com/u/3443349/ElixirConf-ErlangFactory.zip) 180 | - Links: ... 181 | 182 | #### Building "learn to touch type" glove with Elixir and Arduino by [Tetiana Dushenkivska](https://twitter.com/tetiana12345678) 183 | 184 | - [Video](https://www.youtube.com/watch?v=j_7kqFgIK-M) 185 | - [Slides](http://goo.gl/iS5K0j) 186 | - [Gifs used in slides](https://github.com/tetiana12345678/touch_typing_glove_pressie_orlando_gifs) 187 | - Links: 188 | + [Typehero_project on github](https://github.com/tetiana12345678/typehero_project) 189 | + [All about Arduino](https://www.arduino.cc/) 190 | + [Conductive materials](http://www.kobakant.at/DIY/?cat=24) 191 | + [Velostat](https://www.adafruit.com/product/1361) 192 | + [Serial library](https://github.com/bitgamma/elixir_serial) and [Nerves_uart](https://github.com/nerves-project/nerves_uart) for hardware/software communication. 193 | 194 | #### Phoenix Beyond the Browser - Realtime Applications with Phoenix and Swift by [David Stump](https://twitter.com/davidstump) 195 | 196 | - [Video](https://www.youtube.com/watch?v=7vBc0Q-nwUI) 197 | - [Slides, Demo Apps, and Code Samples](https://github.com/davidstump/phoenix_beyond_the_browser) 198 | - Links: 199 | + [All resources](https://github.com/davidstump/phoenix_beyond_the_browser) 200 | + [Birdsong](https://github.com/sjrmanning/Birdsong) 201 | + [SwiftPhoenixClient](https://github.com/davidstump/SwiftPhoenixClient) 202 | + [RayWenderlich](https://www.raywenderlich.com/) 203 | + [SwiftPlaygrounds](https://www.apple.com/swift/playgrounds/) 204 | + [phoenix_chat_example](https://github.com/chrismccord/phoenix_chat_example) 205 | 206 | #### No REST for the wicked: Building a GraphQL API by [Ben Wilson](https://twitter.com/benwilson512) 207 | 208 | - [Video](https://www.youtube.com/watch?v=tlxjhTc_u4o) 209 | - [Slides](https://speakerdeck.com/benwilson512/no-rest-for-the-wicked) 210 | - Links: 211 | + [Absinthe GraphQL](https://github.com/absinthe-graphql/absinthe) 212 | 213 | #### Measuring your Elixir Application by [Renan Ranelli](https://twitter.com/renanranelli) 214 | 215 | - [Video](https://www.youtube.com/watch?v=3KhzyDDju0Q) 216 | - [Slides](https://speakerdeck.com/rranelli/elixirconf-2016-measuring-your-elixir-app) 217 | - Links: 218 | + [Zed Shaw on Statistics](https://zedshaw.com/archive/programmers-need-to-learn-statistics-or-i-will-kill-them-all/) 219 | + [Blog post on measuring your elixir apps](http://milhouseonsoftware.com/2016/05/08/measuring-your-elixir-application/) 220 | + [Other blog post on measuring elixir apps](http://tech.footballaddicts.com/blog/gathering-metrics-in-elixir-applications) 221 | + [Grafana](http://grafana.org/) 222 | + [InfluxDB](https://influxdata.com/) 223 | + [collectd](https://collectd.org/) 224 | + [haproxy](http://www.haproxy.org/) 225 | + [clojurescript](https://github.com/clojure/clojurescript) 226 | + [exometer](https://github.com/Feuerlabs/exometer) 227 | + [elixometer](https://github.com/pinterest/elixometer) 228 | + [vmstats](https://github.com/ferd/vmstats) 229 | 230 | #### Edgelixir: Distributed Graph Processing in Elixir by [Nathan Lapierre](https://twitter.com/n_lap) 231 | 232 | - [Video](https://www.youtube.com/watch?v=g77VhXrxUJY) 233 | - [Slides](https://speakerdeck.com/nlap/edgelixir-distributed-graph-processing-in-elixir) 234 | - Links: 235 | + [Edgelixir](https://github.com/nlap/edgelixir) 236 | 237 | #### Lightning Talks 238 | - [René Föhring](https://twitter.com/rrrene) 239 | + [Credo](https://github.com/rrrene/credo) 240 | + [ElixirStatus](http://elixirstatus.com/) 241 | - [Pete Gamache](https://twitter.com/gamache) 242 | + [gen_retry](https://github.com/appcues/gen_retry) 243 | + [slides](http://www.slideshare.net/petegamache/genretry-simple-exponential-backoff-in-elixir) 244 | - [Faheem Mughal](https://twitter.com/hallx) 245 | + [poolboy](https://github.com/devinus/poolboy) 246 | - [Rockwell Schrock](https://twitter.com/Schrockwell) 247 | + [authy](https://github.com/schrockwell/authy) 248 | - My Elixir App is crashing more than my Ruby App! by [Luke Imhoff](https://twitter.com/kronicdeth) 249 | + [Slides](https://speakerdeck.com/kronicdeth/my-elixir-app-is-crashing-more-than-my-ruby-app#) 250 | + [RabbitMQ](https://www.rabbitmq.com/) 251 | - [Jay Hayes](https://twitter.com/iamvery) 252 | + [Ratchet](https://github.com/iamvery/ratchet) 253 | + [Phoenix Ratchet](https://github.com/iamvery/phoenix_ratchet) 254 | + [slatchet](https://github.com/iamvery/slatchet) 255 | - [Josh Adams](https://twitter.com/knewter) 256 | + [DailyDrip](https://www.dailydrip.com/) 257 | - [Casey Rosenthal](https://twitter.com/caseyrosenthal) 258 | + [SimianArmy](https://github.com/Netflix/SimianArmy) 259 | + [Principles of Chaos](http://principlesofchaos.org/) 260 | + [ChaosCommunity](http://chaos.community/) 261 | - [Przemyslaw Krowinski](https://twitter.com/sanesquid) 262 | + [game](https://github.com/archdragon/game_engine_elixir_phoenix) 263 | - [Fernand Galiana](https://twitter.com/kitesurfer) 264 | + [Kubernetes](http://kubernetes.io/) 265 | + [Docker Compose](https://docs.docker.com/compose/) 266 | - [Aaron Renner](https://twitter.com/bayfieldcoder) 267 | + [Slides (Mocks, Adapters and Microservices)](http://slides.com/aaronrenner/deck) 268 | + [Mocks](http://blog.plataformatec.com.br/2015/10/mocks-and-explicit-contracts/) 269 | + [Adapters blog post](https://www.inverse.com/article/10674-here-s-how-inverse-tests-external-apis-in-elixir-with-bypass) 270 | - [Gabe Klein](https://github.com/gabeklein) 271 | + [Socks](https://github.com/gabeklein/Socks) 272 | 273 | ## Day 2 274 | 275 | ### Talk 276 | 277 | #### Keynote by [José Valim](https://twitter.com/josevalim) 278 | 279 | - [Video](https://www.youtube.com/watch?v=apEWcpfsD2A) 280 | - [Slides](https://speakerdeck.com/plataformatec/genstage-and-flow-by-at-josevalim-at-elixirconf) 281 | - [Notes on slides](https://gist.github.com/sanmiguel/d73056adb6cffc9954327d8fcd89cd48) 282 | - Links: 283 | + [GenStage announcement](http://elixir-lang.org/blog/2016/07/14/announcing-genstage/) 284 | + [GenStage](https://github.com/elixir-lang/gen_stage) 285 | + ["Musketeer: all for one, one for all in data processing systems"](http://www.cs.utexas.edu/users/ncrooks/2015-eurosys-musketeer.pdf). Gog, _et al_. University of Cambridge, 2015. 286 | 287 | #### String Theory by [James Edward Gray II](https://twitter.com/JEG2) and [Nathan Long](https://twitter.com/sleeplessgeek) 288 | 289 | - [Video](https://www.youtube.com/watch?v=6yoJ8sWRiyg) 290 | - [Slides](https://speakerdeck.com/nathanl/string-theory) 291 | - Links: 292 | + [Elixir and Unicode, Part 1: Unicode and UTF-8 Explained](https://www.bignerdranch.com/blog/unicode-and-utf-8-explained/) 293 | + [Elixir and Unicode, Part 2: Working with Unicode Strings](https://www.bignerdranch.com/blog/elixir-and-unicode-part-2-working-with-unicode-strings/) 294 | + [Elixir and IO Lists, Part 1: Building Output Efficiently](https://www.bignerdranch.com/blog/elixir-and-io-lists-part-1-building-output-efficiently/) 295 | + [Elixir and IO Lists, Part 2: IO Lists in Phoenix](https://www.bignerdranch.com/blog/elixir-and-io-lists-part-2-io-lists-in-phoenix/) 296 | 297 | #### Refactoring Techniques for Elixir, Ecto, and Phoenix by [Gary Rennie](https://twitter.com/TheGazler) 298 | 299 | - [Video](https://www.youtube.com/watch?v=V21DAKtY31Q) 300 | - [Slides](http://blog.gazler.com/talks/refactoring-elixir) 301 | - Links: 302 | + [Oxo GitHub Repository](https://github.com/Gazler/oxo) 303 | 304 | #### Building umbrella project by [Wojtek Mach](https://twitter.com/wojtekmach) 305 | 306 | - [Video](https://www.youtube.com/watch?v=6NTmUQClHrU) 307 | - [Slides](https://speakerdeck.com/wojtekmach/building-an-umbrella-project) 308 | - Links: 309 | + [Umbrella apps](http://elixir-lang.org/getting-started/mix-otp/dependencies-and-umbrella-apps.html) 310 | + [Architecture: The Lost Years (RubyConf 2011)](https://www.youtube.com/watch?v=WpkDN78P884) 311 | + [Wrangling Large Rails Codebases (Rocky Mountain Ruby 2012)](https://www.youtube.com/watch?v=FElnETSIMuo) 312 | + [The Art of Destroying Software (Leetspeek 2014)](https://vimeo.com/108441214) 313 | + [Myth: Eric Brewer On Why Banks Are BASE Not ACID - Availability Is Revenue](http://highscalability.com/blog/2013/5/1/myth-eric-brewer-on-why-banks-are-base-not-acid-availability.html) 314 | + [AcmeBank source](https://github.com/wojtekmach/acme_bank) 315 | + [ExAdmin](https://github.com/smpallen99/ex_admin) 316 | + [distillery](https://github.com/bitwalker/distillery) 317 | 318 | #### Collaborative Music with Elm and Phoenix by [Josh Adams](https://twitter.com/knewter) 319 | 320 | - [Video](https://www.youtube.com/watch?v=UPD8yvl3MUI) 321 | - [Slides](http://www.slideshare.net/JoshAdams18/collaborative-music-with-elm-and-phoenix) 322 | - Links: 323 | + [Colluder](https://github.com/knewter/colluder) 324 | 325 | #### Leveling Up With Ecto by [Darin Wilson](https://twitter.com/darinwilson) 326 | 327 | - [Video](https://www.youtube.com/watch?v=QE7bpqpDoKo) 328 | - [Slides](https://dl.dropboxusercontent.com/u/14884175/leveling_up_with_ecto.pdf) 329 | - Links: 330 | + [MusicDB example](https://github.com/darinwilson/music_db) 331 | + [ecto](https://github.com/elixir-ecto/ecto) 332 | + [ecto docs](https://hexdocs.pm/ecto/Ecto.html) 333 | + [Insert_all and schemaless queries](http://blog.plataformatec.com.br/2016/05/ectos-insert_all-and-schemaless-queries/) 334 | 335 | #### Building Available and Partition Tolerant Systems with Phoenix Tracker by [Gabi Zuniga](https://twitter.com/gabiz) 336 | 337 | - [Video](https://www.youtube.com/watch?v=A3z_od6Vy1w) 338 | - [Slides](https://speakerdeck.com/gabiz/elixir-conf-2016-building-available-and-partition-tolerant-systems-with-phoenix-tracker) 339 | - Links: 340 | + [VoiceLayer](https://voicelayer.io) 341 | + [Dispatch Library](https://github.com/VoiceLayer/dispatch) 342 | + [Dht Example](https://github.com/VoiceLayer/dht) 343 | 344 | #### From Front End to Full Stack with Elixir and Phoenix by [Lauren Tan](https://twitter.com/sugarpirate_) 345 | 346 | - [Video](https://www.youtube.com/watch?v=r4ulu8wo_GI) 347 | - [Slides](https://speakerdeck.com/poteto/elixirconf-2016-from-front-end-to-full-stack-with-elixir-and-phoenix) 348 | - Links: 349 | + [ember-changeset](https://github.com/DockYard/ember-changeset) 350 | + [Erlang the Movie II](https://www.youtube.com/watch?v=rRbY3TMUcgQ) 351 | + [The Little Elixir and OTP Guidebook](https://www.manning.com/books/the-little-elixir-and-otp-guidebook) 352 | + [Elixir in Action](https://www.manning.com/books/elixir-in-action) 353 | + [Key value data types best practices](https://engineering.appcues.com/2016/02/02/too-many-dicts.html) 354 | + [Dialyxir](https://github.com/jeremyjh/dialyxir) 355 | + [TDD with typespecs](https://medium.com/@barruumrex/seeking-simple-satisfaction-2a098902ddff) 356 | + [Metaprogramming Elixir](https://pragprog.com/book/cmelixir/metaprogramming-elixir) 357 | + [Terraform - incrementally replace your API with Phoenix](https://github.com/poteto/terraform) - [blogpost](https://medium.com/@sugarpirate/rise-from-the-ashes-incremental-apis-with-phoenix-b08cd66bd142#.hll7po4x0) 358 | + [Functional programming patterns](https://fsharpforfunandprofit.com/fppatterns/ ) 359 | 360 | #### Nerves + Phoenix Saves a Father's Sanity! by [Joel Byler](https://twitter.com/joelbyler) 361 | 362 | - [Video](https://www.youtube.com/watch?v=cznxe3TCevk) 363 | - [Slides](https://speakerdeck.com/joelbyler/nerves-plus-phoenix-saves-a-fathers-sanity) 364 | - Links: 365 | + [Project Github Repository](https://github.com/joelbyler/elixir_conf_chores) 366 | + [Project Custom Nerves System](https://github.com/joelbyler/nerves_system_rpi3_ap) 367 | + [Nerves Base Buildroot Config (great README for custom systems)](https://github.com/nerves-project/nerves_system_br) 368 | + [Project Custom Nerves System](https://github.com/joelbyler/nerves_system_rpi3_ap) 369 | + [Great advice on testing, written by José Valim](http://blog.plataformatec.com.br/2015/10/mocks-and-explicit-contracts/) 370 | 371 | 372 | #### Concurrent Feature Testing with Wallaby by [Chris Keathley](https://twitter.com/ChrisKeathley) 373 | 374 | - [Video](https://www.youtube.com/watch?v=TjOXbDJ-yw8) 375 | - [Slides](https://speakerdeck.com/keathley/concurrent-feature-tests-with-wallaby) 376 | - Links: 377 | + [Wallaby](https://github.com/keathley/wallaby) 378 | 379 | #### The new calendar types in Elixir 1.3 by [Lau Taarnskov](https://twitter.com/lauT) 380 | 381 | - [Video](https://www.youtube.com/watch?v=3gky54_qLjQ) 382 | - [Slides](https://speakerdeck.com/lau/the-new-calendar-types-in-elixir-1-dot-3) 383 | - Links: 384 | + [Elixir docs for the built in Calendar module](http://elixir-lang.org/docs/stable/elixir/Calendar.html) 385 | + [Calendar library](https://github.com/lau/calendar) 386 | + [Calecto](https://github.com/lau/calecto) 387 | 388 | #### Painless Test Driven Development with Elixir and Phoenix by [Kat Tornwall](https://twitter.com/ktornwall) 389 | 390 | - [Video](https://www.youtube.com/watch?v=7Zr9SfQhQp8) 391 | - [Slides](https://github.com/ktornwall/elixir_conf_2016_demo/raw/master/slides.pdf) 392 | - Links: 393 | + [Demo App](https://github.com/ktornwall/elixir_conf_2016_demo) 394 | 395 | #### Dialyzer: Optimistic Type Checking for Erlang and Elixir by [Jason Voegele](https://twitter.com/jvoegele) 396 | 397 | - [Video](https://www.youtube.com/watch?v=JT0ECYZ9FaQ) 398 | - Slides: 399 | + [PDF](https://github.com/jvoegele/ElixirConf2016_dialyzer/blob/master/Dialyzer.pdf) 400 | + [Speakerdeck](https://speakerdeck.com/jvoegele/elixirconf-2016-dialyzer-optimistic-type-checking-for-erlang-and-elixir) 401 | - [Sample Code](https://github.com/jvoegele/ElixirConf2016_dialyzer/) 402 | - Links: 403 | + [Dialyzer](http://erlang.org/doc/man/dialyzer.html) 404 | + [Dialyxir](https://github.com/jeremyjh/dialyxir) 405 | 406 | #### The Joy of Connecting Elixir to the Physical World by [Frank Hunleth](https://twitter.com/fhunleth) 407 | 408 | - [Video](https://www.youtube.com/watch?v=SVy7gRU_-P8) 409 | - [Slides](https://speakerdeck.com/fhunleth/the-joy-of-connecting-elixir-to-the-physical-world) 410 | - Links: 411 | + [elixir_ale](https://github.com/fhunleth/elixir_ale) 412 | + [nerves_uart](https://github.com/nerves-project/nerves_uart) 413 | 414 | #### Elixir in Elixir by [Jay Hayes](https://twitter.com/iamvery) 415 | 416 | - [Video](https://www.youtube.com/watch?v=p8MGNw045AE) 417 | - [Slides](https://speakerdeck.com/iamvery/elixir-in-elixir) 418 | - Links: 419 | + [Getting Started with Elixir Metaprogramming](https://www.bignerdranch.com/blog/getting-started-with-elixir-metaprogramming/) 420 | 421 | #### WebRTC and Phoenix, when μ seconds aren't fast enough by [Jason Stiebs](https://twitter.com/peregrine) 422 | 423 | - [Video](https://www.youtube.com/watch?v=yI5J2P9kcBQ) 424 | - [Slides](https://speakerdeck.com/jeregrine/webrtc-for-when-m-seconds-are-not-fast-enough) 425 | - Links: 426 | + [Demo app](https://phoenix-webrtc.herokuapp.com/) 427 | + [Phoenix WebRTC](https://github.com/jeregrine/phoenix_webrtc) 428 | + [Twilio Stun Turn](https://www.twilio.com/stun-turn) 429 | + [stun](https://github.com/processone/stun) 430 | + [WebRTC](https://hpbn.co/webrtc/) 431 | 432 | #### Closing Keynote by [Boyd Multerer](https://twitter.com/BoydMulterer) 433 | 434 | - [Video](https://www.youtube.com/watch?v=h_NvYwveeMc) 435 | - [Slides](https://github.com/boydm/presentations/blob/master/elixirconf_boydm_keynote.key) 436 | - Links: 437 | + [Cloak blog post](http://blog.danielberkompas.com/2015/09/22/cloak-your-ecto-data.html) 438 | + [Cloak source](https://github.com/danielberkompas/cloak) 439 | + [FPGA article](http://www.theregister.co.uk/2016/03/14/intel_xeon_fpga/) 440 | --------------------------------------------------------------------------------