mobile app developers are significantly stronger than any US Marine. the mental fortitude to create an application on a platform that puts so much effort into making creating applications as hard as possible is unimaginable
Sulthan Mohaideen
@sulthannk.bsky.social
React Native Engineer | Open source: Expo CI/CD runner | Writing about mobile, AI & shipping things Explore: sulthannk.is-a.dev Building @ninuliapp.bsky.social on #Shipaton by @revenuecat.com
Finally. I am so happy to announce that Ninuli is officially on the Play Store. I wanted a study space that was fast, private, and powered by intelligent spaced repetition without sending my data to the cloud. Check the official post below. #Shipaton #BuildInPublic @revenuecat.com
We have officially arrived on the Google Play Store. Ninuli is a local-first study workspace built for learners who demand privacy, speed, and focus. Notes and flashcards remain on your device, featuring on-device AI, SM-2 scheduling, and custom deck organization. Download Here: shorturl.at/MIN9j
Finally. I am so happy to announce that Ninuli is officially on the Play Store. I wanted a study space that was fast, private, and powered by intelligent spaced repetition without sending my data to the cloud. Check the official post below. #Shipaton #BuildInPublic @revenuecat.com
We have officially arrived on the Google Play Store. Ninuli is a local-first study workspace built for learners who demand privacy, speed, and focus. Notes and flashcards remain on your device, featuring on-device AI, SM-2 scheduling, and custom deck organization. Download Here: shorturl.at/MIN9j
Working with React Native CI pipelines? Instead of pushing commits just to debug GitHub Actions workflows, you can run them locally. I built an open-source Docker setup called Expo-RN-Runner that lets you test React Native CI locally using act CLI. Blog: sulthannk.hashnode.dev/test-react-n...
Test React Native GitHub Actions Locally with Expo-RN-Runner
Learn how to test React Native GitHub Actions pipelines locally using Expo-RN-Runner, Docker, and act CLI to save CI minutes and debug faster.
sulthannk.hashnode.dev
Tuples Lock Down Array Length and Position Types Tuples enforce exact array positions and types, fixed length, position-specific safety. #LearnInPublic #TypeScript #JavaScript
Tuples Lock Down Array Length and Position Types Tuples enforce exact array positions and types, fixed length, position-specific safety. #LearnInPublic #TypeScript #JavaScript
Index Signatures Let Objects Accept Any Key Index signatures enable dynamic keys with type safety -perfect for dictionaries and lookup tables. #LearnInPublic #TypeScript #JavaScript
Index Signatures Let Objects Accept Any Key Index signatures enable dynamic keys with type safety -perfect for dictionaries and lookup tables. #LearnInPublic #TypeScript #JavaScript
Use Generics to Replace Repetitive Type Definitions One generic type replaces dozens of definitions same safety, way less code. #LearnInPublic #TypeScript #JavaScript
Use Generics to Replace Repetitive Type Definitions One generic type replaces dozens of definitions same safety, way less code. #LearnInPublic #TypeScript #JavaScript
Interface extends vs Intersection Types extends and & look similar but handle conflicts differently extends errors early, & merges types. #LearnInPublic #TypeScript #JavaScript
Interface extends vs Intersection Types extends and & look similar but handle conflicts differently extends errors early, & merges types. #LearnInPublic #TypeScript #JavaScript
Object Literals Get Extra Type Checking Object literals get strict property checking to catch typos variables bypass this check. #LearnInPublic #TypeScript #JavaScript
Object Literals Get Extra Type Checking Object literals get strict property checking to catch typos variables bypass this check. #LearnInPublic #TypeScript #JavaScript
readonly Properties Aren't Actually Immutable readonly prevents reassignment but doesn't freeze nested properties mutation still happens. #LearnInPublic #TypeScript #JavaScript
readonly Properties Aren't Actually Immutable readonly prevents reassignment but doesn't freeze nested properties mutation still happens. #LearnInPublic #TypeScript #JavaScript
Optional Properties Work Better with Destructuring Defaults Use destructuring defaults with optional properties cleaner code, no undefined checks needed. #LearnInPublic #TypeScript #JavaScript
Optional Properties Work Better with Destructuring Defaults Use destructuring defaults with optional properties cleaner code, no undefined checks needed. #LearnInPublic #TypeScript #JavaScript
Understanding TypeScript's void Return Type void doesn't mean "no return" it means "ignore the return value." That's why forEach and push work together. #LearnInPublic #TypeScript #JavaScript
Understanding TypeScript's void Return Type void doesn't mean "no return" it means "ignore the return value." That's why forEach and push work together. #LearnInPublic #TypeScript #JavaScript
This Valentine’s Day, I wrote about the most dramatic relationship in a developer’s life — Git ❤️ Commits, conflicts, rebases, and emotional damage. Full story: sulthannk.hashnode.dev/in-a-relatio... #Git #DevHumor #ValentinesDay #Developer
Git Valentine Story for Developers – Funny & Relatable Git Commands Gu
A humorous Valentine’s Day blog for developers that tells the love story between Git and developers using real Git commands like merge, stash, reset, reflog
sulthannk.hashnode.dev
Union Types Over Function Overloads Replace function overloads with union types for cleaner, more flexible code. #LearnInPublic #TypeScript #JavaScript
This Valentine’s Day, I wrote about the most dramatic relationship in a developer’s life — Git ❤️ Commits, conflicts, rebases, and emotional damage. Full story: sulthannk.hashnode.dev/in-a-relatio... #Git #DevHumor #ValentinesDay #Developer
Git Valentine Story for Developers – Funny & Relatable Git Commands Gu
A humorous Valentine’s Day blog for developers that tells the love story between Git and developers using real Git commands like merge, stash, reset, reflog
sulthannk.hashnode.dev
Union Types Over Function Overloads Replace function overloads with union types for cleaner, more flexible code. #LearnInPublic #TypeScript #JavaScript
Optional Parameters in Callbacks - The Gotcha Don't use optional parameters in callback types, always pass the arguments or your code breaks at runtime. #LearnInPublic #TypeScript #JavaScript
Optional Parameters in Callbacks - The Gotcha Don't use optional parameters in callback types, always pass the arguments or your code breaks at runtime. #LearnInPublic #TypeScript #JavaScript
Why Your Function Overload Implementation Isn't Visible? Function overload implementations are invisible from the outside only the overload signatures matter. #LearnInPublic #TypeScript #JavaScript
Why Your Function Overload Implementation Isn't Visible? Function overload implementations are invisible from the outside only the overload signatures matter. #LearnInPublic #TypeScript #JavaScript
Generic Functions Make Types Flow Automatically Generics automatically infer types based on what you pass in no manual type specifications needed. #LearnInPublic #TypeScript #JavaScript
Generic Functions Make Types Flow Automatically Generics automatically infer types based on what you pass in no manual type specifications needed. #LearnInPublic #TypeScript #JavaScript