Consistent preloading & auth in an app driven by Phoenix LiveView

Here’s how I came with an abstraction for consistently running initialization & authorization code in Pubray — an app that’s (almost) 100% routed & served via websockets without reloading the page. And how it turned out in practice after a year of heavy development.

Read more on the Pubray Engineering blog.

Slerp is hiring: Elixir Software Engineer

Slerp is transforming the hospitality industry. We provide a customisable e-commerce solution for hospitality brands, enabling them to transact with customers directly from their own website. Our partners can accept direct orders, manage their production planning and connect to delivery services of their choice (or deliver themselves), thereby controlling their brand image and customer data. We’re hiring a Elixir Developers; fully remote within the UK. https://apply.workable.com/slerp/j/56C3448A0A/

Senior Elixir Engineer at MEDWING

Dear Elixir community,

Founded in August 2017, MEDWING is a fast-growing healthcare start-up. Our mission is to serve as the most trusted and convenient platform for finding opportunities and working in healthcare.

Currently, we are looking for a Senior Engineer specialized in Elixir to join our team. Remote work is possible. If you’re looking for an onsite role, we will also support you with the relocation and visa process. https://apply.workable.com/medwing/j/AAA50BC5F2/

Please feel free to reach out to me at ipek.tosun@medwing.com or directly apply from the link above - if this new challenge sounds interesting to you :)

Best regards, İpek Tosun

How RV Technologies Follow A Mobile Development Process To Build Great Apps?

As a prominent app development company, we get a lot of queries such as, “How do you design your own app?” “How do you make an app from the ground up?” As a result, we’ve chosen to write a piece about how to design, develop, and launch a successful mobile app. An app improves user engagement, increases the number of repeat consumers, improves communication, and provides many other advantages. We will here list our step-by-step process for mobile app development on the basis of our experience and on the basis of our app development success. Read More:- https://rvtechnologies.com/how-rv-technologies-follow-a-mobile-development-process-to-build-great-apps/

Empirical approach to refactoring with churn dependency

We don’t touch the code in our projects with equal frequency. The tool for automatically discovering candidates comes in handy by identifying the most frequently modified files with high cyclomatic complexity. Then we can focus on these files and make changes to work with better codebase.

Check on: https://bartoszgorka.com/empirical-approach-to-refactoring

SmartLogic is hiring: Mid-level Elixir or Rails Developer

SmartLogic is a custom web and mobile dev shop; you may know us from the Elixir Wizards podcast we host, or the happy hours we run at ElixirConf. We’re hiring a mid-level Elixir or Rails Developer; fully remote within the US. https://apply.workable.com/smartlogic/j/EF96E4E771/

Building Aggregates in Elixir and PostgreSQL

In this article, we will describe the roles and implementation of aggregates in Elixir and PostgreSQL.

ThinkingElixir 056: Fly-ing Elixir Close to Users with Kurt Mackey

In episode 56 of Thinking Elixir, Kurt Mackey, founder at Fly.io talks about what makes the Fly platform unique and why hosting Elixir applications there makes a lot of sense. They started out looking to make a better CDN for developers and this pushed them to try deploying Full Stack applications closer to users, not just the static assets! We learn about the tech behind the networking, how databases can be moved closer to users, and how LiveView is even more awesome when it is close to users. Kurt also shares what he sees as the future for databases as the industry continues to move into globally distributed applications.

https://thinkingelixir.com/podcast-episodes/056-fly-ing-elixir-close-to-users-with-kurt-mackey/

Objext: An alternative to Struct and Protocol

I’ve always wanted Structs to be opaque by default.
So I built Objext which allows user to define opaque data structures.
For an “objext”, only the module that defines it can access its internal state, the other modules can only access these states via public functions.

Objext also provides macros to:

  1. define Protocol-like interfaces for “Objexts”.
  2. create mocks for testing purpose

Check it out and give it a try: https://github.com/dsdshcym/objext

Senior Elixir Engineer at MEDWING

Dear Elixir community,

Founded in August 2017, MEDWING is a fast-growing healthcare start-up. Our mission is to serve as the most trusted and convenient platform for finding opportunities and working in healthcare.

Currently, we are looking for a Senior Engineer specialized in Elixir to join our team. Remote work is possible. If you’re looking for an onsite role, we will also support you with the relocation and visa process. https://apply.workable.com/medwing/j/AAA50BC5F2/

Please feel free to reach out to me at ipek.tosun@medwing.com or directly apply from the link above - if this new challenge sounds interesting to you :)

Best regards, İpek Tosun

ThinkingElixir 055: Learning from Failure with Philipp Schmieder

In episode 55 of Thinking Elixir, Philipp Schmieder shares his experience of creating a LiveView application for a political party’s convention and then watching the app blow up! We learn how he recovered, why it failed, and how he fixed it going forward. We also discuss some other application architecture ideas and how they might work. It’s a great post-mortem discussion where Philipp shares his wisdom so others learn from the mistakes. After experiencing all this, find out why he’s still bullish on LiveView and Elixir!

https://thinkingelixir.com/podcast-episodes/055-learning-from-failure-with-philipp-schmieder/

Elixir: Practical Concurrency Cookbook

