Jakub Skaล‚ecki ๐Ÿš€ #buildinpublic's Avatar

Jakub Skaล‚ecki ๐Ÿš€ #buildinpublic

@jskalc.bsky.social

Creator of live_vue โค๏ธ Father of 2, indie maker ๐Ÿ‘‰ building SaaS https://postline.ai ๐Ÿง‘โ€๐Ÿ’ป in love with the #ElixirLang ๐Ÿงช Follow for updates! #buildinpublic X profile -> https://x.com/jskalc

290 Followers  |  59 Following  |  54 Posts  |  Joined: 27.11.2024  |  2.1983

Latest posts by jskalc.bsky.social on Bluesky

See you there! ๐Ÿ’œ

14.05.2025 11:37 โ€” ๐Ÿ‘ 1    ๐Ÿ” 0    ๐Ÿ’ฌ 0    ๐Ÿ“Œ 0
image

image

image

image

image

image

This is one of the coolest things I built recently ๐Ÿ™ƒ

If YOU are an OSS maintainer with a bunch of repos on your shoulders, you may find it useful - ping me if you'd like to test it out when I actually deploy the thing.

#buildinpublic #opensource #github #automation

17.03.2025 15:29 โ€” ๐Ÿ‘ 23    ๐Ÿ” 6    ๐Ÿ’ฌ 1    ๐Ÿ“Œ 2
Preview
Added ~LIQUID sigil by Valian ยท Pull Request #151 ยท edgurgel/solid Add ~LIQUID sigil for compile-time template validation I'm using Solid a lot in my project for writing AI prompts. This PR introduces a new ~LIQUID sigil that validates Liquid templates at comp...

My PR was merged and now we have ~LIQUID sigil in the newest release of Solid package! ๐Ÿ˜ Available in v0.18. Big thanks to @Edwardo Gurgel for looking into this so quickly!

#elixirlang #myelixirstatus

https://github.com/edgurgel/solid/pull/151

03.03.2025 11:23 โ€” ๐Ÿ‘ 9    ๐Ÿ” 0    ๐Ÿ’ฌ 2    ๐Ÿ“Œ 0
image

image

image

image

Elixir sigils are extremely powerful ๐Ÿค“

To prepare AI prompts, we're using Liquid templating language.

I've created a sigil validating our templates at compile time. It gives us instant feedback if everything's OK ๐Ÿ‘Œ

Now onto`~ASSISTANT`, `~USER` sigils ๐Ÿ˜‚

#elixirlang

28.02.2025 08:00 โ€” ๐Ÿ‘ 10    ๐Ÿ” 3    ๐Ÿ’ฌ 0    ๐Ÿ“Œ 0
image

image

Just found another use case for cursor - filling up *.po translation files.

Elixir and Phoenix manages them through a great library Gettext. Running `mix gettext.extract` creates these files for you with missing translations, and Cursor fills them.

It's so easy ๐Ÿ˜

#elixirlang

04.02.2025 10:25 โ€” ๐Ÿ‘ 2    ๐Ÿ” 0    ๐Ÿ’ฌ 0    ๐Ÿ“Œ 0
Preview
a man in a suit stands in front of a group of people and says i was being discrete ALT: a man in a suit stands in front of a group of people and says i was being discrete

Well I wrote a tweet like a week ago I was accepted ๐Ÿ˜… literally couldn't be more discrete ๐Ÿ˜‚

22.01.2025 19:42 โ€” ๐Ÿ‘ 3    ๐Ÿ” 0    ๐Ÿ’ฌ 0    ๐Ÿ“Œ 0

We all keep learning! ๐Ÿ˜

22.01.2025 16:57 โ€” ๐Ÿ‘ 1    ๐Ÿ” 0    ๐Ÿ’ฌ 0    ๐Ÿ“Œ 0

Holy cow! I've just re-read email I've got from them and indeed they asked not to announce it.

I don't know how I could've missed it ๐Ÿ˜…

22.01.2025 16:56 โ€” ๐Ÿ‘ 4    ๐Ÿ” 0    ๐Ÿ’ฌ 1    ๐Ÿ“Œ 0
Post image

Personally I use it quite often, for things like autocomplete etc. No need to put these in the socket just to display in the UI for a moment.

