Elixir Native UI - Boyd Multerer https://www.youtube.com/watch?v=77FW-jrCyCs
- Only dependencies are Elixir, Erlang, and glut to access OpenGL.
- No UI threads! Individual processes can be used to track mouse
- Slides track mouse as long as button is down https://youtu.be/77FW-jrCyCs?t=37m35s
- Sliders can be rotated https://youtu.be/77FW-jrCyCs?t=40m4s
- 500 lines animating still a few ms to render https://youtu.be/77FW-jrCyCs?t=43m34s
Thinking In Ecto - Darin Wilson https://www.youtube.com/watch?v=YQxopjai0CU
- Repository pattern https://youtu.be/YQxopjai0CU?t=2m12s
- Explicitness https://youtu.be/YQxopjai0CU?t=5m29s
- Operations as Data Structures https://youtu.be/YQxopjai0CU?t=11m47s
- Flexible Schemas https://youtu.be/YQxopjai0CU?t=22m53s
- A set of tools, not a framework https://youtu.be/YQxopjai0CU?t=32m57s
My Journey from Go to Elixir - Veronica Lopez https://www.youtube.com/watch?v=f979XY2A2HU
Day 1 Keynote - Justin Schneck https://www.youtube.com/watch?v=bd_EIWU9GzQ
- Bootloader - launch part of the Erlang runtime that can recover if your application crashes, so you can send a working update to the embedded device https://youtu.be/bd_EIWU9GzQ?t=13m36s
- nervs_init_gadget to get all hardware working
- network
- firmware_ssh to send updates over ssh instead of popping SD card and burning and reinserting
- net_kernel
- System Registry https://youtu.be/bd_EIWU9GzQ?t=19m20s
- Allow for layers configuration and event notifications, such as for when hardware is added or ready (rate limited)\
- Nerves Runtime https://youtu.be/bd_EIWU9GzQ?t=32m6s
- Setups up r/w area for SD card
- modprobes all devices
- Puts them in System Registry
- Nerves Reactor https://youtu.be/bd_EIWU9GzQ?t=36m34s
- Code Reloading like Phoenix, but for embedded devices
Don't Write Macros But Do Learn How They Work - Jesse Anderson https://www.youtube.com/watch?v=Bo48sQDb-hk
- Shows how quoted AST works
Building an Artificial Pancreas with Elixir and Nerves - Tim Mecklem https://www.youtube.com/watch?v=ARQD4BN_5ns
- Lower A1C to 5.5. That's the level to no longer test as a diabetic
- Depends on security flaw in earlier insulin pumps identified at Blackhat in 2014
- Fixed in new pumps, so can't be used in
- Luke's Cameo https://youtu.be/ARQD4BN_5ns?t=10m05s
- Looping https://youtu.be/ARQD4BN_5ns?t=11m28s
- Firmware flash time demo https://youtu.be/ARQD4BN_5ns?t=24m35s
HTTP 2 Plug to Phoenix Cowboy too - Gary Rennie https://www.youtube.com/watch?v=Mq_tb2fkROo
- Cowboy 2 upgrade https://youtu.be/Mq_tb2fkROo?t=18m33s
- Cowboy2 and Plug https://youtu.be/Mq_tb2fkROo?t=21m12s
- https://github.com/VoiceLayer/plug_cowboy2
- Server Push with PUSH_PROMISE frame https://youtu.be/Mq_tb2fkROo?t=24m3s
Phoenix after 100000 lines - Renan Ranelli https://www.youtube.com/watch?v=blGJ_p4plbc
- wc -l apps/**/*.ex{,s} | tail -n1 to count lines of elixir in your umbrella project (55217 for interpreter-server)
- grep 'defmodule' apps/**/*.ex{,s} | wc -l to count number of modules in your umbrella project (436 for interpreter-server)
- Convert to an umbrella project as soon possible https://youtu.be/blGJ_p4plbc?t=18m15s (I agree see https://www.youtube.com/watch?v=1ocF_9Nc0ik)
- Fat controllers can be a problem in Phoenix just like Rails (https://www.youtube.com/watch?v=blGJ_p4plbc). Pull business logic into Context modules for Phoenix 1.3 (or
Calcinator.Resources
modules for JSONAPI) - If you refactor, don't forget to add new unit tests. Don't depend on integration/controller tests (https://youtu.be/blGJ_p4plbc?t=19m36s)
- If you have a special format string, don't use
:string
in Ecto, use anEcto.Type
instead that can handle dumping and loading and casting the data from the database in a normalized format (https://youtu.be/blGJ_p4plbc?t=23m32s)
Embedded Elixir for Monitoring the Built Environment - Christopher Cote - https://www.youtube.com/watch?v=_zQ_u7o1rNo
- Rosetta Home - Building Health Monitoring
- Hyper-local Weather
- Energy use/production
- HVAC utilization
- Indoor Environment Quality (IEQ)
- Media devices
- Lighting
- Homeostatic Builds https://youtu.be/_zQ_u7o1rNo?t=6m29s
- Passive Haus
- LEED
- Malcom Wells
- Lights and controls https://youtu.be/_zQ_u7o1rNo?t=23m
- Indoor Environmental Quality https://youtu.be/_zQ_u7o1rNo?t=26m45s
- Hyperlocal Weather https://youtu.be/_zQ_u7o1rNo?t=27m21s
- Energy Usage https://youtu.be/_zQ_u7o1rNo?t=28m8s
- ALL THE GRAPHS https://youtu.be/_zQ_u7o1rNo?t=38m35s
Elixir by the Bellyful - Bryan Hunter https://www.youtube.com/watch?v=iswld-Rpi_g
- History of Elixir https://youtu.be/iswld-Rpi_g?t=2m
- Erlang as an OS https://youtu.be/iswld-Rpi_g?t=6m57s
- Lots of awesome details about the internals of the BEAM
- Spawn, Send, Receive benchmark https://youtu.be/iswld-Rpi_g?t=20m23s
- GenServer https://youtu.be/iswld-Rpi_g?t=22m7s
- Application https://youtu.be/iswld-Rpi_g?t=26m1s
- 3 9s in series is 99.8% vs 3 9s in parallel is 6 9s https://youtu.be/iswld-Rpi_g?t=28m43s
- Helpful animations for mentally modeling Elixir
Its Better Unstated - TJ Stankus https://www.youtube.com/watch?v=S2-1Rt-R2cY
- good OO (Ruby) code vs good functional code (Elixir) for Bowling code kata
Working with legacy databases in Ecto - Geoffrey Lessel https://www.youtube.com/watch?v=3W2dMOQL2CM
- source: columName to override column name to not be snake_case https://youtu.be/3W2dMOQL2CM?t=11m45s
- @primary_key {:id, :id, source: :raceId} for primary keys with table names in them
- @primary_key {:id, :binary_id, source: :raceId} for non-integer primary keys https://youtu.be/3W2dMOQL2CM?t=14m41s
- @foreign_key_type :binary_id for foreign keys https://youtu.be/3W2dMOQL2CM?t=15m56s
- @primary_key false for no primary key https://youtu.be/3W2dMOQL2CM?t=16m23s
- Use foreign_key: raceId, define_field: false instead of :source to use the camelcase foreign key instead of making it snake case https://youtu.be/3W2dMOQL2CM?t=17m53s
Back on Your Feet - Claudio Ortolina https://www.youtube.com/watch?v=kWYgrA2YshE
- Out of the Tar Pit https://youtu.be/kWYgrA2YshE?t=5m47s
- Data Model https://youtu.be/kWYgrA2YshE?t=8m36s
- Handling N+1 queries and rate limits https://youtu.be/kWYgrA2YshE?t=12m48s *
- One Location, One Process https://youtu.be/kWYgrA2YshE?t=13m40s
- send_after to self to expire https://youtu.be/kWYgrA2YshE?t=15m54s
- Extract data to ETS https://youtu.be/kWYgrA2YshE?t=17m59s
- Use out of date data with refresh, but tell the consumer how old the cache is https://youtu.be/kWYgrA2YshE?t=17m59s
Writing an Editor in Elixir - Ian Duggan https://www.youtube.com/watch?v=6lIVWVmuPao
- Rope data structure https://youtu.be/6lIVWVmuPao?t=13m10s
- It's hard to replace the Erlang/Elixir shell completely. Had to use telnet to remote connect
- WxWidgets to wrap :wx in Elixir interface https://youtu.be/6lIVWVmuPao?t=33m5s
Perhap: Applying Domain Driven Design and Reactive... - Rob Martin https://www.youtube.com/watch?v=kq4qTk18N-c
- Domain Modeling Made Functional
Cajoling the Bird: How we squeezed more out of Phoenix PubSub- Simon Zelazny (from Grindr) https://www.youtube.com/watch?v=bodV9Tk_kpQ
- All clients polling one API GenServer with their location and who's nearby https://youtu.be/bodV9Tk_kpQ?t=2m30s
- Can't poll more often without more servers
- Not paying for IoT solution from vendor
- Use P in XMPP wasn't successful in the past
- Can't poll more often without more servers
- Version 1 with Phoenix Presence - subscribe to each client's presence topic individually https://youtu.be/bodV9Tk_kpQ?t=6m23s
- lots of memory - hibernate OR -env ERL_FULLSWEEP_AFTER 2
- select vs epoll for slow clients: +K true
- https://youtu.be/bodV9Tk_kpQ?t=11m56s
- 100k users and 64GB of RAM
- Version 2: Internal subscriptions https://youtu.be/bodV9Tk_kpQ?t=13m49s
- One channel to server, then that channel internally subscribes to each user topics using phoenix_requests
- Memory and CPU way down
- All internal channels still bottleneck on 1 tracker process https://youtu.be/bodV9Tk_kpQ?t=15m49s
- Hash topic to tracker shards https://youtu.be/bodV9Tk_kpQ?t=15m49s
- One channel to server, then that channel internally subscribes to each user topics using phoenix_requests
- Version 3: Sharded trackers for internal topic subscriptions https://youtu.be/bodV9Tk_kpQ?t=16m47s
- 200k users
- Compile Erlang with lcnt (lock counter) support https://youtu.be/bodV9Tk_kpQ?t=18m48s
- locks https://youtu.be/bodV9Tk_kpQ?t=19m37s
- run_queue for running stuff in the schedulers, can't change that
- pix_lock for spawning new processes
- proc_link for linking processes
- For each shared broadcast in the current process instead of spawning a Task https://youtu.be/bodV9Tk_kpQ?t=21m35s
- This was PR'd and in Phoenix now
- Tracker still slow
- :erlang.system_monitor(self(), [long_schedule: 10, long_gc: 10])
- maps.to_list and maps.from_list does not count reductions
- Tracker.track
- Tracker.list
- handle_info -> Tracker.handle_diff
- All serial
- Tracker.dirty_list to access ETS table directly
- :erlang.system_monitor(self(), [long_schedule: 10, long_gc: 10])
- Bottlenecks https://youtu.be/bodV9Tk_kpQ?t=30m41s
- Singleton processes
- GenServer.calls
- Counterproductive spawns
Keep an Eye on the Sky with Nerves and Phoenix - Jeff Smith https://www.youtube.com/watch?v=UoSQBOP_Siw
- Automatic Dependent Surveillance Broadcast
- High level flow https://youtu.be/UoSQBOP_Siw?t=16m27s
- GenStage partition by phash2 of address in packets https://youtu.be/UoSQBOP_Siw?t=20m31s
- Registry takes a listeners module to callback for adds and removes https://youtu.be/UoSQBOP_Siw?t=25m45s
Streaming Video with Elixir - John Wahba (TWITCH) https://www.youtube.com/watch?v=eNe5dmRP9Cc
- ffmpeg over Phoenix Channels
- Uses Porcelain https://youtu.be/eNe5dmRP9Cc?t=6m33s
- You output to stream https://youtu.be/eNe5dmRP9Cc?t=12m21s
- Transcoding Video: Producer -> ConsumerSupervisor -> Transcoder https://youtu.be/eNe5dmRP9Cc?t=8m7s
- :filelib.ensure_dir https://youtu.be/eNe5dmRP9Cc?t=10m52s
Scaling up Elixir at TpT - Shanti Chellaram https://www.youtube.com/watch?v=RwJAETlVrvs
- PHP (June 2016) to Elixir/Node.JS (Sep 2017)
- Before
- CakePHP
- 20 Developers
- After
- React/Redux/Node.JS for FE rendering
- Elixir API backend
- 40 developers
- Before
- Elixir vs PHP/Laravel
- Productivity
- Scalability
- Concurrency & Perf
- No Global GC
- Community Support
- Also converted to GraphQL
- GraphQL per operation performance is hard to measure
- Phoenix log isn't helpful because it's all one API endpoint, /graph
Day 2 Morning Keynote - José Valim https://www.youtube.com/watch?v=Wa7_I_pc0yo
- Adopting Elixir: From Concept to Production (BOOK)
- Elixir 1.5
- Unicode atoms, vars, and functions
- AtU8 beam chunk
- FunctionClauseError clause highlighter
- break! in iex
- break! URI.decode_query/2
- Exception.blame
- Dbgi chunk allow break! and Exception.blame
- And ElixirScript on-demand recompile to JS
- Unicode atoms, vars, and functions
- Elixir Goals
- OLD https://youtu.be/Wa7_I_pc0yo?t=21m17s
- Productivity
- Tooling (mix, iex, observer)
- (Elixir 1.3) mix test --stale
- (1.3) ExUnit diffs
- (1.4) IEx syntax coloring
- (1.4) Task.async_stream
- First-class documentation
- Collections and Strings
- Multi-core processing
- Tooling (mix, iex, observer)
- Extensibility https://youtu.be/Wa7_I_pc0yo?t=25m5s
- Macros
- Protocols
- Compatibility https://youtu.be/Wa7_I_pc0yo?t=25m54s
- Isolated Processes
- Fault recovery with Supervisors
- Distribution
- Productivity
- NEW
- Productivity
- Maintainability https://youtu.be/Wa7_I_pc0yo?t=40m18s
- (1.3) mix xref
- (1.3) Deprecate imperative assignment (assignment in if branches working, etc)
- (1.3) Named setups and describe
- (1.5) @impl
- Reliability
- (1.1) Task.yield and Task.shutdown
- R&D
- Productivity
- Code formatter https://youtu.be/Wa7_I_pc0yo?t=47m8s
- Reduces size of the style guide in half https://youtu.be/Wa7_I_pc0yo?t=53m56s
- Principles https://youtu.be/Wa7_I_pc0yo?t=55m45s
- No changes semantics (can't rename variables or create pipelines)
- Minimize configuration, just column count now
- No special cases
- Released in Elixir 1.6 in Jan 2018
- Code formatter https://youtu.be/Wa7_I_pc0yo?t=47m8s
- Maintainability
- Property Testing
- String.contains? example https://youtu.be/Wa7_I_pc0yo?t=59m44s
- Stream.Data https://youtu.be/Wa7_I_pc0yo?t=1h2m2s
- Elixir 1.6
- Property Testing
- Reliability
- Releases
- Erlang/OTP: cross-language docs
- Productivity
- OLD https://youtu.be/Wa7_I_pc0yo?t=21m17s
ElixirBridge How Do We Shape Community - Anna Neyzberg https://www.youtube.com/watch?v=SB0bfI8DiOM
- Facebook FreeBasics didn't know what India actually needed https://youtu.be/SB0bfI8DiOM?t=3m55s
- India's Railway
- Weather forecasts
- Feminine hygiene products
- Task Force for Talent Innovation https://youtu.be/SB0bfI8DiOM?t=4m45s
- Tech Leavers Study 2017 https://youtu.be/SB0bfI8DiOM?t=6m20s
- Welcoming and Inclusive Environment https://youtu.be/SB0bfI8DiOM?t=10m22s
- Code-of-Conduct
- Goals
- Rules
- Resources
- Accessibility
- They will trains you to be a teacher.
- They spell out explicitly bad behaviors in the Code-of-Conduct and how to report incidents and for how organizers should handle incidents
Live APIs with GraphQL Subscriptions - Bruce Williams and Ben Wilson https://www.youtube.com/watch?v=PEckzwggd78
- GraphQL History https://youtu.be/PEckzwggd78?t=1m47s
- GraphiQL demo https://youtu.be/PEckzwggd78?t=2m50s
- Absinthe
- Handles N+1 transparently https://youtu.be/PEckzwggd78?t=9m22s
- Point of Sale (POS) demo https://youtu.be/PEckzwggd78?t=19m21s
- Craft GraphQL APIs in Elixir with Absinthe (BOOK) https://youtu.be/PEckzwggd78?t=34m53s
Dr. ErlangOTP or How I Learned to Stop Worrying and Love disk_log
- Eric Entin (@antipax) https://www.youtube.com/watch?v=lQmJZVcHYds
- disk_log https://youtu.be/lQmJZVcHYds?t=5m44s
- log any term to a file
- efficiently read terms back in chunks
- (a)sync loggin
- multiple process logging
- corruption recovery
- Uses
- audit trails
- recordings
- write-ahead log
- Write https://youtu.be/lQmJZVcHYds?t=8m31s
- mnesia
- JInterface https://youtu.be/lQmJZVcHYds?t=13m57s
- wx Graphics package https://youtu.be/lQmJZVcHYds?t=16m14s
- ssh https://youtu.be/lQmJZVcHYds?t=17m25s
- client & server, but not tunnels
- sftp
- dialyzer - type checker https://youtu.be/lQmJZVcHYds?t=19m2s
- dialyxir
- yecc & leex https://youtu.be/lQmJZVcHYds?t=20m27s
- gen_statem https://youtu.be/lQmJZVcHYds?t=22m25s
- gen_state_machine for Elixir
- digraph for labeled direct graphs
- zip/erl_tar/zlib for compression
- global/pg2 for registation/locks/group
- heart to restart VM
- rpc to run any MFA remotely
- beam_lib: dissassemble and reassemble Core Erlang
- proc_lib
Elixir + Neo4j - Regina Imhoff https://www.youtube.com/watch?v=fWQy7aS_gd8
- Ecto doesn't support Neo4J, so build everything by hand
- Use Phoenix Channels to do graph diff subscriptions
- She wrote the realtime part in < 1 day after noticing Jim Freeze put it in her talk description
- May turn work into an Ecto Adapter
Managing Tables With Elixir and OTP - Robert Beene https://www.youtube.com/watch?v=ENolm5T0bkU
- GenServers https://youtu.be/ENolm5T0bkU?t=4m13s
- Supervisors https://youtu.be/ENolm5T0bkU?t=5m16s
- --sup workflow https://youtu.be/ENolm5T0bkU?t=7m39s
- Using Registry as supervisor https://youtu.be/ENolm5T0bkU?t=16m1s
- Using separate process to stash state to protect from crashes https://youtu.be/ENolm5T0bkU?t=21m41s
Patience Using Phoenix Presence in a Primary Care Clinic - Keith Gautreaux https://www.youtube.com/watch?v=1dyo5hmfUXs
- FunctionClauseError joke https://youtu.be/1dyo5hmfUXs?t=5m17s
- Patient workflow https://youtu.be/1dyo5hmfUXs?t=12m23s
- Implementation https://youtu.be/1dyo5hmfUXs?t=15m48s
- iOS
- SwiftPhoenixClient
- iBeacons
- cloak hex package for encrypt DB fields https://youtu.be/1dyo5hmfUXs?t=21m40s
- Not a lot of details about the implementation, more details about the impact it could have it worked
The Power of Zero - Andrew Forward https://www.youtube.com/watch?v=4LIXBW58yIk
- Path to Zero https://youtu.be/4LIXBW58yIk?t=6m35s
- Manual (by hand)
- Automation (script) - how to run the tasks
- Autonomy (meta scripts) - when to run the tasks
- mix test.watch https://youtu.be/4LIXBW58yIk?t=8m19s
- quantum for cron-like scheduling of tasks instead of send_after https://youtu.be/4LIXBW58yIk?t=10m48s
- MTTR (Mean Time To Recovery) vs MTTF (Mean Time To Failure) https://youtu.be/4LIXBW58yIk?t=32m18s
Elixir as a first language - Alexis Huefner https://www.youtube.com/watch?v=TUOeFdFvOk8
Well Behaved Native Implemented Functions for Elixir - Andrew Bennett https://www.youtube.com/watch?v=FYQcn9zcZVA
- from https://potatosalad.io/2017/08/05/latency-of-native-functions-for-erlang-and-elixir.html, minimal times for port calls is 100μs for latency alone https://youtu.be/FYQcn9zcZVA?t=3m8s
- enif_consume_timeslice https://youtu.be/FYQcn9zcZVA?t=22m12s
- Yielding dirty nifs https://youtu.be/FYQcn9zcZVA?t=26m36s
- OTP 20 features https://youtu.be/FYQcn9zcZVA?t=33m
- enif_whereis_pid
- enif_monitor_process - call C callback when a process dies
- enif_select
Elixir The Toyota Way - Powell Kinney (TOYOTA CONNECTED) https://www.youtube.com/watch?v=37V6L1EA4ac
- Toyota Production System https://youtu.be/37V6L1EA4ac?t=6m11s
- Muda (Activity w/o Value) https://youtu.be/37V6L1EA4ac?t=6m42s
- Muri (Overburden) https://youtu.be/37V6L1EA4ac?t=7m1s
- Mura (Irregularity/Unevenness) https://youtu.be/37V6L1EA4ac?t=7m14s
- The Toyota Way
- Principle 2: Create a continuous process flow to bring problems to the surface https://youtu.be/37V6L1EA4ac?t=10m34s
- Principle 3: Use "pull" system to avoid overproduction (Kanban) https://youtu.be/37V6L1EA4ac?t=12m39s
- Principle 4: Level out the workflow (Heijunka) https://youtu.be/37V6L1EA4ac?t=13m34s
- Principle 5: Build a culture of stopping to fix problems, to get quality right the first time. (Andon) https://youtu.be/37V6L1EA4ac?t=15m9s
- Principle 6: Standardized tasks and processes are the foundation for continuous improvements and employee empowerment https://youtu.be/37V6L1EA4ac?t=17m
- Principle 7: Use visual controls so no problems are hidden https://youtu.be/37V6L1EA4ac?t=18m27s
- Principle 8: Use only tested technology https://youtu.be/37V6L1EA4ac?t=20m31s
Building an Open Source, Real Time Forum with Phoenix and Elm - Josh Adams https://www.youtube.com/watch?v=GFyFR5LdnrU
- Monitoring
- Appsignal https://youtu.be/GFyFR5LdnrU?t=14m35s
- Pryin https://youtu.be/GFyFR5LdnrU?t=14m55s
- Continues BEAM specifics like Processes and Run Queue
- Easily Skinned https://youtu.be/GFyFR5LdnrU?t=15m10s
- ITCSS (Inverted Triangle CSS) https://youtu.be/GFyFR5LdnrU?t=18m5s
- RSCSS https://youtu.be/GFyFR5LdnrU?t=19m30s
- Elm
Plugging the Security Holes in Your Phoenix Application - Griffin Byatt https://www.youtube.com/watch?v=w3lKmFsmlvQ
- Built Sobelow static analysis tool https://youtu.be/w3lKmFsmlvQ?t=29m14s
- Don't do String.to_atom https://youtu.be/w3lKmFsmlvQ?t=6m52s
- Null byte in paths
- Path.extname("file.html\0.jpg") # .jpg
- File.read("file.html\0.jpg") # file.html
- Erlang team will disallow null bytes in file paths in future update
- Look at Plug.Conn.send_file because it checks for null characters
Building Realtime Mobile Apps with React Native and Elixir - Osayame Gaius Obaseki https://www.youtube.com/watch?v=Kbhl379x1cw
- Redux https://youtu.be/Kbhl379x1cw?t=23m24s
- Global, read-only, unidirectional state
- Elixir + Phoenix https://youtu.be/Kbhl379x1cw?t=30m28s
Elixir with Kafka - Mathew Gardner (TOYOTA CONNECTED) https://www.youtube.com/watch?v=6ijgMvXJyuo
- Kafka https://youtu.be/6ijgMvXJyuo?t=3m18s
- Topics
- Queue offset in topic is per consumer https://youtu.be/6ijgMvXJyuo?t=4m51s
- Topic can be partitioned across cluster
- Pull-only, no push, unlike RabbbitMQ https://youtu.be/6ijgMvXJyuo?t=6m49s
- Topics
- GenStage https://youtu.be/6ijgMvXJyuo?t=7m21s
- Flow https://youtu.be/6ijgMvXJyuo?t=9m17s
- KafkaEx https://youtu.be/6ijgMvXJyuo?t=9m50s
- Does not have support for GenStage consumption from Kafka, but does have own consumer event handler already
- Use :noreply, so you don't push events when there is no demand https://youtu.be/6ijgMvXJyuo?t=15m39s
- handle_demand https://youtu.be/6ijgMvXJyuo?t=17m12s
- If process crashes, KafkaEx hasn't acknowledged, so they can be refetched from Kafka because it keeps track of acknowledged and unacknowledged cursors for each client https://youtu.be/6ijgMvXJyuo?t=23m24s
Implementing a MQTT client in Elixir - Martin Gausby https://www.youtube.com/watch?v=ImcAcDBa8Dg
- MQTT https://youtu.be/ImcAcDBa8Dg?t=2m37s
- PubSub
- Topic subscriptions https://youtu.be/ImcAcDBa8Dg?t=3m47s
- rooms/living-room/+ where + is a single level glob https://youtu.be/ImcAcDBa8Dg?t=4m32s
- rooms/# where # is multilevel glob https://youtu.be/ImcAcDBa8Dg?t=4m49s
- Don't need to declare queues ahead of time, unlike AMQP (RabbitMQ)
- QoS
- 0 - fire and forget
- 1 - At least once delivery
- 2 - Exactly once delivery https://youtu.be/ImcAcDBa8Dg?t=7m31s
- Last Will Messages that will be sent to a topic when client goes down. Like process link :exit https://youtu.be/ImcAcDBa8Dg?t=10m5s
- PubSub
- :gen_tcp builtin to OTP to connect to TCP as client/server https://youtu.be/ImcAcDBa8Dg?t=12m25s
- MQTT Control Packet Format https://youtu.be/ImcAcDBa8Dg?t=15m26s
- Fix Header https://youtu.be/ImcAcDBa8Dg?t=16m8s
h <<>>
iniex
will explain binary pattern matching https://youtu.be/ImcAcDBa8Dg?t=18m44s- Variable Length Encoding Scheme https://youtu.be/ImcAcDBa8Dg?t=20m51s
- binary pattern https://youtu.be/ImcAcDBa8Dg?t=23m40s
- State Machine using GenStateMachine https://youtu.be/ImcAcDBa8Dg?t=27m36s
- Client Waiting for connection https://youtu.be/ImcAcDBa8Dg?t=29m49s
Realtime Vehicle Tracking with Elixir, Phoenix, and Nerves - James Smith (@st23m) https://www.youtube.com/watch?v=aLnSO6FQpHs
- Real-time school bus tracking https://youtu.be/aLnSO6FQpHs?t=4m40s
- Using COTS hardware that you didn't choose https://youtu.be/aLnSO6FQpHs?t=6m35s
- Badly translated hardware docs https://youtu.be/aLnSO6FQpHs?t=7m34s
- Binary pattern matching https://youtu.be/aLnSO6FQpHs?t=8m12s
- 500 buses every 15 seconds with GPS coords
- ranch (used in cowboy used in Phoenix) for TCP acceptor pool https://youtu.be/aLnSO6FQpHs?t=9m58s
- worker module https://youtu.be/aLnSO6FQpHs?t=10m29s
- TCP handler https://youtu.be/aLnSO6FQpHs?t=11m1s
- Registry for simple_one_for_one https://youtu.be/aLnSO6FQpHs?t=14m15s
- Out of Order Messages Joke in GPRS https://youtu.be/aLnSO6FQpHs?t=17m10s
- Needed timestamp on all messages in addition to {lat, long}
- Had to get firmware update from vendor
- Needed timestamp on all messages in addition to {lat, long}
- CAN Bus is dangerous https://youtu.be/aLnSO6FQpHs?t=19m53s
- Build safe hardware with Nerves https://www.youtube.com/watch?v=aLnSO6FQpHs
- SIM808 shield from Simcom https://youtu.be/aLnSO6FQpHs?t=22m14s
- CP
- DO NOT SOLDER BEARD https://youtu.be/aLnSO6FQpHs?t=24m41s
- Live Demo with moving car https://youtu.be/aLnSO6FQpHs?t=27m40s
- Fona Hex Package for Fona GPRS chip https://youtu.be/aLnSO6FQpHs?t=30m49s
Closing Keynote - Chris McCord https://www.youtube.com/watch?v=zbbK0WOvWII
- Chris trolling José https://youtu.be/zbbK0WOvWII?t=2m32s
- Phoenix 1.3 https://youtu.be/zbbK0WOvWII?t=4m11s
- Context Guide https://hexdocs.pm/phoenix/contexts.html
- Case Study of how contexts can make code better https://youtu.be/zbbK0WOvWII?t=13m16s
- Phoenix 1.4 https://youtu.be/zbbK0WOvWII?t=23m24s
- Application Performance Monitoring (APM) interface https://youtu.be/zbbK0WOvWII?t=25m33s
- Metric types https://youtu.be/zbbK0WOvWII?t=31m18s
- Developer Dashboard https://youtu.be/zbbK0WOvWII?t=35m2s
- Concurrent Transaction tests triggered from Ember tests https://youtu.be/zbbK0WOvWII?t=37m10s
- Application Performance Monitoring (APM) interface https://youtu.be/zbbK0WOvWII?t=25m33s
- Guides Contribution Sprint https://youtu.be/zbbK0WOvWII?t=40m4s
Elixir Power Tracing - Gabi Zuniga https://www.youtube.com/watch?v=NBmNDI9OFJk
- How Tracing works in Erlang/Elixir https://youtu.be/NBmNDI9OFJk?t=6m51s
- Trace message format https://youtu.be/NBmNDI9OFJk?t=7m58s
- :erlang.trace/3 https://youtu.be/NBmNDI9OFJk?t=8m17s
- Trace flags https://youtu.be/NBmNDI9OFJk?t=9m3s
- :erlang.trace_pattern https://youtu.be/NBmNDI9OFJk?t=9m54s
- Match Specs https://youtu.be/NBmNDI9OFJk?t=11m21s
- Tracing Tools Taxonomy https://youtu.be/NBmNDI9OFJk?t=13m56s
- ReconEx https://youtu.be/NBmNDI9OFJk?t=16m15s
- Tracer https://youtu.be/NBmNDI9OFJk?t=21m56s
- Failsafe Mechanism https://youtu.be/NBmNDI9OFJk?t=25m25s
- Max trace running time (30 sec)
- Max number of messages (1000)
- Message queue maximum size (1000)
- Remote usage from iex without having to install as a dependency https://youtu.be/NBmNDI9OFJk?t=26m36s
- Count tool
- Binding an argument https://youtu.be/NBmNDI9OFJk?t=29m9s
- Counting Phoenix REST calls https://youtu.be/NBmNDI9OFJk?t=30m11s
- Duration Tool https://youtu.be/NBmNDI9OFJk?t=32m14s
- Aggregation https://youtu.be/NBmNDI9OFJk?t=33m5s
- Call Sequence Tool https://youtu.be/NBmNDI9OFJk?t=34m39s
- Flame Graph https://youtu.be/NBmNDI9OFJk?t=36m1s
- Ignoring processes sleeping and targeting a specific, named, process https://youtu.be/NBmNDI9OFJk?t=38m19s
- Failsafe Mechanism https://youtu.be/NBmNDI9OFJk?t=25m25s
Idea Scaling Hannah Howard https://www.youtube.com/watch?v=jkFyz2LbdKg
- Community Organizing https://youtu.be/jkFyz2LbdKg?t=19m29s
- Appeal to Self-Interest https://youtu.be/jkFyz2LbdKg?t=21m23s
- How To Organize https://youtu.be/jkFyz2LbdKg?t=27m4s
- Win Concrete Improvements https://youtu.be/jkFyz2LbdKg?t=27m24s
- Elixir Examples
- Productive Out Of the Box https://youtu.be/jkFyz2LbdKg?t=28m2s
- Faster Out of the Box https://youtu.be/jkFyz2LbdKg?t=28m58s
- Elixir Examples
- Give People a sense of their own Power https://youtu.be/jkFyz2LbdKg?t=29m27s
- Elixir Examples
- Clear the Erlang cruft https://youtu.be/jkFyz2LbdKg?t=30m29s
- Package Manager https://youtu.be/jkFyz2LbdKg?t=30m48s
- Use Erlang to Deliver https://youtu.be/jkFyz2LbdKg?t=31m1s
- Elixir Examples
- Build Organizations, Build Power https://youtu.be/jkFyz2LbdKg?t=31m31s
- Win Concrete Improvements https://youtu.be/jkFyz2LbdKg?t=27m24s