41554 blogs · [ { "id": "01a0d93b-2d17-7075-9958-dfdbe756ec47", "title": "Markdown Workflow Engine", "url": "http://www.mfranc.com/ai-workflow/", "published_at": "2026-09-23T20:16:10+00:00" }, { "id": "01a0d93b-2d17-7075-9958-dfdbe7d032ff", "title": "RogueTech.X — Equipment Catalog", "url": "http://www.mfranc.com/game/designer.html", "published_at": "2026-09-23T20:16:10+00:00" }, { "id": "01a0d93b-2d17-7075-9958-dfdbe89afd89", "title": "X — Equipment Guide", "url": "http://www.mfranc.com/game/equipment.html", "published_at": "2026-09-23T20:16:10+00:00" }, { "id": "01a0d93b-2d17-7075-9958-dfdbe8e4e0ec", "title": "X — Roguelike Mech Tactics", "url": "http://www.mfranc.com/game/", "published_at": "2026-09-23T20:16:10+00:00" }, { "id": "01a0d93b-2d17-7075-9958-dfdbe97b1968", "title": "X — Weapons Guide", "url": "http://www.mfranc.com/game/weapons.html", "published_at": "2026-09-23T20:16:10+00:00" }, { "id": "01a0d93b-2d17-7075-9958-dfdbe99e516f", "title": "Tailscale UDP Hole Punching", "url": "http://www.mfranc.com/interactive/tailscale-viz.html", "published_at": "2026-09-23T20:16:10+00:00" }, { "id": "01a0d93b-2d17-7075-9958-dfdbea5508bb", "title": null, "url": "http://www.mfranc.com/presentations/", "published_at": "2026-09-23T20:16:10+00:00" }, { "id": "01a0d93b-2d17-7075-9958-dfdbeaf89648", "title": "Agentic Harness Experiments", "url": "http://www.mfranc.com/presentations/issue-viewer/", "published_at": "2026-09-23T20:16:10+00:00" }, { "id": "01a0d93b-2d17-7075-9958-dfdbeb3bbc74", "title": "Issue Viewer — Short", "url": "http://www.mfranc.com/presentations/issue-viewer/short.html", "published_at": "2026-09-23T20:16:10+00:00" }, { "id": "01a0d93b-2d17-7075-9958-dfdbeb73e5af", "title": "Quo Vadis IT - Programistok 2026", "url": "http://www.mfranc.com/presentations/programistok-2026/", "published_at": "2026-09-23T20:16:10+00:00" }, { "id": "01a0d93b-2d17-7075-9958-dfdbebcea0df", "title": "Toadie - Personal Assistant", "url": "http://www.mfranc.com/presentations/wroc.net/", "published_at": "2026-09-23T20:16:10+00:00" }, { "id": "01a0d93b-2d17-7075-9958-dfdbec051787", "title": "For Pan Samot", "url": "http://www.mfranc.com/thank-you-pan-samot.html", "published_at": "2026-09-23T20:16:10+00:00" }, { "id": "01a087a4-847f-7119-8c02-86725d5a6616", "title": "So I wanted to speak to AI agent ... and ended up with a Tamagochi on my phone", "url": "http://www.mfranc.com/blog/speaking-to-ai-agent-ended-up-with-tamagochi/", "published_at": "2026-02-17T00:00:00+00:00" }, { "id": "01a0d93b-2d16-7230-b8db-d9393372a8dd", "title": "When Agents Talk to Agents: The Communication Overhead Problem | Michal Franc", "url": "http://www.mfranc.com/drafts/2026-01-22-when-agents-talk-to-agents/", "published_at": "2026-01-22T00:00:00+00:00" }, { "id": "01a087a4-847f-7119-8c02-86725da1370b", "title": "Software Engineering Transformation 2026", "url": "http://www.mfranc.com/blog/ai-2026/", "published_at": "2026-01-11T07:00:00+00:00" }, { "id": "01a0d93b-2d16-7230-b8db-d93932d5c42e", "title": "Building Agentic Workflows: Start Simple, Evolve Together | Michal Franc", "url": "http://www.mfranc.com/drafts/2026-01-11-building-agentic-workflows-start-simple-evolve-together/", "published_at": "2026-01-11T00:00:00+00:00" }, { "id": "01a0d93b-2d16-7230-b8db-d9393251dd92", "title": null, "url": "http://www.mfranc.com/blog/begginging-of-internet-and-first-addressing/", "published_at": "2019-10-14T07:00:00+00:00" }, { "id": "01a0d93b-2d16-7230-b8db-d9393294c354", "title": null, "url": "http://www.mfranc.com/blog/dns-single-file-to-globally-distributed-database/", "published_at": "2019-10-14T07:00:00+00:00" }, { "id": "01a087a4-847f-7119-8c02-86725ddf66c5", "title": "Calling Conventions", "url": "http://www.mfranc.com/blog/net-internal-sorting-part4/", "published_at": "2019-03-28T07:00:00+00:00" }, { "id": "01a087a4-847f-7119-8c02-86725ed8cecc", "title": "Managed vs Unmanaged code and interop", "url": "http://www.mfranc.com/blog/net-internals-sorting-part3", "published_at": "2018-07-16T08:00:00+00:00" }, { "id": "01a087a4-847f-7119-8c02-86725f150d37", "title": "Array.Sort && TrySZSort", "url": "http://www.mfranc.com/blog/net-internals-sorting-part2/", "published_at": "2018-06-11T07:00:00+00:00" }, { "id": "01a087a4-847f-7119-8c02-86725fcf51be", "title": "List.Sort internals", "url": "http://www.mfranc.com/blog/net-internals-sorting-part1/", "published_at": "2018-05-28T08:00:00+00:00" }, { "id": "01a087a4-8480-72a4-b614-2ef31b5dbb66", "title": "Journey through the .NET internals - Sorting", "url": "http://www.mfranc.com/blog/net-internals-journey-sort/", "published_at": "2018-05-28T07:00:00+00:00" }, { "id": "01a0d93b-2d16-7230-b8db-d93930a416ab", "title": null, "url": "http://www.mfranc.com/blog/net-sorting-part5/", "published_at": "2018-04-01T07:00:00+00:00" }, { "id": "01a0d93b-2d16-7230-b8db-d93931740f82", "title": null, "url": "http://www.mfranc.com/blog/net-sorting-part6/", "published_at": "2018-04-01T07:00:00+00:00" }, { "id": "01a0d93b-2d16-7230-b8db-d939317e953b", "title": null, "url": "http://www.mfranc.com/blog/net-sorting-intro/", "published_at": "2018-04-01T07:00:00+00:00" }, { "id": "01a087a4-8480-72a4-b614-2ef31ba08a69", "title": "Evolution of Engineer - critical neurone mass and negative code value", "url": "http://www.mfranc.com/blog/evolution-of-engineer/", "published_at": "2017-04-24T00:00:00+00:00" }, { "id": "01a087a4-8480-72a4-b614-2ef31c9e10e5", "title": "Code Review - C# Code", "url": "http://www.mfranc.com/blog/code-review-one/", "published_at": "2017-04-17T10:00:00+00:00" }, { "id": "01a087a4-8480-72a4-b614-2ef31d7f27a6", "title": "Docker container to container communication", "url": "http://www.mfranc.com/blog/docker-containers-communication/", "published_at": "2017-04-10T10:00:00+00:00" }, { "id": "01a0d93b-2d17-7075-9958-dfdbde2708ab", "title": null, "url": "http://www.mfranc.com/blog/first-workshop-devwarsztaty/", "published_at": "2017-04-02T10:00:00+00:00" }, { "id": "01a0d93b-2d17-7075-9958-dfdbdd7791f8", "title": null, "url": "http://www.mfranc.com/blog/2016-review/", "published_at": "2017-01-03T10:00:00+00:00" }, { "id": "01a0d93b-2d17-7075-9958-dfdbdd63c80d", "title": null, "url": "http://www.mfranc.com/blog/programmer-interview-mistake-questions/", "published_at": "2016-09-26T10:00:00+00:00" }, { "id": "01a0d93b-2d17-7075-9958-dfdbdd182044", "title": null, "url": "http://www.mfranc.com/blog/swansea-con-2016/", "published_at": "2016-09-22T10:00:00+00:00" }, { "id": "01a0d93b-2d17-7075-9958-dfdbdc683f2b", "title": null, "url": "http://www.mfranc.com/blog/qa-react-js-and-the-dotnet/", "published_at": "2016-08-18T10:00:00+00:00" }, { "id": "01a0d93b-2d17-7075-9958-dfdbdb69ad55", "title": null, "url": "http://www.mfranc.com/blog/ndc-oslo-2016/", "published_at": "2016-07-25T20:05:00+00:00" }, { "id": "01a0d93b-2d17-7075-9958-dfdbdac9c810", "title": null, "url": "http://www.mfranc.com/blog/simulating-microservices-using-f-and-suave/", "published_at": "2016-03-15T02:21:00+00:00" }, { "id": "01a0d93b-2d17-7075-9958-dfdbda923eec", "title": null, "url": "http://www.mfranc.com/blog/university-degree-and-it/", "published_at": "2016-03-14T00:00:00+00:00" }, { "id": "01a0d93b-2d17-7075-9958-dfdbd9be7743", "title": null, "url": "http://www.mfranc.com/blog/takecareofyourtestcode/", "published_at": "2016-03-01T01:32:00+00:00" }, { "id": "01a0d93b-2d17-7075-9958-dfdbd946c3de", "title": null, "url": "http://www.mfranc.com/blog/daj-sie-poznac-overseer/", "published_at": "2016-02-27T20:20:00+00:00" }, { "id": "01a0d93b-2d17-7075-9958-dfdbd8dcde8d", "title": null, "url": "http://www.mfranc.com/blog/buildstuff-2015/", "published_at": "2015-11-24T10:00:00+00:00" }, { "id": "01a0d93b-2d17-7075-9958-dfdbd8c9e263", "title": null, "url": "http://www.mfranc.com/uncategorized/from-procedural-to-functional-an-example-in-f/", "published_at": "2015-07-13T09:00:00+00:00" }, { "id": "01a0d93b-2d17-7075-9958-dfdbd80baf02", "title": null, "url": "http://www.mfranc.com/blog/i-want-to-be-programmer-where-to-start/", "published_at": "2015-06-01T09:00:00+00:00" }, { "id": "01a0d93b-2d17-7075-9958-dfdbd7651035", "title": null, "url": "http://www.mfranc.com/unit-testing/tdd-unit-testing-big-list-of-learning-resources-from-basics-to-advanced-topics/", "published_at": "2015-05-09T00:35:00+00:00" }, { "id": "01a0d93b-2d17-7075-9958-dfdbd72711f1", "title": null, "url": "http://www.mfranc.com/uncategorized/akka-net-simple-example-with-github-api/", "published_at": "2015-04-27T09:00:00+00:00" }, { "id": "01a0d93b-2d17-7075-9958-dfdbd6b38d30", "title": null, "url": "http://www.mfranc.com/uncategorized/boost-your-dev-productivity-with-cmder-conemu/", "published_at": "2015-03-09T08:00:00+00:00" }, { "id": "01a0d93b-2d17-7075-9958-dfdbd5d351df", "title": null, "url": "http://www.mfranc.com/f/docker-here-docker-there-docker-everywhere-getting-started-with-docker-in-net-and-f/", "published_at": "2015-02-07T09:00:00+00:00" }, { "id": "01a0d93b-2d17-7075-9958-dfdbd56cb840", "title": null, "url": "http://www.mfranc.com/blog/fuel-your-personal-growth-with-feedback/", "published_at": "2015-02-01T16:52:00+00:00" }, { "id": "01a0d93b-2d17-7075-9958-dfdbd4b75e39", "title": null, "url": "http://www.mfranc.com/blog/from-2014-into-2015-review-and-plans/", "published_at": "2015-01-04T23:39:00+00:00" }, { "id": "01a0d93b-2d17-7075-9958-dfdbd4ac391a", "title": null, "url": "http://www.mfranc.com/f/f-and-nancy-beyond-hello-world/", "published_at": "2014-11-24T08:00:00+00:00" }, { "id": "01a0d93b-2d17-7075-9958-dfdbd3b99e5c", "title": null, "url": "http://www.mfranc.com/blog/dotnetconf-pl-2014/", "published_at": "2014-10-23T22:21:00+00:00" }, { "id": "01a0d93b-2d17-7075-9958-dfdbd2d6525c", "title": null, "url": "http://www.mfranc.com/blog/game-programming-with-f-c-and-sfml-gameloop/", "published_at": "2014-06-24T08:00:00+00:00" }, { "id": "01a0d93b-2d17-7075-9958-dfdbd2092434", "title": null, "url": "http://www.mfranc.com/blog/get-out-of-your-comfort-zone-vim-the-social-connecto/", "published_at": "2014-06-19T08:00:00+00:00" }, { "id": "01a0d93b-2d17-7075-9958-dfdbd169f2b1", "title": null, "url": "http://www.mfranc.com/blog/f-where-to-start/", "published_at": "2014-06-10T08:00:00+00:00" }, { "id": "01a0d93b-2d17-7075-9958-dfdbd122b21e", "title": null, "url": "http://www.mfranc.com/tdd/tdd-commit-by-commit-string-calculator-kata-iv/", "published_at": "2014-05-28T03:29:00+00:00" }, { "id": "01a0d93b-2d17-7075-9958-dfdbd03ab521", "title": null, "url": "http://www.mfranc.com/tdd/tdd-commit-by-commit-string-calculator-kata/", "published_at": "2014-05-20T09:00:00+00:00" }, { "id": "01a0d93b-2d17-7075-9958-dfdbcf8ff24e", "title": null, "url": "http://www.mfranc.com/tdd/tdd-commit-by-commit-string-calculator-ii/", "published_at": "2014-04-02T07:00:00+00:00" }, { "id": "01a0d93b-2d17-7075-9958-dfdbcf2fe684", "title": null, "url": "http://www.mfranc.com/tdd/tdd-commit-by-commit-string-calculator-i/", "published_at": "2014-03-10T08:00:00+00:00" }, { "id": "01a0d93b-2d17-7075-9958-dfdbce6559f9", "title": null, "url": "http://www.mfranc.com/blog/pragmatic-developer/", "published_at": "2014-02-27T23:36:00+00:00" }, { "id": "01a0d93b-2d17-7075-9958-dfdbcd83a0bf", "title": null, "url": "http://www.mfranc.com/blog/my-100th-post-welcome-to-london/", "published_at": "2014-01-25T01:31:00+00:00" }, { "id": "01a0d93b-2d17-7075-9958-dfdbcd1eb15c", "title": null, "url": "http://www.mfranc.com/blog/something-null-is-false-c-and-lifted-operators/", "published_at": "2013-08-04T10:35:00+00:00" }, { "id": "01a0d93b-2d17-7075-9958-dfdbcc5d8c24", "title": null, "url": "http://www.mfranc.com/blog/from-dwarf-fortress-to-vim-evolution-of-net-programmer/", "published_at": "2013-07-03T18:05:00+00:00" }, { "id": "01a0d93b-2d17-7075-9958-dfdbcbbecd2a", "title": null, "url": "http://www.mfranc.com/node-js/node-js-simple-web-server-with-express/", "published_at": "2013-06-06T08:00:00+00:00" }, { "id": "01a0d93b-2d17-7075-9958-dfdbcafe54b9", "title": null, "url": "http://www.mfranc.com/blog/couchdb-first-steps/", "published_at": "2013-04-30T12:00:00+00:00" }, { "id": "01a0d93b-2d17-7075-9958-dfdbca03ca28", "title": null, "url": "http://www.mfranc.com/nosql/couchdb-on-windows-getting-started/", "published_at": "2013-04-02T08:00:00+00:00" }, { "id": "01a0d93b-2d17-7075-9958-dfdbc9816cfb", "title": null, "url": "http://www.mfranc.com/blog/ie-78-kendo-ui-binding-problem-unknown-runtime-error/", "published_at": "2013-03-18T08:00:00+00:00" }, { "id": "01a0d93b-2d17-7075-9958-dfdbc8f87311", "title": null, "url": "http://www.mfranc.com/career/software-developer-career-hard-truths/", "published_at": "2013-03-05T08:07:00+00:00" }, { "id": "01a0d93b-2d17-7075-9958-dfdbc864886e", "title": null, "url": "http://www.mfranc.com/blog/visual-studio-extensions-and-configuration/", "published_at": "2013-02-25T08:00:00+00:00" }, { "id": "01a0d93b-2d17-7075-9958-dfdbc775c9ca", "title": null, "url": "http://www.mfranc.com/blog/multiple-asserts-in-unit-test/", "published_at": "2013-02-06T16:00:00+00:00" }, { "id": "01a0d93b-2d17-7075-9958-dfdbc7579d33", "title": null, "url": "http://www.mfranc.com/tools/git-custom-command/", "published_at": "2013-01-14T10:00:00+00:00" }, { "id": "01a0d93b-2d17-7075-9958-dfdbc66fe2f2", "title": null, "url": "http://www.mfranc.com/unit-testing/good-unit-test-one-assert/", "published_at": "2013-01-09T17:00:00+00:00" }, { "id": "01a0d93b-2d17-7075-9958-dfdbc6494af1", "title": null, "url": "http://www.mfranc.com/unit-testing/unit-test-code-with-static-method-console-write/", "published_at": "2013-01-01T16:47:00+00:00" }, { "id": "01a0d93b-2d17-7075-9958-dfdbc5d13339", "title": null, "url": "http://www.mfranc.com/blog/new-simple-site-with-projects/", "published_at": "2012-12-27T06:00:00+00:00" }, { "id": "01a0d93b-2d17-7075-9958-dfdbc4e2fbc0", "title": null, "url": "http://www.mfranc.com/blog/new-design/", "published_at": "2012-12-21T22:52:00+00:00" }, { "id": "01a0d93b-2d17-7075-9958-dfdbc4d304e1", "title": null, "url": "http://www.mfranc.com/blog/goals-for-year-2013/", "published_at": "2012-12-19T19:51:00+00:00" }, { "id": "01a0d93b-2d17-7075-9958-dfdbc4911275", "title": null, "url": "http://www.mfranc.com/blog/log-levels-my-approach/", "published_at": "2012-12-10T20:46:00+00:00" }, { "id": "01a0d93b-2d17-7075-9958-dfdbc3f5c57a", "title": null, "url": "http://www.mfranc.com/blog/formal-education-is-it-worth-the-time/", "published_at": "2012-11-02T14:08:00+00:00" }, { "id": "01a0d93b-2d17-7075-9958-dfdbc3cf9ba7", "title": null, "url": "http://www.mfranc.com/uncategorized/sonar-net-installation/", "published_at": "2012-09-26T11:43:00+00:00" }, { "id": "01a0d93b-2d17-7075-9958-dfdbc36b74ab", "title": null, "url": "http://www.mfranc.com/blog/become-a-mentor-refresh-your-cache/", "published_at": "2012-09-05T18:56:00+00:00" }, { "id": "01a0d93b-2d17-7075-9958-dfdbc273332b", "title": null, "url": "http://www.mfranc.com/uncategorized/ipad-as-a-3rd-monitor/", "published_at": "2012-08-08T18:37:00+00:00" }, { "id": "01a0d93b-2d17-7075-9958-dfdbc2231847", "title": null, "url": "http://www.mfranc.com/blog/interesting-links-1/", "published_at": "2012-07-28T11:09:00+00:00" }, { "id": "01a0d93b-2d17-7075-9958-dfdbc1f56dd3", "title": null, "url": "http://www.mfranc.com/blog/boids-simulation-v0-0-1-changes/", "published_at": "2012-07-19T20:00:00+00:00" }, { "id": "01a0d93b-2d17-7075-9958-dfdbc15c1809", "title": null, "url": "http://www.mfranc.com/blog/boids-simulation-project-overview/", "published_at": "2012-06-23T19:32:00+00:00" }, { "id": "01a0d93b-2d17-7075-9958-dfdbc1545104", "title": null, "url": "http://www.mfranc.com/blog/codereview-replacing-chars/", "published_at": "2012-06-17T17:54:00+00:00" }, { "id": "01a0d93b-2d17-7075-9958-dfdbc08fe2a5", "title": null, "url": "http://www.mfranc.com/blog/testing-serialization-with-nunit-and-continuous-tests/", "published_at": "2012-04-22T21:25:00+00:00" }, { "id": "01a0d93b-2d17-7075-9958-dfdbc01e7663", "title": null, "url": "http://www.mfranc.com/blog/r-gemswitchcase-enum-generation/", "published_at": "2012-04-06T20:14:00+00:00" }, { "id": "01a0d93b-2d17-7075-9958-dfdbbf507fc8", "title": null, "url": "http://www.mfranc.com/blog/regexp-funmatchreplace-in-lines-without-specific-word/", "published_at": "2012-04-02T18:31:00+00:00" }, { "id": "01a0d93b-2d17-7075-9958-dfdbbea4c0db", "title": null, "url": "http://www.mfranc.com/blog/my-personal-task-life-management/", "published_at": "2012-02-09T20:54:00+00:00" }, { "id": "01a0d93b-2d17-7075-9958-dfdbbdda5b5c", "title": null, "url": "http://www.mfranc.com/blog/replacing-tinymce-popup-with-fancybox/", "published_at": "2012-01-27T17:29:00+00:00" }, { "id": "01a0d93b-2d17-7075-9958-dfdbbd12f9aa", "title": null, "url": "http://www.mfranc.com/blog/dbviewengine-in-asp-net-mvc/", "published_at": "2012-01-22T15:36:00+00:00" }, { "id": "01a0d93b-2d17-7075-9958-dfdbbc68b8f1", "title": null, "url": "http://www.mfranc.com/blog/changing-file-encoding-in-multiple-files/", "published_at": "2011-11-09T22:33:00+00:00" }, { "id": "01a0d93b-2d17-7075-9958-dfdbbc09cd68", "title": null, "url": "http://www.mfranc.com/uncategorized/debugging-dynamic-javascript-in-chrome", "published_at": "2011-10-16T10:58:00+00:00" }, { "id": "01a0d93b-2d17-7075-9958-dfdbbb925a07", "title": null, "url": "http://www.mfranc.com/blog/thesisoverview/", "published_at": "2011-10-11T22:16:00+00:00" }, { "id": "01a0d93b-2d17-7075-9958-dfdbbacb7bf8", "title": null, "url": "http://www.mfranc.com/javascript/jquery-valdiator-modyfing-decimal-separator/", "published_at": "2011-07-05T20:28:00+00:00" }, { "id": "01a0d93b-2d17-7075-9958-dfdbbacab296", "title": null, "url": "http://www.mfranc.com/javascript/unobtrusive-validation-in-partial-views/", "published_at": "2011-07-04T18:20:00+00:00" }, { "id": "01a0d93b-2d17-7075-9958-dfdbb9fde8d2", "title": null, "url": "http://www.mfranc.com/blog/projects-2/", "published_at": "2011-06-12T19:17:00+00:00" }, { "id": "01a0d93b-2d17-7075-9958-dfdbb943fb28", "title": null, "url": "http://www.mfranc.com/blog/git-git-gui-staging-selected-lines/", "published_at": "2011-06-11T19:16:00+00:00" }, { "id": "01a0d93b-2d16-7230-b8db-d9394f9fa3d8", "title": null, "url": "http://www.mfranc.com/programming/asp-net-mvc-regular-expression-attribute-testingdatetime-validation-problem/", "published_at": "2011-06-04T13:30:00+00:00" }, { "id": "01a0d93b-2d16-7230-b8db-d9394f856527", "title": null, "url": "http://www.mfranc.com/blog/great-presentations-teched-atlanta-2011/", "published_at": "2011-05-30T18:01:00+00:00" }, { "id": "01a0d93b-2d16-7230-b8db-d9394eb76bbc", "title": null, "url": "http://www.mfranc.com/blog/3-git-and-how-to-problem-with-ignoring-by-file-extensions/", "published_at": "2011-05-28T00:07:00+00:00" }, { "id": "01a0d93b-2d16-7230-b8db-d9394e08283a", "title": null, "url": "http://www.mfranc.com/uncategorized/faking-controller-user-identity-with-rhino-mocks-and-mvccontrib-unit-tests-in-asp-net-mvc", "published_at": "2011-05-25T20:46:00+00:00" } ] posts Claim your blog
Back to Michal Franc | Cloud Native, Architecture, Platform Engineering
Blog · corpus.blog/blogs/mfranc.com/posts

Michal Franc | Cloud Native, Architecture, Platform Engineering

mfranc.com

2026

2019

2018

2017

2016

2015

2014

2013

2012

2011