Andrew Forward

Software Developer (CrossFit HQ)
Ontario, Canada
I have a software engineering background with advanced degrees in computer science (BASc, MSc, PhD). I am very proficient with PHP, Ruby and Elixir, and also quite good in a dozen other languages and technologies. I have extensive federal government experience designing, building and maintaining large software applications, with some private sector experience. I am currently working at CrossFit HQ; a health, fitness and well-being company with thousands of affiliates worldwide. I also teach upper-year courses at the local University on topics including programming languages, web technologies and project management.

Let's Code -- Making Live Coding More Interactive (and Bearable) For Your Audience

Let's Code; together. Getting your audience involved (literally) in your live coding using a shared development sandbox. Giving a talk about a new language, or language feature? Planning to do some live demos? Afraid of bugs live on stage? You should be, because your audience definitely is. In this talk we will demonstrate an interactive teaching techinque to get your audience more involved when you want to *live code* some programming language concept. The approach will build on "live" code editors that are typically used for remote paired programming (or remote interview coding) and apply it for your conference (or meetup) presentation. Normally, live code editors provide an ability to keep remote clients in sync between all users. Rather than simply mimic this automatic syncing of code, each audience member will have their own working environment (in the cloud - so nothing but a browser required) and code can be selectively synced, pushed, pulled between audience members and/or the presenter. This allows your audience to individually try things out in real-time, but keeping the presenter in full control of the direction of the talk. It keeps the audience engaged and allows for better interactions as audience members can now "ask questions", "demonstrate alternatives", and help you "live debug" any oopsies in your code. The talk will dog-food itself a bit, as I will run through some of the basics of the Elixir language, as well as some of the technical concepts in the implementation of the service by sharing code samples within the environment itself, and anyone with a laptop could join in. The talk will also provide some additional technical insight into Phoenix Channels and Presence as the underlying features that make this type of tool possible.
Selection Status:

Other Presentation Selected

Scheduled For

Oh, the API Clients you'll build!

Congratulations! Today is your day. You’re off to Build API Clients! You’re off and away! You have Elixir in your head. You have GenServer, GenStage, and Streams to use. You can pipe (|>) your functions any many times as you choose. You interact with a web service usign a client. That could be as minimialistic as Curl, or your browser, but most likley you will access the API through a library written in the language of your application (e.g. Ruby, Elixir, PHP, etc). Some APIs publish official clients. (Un?)fortunately Elixir is not as in demand (yet!) as we would like, and usually is not available. Open source to the rescue, but some (well I) feel that implementing client access to an API is a great way to learn the API, as well as learn Elixir; especially if you want to take advantage of some of the unique characteristics Elixir has to offer. In this talk, we will be exploring a few popular APIs for + Infrastructure: DigitalOcean + Ecommerce: Questrade, Stripe + Email: Mailgun The talk will provide some more abstract implementation patterns that can generically apply to API client development including: + Elixir project structure (using Dave Thomas' template generator) + Managing API Endpoint / Payloads (e.g. URLs, HTTP verb, encoding, headers) + Authentication like OAuth + Logging / Persistence + Retries / Error Handling + Testing / Deployment Don't be afraid of NIH (Not Invented Here) syndrome when you are learning. Once your client is feature complete, you will now know the API relatively well, and at least one way to implement it. This should make your evaluation of existing clients much easier.
Selection Status:


Elixir's Greatest Hits: An brief, but rich, anthology of the some of Elixir's awesomeness

Elixir has been around since 2011/2012, and in those short years it has built up an excellent language, powerful tools and an inclusive community. In this talk, I wanted to guide you through some of those many great things. The talk will be organized as a collection of recipes, libraries, framework, code snippets and opinionated practices to help you on your own journey using Elixir. In particular, I hope to touch on some of the following + `mix gen` as a replacement to `mix new` + Using mix aliases to simplify a lot of commn tasks + Improve your unit testing with `mix` + Even better testing with `DocTest` + Distilling the best ways to configure your application + Setting up your Database with Ecto + Managing Ecto migrations like a Pro + Testing with a database using Sandboxes + Building a client to your favourite API + Building custom mix tasks + Building custom command line apps + A different approach to Elixir umbrella project + Keeping Ecto Separate from Phoenix + Deploying with Distillery This talk will hopefully inspire you with the resources to go off on your own and start (or continue) to build great things with Elixir and maybe even give back to the community with more (or better) ways to accomplish things in the language.
Selection Status: