<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="/feed.atom.xml" media="screen"?>
<feed xml:lang="en-US" xmlns="http://www.w3.org/2005/Atom">
  <id>tag:speakerdeck.com,2005:/evadne</id>
  <link rel="alternate" type="text/html" href="https://speakerdeck.com"/>
  <link rel="self" type="application/atom+xml" href="https://speakerdeck.com/evadne.atom"/>
  <entry>
    <id>tag:speakerdeck.com,2005:Talk/1524963</id>
    <published>2026-04-03T05:10:22-04:00</published>
    <updated>2026-04-03T05:12:00-04:00</updated>
    <link rel="alternate" type="text/html" href="https://speakerdeck.com/evadne/otp-why-and-how"/>
    <title>Deno + Elixir + Erlang/OTP WHY &amp; HOW</title>
    <content type="html">Intelligent AI agents can write code that calls existing APIs in secure sandboxes, allowing higher token efficiency, better performance, and lower per-turn latency. Deno’s primitives in Rust can be integrated into such an agent harness, utilising the Elixir programming language and the Erlang/OTP runtime, which allows you to construct agentic systems that are massively concurrent and fault-tolerant.</content>
<media:thumbnail url="https://files.speakerdeck.com/presentations/1418f3c3e9f244caa3119fe1cd57dd45/preview_slide_0.jpg?38978468" width='' height='' xmlns:media='http://search.yahoo.com/mrss/'></media:thumbnail>    <author>
      <name>Evadne Wu (@evadne)</name>
    </author>
  </entry>
  <entry>
    <id>tag:speakerdeck.com,2005:Talk/1019138</id>
    <published>2023-04-20T19:42:13-04:00</published>
    <updated>2023-04-21T16:44:32-04:00</updated>
    <link rel="alternate" type="text/html" href="https://speakerdeck.com/evadne/not-hotdog-revisited"/>
    <title>“Not Hotdog” Revisited</title>
    <content type="html">In this session, the speaker demonstrates the power of the Elixir ecosystem by replicating the hallowed meme “Not Hotdog” with conventional technology. The session covers the following tasks commonly seen in MLOps and application development in general.

Objectives:

1. To demonstrate the power of the Elixir ecosystem and the amount of engineering leverage available today

2. To promote the art of writing useful, inter-operable programs quickly based on the Unix philosophy.

3. To improve upon an ancient meme and bring joy to the community by creating shared experiences.

Scenarios:

- Perhaps one would like to integrate and run ML models after witnessing the power of Axon?

- Perhaps one would like to know how to architecture such services end-to-end while maintaining good operational hygiene?

Prerequisites:

- It is advised that the audience should have some prior experience in MLOps, however such experience is not required to enjoy the session.

- It is advised that the audience should have at least a rudimentary level of understanding of how Deep Learning models work (both training and deployment), having such experience will make the talk more enjoyable, however such experience is not required.

The talk will utilise a pre-trained model; due to the amount of time required, training will not be done during the session.

Outline:

- Defining the problem
    - Reviewing the scope of the problem
    - Arranging the flow of control and data channels
    - Designing overall system topology
- Integrating custom ML models in an Elixir system
    - Selecting and loading the Model
        - [If using Axon.Serving] Converting the Model for Axon.Serving using axon_onnx
    - Testing the Model in batched operation
      - Building a script to submit still frames
    - Adapting the Model for interactive operation
        - [If using Axon.Serving] Building the backend node with Axon.Serving
        - [If not] Building a custom C Node for high-performance interoperation
- Building the video pipeline with Membrane
    - Creating the overall Pipeline with Membrane
    - Extracting and converting raw video frames
    - Creating the backend for request submission
        - Implementing a rate limiter with backend back-pressure
- Providing interactivity with Phoenix LiveView
    - Creating custom JavaScript hooks &amp; UI elements
    - Integrating WebRTC feedback into the viewport
    - Overlaying on-screen annotations with Phoenix LiveView
- Review / Compare &amp; Contrast
    - Testing the Solution
    - Audience Q&amp;A

