RSSAmplifier

Blog

Jeroen Mols

Recent content on Jeroen Mols

jeroenmols.comRSS feed ↗79 posts

Latest posts

Learning full stack - Implementation details

To conclude my series on full-stack development, this part will look at the implementation, design choices, what worked well and what didn’t. This builds on the to-do list project proposed in part 1 and the tech stack described in part 2.

Learning full stack - Tech stack

One of my main drivers for this side project was to make all technology choices myself. To do that effectively, I would have to consider the pros and cons of different options and frankly learn many new things.

Learning full stack - Project

After pivoting my career to full-stack development, I missed the “depth” I used to have on mobile. So to build out more foundational full-stack knowledge, I decided to build a few side projects.

Website refresh

After 7 years, it was time to migrate my old Jekyll website to a new more modern platform. Read on to learn why, how, and what the main challenges were in this process.

Using VPN during MDNS server development

Are you using a VPN on your mobile device? Do you need to disable that to access your development web server over MDNS on your mobile device?

Gaming the pull request review system

As developers, we love to build cool things and ship them as fast as reasonably possible. And to get that done, here are a few things you can do to “game the system”.

Interactive versionable architecture diagrams

Tired of building un-versionable, lifeless architecture diagrams? Wouldn’t it be great if you could add your diagram to Git, embed it in your documentation, and have clickable elements?

A privacy friendly RSVP for events

Planning an event can be stressful, and the last thing you need is worrying about your guests’ privacy. But don’t worry, I’ve got you covered with a privacy-friendly RSVP option.

Using multiple SSH keys for Github and Github enterprise

Looking to configure multiple SSH keys on the same computer? For instance to use a different SSH key for your public and enterprise Github contributions.

Removing all trackers from my website

These past years I’ve grown to be more privacy-aware. And while this post isn’t about how I’m increasing my personal privacy, I’d like to talk about how I’m increasing yours.

Android emulator access to local server

How can you connect your app on an Android emulator to a development server running on the localhost of your computer? The problem # Since Android emulators create their own virtual network, they cannot access devices on your local network.

Transfer many large files from Android

Trying to get a large number of files from your Android phone, but Android File Transfer freezing up? Here’s what I learned trying to pull ~170 Gb from my Pixel phone.

Verify Github profile link on Mastodon

Looking to get a fancy verified checkmark on Mastodon for your Github account? This post details how I made this work. Steps # Before I get started, huge thanks to Simon Wilson for inspiring me with the original idea.

Test React app on mobile without Wi-Fi

Traveling by train or plane and want to test your react app on your mobile phone? This quick post explains how to access your react development server from your phone without a Wi-Fi connection.

The curious case of crashing Workers

WorkManager is great to schedule background work on Android. However, since scheduled work lives outside of the app lifecycle, you might run into unexpected crashes.

No, your pull request does not need a review

In the past years, my thoughts on pull request reviews have evolved considerably. Given that creating and reviewing pull requests are a core part of our work, let’s talk about those.

Migrate existing library artifacts from JCenter to Maven Central

With JCenter shutting down, many are migrating to Maven Central. And while there are many posts on how to publish new artifacts, also all existing artifacts should be migrated away from JCenter.

Share code between Android and Jvm in Kotlin multiplatform

While Android supports most Java language features, it doesn’t support every API that Java provides. On the other hand, Kotlin multiplatform only allows sharing code across all targets (commonMain), not a subset of targets (commonJvm).

Migrating away from JCenter

This week JFrog - out of nowhere - announced to completely remove their Maven repository. Since they’ll pull it offline already by May 2021 (!!!) it’s time to urgently migrate away.

Year in review 2020

Well… I don’t really know where to start this time. 2020 was quite the rollercoaster, with many downs… but fortunately also a few amazing ups. Let’s focus on the good stuff.

Test library releases using an in project Maven repository

Short, powerful post on how to test the release version of libraries directly within a project without having to deploy them to Maven first. As a bonus, there will also be an open-source example showcasing all of this in action.

Android library development - Dependencies

Ever had a build failure while integrating an SDK? Wonder how you can avoid your SDK customers having dependency conflicts? How many transitive dependencies should your SDK have?

Android library development - Modularization

With modularization being all the hype, should you also modularize an SDK? Are fat aar files really needed? And how do you prevent internal APIs from being exposed on your public interface?

Android library development - Getting started

Having switched to Android SDK development over the past year, I’ve run into quite a few interesting and unexpected challenges. So how does library development differ from app development?

Kdoc for Android libraries using Dokka

A great way to make your library easier to use it to generate code documentation for its public interface. The default way to do this in Kotlin is to generate KDoc using the official Dokka plugin.

