Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 5 additions & 0 deletions lib/erlef_web/endpoint.ex
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,11 @@ defmodule ErlefWeb.Endpoint do
plug Plug.RequestId
plug Plug.Logger

plug Plug.Static,
at: "/email",
from: {:erlef, "priv/email"},
gzip: true

# Note: This must be disabled if we switch to an env where there is no reverse proxy in front of this
# app.
if Erlef.is_env?(:prod) do
Expand Down
23 changes: 23 additions & 0 deletions priv/email/2025-01-21-eef-newsletter.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
<!doctype html><html lang="und" dir="auto" xmlns="http://www.w3.org/1999/xhtml" xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office"><head><title></title><!--[if !mso]><!--><meta http-equiv="X-UA-Compatible" content="IE=edge"><!--<![endif]--><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><meta name="viewport" content="width=device-width,initial-scale=1"><style type="text/css">#outlook a { padding:0; }
body { margin:0;padding:0;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%; }
table, td { border-collapse:collapse;mso-table-lspace:0pt;mso-table-rspace:0pt; }
img { border:0;height:auto;line-height:100%; outline:none;text-decoration:none;-ms-interpolation-mode:bicubic; }
p { display:block;margin:13px 0; }</style><!--[if mso]>
<noscript>
<xml>
<o:OfficeDocumentSettings>
<o:AllowPNG/>
<o:PixelsPerInch>96</o:PixelsPerInch>
</o:OfficeDocumentSettings>
</xml>
</noscript>
<![endif]--><!--[if lte mso 11]>
<style type="text/css">
.mj-outlook-group-fix { width:100% !important; }
</style>
<![endif]--><style type="text/css">@media only screen and (min-width:480px) {
.mj-column-per-100 { width:100% !important; max-width: 100%; }
}</style><style media="screen and (min-width:480px)">.moz-text-html .mj-column-per-100 { width:100% !important; max-width: 100%; }</style><style type="text/css">@media only screen and (max-width:479px) {
table.mj-full-width-mobile { width: 100% !important; }
td.mj-full-width-mobile { width: auto !important; }
}</style></head><body style="word-spacing:normal;"><div aria-roledescription="email" role="article" lang="und" dir="auto"><!--[if mso | IE]><table align="center" border="0" cellpadding="0" cellspacing="0" class="" role="presentation" style="width:600px;" width="600" ><tr><td style="line-height:0px;font-size:0px;mso-line-height-rule:exactly;"><![endif]--><div style="margin:0px auto;max-width:600px;"><table align="center" border="0" cellpadding="0" cellspacing="0" role="presentation" style="width:100%;"><tbody><tr><td style="direction:ltr;font-size:0px;padding:20px 0;text-align:center;"><!--[if mso | IE]><table role="presentation" border="0" cellpadding="0" cellspacing="0"><tr><td class="" style="vertical-align:top;width:600px;" ><![endif]--><div class="mj-column-per-100 mj-outlook-group-fix" style="font-size:0px;text-align:left;direction:ltr;display:inline-block;vertical-align:top;width:100%;"><table border="0" cellpadding="0" cellspacing="0" role="presentation" style="background-color:#c0dbf9;vertical-align:top;" width="100%"><tbody><tr><td align="center" style="font-size:0px;padding:10px 25px;word-break:break-word;"><table border="0" cellpadding="0" cellspacing="0" role="presentation" style="border-collapse:collapse;border-spacing:0px;"><tbody><tr><td style="width:150px;"><img alt="EEF Logo" src="https://erlef.org/images/EEF_Isotipo.png" style="border:0;display:block;outline:none;text-decoration:none;height:auto;width:100%;font-size:13px;" width="150" height="auto"></td></tr></tbody></table></td></tr><tr><td align="center" style="font-size:0px;padding:10px 25px;word-break:break-word;"><div style="font-family:Monserrat, sans-serif;font-size:24px;font-style:italic;font-weight:800;line-height:24px;text-align:center;color:#000000;">Erlang Ecosystem Foundation</div></td></tr><tr><td align="center" style="font-size:0px;padding:10px 25px;word-break:break-word;"><div style="font-family:Monserrat, sans-serif;font-size:20px;font-weight:600;line-height:24px;text-align:center;color:#000000;">January 2025 Newsletter</div></td></tr></tbody></table></div><!--[if mso | IE]></td></tr></table><![endif]--></td></tr></tbody></table></div><!--[if mso | IE]></td></tr></table><table align="center" border="0" cellpadding="0" cellspacing="0" class="" role="presentation" style="width:600px;" width="600" ><tr><td style="line-height:0px;font-size:0px;mso-line-height-rule:exactly;"><![endif]--><div style="margin:0px auto;max-width:600px;"><table align="center" border="0" cellpadding="0" cellspacing="0" role="presentation" style="width:100%;"><tbody><tr><td style="direction:ltr;font-size:0px;padding:20px 0;text-align:center;"><!--[if mso | IE]><table role="presentation" border="0" cellpadding="0" cellspacing="0"><tr><td class="" style="vertical-align:top;width:600px;" ><![endif]--><div class="mj-column-per-100 mj-outlook-group-fix" style="font-size:0px;text-align:left;direction:ltr;display:inline-block;vertical-align:top;width:100%;"><table border="0" cellpadding="0" cellspacing="0" role="presentation" style="vertical-align:top;" width="100%"><tbody><tr><td align="center" style="font-size:0px;padding:10px 25px;word-break:break-word;"><div style="font-family:Monserrat, sans-serif;font-size:16px;line-height:24px;text-align:center;color:#000000;"><a href="https://erlef.org/email/2025-01-21-eef-newsletter.html">Browser version ➚</a></div></td></tr><tr><td align="left" style="font-size:0px;padding:10px 25px;word-break:break-word;"><div style="font-family:Monserrat, sans-serif;font-size:16px;line-height:24px;text-align:left;color:#000000;"><h1>Coming up</h1>The EEF will be at <a href="https://fosdem.org/2026/">FOSDEM</a> representing and advocating for the ecosystem and sustainability. We have two speaking slots:<ul><li><b>Code and Compliance:</b> "Scaling Security from Zero", presented by Jonatan Männchen</li><li><b>Funding the FOSS Ecosystem:</b> "Build your funding toolkit", presented by Daniel Janowski</li></ul>If you'll be there, find us on the EEF slack and let us know.</div></td></tr><tr><td align="left" style="font-size:0px;padding:10px 25px;word-break:break-word;"><div style="font-family:Monserrat, sans-serif;font-size:16px;line-height:24px;text-align:left;color:#000000;"><h1>What's been happening</h1></div></td></tr><tr><td align="left" style="font-size:0px;padding:10px 25px;word-break:break-word;"><div style="font-family:Monserrat, sans-serif;font-size:16px;line-height:24px;text-align:left;color:#000000;"><h2>Events</h2></div></td></tr><tr><td align="left" style="font-size:0px;padding:10px 25px;word-break:break-word;"><div style="font-family:Monserrat, sans-serif;font-size:16px;line-height:24px;text-align:left;color:#000000;"><h3>CodeBEAM Europe (Berlin)</h3><ul><li>A dedicated Gleam track bringing together Gleamer and the curious. A tidy foreshadowing of <a href="https://gleamgathering.com/">GleamGathering</a> on 21 Feb in Bristol, UK.</li><li><a href="https://atomvm.org">AtomVM</a> had talks covering the platform, the new JIT, and a lightning talk too . Conspiracy pundits expect next year’s CodeBEAM to have four AtomVM appearances.</li><li>Deeper Erlang topics covered formal verification tools, error handling using assert, the scheduler, using TLA+ on GenServer, the new debugger in 28, gen_statem, optimization for 100+ core CPUs.</li></ul>Watch for the <a href="https://www.youtube.com/playlist?list=PLvL2NEhYV4Zsb00vrNRGm1db6CK53Yq5V">videos</a> as they come out.</div></td></tr><tr><td align="left" style="font-size:0px;padding:10px 25px;word-break:break-word;"><div style="font-family:Monserrat, sans-serif;font-size:16px;line-height:24px;text-align:left;color:#000000;"><h3>CodeBEAM Satellite Events</h3>The EEF coordinated events around CodeBEAM that extended the community experience. <a href="https://bitcrowd.net/en">bitcrowd</a> generously contributed space and coordinated local specialties like food.<ul><li>Tuesday evening: Nerves core member Gus Workman ran a hardware hands on session that gave attendees some experience writing a device driver</li><li>Thursday evening: the Berlin meetup gathered after the close of CodeBEAM with topics from the conference and others, bringing together local Berlin erlangers and elixirists with conference goers and speakers to talk, share and discuss.</li><li>Friday: Daniel Janowski of the EEF organized the first Berlin BEAM Unconference in collaboration with Josh Price of <a href="https://alembic.com.au">Alembic</a> and Chris Beck of <a href="https://bitcrowd.net/de">bitcrowd</a>. The Attendee generated and selected topics included discussion of how to improve our conferences, building broader adoption, visualizing Ash with Clarity and using Code Point in time, and finally a demo of Erlang-Red the flow based programming tool by Gerrit Riessen. Peter Saxton also demoed <a href="https://eyg.run">EYG</a> a tantalizing glimpse into what interactive program verification can look like.</li></ul>We are working on a community side event for ElixirConf EU in Málaga, on either 22 or 25 April.</div></td></tr><tr><td align="left" style="font-size:0px;padding:10px 25px;word-break:break-word;"><div style="font-family:Monserrat, sans-serif;font-size:16px;line-height:24px;text-align:left;color:#000000;"><h3>ExMex</h3>On November 6-7, the first <a href="https://exmexconf.com">ExMex</a> came to Austin, TX. And in the words of Nathan Hessler:<blockquote>Running ExMex was a joy from start to finish. The energy in the room, the quality of the talks, and the feedback we received from attendees about how meaningful and impactful the event was made it clear this community thrives when we gather in person. We’re incredibly grateful to the Elixir Ecosystem Foundation for helping make this long-held vision a reality.</blockquote></div></td></tr><tr><td align="left" style="font-size:0px;padding:10px 25px;word-break:break-word;"><div style="font-family:Monserrat, sans-serif;font-size:16px;line-height:24px;text-align:left;color:#000000;"><h2>Security Work</h2>There are three main areas of work in progress:<ul><li><a href="https://security.erlef.org/aegis/roadmap/source-sbom.html">Source SBOM</a>: Support in the default toolchain and integration into common industry Tooling.</li><li><a href="https://security.erlef.org/aegis/roadmap/supply-chain-security-audit.html">Supply Chain Security Audit</a>: Audit hex package manager, registry and integration into build tools such as rebar3, mix and gleam. (PenTest, Verification of Design, Code Audit)</li></ul><p>The EEF is also working on other grants with governmental entities that are interested in open source security and sustainability.</p><p>For more information, <a href="https://security.erlef.org/aegis/">see Ægis</a>, the EEF Security Initiative.</p></div></td></tr><tr><td align="left" style="font-size:0px;padding:10px 25px;word-break:break-word;"><div style="font-family:Monserrat, sans-serif;font-size:16px;line-height:24px;text-align:left;color:#000000;"><h2>General Sponsors</h2>We are happy to have some new and renewing sponsors that support the mission and work of the Foundation.<ul><li><a href="https://www.emqx.com/en">EMQ</a>: The Unified MQTT Platform: Connect, process, and stream real-time data from millions of devices to any cloud, AI, and analytics. Turn massive IoT data into actionable intelligence with EMQX Platform.</li><li><a href="https://plausible.io">Plausible Insights</a>: Easy to use and privacy-friendly Google Analytics alternative. Plausible is powerful, intuitive and lightweight analytics. No cookies just insights. Made and hosted in the EU, powered by European-owned infrastructure. 🇪🇺</li><li><a href="https://www.wyeworks.com">WyeWorks</a>: Inspiring people to build great software. We build software people love and enable companies to succeed.</li><li><a href="https://avassa.io">Avassa</a>: Remote, secure, and scalable application management in 10s, 100s, or 10 000s of edge locations.</li><li><a href="https://www.erlang-solutions.com">Erlang Solutions Ltd</a>: We build transformative solutions for the world’s most ambitious companies. By providing user-focused consultancy, high tech capabilities and connection to diverse communities.</li><li><a href="https://bitcrowd.net/en">Bitcrowd</a>: The German consultancy for small to large companies (Deutsche Bahn and Red Bull to Lufthansa) for projects requiring greater agility. Specializing in Elixir, with Rust and Go, and as a significant Elixir AI contributor, also an excellent partner for your AI/ML projects.</li><li><a href="https://www.pharos-avantgard.com">Pharos Avantgard (Pty) Ltd</a>: Pharos empowers communication service providers to save costs, accelerate revenue growth, and boost efficiency—so they can compete more effectively in the fast-moving, ever-evolving world of communications</li></ul></div></td></tr><tr><td align="left" style="font-size:0px;padding:10px 25px;word-break:break-word;"><div style="font-family:Monserrat, sans-serif;font-size:16px;line-height:24px;text-align:left;color:#000000;"><h2>Project Sponsors</h2><ul><li><b>OpenTelemetry</b> - Straw Hat, LLC (Yordis Prieto) contributed to advance Metrics.</li><li><b>Expert</b> - Enigmatic SA contributed to the Elixir language server.</li></ul></div></td></tr></tbody></table></div><!--[if mso | IE]></td></tr></table><![endif]--></td></tr></tbody></table></div><!--[if mso | IE]></td></tr></table><table align="center" border="0" cellpadding="0" cellspacing="0" class="" role="presentation" style="width:600px;" width="600" ><tr><td style="line-height:0px;font-size:0px;mso-line-height-rule:exactly;"><![endif]--><div style="margin:0px auto;max-width:600px;"><table align="center" border="0" cellpadding="0" cellspacing="0" role="presentation" style="width:100%;"><tbody><tr><td style="direction:ltr;font-size:0px;padding:20px 0;text-align:center;"><!--[if mso | IE]><table role="presentation" border="0" cellpadding="0" cellspacing="0"><tr><td class="" style="vertical-align:top;width:600px;" ><![endif]--><div class="mj-column-per-100 mj-outlook-group-fix" style="font-size:0px;text-align:left;direction:ltr;display:inline-block;vertical-align:top;width:100%;"><table border="0" cellpadding="0" cellspacing="0" role="presentation" style="vertical-align:top;" width="100%"><tbody><tr><td align="center" style="font-size:0px;padding:10px 25px;word-break:break-word;"><!--[if mso | IE]><table align="center" border="0" cellpadding="0" cellspacing="0" role="presentation" ><tr><td><![endif]--><table align="center" border="0" cellpadding="0" cellspacing="0" role="presentation" style="float:none;display:inline-table;"><tbody><tr><td style="padding:4px;vertical-align:middle;"><table border="0" cellpadding="0" cellspacing="0" role="presentation" style="background:#55acee;border-radius:3px;width:30px;"><tbody><tr><td style="font-size:0;height:30px;vertical-align:middle;width:30px;"><a href="https://twitter.com/intent/tweet?url=@TheErlef" target="_blank"><img alt="" src="https://www.mailjet.com/images/theme/v1/icons/ico-social/twitter.png" style="border-radius:3px;display:block;" width="30"></a></td></tr></tbody></table></td></tr></tbody></table><!--[if mso | IE]></td><td><![endif]--><table align="center" border="0" cellpadding="0" cellspacing="0" role="presentation" style="float:none;display:inline-table;"><tbody><tr><td style="padding:4px;vertical-align:middle;"><table border="0" cellpadding="0" cellspacing="0" role="presentation" style="background:#000000;border-radius:3px;width:30px;"><tbody><tr><td style="font-size:0;height:30px;vertical-align:middle;width:30px;"><a href="https://github.com/erlef" target="_blank"><img alt="" src="https://www.mailjet.com/images/theme/v1/icons/ico-social/github.png" style="border-radius:3px;display:block;" width="30"></a></td></tr></tbody></table></td></tr></tbody></table><!--[if mso | IE]></td><td><![endif]--><table align="center" border="0" cellpadding="0" cellspacing="0" role="presentation" style="float:none;display:inline-table;"><tbody><tr><td style="padding:4px;vertical-align:middle;"><table border="0" cellpadding="0" cellspacing="0" role="presentation" style="border-radius:3px;width:30px;"><tbody><tr><td style="font-size:0;height:30px;vertical-align:middle;width:30px;"><a href="https://bsky.app/profile/theerlef.bsky.social" target="_blank"><img alt="" src="https://erlef.org/images/social/Bluesky_Logo.png" style="border-radius:3px;display:block;" width="30"></a></td></tr></tbody></table></td></tr></tbody></table><!--[if mso | IE]></td><td><![endif]--><table align="center" border="0" cellpadding="0" cellspacing="0" role="presentation" style="float:none;display:inline-table;"><tbody><tr><td style="padding:4px;vertical-align:middle;"><table border="0" cellpadding="0" cellspacing="0" role="presentation" style="background:#0077b5;border-radius:3px;width:30px;"><tbody><tr><td style="font-size:0;height:30px;vertical-align:middle;width:30px;"><a href="https://www.linkedin.com/shareArticle?mini=true&url=https://www.linkedin.com/company/erlef&title=&summary=&source=" target="_blank"><img alt="" src="https://www.mailjet.com/images/theme/v1/icons/ico-social/linkedin.png" style="border-radius:3px;display:block;" width="30"></a></td></tr></tbody></table></td></tr></tbody></table><!--[if mso | IE]></td></tr></table><![endif]--></td></tr></tbody></table></div><!--[if mso | IE]></td></tr></table><![endif]--></td></tr></tbody></table></div><!--[if mso | IE]></td></tr></table><![endif]--></div></body></html>
Loading