As presented at ElixirConf EU 2023 on 21 April 2023</content>
<media:thumbnail url="https://files.speakerdeck.com/presentations/d2a3e414f0184cbc890ed488ef77481e/preview_slide_0.jpg?25335398" width='' height='' xmlns:media='http://search.yahoo.com/mrss/'></media:thumbnail>    <author>
      <name>Evadne Wu (@evadne)</name>
    </author>
  </entry>
  <entry>
    <id>tag:speakerdeck.com,2005:Talk/672264</id>
    <published>2020-10-08T13:35:06-04:00</published>
    <updated>2020-10-08T13:45:07-04:00</updated>
    <link rel="alternate" type="text/html" href="https://speakerdeck.com/evadne/practical-elixir-streams-to-infinity-and-beyond"/>
    <title>Practical Elixir Streams — To Infinity and Beyond</title>
    <content type="html">By using Elixir Streams, you can make your application more responsive and consume fewer resources. Within this session, I shall explain how Streams work, and provide a few practical uses of Streams, with a live demonstration.</content>
<media:thumbnail url="https://files.speakerdeck.com/presentations/88e153ae4ee64b70bd81e8c3e9fad8a5/preview_slide_0.jpg?16440878" width='' height='' xmlns:media='http://search.yahoo.com/mrss/'></media:thumbnail>    <author>
      <name>Evadne Wu (@evadne)</name>
    </author>
  </entry>
  <entry>
    <id>tag:speakerdeck.com,2005:Talk/666071</id>
    <published>2020-09-14T12:41:05-04:00</published>
    <updated>2020-09-14T12:42:56-04:00</updated>
    <link rel="alternate" type="text/html" href="https://speakerdeck.com/evadne/the-holy-grail-of-isomorphism-packaging-elixir-for-desktop-apps"/>
    <title>The Holy Grail of Isomorphism: Packaging Elixir for Desktop Apps</title>
    <content type="html"></content>
<media:thumbnail url="https://files.speakerdeck.com/presentations/781db56408b947539db8d64cd002df7d/preview_slide_0.jpg?16269203" width='' height='' xmlns:media='http://search.yahoo.com/mrss/'></media:thumbnail>    <author>
      <name>Evadne Wu (@evadne)</name>
    </author>
  </entry>
  <entry>
    <id>tag:speakerdeck.com,2005:Talk/666069</id>
    <published>2020-09-14T12:38:20-04:00</published>
    <updated>2020-09-14T12:39:16-04:00</updated>
    <link rel="alternate" type="text/html" href="https://speakerdeck.com/evadne/processes-and-grains-a-journey-in-orleans"/>
    <title>Processes &amp; Grains — A Journey in Orleans</title>
    <content type="html"></content>
<media:thumbnail url="https://files.speakerdeck.com/presentations/0c5fa68fa129451abe6ddcaf8cf411a5/preview_slide_0.jpg?16269170" width='' height='' xmlns:media='http://search.yahoo.com/mrss/'></media:thumbnail>    <author>
      <name>Evadne Wu (@evadne)</name>
    </author>
  </entry>
  <entry>
    <id>tag:speakerdeck.com,2005:Talk/562941</id>
    <published>2019-10-11T09:46:16-04:00</published>
    <updated>2019-10-11T09:49:08-04:00</updated>
    <link rel="alternate" type="text/html" href="https://speakerdeck.com/evadne/lobbying-with-elixir-real-time-liveview-and-otp"/>
    <title>Lobbying with Elixir: Real-Time LiveView &amp; OTP</title>
    <content type="html">Learn how LiveView can supercharge your new service idea, with an example project which maintains game lobbies.

In this talk, you will learn from a constructed example how LiveView can supercharge your new service idea, with an example project which maintains online game lobbies. Follow us on a journey of Phoenix, LiveView and OTP. Walk away with weeks of your life now freed up for doing new things.

The expressive power of Phoenix LiveView has now been widely acknowledged by the community, with various teams adopting it within projects. This talk aims to provide an end-to-end view as to how it can supercharge your development process, by first constructing the design of a full-stack service with OTP, and then comparing various User Interface implementation strategies, inclusive of LiveView, Channels + Vue.js, and hand-crafted HTML/JS, among other approaches.

I will also cover various implementation strategies for integrating stateful backend services with front-end layers, which will make evident why the combination of LiveView and OTP primitives could provide you best bang for the buck.</content>
<media:thumbnail url="https://files.speakerdeck.com/presentations/3bb3d9fbc75f4ed5b3e076b90919ae09/preview_slide_0.jpg?13846661" width='' height='' xmlns:media='http://search.yahoo.com/mrss/'></media:thumbnail>    <author>
      <name>Evadne Wu (@evadne)</name>
    </author>
  </entry>
  <entry>
    <id>tag:speakerdeck.com,2005:Talk/530625</id>
    <published>2019-07-18T13:21:37-04:00</published>
    <updated>2019-07-18T17:46:36-04:00</updated>
    <link rel="alternate" type="text/html" href="https://speakerdeck.com/evadne/connection-proxying-with-phoenix"/>
    <title>Connection Proxying with Phoenix</title>
    <content type="html">In this presentation, I explain the need for a Service Mesh type solution to go with Elixir Umbrella projects, analyse existing approaches and present a new, consolidated way to achieve the same goals with much less cognitive overhead.

