
How to win Shipyard
A hackers guide to building an MVP that can win RevenueCat's Shipyard hackathon
A collection of 63 blog posts I've written over the years. My writing spans topics like cognitive science, software development, and design — with the occasional detour into the unrelated. I revisit and revise older posts regularly, and I welcome any feedback that can help improve my writing, and more importantly, my thinking. I hope you find something interesting here.

A hackers guide to building an MVP that can win RevenueCat's Shipyard hackathon
Overengineered approach to tracking how many books I've read in 2026, with filtering, auto generated images, and progress bars

Learn how to monetize the app you created with Bolt using RevenueCat SDK and few lines of code.
A visual breakdown of my travel in 2025: 57 flights across 7 countries, from conferences in the US to quiet weeks in Finland.

Learn how to detect whether another iOS app is installed using SwiftUI and custom URL schemes. Example is from my Wayline app, opening Flighty to export flight data.

How to handle rate limits and memoization when scraping the app-store-scraper package.

Building a great Android app takes time, creativity, and persistence. But once your app is live, there's one question every developer eventually faces: how do I actually make money from this?

Netli.fyi is a native iOS client for Netlify that gives you quick access to your sites, build logs, domains, and account info. It's now in beta and needs real-world testing.

A look at how to combine React Query with FlatList, FlashList, and LegendList for smooth, stable list UIs. Best practices for handling loading states, skeletons, and safe areas.

A practical guide to planning, configuring, and promoting seasonal subscription offers on Google Play.

Apple introduces a 15% IAP rate for apps that host third-party mini apps, with strict rules and new APIs attached.

Unlock web purchases in your React Native app with one tap

A simple, low-pressure way to let users support your app — without a subscription.

Use RevenueCat Web Billing and Zapier to bring churned users backRevenueCat Web Billing win-back campaign

Hack your app store ratings by capturing happy users at the right moment.

How to win Shipaton: Turn your Devpost submission into a story judges remember.

Tactics to get your first 100 users and show real momentum during Shipaton

A time-boxed framework to build, test, and ship your Shipaton app before the clock runs out.

Three apps, one Shipaton: A behind-the-scenes look at what I’m building during RevenueCat’s 2025 hackathon — from saunas to CMS tools to Netlify on the go.

Learn how yo utilize RevenueCat's virtual currencies to power your in-app economies

Don’t know what to build for Shipaton? A 45x hackathon winner breaks down how to find and validate app ideas that solve real problems—and have a shot at winning.

Behind the scenes of a Shipaton-winning launch — from prototype to community-powered release.

How building his first app led Leandro Tolaini from Shipaton to winning WWDC's Student Challenge

A step-by-step tutorial to let users pay to remove ads—using AdMob, and RevenueCat

A step-by-step tutorial to let users pay to remove ads—using Expo, AdMob, and RevenueCat

Build a Blinkist-style paywall with RevenueCat and Zapier—no backend required.

A personal recap of App.js 2025: speaking about in-app purchases, highlights from Krakow, favorite talks, and why this conference remains one of my top picks.

Use one React Native codebase and RevenueCat’s Web Billing SDK to support subscriptions across platforms in 30 mins

How vibe coding shifts software development, why it’s closer to prototyping, and how domain-embodied development will change who builds the next generation of software.

Learn how to correctly manage and access environment variables in Netlify Functions.

Comprehensive look at in-app purchases and how to add them to your React Native app. Covers different types of in-app purchases, how to set them up in your app, and the psychology of good in-app purchase experiences. Technology used: React Native, RevenueCat, App Store Connect.

Full article version of the talk I gave at RTC.ON Conference 2024 about getting started with WebRTC in React Native

A complete guide to implementing in-app purchases in your Expo app using RevenueCat.

How Andrew Kevin Walker’s script went through multiple rewrites before becoming the neo-noir classic we know today. Despite its flaws, the novelization of Se7en holds personal significance for me, showing how a good story can transcend its medium.

Struggling with null userID in Apollo GraphQL hooks? The variablesOrSkip function is my fix, smartly skipping or including variables to cut runtime errors and boost code stability in TypeScript projects.

How to style HTML content in React with Tailwind CSS when using dangerouslySetInnerHTML by writing custom selector using arbitrary variants.

How to switch back to the old Slack desktop UI on Mac and say goodbye (at least temporarily) to the current UX catastrophe.

Customize the React Native Developer menu to your needs using the built in addMenuItem function.
Learn how to properly format dates based on user locale in React Native using Intl.DateTimeFormat and react-native-localize, avoiding the common pitfalls of hardcoded date formats.
Understanding the shortcomings of the Bayesian approach to brain and cognition, reviewing criticism surrounding task selection, model selection, and theoretical contributions.

Four approaches to designing digital services that persuade your user to live a healthier life

20 things about 2020 from my perspective. I think there are easier ways to brag about your accomplishments than trying to mask them under an annual review.
A comprehensive review of psychological research on the golden ratio and its relationship to aesthetic experience, examining whether this ancient mathematical model can reliably predict visual preferences in user interface design.
Improving the developer experience with a few small tweaks

How to fix the 'VirtualizedLists should never be nested inside plain ScrollViews with the same orientation' warning in React Native using ListHeaderComponent and ListFooterComponent.

Let´s draw a nice looking analogue clock in React Native with SVG

How to publish as a static blog with Publish and Netlify and a little bit of Swift.

This article is based on a lighting talk I gave at React Day Berlin in 2019. Learnings are from prototyping Nyxo app.

There is no need to start Xcode to test on different React Native apps on different device simulators. You can do that easily with the simulator flag.

Checklist for publishing React Native app to Apple App Store successfully.
An article about crosstalk in stereoscopic displays, a phenomenon that causes 3D movies to look weird.

A summary of the books I read in 2018, covering various genres and highlights.

Between the years 2015 and 2018 I participated in over 70 hackathons. I won 40 of them, most wins being towards the end. Sometimes winning was mostly accidental, but majority of the time it was due to a strategy me and our team followed. This article is abot trying to write down the strategy that worked.
Learn how to automatically generate Open Graph sharing images for your Gatsby.js blog by building a custom plugin using Jimp for image manipulation.

Exploring solutions for sustainable energy use at the Energy Efficiency Hackathon, with innovative projects focused on energy conservation.

Insights and experiences from the Royal Hackaway hackathon, diving into innovative projects and tech challenges.

A journey through the Kuohu Creative hackathon, highlighting creative projects and innovative problem-solving approaches.

An entry from the Hackathon Diaries series, where we explore how technology meets nature with Fiskars and plant communication.

Reflections on the Oulu 5GFWD hackathon, exploring 5G innovations and groundbreaking tech solutions.

Exploring the intricacies of human-centered design, this article delves into the pivotal role of the designer's perspective in shaping innovation. It underscores the significance of design as a deliberate process, echoing in every human-made entity.
Services are, by nature, intangible. Touchpoints are one of the main ways a service becomes tangible. This article reviews definitions of touchpoints and explores how they are used in service design practice today.