{"id":1499,"date":"2024-11-21T19:57:11","date_gmt":"2024-11-21T11:57:11","guid":{"rendered":"https:\/\/moneystock.net\/wp_e\/?p=1499"},"modified":"2024-11-21T19:57:11","modified_gmt":"2024-11-21T11:57:11","slug":"a-dotnet-developers-note-on-technology-radar-v31","status":"publish","type":"post","link":"https:\/\/moneystock.net\/wp_e\/2024\/11\/21\/a-dotnet-developers-note-on-technology-radar-v31\/","title":{"rendered":"A DotNet developer\u2019s note on Technology Radar V31"},"content":{"rendered":"<p>&nbsp;<\/p>\n<p>As a new Technology Radar release with many interesting techs, a few drew my attention. I picked a few looked interesting for dotnet developer.<\/p>\n<p>Surprised by so many tools, frameworks around LLM application. It is definitely exploding.<\/p>\n<h2>Techniques<\/h2>\n<h3>Adopt<\/h3>\n<ul>\n<li><strong>1% canary<\/strong>: can achieve the similar results by alpha, beta testing. Azure\u00a0 cloud deployment slot can provide similar results as well because the slot can easily distribute the inbound traffic between slots by % of the total traffic.<\/li>\n<li><strong>Component testing<\/strong>: Unit test can be too narrow and have tendency to expose internal function. E2E test can be slow and flaky. It would be better to focus on component testing which runs in memory. Tools like <a href=\"https:\/\/www.npmjs.com\/package\/jsdom\">jsdom<\/a> will help.<\/li>\n<li><a href=\"https:\/\/www.oreilly.com\/library\/view\/continuous-deployment\/9781098146719\/\"><strong>Continuous deployment:<\/strong><\/a> Adopt continuous deployment whenever possible. Continuous deployment means deploy apps to production fully automatically when changes are committed and tested without manual approval. It may not applicable to all cases.<\/li>\n<li><strong>Retrieval-augmented generation (RAG)<\/strong>: <a href=\"https:\/\/www.microsoft.com\/en-us\/research\/blog\/graphrag-unlocking-llm-discovery-on-narrative-private-data\/\">GraphRAG<\/a> is getting more popularity as a way to retrieve more relevant context.<\/li>\n<\/ul>\n<h3>Trial<\/h3>\n<ul>\n<li><a href=\"https:\/\/domainstorytelling.org\/\">Domain storytelling<\/a>: a promising tool to start an initial DDD modeling. In this technique, a facilitator draw a diagram to show entity, event and actors, which can be shared between biz owner and developer and make sure both side understand the requirements.<\/li>\n<li>Fine-tuning embedding models can improve the result from RAG.<\/li>\n<li>Worth trying to action (calling function) with LLMs<\/li>\n<li>LLM can be used to judge (<a href=\"https:\/\/eugeneyan.com\/writing\/llm-evaluators\/#critiques-against-and-support-for-llm-evaluators\">evaluator<\/a>) a result from the other LLMs<\/li>\n<li>Passkeys, which create a key pair. A private key stored in yours device. The public key stored in the web site. This technique is backed by Apple, Google and Microsoft. Probably good idea use Passkeys instead of password whenever possible.<\/li>\n<li>Small language model is getting popular especially in edge device. e.g. Gemini Nano, Microsoft&#8217;s Phi-3<\/li>\n<li>Synthetic data is effectively being used for testing and training models.<\/li>\n<li><a href=\"https:\/\/martinfowler.com\/articles\/legacy-modernization-gen-ai.html\">GenAPI can be used to understand legacy codebase<\/a>.<\/li>\n<\/ul>\n<h3>Access<\/h3>\n<ul>\n<li>Autonomous agents is said to be the next big thing in GenAI. e.g. <a href=\"https:\/\/github.com\/microsoft\/autogen\">Autogen<\/a><\/li>\n<li><a href=\"https:\/\/www.youtube.com\/watch?v=IVpQeMDWysA\">Observability 2.0<\/a><\/li>\n<\/ul>\n<h3>Hold<\/h3>\n<ul>\n<li>Complacency with AI-generated code: The code made by AI will be mediocre code rather than the best code possible.<\/li>\n<li>Enterprise-wide integration testing can be very costly. Consider alternatives.<\/li>\n<li>LLM ban can only pushes employees to find a potentially unsafe workarounds.<\/li>\n<li>Pair programming with human makes team better. AI only helps individual level.<\/li>\n<\/ul>\n<h2>Platforms<\/h2>\n<h3>Trial<\/h3>\n<ul>\n<li>FastChat: an open platform for training, serving, and evaluating large language model based chatbots.<\/li>\n<li>Vertex AI Agent Builder: It helps to create AI agents and applications using natural language or a code-first approach.<\/li>\n<\/ul>\n<h3>Assess<\/h3>\n<ul>\n<li>Azure AI Search is new name for Cognitive Search in Azure. Powerful and easy to use but it was pricy from my previous experience.<\/li>\n<li>FoundationDB: open-sourced distributed database.<\/li>\n<li>Iggy: potential alternative to Kafka.<\/li>\n<li>Iroh: new player in distributed storage space.<\/li>\n<li>PGLite: a WASM build of PostgreSQL<\/li>\n<li><a href=\"https:\/\/getunblocked.com\/\">Unblocked<\/a>: \u00a0brings all the context about your codebase together, so your team gets expert-level answers, no matter where they\u2019re working.<\/li>\n<\/ul>\n<h2>Tools<\/h2>\n<h3>Adopt<\/h3>\n<ul>\n<li><a href=\"https:\/\/www.usebruno.com\/\">Bruno<\/a>: an open-source desktop alternative to Postman and Insomnia.<\/li>\n<li><a href=\"https:\/\/getsops.io\/\">SOPS<\/a>: use it when keeping the secret in code repository.<\/li>\n<li>Visual regression testing tools has been improved and became stable. e.g. <a href=\"https:\/\/github.com\/garris\/BackstopJS\">BackstopJS<\/a>, <a href=\"https:\/\/applitools.com\/\">Applitools<\/a>, Percy.<\/li>\n<li><a href=\"https:\/\/www.wiz.io\/\">Wiz<\/a> is cloud security platform.<\/li>\n<\/ul>\n<h3>Trial<\/h3>\n<ul>\n<li><a href=\"https:\/\/clickhouse.com\/\">ClickHouse<\/a> is real-time data warehouse.<\/li>\n<li><a href=\"https:\/\/clickhouse.com\/\">Devbox<\/a> creates isolated, reproducible development environments that run anywhere.<\/li>\n<li><a href=\"https:\/\/difftastic.wilfred.me.uk\/\">Difftastic<\/a> is a CLI diff tool that compares files based on their syntax.<\/li>\n<li><a href=\"https:\/\/linearb.io\/\">LinearB<\/a>: measure engineering team&#8217;s performance and health.<\/li>\n<li><a href=\"https:\/\/www.getunleash.io\/\">Unleash<\/a>: open-source feature flag tool if you need more scaled feature toggles.<\/li>\n<\/ul>\n<h3>Assess<\/h3>\n<ul>\n<li><a href=\"https:\/\/www.cursor.com\/\">Cursor<\/a> is most eye-catching AI integrated IDE. Much better than VSCode in a sense that Cursor can consider multiple files in a context rather than code snippets.<\/li>\n<li><a href=\"https:\/\/www.jetbrains.com\/ai\/\">JetBrains AI Assistant<\/a>.<\/li>\n<li><a href=\"https:\/\/rspack.dev\/\">Rspack<\/a> is replacement of Webpack and very fast.<\/li>\n<li>Software engineering agents: Examples are GitHub Copilot Workspace, qudo flow, Tabnine&#8217;s agents for JIRA, Amazon Q Developer.<\/li>\n<\/ul>\n<h2>Languages &amp; Frameworks<\/h2>\n<h3>Adopt<\/h3>\n<ul>\n<li><a href=\"https:\/\/www.getdbt.com\/\">dbt<\/a> is a strong, sensible option for implementing data transformations in ELT pipelines.<\/li>\n<li><a href=\"https:\/\/testcontainers.com\/\">Testcontainers<\/a> is an open source library for providing throwaway, lightweight instances of databases, message brokers, web browsers, or just about anything that can run in a Docker container.<\/li>\n<\/ul>\n<h3>Trial<\/h3>\n<ul>\n<li><a href=\"https:\/\/github.com\/dotnetcore\/CAP\">CAP<\/a> is a library based on .Net standard, which is a solution to deal with distributed transactions, has the function of EventBus, it is lightweight, easy to use, and efficient.<\/li>\n<li><a href=\"https:\/\/github.com\/BerriAI\/litellm\">LiteLLM<\/a> enable to call all LLM APIs using the OpenAI format. Sounds to be useful to connect various LLM models from AI App.<\/li>\n<li>LLM Guardrails: example. <a href=\"https:\/\/github.com\/NVIDIA\/NeMo-Guardrails\">NeMo Guardrails<\/a>,\u00a0<a class=\"pop-out\" href=\"https:\/\/github.com\/guardrails-ai\/guardrails\" target=\"_blank\" rel=\"noopener\" aria-label=\"Guardrails AI. This is an external link. Opens in new tab\">Guardrails AI<\/a>\u00a0and\u00a0<a class=\"pop-out\" href=\"https:\/\/www.aporia.com\/ai-security\/\" target=\"_blank\" rel=\"noopener\" aria-label=\"Aporia Guardrails. This is an external link. Opens in new tab\">Aporia Guardrails<\/a><\/li>\n<li><a href=\"https:\/\/medusajs.com\/\">Medusa<\/a> open-source e-commerce solution.<\/li>\n<\/ul>\n<h3>Assess<\/h3>\n<ul>\n<li><a href=\"https:\/\/github.com\/confident-ai\/deepeval\">DeepEval<\/a> is an open-source LLM evaluation framework.<\/li>\n<li><a href=\"https:\/\/flutter.dev\/multi-platform\/web\">Flutter for Web<\/a><\/li>\n<li><a href=\"https:\/\/github.com\/Cinnamon\/kotaemon\">kotaemon<\/a>: An open-source clean &amp; customizable RAG UI for chatting with your documents. Built with both end users and developers in mind.<\/li>\n<li><a href=\"https:\/\/github.com\/microsoft\/LLMLingua\">LLMLingua<\/a> effectively deliver information to LLMs via prompt compression.<\/li>\n<li><a href=\"https:\/\/github.com\/microsoft\/autogen\">Microsoft Autogen<\/a> is an open-source framework for building AI agent systems. It simplifies the creation of event-driven, distributed, scalable, and resilient agentic applications. It allows you to quickly build systems where AI agents collaborate and perform tasks autonomously or with human oversight.<\/li>\n<li><a href=\"https:\/\/docs.ragas.io\/en\/stable\/\">Ragas<\/a> is a library that provides tools to supercharge the evaluation of Large Language Model (LLM) applications.<\/li>\n<\/ul>\n","protected":false},"excerpt":{"rendered":"<p>&nbsp; As a new Technology Radar release with many interesting techs, a few drew my attention. I picked a few looked interesting for dotnet developer. Surprised by so many tools, frameworks around LLM application. It is definitely exploding. Techniques Adopt 1% canary: can achieve the similar results by alpha, beta testing. Azure\u00a0 cloud deployment slot&hellip; <a class=\"more-link\" href=\"https:\/\/moneystock.net\/wp_e\/2024\/11\/21\/a-dotnet-developers-note-on-technology-radar-v31\/\">Continue reading <span class=\"screen-reader-text\">A DotNet developer\u2019s note on Technology Radar V31<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[],"class_list":["post-1499","post","type-post","status-publish","format-standard","hentry","category-uncategorized","entry"],"aioseo_notices":[],"_links":{"self":[{"href":"https:\/\/moneystock.net\/wp_e\/wp-json\/wp\/v2\/posts\/1499","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/moneystock.net\/wp_e\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/moneystock.net\/wp_e\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/moneystock.net\/wp_e\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/moneystock.net\/wp_e\/wp-json\/wp\/v2\/comments?post=1499"}],"version-history":[{"count":7,"href":"https:\/\/moneystock.net\/wp_e\/wp-json\/wp\/v2\/posts\/1499\/revisions"}],"predecessor-version":[{"id":1514,"href":"https:\/\/moneystock.net\/wp_e\/wp-json\/wp\/v2\/posts\/1499\/revisions\/1514"}],"wp:attachment":[{"href":"https:\/\/moneystock.net\/wp_e\/wp-json\/wp\/v2\/media?parent=1499"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/moneystock.net\/wp_e\/wp-json\/wp\/v2\/categories?post=1499"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/moneystock.net\/wp_e\/wp-json\/wp\/v2\/tags?post=1499"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}