{"id":34221622,"url":"https://github.com/gerbenjacobs/unix-piping-course","last_synced_at":"2026-03-10T20:33:08.856Z","repository":{"id":259512202,"uuid":"866588007","full_name":"gerbenjacobs/unix-piping-course","owner":"gerbenjacobs","description":"This course will show you how to make a Go binary that acts as a unix tool.  We will read data from stdin, convert it to our custom JSON model and push it through to stdout, completing the cycle.","archived":false,"fork":false,"pushed_at":"2024-10-24T18:45:05.000Z","size":8,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2024-11-19T09:57:44.176Z","etag":null,"topics":["golang","pipes","tutorial","unix"],"latest_commit_sha":null,"homepage":"https://blog.gerbenjacobs.nl/using-unix-pipes-with-go/","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/gerbenjacobs.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}},"created_at":"2024-10-02T14:26:58.000Z","updated_at":"2024-10-24T18:45:10.000Z","dependencies_parsed_at":"2024-10-30T00:01:27.158Z","dependency_job_id":null,"html_url":"https://github.com/gerbenjacobs/unix-piping-course","commit_stats":null,"previous_names":["gerbenjacobs/unix-piping-course"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/gerbenjacobs/unix-piping-course","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gerbenjacobs%2Funix-piping-course","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gerbenjacobs%2Funix-piping-course/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gerbenjacobs%2Funix-piping-course/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gerbenjacobs%2Funix-piping-course/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/gerbenjacobs","download_url":"https://codeload.github.com/gerbenjacobs/unix-piping-course/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gerbenjacobs%2Funix-piping-course/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":30352877,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-03-10T15:55:29.454Z","status":"ssl_error","status_checked_at":"2026-03-10T15:54:58.440Z","response_time":106,"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":["golang","pipes","tutorial","unix"],"created_at":"2025-12-15T23:18:38.356Z","updated_at":"2026-03-10T20:33:08.842Z","avatar_url":"https://github.com/gerbenjacobs.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Unix Piping Course with Go\n\nThis course will show you how to make a Go binary that acts as a unix tool.\n\nWe will read data from `stdin`, convert it to our custom JSON model and push it through to `stdout`, completing the cycle.\n\n\u003eThis is a beginner to intermediate course for both Go and Unix, some things will be explained, but if you're unsure\nyou should be able to autonomously search for the right information.\n\n## Background\n\nThe [Unix philosophy](https://en.wikipedia.org/wiki/Unix_philosophy) is to have tools only do one thing and by \nreading and writing from `stdout` these tools can be combined to create pipelines of work that needs to be done.\n\nAn example you might have seen already is using `curl` to query a JSON endpoint and using `jq` to pretty-print\nthis to your screen.\n\n```bash\ncurl -s https://dummyjson.com/test | jq\n```\n\nA lot of these small, do one thing well, tools are written in C, but there's no reason we can't make our own in Go!\n\n## Requirements\n\n- You'll need to have Go installed. (See [Go install](https://go.dev/doc/install))\n- You'll need to run this in a Unix-based system (assuming macOS)\n- (Optional) Docker\n- (Optional) We will use `jq` as well\n\n## Steps\n\nThis course is divided into steps, navigate to `step1` and make sure to read the individual READMEs.\n\n\u003e If you're really new to Go, you can check out `step0`, it will explain how to create an executable Go\n\u003e program along with how importing packages works. Make sure you have also done the [Go tour](https://go.dev/tour/)\n\u003e so you know the basic Go syntax.\n\nThe README explains what needs to be done and what the exercise is, it also contains background information.\nIf something is not covered don't be afraid to search for more information on Wikipedia, pkg.go.dev or StackOverflow.\n\nEach step also contains a `ref.go` which is a reference and/or the answer for that step.\nReading this before you do the exercise is considered cheating! ;)","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgerbenjacobs%2Funix-piping-course","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fgerbenjacobs%2Funix-piping-course","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgerbenjacobs%2Funix-piping-course/lists"}