{"id":15669129,"url":"https://github.com/kopiro/kopiro","last_synced_at":"2026-02-25T05:41:22.879Z","repository":{"id":41786833,"uuid":"58654481","full_name":"kopiro/kopiro","owner":"kopiro","description":"Personal portfolio website","archived":false,"fork":false,"pushed_at":"2026-01-25T10:18:14.000Z","size":12588,"stargazers_count":3,"open_issues_count":1,"forks_count":1,"subscribers_count":0,"default_branch":"master","last_synced_at":"2026-01-26T01:17:16.086Z","etag":null,"topics":["kopiro","portfolio","website"],"latest_commit_sha":null,"homepage":"https://www.kopiro.me","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/kopiro.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2016-05-12T15:37:27.000Z","updated_at":"2026-01-25T10:18:18.000Z","dependencies_parsed_at":"2023-10-14T15:52:33.564Z","dependency_job_id":"7b8d89e1-49d9-47b1-ae6c-2f4d8c1134a8","html_url":"https://github.com/kopiro/kopiro","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/kopiro/kopiro","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kopiro%2Fkopiro","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kopiro%2Fkopiro/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kopiro%2Fkopiro/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kopiro%2Fkopiro/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/kopiro","download_url":"https://codeload.github.com/kopiro/kopiro/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kopiro%2Fkopiro/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29811594,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-25T05:36:42.804Z","status":"ssl_error","status_checked_at":"2026-02-25T05:36:31.934Z","response_time":61,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["kopiro","portfolio","website"],"created_at":"2024-10-03T14:21:36.986Z","updated_at":"2026-02-25T05:41:22.874Z","avatar_url":"https://github.com/kopiro.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# kopiro\n  \n### SWE at Spotify. I like RJ45 cables.\n  \n## apps\n  \n* \u003cspan class=\"title\"\u003e[SoundAnchor](https://apps.kopiro.me/soundanchor)\u003c/span\u003e - \u003cspan class=\"description\"\u003emacOS app that lives in your toolbar that gives you full control over audio devices priority\u003c/span\u003e\u003cspan class=\"subtitle\"\u003e (2025)\u003c/span\u003e\n* \u003cspan class=\"title\"\u003e[I'll Go First](https://apps.apple.com/us/app/ill-go-first/id6756658382)\u003c/span\u003e - \u003cspan class=\"description\"\u003eiOS app that helps you decide who goes first in a game, unless you know the settings\u003c/span\u003e\u003cspan class=\"subtitle\"\u003e (2025)\u003c/span\u003e\n* \u003cspan class=\"title\"\u003e[MBTI showcase](https://kopiro.github.io/mbti)\u003c/span\u003e - \u003cspan class=\"description\"\u003eShowcase for MBTI personality types and cognitive functions\u003c/span\u003e\u003cspan class=\"subtitle\"\u003e (2024)\u003c/span\u003e\n* \u003cspan class=\"title\"\u003e[PikaBulba](https://kopiro.github.io/pika-bulba)\u003c/span\u003e - \u003cspan class=\"description\"\u003ePikachu \u0026 Bulbasaur racing themselves\u003c/span\u003e\u003cspan class=\"subtitle\"\u003e (2023)\u003c/span\u003e\n  \n## blog\n  \n* \u003cspan class=\"title\"\u003e[How to use different Git identities per directory](/press/how-to-use-different-git-identities-per-directory.md)\u003c/span\u003e\u003cspan class=\"subtitle\"\u003e (January 2026)\u003c/span\u003e\n* \u003cspan class=\"title\"\u003e[Claude Code while you drink an espresso](/press/claude-code-while-you-drink-an-espresso.md)\u003c/span\u003e\u003cspan class=\"subtitle\"\u003e (January 2026)\u003c/span\u003e\n* \u003cspan class=\"title\"\u003e[How to use your LG remote to change OLED brightness](/press/how-to-use-your-lg-remote-to-change-oled-brightness.md)\u003c/span\u003e\u003cspan class=\"subtitle\"\u003e (January 2026)\u003c/span\u003e\n* \u003cspan class=\"title\"\u003e[Convert a batch of images into Ghibli style using ChatGPT and macOS Automator](/press/process-bunch-of-pictures-into-ghibli-style-using-chatgpt-and-macos-automator.md)\u003c/span\u003e\u003cspan class=\"subtitle\"\u003e (April 2025)\u003c/span\u003e\n* \u003cspan class=\"title\"\u003e[How to correctly publish your Mac apps outside of the App Store](/press/how-to-correctly-publish-your-mac-apps-outside-of-the-app-store.md)\u003c/span\u003e\u003cspan class=\"subtitle\"\u003e (April 2025)\u003c/span\u003e\n* \u003cspan class=\"title\"\u003e[Using C89 on a '80s Macintosh SE to solve Advent of Code 2023](/press/using-c89-and-a-macintosh-se-to-solve-advent-of-code-2023.md)\u003c/span\u003e\u003cspan class=\"subtitle\"\u003e (December 2023)\u003c/span\u003e\n* \u003cspan class=\"title\"\u003e[Hey Siri, make coffee!](/press/hey-siri-make-coffee.md)\u003c/span\u003e\u003cspan class=\"subtitle\"\u003e (January 2021)\u003c/span\u003e\n* \u003cspan class=\"title\"\u003e[How I built the SiriWaveJS library: a look at the math and the code](/press/how-i-built-the-siriwavejs-library-a-look-at-the-math-and-the-code.md)\u003c/span\u003e\u003cspan class=\"subtitle\"\u003e (August 2020)\u003c/span\u003e\n* \u003cspan class=\"title\"\u003e[How to easily run any Linux tool on any machine](/press/how-to-easily-run-any-linux-tool-on-any-machine.md)\u003c/span\u003e\u003cspan class=\"subtitle\"\u003e (November 2018)\u003c/span\u003e\n* \u003cspan class=\"title\"\u003e[The hardware behind Otto: a monkey plush which became my vocal assistant](/press/the-hardware-behind-otto-a-monkey-plush-which-became-my-vocal-assistant.md)\u003c/span\u003e\u003cspan class=\"subtitle\"\u003e (April 2018)\u003c/span\u003e\n* \u003cspan class=\"title\"\u003e[How to install Kali on a USB stick with pure EFI boot on a Mac (and with virtualization via USB on Virtualbox)](/press/how-to-install-kali-on-a-usb-stick-with-pure-efi-boot-on-a-mac-and-with-virtualization-via-usb-on-virtualbox.md)\u003c/span\u003e\u003cspan class=\"subtitle\"\u003e (January 2018)\u003c/span\u003e\n* \u003cspan class=\"title\"\u003e[What I learned hacking the Facebook Messenger Soccer game](/press/what-i-learned-hacking-the-facebook-messenger-soccer-game.md)\u003c/span\u003e\u003cspan class=\"subtitle\"\u003e (January 2017)\u003c/span\u003e\n* \u003cspan class=\"title\"\u003e[Kata resolution: Next bigger number with the same digits](/press/kata-resolution-next-bigger-number-with-the-same-digits.md)\u003c/span\u003e\u003cspan class=\"subtitle\"\u003e (July 2016)\u003c/span\u003e\n\n## websites\n  \n* \u003cspan class=\"title\"\u003e[PolpettaMag (website)](http://www.polpettamag.com/)\u003c/span\u003e - \u003cspan class=\"description\"\u003eWebsite for the magazine \"PolpettaMag\"\u003c/span\u003e\u003cspan class=\"subtitle\"\u003e (2017)\u003c/span\u003e\n* \u003cspan class=\"title\"\u003e[Duccio Grassi Architects (website)](http://www.ducciograssi.com/)\u003c/span\u003e - \u003cspan class=\"description\"\u003eCompany website for the Architect Studio \"Duccio Grassi Architects\"\u003c/span\u003e\u003cspan class=\"subtitle\"\u003e (2017)\u003c/span\u003e\n* \u003cspan class=\"title\"\u003e[Iotti + Pavarani Architetti (website)](http://www.iotti-pavarani.com/)\u003c/span\u003e - \u003cspan class=\"description\"\u003eCompany website for the Architect Studio \"Iotti + Pavarani\"\u003c/span\u003e\u003cspan class=\"subtitle\"\u003e (2014)\u003c/span\u003e\n* \u003cspan class=\"title\"\u003e[Il Paesaggio della Bonifica (website)](http://ilpaesaggiodellabonifica.it/)\u003c/span\u003e - \u003cspan class=\"description\"\u003ePortal for \"Il Paesaggio della Bonifica\"\u003c/span\u003e\u003cspan class=\"subtitle\"\u003e (2011)\u003c/span\u003e\n  \n## opensource\n  \n* \u003cspan class=\"title\"\u003e[siriwave](https://github.com/kopiro/siriwave)\u003c/span\u003e - \u003cspan class=\"description\"\u003eThe Apple® Siri wave-form replicated in a JS library.\u003c/span\u003e\n* \u003cspan class=\"title\"\u003e[homebridge-tapo-camera](https://github.com/kopiro/homebridge-tapo-camera)\u003c/span\u003e - \u003cspan class=\"description\"\u003eHomebridge plugin for TP-Link TAPO security cameras\u003c/span\u003e\n* \u003cspan class=\"title\"\u003e[homebridge-playstation](https://github.com/kopiro/homebridge-playstation)\u003c/span\u003e - \u003cspan class=\"description\"\u003ePlaystation integration for Homebridge / HOOBS.\u003c/span\u003e\n* \u003cspan class=\"title\"\u003e[trimethyl](https://github.com/trimethyl/trimethyl)\u003c/span\u003e - \u003cspan class=\"description\"\u003eTitanium toolchain with superpower and wrapper around bugs.\u003c/span\u003e\n* \u003cspan class=\"title\"\u003e[ti.notifications](https://github.com/caffeinalab/ti.notifications)\u003c/span\u003e - \u003cspan class=\"description\"\u003eUseful Titanium+Alloy widget to handle notifications messages when app is in foreground.\u003c/span\u003e\n* \u003cspan class=\"title\"\u003e[ti.tilt-image-view](https://github.com/caffeinalab/ti.tilt-image-view)\u003c/span\u003e - \u003cspan class=\"description\"\u003eFacebookPaper-style tilt-fullscreen Image viewer widget for Titanium Alloy.\u003c/span\u003e\n* \u003cspan class=\"title\"\u003e[ti.goosh](https://github.com/caffeinalab/ti.goosh)\u003c/span\u003e - \u003cspan class=\"description\"\u003eGCM/FCM module for Titanium.\u003c/span\u003e\n* \u003cspan class=\"title\"\u003e[ti.loader](https://github.com/caffeinalab/ti.loader)\u003c/span\u003e - \u003cspan class=\"description\"\u003eAlloy+Titanium widget to display a loader mask for you applications.\u003c/span\u003e\n* \u003cspan class=\"title\"\u003e[ti.formbuilder](https://github.com/caffeinalab/ti.formbuilder)\u003c/span\u003e - \u003cspan class=\"description\"\u003eBuild forms for Titanium with just an object.\u003c/span\u003e\n* \u003cspan class=\"title\"\u003e[ti.passcode](https://github.com/caffeinalab/ti.passcode)\u003c/span\u003e - \u003cspan class=\"description\"\u003eAlloy+Titanium widget for an identical iPhone lock screen with passcode.\u003c/span\u003e\n* \u003cspan class=\"title\"\u003e[ti.sharer](https://github.com/caffeinalab/ti.sharer)\u003c/span\u003e - \u003cspan class=\"description\"\u003eSharing widget heavily inspired by AirBNB, with default drivers and the ability to add custom drivers to share.\u003c/span\u003e\n* \u003cspan class=\"title\"\u003e[xscreensaver-apple-aerial](https://github.com/kopiro/xscreensaver-apple-aerial)\u003c/span\u003e - \u003cspan class=\"description\"\u003eApple TV screensaver for Linux\u003c/span\u003e\n* \u003cspan class=\"title\"\u003e[whatever2telegram](https://github.com/kopiro/whatever2telegram)\u003c/span\u003e - \u003cspan class=\"description\"\u003eAllows forwarding whatever you want to a Telegram handle.\u003c/span\u003e\n* \u003cspan class=\"title\"\u003e[esp8266-deerma-humidifier](https://github.com/kopiro/esp8266-deerma-humidifier)\u003c/span\u003e - \u003cspan class=\"description\"\u003eCloud-free wifi humidification \u003c/span\u003e\n* \u003cspan class=\"title\"\u003e[ulala](https://github.com/kopiro/ulala)\u003c/span\u003e - \u003cspan class=\"description\"\u003eShow the right things when you scroll\u003c/span\u003e\n* \u003cspan class=\"title\"\u003e[kopiro](https://github.com/kopiro/kopiro)\u003c/span\u003e - \u003cspan class=\"description\"\u003ePersonal portfolio website\u003c/span\u003e\n* \u003cspan class=\"title\"\u003e[eslint-plugin-react-hooks-ssr](https://github.com/kopiro/eslint-plugin-react-hooks-ssr)\u003c/span\u003e - \u003cspan class=\"description\"\u003eeslint plugin to forbid globals within the react server side rendering\u003c/span\u003e\n* \u003cspan class=\"title\"\u003e[pika-bulba](https://github.com/kopiro/pika-bulba)\u003c/span\u003e - \u003cspan class=\"description\"\u003eSimple 3D game of pokemons running with beautiful pixel-art\u003c/span\u003e\n* \u003cspan class=\"title\"\u003e[tommy](https://github.com/caffeinalab/tommy)\u003c/span\u003e - \u003cspan class=\"description\"\u003eWeb Assets converter and optimizer\u003c/span\u003e\n* \u003cspan class=\"title\"\u003e[esp8266-gpio](https://github.com/kopiro/esp8266-gpio)\u003c/span\u003e - \u003cspan class=\"description\"\u003eESP8266 all-in-one GPIO modular project\u003c/span\u003e\n* \u003cspan class=\"title\"\u003e[mbti](https://github.com/kopiro/mbti)\u003c/span\u003e - \u003cspan class=\"description\"\u003eMyers–Briggs Type Indicator showcase with Carl Jung functions\u003c/span\u003e","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkopiro%2Fkopiro","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fkopiro%2Fkopiro","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkopiro%2Fkopiro/lists"}