Mati Palak

@palak.bsky.social

💎 Ruby developer by day 🥚 building https://tricer.app at night

A RAG trick from our hackathon email assistant: don't hide similarity scores from the LLM. We put each retrieved thread's cosine score right in the prompt and told the model: weigh these, retrieval is sometimes wrong. Cheaper than a similarity threshold - and more robust.

Underrated hackathon move: build a Chrome extension instead of a whole frontend. For our email assistant, a content script injects the AI draft straight into Gmail's reply box. Zero UI framework, zero deployment - and the demo happens in the tool people already use.

Last Friday I joined a company hackathon. In one day, a colleague and I built an email assistant that drafts replies to incoming messages - right inside Gmail. Here's how we put it together 🧵

One day of building Shelf Zero: ✅ native Liquid Glass tab bar with a separate "+" ✅ pull-to-refresh and swipe actions on links ✅ e-mail to shelf: forward to save@shelfzero.app, AI summary + links found inside ✅ real settings, synced to the server Read it or lose it. 🔥

The settings screen is no longer a mock: - daily goal stepper (syncs to the server) - digest delivery time: 7 AM / 8 AM / 6 PM - notifications toggle - delete account - you have to type DELETE. Your data, your call, no accidents. One PATCH endpoint, optimistic UI, rollback on failure.

My newsletter inbox was where reading went to die. So now you can forward any e-mail to save@shelfzero.app — Shelf Zero pulls out the sender, an AI summary, and every link inside, each saveable in a tap. What do you do with newsletters you "will read later"?

Your shelf now behaves like a proper iOS list: → pull down to refresh → swipe right = mark as read ✓ → swipe left = "Let it go" (with a confirm - no rage-deletes) or save a TECH article as a skill Plus haptics on every read, save and streak. 📳

Shelf Zero update 🛠 The tab bar is now fully native Liquid Glass on iOS 26 - Queue / Digest / Skills in the pill, and the "+" save button as a separate ink circle right beside it, exactly like our design. Small detail. Feels 10x more "iPhone".

My read-it-later list hit 400 articles before I admitted the truth: I was never going to read them. Saving felt like progress. It wasn't. Deleting it all was the most productive thing I did that week.

Juggling a full-time job and 3 side projects taught me one thing: Motivation is worthless. Systems win. 45 min every morning before work. That's it. That's how things ship.

Unpopular opinion: Rails is still the fastest way to ship a real product in 2026. Not the trendiest. Not the most hyped. Just the one where you actually finish. Change my mind.

Security pass on Shelf Zero: Turnstile on sign-in, and accounts are now created only when you click the magic link - not when someone types your e-mail into a form. Bot fills the form? Nothing happens. No account spam, no e-mail bombing.

Small delights day for Shelf Zero too: paste a link and you get an instant OG preview card before saving. Forward an e-mail with the queue open and the entry just appears - Turbo Streams, no refresh. The summary skeleton shimmers, then the real one slides in.

Shipped a big one for Shelf Zero today: save by e-mail 📬 Forward any newsletter to save@shelfzero.app - it lands on your shelf with an AI summary, and every link inside gets pulled out as a one-click save suggestion. No unique addresses, we match you by sender.

Post image

the thing that finally made me consistent wasn't motivation. it was shrinking the goal. "ship a product" is paralyzing. "push one small thing to main today" isn't. a hundred small pushes stack into something real. motivation just shows up after the momentum, never before it.

nobody tells career switchers this: your old job isn't wasted time. years in retail taught me how to actually talk to a customer, and that's a skill half the devs I know still don't have. starting late gave me a head start on the part that matters most. 👇

shipping the feature was never the hard part. with Tricer I spent weeks polishing things nobody asked for, because building felt productive and talking to users felt like a detour. turns out the detour was the whole job. the product only moved when I shut the editor and listened.

I used to think starting a dev career after 30 was too late. Now I ship products, build in public, and grow every week - because that's what I keep telling myself.

curious to hear from devs who made a late career switch into programming. what pushed you? was it burnout from your old path? did you just stumble into code and fall in love with it? how did you know it was the right move?

Anyone else here using opendesign for their projects? Just upgraded the landing page and the gtmetrix gods have blessed me today. Perfect 100s across performance & structure, and it loads in the blink of an eye ⚡️

Bild

Flying to Toronto tomorrow 🇨🇦 my first time in Canada! I’ll be there for 2 weeks and would love your recommendations: what are the must-see spots, hidden gems, food places or experiences I shouldn’t miss? Bringing my drone and 360 camera, so I’m ready to capture some cool footage All tips welcome!

Bild

Only 5 days late posting this, so practically live coverage 😅 Attended the 2nd KRUG meetup of the year last week. Highlight for me: the DDD talk. Solid discussion, good crowd. Kraków Ruby community is quietly one of the best things happening here. Glad to be part of it.

Bild

Gave my first-ever public talk last Tuesday! Presented the ADR pattern at KRUG meetup, hosted at our inFakt office. Nervous? Very. Worth it? Absolutely. Home turf advantage helped a lot. If you're thinking about speaking at a local meetup - just do it. #ruby #rubyonrails

Bild