Writing
Notes on Android, Kotlin, AI, and shipping software. Mostly drafted while building things at PaperCheck or in the open.
- I built a driving test app. Getting anyone to see it was the harder part.Jul 12, 2026
- I built a Uganda driving test app that remembers what you get wrongJul 8, 2026
- On staying productive while working from homeJun 6, 2026
- How to implement Sign in with Apple using NextAuth in NextJsJan 23, 2026
- Safe non-local returns using crossinline for inline functions in kotlinSep 10, 2024
- How to add a round filter or mask to OBS’s video capture feedAug 27, 2024
- Building cost-effective AI systems using RouteLLMAug 7, 2024
- Strategies on how to showcase your portfolio and impress potential clients as a freelancerJul 18, 2024
- Creating an AI Blog Post Generator with LangChain: A Step-by-Step GuideJun 7, 2024
- How to fetch medium articles/stories automatically to your django websiteDjango Unleashed · Apr 19, 2024
- How to create a document scanner using ML Kit and Jetpack ComposeMake Android · Mar 18, 2024
- Overcoming Burnout: Leveraging Boredom to Boost Productivity and Learn New SkillsMar 18, 2024
- A healthy gut equals to a longer, happier life — MealPlanner appMar 1, 2024
- Fetching data from REST APIs using Ktor in AndroidFeb 9, 2024
- Authentication for Django REST APIsDec 20, 2023
- Data Layer : Android app architecture notesDec 15, 2023
- Domain Layer : Android app architecture notesDec 3, 2023
- UI Layer : Android app architecture notesDec 3, 2023
- The Langchain Interface : Chains and RunnablesDec 1, 2023
- Langchain Agents : Getting StartedNov 30, 2023
- Text Recognition with Jetpack Compose and CameraXSep 2, 2023
- How to safeguard your API Keys in Android projects with Github secretsJun 18, 2023
- Paginating Firebase Realtime Database in a RecyclerView within a NestedScrollViewJun 11, 2022