Year in review 2019

Getting up without being rushed, cycling my kids to school, cooking healthy salads for lunch, kids running into my arms when they get home… I’m quite happy with my new daily routine!

Feature flags - A successful architecture

Now that we know how feature flags can help us release faster, it’s time to dive into the actual implementation details. How can we easily define feature flags?

Feature Flags - How to use

Empowered with what feature flags are and why they are useful, let’s see how we can actually integrate them into an app. And how can we roll them out to our users?

Feature Flags - Why you should care

A key ingredient to speed up modern software development is feature flags. But what is a feature flag precisely? Why should you care about them? How do you integrate them into your codebase?

Lessons learned being a lead developer

Three years ago, we decided ramp up internal app development at Philips Hue. After interviewing candidates (78!) for six months, I became the lead Android developer of the freshly hired Android team.

Supporting Android Q gestural navigation

From Android Q onwards devices can now operate in a fully gestural system navigation mode. In that mode, there is no longer an on-screen back button, instead users can swipe from both edges to navigate back.

Philips Hue adaptive icon

Your icon is one of the most important assets in your app. With a bit of luck, users might even put it on their main launcher screen!

Modularization - Lessons learned

Wrapping up this series on modularization I’d like to share some of the things we’ve learned at Philips Hue while going through this process the past year.

Modularization - How to approach

Now that we have a clear idea of how a modularized app could look like how can this be applied to an existing app? Part four will dive deeper into how existing apps can be sliced and how you can gradually migrate to a fully modularized architecture.

Modularization - Real-life example

With a clear view on how multi-module apps should be architected, let’s dive into a real-life practical example. We’ll discover how the architecture results in a clear application structure, how navigation is handled, how to use staged rollouts, how to test everything and even look at a production app that is using this architecture.

Modularization - A successful architecture

Now that we’ve established that modularization is a really good thing to strive for, how should a modularized app look like? How are the different modules connected?

Modularization - Why you should care

Modularizing your app seems to be all the hype these days. But why should you actually care? What are the benefits for you and your team?

Five tips to get your code base in shape

Are you living the dream? Is your code so clean it makes your eyes just tear a little? Can’t think of anything you would still like to refactor?

Testing LiveData in JUnit 4 and JUnit 5

Architecture components are one of the most exciting things that happened to Android in the past years. But how do you effectively go about and testing this?

Year in review 2018

Sitting in our own couch, in our own house, kids safely asleep upstairs,… The road here was brutal, but the result is extraordinary. The past year was (hopefully) the busiest year of my entire life.

Can you fix the test?

Learning from analyzing code is one of the greatest ways to improve your skills. Can you spot the mistakes in the tests below? This post brings a fun little quiz for both testing gurus as novices, with a deep dive into the how and why of awesome tests.

Kotlin Stackoverflow error

Java interop is one of the best features of the Kotlin language, yet sometimes this also can cause unforeseen issues… Puzzle # Disclaimer, the example below is a consequence of legacy code and only serves to demonstrate a Kotlin puzzler.

Kotlinconf 2018 slides

Was really great visiting Kotlinconf this year and I wanted to do a quick post to link to all of it’s wonderful content. Conference slides # While you will be able to find all recordings here, I often find it useful to be able to quickly scan through the slides.

A little Kotlin puzzler

Kotlin is an incredibly enjoyable, concise and powerful programming language. Yet sometimes also a bit confusing… Puzzle # Have a look at the simple class below.

How dangerous permissions sneak into apps

This is a post-mortem where the very dangerous permission, READ_PHONE_STATE, unintentionally sneaked into our app. Here’s how this could happen, how we debugged and finally how we solved it.

Pro Android Studio - Taming the interface

Not only can anything in Android Studio be controlled with a keyboard shortcut, it offers many more simple tricks to make you more productive. To conclude this series, we will look at how you can control the interface, invoke every (!

Pro Android Studio - Refactoring

Refactoring can be tedious and easily introduce bugs. The main reason for this is the number of manual steps involved: rename, move, copy-paste,… So wouldn’t it make sense to automate this and have Android Studio do all the work for you?

Pro Android Studio - Code navigation

Struggling to navigate your code? Getting lost in deep inheritance hierarchies? Hard time figuring out relations between classes? Let’s learn how to navigate code in Android Studio like a pro.

Year in review 2017

For the first time ever I have my year in review ready in time. I’m sure I’ll never forget 2017. Not only did we start building our dream house, but more importantly, our family grew to 4 people!

MacOS update could not be installed

Tonight after a routine MacOS update (10.13.2) disaster struck and my Mac got stuck in an update boot loop. After a few hours of panic, reading online and trial & error I managed to resolve it.