Presented at Code Elixir LDN 2019 as a Lightning Talk, with further revisions.</content>
<media:thumbnail url="https://files.speakerdeck.com/presentations/274c51b26d544851bf689e8af77e1a4e/preview_slide_0.jpg?13072451" width='' height='' xmlns:media='http://search.yahoo.com/mrss/'></media:thumbnail>    <author>
      <name>Evadne Wu (@evadne)</name>
    </author>
  </entry>
  <entry>
    <id>tag:speakerdeck.com,2005:Talk/509216</id>
    <published>2019-04-09T10:57:57-04:00</published>
    <updated>2019-04-09T10:59:26-04:00</updated>
    <link rel="alternate" type="text/html" href="https://speakerdeck.com/evadne/leveraging-ets-effectively"/>
    <title>Leveraging ETS Effectively</title>
    <content type="html">ETS is pervasive, yet invisible. With this talk, Evadne shall take the audience on a deep dive into ETS, look at its internals, and ways to leverage it effectively within Elixir apps.

This talk will cover: 
• ETS functions
• Forming Match Specifications
• Using ETS for ephemeral/preset data
• Integrating ETS with Ecto (Schemas, Repos)
• Moving beyond ETS

The audience should leave with knowledge on when/where to use ETS, and a few patterns that they can reuse.

Objectives:
• To elicit appreciation of Erlang/OTP subsystems that are usually taken for granted.
• To promote further usage of core Erlang/OTP technologies in the Elixir community, so as to enable better products and services.

Audience
• Developers who are curious about how the frameworks work
• Fans of the Actor Model
• People who want to see some actual code running in a demo
</content>
<media:thumbnail url="https://files.speakerdeck.com/presentations/397112445ffb4a86acf6477415fd8b2d/preview_slide_0.jpg?12307384" width='' height='' xmlns:media='http://search.yahoo.com/mrss/'></media:thumbnail>    <author>
      <name>Evadne Wu (@evadne)</name>
    </author>
  </entry>
  <entry>
    <id>tag:speakerdeck.com,2005:Talk/468438</id>
    <published>2018-10-06T09:16:11-04:00</published>
    <updated>2018-10-06T09:18:13-04:00</updated>
    <link rel="alternate" type="text/html" href="https://speakerdeck.com/evadne/fearless-concurrency-with-javascript-and-beyond"/>
    <title>Fearless Concurrency with JavaScript and Beyond</title>
    <content type="html">https://2018.webcampzg.org/talks/fearless-concurrency-with-javascript-and-beyond/
https://github.com/evadne/wczg-2018-concurrent-js</content>
<media:thumbnail url="https://files.speakerdeck.com/presentations/90d7b10ea33b4dc8bfc5827a7f87eb7a/preview_slide_0.jpg?10915573" width='' height='' xmlns:media='http://search.yahoo.com/mrss/'></media:thumbnail>    <author>
      <name>Evadne Wu (@evadne)</name>
    </author>
  </entry>
  <entry>
    <id>tag:speakerdeck.com,2005:Talk/459373</id>
    <published>2018-08-16T10:13:28-04:00</published>
    <updated>2018-08-16T13:56:27-04:00</updated>
    <link rel="alternate" type="text/html" href="https://speakerdeck.com/evadne/managing-externalities-in-a-functional-world"/>
    <title>Managing Externalities in a Functional World</title>
    <content type="html">The modern software developer is spoilt for choice. With the options available today, it has never been easier to build solutions, run experiments, and recover from mistakes. Cheap leverage however encourages incidental complexity, reduces the inherent need for cooperation, and obviates common standards.

Functional programming offers unprecedented leverage, which amplifies these externalities. Knowingly or not, in this way the modern software developer wields tremendous power, but at the same time walks on the knife's edge.

In this talk, Evadne will attempt to provide an overview of these externalities, the historical context, near- and long-term implications, and a few projections as to how things will play out. She will also share some ideas as to how we can mitigate these problems together as a community.

