Event Sourcing and CQRS library Incident version 0.6.0 released
The version 0.6.0 handles race condition scenarios and other improvements. Check it out: https://hex.pm/packages/incident
Wallaby v0.28.0 released!
https://github.com/elixir-wallaby/wallaby
v0.28.0 (2020-12-8)
Breaking
-
Browser.assert_text/2
andBrowser.assert_text/3
now return the parent instead oftrue
when the text was found.
Fixes
- File uploads when using local and remote selenium servers.
Improvements
-
Added support for touch events
-
Wallaby.Browser.touch_down/3
-
Wallaby.Browser.touch_down/4
-
Wallaby.Browser.touch_up/1
-
Wallaby.Browser.tap/2
-
Wallaby.Browser.touch_move/3
-
Wallaby.Browser.touch_scroll/4
-
Wallaby.Element.touch_down/3
-
Wallaby.Element.touch_scroll/3
-
-
Added support for getting Element size and location
-
Wallaby.Element.size/1
-
Wallaby.Element.location/1
-
ThinkingElixir 025: Improving developer experience with Marlus Saraiva
In episode 25 of Thinking Elixir, we talk with Marlus Saraiva about his work creating Broadway, Surface, and ElixirSense! All of which work to improve the developer experience in Elixir! We start with Broadway, a library that makes working with GenStage even easier. We learn about his project Surface that brings a more react-like component model to LiveView. We then talk about his work on ElixirSense and ElixirLS which are used by editors to give code completion and documentation help. He covers where he thinks web development went wrong and what he thinks Elixir can do to improve it. We also cover where things may go with Surface and ElixirLS in the future, and much more!
Top 5 Elixir Skills for Junior Developers to Learn in 2021
Are you looking for your first job in Elixir? Check our list of Top 5 Elixir Skills for Junior Developers that will be relevant in 2021.
5 Phoenix open source projects to study
Read about Phoenix open source projects you can use to study Elixir/Phoenix code.
Planetary Scale Rust and Golang by Embedding WebAssembly in Elixir
Explore embedding high-performance Rust and Go web-assembly apps in Elixir: https://dev.to/hansonkd/planetary-scale-rust-and-golang-by-embedding-webassembly-in-elixir-45cm
Improving EventStore performance by 2x to 4x+
We recently improved EventStore’s performance by 2x to 4x+ (depending on network conditions) and blogged about it here: https://moosecode.nl/blog/event_store_optimized
UX with LiveView: Wiktionary III / Parser via Code = Data
In the part 3 of the language learning LiveView app series, I finalized the first version of the Wiktionary article parser. We don’t yet extract everything we want to, but we have an extensible parser now.
In the end, I arrived at a custom control flow approach via first-class functions / code is data technique, that simplified the parser logic significantly.
I will pause this series during December, since I’m doing Advent of Code streams in Rust now, but I’ll be back with more Wiktionary, LiveView, and parsing fun in January!
Reserved Backward Compatibility
One small step towards backward compatibility, one giant leap for mankind. Blogged on reserved fields and backward compatibility.
Link.
Elixir Wizards S5E1 Launchisode and Outlaws Takeover with Chris Keathley, Amos King, and Anna Neyzberg
Latest episode of Elixir Wizards is out today! Check it out here: https://smartlogic.io/podcast/elixir-wizards/s5e1-launchisode-outlaws-takeover/
Wisps - A touch of whimsy
It is entirely too easy to make simple stateful backends for delightful little things with Elixir and Phoenix. My latest one brings a bit of magic to my site: https://underjord.io/wisps-a-touch-of-whimsy.html
Bonus credit to Sasa Juric for removing the suck from SSL with site_encrypt.
Choosing Elixir version manager
Famous <a href=”https://nts.strzibny.name/elixir-version-manager/“>Elixir version managers</a> and how they differ.
Advent of Code Elixir Starter
https://github.com/mhanberg/advent-of-code-elixir-starter
This is the Elixir scaffolding I use when completing the advent of code challenges. It comes complete with:
- Modules and tests for each problem
- Mix task to run each problem
-
Benchmark your solutions with
mix d01.p1 -b
to run your solution with benchee.
Visual Elixir Reference
This is a guide I started working on when I started learning Elixir. It visually explains some of the functions of the Elixir standard library.
Any feedback is welcome!
Melvin Cedeno on Teaching Functional Programming with Elixir // Triangle Elixir Dec 15th 7PM ET
Melvin Cedeno will be presenting on Teaching Functional Programming with Elixir on Dec 15th at 7PM ET to the Triangle Elixir group; it’s online like everything is these days, so hop on and join us if you’d like.
ThinkingElixir 024: LiveView Uploads with Chris McCord
In episode 24 of Thinking Elixir, we talk with Chris McCord about the Phoenix LiveView 0.15.0 release which includes uploads! Chris explains the background on the release and his video showing it off. He shares his go-to stack when starting a new Phoenix project (HINT: it includes TailwindCSS). We talk about current gaps in the tooling and where things might go from here in both the short and long term. A great visit with lots of insights!
A minimalist LiveView testing guide
Let’s apply Sandi Metz’s minimalist unit testing guide to LiveView. There are so many parallels, and our tests benefit from Sandi’s wisdom.
https://www.germanvelasco.com/blog/minimalist-liveview-testing-guide
Domain-driven error handling. Don't handle errors - prevent them.
Good error handling is crucial, but the role of errors in software design is often underestimated. This post describes 4 techniques to improve error handling in your system by designing it with failures in mind.
https://mkaszubowski.com/2020/11/18/domain-driven-error-handling.html
Introducing MockMe Hex Package
This last week I published a Hex package for mocking third party APIs. This package starts a real http server when your tests run that mimics the third party api you’re connecting to. This allows you to easily write integration tests which test your entire code path as it would perform in production, complete with real HTTP requests and responses.
Use is as simple as defining a list of routes and running your tests.
%MockMe.Route{
name: :swapi_starships,
path: "/swapi/starships/:id",
responses: [
%MockMe.Response{
flag: :success,
body: MockMePhoenixExample.Test.Mocks.SWAPI.starships(:success)
},
%MockMe.Response{flag: :not_found, body: "starship-not-found", status_code: 404}
]
}```
I hope you find this pattern as useful as I have.
ThinkingElixir 023: Gleam and Static Types with Louis Pilfold
In episode 23 of Thinking Elixir, we talk with Louis Pilfold about how he created Gleam, a static typed language that runs on the BEAM. Louis explains some of the challenges with bringing static types to the BEAM and shares ideas on what can possibly be done about it. We learn how Gleam got started, how it works, and how Elixir and Erlang can interop with it. We cover the recently released Gleam OTP work, talk about Type Driven Development and much more!