commonsguy

{
"type": "http://schema.org/Person",
"name": "",
"description": "",
"followers": "",
"url": "",
"location": "",
"languages": [
"Kotlin",
"Kotlin",
"Kotlin",
"Kotlin"
],
"users": [
{
"name": "@commonsguy",
"avatar": "https://avatars.githubusercontent.com/u/103772?s=64&v=4"
},
{
"name": "@commonsguy",
"avatar": "https://avatars.githubusercontent.com/u/103772?s=64&v=4"
},
{
"name": "View commonsguy's full-sized avatar",
"avatar": "https://avatars.githubusercontent.com/u/103772?v=4"
}
],
"topics": []
}
https://commonsware.com
{
"avatar": "https://avatars.githubusercontent.com/u/103772?v=4",
"name": "Mark Murphy",
"username": "commonsguy",
"description": "Author of several books on Android app development (https://commonsware.com). Maintainer of several open source Kotlin Multiplatform projects, mirrored here.",
"location": "",
"vcard": "<svg aria-hidden=\"true\" data-component=\"Octicon\" height=\"16\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" data-view-component=\"true\" class=\"octicon octicon-link\">\n <path d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"></path>\n</svg>\n <a rel=\"nofollow me\" class=\"Link--primary wb-break-all\" href=\"https://commonsware.com\">https://commonsware.com</a>\n",
"vcardDetails": [
{
"name": "https://commonsware.com",
"url": "https://commonsware.com"
},
{
"name": "@[email protected]",
"url": "https://androiddev.social/@commonsguy"
},
{
"name": "@commonsware.com",
"url": "https://bsky.app/profile/commonsware.com"
}
],
"orgs": [],
"sponsors": [],
"pinned": [
{
"name": "kPointer-mirror",
"description": "Kotlin Multiplatform project to allow JSON Pointer-style paths to be used to read and write from object trees, including JSON. Read-only mirror of https://codeberg.org/commonsguy/kPointer",
"language": ""
},
{
"name": "koverGate-mirror",
"description": "A Gradle plugin that gates builds on Kover coverage thresholds and generates structured gap reports. The objective is to make it easier for agents to process coverage results and identify where mor…",
"language": ""
},
{
"name": "detektifier-mirror",
"description": "A Gradle plugin that rewrites Detekt reports in a way that is easier for coding agents to process reported issues. Read-only mirror of https://codeberg.org/commonsguy/detektifier.",
"language": ""
},
{
"name": "knosh-mirror",
"description": "Knosh is an LLM agent for \"one-shot\" prompts and structured software development activities. Read-only mirror of https://codeberg.org/commonsguy/knosh.",
"language": ""
}
],
"pinnedHtml": [
"\n <div class=\"d-flex width-full position-relative\">\n <div class=\"flex-1\">\n <svg aria-hidden=\"true\" data-component=\"Octicon\" height=\"16\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" data-view-component=\"true\" class=\"octicon octicon-repo mr-1 tmp-mr-1 color-fg-muted\">\n <path d=\"M2 2.5A2.5 2.5 0 0 1 4.5 0h8.75a.75.75 0 0 1 .75.75v12.5a.75.75 0 0 1-.75.75h-2.5a.75.75 0 0 1 0-1.5h1.75v-2h-8a1 1 0 0 0-.714 1.7.75.75 0 1 1-1.072 1.05A2.495 2.495 0 0 1 2 11.5Zm10.5-1h-8a1 1 0 0 0-1 1v6.708A2.486 2.486 0 0 1 4.5 9h8ZM5 12.25a.25.25 0 0 1 .25-.25h3.5a.25.25 0 0 1 .25.25v3.25a.25.25 0 0 1-.4.2l-1.45-1.087a.249.249 0 0 0-.3 0L5.4 15.7a.25.25 0 0 1-.4-.2Z\"></path>\n</svg>\n <span data-view-component=\"true\" class=\"position-relative\"><a data-hydro-click=\"{&quot;event_type&quot;:&quot;user_profile.click&quot;,&quot;payload&quot;:{&quot;profile_user_id&quot;:103772,&quot;target&quot;:&quot;PINNED_REPO&quot;,&quot;user_id&quot;:null,&quot;originating_url&quot;:&quot;https://github.com/commonsguy&quot;}}\" data-hydro-click-hmac=\"e3dd4c4e4b115c7f899cbd9d70aa4032f86767441ba299c90f0b589df3d2dbf9\" id=\"1308775375\" href=\"/commonsguy/kPointer-mirror\" data-view-component=\"true\" class=\"Link mr-1 tmp-mr-1 text-bold wb-break-word\"><span class=\"repo\">kPointer-mirror</span></a> <tool-tip data-direction=\"n\" id=\"tooltip-a30ee59b-dddf-4b5c-8f19-d905f2aaa732\" for=\"1308775375\" popover=\"manual\" data-type=\"label\" data-view-component=\"true\" class=\"sr-only position-absolute\">kPointer-mirror</tool-tip></span> <span></span><span class=\"Label Label--secondary v-align-middle mt-1 no-wrap v-align-baseline Label--inline\">Public</span>\n </div>\n </div>\n\n\n <p class=\"pinned-item-desc color-fg-muted text-small mt-2 mb-0\">\n Kotlin Multiplatform project to allow JSON Pointer-style paths to be used to read and write from object trees, including JSON. Read-only mirror of https://codeberg.org/commonsguy/kPointer\n </p>\n\n <p class=\"mb-0 mt-2 f6 color-fg-muted\">\n <span class=\"tmp-mr-3 d-inline-block\">\n <span class=\"repo-language-color\" style=\"background-color: #A97BFF\"></span>\n <span itemprop=\"programmingLanguage\">Kotlin</span>\n</span>\n\n </p>\n ",
"\n <div class=\"d-flex width-full position-relative\">\n <div class=\"flex-1\">\n <svg aria-hidden=\"true\" data-component=\"Octicon\" height=\"16\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" data-view-component=\"true\" class=\"octicon octicon-repo mr-1 tmp-mr-1 color-fg-muted\">\n <path d=\"M2 2.5A2.5 2.5 0 0 1 4.5 0h8.75a.75.75 0 0 1 .75.75v12.5a.75.75 0 0 1-.75.75h-2.5a.75.75 0 0 1 0-1.5h1.75v-2h-8a1 1 0 0 0-.714 1.7.75.75 0 1 1-1.072 1.05A2.495 2.495 0 0 1 2 11.5Zm10.5-1h-8a1 1 0 0 0-1 1v6.708A2.486 2.486 0 0 1 4.5 9h8ZM5 12.25a.25.25 0 0 1 .25-.25h3.5a.25.25 0 0 1 .25.25v3.25a.25.25 0 0 1-.4.2l-1.45-1.087a.249.249 0 0 0-.3 0L5.4 15.7a.25.25 0 0 1-.4-.2Z\"></path>\n</svg>\n <span data-view-component=\"true\" class=\"position-relative\"><a data-hydro-click=\"{&quot;event_type&quot;:&quot;user_profile.click&quot;,&quot;payload&quot;:{&quot;profile_user_id&quot;:103772,&quot;target&quot;:&quot;PINNED_REPO&quot;,&quot;user_id&quot;:null,&quot;originating_url&quot;:&quot;https://github.com/commonsguy&quot;}}\" data-hydro-click-hmac=\"e3dd4c4e4b115c7f899cbd9d70aa4032f86767441ba299c90f0b589df3d2dbf9\" id=\"1276057669\" href=\"/commonsguy/koverGate-mirror\" data-view-component=\"true\" class=\"Link mr-1 tmp-mr-1 text-bold wb-break-word\"><span class=\"repo\">koverGate-mirror</span></a> <tool-tip data-direction=\"n\" id=\"tooltip-849c701f-c79a-4a8c-912d-6049b8beaf71\" for=\"1276057669\" popover=\"manual\" data-type=\"label\" data-view-component=\"true\" class=\"sr-only position-absolute\">koverGate-mirror</tool-tip></span> <span></span><span class=\"Label Label--secondary v-align-middle mt-1 no-wrap v-align-baseline Label--inline\">Public</span>\n </div>\n </div>\n\n\n <p class=\"pinned-item-desc color-fg-muted text-small mt-2 mb-0\">\n A Gradle plugin that gates builds on Kover coverage thresholds and generates structured gap reports. The objective is to make it easier for agents to process coverage results and identify where mor…\n </p>\n\n <p class=\"mb-0 mt-2 f6 color-fg-muted\">\n <span class=\"tmp-mr-3 d-inline-block\">\n <span class=\"repo-language-color\" style=\"background-color: #A97BFF\"></span>\n <span itemprop=\"programmingLanguage\">Kotlin</span>\n</span>\n\n <a href=\"/commonsguy/koverGate-mirror/stargazers\" class=\"pinned-item-meta Link--muted\">\n <svg aria-label=\"star\" role=\"img\" data-component=\"Octicon\" height=\"16\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" data-view-component=\"true\" class=\"octicon octicon-star\">\n <path d=\"M8 .25a.75.75 0 0 1 .673.418l1.882 3.815 4.21.612a.75.75 0 0 1 .416 1.279l-3.046 2.97.719 4.192a.751.751 0 0 1-1.088.791L8 12.347l-3.766 1.98a.75.75 0 0 1-1.088-.79l.72-4.194L.818 6.374a.75.75 0 0 1 .416-1.28l4.21-.611L7.327.668A.75.75 0 0 1 8 .25Zm0 2.445L6.615 5.5a.75.75 0 0 1-.564.41l-3.097.45 2.24 2.184a.75.75 0 0 1 .216.664l-.528 3.084 2.769-1.456a.75.75 0 0 1 .698 0l2.77 1.456-.53-3.084a.75.75 0 0 1 .216-.664l2.24-2.183-3.096-.45a.75.75 0 0 1-.564-.41L8 2.694Z\"></path>\n</svg>\n 1\n </a>\n </p>\n ",
"\n <div class=\"d-flex width-full position-relative\">\n <div class=\"flex-1\">\n <svg aria-hidden=\"true\" data-component=\"Octicon\" height=\"16\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" data-view-component=\"true\" class=\"octicon octicon-repo mr-1 tmp-mr-1 color-fg-muted\">\n <path d=\"M2 2.5A2.5 2.5 0 0 1 4.5 0h8.75a.75.75 0 0 1 .75.75v12.5a.75.75 0 0 1-.75.75h-2.5a.75.75 0 0 1 0-1.5h1.75v-2h-8a1 1 0 0 0-.714 1.7.75.75 0 1 1-1.072 1.05A2.495 2.495 0 0 1 2 11.5Zm10.5-1h-8a1 1 0 0 0-1 1v6.708A2.486 2.486 0 0 1 4.5 9h8ZM5 12.25a.25.25 0 0 1 .25-.25h3.5a.25.25 0 0 1 .25.25v3.25a.25.25 0 0 1-.4.2l-1.45-1.087a.249.249 0 0 0-.3 0L5.4 15.7a.25.25 0 0 1-.4-.2Z\"></path>\n</svg>\n <span data-view-component=\"true\" class=\"position-relative\"><a data-hydro-click=\"{&quot;event_type&quot;:&quot;user_profile.click&quot;,&quot;payload&quot;:{&quot;profile_user_id&quot;:103772,&quot;target&quot;:&quot;PINNED_REPO&quot;,&quot;user_id&quot;:null,&quot;originating_url&quot;:&quot;https://github.com/commonsguy&quot;}}\" data-hydro-click-hmac=\"e3dd4c4e4b115c7f899cbd9d70aa4032f86767441ba299c90f0b589df3d2dbf9\" id=\"1276051516\" href=\"/commonsguy/detektifier-mirror\" data-view-component=\"true\" class=\"Link mr-1 tmp-mr-1 text-bold wb-break-word\"><span class=\"repo\">detektifier-mirror</span></a> <tool-tip data-direction=\"n\" id=\"tooltip-03ac23a5-2ddb-4689-8601-b439cb15a6d1\" for=\"1276051516\" popover=\"manual\" data-type=\"label\" data-view-component=\"true\" class=\"sr-only position-absolute\">detektifier-mirror</tool-tip></span> <span></span><span class=\"Label Label--secondary v-align-middle mt-1 no-wrap v-align-baseline Label--inline\">Public</span>\n </div>\n </div>\n\n\n <p class=\"pinned-item-desc color-fg-muted text-small mt-2 mb-0\">\n A Gradle plugin that rewrites Detekt reports in a way that is easier for coding agents to process reported issues. Read-only mirror of https://codeberg.org/commonsguy/detektifier.\n </p>\n\n <p class=\"mb-0 mt-2 f6 color-fg-muted\">\n <span class=\"tmp-mr-3 d-inline-block\">\n <span class=\"repo-language-color\" style=\"background-color: #A97BFF\"></span>\n <span itemprop=\"programmingLanguage\">Kotlin</span>\n</span>\n\n </p>\n ",
"\n <div class=\"d-flex width-full position-relative\">\n <div class=\"flex-1\">\n <svg aria-hidden=\"true\" data-component=\"Octicon\" height=\"16\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" data-view-component=\"true\" class=\"octicon octicon-repo mr-1 tmp-mr-1 color-fg-muted\">\n <path d=\"M2 2.5A2.5 2.5 0 0 1 4.5 0h8.75a.75.75 0 0 1 .75.75v12.5a.75.75 0 0 1-.75.75h-2.5a.75.75 0 0 1 0-1.5h1.75v-2h-8a1 1 0 0 0-.714 1.7.75.75 0 1 1-1.072 1.05A2.495 2.495 0 0 1 2 11.5Zm10.5-1h-8a1 1 0 0 0-1 1v6.708A2.486 2.486 0 0 1 4.5 9h8ZM5 12.25a.25.25 0 0 1 .25-.25h3.5a.25.25 0 0 1 .25.25v3.25a.25.25 0 0 1-.4.2l-1.45-1.087a.249.249 0 0 0-.3 0L5.4 15.7a.25.25 0 0 1-.4-.2Z\"></path>\n</svg>\n <span data-view-component=\"true\" class=\"position-relative\"><a data-hydro-click=\"{&quot;event_type&quot;:&quot;user_profile.click&quot;,&quot;payload&quot;:{&quot;profile_user_id&quot;:103772,&quot;target&quot;:&quot;PINNED_REPO&quot;,&quot;user_id&quot;:null,&quot;originating_url&quot;:&quot;https://github.com/commonsguy&quot;}}\" data-hydro-click-hmac=\"e3dd4c4e4b115c7f899cbd9d70aa4032f86767441ba299c90f0b589df3d2dbf9\" id=\"1276059529\" href=\"/commonsguy/knosh-mirror\" data-view-component=\"true\" class=\"Link mr-1 tmp-mr-1 text-bold wb-break-word\"><span class=\"repo\">knosh-mirror</span></a> <tool-tip data-direction=\"n\" id=\"tooltip-bddf2537-0847-49c9-9072-56bc02bd7c34\" for=\"1276059529\" popover=\"manual\" data-type=\"label\" data-view-component=\"true\" class=\"sr-only position-absolute\">knosh-mirror</tool-tip></span> <span></span><span class=\"Label Label--secondary v-align-middle mt-1 no-wrap v-align-baseline Label--inline\">Public</span>\n </div>\n </div>\n\n\n <p class=\"pinned-item-desc color-fg-muted text-small mt-2 mb-0\">\n Knosh is an LLM agent for \"one-shot\" prompts and structured software development activities. Read-only mirror of https://codeberg.org/commonsguy/knosh.\n </p>\n\n <p class=\"mb-0 mt-2 f6 color-fg-muted\">\n <span class=\"tmp-mr-3 d-inline-block\">\n <span class=\"repo-language-color\" style=\"background-color: #A97BFF\"></span>\n <span itemprop=\"programmingLanguage\">Kotlin</span>\n</span>\n\n </p>\n "
]
}
{
"accept-ranges": "bytes",
"cache-control": "max-age=0, private, must-revalidate",
"content-encoding": "gzip",
"content-security-policy": "default-src 'none'; base-uri 'self'; child-src github.githubassets.com github.com/assets-cdn/worker/ github.com/assets/ gist.github.com/assets-cdn/worker/; connect-src 'self' uploads.github.com www.githubstatus.com collector.github.com raw.githubusercontent.com api.github.com github-cloud.s3.amazonaws.com github-production-repository-file-5c1aeb.s3.amazonaws.com github-production-upload-manifest-file-7fdce7.s3.amazonaws.com github-production-user-asset-6210df.s3.amazonaws.com *.rel.tunnels.api.visualstudio.com wss://*.rel.tunnels.api.visualstudio.com github.githubassets.com objects-origin.githubusercontent.com copilot-proxy.githubusercontent.com proxy.individual.githubcopilot.com proxy.business.githubcopilot.com proxy.enterprise.githubcopilot.com *.actions.githubusercontent.com wss://*.actions.githubusercontent.com productionresultssa0.blob.core.windows.net productionresultssa1.blob.core.windows.net productionresultssa2.blob.core.windows.net productionresultssa3.blob.core.windows.net productionresultssa4.blob.core.windows.net productionresultssa5.blob.core.windows.net productionresultssa6.blob.core.windows.net productionresultssa7.blob.core.windows.net productionresultssa8.blob.core.windows.net productionresultssa9.blob.core.windows.net productionresultssa10.blob.core.windows.net productionresultssa11.blob.core.windows.net productionresultssa12.blob.core.windows.net productionresultssa13.blob.core.windows.net productionresultssa14.blob.core.windows.net productionresultssa15.blob.core.windows.net productionresultssa16.blob.core.windows.net productionresultssa17.blob.core.windows.net productionresultssa18.blob.core.windows.net productionresultssa19.blob.core.windows.net github-production-repository-image-32fea6.s3.amazonaws.com github-production-release-asset-2e65be.s3.amazonaws.com insights.github.com wss://alive.github.com wss://alive-staging.github.com api.githubcopilot.com api.individual.githubcopilot.com api.business.githubcopilot.com api.enterprise.githubcopilot.com wss://production-copilot-host.webpubsub.azure.com api.github.com/cmc_internal/api/; font-src github.githubassets.com; form-action 'self' github.com gist.github.com copilot-workspace.githubnext.com objects-origin.githubusercontent.com; frame-ancestors 'none'; frame-src viewscreen.githubusercontent.com notebooks.githubusercontent.com; img-src 'self' data: blob: github.githubassets.com media.githubusercontent.com camo.githubusercontent.com identicons.github.com avatars.githubusercontent.com private-avatars.githubusercontent.com github-cloud.s3.amazonaws.com objects.githubusercontent.com release-assets.githubusercontent.com secured-user-images.githubusercontent.com user-images.githubusercontent.com private-user-images.githubusercontent.com opengraph.githubassets.com repository-images.githubusercontent.com marketplace-screenshots.githubusercontent.com copilotprodattachments.blob.core.windows.net/github-production-copilot-attachments/ github-production-user-asset-6210df.s3.amazonaws.com customer-stories-feed.github.com spotlights-feed.github.com explore-feed.github.com *.googleusercontent.com objects-origin.githubusercontent.com *.githubusercontent.com; manifest-src 'self'; media-src github.com user-images.githubusercontent.com secured-user-images.githubusercontent.com private-user-images.githubusercontent.com github-production-user-asset-6210df.s3.amazonaws.com gist.github.com github.githubassets.com; script-src github.githubassets.com 'sha256-tSjmyPUky1KbRZ0fw9VUil3wFEbeM82rtbJDygGJAXw='; style-src 'unsafe-inline' github.githubassets.com; upgrade-insecure-requests; worker-src github.githubassets.com github.com/assets-cdn/worker/ github.com/assets/ gist.github.com/assets-cdn/worker/",
"content-type": "text/html; charset=utf-8",
"date": "Mon, 28 Sep 2026 07:23:41 GMT",
"etag": "4d3fefcb56cf66da864ec8e7064cc192",
"referrer-policy": "origin-when-cross-origin, strict-origin-when-cross-origin",
"server": "github.com",
"set-cookie": "logged_in=no; expires=Tue, 28 Sep 2027 07:23:41 GMT; domain=.github.com; path=/; HttpOnly; secure; SameSite=Lax",
"strict-transport-security": "max-age=31536000; includeSubdomains; preload",
"transfer-encoding": "chunked",
"vary": "X-PJAX, X-PJAX-Container, Turbo-Visit, Turbo-Frame, X-Requested-With, X-GitHub-Client-Version, Sec-Fetch-Site,Accept-Encoding, Accept, X-Requested-With",
"x-content-type-options": "nosniff",
"x-frame-options": "deny",
"x-github-edge-region": "iad",
"x-github-request-id": "C438:8F5BB:20752EB:2ABEB46:6ABA15FC",
"x-xss-protection": "0"
}