If you're looking to move away from Postman look no further (especially
@elixirlang
devs)!
Watch me take advantage of a lot of new features to show how easy it is to test APIs through Merquery.
You don't want to miss this!
You can find the repo here:
If you work in
@elixirlang
you should 100% have a copy of this book
Don’t let the cover fool you though, Ecto isn’t just for use with databases.
It was specifically designed to be agnostic to your underlying data store
I made an AI-powered
@FFmpeg
video editor all in
@livebookdev
The whole notebook is 400 lines of code.
I want to give it away but I'm also vain and want more followers.
So when I reach 800 followers I'll release the code and make a video of how it works!
#MyElixirStatus
If you're wondering how to approach moving from Python to Elixir (ML) you should read this. It's not as daunting as it might seem. I go into detail about rewriting PyTorch to Nx and give some real examples.
#MyElixirStatus
I hit the ground running with Elixir ~6 months ago and since then I have published 2 packages and will be speaking at ElixirConf US. Here are 5 tips I have for Elixir beginners to optimize your experience learning the language.
#MyElixirStatus
The Elixir ML Ecosystem has grown rapidly and many new people are starting to adopt it. If you're coming from Python or otherwise unsure of where to start check out this post covering the basics of the Elixir ML libraries.
#MyElixirStatus
Ecto is cool, but Ecto + customization through macros is even cooler!
I built a schema macro to build the particular JSON validation functionality I needed, but I think it might be practical for more people.
Any interest in publishing this separately in Hex?
#MyElixirStatus
Ever wondered how companies are using
@elixirlang
? Here are some of the most interesting production use cases from well-known companies. The common theme is that Elixir helped them scale and serve higher volumes of traffic with oftentimes fewer lines of code 🧵:
A while back
@teej_dv
worked on a
@Twitch
command to play audio clips from his subscribers using
@elixirlang
While I'm sure he has full confidence in them, why not add some peace of mind?
Watch me implement an offensive content filter for it in < 4 minutes using
@livebookdev
@alejandroll10
@dmimno
I am partial to Elixir. Here are some of the Elixir alternatives to common Python DS libraries:
Numpy -> Nx
Tensorflow/Pytorch -> Axon
SKLearn -> Scholar
Transformers -> Bumblebee
Pandas -> Explorer
Jupyter Notebooks -> Livebook
XGBoost -> EXGBoost
It is a thriving ecosystem
There's a lot to love about
@elixirlang
, but something that might get overlooked is its visual elegance.
It's like onomatopoeia but for code.
Take for example this function that performs a series of matrix multiplications and compare it to the paper from which it's derived:
Introducing Mockingjay, an extensible Elixir implementation of
@Microsoft
's Hummingbird Decision Tree compilation algorithms.
Paired with Nx.Serving,
#Elixir
now has production-grade Decision Tree model serving.
#MyElixirStatus
TLDR: Elixir ML Ecosystem is growing fast and becoming quite competitive , especially for serving models in a distributed environment with something like Phoenix
@alejandroll10
@dmimno
I am partial to Elixir. Here are some of the Elixir alternatives to common Python DS libraries:
Numpy -> Nx
Tensorflow/Pytorch -> Axon
SKLearn -> Scholar
Transformers -> Bumblebee
Pandas -> Explorer
Jupyter Notebooks -> Livebook
XGBoost -> EXGBoost
It is a thriving ecosystem
As promised, new post is up where I show how to render live PDF Previews for
@elixirphoenix
Live Uploads.
Trying to get more consistent about posting, so go give it a read and let me know what you think!
#MyElixirStatus
A few days ago I showed off a demo for
@teej_dv
for identifying offensive audio content using machine learning.
But why stop there?
Just add
@ffmpeg
to the mix and you can then automatically censor the audio as well!
Still with
@elixirlang
and
@livebookdev
#MyElixirStatus
Elixir/Erlang NIFs open up a world of possibilities to Elixir developers, but they're not as well understood as they should be. Check out this blog post I wrote about my experience writing my first library with NIFs
#MyElixirStatus
Finally got around to adding support for request bodies in Merquery.
Now I think
@elixirlang
devs could reasonably use this over Postman.
And of course this can generate the code for you to use as well!
Give it a look and let me know what you think!
#MyElixirStatus
I'm having too much fun making this. I can't imagine using
@FFmpeg
any other way now!
This makes it so much easier for my reptilian brain to use such a powerful tool.
Powered
@livebookdev
and
@elixirlang
I’ve been thinking of making some videos featuring some of the lessons I’ve learned developing with
@livebookdev
. Would anyone be interested in it?
Should I just post them here on
@X
?
#MyElixirStatus
Thanks to
@josevalim
I reached my goal faster than expected.
Here's the long awaited code. Open issues as necessary. You can ask questions here about the code and I will try to address them in the follow-on video going over how it works.
I'm excited to announce the initial release of Exgboost, a gradient-boosted decision tree library written in
#Elixir
and powered by
@XGBoostProject
and Nx tensors
Source:
Docs:
#MyElixirStatus
The Req library from
@wojtekmach
is my favorite Elixir HTTP client, and plugins are just 1 reason why.
Plugins let you package repeatable steps in the Req lifecycle in a reusable way, and just add them like any other step.
Check this video to see how!
#MyElixirStatus
Thanks to
@polvalente
,
@elixirlang
now has its own Reinforcement Learning library! Check it out at . To better contextualize this release, check out how much has been done since just 2021. Hard to believe!
#MyElixirStatus
This is turning into a fun little
@livebookdev
project.
Maybe
@thmsmlr
can share some of his Kino wizardry with me so I can go faster.
More updates to follow, so stay tuned!
#MyElixirStatus
Here's an example of using Elixir's `dbg` that just helped me. All I had to do was add it at the end of my pipeline and it instantly made it obvious that I forgot to make my values unique before passing them to the Map.
#MyElixirStatus
When I published my article at 11pm last night and went to bed, I did not expect to wake up to it as the number 2 link on
@hackernews
. Thank you for everyone who has read it!
Showing off using toggling Req plugins plus working with
@livebookdev
secrets.
This might just be the best way to work with HTTP requests. Req already does so much of the work for you!
What are some must have features for this?
#MyElixirStatus
There was enough interest in this that I decided to extract this Ecto validation macro into a standalone repo.
Introducing Flint: Practical Ecto embedded schemas for data validation, coercion, and manipulation.
#MyElixirStatus
Ecto is cool, but Ecto + customization through macros is even cooler!
I built a schema macro to build the particular JSON validation functionality I needed, but I think it might be practical for more people.
Any interest in publishing this separately in Hex?
#MyElixirStatus
Elixir Tip of the Day
#2
: Use `__mix_recompile__?/0` to control when a module will be recompiled by Mix beyond its normal dependency tracking.
Here is an example from the docs which shows tracking when the contents of a directory changes.
#MyElixirStatus
Wondering how the AI-powered
@FFmpeg
tool I made works?
One word: Instructor
Being able to validate ffmpeg commands by using stderr to automatically retry feels like magic.
Thanks to
@thmsmlr
for making such a good library
And to
@jxnlco
for the various blog posts
Another day, a bit more progress.
@shahryar_tbiz
Previously suggested auto generating Postman-style smart cells base on your defined routes.
I got a working demo of it going, so you can interactively tests all of your routes with one command!
#MyElixirStatus
Excited to announce that I will be speaking at ElixirConf US this year. My talk is entitled "Nx Powered Decision Trees" and will cover the making and use of EXGBoost and Mockingjay -- the two libraries that enable Decision Tree Serving in Elixir
#MyElixirStatus
Just updated my article where I give an overview of the
@elixirlang
Machine Learning Ecosystem by adding sections for
@thmsmlr
's instructor_ex library and
@brainlid
's Elixir LangChain library.
Am I missing anything else?
#MyElixirStatus
In case you haven’t seen it, I made a Postman-like SmartCell for
@elixirlang
and
@livebookdev
that supports plugins and can autofill based on
@elixirphoenix
routes.
Still in the works, so if you want to see more go give it a star!
#MyElixirStatus
New blog post is up!
Here I talk about some lessons learned in converting NumPy code to
@elixirlang
with Nx. I show some side-by-side examples and discuss how I approached it.
Go check it out!
#MyElixirStatus
Inspired by a blog post I saw from
@indexsy
, I made a small SEO information tool inside
@livebookdev
.
This tool will search the top
@Google
search results and compare the terms used to your site using a TFIDF matrix.
What other features could I add to this?
#MyElixirStatus
I couldn't find any
@livebookdev
Kino to stream raw audio events, so I went ahead and made one!
Check out how in less than 90 lines of
@elixirlang
code you can capture audio, predict whether a voice is detected, and plot it live while streaming.
#MyElixirStatus
Officially in the comma club!
Appreciate everyone who follows me and especially those who take time to interact with my posts.
Also a special thanks to
@josevalim
, as I think he single handily drove 25% of my followers to my profile 😂
I spent some time this weekend setting up
@supabase
with
@elixirlang
and Ecto.
Who says it can't be helpful when writing a backend? I actually think it's the ideal way to use it.
Almost done with a blog post about it, should be out tomorrow.
#MyElixirStatus
Added tabs to support multiple queries for Merquery.
All tabs persist in the livebook as well. Only the current tab will output to source.
Check it out!
#MyElixirStatus
A sneak peek at my next blog post showing how to use
@mozilla
's PDF.js to add support for live PDF previews using
@elixirphoenix
Live Uploads.
You can extend the method to other file types.
(I'm not a web dev IDK if this method is any good)
#MyElixirStatus
When making Flint, my schema validation library built on Ecto, one of the primary use cases I had in mind was
@thmsmlr
's Instructor library.
I've used it a ton, but the boilerplate needed with even simple validations would become tedious. So this is my solution
#MyElixirStatus
I'm working on a series of blog posts about
@livebookdev
and extending it with Kino.
In the meantime, I've made a template for SmartCells that includes support for bundling with
@vite_js
and styling with
@tailwindcss
.
Enjoy!
#MyElixirStatus
In a recent video,
@t3dotgg
discusses potential pitfalls with using a Backend-as-a-Service.
While they offer great convenience and increased developer velocity, they promote poor security practices.
With
@supabase
you can get the best of both worlds.
I know some people mentioned making a
@shadcn
UI style component library for
@elixirlang
and
@elixirphoenix
where you’d use Mix tasks to install them. I want this now more than ever.
That plus a starter template a la
@marc_louvion
’s ShipFast would be amazing.
NimbleOptions is a small but very powerful library that I think everyone in the
@elixirlang
community should be aware of. Check out my latest blog post, where I share some advanced techniques that helped me when writing EXGBoost!
#MyElixirStatus
Ok, using Flow in
@elixirlang
kinda feels like cheating.
It just removes so many headaches for writing concurrent data processing pipelines, and I'm only just scratching the surface.
#MyElixirStatus
Working on my next blog post about rewriting NumPy to
@elixirlang
with Nx. Here's just a brief snippet showing a fairly intricate example from the SKLearn CountVectorizer.
What examples from Python do you want to see in Elixir?
#MyElixirStatus
Never struggle with using ffmpeg again!
With LLMs it's easier now than ever to make tools accessible to everyone.
Just say what you want to do and watch your videos, audio, etc. transform before your eyes.
Read to see how👇
Last night I checked out
@gleamlang
for the first time.
From the quality of the homepage, to the language tour, to the cheatsheets for people coming from certain languages, you can tell a lot of care was put into reducing adoption friction. Job well done
@louispilfold
!
Features are coming fast!
The success of this little project tells me that either this is a really good project or people are really fed up with Postman.
Have you considered moving on?
#MyElixirStatus
With EXGBoost, you can leverage
@XGBoostProject
models built in Python or other languages.
Here I show a quick demo of training a model in Python and visualizing it in
@elixirlang
and
@livebookdev
Keep training, serve the model, or visualize it to inform business decisions!
Another big update to Flint:
* Advanced validations with custom errors
* Input and output transformations on fields
* Support for function calls in validation expressions
and more...
Look how much expressiveness you can pack into your Ecto embedded schemas!
#MyElixirStatus
I'm ditching the idea of multiple clients for Merquery and going all in on Req.
First order of business is getting better support for loading and discovering plugins, since I think those are the heart of what makes Req great!
#MyElixirStatus
What if Livebook had Phoenix.LiveReloader?
Right now there is a chasm between Mix projects and Livebook. While Livebook gives a REPL-like experience and visuals, Mix gives you testing, multiple files, etc.
Often I find myself prototyping modules in Livebook, then refactoring
You can build some cool apps quickly with
@elixirlang
and
@livebookdev
!
Look at what
@thmsmlr
's instructor_ex library can do for you.
Generating comprehensive reports and summaries of GitHub repos! You could extend this too.
Should I deploy this for real?
#MyElixirStatus
Need insights into the links across your domain?
This will get every link across your domain and:
* Check for its current status
* Categorize it as Internal / External
* Link back to every source page that linked to it.
cc
@elixirlang
@livebookdev
#MyElixirStatus
Riding the wave of his new book announcement, you should also check out
@sean_moriarity
talk about one of the newer additions to the Elixir ML ecosystem: EXGBoost
It will also be the subject of my ElixirConfUS talk
#MyElixirStatus
Supabase auth is a breeze, but don’t let front-end devs have all of the fun!
You can still use Supabase auth even from your backend, and it might even be smarter to do so
Check out how with
@elixirlang
as an example
@src_rip
Nx == Basic Building blocks for numerical computing. Lower level but more versatile. Most of the other libraries are built from this.
Axon == neural networks built using Nx. You could build NNs from just Nx but Axon gives a layer of abstraction above that's purpose built for
New blog post from
@josevalim
shows just how far along Elixir ML has come in only the past quarter of the year. Hard to believe the whole ecosystem didn't exists back in 2020...
#MyElixirStatus
Thanks to
@polvalente
,
@elixirlang
now has its own Reinforcement Learning library! Check it out at . To better contextualize this release, check out how much has been done since just 2021. Hard to believe!
#MyElixirStatus
I want to give a big shoutout to
@akoutmos
for being my first
@github
Sponsor!
It means a lot, and I'm excited to keep working on open-source.
If anyone else wants to help contribute to my work, my Github Sponsor profile is below.
Thanks again Alex!
Slides are available here for my talk on Monday. Thanks again to
@paraxialio
for the invitation!
It's about my first year with
@elixirlang
, my experience with open-source, and general takeaways about programming language adoption.
#MyElixirStatus
I had such a good time at my first
@ElixirConf
. Great to meet everyone in person, especially those who've helped me with my open-source libraries.
Many of the talks, such as those from
@sean_moriarity
,
@toranb
,
@charliebholtz
, and Katelynn Burns, talked about the adoption of
If you work in
@elixirlang
you should 100% have a copy of this book
Don’t let the cover fool you though, Ecto isn’t just for use with databases.
It was specifically designed to be agnostic to your underlying data store
Elixir Tip of the Day
#3
: You can use the `match?/2` macro to perform guarded matches. This can be a more concise way to perform filtering during enumerations. Combine with `defguard/1` macro to create complex and powerful matches.
#MyElixirStatus
is a great way to discover
@livebookdev
notebooks, but you can't search specifically for Smart Cells, so I made this quick Livebook to search for them across GitHub and display as a table.
Lots of hidden gems!
#MyElixirStatus
Easily colocate your validations and schemas now with Flint
Right now it supports options from 6 of the builtin Ecto.Changeset validations.
Just pass the option on the field and it'll be validated in the generated changeset function.
#MyElixirStatus
I appreciate the shout out for my new library Merquery on the latest
@ThinkingElixir
news roundup!
If you haven’t, you should go listen and hear a bit about it along with all of the other
@elixirlang
news.
Check out the project:
#MyElixirStatus
I got so caught up working on Flint I forgot to show off the new import and download feature of Merquery!
Now you can either upload or paste a saved Merquery JSON file to store your queries for later!
#MyElixirStatus
Now it really feels like talking to your media. Powered by
@ffmpeg
and ffprobe, you can use natural language to learn more about your media plus transform it.
Get the results from stdout & stderr summarized too
Watch this demo to see what I mean. It really steps it up a notch!
I'm having too much fun making this. I can't imagine using
@FFmpeg
any other way now!
This makes it so much easier for my reptilian brain to use such a powerful tool.
Powered
@livebookdev
and
@elixirlang
Inspired by
@TylerAYoung
's example_test library, I made a Truth Table library for those who think about complex boolean conditions as truth tables.
Get rid of your nasty if/else, cond, or case ladders!
#MyElixirStatus
Learn to serve spam detection machine learning models with
@elixirlang
and
@livebookdev
.
Livebook is one of the best learning tools Elixir has to offer, and here I used it for my
@ElixirConf
talk this past week. Let me know what you think!
I know that many people have reservations about Elixir gaining support for typing but I have high confidence that
@josevalim
and the whole
@elixirlang
team working on it will ensure it's done right and it will be a huge net positive for the language.
Tomorrow marks 13 years since the first commit to the Elixir repo. And today we celebrate by announcing that Elixir is, officially, a gradually typed language:
New blog post alert!
Here I talk about using custom sigils to extend Elixir's data structures by implementing the Enumerable protocol.
It's a small 1-file library that I'm currently using in 2 of my other libraries, and I'm loving it!
#MyElixirStatus
Exciting new features coming to Flint!
* Ecto Union type
* :when option to define validations as arbitrary boolean expressions
* Derived fields let you assign the result of an expression as the field value before applying validations
#MyElixirStatus
For those porting code from NumPy to Elixir Nx, here's an example where I converted SKLearn's Count and TFIDF vectorizers to Nx for you to reference:
* SKLearn:
* Nx:
Could be helpful to see the comparison.
#MyElixirStatus
Made a new Req plugin to parse robots.txt files.
Added it to a new ReqCrawl library where other crawling related plugins can go.
Suggestions for more Req plugins are welcome!
#MyElixirStatus
When I saw
@derekkraan
's new CurlReq library, I knew I had to integrate it with Merquery!
Soon you'll be able to import from a cURL command or copy your Merquery smart cell as a cURL command.
Check out this plus another feature I'm adding!
#MyElixirStatus
Added support for audio files as well, so you can seamlessly move between audio and video files using natural language.
~70 more followers and I'll release the code :)
#MyElixirStatus
I made an AI-powered
@FFmpeg
video editor all in
@livebookdev
The whole notebook is 400 lines of code.
I want to give it away but I'm also vain and want more followers.
So when I reach 800 followers I'll release the code and make a video of how it works!
#MyElixirStatus