Im extremely happy to announce that the wait is over, my Phoenix LiveView ebook, The Phoenix LiveView Cookbook is now available to purchase! 🎊
Those on the waiting list - check your emails for a juicy 15% discount code ❤️
#MyElixirStatus
@elixirphoenix
The one thing I've been jealous of from the JS ecosystem is a set of beautiful, out of the box components.
So I'm working on Bloom, an open-source Phoenix component library with installable UI.
mix task -> local copy -> customise
#MyElixirStatus
I just made my first sale on madepublic 😭
It's only £11.99 but that's £11.99 made from my own ideas, code, sweat and tears.
Thanks to everyone that's been using madepublic, and to my first paying user, this has made my week ❤️
#buildinpublic
I've been writing Elixir for almost 3 years now and today I published some handy tips and tricks no one bothered to lay out for me when I first started.
Have a look if you're writing Elixir!
#elixir
#phoenix
@elixirlang
@elixirdigest
@ElixirTip
I always forget that
@elixirlang
basically ships with Redis built in ❤️
Just optimised a data import of 1.2 million records via RabbitMQ and reduced the time taken from 21 minutes to 8m 20s with about 20 lines of code 🤯
Expect a blog post in the coming weeks
#myelixirstatus
Elixir is such a dream to work with 😍
Have a function in my latest project that kicks off a few OpenAI requests that can't continue until they're all done. Hit rate-limiting issues until I did this 👇🏼
It'll now pool the jobs 3 at a time til ready for another
#MyElixirStatus
Wrote a small blog post on how to integrate Google oAuth with Phoenix LiveView from start to finish.
mix phx.gen.auth is incredible, and this approach uses it to supercharge your LiveView auth experience in ~10 minutes.
#MyElixirStatus
Discovered a bug with LiveView with my team last week and
@josevalim
and
@chris_mccord
helped us debug it.
The creator of the language and the creator of the framework 🤯
Other stacks might have more adoption but they don’t have a community is like this ❤️
#MyElixirStatus
Excited to try this out - been looking for something a bit more UI focussed than Kaffy for a while
Backpex is a highly customizable administration panel for Phoenix LiveView applications.
#MyElixirStatus
I just hooked up my new app to use Tigris on
@flydotio
and I'm blown away.
So simple to get going with!
15 minutes later I have end to end file upload in my project ready to go.
I didn't even have to login to AWS 😭❤️
Wow.
#MyElixirStatus
⚡️ 🤩 Animations in LiveView have been made beautifully simple thanks to the new LiveView.JS functions - learn how to trigger them from the server via PubSub to react to user actions in real-time in my new post
#MyElixirStatus
@elixirlang
@elixir_radar
Once you experience Oban in Elixir, you'll never settle for less in other languages.
What Elixir feature or library gives you that same feeling?
#MyElixirStatus
Crazy initial launch for 🫣
I was blown away in the morning to get just one sale, let alone 12 hours later be looking at 40! 🤯
Thank you so much for the support, please DM me your feedback, I'll be aiming to improve the book over time!
#MyElixirStatus
Thrilled to announce that I'll be presenting a talk at
@ElixirConf
2023 titled "Handling async tasks in LiveView with style and grace"!
I'll be sharing tried and tested patterns for asynchronous task handling, management and feedback in LiveView!
#MyElixirStatus
Alright is pretty great. Any hesitance to writing for this platform just went out the window when I saw I can link it to my
@Medium
RSS feed and automagically cross-post!
Amazing.
Introducing - an AI meal generating and interactive shopping list generator micro-tool built using GPT-4 for the fitness and health community.
Say goodbye to boring meal plans and hello to delicious, personalized meals!
#buildinpublic
#MyElixirStatus
I just published Bloom 0.0.8 which comes with a landing page & email waitlist generator!
My speed run chops can definitely be improved but I think I get the point across in this video 👇
New Phoenix app equipped with a landing page + waitlist in < 2 minutes.
#MyElixirStatus
My favourite thing about the Google Search leak? Proof that Google uses Elixir 😍
We shouldn’t be shocked that some of the biggest tech organisations use Elixir and BEAM, it makes total sense
It’s just nice to see adoption spread high
#MyElixirStatus
Using the magic of
@elixirlang
, OTP and ETS I managed to speed up a 21 minute db import of 1.2m rows by 278% to 8m 20s 🤩
This stack really feels like cheat codes sometimes 🫠
Read below to find out exactly how I did it 👇🏼
#MyElixirStatus
Seeing pull requests roll in for bloom, and I'm so happy about it.
It's rough but it's slowly getting better!
Check it out if you're building web apps with Phoenix and Elixir
#MyElixirStatus
Elixir developers - do you think the introduction of types will elevate the language to new levels of popularity and utilisation?
Or do you think it might complicate the language's elegant simplicity?
#MyElixirStatus
Paging
@elixirlang
and LiveView enthusiasts 📣
Ever found yourself stuck on a problem while building a LiveView app and couldn't find a solution documented anywhere? Or confused about testing your LiveComponents? 🤔
Look no further 👇🏼
#MyElixirStatus
I cannot overstate how useful LiveBooks are for prototyping.
I wanted to test out some webscraping, and it just lets you play with Elixir and all its libraries without any friction or barrier.
Make it part of your workflow if you haven’t already
#MyElixirStatus
My latest project just so happens to use pretty much every Elixir goodie out there:
- Instructor for zero shot AI tasks
- Bumblebee
- Tigris and Fly for images and global hosting
- Oban for job scheduling
- LiveView for the UI
- Floki
What else am I missing?
#MyElixirStatus
And that's my talk!
Appreciate all the kind words since - if you wanted to look at the source code and follow how the demos evolved then feel free to have a play - will post the VoD when I have it!
Thanks to
@ElixirConf
for having me 🙏🏼
#MyElixirStatus
Just do everything on the server and send the result to the client instead of building an API so the client can turn the data into UI, everything is so much easier.
This is why LiveView is so good.
More secure, device performance is ignored, dev ex is better.
#MyElixirStatus
I have some LiveView Tailwind SaaS components I copy and paste around between projects I’ve accumulated.
Avatars, gradient text, Tooltips, side bars, etc.
Should I release them as an odd package or gists?
Is this the start of my component library?
Just watched this awesome video by
@josevalim
showing how you can now build a deploy ML apps directly to Hugging Face using
@livebookdev
🚀
This stuff honestly feels like magic.
Check the video out - it's done in 14 minutes!
#myelixirstatus
Little Elixir tip
Enum.count can take a function to filter by - so next time you're filtering a collection then counting the elements, consider doing it in one go.
#MyElixirStatus
I've been programming with
@elixirlang
for almost 5 years now and cast_assoc is still the thing that always gets me.. 😭
Feels so good when you _finally_ get it all going though
#MyElixirStatus
Okay, I take it all back -
@tailwindcss
is amazing.
I've been building with it for the last two weeks and the speed I've been styling features is insane 🤯
(
@elixirlang
is the other reason why it's progressing so quickly)
#MyElixirStatus
#buildinpublic
Supabase is incredible, so quick and easy to use - also powered by Elixir I believe 👀
And it's what's powering my new email sign up form for
Gonna be posting my detailed thoughts on it here in the coming weeks
#MyElixirStatus
#buildinpublic
Hyped for day 2 of
@ElixirConf
🎈
Yesterdays highlights for me were:
🐇 assign_async
🪵 Server logs in LiveView client console
📲 LiveView Native updates
😮💨
@aselder
awesome meta programming talk
#MyElixirStatus
Awoke at 6am, couldn't sleep so started my new project.
In < 1 hour (59mins !) I've:
- Implemented user accounts & auth
- Password resets
- Email verification
- Company creation
- Requiring a company to proceed
Thanks
@elixirlang
@elixirphoenix
❤️
#buildinpublic
#myelixirstatus
🥁💥🚀 is now live!
I've always struggled with interviewing my users to validate projects and determine what was working (and not working!) on my apps. So I created this tool to automate the process for me!
Packing a gorgeous, tiny 50kb Svelte widget,
Don't sleep on LiveView's JS interop.
I added ApexCharts to E2E in ~40 mins.
Don't automatically reach for Alpine.
LiveView has your back 90% of the time, but when you need JS, Hooks are great.
👇🏼🍿
#MyElixirStatus
Ignore the total lack of cable management but I just setup my streaming setup 🎉
Gonna be streaming Elixir and LiveView programming as well as bits and bobs around building applications in public.
First vid is gonna be on AI tools I use to speed up my dev flow
#MyElixirStatus
Boom! 241 sign-ups for LiveViewCookbook!
I'm grinding away on the book, sharing proven Phoenix LiveView patterns and testing recipes.
Haven't signed up yet? Do it now to get notified when it's ready and snag a delicious discount.
#MyElixirStatus
Non-programmers reading this might think I'm crazy but believe me when I say that there is an absolute euphoric feeling when you get into a programming flow and smash out a ton of functionality in a few hours.
Plus it's Elixir so it's actually enjoyable 😈
#MyElixirStatus
Elixir can be so elegant sometimes 😍
(Also, I'm not using the Ecto group_by because I'm going to stick some other things in here that don't come from the database very soon)
#MyElixirStatus
🤩 I actually love technical writing
I’m currently working on a draft of a LiveView Handbook to compile a set of commonly required tutorials in LiveView..
Would anyone be interested in a book about that? 👀
#LiveView
#MyElixirStatus
@elixirlang
The best thing I've learned in Elixir recently is `has_many` associations with the through option.
Essentially you can couple nested Ecto Associations to a parent and retrieve them super easily.
#MyElixirStatus
I'm almost done with the subscription event handling in LemonSqueezy using LemonEx. If you're an
@elixirlang
developer looking to integrate LemonSqueezy webhooks into your Phoenix app, I highly recommend checking it out 👇🏼
#buildinpublic
I’m going to be live-stream implementing search functionality in
@elixirlang
and LiveView for
@tinytaleshq
at 14:00 BST tomorrow!
It’s my first time streaming code 😬
Come along and support / learn / critique 🙏🏻
#MyElixirStatus
Absolutely obsessed with LiveBooks 🤩
Now storing them in our code repo for a new project that requires a lot of spikes.
Each spike gets its own LiveBook file which can document the code and explain the findings as we go.
❤️
@elixirlang
keeps getting better
#myelixirstatus
LiveBook has become one of my favourite tools for prototyping. I tend to jump into one now to try out new libraries or little ideas instead of spinning up temp projects these days.
How are you guys using it?
#MyElixirStatus
I really like
@supabase
but it is a little annoying that it kicks me out so frequently and I need to re-auth every day to see my dashboard...
Anyone else finding this or is it just when you oauth with github?
#buildinpublic
Trying to figure out what else I can add to liveviewcookbook.
So far I've got:
* oAuth Authentication
* LiveAssigns
* Flow
* AI workflows
What else?
#MyElixirStatus
The pendulum swings again: in the past, web frameworks *were* one person. But once applications grew in complexity and JavaScript started playing a bigger role in them, it was no longer the case.
This growth in complexity was what drove me way from web-dev back then. [1/6]
🤔 What do people recommend using for image storage as easily as possible with Elixir/Phoenix?
AWS S3 is cheap but it’s always a pain to configure
I’m hosting on if it makes a difference 🙏🏻
#MyElixirStatus
Happy New Year and happy new
@elixirlang
blog post!
It's been a while but I'm back!
In this one, I outline how you can set up a custom search engine in Chrome to take you to a packages Hex documentation instantly.
Enjoy! ♥️
#MyElixirStatus
Never underestimate how much good sleep can do 😴
Stuck on some complicated Ecto joins for hours - I go to sleep and fix it in 5 minutes when I wake up 🤦🏻
#MyElixirStatus
madepublic was subject to a credential stuffing attack while I was on holiday without access to my code.
I had to stop the attack and not be late for breakfast.
I've written about how I did that with
@elixirlang
hot-code swapping.
#MyElixirStatus
Photopea is absolutely amazing as someone who has 0 clue about using tools like Photoshop.
Spent the morning doing some final edits to and whipped up these lovely little mockups.
What do you think about the cover and mockups?
#MyElixirStatus
Watching the (great) modern t3 stack video from
@t3dotgg
and it's sad that Elixir and LiveView doesn't have more respect in the webdev community.
Features lauded as being amazing like Server Actions, Parallel Routes, have all been part of LiveView for years.
#MyElixirStatus
@heyolivehaus
If anything they just validated your product idea by having the same one.
This means more than one person thinks this thing has legs - keep going
No one will remember:
- Your fancy title
- Your salary
- How hard you worked
People will remember:
- That time you deployed to production on a Friday and ruined their weekend
Don’t do it.
(Unless you’re an indiehacker)
#buildinpublic
I love
@flydotio
and I usually stick to just running fly deploy to deploy my side projects because I figured setting up CI would be a pain.
I was completely wrong -
Literally 5 minutes of work and I just continue pushing to Github
#myelixirstatus
I’m going to start building a new Elixir/Phoenix LiveView platform from scratch in the next month or two and I’ve decided to start building in public (finally)
#MyElixirStatus
I love how flexible and quick LiveView can be
In this screenshot I'm reusing a form page for creating and editing a role - one tiny pattern matching function, one handle params and a line or two in my form and I'm ready to insert or edit an entity ❤️
#MyElixirStatus
Working on my liveview book this weekend - ironing out the chapter on asynchronous communications between components.
Sign up to know when it’s available soon here:
#myelixirstatus
Elixir Conf day 2 is full of goodies.
Vox, Erlang Dist Filtering, Ash 3.0, plenty of LiveView Native and Bumblebee ✨
If you're at the conference or watching online then consider attending my talk tomorrow morning about Async Task patterns in LiveView 🚀
#MyElixirStatus
⚛ React: - Free
@kentcdodds
's free course on the beginners guide to React is everything you need to start your journey in reactive front end applications
📚 Progress on my LiveView handbook is going well - so far I’ve written about JS interop, when to use components and live components vs LiveViews and how to do authentication mechanism.
Gonna get started on the tutorials soon 🔥
#MyElixirStatus
Almost ready to launch 🎉
Waiting on a few testimonials from early readers and Lemon Squeezy to approve the store! 🍋
Sign up to the waiting list for a 20% discount on release this week!
#MyElixirStatus
After 3.5 years, Friday was my last day at
@NETAPORTER
.
I feel honoured to have worked with and learnt from the most incredible people l could’ve ever hoped to meet 🧡
Also excited to say I’ll be starting at
@SkyscannerEng
tomorrow as a React Native developer! ✈️
🦅 Phoenix LiveView is absolutely incredible to work with - I'd love to see what other Elixir devs have built using it.
So far I've built and released 👇🏼🧵
#myelixirstatus
#buildinpublic
Ever used Elixirs Flow lib to accelerate and parallelise large collection workflows across all your cores?
Neither had I, until now.
Check out the new episode of my Overwatch Skin Voting system in Elixir & Phoenix LiveView, now live👇
#MyElixirStatus
@jonathan_wilke
@tailwindcss
From the docs:
For performance reasons browsers limit text balancing to blocks that are ~6 lines or less, making it best suited for headings.
Just a heads up for people to not put this on every P tag they have 😅
If you're ever in need of grouping by and counting the occurrences of an element in a collection in
@elixirlang
, don't forget about this magical little function
#myelixirstatus
LiveSvelte… a very interesting idea that may take away some of the LiveView pains people coming from other frameworks tend to have.
Thoughts?
#MyElixirStatus
Here's a little peak of how
@tinytales_hq
is shaping up ⚡️
AI generated audio books for kids custom-built to parents specifications using OpenAIs GPT-4 and DALL-E-2.
The library will be open for all users too.
What do you think? 👀
#buildinpublic
Fun fact
I don't just blur out the cells including the information for mealmind using CSS.
I also obfuscate the text so if someone is sneaky with CSS they can't steal the premium version without paying.
#buildinpublic
Morning Twitter-verse, here's my plan for today:
🏓 Squash in the morning
🥟 Dim sum for lunch at
@ShikumenUK
✏️ Working on for a few hours
Lets get it done 💪🏼
#buildinpublic
What's your Saturday plan?
YouTube is coming along slowly but surely, actually been finding it really fun to do.
Appreciate all the kind words and support for the videos I've been putting out around Elixir and LiveView development!
#MyElixirStatus
Thanks to some Timex magic (and a great feature suggestion from
@wuodaboge
- I've managed to get relative times for my feeds on with a few lines of code & the best Date/Time library around.
#buildinginpublic
really does work!
#MyElixirStatus
#indiehackers
Did you know? You can add another endpoint to your Phoenix app on a different port.
Super handy for exposing private APIs solely to your VPC. Microservices, rejoice! 💡
#MyElixirStatus
Get a big whiff of Bloom UI with
@codestirring
, an extension of Phoenix core components for
@ElixirLang
and LiveView projects. Plus, catch news on Livebook 0.13.x, the "2 Million Checkboxes" project, updated Parameterized Tests, and more!
#ElixirLang