
Most days that means TypeScript and JavaScript. React and Next.js on the web, Svelte when a lighter runtime wins, Node.js and REST APIs behind the screen, Flutter on mobile, and Shopify apps running inside a merchant's store. Java and Python sit in the older projects.
Which one I reach for is a decision, not a habit. I start at the data model, because everything above it inherits its mistakes, then the API, then the screen. Reading the existing code for an hour before changing a line has saved me more time than any tool I have installed.
A feature is done when it survives the bad cases. Loading and error states handled, not stubbed. An empty screen that tells you what to do next. Phone layout first, since that is where it gets opened. I would rather cut something than leave it half wired up.

Rokibul Hasan, Full Stack Developer. I am usually the only person on a project, so I write things down: what a feature is for, why a table has that column, what was left out on purpose. Six months later that is the difference between fixing a bug and rewriting the file.
Ask me where something stands and you get the real answer, including the parts that are not done. My repos are public, so the history is there to read.
HTML, CSS, JavaScript
Svelte
Shopify app, TypeScript
Shopify app, JavaScript
Web tool
Python, Jupyter
Web platform
Flutter
Java
Web
My default. The compiler catches the rename I forget.
When a page should ship with no build step behind it.
Routing and server rendering I do not have to write.
Picked when the bundle should stay small and the code short.
One language on either side of the request.
One codebase when it has to run on a phone.