OBJECTIVES

The main objective of this talk is to provide a historic and humanistic perspective that can be used by software developers to interpret functional programming, and its meteoric re-emergence in the web development arena.

The secondary objective is to actually induct people into the world of functional programming by making its premises accessible, but at the same time ensuring that they start with a long-term positive mindset.

Evadne believes that a large number of Elixir developers initially adopted Elixir with a continuous improvement mindset. This talk aims to appropriately echo the mentality, examine the problems currently faced by the community and share potential approaches to be used in our own daily work.</content>
<media:thumbnail url="https://files.speakerdeck.com/presentations/89570a5df4e54fec9a6fb927f0e93240/preview_slide_0.jpg?10577207" width='' height='' xmlns:media='http://search.yahoo.com/mrss/'></media:thumbnail>    <author>
      <name>Evadne Wu (@evadne)</name>
    </author>
  </entry>
  <entry>
    <id>tag:speakerdeck.com,2005:Talk/439038</id>
    <published>2018-04-17T04:58:11-04:00</published>
    <updated>2018-04-25T12:24:41-04:00</updated>
    <link rel="alternate" type="text/html" href="https://speakerdeck.com/evadne/building-a-task-queue-system-with-genstage-ecto-and-postgresql"/>
    <title>Building a Task Queue System with GenStage, Ecto, and PostgreSQL</title>
    <content type="html">Most applications have background jobs that require managing. While a basic queue implementation is simple to write, it could riddle your system with tight coupling, and straddle the developers with multiple nearly-duplicate implementations.

In this talk, I will explain our design constraints for such a task queue system, and present an implementation, taking into account Elixir’s strengths in concurrency, state management, and node clustering. I will also examine the performance characteristics of such an implementation.
</content>
<media:thumbnail url="https://files.speakerdeck.com/presentations/8813b9eac13e4239932447dbc401b526/preview_slide_0.jpg?9829347" width='' height='' xmlns:media='http://search.yahoo.com/mrss/'></media:thumbnail>    <author>
      <name>Evadne Wu (@evadne)</name>
    </author>
  </entry>
  <entry>
    <id>tag:speakerdeck.com,2005:Talk/425650</id>
    <published>2018-01-24T16:54:45-05:00</published>
    <updated>2018-01-25T12:12:58-05:00</updated>
    <link rel="alternate" type="text/html" href="https://speakerdeck.com/evadne/genstage-in-practice"/>
    <title>GenStage in Practice</title>
    <content type="html">Our GenStage use case: a Postgres based job queue</content>
<media:thumbnail url="https://files.speakerdeck.com/presentations/6d8b1b0043534fc4825e15a13bce3d60/preview_slide_0.jpg?9298897" width='' height='' xmlns:media='http://search.yahoo.com/mrss/'></media:thumbnail>    <author>
      <name>Evadne Wu (@evadne)</name>
    </author>
  </entry>
  <entry>
    <id>tag:speakerdeck.com,2005:Talk/419097</id>
    <published>2017-11-30T10:12:09-05:00</published>
    <updated>2018-01-24T11:30:32-05:00</updated>
    <link rel="alternate" type="text/html" href="https://speakerdeck.com/evadne/multi-az-clustering-for-elixir-plus-phoenix"/>
    <title>Multi-AZ Clustering for Elixir+ Phoenix</title>
    <content type="html">A quick review of clustered deployment options on AWS + conceptual framework for networking architecture</content>
<media:thumbnail url="https://files.speakerdeck.com/presentations/c80dcc1319414fefb07a85778e73dc57/preview_slide_0.jpg?9298033" width='' height='' xmlns:media='http://search.yahoo.com/mrss/'></media:thumbnail>    <author>
      <name>Evadne Wu (@evadne)</name>
    </author>
  </entry>
  <entry>
    <id>tag:speakerdeck.com,2005:Talk/408710</id>
    <published>2017-09-26T16:43:53-04:00</published>
    <updated>2017-09-30T15:30:11-04:00</updated>
    <link rel="alternate" type="text/html" href="https://speakerdeck.com/evadne/practical-and-impractical-file-operations-in-phoenix"/>
    <title>Practical &amp; Impractical File Operations (in Phoenix)</title>
    <content type="html">A high level view of various file handling techniques that deliver high performance and smooth user experience while retaining security.</content>
