{"id":42993698,"url":"https://github.com/jreisinger/gokatas","last_synced_at":"2026-01-31T03:11:29.442Z","repository":{"id":37713982,"uuid":"484724426","full_name":"jreisinger/gokatas","owner":"jreisinger","description":"Internalize the Go movements 🥋","archived":false,"fork":false,"pushed_at":"2025-08-29T09:18:46.000Z","size":1865,"stargazers_count":117,"open_issues_count":0,"forks_count":94,"subscribers_count":4,"default_branch":"main","last_synced_at":"2025-08-29T13:14:25.775Z","etag":null,"topics":["devops","go","golang","katas","practice","programming","reference","security","sysadmin"],"latest_commit_sha":null,"homepage":"","language":"Go","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/jreisinger.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}},"created_at":"2022-04-23T11:10:32.000Z","updated_at":"2025-08-29T09:18:49.000Z","dependencies_parsed_at":"2023-11-16T09:28:34.705Z","dependency_job_id":"95d2b833-fc66-4787-9240-2901f26b1f6d","html_url":"https://github.com/jreisinger/gokatas","commit_stats":null,"previous_names":[],"tags_count":56,"template":false,"template_full_name":null,"purl":"pkg:github/jreisinger/gokatas","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jreisinger%2Fgokatas","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jreisinger%2Fgokatas/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jreisinger%2Fgokatas/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jreisinger%2Fgokatas/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/jreisinger","download_url":"https://codeload.github.com/jreisinger/gokatas/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jreisinger%2Fgokatas/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28928050,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-31T02:59:34.861Z","status":"ssl_error","status_checked_at":"2026-01-31T02:59:05.369Z","response_time":128,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: 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":["devops","go","golang","katas","practice","programming","reference","security","sysadmin"],"created_at":"2026-01-31T03:11:28.828Z","updated_at":"2026-01-31T03:11:29.437Z","avatar_url":"https://github.com/jreisinger.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003e [!IMPORTANT]\n\u003e Here's a cleaner and simpler version: https://github.com/gokatas/gokatas\n\n# Go katas\n\nKatas (形) are practiced in martial arts as a way to internalize and perfect the\ntechniques so they can be executed and adapted under different circumstances,\nwithout thought or hesitation. Let's try the same with Go code.\n\nThe approach is pretty low-tech. Go katas is a list of directories containing\nbrief, well written Go programs. Select one of them and try to understand it.\nThen be rewriting it partially or from scratch until you feel comfortable with it.\nUse `git diff` to see how you are doing. There's a command to show the katas \nwith some info and your progress:\n\n```\n$ go run ./cmd/gokatas -c 2\nKata              Last done    Done  Level     Topics\n----              ---------    ----  -----     ------\nboring/boring     0 days ago     1x  beginner  concurrency, design\nboring/channel    0 days ago     1x  beginner  goroutines, channels\nareader           3 days ago     2x  beginner  interfaces, io.Reader\n----                           ----\n3                                4x \n```\n\nInitial setup:\n\n1) [Install Go](https://go.dev/doc/install).\n\n2) [Fork](https://github.com/jreisinger/gokatas/fork) this repo so you have your own copy.\n  \n3) Clone the fork to your computer: `git clone git@github.com:\u003cyou\u003e/gokatas.git`.\n\n4) Clear contents of `katas.md` (unless you are me :-) and start practicing.\n\nIt's important to practice regularly because repetition creates habits, and\nhabits are what enable mastery. Start by taking baby steps. Set a goal that you\ncan meet, e.g. 10 minutes every day before work. At first it's fine even if you\nonly read through one of the beginner level katas. Use documentation, a search\nengine or an AI model if you don't understand something. After some time it will\nrequire much less will power to practice. Your programming moves will start\nlooking simpler and smoother. If you feel comfortable enough with a kata, stop\npracticing it and pick another one that interests you and is slightly beyond\nyour current ability.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjreisinger%2Fgokatas","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjreisinger%2Fgokatas","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjreisinger%2Fgokatas/lists"}