41554 blogs · [ { "id": "01a0873d-ef09-7161-b15e-d10cfd2ffb02", "title": "My 2024 or Why I've Been so Quiet", "url": "https://bespoyasov.me/blog/year-2024", "published_at": "2024-12-31T09:00:00+00:00" }, { "id": "01a0873d-ef0a-736c-9993-34926c4d95fe", "title": "Migrated Site to SvelteKit", "url": "https://bespoyasov.me/blog/rebuilt-site-with-sveltekit", "published_at": "2023-10-07T10:00:00+00:00" }, { "id": "01a0873d-ef0a-736c-9993-34926c794223", "title": "Explicit Software Design. Preliminary Conclusions", "url": "https://bespoyasov.me/blog/explicit-design-10", "published_at": "2023-07-03T18:00:00+00:00" }, { "id": "01a0873d-ef0a-736c-9993-34926d503a66", "title": "Part 9. Decoupling Features with Events", "url": "https://bespoyasov.me/blog/explicit-design-9", "published_at": "2023-06-26T18:00:00+00:00" }, { "id": "01a0873d-ef0a-736c-9993-34926e38e0f4", "title": "Part 8. Adding New Feature", "url": "https://bespoyasov.me/blog/explicit-design-8", "published_at": "2023-06-19T18:00:00+00:00" }, { "id": "01a0873d-ef0a-736c-9993-34926ea06cf9", "title": "Part 7. Cross-Cutting Concerns and Extendable Infrastructure", "url": "https://bespoyasov.me/blog/explicit-design-7", "published_at": "2023-06-13T10:00:00+00:00" }, { "id": "01a0873d-ef0a-736c-9993-34926f2d39c3", "title": "Part 6. App Composition without Hooks", "url": "https://bespoyasov.me/blog/explicit-design-6", "published_at": "2023-06-07T10:00:00+00:00" }, { "id": "01a0873d-ef0a-736c-9993-34926fb949a9", "title": "Part 5. App Composition", "url": "https://bespoyasov.me/blog/explicit-design-5", "published_at": "2023-05-30T12:00:00+00:00" }, { "id": "01a0873d-ef0a-736c-9993-3492700d6a41", "title": "Part 4. Ports, Adapters, and Infrastructure", "url": "https://bespoyasov.me/blog/explicit-design-4", "published_at": "2023-05-23T12:00:00+00:00" }, { "id": "01a0873d-ef0a-736c-9993-349270b698d8", "title": "Part 3. Ports, Adapters, and UI", "url": "https://bespoyasov.me/blog/explicit-design-3", "published_at": "2023-05-17T12:00:00+00:00" }, { "id": "01a0873d-ef0a-736c-9993-34927131189f", "title": "Part 2. Application Core Design", "url": "https://bespoyasov.me/blog/explicit-design-2", "published_at": "2023-05-10T12:00:00+00:00" }, { "id": "01a0873d-ef0a-736c-9993-349271f8a4dd", "title": "Part 1. Domain Modelling", "url": "https://bespoyasov.me/blog/explicit-design-1", "published_at": "2023-05-03T12:00:00+00:00" }, { "id": "01a0873d-ef0a-736c-9993-349272871ede", "title": "Explicit Software Design Series", "url": "https://bespoyasov.me/blog/explicit-design-series", "published_at": "2023-04-26T12:01:00+00:00" }, { "id": "01a0873d-ef0a-736c-9993-349273359a9c", "title": "Web UI for My Latest Book", "url": "https://bespoyasov.me/blog/refactor-like-a-superhero-ui", "published_at": "2022-11-12T08:00:00+00:00" }, { "id": "01a0873d-ef0b-734f-87cd-aa339160ba2f", "title": "Refactor Like a Superhero: Introducing a New Online Book!", "url": "https://bespoyasov.me/blog/refactor-like-a-superhero", "published_at": "2022-10-10T08:00:00+00:00" }, { "id": "01a0873d-ef0b-734f-87cd-aa3391a4d681", "title": "Declarative Data Validation with Rule-Based Approach", "url": "https://bespoyasov.me/blog/declarative-rule-based-validation", "published_at": "2022-02-15T08:00:00+00:00" }, { "id": "01a0873d-ef0b-734f-87cd-aa3391bf2dc7", "title": "Domain Modelling Made Functional. Part 3", "url": "https://bespoyasov.me/blog/domain-modelling-made-functional-3", "published_at": "2022-01-11T12:10:00+00:00" }, { "id": "01a0873d-ef0b-734f-87cd-aa339203db5c", "title": "Domain Modelling Made Functional. Part 2", "url": "https://bespoyasov.me/blog/domain-modelling-made-functional-2", "published_at": "2022-01-11T12:05:00+00:00" }, { "id": "01a0873d-ef0b-734f-87cd-aa3392fdd56b", "title": "Domain Modelling Made Functional by Scott Wlaschin", "url": "https://bespoyasov.me/blog/domain-modelling-made-functional", "published_at": "2022-01-11T12:00:00+00:00" }, { "id": "01a0873d-ef0b-734f-87cd-aa3393e85743", "title": "Text Generation with Markov Chains", "url": "https://bespoyasov.me/blog/text-generation-with-markov-chains", "published_at": "2021-11-29T12:00:00+00:00" }, { "id": "01a0873d-ef0b-734f-87cd-aa339464f119", "title": "My Contribution to Doka", "url": "https://bespoyasov.me/blog/doka", "published_at": "2021-10-12T18:00:00+00:00" }, { "id": "01a0873d-ef0b-734f-87cd-aa339502ee6d", "title": "Clean Architecture on Frontend", "url": "https://bespoyasov.me/blog/clean-architecture-on-frontend", "published_at": "2021-09-02T09:00:00+00:00" }, { "id": "01a0873d-ef0b-734f-87cd-aa3395441e4b", "title": "Finishing Up the Binary Adder in the Game of Life", "url": "https://bespoyasov.me/blog/binary-adder-in-the-game-of-life-3", "published_at": "2021-08-03T10:30:00+00:00" }, { "id": "01a0873d-ef0b-734f-87cd-aa3395fddd12", "title": "Implementing Logic Gates in the Game of Life", "url": "https://bespoyasov.me/blog/binary-adder-in-the-game-of-life-2", "published_at": "2021-08-03T10:15:00+00:00" }, { "id": "01a0873d-ef0b-734f-87cd-aa33961175f9", "title": "Let's Create a Binary Adder in the Game of Life!", "url": "https://bespoyasov.me/blog/binary-adder-in-the-game-of-life", "published_at": "2021-08-03T10:00:00+00:00" }, { "id": "01a0873d-ef0b-734f-87cd-aa33969844a7", "title": "TDD: What, How, and Why", "url": "https://bespoyasov.me/blog/tdd-what-how-and-why", "published_at": "2021-05-22T12:00:00+00:00" }, { "id": "01a0873d-ef0b-734f-87cd-aa3397398f30", "title": "My Week at @jsunderhood", "url": "https://bespoyasov.me/blog/my-week-at-jsunderhood", "published_at": "2021-05-15T15:00:00+00:00" }, { "id": "01a0873d-ef0b-734f-87cd-aa33974794c6", "title": "Generating Trees Images, Part 3. From Fractal to a Real Tree", "url": "https://bespoyasov.me/blog/generating-trees-on-canvas-using-typescript-and-oop-3", "published_at": "2021-04-10T12:10:00+00:00" }, { "id": "01a0873d-ef0b-734f-87cd-aa3397f05517", "title": "Generating Trees Images, Part 2. Geometry, Graphics and DOM", "url": "https://bespoyasov.me/blog/generating-trees-on-canvas-using-typescript-and-oop-2", "published_at": "2021-04-10T12:05:00+00:00" }, { "id": "01a0873d-ef0b-734f-87cd-aa339822eb7e", "title": "Generating Trees Images on Canvas Using L-Systems, TypeScript and OOP", "url": "https://bespoyasov.me/blog/generating-trees-on-canvas-using-typescript-and-oop", "published_at": "2021-04-10T12:00:00+00:00" }, { "id": "01a0873d-ef0b-734f-87cd-aa3398e2125b", "title": "My Workshop on Testing React Apps is Out", "url": "https://bespoyasov.me/blog/tdd-workshop", "published_at": "2021-04-01T14:00:00+00:00" }, { "id": "01a0873d-ef0b-734f-87cd-aa33992be2b3", "title": "Code. Part 2", "url": "https://bespoyasov.me/blog/code-the-hidden-language-of-computer-hardware-and-software-2", "published_at": "2021-02-23T15:15:00+00:00" }, { "id": "01a0873d-ef0b-734f-87cd-aa3399bd32f9", "title": "Code by Charles Petzold", "url": "https://bespoyasov.me/blog/code-the-hidden-language-of-computer-hardware-and-software", "published_at": "2021-02-23T15:00:00+00:00" }, { "id": "01a0873d-ef0b-734f-87cd-aa339a932194", "title": "Trying React Native Again", "url": "https://bespoyasov.me/blog/kursovik-react-native", "published_at": "2020-12-30T16:00:00+00:00" }, { "id": "01a0873d-ef0b-734f-87cd-aa339a970bb1", "title": "Rebuilt Site with Next and TypeScript", "url": "https://bespoyasov.me/blog/new-site-stack", "published_at": "2020-09-30T16:30:00+00:00" }, { "id": "01a0873d-ef0b-734f-87cd-aa339addd64c", "title": "Dependency Injection with TypeScript in Practice", "url": "https://bespoyasov.me/blog/di-ts-in-practice", "published_at": "2020-08-20T15:00:00+00:00" }, { "id": "01a0873d-ef0b-734f-87cd-aa339b323deb", "title": "Willpower Doesn't Work by Benjamin Hardy", "url": "https://bespoyasov.me/blog/willpower-doesnt-work", "published_at": "2020-06-08T07:30:00+00:00" }, { "id": "01a0873d-ef0b-734f-87cd-aa339ba10663", "title": "Fullstack React with TypeScript", "url": "https://bespoyasov.me/blog/fullstack-react-typescript-book", "published_at": "2020-06-06T15:00:00+00:00" }, { "id": "01a0873d-ef0b-734f-87cd-aa339c074e34", "title": "Don't Push: Automate Instead", "url": "https://bespoyasov.me/blog/do-not-push-automate-instead", "published_at": "2020-02-25T12:05:00+00:00" }, { "id": "01a0873d-ef0b-734f-87cd-aa339c66d32b", "title": "Anxiety Free. Part 2", "url": "https://bespoyasov.me/blog/anxiety-free-2", "published_at": "2020-02-15T14:35:00+00:00" }, { "id": "01a0873d-ef0b-734f-87cd-aa339cbc4d24", "title": "Anxiety Free by Robert L. Leahy", "url": "https://bespoyasov.me/blog/anxiety-free", "published_at": "2020-02-15T14:30:00+00:00" }, { "id": "01a0873d-ef0b-734f-87cd-aa339d2208c9", "title": "Marking Emails as Read Automatically", "url": "https://bespoyasov.me/blog/mark-as-read-now", "published_at": "2019-12-10T15:00:00+00:00" }, { "id": "01a0873d-ef0b-734f-87cd-aa339dd1fd95", "title": "Jedi Techniques by Maxim Dorofeev", "url": "https://bespoyasov.me/blog/jedi-techniques", "published_at": "2019-12-05T14:30:00+00:00" }, { "id": "01a0873d-ef0b-734f-87cd-aa339eae2e43", "title": "Tzlvt. “Black Screen of Death” Post-Mortem", "url": "https://bespoyasov.me/blog/tzlvt-upgrade-post-mortem", "published_at": "2019-11-29T21:00:00+00:00" }, { "id": "01a0873d-ef0b-734f-87cd-aa339f12aaee", "title": "Tzlvt. Why Rewrite in TypeScript", "url": "https://bespoyasov.me/blog/tzlvt-architecture-upgrade", "published_at": "2019-11-14T21:00:00+00:00" }, { "id": "01a0873d-ef0b-734f-87cd-aa339fbdbf19", "title": "Make Error Messages Great Again", "url": "https://bespoyasov.me/blog/make-error-messages-great-again", "published_at": "2019-10-04T18:00:00+00:00" }, { "id": "01a0873d-ef0b-734f-87cd-aa33a02b1390", "title": "Patterns for Fault Tolerant Software. Part 2", "url": "https://bespoyasov.me/blog/patterns-for-fault-tolerant-software-2", "published_at": "2019-08-30T18:00:00+00:00" }, { "id": "01a0873d-ef0b-734f-87cd-aa33a0a2202a", "title": "Patterns for Fault Tolerant Software by Robert S. Hanmer", "url": "https://bespoyasov.me/blog/patterns-for-fault-tolerant-software", "published_at": "2019-08-04T12:00:00+00:00" }, { "id": "01a0873d-ef0b-734f-87cd-aa33a1163b23", "title": "Process of Creating MRKT. Part 2", "url": "https://bespoyasov.me/blog/mrkt-2", "published_at": "2019-06-09T14:20:00+00:00" }, { "id": "01a0873d-ef0b-734f-87cd-aa33a17bbb35", "title": "Influence: Science and Practice by Robert B. Cialdini", "url": "https://bespoyasov.me/blog/influence", "published_at": "2019-06-01T17:30:00+00:00" }, { "id": "01a0873d-ef0b-734f-87cd-aa33a23b8b0c", "title": "Starting at DRIVE2", "url": "https://bespoyasov.me/blog/starting-at-drive2", "published_at": "2019-05-07T10:00:00+00:00" }, { "id": "01a0873d-ef0b-734f-87cd-aa33a3144dbb", "title": "Process of Creating MRKT. Part 1", "url": "https://bespoyasov.me/blog/mrkt", "published_at": "2019-04-12T12:00:00+00:00" }, { "id": "01a0873d-ef0b-734f-87cd-aa33a3cc27e1", "title": "When Consistency is More Important than Correctness", "url": "https://bespoyasov.me/blog/consistency-vs-correctness", "published_at": "2019-03-04T11:00:00+00:00" }, { "id": "01a0873d-ef0b-734f-87cd-aa33a473dda8", "title": "What I've Learned From Failure by Reg Braithwaite", "url": "https://bespoyasov.me/blog/what-ive-learned-from-failure", "published_at": "2019-02-04T11:00:00+00:00" }, { "id": "01a0873d-ef0b-734f-87cd-aa33a477c96f", "title": "MRKT Release", "url": "https://bespoyasov.me/blog/mrkt-release", "published_at": "2019-01-30T17:00:00+00:00" }, { "id": "01a0873d-ef0b-734f-87cd-aa33a47dcd30", "title": "Sapiens by Yuval N. Harari", "url": "https://bespoyasov.me/blog/sapiens", "published_at": "2019-01-27T13:30:00+00:00" }, { "id": "01a0873d-ef0b-734f-87cd-aa33a49d718c", "title": "Missing Abstraction", "url": "https://bespoyasov.me/blog/missing-abstraction", "published_at": "2019-01-13T10:00:00+00:00" }, { "id": "01a0873d-ef0b-734f-87cd-aa33a50d1e0f", "title": "Morse Code Translator and Player in JavaScript", "url": "https://bespoyasov.me/blog/morse-code-translator", "published_at": "2018-12-21T15:05:00+00:00" }, { "id": "01a0873d-ef0b-734f-87cd-aa33a5b91002", "title": "Don't Push Yourself", "url": "https://bespoyasov.me/blog/do-not-push", "published_at": "2018-12-19T20:05:00+00:00" }, { "id": "01a0873d-ef0b-734f-87cd-aa33a5bf0da3", "title": "No More Mr. Nice Guy by Robert A. Glover", "url": "https://bespoyasov.me/blog/no-more-mr-nice-guy", "published_at": "2018-12-04T11:30:00+00:00" }, { "id": "01a0873d-ef0b-734f-87cd-aa33a6006009", "title": "From Redux to Hooks?", "url": "https://bespoyasov.me/blog/you-might-not-need-redux-now", "published_at": "2018-11-15T10:00:00+00:00" }, { "id": "01a0873d-ef0b-734f-87cd-aa33a6a26a62", "title": "Dirty Architecture", "url": "https://bespoyasov.me/blog/architecture-which-sucks", "published_at": "2018-10-10T10:00:00+00:00" }, { "id": "01a0873d-ef0b-734f-87cd-aa33a6b6675e", "title": "Click Me! Written with RxJS", "url": "https://bespoyasov.me/blog/click-me-with-rxjs", "published_at": "2018-10-01T10:00:00+00:00" }, { "id": "01a0873d-ef0b-734f-87cd-aa33a75a21b9", "title": "How I Divide My Work Time", "url": "https://bespoyasov.me/blog/efficient-workday-division", "published_at": "2018-09-28T09:00:00+00:00" }, { "id": "01a0873d-ef0b-734f-87cd-aa33a84c20c2", "title": "Command-Query Separation", "url": "https://bespoyasov.me/blog/commands-and-queries", "published_at": "2018-09-25T09:00:00+00:00" }, { "id": "01a0873d-ef0b-734f-87cd-aa33a8a5790f", "title": "Red Pill by Andrey Kurpatov", "url": "https://bespoyasov.me/blog/red-pill", "published_at": "2018-09-17T11:30:00+00:00" }, { "id": "01a0873d-ef0b-734f-87cd-aa33a959428e", "title": "The Clean Architecture. Part 3", "url": "https://bespoyasov.me/blog/clean-architecture-3", "published_at": "2018-09-10T12:00:00+00:00" }, { "id": "01a0873d-ef0b-734f-87cd-aa33aa557358", "title": "The Clean Architecture. Part 2", "url": "https://bespoyasov.me/blog/clean-architecture-2", "published_at": "2018-09-03T13:00:00+00:00" }, { "id": "01a0873d-ef0b-734f-87cd-aa33aa960fce", "title": "There's Always Time to Read Books—2", "url": "https://bespoyasov.me/blog/there-is-always-time-to-read-books-2", "published_at": "2018-08-29T12:30:00+00:00" }, { "id": "01a0873d-ef0b-734f-87cd-aa33aabe5109", "title": "The Clean Architecture by Robert C. Martin", "url": "https://bespoyasov.me/blog/clean-architecture", "published_at": "2018-08-28T13:00:00+00:00" }, { "id": "01a0873d-ef0b-734f-87cd-aa33ab91181f", "title": "Copypaste in Code", "url": "https://bespoyasov.me/blog/copy-paste", "published_at": "2018-08-22T15:00:00+00:00" }, { "id": "01a0873d-ef0b-734f-87cd-aa33ac316da3", "title": "The Tao of Physics by Fritjof Capra", "url": "https://bespoyasov.me/blog/the-tao-of-physics", "published_at": "2018-08-11T18:30:00+00:00" }, { "id": "01a0873d-ef0b-734f-87cd-aa33acf4d0ce", "title": "Application State Management with Finite State Machines", "url": "https://bespoyasov.me/blog/fsm-to-the-rescue", "published_at": "2018-07-27T12:00:00+00:00" }, { "id": "01a0873d-ef0b-734f-87cd-aa33ad20774f", "title": "Tzlvt Update!", "url": "https://bespoyasov.me/blog/tzlvt-update-currencies", "published_at": "2018-07-08T12:00:00+00:00" }, { "id": "01a0873d-ef0b-734f-87cd-aa33ad54396b", "title": "Debug It! Part 2", "url": "https://bespoyasov.me/blog/debug-it-2", "published_at": "2018-07-02T16:00:00+00:00" }, { "id": "01a0873d-ef0b-734f-87cd-aa33adf45df3", "title": "Debug It! by Paul Butcher", "url": "https://bespoyasov.me/blog/debug-it", "published_at": "2018-06-26T14:00:00+00:00" }, { "id": "01a0873d-ef0b-734f-87cd-aa33ae306f52", "title": "What I've Learned in a Year and a Half of Teaching", "url": "https://bespoyasov.me/blog/one-and-a-half-year-of-teaching", "published_at": "2018-06-21T14:00:00+00:00" }, { "id": "01a0873d-ef0b-734f-87cd-aa33aee9b1d8", "title": "C0in Е2Е Testing with Cypress", "url": "https://bespoyasov.me/blog/coin-e2e-with-cypress", "published_at": "2018-06-06T14:00:00+00:00" }, { "id": "01a0873d-ef0b-734f-87cd-aa33aef10a53", "title": "How to Write Helpful Documentation", "url": "https://bespoyasov.me/blog/documentation", "published_at": "2018-05-22T12:00:00+00:00" }, { "id": "01a0873d-ef0b-734f-87cd-aa33afe02036", "title": "Error Handling in Asynchronous Functions", "url": "https://bespoyasov.me/blog/error-handling-async-await", "published_at": "2018-05-17T21:00:00+00:00" }, { "id": "01a0873d-ef0b-734f-87cd-aa33b07ff75d", "title": "Working Effectively with Legacy Code. Part 3", "url": "https://bespoyasov.me/blog/working-effectively-with-legacy-code-3", "published_at": "2018-03-19T19:00:00+00:00" }, { "id": "01a0873d-ef0b-734f-87cd-aa33b0f5cb1d", "title": "Working Effectively with Legacy Code. Part 2", "url": "https://bespoyasov.me/blog/working-effectively-with-legacy-code-2", "published_at": "2018-03-09T15:00:00+00:00" }, { "id": "01a0873d-ef0b-734f-87cd-aa33b1a91d64", "title": "Working Effectively with Legacy Code by Michael C. Feathers", "url": "https://bespoyasov.me/blog/working-effectively-with-legacy-code", "published_at": "2018-03-01T15:00:00+00:00" }, { "id": "01a0873d-ef0b-734f-87cd-aa33b22e1f9d", "title": "The Subtle Art of Not Giving a F*ck by Mark Manson", "url": "https://bespoyasov.me/blog/the-subtle-art-of-not-giving-a-fuck", "published_at": "2018-02-21T21:00:00+00:00" }, { "id": "01a0873d-ef0b-734f-87cd-aa33b24474a1", "title": "How We Launched “Frontend without Pain!”", "url": "https://bespoyasov.me/blog/frontend-with-ease", "published_at": "2018-02-08T16:00:00+00:00" }, { "id": "01a0873d-ef0b-734f-87cd-aa33b2f79664", "title": "Deep Survival by Laurence Gonzales", "url": "https://bespoyasov.me/blog/deep-survival", "published_at": "2017-12-02T12:00:00+00:00" }, { "id": "01a0873d-ef0c-731d-aad0-076c2c2e0847", "title": "Clean Code. Part 3", "url": "https://bespoyasov.me/blog/clean-code-3", "published_at": "2017-11-10T20:00:00+00:00" }, { "id": "01a0873d-ef0c-731d-aad0-076c2cc7105b", "title": "Clean Code. Part 2", "url": "https://bespoyasov.me/blog/clean-code-2", "published_at": "2017-10-27T16:00:00+00:00" }, { "id": "01a0873d-ef0c-731d-aad0-076c2d773d9a", "title": "Clean Code by Robert C. Martin", "url": "https://bespoyasov.me/blog/clean-code", "published_at": "2017-10-14T11:00:00+00:00" }, { "id": "01a0873d-ef0c-731d-aad0-076c2de517d7", "title": "Cure for Broken Backwards Compatibility", "url": "https://bespoyasov.me/blog/adapter-pattern", "published_at": "2017-09-11T11:15:00+00:00" }, { "id": "01a0873d-ef0c-731d-aad0-076c2ed758f5", "title": "How I Redesigned My Site", "url": "https://bespoyasov.me/blog/site-redesign", "published_at": "2017-09-02T18:30:00+00:00" }, { "id": "01a0873d-ef0c-731d-aad0-076c2f9d95c0", "title": "Using Web Workers to Boost Performance", "url": "https://bespoyasov.me/blog/web-workers-for-better-performance", "published_at": "2017-08-07T14:30:00+00:00" }, { "id": "01a0873d-ef0c-731d-aad0-076c2fc9db24", "title": "How the Body Knows Its Mind by Sian Beilock", "url": "https://bespoyasov.me/blog/how-the-body-knows-its-mind", "published_at": "2017-08-04T11:30:00+00:00" }, { "id": "01a0873d-ef0c-731d-aad0-076c2fef7918", "title": "Driven to Distraction by Edward M. Hallowell", "url": "https://bespoyasov.me/blog/driven-to-distraction", "published_at": "2017-07-02T10:30:00+00:00" }, { "id": "01a0873d-ef0c-731d-aad0-076c3087fa43", "title": "How to Describe Bugs", "url": "https://bespoyasov.me/blog/cannot-reproduce", "published_at": "2017-06-18T11:15:00+00:00" }, { "id": "01a0873d-ef0c-731d-aad0-076c30cf5611", "title": "How We Launched iBike Ufa", "url": "https://bespoyasov.me/blog/ibikeufa", "published_at": "2017-06-07T10:05:00+00:00" }, { "id": "01a0873d-ef0c-731d-aad0-076c31cbb3f3", "title": "The Art of Readable Code. Part 3", "url": "https://bespoyasov.me/blog/the-art-of-readable-code-3", "published_at": "2017-04-10T14:15:00+00:00" }, { "id": "01a0873d-ef0c-731d-aad0-076c322afd69", "title": "Scroller Upgrade", "url": "https://bespoyasov.me/blog/scroller-upgrade", "published_at": "2017-03-29T20:15:00+00:00" }, { "id": "01a0873d-ef0c-731d-aad0-076c3308d54f", "title": "The Art of Readable Code. Part 2", "url": "https://bespoyasov.me/blog/the-art-of-readable-code-2", "published_at": "2017-03-27T18:15:00+00:00" }, { "id": "01a0873d-ef0c-731d-aad0-076c33a46b62", "title": "The Art of Readable Code by D. Bowsell, T. Foucher", "url": "https://bespoyasov.me/blog/the-art-of-readable-code", "published_at": "2017-03-27T18:10:00+00:00" } ] posts Claim your blog
Back to bespoyasov.me
Blog · corpus.blog/blogs/bespoyasov.me/posts

bespoyasov.me

bespoyasov.me

2024

2023

2022

2021

2020

2019

2018

2017