{"id":63497,"url":"https://github.com/tlylt/bookmarks","name":"bookmarks","description":"🔖My Tech Bookmarks - collections of links to videos, talks, articles and more","projects_count":95,"last_synced_at":"2026-06-15T10:00:27.689Z","repository":{"id":45848855,"uuid":"461166340","full_name":"tlylt/bookmarks","owner":"tlylt","description":"🔖My Tech Bookmarks - collections of links to videos, talks, articles and more","archived":false,"fork":false,"pushed_at":"2023-12-12T14:41:18.000Z","size":19155,"stargazers_count":2,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2026-05-29T19:04:24.029Z","etag":null,"topics":["awesome","awesome-list","bookmarks"],"latest_commit_sha":null,"homepage":"https://tlylt.github.io/bookmarks/","language":"CSS","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/tlylt.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":"2022-02-19T11:06:15.000Z","updated_at":"2024-12-20T16:22:33.000Z","dependencies_parsed_at":"2025-12-25T14:01:09.681Z","dependency_job_id":null,"html_url":"https://github.com/tlylt/bookmarks","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/tlylt/bookmarks","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tlylt%2Fbookmarks","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tlylt%2Fbookmarks/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tlylt%2Fbookmarks/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tlylt%2Fbookmarks/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/tlylt","download_url":"https://codeload.github.com/tlylt/bookmarks/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tlylt%2Fbookmarks/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34357282,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-15T02:00:07.085Z","response_time":63,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"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"}},"created_at":"2024-07-14T00:00:36.913Z","updated_at":"2026-06-15T10:00:27.690Z","primary_language":null,"list_of_lists":false,"displayable":true,"categories":["Go","CSS","CLI","Code","Git","Open-Source Guides, Software News \u0026 Events","Blog","Software Engineering","Career","Negotiation","GitHub Actions/Workflows","Blockchain","Test","The Third Web","Kafka","Websites that look nice to me","API","ChatGPT","Interview","Java","Kubernetes","Knowledge Management","Newsletter","Node","Writing","Zzz! Those Issues","Frontend Libraries"],"sub_categories":[],"readme":"\n*Also available as a [website](https://tlylt.github.io/bookmarks/)*\n\n# The Bookmarks\n\n\u003cdiv id=\"bookmarks\"\u003e\n\n\u003cdiv id=\"websiteSection\"\u003e\n\n## Websites that look nice to me\n- [PostHog](https://posthog.com/product-analytics)\n  - I like the color palette and the style\n  \n\u003c/div\u003e\n\n\u003cdiv id=\"apiSection\"\u003e\n\n## API\n- [Nate Barbettini – API Throwdown: RPC vs REST vs GraphQL, Iterate 2018](https://youtu.be/IvsANO0qZEg)\n  - Quite a good comparison between the three popular choices, and conclusion is to focus on user case!\n  \n\u003c/div\u003e\n\n\u003cdiv id=\"blogSection\"\u003e\n\n## Blog\n- [Scott Logic](https://blog.scottlogic.com/)\n  - Thoughts on technology and design\n- [The Kent C. Dodds Blog](https://kentcdodds.com/blog)\n  - Web, Open Source, Testing and many more\n- [Josh W Comeau](https://www.joshwcomeau.com/)\n  - CSS and frontend in general\n- [当然我在扯淡](https://www.yinwang.org/)\n- [Gergely Orosz - The Pragmatic Engineer](https://blog.pragmaticengineer.com/author/gergely/)\n  - Good perspective on Tech happenings and working at Tech\n- [Benjamin Yolken | Adventures in software engineering](https://yolken.net/)\n- [antirez](http://antirez.com/latest/0)\n- [Peter Bengtsson](https://www.peterbe.com/plog)\n- [Simon Willison’s Weblog](https://simonwillison.net/)\n  - (At the time of reading) great info on generative AI, especially the danger\n- [No Idea Blog](https://noidea.dog/)\n\n\u003c/div\u003e\n\n\u003cdiv id=\"blockchainSection\"\u003e\n\n## Blockchain\n- [How Bitcoin Works Under the Hood](https://www.youtube.com/watch?v=Lx9zgZCMqXE)\n- [Blockchain 101 - A Visual Demo](https://www.youtube.com/watch?v=_160oMzblY8)\n- [Game Theory and Network Attacks: How to Destroy Bitcoin - BPASE '18](https://youtu.be/ujz3sXpNgtc)\n\n\u003c/div\u003e\n\n\u003cdiv id=\"chatGPTSection\"\u003e\n\n## ChatGPT\n- [ChatGPT Is a Blurry JPEG of the Web](https://www.newyorker.com/tech/annals-of-technology/chatgpt-is-a-blurry-jpeg-of-the-web/amp)\n  - \"OpenAI’s chatbot offers paraphrases, whereas Google offers quotes. Which do we prefer?\"\n- [“It’s Not Possible for Me to Feel or Be Creepy”: An Interview with ChatGPT](https://www.newyorker.com/news/the-new-yorker-interview/its-not-possible-for-me-to-feel-or-be-creepy-an-interview-with-chatgpt#intcid=_the-new-yorker-amp-bottom-recirc_ddb11839-ea89-43e6-a1c4-ead46e87c796_text2vec1)\n- [Making Large Language Models Work For You](https://youtu.be/aC7UQcZN6y8?si=kU4Wt4lG8U09sjFU)\n  - Great coverage of LLM and its current state of development\n \n\u003c/div\u003e\n\n\u003cdiv id=\"careerSection\"\u003e\n\n## Career\n- [Get your work recognized: write a brag document](https://jvns.ca/blog/brag-documents/#template)\n  - Something that I want to start doing to keep track and review my work\n- [Chad Fowler - The Passionate Programmer: 10 years later](https://youtu.be/CkfjCef-iYI)\n- [A forty-year career.](https://lethain.com/forty-year-career/)\n- [Salary Negotiation: Make More Money, Be More Valued](https://www.kalzumeus.com/2012/01/23/salary-negotiation/)\n- [Don't Call Yourself A Programmer, And Other Career Advice](https://www.kalzumeus.com/2011/10/28/dont-call-yourself-a-programmer/)\n\n\u003c/div\u003e\n\n\u003cdiv id=\"cliSection\"\u003e\n\n## CLI\n- [Command Line Interface Guidelines](https://clig.dev/)\n  - Some guidelines \u0026 principles for writing command line interfaces. Provide a good starting point to think about how to design command formats that is useful for any type of CLI-like applications\n- [Designing a delightful command line interface - Nahid Samsami and Jeff Dickey](https://youtu.be/PHiDG-_XoRk)\n  - Introduces \"oclif\", which is a command line interface framework for Node.js\n\n\u003c/div\u003e\n\n\u003cdiv id=\"codeSection\"\u003e\n\n## Code\n- [Aha Programming](https://kentcdodds.com/blog/aha-programming)\n  - Interesting perspective on \"Avoid Hasty Abstraction\"\n- [The wrong abstraction](https://sandimetz.com/blog/2016/1/20/the-wrong-abstraction)\n  - Wrong abstraction is more dangerous/costly than duplication\n\n\u003c/div\u003e\n\n\u003cdiv id=\"cssSection\"\u003e\n\n## CSS\n- [FLEXBOX FROGGY](https://flexboxfroggy.com/)\n- [Flexbox Patterns](https://flexboxpatterns.com/)\n- [Visualize Complex Ideas Programmatically](https://motioncanvas.io/)\n\n\u003c/div\u003e\n\n\n\u003cdiv id=\"frontendSection\"\u003e\n\n## Frontend Libraries\n- [Swup](https://github.com/swup/swup)\n  - Complete, flexible, extensible and easy to use page transition library for your static web\n\n\u003c/div\u003e\n\n\u003cdiv id=\"gitSection\"\u003e\n\n## Git\n- [Semantic Version](https://semver.org/)\n  - Official guide on Semantic Versioning\n- [Manage releases with Semantic Versioning and Git Tags](https://www.youtube.com/watch?v=4wPjo5C-v8Y)\n  - Video walkthrough on how to manage releases with Semantic Versioning and Git Tags\n- [Why do we use \"git checkout\" to discard file changes?](https://www.bryanbraun.com/2019/06/11/why-we-use-git-checkout-to-discard-file-changes/)\n  - Magic of `git checkout -- xxx`\n- [Git Hooks](https://www.atlassian.com/git/tutorials/git-hooks)\n\n\u003c/div\u003e\n\n\u003cdiv id=\"gitHubActions\"\u003e\n\n## GitHub Actions/Workflows\n- [Bash scripting cheatsheet](https://devhints.io/bash)\n  - Always going to bump into shell scripts, might as well take note of the syntax\n- [Shell Scripting Tutorial](https://www.shellscript.sh/index.html)\n  - Another shell tutorial that looks legit\n- [Git Basics - Tagging](https://git-scm.com/book/en/v2/Git-Basics-Tagging)\n  - Tagging is an important concept to master, especially for release management\n- [Retag a Git Tag](https://michaelheap.com/retag-git-tag/)\n  - Useful note when doing GitHub Action release management\n\n\u003c/div\u003e\n  \n\u003cdiv id=\"goSection\"\u003e\n\n## Go\n- [Go by Example](https://gobyexample.com/)\n  - Quick explanation with code examples\n- [How To Use Struct Tags in Go](https://www.digitalocean.com/community/tutorials/how-to-use-struct-tags-in-go)\n  - Useful to understand for JSON encoding/decoding\n- [User:GopherGuides](https://www.digitalocean.com/community/users/gopherguides)\n  - Tutorials \u0026 Guides\n- [Comprehensive Guide to Dates and Times in Go](https://blog.boot.dev/golang/golang-date-time/)\n  - Handle time in Go\n- [JSON-to-Go](https://mholt.github.io/json-to-go/)\n  - Convert JSON to Go struct\n  \n\u003c/div\u003e\n\n\u003cdiv id=\"interviewSection\"\u003e\n\n## Interview\n- ['How to Get a Job at the Big 4 - Amazon, Facebook, Google \u0026 Microsoft' by Sean Lee](https://youtu.be/YJZCUhxNCv8)\n- [互联网和数据领域 求职公开课 2019](https://youtu.be/QKDTPP5m0iM)\n- [Google resume tips and advice](https://youtu.be/S_Macvy5CQE)\n- [How to conduct a good Programming Interview](https://www.lihaoyi.com/post/HowtoconductagoodProgrammingInterview.html)\n\n\u003c/div\u003e\n\n\u003cdiv id=\"javaSection\"\u003e\n\n## Java\n- [Comparison Method Violates Its General Contract! (Part 1) by Stuart Marks](https://youtu.be/Enwbh6wpnYs)\n  - Ever wondered how concepts in discrete mathematics like \"reflexive, transitive and antisymmetric\" can be useful in programming?\n- [Optional by Stuart Marks](https://youtu.be/fBYhtvY19xA)\n  - Essentially what you need to know about Java's Optional: the origins, the caveats and usage details.\n- [Thinking In Parallel by Stuart Marks and Brian Goetz](https://youtu.be/2nup6Oizpcw)\n  - Introduction and some good discussion about Java's Stream feature\n- [Let's Get Lazy: Exploring the Real Power of Streams with Venkat Subramaniam](https://www.youtube.com/watch?v=ekFPGD2g-ps)\n  - Well crafted presentation that explores various concepts of \"Stream\" in Java. Love the energy and the humour of the speaker too.\n- [\"Change is the Only Constant”. Really? by Maurice Naftalin](https://youtu.be/Dr3jnTXnm5U)\n  - Some discussion about immutability, which is a really debatable...\n\n\u003c/div\u003e\n\n\u003cdiv id=\"kafkaSection\"\u003e\n\n## Kafka\n- [Overview of Kafka with macOS Demo](https://www.youtube.com/watch?v=jyEZgeu1sSw)\n- [Thorough Introduction to Apache Kafka™](https://hackernoon.com/thorough-introduction-to-apache-kafka-6fbf2989bbc1)\n- [Kafka and Zookeeper with Docker](https://medium.com/rahasak/kafka-and-zookeeper-with-docker-65cff2c2c34f)\n\n\u003c/div\u003e\n\n\u003cdiv id=\"newsletterSection\"\u003e\n\n\u003cdiv id=\"kubeSection\"\u003e\n\n## Kubernetes\n- [How to learn Kubernetes in 2022](https://youtu.be/JeAHlTYB1Qk)\n\n\u003c/div\u003e\n\n\u003cdiv id=\"knowledgeSection\"\u003e\n\n## Knowledge Management\n- [Unbundling Tools for Thought](https://borretti.me/article/unbundling-tools-for-thought)\n\n\u003c/div\u003e\n\n\u003cdiv id=\"newsletterSection\"\u003e\n\n## Newsletter\n- [The Pragmatic Engineer](https://newsletter.pragmaticengineer.com/)\n  - [Shipping to Production](https://newsletter.pragmaticengineer.com/p/shipping-to-production?s=r)\n- [ByteByteGo](https://blog.bytebytego.com/?utm_source=site)\n\n\u003c/div\u003e\n\n\u003cdiv id=\"negotiationSection\"\u003e\n\n## Negotiation\n- [Exactly what to say when recruiters ask you to name the first number… and other negotiation word-for-words](https://interviewing.io/blog/negotiate-salary-recruiter)\n- [Ten Rules for Negotiating a Job Offer](https://haseebq.com/my-ten-rules-for-negotiating-a-job-offer/)\n\n\u003c/div\u003e\n\n\u003cdiv id=\"nodeSection\"\u003e\n\n## Node\n- [package.json is not enough](https://youtu.be/7lYnzRkVVLE)\n  - Subtle difference between package.json and package-lock.json, and when to use `npm i` vs `npm ci`\n- [Node’s Child Processes](https://jscomplete.com/learn/node-beyond-basics/child-processes)\n  - More advanced stuff about the child process module\n\n\u003c/div\u003e\n\n\u003cdiv id=\"ossSection\"\u003e\n\n## Open-Source Guides, Software News \u0026 Events\n- [Hunting typosquatters on npm](https://blog.scottlogic.com/2018/02/27/hunting-typosquatters-on-npm.html)\n  - Hacking based on human error\n- [Open Source Guides](https://opensource.guide/)\n  - Learn how to launch and grow OSS projects\n- [The Art of Closing](https://blog.jessfraz.com/post/the-art-of-closing/)\n  - How to nicely close contributor PRs\n- [Maintainer's Guide to Staying Positive](https://github.com/jonschlinkert/maintainers-guide-to-staying-positive)\n  - Dealing with maintainer burnout\n\n\u003c/div\u003e\n  \n\u003cdiv id=\"softwareEngineeringSection\"\u003e\n\n## Software Engineering\n- [The Law of Leaky Abstractions](https://www.joelonsoftware.com/2002/11/11/the-law-of-leaky-abstractions/)\n  - We can't escape abstraction (either writing or using it), but it leaks!\n- [How Google sets goals: OKRs / Startup Lab Workshop](https://youtu.be/mJB83EZtAjc)\n  - Goal setting with OKR\n- [OKR examples](https://www.whatmatters.com/get-examples#Engineering)\n  - Some examples for engineers\n- [The Effective Engineer | Edmond Lau | Talks at Google](https://youtu.be/BnIz7H5ruy0)\n- [How to Do Code Reviews Like a Human (Part One)](https://mtlynch.io/human-code-reviews-1/)\n- [How to Make Your Code Reviewer Fall in Love with You](https://mtlynch.io/code-review-love/)\n- [The System Design Primer](https://github.com/donnemartin/system-design-primer)\n  - Open source collection of all things system design\n- [A Philosophy of Software Design | John Ousterhout | Talks at Google](https://youtu.be/bmSAYlu0NcY)\n- [When life gives you lemons, write better error messages](https://wix-ux.com/when-life-gives-you-lemons-write-better-error-messages-46c5223e1a2f)\n- [StaffEng](https://staffeng.com/)\n\n\u003c/div\u003e\n\n\u003cdiv id=\"testSection\"\u003e\n\n## Test\n- [Rails Conf 2013 The Magic Tricks of Testing by Sandi Metz](https://youtu.be/URSWYvyc42M)\n  - Neat presentation on testing, examples are in Rails but applicable to any languages\n- [Usability Testing: How to Do-It-Yourself with Steve Krug](https://youtu.be/VTW1yYUqBm8)\n  - A good talk to convince you that usability testing is important\n- [Usability Cafe](http://goo.gl/zdD4jq)\n  - A template to conduct quick user testing\n- [Running a Remote Usability Test](https://youtu.be/ZkDafFDtJ1Y)\n  - Good instructions on how to conduct remote usability testing\n- [A/B Testing: Test Your Own Hypotheses \u0026 Prepare to be Wrong - Stuart Frisby](https://youtu.be/VQpQ0YHSfqM)\n  - Quick take on data-driven development\n- [A/B Testing: The Good, the Bad and the Ugly with Corey Losenegger at Madison+ UX](https://youtu.be/0dVIjWTI_A0)\n  - A/B testing - what could go wrong?\n- [How to add testing to an existing project](https://kentcdodds.com/blog/how-to-add-testing-to-an-existing-project)\n  - Get started on software testing\n- [Static vs Unit vs Integration vs E2E Testing for Frontend Apps](https://kentcdodds.com/blog/static-vs-unit-vs-integration-vs-e2e-tests)\n- [Why You Only Need to Test with 5 Users](https://www.nngroup.com/articles/why-you-only-need-to-test-with-5-users/)\n  - Explains why a small number of test users can provide quite a bit of help already!\n- [Mutation testing by example – Junit 5, Maven and Pitest](https://codesoapbox.dev/mutation-testing-by-example-junit-5-maven-and-pitest/)\n  - Mutations and killing them\n- [Curated list of resources on testing distributed systems](https://github.com/asatarin/testing-distributed-systems)\n\n\u003c/div\u003e\n\n\u003cdiv id=\"3rdWebSection\"\u003e\n\n## The Third Web\n- [Line Goes Up – The Problem With NFTs](https://youtu.be/YQ_xWvX1n9g)\n  - An excellent video essay on NFTs\n- [The Third Web](https://tante.cc/2021/12/17/the-third-web/)\n  - Introduction and critical discussion of the third web\n\n\u003c/div\u003e\n\n\u003cdiv id=\"quotesSection\"\u003e\n\n## Quotes\n- Enlightened trial-and-error succeeds over the planning of the lone genius\n- Critics are our friends, they show us our faults\n  - Something to keep in mind when discussing over code/PR\n- Context, not control\n- Testing can only prove the presence of bugs, not their absence\n- Respect what came before\n\n\u003c/div\u003e\n\n\u003cdiv id=\"writeSection\"\u003e\n\n## Writing\n- [How to write usefully](http://www.paulgraham.com/useful.html)\n\n\u003c/div\u003e\n\n\u003cdiv id=\"zzzSection\"\u003e\n\n## Zzz! Those Issues\n- A popular logger's struggle with logging an... error!\n  - [here](https://github.com/winstonjs/winston/issues/1338), [here](https://github.com/winstonjs/winston/issues/280), and [here](https://github.com/winstonjs/winston/issues/1498)\n- Have you tried adding/removing a month in Golang?\n  - [time AddDate(0, -1, 0) does not work for March. #31145](https://github.com/golang/go/issues/31145)\n\n\u003c/div\u003e\n\n\u003c/div\u003e\n","projects_url":"https://awesome.ecosyste.ms/api/v1/lists/tlylt%2Fbookmarks/projects"}