So IMO, {:reply, value, socket} is needed because it allows to return some value directly to the client. Re-rendering is triggered on assigns.

22.01.2025 16:45 โ€” ๐Ÿ‘ 4    ๐Ÿ” 0    ๐Ÿ’ฌ 1    ๐Ÿ“Œ 0

Reply tuple returns value directly to the client, without saving it to the socket. You can use it when using eg pushEvent in a hook, in a callback.

So it has nothing to do with re-rendering ๐Ÿง

22.01.2025 16:39 โ€” ๐Ÿ‘ 2    ๐Ÿ” 0    ๐Ÿ’ฌ 2    ๐Ÿ“Œ 0

I'm speaking at @elixirconfeu.bsky.social this year in Krakow. I'll be talking about distributed Elixir and some basic ways in which you can get value out of it without making things complicated for yourself. It's a very practical talk to expect to come away with some recipes! #ElixirLang

22.01.2025 15:55 โ€” ๐Ÿ‘ 46    ๐Ÿ” 10    ๐Ÿ’ฌ 2    ๐Ÿ“Œ 0

Very interesting topic. I believe many people don't use distributed festures because they fear complexity involved.

Looking forward to meeting you there! ๐Ÿ˜‰

22.01.2025 16:36 โ€” ๐Ÿ‘ 1    ๐Ÿ” 0    ๐Ÿ’ฌ 0    ๐Ÿ“Œ 0
image

image

I really like Cursor agents mode. It works well even for moderately complex Elixir features!

We're applying for LI API and we needed an easy way to login without social auth. Cursor did it on it's own ๐Ÿ˜ฒ

AI browsing code, writing & running tests is amazing ๐Ÿ˜

#myelixirstatus

21.01.2025 11:52 โ€” ๐Ÿ‘ 8    ๐Ÿ” 2    ๐Ÿ’ฌ 1    ๐Ÿ“Œ 1
Post image

My @elixirconfeu.bsky.social talk "Why combining LiveView and a frontend library is a great idea" was just accepted! I'm so pumped๐Ÿ˜

It's my very first Elixir conference. I can't wait to be there and meet y'all nerds! ๐Ÿฅณ

#elixirlang

17.01.2025 22:54 โ€” ๐Ÿ‘ 9    ๐Ÿ” 1    ๐Ÿ’ฌ 0    ๐Ÿ“Œ 0

I had exactly this problem. I don't see an easy solution.

In the end I ditched HEEX and replaced it by Vue. It renders HTML based on props, and LiveView handles events & provides top-level props with end-to-end reactivity.

There's a clear place for everything ๐Ÿ˜

17.01.2025 22:49 โ€” ๐Ÿ‘ 0    ๐Ÿ” 0    ๐Ÿ’ฌ 1    ๐Ÿ“Œ 0
Preview
OSS Oban Web & Oban v2.19 From open sourcing Oban Web, to releasing Oban with MySQL support, Web v2.11, and plan simplifications

๐Ÿ“ฏ Oban Web is open Source
๐Ÿฌ Oban v2.19 includes MySQL support
๐Ÿงญ Web v2.11 is released
๐Ÿ“Š Met v1.0 is released (and open source)

oban.pro/articles/oss...

#elixirlang

16.01.2025 17:37 โ€” ๐Ÿ‘ 117    ๐Ÿ” 37    ๐Ÿ’ฌ 7    ๐Ÿ“Œ 10

Let me know if you'd need some help!

17.01.2025 08:17 โ€” ๐Ÿ‘ 1    ๐Ÿ” 0    ๐Ÿ’ฌ 0    ๐Ÿ“Œ 0

So LiveVue is inspired by LiveSvelte, and LiveReact inspired by LiveVue ๐Ÿ˜

All work in a similar way. I'm a huge Vue fan so that's the reason ๐Ÿ˜€

Tbh, I had some issues with HEEX. Eg. there's no place for client-side state so you need to work around. With Vue everything has a place ๐Ÿ˜

15.01.2025 20:55 โ€” ๐Ÿ‘ 1    ๐Ÿ” 0    ๐Ÿ’ฌ 1    ๐Ÿ“Œ 0

I've created and using LiveVue in production ๐Ÿ˜