While the Erlang runtime is known for being a highly concurrent platform to which Elixir compiles, most of us end up solving the same problems in our daily jobs. We use Phoenix to bootstrap our web applications, write JSON APIs and sprinkle our pages with some javascript. And although it is true that simply by using Phoenix we’re already getting for free the whole concurrency model, the majority of the features we develop for our products don’t leverage all that often distributed Erlang, complex supervision trees or fleets of GenServers.

In this post, my intention is to highlight some common scenarios where we can leverage Erlang’s concurrency model as well as Elixir’s abstractions to build better, faster and more secure software. Think of it like… A cookbook.

https://functional.works-hub.com/learn/elixir-practical-concurrency-3794f

IntelliJ Elixir v11.12.0

Bug Fixes

  • Only descend into modular children of modular for Module scope. Prevents recursion loops on use calls.
  • Don’t search for unquoted variable value if variable is value for do:.
  • Protect from IndexNotReady in resolver.Module.multiResolveProject.
  • Stop walking unquoted variable that resolves to a parameter.
  • Walk case in __using__ to find quote in any clause. Fixes resolving test macro from use PowerAssert
  • Resolve functions declared in quote‘s scope when block injected with unquote(block). Fixes resolving field, timestamps, and index in schema for use Yacto.Schema as it makes the block see the import Yacto.Schema above unquote(block) in the quote in schema(…, do: block).
  • Convert MissingSDK errors for Dialyzer into Notifications.
  • Log element in psi.scope.Type instead of using TODO()
  • Add missing mix deps options to non-path influencing list.
  • Fix incorrect OuterElementType in eex.lexer.TemplateData.
  • Run QualifiedAlias#text in runReadAction for QualifiedAlias#name
  • Return null Chunk instead of throwing IOException when read incomplete due to partially written file.
  • Use TabbedPaneWrapper.AsJBTabs instead of JBTabbedPane for “BEAM Chunks” tabs to fix labels not showing up.
  • Don’t require Alias qualifier to be a PsiNamedElement to support ElixirAtom qualifiers.
  • Any.isDecompiled for CallDefinitionHead.

Enhancements

  • Find Deps in function calls in the deps() list.
  • Dep.putPath from a variable.
  • Treat Memoize defmemo as def and defmemop as defp.
  • Resolve exception/1 and message/1 to defexception.
  • Resolve to callbacks when searching in any module.
  • Support arity intervals for unquote_splicing in parameters.

Installation Instructions

LiveView course: Bindings, Click and Form events, Debounce, Live Flash messages

A new lesson of the free LiveView course in which we see how to start coding user interactions with bindings, debounce, live flash messages, click and form events etc.

Bindings, Click and Form events, Debounce, Live Flash messages

Monitoring Elixir Apps on Fly.io With Prometheus and PromEx

Monitoring application performance in production is important for staying ahead of customer reported issues. The prom_ex library helps expose key metrics (and custom ones too). But you need a Prometheus compatible system to gather and aggregate those metrics. Then Grafana can make it pretty to look at and see trends. Alex Koutmos, author of prom_ex, shows how to do that on the Fly.io platform using Fly’s built-in Prometheus metrics gathering and goes further showing how to get that data into Grafana.

I’ve set this up myself before in a Kubernetes cluster… but I’ve got to say, this is waaaaay easier!

https://fly.io/blog/monitoring-your-fly-io-apps-with-prometheus/

ThinkingElixir 054: AST Parsing using Sourceror with Lucas San Román

In episode 54 of Thinking Elixir, Lucas San Román explains his library Sourceror and how it was created to solve some AST parsing limitations. The Elixir parser discards code comments, so it can’t be used for re-writing Elixir code when refactoring. IDE’s often include more advanced refactoring tools and the ability to provide that requires a smarter parser. Sourceror keeps the comments while also providing advanced features like a Zipper API to more easily navigate around the source tree while inserting and removing nodes. Learn what Sourceror can do and what it can enable for future Elixir tools!

https://thinkingelixir.com/podcast-episodes/054-ast-parsing-using-sourceror-with-lucas-san-roman/

Three real-world examples of distributed Elixir (pt. 4)

👋 Hi there!

Here’s the fourth and last part of the Three real-world examples of distributed Elixir series. We will implement a distributed application version observer that broadcasts messages to the front-end recommending refreshing the browser when new versions containing potential breaking changes get deployed.

https://bigardone.dev/blog/2021/06/27/three-real-world-examples-of-distributed-elixir-pt-4

Happy coding!

What I learned from implementing Combinators in 3 Elixir patterns

In a recent project, I implemented combinator pattern with anonymous functions, behaviour modules, and protocols.

This process completely changed my understanding of functions and data.

Read the blog post for more details! https://yiming.dev/blog/2021/06/13/what-i-learned-from-implementing-combinators-in-3-elixir-patterns/

Rube - A multi-chain DeFi development toolkit for Elixir

Build upon the configuration DSL provided by slurp then control your on-chain event & transaction subscriptions via the slurpee and rube GUI’s.

Ships with support for the following DeFi protocols, with more on the way:

  • ERC20 Tokens
  • Chainlink
  • AMM’s (Uniswap/Sushiswap/Pancakeswap etc…)
  • Money Markets (Aave, Compound, C.R.E.A.M etc…)

https://github.com/fremantle-industries/rube

An Elixir Adoption Success Story

How one small team that was new to Elixir managed to over-deliver on a complex project in just three months. https://www.thegreatcodeadventure.com/an-elixir-adoption-success-story/

Previous page Next page