41554 blogs · [ { "id": "01a0dd6a-4dc4-7134-8dd9-6c0be52d1843", "title": "The Back-end for Front-end Pattern (BFF)", "url": "https://philcalcado.com/2015/09/18/the_back_end_for_front_end_pattern_bff.html", "published_at": "2025-04-14T16:42:12+00:00" }, { "id": "01a087c1-42cd-7083-af7e-e07202546323", "title": "Building AI Products—Part II: Task-Oriented vs. Component-Oriented Pipelines", "url": "http://philcalcado.com/2025/03/14/building-ai-products-part-ii.html", "published_at": "2025-03-14T00:00:00+00:00" }, { "id": "01a087c1-42d0-73ad-859e-a10580fc01d1", "title": "AI is not the engineer we wanted, but it might be the one we need", "url": "http://philcalcado.com/2025/02/27/ai.html", "published_at": "2025-02-27T00:00:00+00:00" }, { "id": "01a087c1-42d0-73ad-859e-a10581539ce9", "title": "Building AI Products—Part I: Back-end Architecture", "url": "http://philcalcado.com/2024/12/14/building-ai-products-part-i.html", "published_at": "2024-12-14T00:00:00+00:00" }, { "id": "01a087c1-42d0-73ad-859e-a1058245e856", "title": "Copilotcalypse", "url": "http://philcalcado.com/2024/03/08/copilotcalypse.html", "published_at": "2024-03-08T00:00:00+00:00" }, { "id": "01a087c1-42d0-73ad-859e-a105833ce872", "title": "Attention is All A Manager Needs", "url": "http://philcalcado.com/2023/07/21/attention_is_all_a_manager_needs.html", "published_at": "2023-07-21T00:00:00+00:00" }, { "id": "01a0e2f8-bf4a-71c1-9f71-b29a390fc94e", "title": null, "url": "http://philcalcado.com/old-material/research-on-dsls/bibliography-references/", "published_at": "2022-11-08T17:49:58+00:00" }, { "id": "01a0e2f8-bf4a-71c1-9f71-b29a39e2eda6", "title": null, "url": "http://philcalcado.com/old-material/research-on-dsls/domain-specific-languages-dsls/domain-specific-language-definitions/", "published_at": "2022-11-08T17:49:58+00:00" }, { "id": "01a0e2f8-bf4a-71c1-9f71-b29a3a3014a6", "title": null, "url": "http://philcalcado.com/old-material/research-on-dsls/domain-specific-languages-dsls/dsl-examples/", "published_at": "2022-11-08T17:49:58+00:00" }, { "id": "01a0e2f8-bf4a-71c1-9f71-b29a3a3092da", "title": null, "url": "http://philcalcado.com/old-material/research-on-dsls/domain-specific-languages-dsls/", "published_at": "2022-11-08T17:49:58+00:00" }, { "id": "01a0e2f8-bf4a-71c1-9f71-b29a3a6e6591", "title": null, "url": "http://philcalcado.com/old-material/research-on-dsls/domain-specific-languages-dsls/internal-dsls/", "published_at": "2022-11-08T17:49:58+00:00" }, { "id": "01a0e2f8-bf4b-732f-8d8b-62fd2404eab0", "title": null, "url": "http://philcalcado.com/old-material/research-on-dsls/domain-specific-languages-patterns/", "published_at": "2022-11-08T17:49:58+00:00" }, { "id": "01a0e2f8-bf4b-732f-8d8b-62fd24802bb1", "title": null, "url": "http://philcalcado.com/old-material/research-on-dsls/domain-specific-languages-patterns/modeling-patterns/", "published_at": "2022-11-08T17:49:58+00:00" }, { "id": "01a0e2f8-bf4b-732f-8d8b-62fd249b2329", "title": null, "url": "http://philcalcado.com/old-material/research-on-dsls/domain-specific-languages-patterns/monkey-tag/", "published_at": "2022-11-08T17:49:58+00:00" }, { "id": "01a0e2f8-bf4b-732f-8d8b-62fd2527d03e", "title": null, "url": "http://philcalcado.com/old-material/research-on-dsls/", "published_at": "2022-11-08T17:49:58+00:00" }, { "id": "01a0e2f8-bf4b-732f-8d8b-62fd25b7f198", "title": null, "url": "http://philcalcado.com/old-material/research-on-dsls/language-oriented-programming-lop/", "published_at": "2022-11-08T17:49:58+00:00" }, { "id": "01a0e2f8-bf4b-732f-8d8b-62fd26662e5e", "title": null, "url": "http://philcalcado.com/old-material/research-on-dsls/language-oriented-programming-lop/language-adaption/", "published_at": "2022-11-08T17:49:58+00:00" }, { "id": "01a0e2f8-bf4b-732f-8d8b-62fd26bf7d3e", "title": null, "url": "http://philcalcado.com/old-material/research-on-dsls/language-oriented-programming-lop/layering-domains/", "published_at": "2022-11-08T17:49:58+00:00" }, { "id": "01a0e2f8-bf4a-71c1-9f71-b29a35c335e5", "title": null, "url": "http://philcalcado.com/backups/soundcloud-backstage-blog/developers.soundcloud.com/blog/", "published_at": "2022-11-08T17:49:57+00:00" }, { "id": "01a0e2f8-bf4a-71c1-9f71-b29a36936060", "title": null, "url": "http://philcalcado.com/backups/soundcloud-backstage-blog/developers.soundcloud.com/callback.html", "published_at": "2022-11-08T17:49:57+00:00" }, { "id": "01a0e2f8-bf4a-71c1-9f71-b29a3711f21a", "title": null, "url": "http://philcalcado.com/backups/soundcloud-backstage-blog/developers.soundcloud.com/", "published_at": "2022-11-08T17:49:57+00:00" }, { "id": "01a0e2f8-bf4a-71c1-9f71-b29a3734b18f", "title": null, "url": "http://philcalcado.com/content/affordances/afordances.scriv/QuickLook/Preview.html", "published_at": "2022-11-08T17:49:57+00:00" }, { "id": "01a0e2f8-bf4a-71c1-9f71-b29a3746d49b", "title": null, "url": "http://philcalcado.com/content/application-composition/Untitled%20Backup.scriv/QuickLook/Preview.html", "published_at": "2022-11-08T17:49:57+00:00" }, { "id": "01a0e2f8-bf4a-71c1-9f71-b29a379f2619", "title": null, "url": "http://philcalcado.com/content/application-composition/Untitled.scriv/QuickLook/Preview.html", "published_at": "2022-11-08T17:49:57+00:00" }, { "id": "01a0e2f8-bf4a-71c1-9f71-b29a3846153d", "title": null, "url": "http://philcalcado.com/content/tech-strategy-models/tech-strategy-models%20Backup.scriv/QuickLook/Preview.html", "published_at": "2022-11-08T17:49:57+00:00" }, { "id": "01a0e2f8-bf4a-71c1-9f71-b29a38c8f899", "title": null, "url": "http://philcalcado.com/content/tech-strategy-models/tech-strategy-models.scriv/QuickLook/Preview.html", "published_at": "2022-11-08T17:49:57+00:00" }, { "id": "01a087c1-42d0-73ad-859e-a105834874b9", "title": "Five takeaways from looking for a new senior role in tech", "url": "http://philcalcado.com/2021/12/20/job_hunt.html", "published_at": "2021-12-20T00:00:00+00:00" }, { "id": "01a087c1-42d1-7290-b7e1-27ccd7963c8f", "title": "How I like to use OKRs", "url": "http://philcalcado.com/2020/01/31/how_i_like_to_use_okrs.html", "published_at": "2020-01-31T00:00:00+00:00" }, { "id": "01a087c1-42d2-7110-9e3f-aaf220e6a6c0", "title": "Guiding Principles for Developer Tools", "url": "http://philcalcado.com/2019/07/30/developer_tools_principles.html", "published_at": "2019-07-30T00:00:00+00:00" }, { "id": "01a087c1-42d2-7110-9e3f-aaf22143df04", "title": "Some thoughts on GraphQL vs. BFF", "url": "http://philcalcado.com/2019/07/12/some_thoughts_graphql_bff.html", "published_at": "2019-07-12T00:00:00+00:00" }, { "id": "01a087c1-42d2-7110-9e3f-aaf2222f6c7f", "title": "A Structured RFC Process", "url": "http://philcalcado.com/2018/11/19/a_structured_rfc_process.html", "published_at": "2018-11-19T00:00:00+00:00" }, { "id": "01a0e2f8-bf4a-71c1-9f71-b29a22f85482", "title": null, "url": "http://philcalcado.com/2018/09/24/services_layers.html", "published_at": "2018-09-24T00:00:00+00:00" }, { "id": "01a0e2f8-bf4a-71c1-9f71-b29a224ef4c6", "title": null, "url": "http://philcalcado.com/2017/08/09/buoyant.html", "published_at": "2017-08-09T00:00:00+00:00" }, { "id": "01a0e2f8-bf4a-71c1-9f71-b29a2214fa31", "title": null, "url": "http://philcalcado.com/2017/08/03/pattern_service_mesh.html", "published_at": "2017-08-03T00:00:00+00:00" }, { "id": "01a0e2f8-bf4a-71c1-9f71-b29a21c1d695", "title": null, "url": "http://philcalcado.com/2017/06/26/on_leaving_digitalocean.html", "published_at": "2017-06-26T00:00:00+00:00" }, { "id": "01a0e2f8-bf4a-71c1-9f71-b29a21322a54", "title": null, "url": "http://philcalcado.com/2017/06/11/calcados_microservices_prerequisites.html", "published_at": "2017-06-11T00:00:00+00:00" }, { "id": "01a0e2f8-bf4a-71c1-9f71-b29a20aa8790", "title": null, "url": "http://philcalcado.com/2017/03/22/pattern_using_seudo-uris_with_microservices.html", "published_at": "2017-03-22T00:00:00+00:00" }, { "id": "01a0e2f8-bf4a-71c1-9f71-b29a1fd55372", "title": null, "url": "http://philcalcado.com/2017/03/02/microservices_vs_1st_law_distributed_objects.html", "published_at": "2017-03-02T00:00:00+00:00" }, { "id": "01a0e2f8-bf4a-71c1-9f71-b29a1f558814", "title": null, "url": "http://philcalcado.com/2016/03/15/on_asking_job_candidates_to_code.html", "published_at": "2016-03-15T00:00:00+00:00" }, { "id": "01a0e2f8-bf4a-71c1-9f71-b29a1e8eac44", "title": null, "url": "http://philcalcado.com/2016/02/02/on_joining_digitalocean.html", "published_at": "2016-02-02T00:00:00+00:00" }, { "id": "01a0e2f8-bf4a-71c1-9f71-b29a1e7b6ba9", "title": null, "url": "http://philcalcado.com/2015/09/18/the_back_end_for_front_end_pattern_bff.html", "published_at": "2015-09-18T00:00:00+00:00" }, { "id": "01a0e2f8-bf4a-71c1-9f71-b29a1e1d1f8c", "title": null, "url": "http://philcalcado.com/2015/09/08/how_we_ended_up_with_microservices.html", "published_at": "2015-09-08T00:00:00+00:00" }, { "id": "01a0e2f8-bf4a-71c1-9f71-b29a1dfa2244", "title": null, "url": "http://philcalcado.com/2014/05/03/any_colour_will_do.html", "published_at": "2014-05-03T00:00:00+00:00" }, { "id": "01a0e2f8-bf4a-71c1-9f71-b29a1dbe57c0", "title": null, "url": "http://philcalcado.com/2012/07/01/annoying_rspec_dynamic_scoping_in_example_groups.html", "published_at": "2012-07-01T00:00:00+00:00" }, { "id": "01a0e2f8-bf4a-71c1-9f71-b29a1d2f99be", "title": null, "url": "http://philcalcado.com/2011/12/29/read_the_dinossaurs.html", "published_at": "2011-12-29T00:00:00+00:00" }, { "id": "01a0e2f8-bf4a-71c1-9f71-b29a1c3c017c", "title": null, "url": "http://philcalcado.com/2011/11/07/berlin_clojure_user_group_better_functional_design_through_tdd.html", "published_at": "2011-11-07T00:00:00+00:00" }, { "id": "01a0e2f8-bf4a-71c1-9f71-b29a1b57b3da", "title": null, "url": "http://philcalcado.com/2011/10/29/railscamp_hamburd_2011_what_i_have_learnt_working_with_startups.html", "published_at": "2011-10-29T00:00:00+00:00" }, { "id": "01a0e2f8-bf4a-71c1-9f71-b29a1b2cf554", "title": null, "url": "http://philcalcado.com/2011/10/08/on_the_testing_in_clojure_debate.html", "published_at": "2011-10-08T00:00:00+00:00" }, { "id": "01a0e2f8-bf4a-71c1-9f71-b29a1b1a31e0", "title": null, "url": "http://philcalcado.com/2011/09/23/an_afterthought_leaving_thoughtworks.html", "published_at": "2011-09-23T00:00:00+00:00" }, { "id": "01a0e2f8-bf4a-71c1-9f71-b29a1a462e07", "title": null, "url": "http://philcalcado.com/2011/08/29/my_experience_with_test_driven_development_in_clojure_and_functional_programming.html", "published_at": "2011-08-29T00:00:00+00:00" }, { "id": "01a0e2f8-bf4a-71c1-9f71-b29a1a3e434e", "title": null, "url": "http://philcalcado.com/2011/08/17/domain_change.html", "published_at": "2011-08-17T00:00:00+00:00" }, { "id": "01a0e2f8-bf4a-71c1-9f71-b29a19b1db3b", "title": null, "url": "http://philcalcado.com/2011/08/14/clojure_maps_are_not_the_answer.html", "published_at": "2011-08-14T00:00:00+00:00" }, { "id": "01a0e2f8-bf4a-71c1-9f71-b29a199fa0d7", "title": null, "url": "http://philcalcado.com/2011/06/15/!the.html", "published_at": "2011-06-15T00:00:00+00:00" }, { "id": "01a0e2f8-bf4a-71c1-9f71-b29a197edd12", "title": null, "url": "http://philcalcado.com/2011/02/13/book_review_let_over_lambda.html", "published_at": "2011-02-13T00:00:00+00:00" }, { "id": "01a0e2f8-bf4a-71c1-9f71-b29a18dddf87", "title": null, "url": "http://philcalcado.com/2011/01/29/book_review_web_operations.html", "published_at": "2011-01-29T00:00:00+00:00" }, { "id": "01a0e2f8-bf4a-71c1-9f71-b29a18b3d5e4", "title": null, "url": "http://philcalcado.com/2011/01/04/rules_of_thumb_are_warning_bells.html", "published_at": "2011-01-04T00:00:00+00:00" }, { "id": "01a0e2f8-bf4a-71c1-9f71-b29a17cce01f", "title": null, "url": "http://philcalcado.com/2010/12/27/2010_in_books.html", "published_at": "2010-12-27T00:00:00+00:00" }, { "id": "01a0e2f8-bf4a-71c1-9f71-b29a17308fbc", "title": null, "url": "http://philcalcado.com/2010/12/24/new_blog_engine_new_host.html", "published_at": "2010-12-24T00:00:00+00:00" }, { "id": "01a0e2f8-bf4a-71c1-9f71-b29a164a0bef", "title": null, "url": "http://philcalcado.com/2010/12/23/how_to_write_a_repository.html", "published_at": "2010-12-23T00:00:00+00:00" }, { "id": "01a0e2f8-bf4a-71c1-9f71-b29a159c6c14", "title": null, "url": "http://philcalcado.com/2010/12/19/expressiveness_omnibus.html", "published_at": "2010-12-19T00:00:00+00:00" }, { "id": "01a0e2f8-bf4a-71c1-9f71-b29a14af73ab", "title": null, "url": "http://philcalcado.com/2010/12/14/one_mock_per_test_considered_not_awesome.html", "published_at": "2010-12-14T00:00:00+00:00" }, { "id": "01a0e2f8-bf4a-71c1-9f71-b29a149c2f47", "title": null, "url": "http://philcalcado.com/2010/06/07/everyday_tales_we_call_it_unit_for_a_reason.html", "published_at": "2010-06-07T00:00:00+00:00" }, { "id": "01a0e2f8-bf4a-71c1-9f71-b29a13acdca6", "title": null, "url": "http://philcalcado.com/2010/05/12/agile_architecture_4_common_strategies.html", "published_at": "2010-05-12T00:00:00+00:00" }, { "id": "01a0e2f8-bf4a-71c1-9f71-b29a135213c4", "title": null, "url": "http://philcalcado.com/2010/03/22/nevermind_domain_driven_design.html", "published_at": "2010-03-22T00:00:00+00:00" }, { "id": "01a0e2f8-bf4a-71c1-9f71-b29a1333708e", "title": null, "url": "http://philcalcado.com/2009/02/24/what_is_a_service.html", "published_at": "2009-02-24T00:00:00+00:00" }, { "id": "01a0e2f8-bf4a-71c1-9f71-b29a12785c18", "title": null, "url": "http://philcalcado.com/2008/08/01/internal_data_transfer_objects.html", "published_at": "2008-08-01T00:00:00+00:00" }, { "id": "01a0e2f8-bf4a-71c1-9f71-b29a11deb92f", "title": null, "url": "http://philcalcado.com/2008/01/16/architecture_is_about_people.html", "published_at": "2008-01-16T00:00:00+00:00" }, { "id": "01a0e2f8-bf4a-71c1-9f71-b29a11cf1a02", "title": null, "url": "http://philcalcado.com/2008/01/08/please_do_not_break_into.html", "published_at": "2008-01-08T00:00:00+00:00" }, { "id": "01a0e2f8-bf4a-71c1-9f71-b29a297598ac", "title": null, "url": "http://philcalcado.com/d/2008-09.html", "published_at": null }, { "id": "01a0e2f8-bf4a-71c1-9f71-b29a2a36f317", "title": null, "url": "http://philcalcado.com/d/attic/2015-09-12-aaaa.html", "published_at": null }, { "id": "01a0e2f8-bf4a-71c1-9f71-b29a2a43a92f", "title": null, "url": "http://philcalcado.com/d/attic/2015-09-18-microservices_and_the_last_mile.html", "published_at": null }, { "id": "01a0e2f8-bf4a-71c1-9f71-b29a2b1a137b", "title": null, "url": "http://philcalcado.com/d/attic/2015-09-30-i_changed_my_mind_regarding_rpc.html", "published_at": null }, { "id": "01a0e2f8-bf4a-71c1-9f71-b29a2b831cd3", "title": null, "url": "http://philcalcado.com/d/attic/2015-11-01-a-proposal-for-microservices-governance.html", "published_at": null }, { "id": "01a0e2f8-bf4a-71c1-9f71-b29a2b943239", "title": null, "url": "http://philcalcado.com/d/attic/2015-11-01-d.html", "published_at": null }, { "id": "01a0e2f8-bf4a-71c1-9f71-b29a2c053afb", "title": null, "url": "http://philcalcado.com/d/attic/2015-11-01-encoding.html", "published_at": null }, { "id": "01a0e2f8-bf4a-71c1-9f71-b29a2c8f88d2", "title": null, "url": "http://philcalcado.com/d/2016-03-31-on_the_naysayer_antipattern.html", "published_at": null }, { "id": "01a0e2f8-bf4a-71c1-9f71-b29a2d4b332a", "title": null, "url": "http://philcalcado.com/d/2016-05-17-one_way_to_look_at_the_engineering_manager_and_tech_lead_dichotomy.html", "published_at": null }, { "id": "01a0e2f8-bf4a-71c1-9f71-b29a2d9e1751", "title": null, "url": "http://philcalcado.com/d/2016-05-31-on_visualising_your_tech_strategy.html", "published_at": null }, { "id": "01a0e2f8-bf4a-71c1-9f71-b29a2e2b201e", "title": null, "url": "http://philcalcado.com/d/2016-11-01-On_product_engineering_at_an_infrastructure_startup-11.html", "published_at": null }, { "id": "01a0e2f8-bf4a-71c1-9f71-b29a2e624fee", "title": null, "url": "http://philcalcado.com/d/2017-04-28-economics_of_microservices.html", "published_at": null }, { "id": "01a0e2f8-bf4a-71c1-9f71-b29a2f52d152", "title": null, "url": "http://philcalcado.com/d/2017-06-05_interviews_and_compsci.html", "published_at": null }, { "id": "01a0e2f8-bf4a-71c1-9f71-b29a2f5752df", "title": null, "url": "http://philcalcado.com/d/2017-07-03-pattern_edge_architecture.html", "published_at": null }, { "id": "01a0e2f8-bf4a-71c1-9f71-b29a3012bca5", "title": null, "url": "http://philcalcado.com/about/", "published_at": null }, { "id": "01a0e2f8-bf4a-71c1-9f71-b29a303007c5", "title": null, "url": "http://philcalcado.com/citations/", "published_at": null }, { "id": "01a0e2f8-bf4a-71c1-9f71-b29a30382112", "title": null, "url": "http://philcalcado.com/contact/", "published_at": null }, { "id": "01a0e2f8-bf4a-71c1-9f71-b29a308c0811", "title": null, "url": "http://philcalcado.com/engineering-management-patterns.html", "published_at": null }, { "id": "01a0e2f8-bf4a-71c1-9f71-b29a311bd2cf", "title": null, "url": "http://philcalcado.com/", "published_at": null }, { "id": "01a0e2f8-bf4a-71c1-9f71-b29a31f088b5", "title": null, "url": "http://philcalcado.com/d/microservices-patterns.html", "published_at": null }, { "id": "01a0e2f8-bf4a-71c1-9f71-b29a3268e7b9", "title": null, "url": "http://philcalcado.com/microservices-patterns.html", "published_at": null }, { "id": "01a0e2f8-bf4a-71c1-9f71-b29a32f1a3b8", "title": null, "url": "http://philcalcado.com/d/monoliths_microliths_and_microservices.html", "published_at": null }, { "id": "01a0e2f8-bf4a-71c1-9f71-b29a339147e0", "title": null, "url": "http://philcalcado.com/d/pattern_lifecycle_events_bus.html", "published_at": null }, { "id": "01a0e2f8-bf4a-71c1-9f71-b29a345662cd", "title": null, "url": "http://philcalcado.com/presentations/", "published_at": null }, { "id": "01a0e2f8-bf4a-71c1-9f71-b29a34ccb4af", "title": null, "url": "http://philcalcado.com/publications/", "published_at": null }, { "id": "01a0e2f8-bf4a-71c1-9f71-b29a359608c0", "title": null, "url": "http://philcalcado.com/content/research_on_domain_specific_languages.html", "published_at": null } ] posts Claim your blog
Back to Phil Calçado
Blog · corpus.blog/blogs/philcalcado.com/posts

Phil Calçado

philcalcado.com

2025

2024

2023

2022

2021

2020

2019

2018

2017

2016

2015

2014

2012

2011

2010

2009

2008

Undated