I’m trying to create a new account and it’s asking me to pay for 1 week of Telegram Premium. Like… what? There’s literally no skip option! I just want a normal free account.
@sifendev
@sifendev
😁4
Forwarded from kid cyber
🔥3
My favorite stack for 2025:
Frontend framework: Next.js
Styling: Tailwind CSS
State management: Redux Toolkit
Data fetching & caching: TanStack Query
API layer: tRPC
Authentication: BetterAuth
UI library: shadcn/ui
Backend: Hono
Database: PostgreSQL
ORM: Drizzle
@sifendev
Frontend framework: Next.js
Styling: Tailwind CSS
State management: Redux Toolkit
Data fetching & caching: TanStack Query
API layer: tRPC
Authentication: BetterAuth
UI library: shadcn/ui
Backend: Hono
Database: PostgreSQL
ORM: Drizzle
@sifendev
🔥3😁2
2025 was my wildest and most productive year. I learned so much, met very cool people, and somehow managed to check off everything on my checklist. A year full of growth, lessons, and real progress... I’m taking a short break now, but I’ll be back with my favorite posts and a fresh #buildInPublic journey for 2026.
@sifendev
@sifendev
🔥33❤1😁1
Forwarded from Robi makes stuff (Robi)
So with that , odit.et is officially launched
been in the works since Feb 10 2025 ( almost a year )
been in my head since 2022 with this post
The app is native kotlin and the site is built with svelte 5
installation instructions here
and usage instructions here
You can finally get control over your finances because they are easy to log and easy to go thru.
from odit.et/dashboard
You can see your 2025 wrapped from
odit.et/wrapped and
You can set goals for 2026 at
odit.et/goals ( yes they will automatically update as messages come in )
odit is not on device , and is closed source , head to totals.detached.space if you want a FOSS alternative
@rb_wk for more of the stuff i built
been in the works since Feb 10 2025 ( almost a year )
been in my head since 2022 with this post
The app is native kotlin and the site is built with svelte 5
installation instructions here
and usage instructions here
You can finally get control over your finances because they are easy to log and easy to go thru.
from odit.et/dashboard
You can see your 2025 wrapped from
odit.et/wrapped and
You can set goals for 2026 at
odit.et/goals ( yes they will automatically update as messages come in )
odit is not on device , and is closed source , head to totals.detached.space if you want a FOSS alternative
@rb_wk for more of the stuff i built
❤1
I didn’t know that you can bind an argument to a function. Turns out you can use bind() to lock in arguments, not just this.
Say you have a function that expects 3 arguments:
But the place where this function is used can only pass 2 arguments.
You can bind one of the arguments ahead of time:
What this does is simple:
• "Alex" is now locked in as the first argument
• a new function is created
• nothing runs yet
Later, when you call it:
The null is just there for this.If you’re not using this, it doesn’t really matter.
So basically, if:
• a function expects more arguments
• but the caller can only provide fewer
You can use bind() to fill in the missing ones early and let the rest come later.
@sifendev
Say you have a function that expects 3 arguments:
function sendMessage(user, message, isUrgent) {
console.log(user, message, isUrgent);
}
But the place where this function is used can only pass 2 arguments.
You can bind one of the arguments ahead of time:
const sendUrgentMessage = sendMessage.bind(null, "Alex");
What this does is simple:
• "Alex" is now locked in as the first argument
• a new function is created
• nothing runs yet
Later, when you call it:
sendUrgentMessage("Hello!", true);
// internally → sendMessage("Alex", "Hello!", true)
The null is just there for this.If you’re not using this, it doesn’t really matter.
So basically, if:
• a function expects more arguments
• but the caller can only provide fewer
You can use bind() to fill in the missing ones early and let the rest come later.
@sifendev
❤9
This is really useful when working with Server Actions in Next.js, especially with useActionState. That hook will always call your action with only two arguments: the previous state and the FormData. You don’t get to change that.
The problem shows up when your server action needs more information, like extra context that shouldn’t come from the form. Instead of forcing that data into hidden inputs, you can bind those extra arguments ahead of time and pass the new, bound function to useActionState.
When the form runs, the hook still passes the two arguments it knows about, and the other arguments are already locked in. Everything lines up naturally.
@sifendev
The problem shows up when your server action needs more information, like extra context that shouldn’t come from the form. Instead of forcing that data into hidden inputs, you can bind those extra arguments ahead of time and pass the new, bound function to useActionState.
When the form runs, the hook still passes the two arguments it knows about, and the other arguments are already locked in. Everything lines up naturally.
@sifendev
❤8
❤14⚡3👍1
Pulled an all nighter consecutively so many times my brain stopped braining, and now even caffeine isn’t working anymore.
@sifendev
@sifendev
😭9
There’s no feeling quite like sitting back and watching something you built work perfectly.
@sifendev
@sifendev
🔥10❤1🎉1
A while back, in a job interview, I was asked to design a Tic-Tac-Toe game and explain my thought process. I tried to be as technical as possible and explained whatever came to mind at the moment.
Today, after finishing all my tasks, I had some free time and decided to actually build it. I thought it would be easy. Then I figured, why not add another layer? I’ve been learning about AI integration lately, and I wanted to play with AI back and forth inside the game.
Since this was something I got asked in an interview, I didn’t want to use AI. I wanted to do everything myself.
And now here I am before even touching the AI part stuck on the winning logic😭😭.... I’ll probably give it another shot tomorrow with a fresh mind.
Now I understand why the recruiters ghosted me.
@sifendev
Today, after finishing all my tasks, I had some free time and decided to actually build it. I thought it would be easy. Then I figured, why not add another layer? I’ve been learning about AI integration lately, and I wanted to play with AI back and forth inside the game.
Since this was something I got asked in an interview, I didn’t want to use AI. I wanted to do everything myself.
And now here I am before even touching the AI part stuck on the winning logic😭😭.... I’ll probably give it another shot tomorrow with a fresh mind.
Now I understand why the recruiters ghosted me.
@sifendev
🤣6❤1🔥1
The annoying part is that I clearly remember building Tic-Tac-Toe before… in C++, as a console game. You’d enter numbers as coordinates and watch everything update in the terminal.
That was way harder than building it with React.
@sifendev
That was way harder than building it with React.
@sifendev