In my current project all LiveViews render only a single Vue component. Then Vue takes over, and based on props renders the app.

Props are reactive - any change in assigns is reflected in Vue.

So far my favourite stack! ๐Ÿ’œ

PS I might be biased ๐Ÿ˜‚

15.01.2025 20:40 โ€” ๐Ÿ‘ 1    ๐Ÿ” 0    ๐Ÿ’ฌ 1    ๐Ÿ“Œ 0
Post image

The struggle is real.

24.12.2024 16:24 โ€” ๐Ÿ‘ 8237    ๐Ÿ” 1972    ๐Ÿ’ฌ 79    ๐Ÿ“Œ 247

You can find an article here: https://chrisdone.com/posts/htmx-critique

21.12.2024 08:00 โ€” ๐Ÿ‘ 0    ๐Ÿ” 0    ๐Ÿ’ฌ 0    ๐Ÿ“Œ 0
image

image

I've just read an interesting article about HTMX strengths and weaknesses ๐Ÿค”

โŒ Critiques client-side state management in HTMX

โœ… Praises lack of duplication between front & back end logic

The fun part? Author suggested something that is exactly what LiveVue does ๐Ÿ˜

#elixirlang

21.12.2024 08:00 โ€” ๐Ÿ‘ 1    ๐Ÿ” 0    ๐Ÿ’ฌ 1    ๐Ÿ“Œ 0

I've seen people with 3000+ hours ๐Ÿ™ˆ

Still, I envy you. It's great to optimize the factory for the first time. Over time you find your best designs ๐Ÿ˜‰

...until you install Space Age. 70h in DLC, about 30% completion ๐Ÿ˜†

20.12.2024 23:53 โ€” ๐Ÿ‘ 1    ๐Ÿ” 0    ๐Ÿ’ฌ 0    ๐Ÿ“Œ 0

When I first started playing factorio I realized that sleeping is optional ๐Ÿ˜…

500+ in-game hours and still going strong

20.12.2024 20:48 โ€” ๐Ÿ‘ 1    ๐Ÿ” 0    ๐Ÿ’ฌ 1    ๐Ÿ“Œ 0

The only problem is dead render of LV. It needs auth. Cookies are the only solution I'm aware if.

15.12.2024 16:04 โ€” ๐Ÿ‘ 0    ๐Ÿ” 0    ๐Ÿ’ฌ 1    ๐Ÿ“Œ 0

And for SSR.. Next, nuxt and others simply uses cookies.

Just, there's some hope. Cookie can either store actual data or just a session id which is used to fetch session data from the db.

The second approach would allow modifying cookies for LV. I'm not sure if it's already there...?

15.12.2024 15:55 โ€” ๐Ÿ‘ 0    ๐Ÿ” 0    ๐Ÿ’ฌ 1    ๐Ÿ“Œ 0

SPA doesn't solve it at all since first request usually just fetches static files, so auth is not needed.

In LV you need it to properly handle mounts / conn middleware etc.

AFAIK all server rendered frameworks (django, rails) uses cookies.

15.12.2024 15:49 โ€” ๐Ÿ‘ 0    ๐Ÿ” 0    ๐Ÿ’ฌ 1    ๐Ÿ“Œ 0

SPAs usually use local storage for auth token, and then token is sent in each request header.

LV uses websocket. If auth would need to happen through ws then ok, frontend can store the token client side, but then it would need to be provided somehow to all the other requests. So, like a cookie? ๐Ÿ˜‰

15.12.2024 15:49 โ€” ๐Ÿ‘ 0    ๐Ÿ” 0    ๐Ÿ’ฌ 1    ๐Ÿ“Œ 0

Auth requires controllers because it sets cookies. Currently changing cookies is not possible through LiveView.

15.12.2024 15:09 โ€” ๐Ÿ‘ 1    ๐Ÿ” 0    ๐Ÿ’ฌ 1    ๐Ÿ“Œ 0

Sometimes we have to move on to make room for our updated priorities ๐Ÿ’œ

Good luck!

12.12.2024 14:51 โ€” ๐Ÿ‘ 1    ๐Ÿ” 0    ๐Ÿ’ฌ 0    ๐Ÿ“Œ 0

@jskalc is following 20 prominent accounts