I spoke at Oredev trying to explain and introduce Nerves to a general audience.
If you've been looking for something to show people that should be interested in Nerves for doing cool stuff with hardware and Elixir I'd love if you share it around. My previous talk at Oredev seems to have been fairly widely shared which was a fun surprise.

Expect good wallpaper and handwriting!
https://www.youtube.com/watch?v=xsL_cusf66c
#elixir #embedded

Besides regular schemas with universal foreign keys (Pointable), Needle provides Virtual for schemas that don’t have any fields on their own, and Mixin for storing common fields that can be re-used by multiple Pointables or Virtuals (eg. if you have multiple types that all have a name/description/body, they can share those and optionally the associated changesets and other logic).

#ecto#myElixirStatus #elixir

5/6

Needle also comes with two other homegrown libraries: needle_ulid which provides a ULID datatype for Ecto (using ex_ulid) and related helpers, and exto which enables extending Ecto schema definitions in config (especially useful for adding Mixin associations to different schemas)…
---
📣 🏴‍☠️ Camp! expedition: We have some open bounties to improve bonfire performance :
Read more: https://indieweb.social/@bonfire/112943944096656953
Repository: https://github.com/bonfire-networks/bounties
#ecto#myElixirStatus #elixir
6/6
But what if you don’t just have posts that can be liked, but also videos, images, polls, etc, each with their own table, but probably do not want to have to add liked_video_id, liked_image_id, ad infinitum?

We needed the flexibility to have a foreign key that can reference any referenceable object. We call our system Needle.

#ecto#myElixirStatus #elixir
4/6

Besides regular schemas with universal foreign keys (Pointable), Needle provides Virtual for schemas that don’t have any fields on their own, and Mixin for storing common fields that can be re-used by multiple Pointables or Virtuals (eg. if you have multiple types that all have a name/description/body, they can share those and optionally the associated changesets and other logic).

#ecto#myElixirStatus #elixir

5/6

A simple example would be a blogging app, which might have a post table with author field that references the user table.

A social network, by contrast, usually requires a graph of objects, meaning objects need to be able to refer to other objects by their ID without knowing their type.

A simple example would be likes, you might have a likes table with liked_post_id field that references the post table.

#ecto#myElixirStatus #elixir
3/6

But what if you don’t just have posts that can be liked, but also videos, images, polls, etc, each with their own table, but probably do not want to have to add liked_video_id, liked_image_id, ad infinitum?

We needed the flexibility to have a foreign key that can reference any referenceable object. We call our system Needle.

#ecto#myElixirStatus #elixir
4/6

Needle is one of several libraries we're releasing. Beyond creating extensions for Bonfire (like misinformation labeling or metadata extraction for scientific publications), we often need to build foundational functionality. We package these into reusable libraries for the wider Elixir ecosystem.

When using a relational DB (such an Ecto schema with a Postgres table), usually a foreign key field has to be pre-defined with a reference pointing to a specific field in a specific table.

2/6

A simple example would be a blogging app, which might have a post table with author field that references the user table.

A social network, by contrast, usually requires a graph of objects, meaning objects need to be able to refer to other objects by their ID without knowing their type.

A simple example would be likes, you might have a likes table with liked_post_id field that references the post table.

#ecto#myElixirStatus #elixir
3/6

Needle is an #elixir library that we have developed to provide universal foreign keys, shared data fields, and virtual & configurable schemas for Ecto.

🔗 Read the docs: https://hexdocs.pm/needle/readme.html
💬 Join the discussion on Elixir Forum: https://elixirforum.com/t/needle-universal-foreign-keys-shared-data-fields-virtual-and-configurable-schemas-for-ecto/65644

#ecto#myElixirStatus
1/6

🎯 Calling all Elixir developers to take on a bounty and get compensated for contributing to the commons!
Help us overcome key technical challenges and move closer to the Bonfire v1.0 release.

🔍 Discover more about our Bonfire cooperative bounty program: bonfirenetworks.org/posts/camp

Check out the current bounties and start contributing:
🧁 Improve DB query performance: github.com/bonfire-networks/bo
🧁 Improve feed rendering performance: github.com/bonfire-networks/bo


🧵 1/2

@stefan@gardenstate.social @tom @stefan@stefanbohacek.online definitively! bonfire is an open source framework for building federated digital spaces. Almost all the features are developed in their own extensions (plugins) that admins can enable from a dashboard. Most of the features are even split between UI and backend, to ease UX experimentations without having to maintain forks.
The framework is written in