{"id":44771004,"url":"https://github.com/tpalmerstudios/practice","last_synced_at":"2026-02-16T05:18:19.881Z","repository":{"id":280188672,"uuid":"941236917","full_name":"tpalmerstudios/practice","owner":"tpalmerstudios","description":"Random Projects While Learning C","archived":false,"fork":false,"pushed_at":"2026-01-11T08:20:22.000Z","size":192,"stargazers_count":1,"open_issues_count":1,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2026-01-11T14:20:27.365Z","etag":null,"topics":["algorithms","beginner-friendly","c","cli","linux","parser","sudoku"],"latest_commit_sha":null,"homepage":"","language":"C","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/tpalmerstudios.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","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":"2025-03-01T20:12:19.000Z","updated_at":"2026-01-11T08:20:26.000Z","dependencies_parsed_at":"2025-03-01T21:34:10.314Z","dependency_job_id":null,"html_url":"https://github.com/tpalmerstudios/practice","commit_stats":null,"previous_names":["tpalmerstudios/practice"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/tpalmerstudios/practice","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tpalmerstudios%2Fpractice","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tpalmerstudios%2Fpractice/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tpalmerstudios%2Fpractice/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tpalmerstudios%2Fpractice/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/tpalmerstudios","download_url":"https://codeload.github.com/tpalmerstudios/practice/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tpalmerstudios%2Fpractice/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29500826,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-16T03:57:51.541Z","status":"ssl_error","status_checked_at":"2026-02-16T03:55:59.854Z","response_time":115,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6: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":["algorithms","beginner-friendly","c","cli","linux","parser","sudoku"],"created_at":"2026-02-16T05:18:19.167Z","updated_at":"2026-02-16T05:18:19.875Z","avatar_url":"https://github.com/tpalmerstudios.png","language":"C","funding_links":[],"categories":[],"sub_categories":[],"readme":"So this is a combination of random programs I'm writing while learning. Currently working on backtracing algorithm for a sudoku solver. I'm feeling confident in my skills of reading others code. e.g. minishell is a french program off of github. I'll add a source later and properly fork it. Also feel pretty good about my program designs and APIs as well as some beginner algorithms. Need to work on network programming and signals as well as forking and multithreading. Possibly work on memory and dynamic allocation as well \n\nAnother thing I want to get back to is the K\u0026R book then Berj and TCP/IP Illustrated \u0026c.\n\n# Modular C Practice Tasks\n\n---\n- Build some kind of file parser for configs\n- Build an input parser\n\n## File \u0026 Data Handling\n\n1. **Struct to Binary** – Write a `Person` struct (name, age) to a binary file.\n2. **Binary to Struct** – Read the binary file and print each person.\n3. **Append Log Line** – Append a line with a timestamp to a `.txt` log.\n4. **Line Counter** – Count how many lines exist in a given text file.\n5. **Array to File** – Serialize an array of structs to disk.\n6. **Read Column** – Read a CSV file and print only the second column.\n7. **Log Levels** – Write logs with \"INFO\", \"WARN\", or \"ERROR\" prefixes.\n8. **Word Counter** – Count how many times a word appears in a file.\n\n---\n\n##  Networking (Mockups or Real)\n\n9. **TCP Echo Server** – Accept a client and echo back all input.\n10. **TCP Client** – Connect to a server and send `\"Hello\"` string.\n11. **Input Validation** – Validate string before sending (e.g., alphanumeric only).\n12. **Fake Packet Loss** – Use `rand()` to simulate dropped packets.\n13. **Simple Protocol** – Send a 4-byte length before the message body.\n\n---\n\n##  Memory and Structs\n\n14. **Dynamic Int Array** – Create resizable array with `malloc` + `realloc`.\n15. **Nested Free** – Free a struct with internal heap pointers.\n16. **Intentional Leak** – Leak memory on purpose, then fix it.\n17. **Fixed-Size Cache** – Evict oldest item when cache array is full.\n18. **Singly Linked List** – Add, delete, and print operations.\n\n---\n\n##  Logic and Behavior\n\n19. **Find Duplicates** – From a list of `int`, print duplicates.\n20. **Hash Function** – Implement a basic hash function for strings.\n21. **Key=Value Parser** – Split `key=value` into separate variables.\n22. **Struct Sorter** – Sort an array of structs by field (like `age`).\n23. **Lookup Table** – Searchable array of key/value pairs via struct.\n\n---\n\n##  Algorithms and Parsing\n\n24. **Reverse String** – In-place string reversal.\n25. **Longest Word** – Return longest word in a sentence.\n26. **Hex to Int** – Convert `\"1F\"` string to integer.\n27. **Command Parser** – Parse `\"add 2 3\"` into a function call.\n28. **Simple Calculator** – CLI calculator supporting `+ - * /`.\n\n---\n\n##  Validation and Testing\n\n29. **Is Integer?** – Check if string is a valid base-10 integer. This is almost done. Just modify one of the stoi functions\n30. **Login Mock** – Hardcoded username/password login system.\n31. **Email Validator** – Check for presence of `@` and `.` after.\n32. **Test Helper** – Implement `assert_equal()` for simple unit tests.\n\n---\n\n##  System Utilities\n\n33. **Time Function** – Measure time a function takes with `gettimeofday()`.\n34. **Print Env Vars** – List all environment variables.\n35. **Get CWD** – Print current working directory.\n36. **Config Reader** – Load key/value settings from a config file.\n\n---\n\n##  Misc \u0026 Utility\n\n37. **PRNG w/ Seed** – Custom pseudo-random generator with user seed.\n38. **CLI Menu** – Menu system using `switch` and `scanf`.\n39. **Tokenizer** – Split a string on spaces or commas.\n40. **Run Tracker** – Save how many times program has been run (file counter).\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftpalmerstudios%2Fpractice","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftpalmerstudios%2Fpractice","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftpalmerstudios%2Fpractice/lists"}