Adding controller and view support for watching Threads and only emailing Users that are watching a given Thread.
Elixir
Become a Superuser!Implementing a Simple Neural Network in Elixir
Using an existing library to play with some simple neural networks.
Deploying a Phoenix App with Gatling
Using HashRocket's
gatling
tool to deploy a Phoenix app to DigitalOcean.
Code Spelunking in a Neural Network Library
A read-through of Karmen Blake's
neural_network_elixir
library.
How a Neural Network is Trained
Reading the code that trains an Elixir-based neural network.
Processes and Messaging
Processes are the unit of concurrency. We'll spawn some processes and let them have a conversation.
Elixir Weekly Drip #5 and Exercise: Fix Tests
Fixing the tests after last episode, and some Phoenix-related links.
GenServer and Supervisor
Building Generic Servers and Supervision Trees
Mix and Modules
Using the
mix
tool and defining modules, functions, and structs
Introduction to Elixir
Introduction to the language, and installation of Erlang and Elixir
Continuous Integration with Semaphore
Setting up continuous integration for an Elixir project using Semaphore CI.
Supervising Tasks and Agents
Using Supervisors to handle nuance within your Tasks and Agents.
GenStateMachine
Modeling a door with a numeric lock, to explore building Finite State Machines.
Intermediate Elixir Prep
Preparing to learn about managing state and testing.
Basic Elixir Syntax and Concepts
Learning the basics of the language, as well as how to run scripts.
Processes With State, and Agent
Managing state with processes and messaging, then seeing the Agent module from the Standard Library for a simpler way to do the same thing.
`for` Comprehensions
Handling enumerables and collections with power and grace.
Testing with ExUnit
An in-depth look at ExUnit, Test-Driven Development, and doctests.
Preparing to Learn about OTP
A solution to the Reverse Polish Notation Calculator exercise, and preparatory readings for learning about OTP.
Elixir Weekly Drip #3 and Exercise: Supervised RPN Calculator and Tape Printer
Interesting links and an exercise to build an RPN Calculator with GenServer, with a Tape Printer.
Preparing to Learn About Ecto
A solution to last week's exercise and some readings to prepare us to learn about Ecto.
Ecto Basics
Getting started with Ecto by creating a basic schema and querying it.
Ecto Validation with Changesets
Ensuring your data meets your requirements, flexibly.
Getting Started with Phoenix
Creating a new app and generating some resources.
Ecto Associations and More Queries
Exploring how to model associated data in Ecto and further details on queries.
Nested Resources in Phoenix
Categories have Threads, and our URLs should reflect that.
Preparing to Learn About Phoenix
Solving an Ecto exercise and preparing to learn about Phoenix.
Phoenix and the Frontend
HTML, CSS, and JavaScript are actual things.
Webpack2 with Phoenix
Replacing Brunch with Webpack in a Phoenix app
Authentication via OAuth
Using Ueberauth to authenticate users against OAuth providers.
Adding Posts to Threads with Database Transactions
Handling database transactions in style, with Ecto.Multi.
Using Ecto Associations in Phoenix
Being smarter about modifying and inserting associated data.
Phoenix Views, Templates, and Layouts
Making Firestorm look a bit more like it should.
Adding Notification Emails with Bamboo
Adding email notifications to our system using Bamboo and SendGrid.
Elixir Weekly Drip #2 and Exercise: Reverse Polish Notation Calculator
Links on documentation,
with
, control structures, Enumerables, and an exercise to build a Reverse Polish Notation Calculator.
User Authentication with comeonin and ueberauth_identity
Rolling a user authentication system that plays nicely with our existing ueberauth system via the ueberauth_identity strategy, using comeonin for hashing passwords.
Markdown Preview
Building an API endpoint and a JavaScript component for previewing Markdown while composing a post.
Page-Specific Titles
Rendering nice titles for each page in a Phoenix app.
Handling Inbound Emails from SendGrid
Using SendGrid's Inbound Parse feature to allow users to reply to posts from their email client.
Elixir Weekly Drip #1 and Exercise: String Upcaser "Microservice"
Further links for reading, and a gratuitous exercise to build a process that responds with the upcased version of any strings it is sent.
Styling User Details
Turning a mockup of Firestorm's user details view into working code, including responsive design with breakpoints and flexbox.
Feature Tests with Wallaby
Testing your Phoenix app in the browser, concurrently.
Customizing Earmark
Extending the Earmark markdown renderer to add auto-linking URLs and emoji replacement.
Feature Tests with Wallaby, Part 2
Testing user interaction with wallaby - fill out forms, click links, have fun!
Requiring a Logged In User
Adding a
RequireUser
plug to redirect guests when performing actions that require authentication.
Paginating a User's Posts
Fleshing out the rest of the user details template, and using
Scrivener
to handle pagination.
Rendering Markdown in Phoenix with Earmark
Getting started with a markdown renderer in the Firestorm Forum.
Using Slugs in Ecto
Using
ecto_autoslug_field
to generate slugs for our resources based on their titles.
S3 Direct Upload
Rapidly implementing S3 Direct Upload in a rich client.
Watching Threads via Polymorphic Associations
Exploring Polymorphic associations to add the ability to watch things in our Forum, starting with Threads.
In-App Notifications
Adding a system for viewing notifications inside of Firestorm.
Marking Posts Viewed
Adding a polymorphic View type and handling the corresponding UI bits and bobs.
Making oEmbed Not Terrible
Making our oEmbed support faster and less prone to failure
Adding Channels for our Data Store
Creating JSON representations of our resources and introducing a channel to fetch data from.
Adding Channels for our Data Store, Part 2
Encoding some business logic from the backend into our JSON serializations, and using
defdelegate
to assist in a refactoring.
Embedding Rich Data with oEmbed
Using an open standard to embed data from other sites in Firestorm posts.
Elixir Weekly Drip #4 and Exercise: More Queries
Some Ecto-related links and an exercise to write more detailed queries
Continuous Deployment to Heroku
Deploying to Heroku, then setting up Semaphore to continuously deploy on each push to master.
Monitoring with AppSignal
Add Performance Monitoring to a Phoenix app in five minutes or less.
--- Featured Lessons ---
Flash is dead; Mobile worm; Ionic survey results; AI optimization
Feedback request: What do you love or hate about the weekly drip, is something missing?...
Designing an Email Template
An overview of the best practices when designing email templates.
Build your own 8-bit character using Sass part IV
Automating character animation.
Build your own 8-bit character using Sass part III
Animating the character
Build your own 8-bit character using Sass part II
Styling the character using Sass.
Build your own 8-bit character using Sass Part I
Functions in Sass Outline: functions, directives, loops, conditionals, sass methods.