41554 blogs · [ { "id": "01a087a3-0d4e-71dd-a648-a58b18929ac8", "title": "Use git for your DNS and mailing lists", "url": "https://mbonnin.net/2026-08-26-use-git-for-dns-and-mailing-lists", "published_at": "2026-02-26T00:00:00+00:00" }, { "id": "01a087a3-0d4e-71dd-a648-a58b192f6ca3", "title": "Multiple versions of Kotlin", "url": "https://mbonnin.net/2026-02-22-kotlin-versions", "published_at": "2026-02-22T00:00:00+00:00" }, { "id": "01a087a3-0d4e-71dd-a648-a58b1a01d72b", "title": "SemVer is a great versioning scheme for Kotlin libraries", "url": "https://mbonnin.net/2026-01-16-semver-is-great-for-your-kotlin-libraries", "published_at": "2026-01-16T00:00:00+00:00" }, { "id": "01a087a3-0d4e-71dd-a648-a58b1aa4f1b2", "title": "GraphQL loves REST", "url": "https://mbonnin.net/2025-12-15_graphql_over_rest", "published_at": "2025-12-15T00:00:00+00:00" }, { "id": "01a087a3-0d4e-71dd-a648-a58b1adb8c03", "title": "Is Gradle Metadata a better POM?", "url": "https://mbonnin.net/2025-11-29_the_curse_of_turing_complete_dependency_resolution", "published_at": "2025-11-30T00:00:00+00:00" }, { "id": "01a087a3-0d4e-71dd-a648-a58b1b99613d", "title": "Gradle debug recipes", "url": "https://mbonnin.net/2025-11-08_gradle_debugging", "published_at": "2025-11-08T00:00:00+00:00" }, { "id": "01a087a3-0d4e-71dd-a648-a58b1c6323d8", "title": "Classloader isolation 101", "url": "https://mbonnin.net/2025-08-24_isolation_101", "published_at": "2025-08-24T00:00:00+00:00" }, { "id": "01a087a3-0d4e-71dd-a648-a58b1cf0d3d7", "title": "The case for `kotlin-gradle-plugin`", "url": "https://mbonnin.net/2025-07-10_the_case_for_kgp", "published_at": "2025-08-10T00:00:00+00:00" }, { "id": "01a087a3-0d4e-71dd-a648-a58b1d27b1b2", "title": "The case against `kotlin-dsl`", "url": "https://mbonnin.net/2025-07-10_the_case_against_kotlin_dsl", "published_at": "2025-07-10T00:00:00+00:00" }, { "id": "01a087a3-0d4e-71dd-a648-a58b1daed014", "title": "Nmcp 1.0.0 and the \"other 90%\"", "url": "https://mbonnin.net/2025-07-05_nmcp_and_the_other_90_percent", "published_at": "2025-07-05T00:00:00+00:00" }, { "id": "01a087a3-0d4e-71dd-a648-a58b1dbb0d16", "title": "KotlinConf 2025: the aftermath", "url": "https://mbonnin.net/2025-05-27_kotlinconf_aftermath", "published_at": "2025-05-27T00:00:00+00:00" }, { "id": "01a087a3-0d4e-71dd-a648-a58b1de907dc", "title": "`@InputDirectory` is a lie", "url": "https://mbonnin.net/2025-01-22_input_directory_is_a_lie", "published_at": "2025-01-27T00:00:00+00:00" }, { "id": "01a087a3-0d4e-71dd-a648-a58b1ebd15b1", "title": "2025 is the year of GraphQL error handling!", "url": "https://mbonnin.net/2025-01-13_graphql-errors", "published_at": "2025-01-17T00:00:00+00:00" }, { "id": "01a087a3-0d4e-71dd-a648-a58b1f98c635", "title": "November 2024: the state of Kotlin scripting", "url": "https://mbonnin.net/2024-11-21_state-of-kotlin-scripting", "published_at": "2024-11-21T08:41:15+00:00" }, { "id": "01a087a3-0d4e-71dd-a648-a58b1fa8c1c9", "title": "Gradle brainteasers 2/2: relocatable input files", "url": "https://mbonnin.net/2024-07-17_gradle-brainteasers-22-relocatable-input-files", "published_at": "2024-07-17T08:41:15+00:00" }, { "id": "01a087a3-0d4e-71dd-a648-a58b1fb5218b", "title": "Gradle brainteasers 1/2: aggregating artifacts", "url": "https://mbonnin.net/2024-07-15_gradle-brainteasers-12-aggregating-artifacts", "published_at": "2024-07-15T10:44:26+00:00" }, { "id": "01a087a3-0d4e-71dd-a648-a58b2079600e", "title": "My life after `afterEvaluate {}`", "url": "https://mbonnin.net/2022-11-24_my-life-after-afterevaluate", "published_at": "2022-11-24T15:00:50+00:00" }, { "id": "01a087a3-0d4e-71dd-a648-a58b20a43317", "title": "How Gradle compiles your build scripts", "url": "https://mbonnin.net/2022-11-18_how-gradle-compiles-your-build-scripts", "published_at": "2022-11-18T17:14:29+00:00" }, { "id": "01a087a3-0d4e-71dd-a648-a58b213c6ee3", "title": "About the Android Makers app, security and google-services.json", "url": "https://mbonnin.net/2022-05-06_about-the-android-makers-app-security-and-google-servicesjson", "published_at": "2022-05-06T13:45:38+00:00" }, { "id": "01a087a3-0d4e-71dd-a648-a58b2215786a", "title": "Kotlin compatibility QuickSheet", "url": "https://mbonnin.net/2021-11-17_kotlin-compatibility-quicksheet", "published_at": "2021-11-17T15:22:18+00:00" }, { "id": "01a087a3-0d4e-71dd-a648-a58b22b0475e", "title": "Use latest Kotlin in your Gradle plugins", "url": "https://mbonnin.net/2021-11-12_use-latest-kotlin-in-your-gradle-plugins", "published_at": "2021-11-12T15:13:39+00:00" }, { "id": "01a087a3-0d4e-71dd-a648-a58b2305c2c8", "title": "Gradle publishing plugins, a decision matrix", "url": "https://mbonnin.net/2021-06-21_gradle-publishing-plugins-a-decision-matrix", "published_at": "2021-06-21T00:00:00+00:00" }, { "id": "01a087a3-0d4e-71dd-a648-a58b238d0fec", "title": "Actual footage of different kinds of Gradle Configurations", "url": "https://mbonnin.net/2021-05-31_actual-footage-of-different-kinds-of-gradle-configurations", "published_at": "2021-05-31T00:00:00+00:00" }, { "id": "01a087a3-0d4e-71dd-a648-a58b243aca40", "title": "May 2020: The state of Kotlin Scripting", "url": "https://mbonnin.net/2020-05-25_may-2020-the-state-of-kotlin-scripting", "published_at": "2020-05-25T00:00:00+00:00" }, { "id": "01a087a3-0d4e-71dd-a648-a58b24f8ca07", "title": "A closer look at the Kotlin Multiplatform Artifacts", "url": "https://mbonnin.net/2020-03-21_a-closer-look-at-the-kotlin-multiplatform-artifacts", "published_at": "2020-03-21T00:00:00+00:00" }, { "id": "01a087a3-0d4e-71dd-a648-a58b254c8afe", "title": "Loading Gradle plugins in 2019", "url": "https://mbonnin.net/2019-11-26_loading-gradle-plugins-in-2019", "published_at": "2019-11-26T00:00:00+00:00" }, { "id": "01a087a3-0d4e-71dd-a648-a58b259de318", "title": "An unofficial guide to Android Lint", "url": "https://mbonnin.net/2019-10-20_an-unofficial-guide-to-android-lint", "published_at": "2019-10-20T00:00:00+00:00" }, { "id": "01a087a3-0d4e-71dd-a648-a58b262fba06", "title": "The different kotlin-stdlibs explained", "url": "https://mbonnin.net/2019-09-15_the-different-kotlin-stdlibs-explained", "published_at": "2019-09-15T00:00:00+00:00" }, { "id": "01a087a3-0d4e-71dd-a648-a58b26e80232", "title": "Publishing a maven artifact 3/3: step-by-step instructions to MavenCentral publishing", "url": "https://mbonnin.net/2019-06-09_publishing-a-maven-artifact-3-3-step-by-step-instructions-to-mavencentral-publishing", "published_at": "2019-06-09T00:00:00+00:00" }, { "id": "01a087a3-0d4e-71dd-a648-a58b2794603e", "title": "Publishing a maven artifact 2/3: jcenter or mavenCentral ?", "url": "https://mbonnin.net/2019-06-07_publishing-a-maven-artifact-2-3-jcenter-or-mavencentral", "published_at": "2019-06-07T00:00:00+00:00" }, { "id": "01a087a3-0d4e-71dd-a648-a58b284e5bd9", "title": "Publishing a maven artifact 1/3: glossary", "url": "https://mbonnin.net/2019-06-05_publishing-a-maven-artifact-1-3-glossary", "published_at": "2019-06-05T00:00:00+00:00" }, { "id": "01a087a3-0d4e-71dd-a648-a58b290d399f", "title": "Android Makers 2019 Dessert Hunt, behind the scenes.", "url": "https://mbonnin.net/2019-05-14_android-makers-2019-dessert-hunt-behind-the-scenes", "published_at": "2019-05-14T00:00:00+00:00" }, { "id": "01a087a3-0d4e-71dd-a648-a58b2a022377", "title": "Consume your GraphQL API with kotlin coroutines", "url": "https://mbonnin.net/2019-04-23_consume-your-graphql-api-with-kotlin-coroutines", "published_at": "2019-04-23T00:00:00+00:00" }, { "id": "01a087a3-0d4e-71dd-a648-a58b2abd2206", "title": "A first look at Flutter from an Android Developer", "url": "https://mbonnin.net/2019-01-02_a-first-look-at-flutter-from-an-android-developer", "published_at": "2019-01-02T00:00:00+00:00" }, { "id": "01a087a3-0d4e-71dd-a648-a58b2b2b93ed", "title": "Run your Android CI in Google Cloud Build", "url": "https://mbonnin.net/2018-08-28_run-your-android-ci-in-google-cloud-build", "published_at": "2018-08-28T00:00:00+00:00" }, { "id": "01a087a3-0d4e-71dd-a648-a58b2b681665", "title": "Different kinds of Ripple", "url": "https://mbonnin.net/2017-05-29_different-kinds-of-ripple", "published_at": "2017-05-29T00:00:00+00:00" }, { "id": "01a087a3-0d4e-71dd-a648-a58b2be8a001", "title": "Android myth 2/2: config change and restoring state", "url": "https://mbonnin.net/2017-05-19_android-myth-2-2-config-change-and-restoring-state", "published_at": "2017-05-19T00:00:00+00:00" }, { "id": "01a087a3-0d4e-71dd-a648-a58b2c962f94", "title": "setSytemUIVisibility() magic", "url": "https://mbonnin.net/2017-04-24_setsytemuivisibility-magic", "published_at": "2017-04-24T00:00:00+00:00" }, { "id": "01a087a3-0d4e-71dd-a648-a58b2d8e9b38", "title": "Android myth 1/2: Activity.onDestroy()", "url": "https://mbonnin.net/2017-04-04_android-myth-1-2-activity-ondestroy", "published_at": "2017-04-04T00:00:00+00:00" }, { "id": "01a087a3-0d4e-71dd-a648-a58b2e057d64", "title": "Advanced refactoring with custom intelliJ plugins", "url": "https://mbonnin.net/2017-03-28_advanced-refactoring-with-custom-intellij-plugins", "published_at": "2017-03-28T00:00:00+00:00" }, { "id": "01a087a3-0d4e-71dd-a648-a58b2e6dd435", "title": "Espresso testing without dagger 2", "url": "https://mbonnin.net/2016-09-22_espresso-testing-without-dagger-2", "published_at": "2016-09-22T00:00:00+00:00" }, { "id": "01a087a3-0d4e-71dd-a648-a58b2f182064", "title": "The curious case of the Overflow Icon Color", "url": "https://mbonnin.net/2016-09-16_the-curious-case-of-the-overflow-icon-color", "published_at": "2016-09-16T00:00:00+00:00" }, { "id": "01a087a3-0d4e-71dd-a648-a58b30152e76", "title": "Hexamonkey", "url": "https://mbonnin.net/2014-08-03_hexamonkey", "published_at": "2014-08-03T00:00:00+00:00" }, { "id": "01a087a3-0d4e-71dd-a648-a58b30a807bd", "title": "Security, Security, Security!", "url": "https://mbonnin.net/2014-03-20_security_security_security", "published_at": "2014-03-20T00:00:00+00:00" }, { "id": "01a087a3-0d4e-71dd-a648-a58b31359089", "title": "Bye Bye WordPress", "url": "https://mbonnin.net/2013-12-31_bye-bye-wordpress", "published_at": "2013-12-31T00:00:00+00:00" }, { "id": "01a087a3-0d4e-71dd-a648-a58b31e183e6", "title": "Paris Chess Board", "url": "https://mbonnin.net/2012-03-04_paris-chess-board", "published_at": "2012-03-04T00:00:00+00:00" }, { "id": "01a087a3-0d4e-71dd-a648-a58b3285ff15", "title": "DIY gobo", "url": "https://mbonnin.net/2011-12-31_diy-gobo", "published_at": "2011-12-31T00:00:00+00:00" }, { "id": "01a087a3-0d4e-71dd-a648-a58b32936272", "title": "MSP430 based Teaaaaaa timer", "url": "https://mbonnin.net/2011-10-26_msp430-based-teaaaaaa-timer", "published_at": "2011-10-26T00:00:00+00:00" }, { "id": "01a087a3-0d4e-71dd-a648-a58b3372836a", "title": "Paris Circuit Board", "url": "https://mbonnin.net/2011-03-09_paris-circuit-board", "published_at": "2011-03-09T00:00:00+00:00" }, { "id": "01a087a3-0d4e-71dd-a648-a58b34306a47", "title": "Bwaaaaaaaaaaaaaaalarm clock", "url": "https://mbonnin.net/2011-01-05_bwaaaaaaaaaaaaaaalarm-clock", "published_at": "2011-01-05T00:00:00+00:00" }, { "id": "01a087a3-0d4e-71dd-a648-a58b3468082f", "title": "First post", "url": "https://mbonnin.net/2011-01-01_first-post", "published_at": "2011-01-01T00:00:00+00:00" } ] posts Claim your blog
Back to mbonnin.net
Blog · corpus.blog/blogs/mbonnin.net/posts

mbonnin.net

mbonnin.net

2026

2025

2024

2022

2021

2020

2019

2018

2017

2016

2014

2013

2012

2011