<media:thumbnail url="https://files.speakerdeck.com/presentations/be9fa54a0ba94e2689f7ed5b7a2f32fb/preview_slide_0.jpg?8666874" width='' height='' xmlns:media='http://search.yahoo.com/mrss/'></media:thumbnail>    <author>
      <name>Evadne Wu (@evadne)</name>
    </author>
  </entry>
  <entry>
    <id>tag:speakerdeck.com,2005:Talk/403521</id>
    <published>2017-08-17T11:46:43-04:00</published>
    <updated>2017-08-17T11:47:58-04:00</updated>
    <link rel="alternate" type="text/html" href="https://speakerdeck.com/evadne/how-to-sell-elixir"/>
    <title>How to Sell Elixir</title>
    <content type="html">http://www.elixir.london/Elixir-LDN-2017/evadne-wu

* * *

Technical complexity is now a major cost of doing business and the Elixir/Erlang ecosystems offer appropriate tools to efficiently manage complexity. In its realisation we have built a product entirely based on this technology, and now have stories to share.
 
In this talk, Evadne will attempt to cover:
 
1. Their economic case for adopting this particular ecosystem, from both a development velocity point of view and a maintenance/cost point of view.
2. Problems they have faced and solutions they have come up with, both on an organisational level and a technical level, in realising the project.
3. Some ideas for technical leaders wishing to adopt Elixir for their next greenfield or brownfield project.
 
Talk objectives:
To provide the audience with an appropriate evaluation framework for candidate technologies (i.e. boss persuasion)
To provide a collection of anecdotes on our adoption of the Erlang/OTP and Elixir ecosystems for the benefit of the community (i.e. war stories)
To identify areas for further enhancement both within the technology stack, and around how the stack is enhanced. (i.e. work suggestions)
Target audience:
This talk is intended for technical team leaders and senior software engineers wishing to transition into a role with some more management responsibilities; it is also best suited for relatively small teams (5-25 developers) that have prior experience in developing web applications, since that is the audience who shall find the views most relatable.
Evadne is a London-based technologist with a passion for data visualisation and experience in technical management. She has experience in software architecture, application prototyping, and system operations management. Evadne presently serves as the Head of Exam Systems for Faria Education Group, which is an international education SaaS company with staff in UK, EU and USA.</content>
<media:thumbnail url="https://files.speakerdeck.com/presentations/c72cd3e2ce0c426094093aa89bd924b8/preview_slide_0.jpg?8430445" width='' height='' xmlns:media='http://search.yahoo.com/mrss/'></media:thumbnail>    <author>
      <name>Evadne Wu (@evadne)</name>
    </author>
  </entry>
  <entry>
    <id>tag:speakerdeck.com,2005:Talk/394005</id>
    <published>2017-05-31T17:57:10-04:00</published>
    <updated>2017-05-31T17:59:20-04:00</updated>
    <link rel="alternate" type="text/html" href="https://speakerdeck.com/evadne/the-many-faces-of-elixir-deployment"/>
    <title>The Many Faces of Elixir Deployment</title>
    <content type="html">A quick look into deploying your Elixir/Phoenix application on Amazon AWS with its EC2 Container Service</content>
<media:thumbnail url="https://files.speakerdeck.com/presentations/73f40e07d38e4107940bb71cc7c49fca/preview_slide_0.jpg?8074886" width='' height='' xmlns:media='http://search.yahoo.com/mrss/'></media:thumbnail>    <author>
      <name>Evadne Wu (@evadne)</name>
    </author>
  </entry>
  <entry>
    <id>tag:speakerdeck.com,2005:Talk/425943</id>
    <published>2018-01-26T13:18:35-05:00</published>
    <updated>2018-01-26T13:19:18-05:00</updated>
    <link rel="alternate" type="text/html" href="https://speakerdeck.com/evadne/elixir-interop"/>
    <title>C/Elixir Interop</title>
    <content type="html">libVIPS/Phoenix Case Study</content>
<media:thumbnail url="https://files.speakerdeck.com/presentations/043d48f297b04d81a5504c8466a940e5/preview_slide_0.jpg?9307916" width='' height='' xmlns:media='http://search.yahoo.com/mrss/'></media:thumbnail>    <author>
      <name>Evadne Wu (@evadne)</name>
    </author>
  </entry>
  <title>Evadne Wu (@evadne) on Speaker Deck</title>
  <updated>2026-04-03T05:10:22-04:00</updated>
</feed>
