Thoughtworks Technology Radar, Volume 31 जारी
(thoughtworks.com)तकनीक/टूल/प्लेटफ़ॉर्म/डेवलपमेंट भाषाओं और फ्रेमवर्क के क्षेत्रों के नवीनतम ट्रेंड्स को Hold/Assess/Trial/Adopt के 4 चरणों में विज़ुअलाइज़ और समझाया गया है
कोडिंग असिस्टेंस एंटीपैटर्न
- जैसा कि अपेक्षित था, इस बार के Radar में डेवलपर्स द्वारा आम तौर पर इस्तेमाल किए जाने वाले generative AI और LLM पर चर्चा प्रमुख रही
- पैटर्न अनिवार्य रूप से एंटीपैटर्न की ओर ले जाते हैं, यानी ऐसी संदर्भ-निर्भर स्थितियाँ जिनसे डेवलपर्स को बचना चाहिए
- अत्यधिक गर्म AI क्षेत्र में कुछ एंटीपैटर्न सामने आने लगे हैं:
- यह गलत धारणा कि इंसान AI साथी के साथ pair programming को पूरी तरह बदल सकता है
- कोडिंग सहायता सुझावों पर अत्यधिक निर्भरता
- जनरेट किए गए कोड की code quality से जुड़ी समस्याएँ
- codebase की तेज़ वृद्धि दर
- AI abstraction का उपयोग करने के बजाय brute-force तरीके से समस्याएँ हल करने की प्रवृत्ति रखता है
- उदाहरण: Strategy design pattern की जगह दर्जनों conditional statements का उपयोग
- खास तौर पर code quality से जुड़ी समस्याएँ इस बात को रेखांकित करती हैं कि डेवलपर्स और architects को लगातार सतर्क रहना होगा ताकि वे "चलता तो है, लेकिन भयानक" कोड के जाल में न फँसें
- इसलिए टीम के सदस्यों को unit tests, architecture fitness functions और अन्य सिद्ध governance तथा verification तकनीकों जैसी अच्छी engineering practices पर और अधिक ध्यान देना चाहिए
- इसका उद्देश्य यह सुनिश्चित करना है कि AI codebase को complexity से एन्क्रिप्ट करने के बजाय वास्तव में प्रयासों में मदद कर रहा है
Rust is anything but rusty - Rust ज़रा भी जंग नहीं खाया है
- Rust धीरे-धीरे पसंदीदा system programming language बनता जा रहा है
- हर Radar सत्र में Rust बातचीत के संदर्भ में बार-बार सामने आता है
- चर्चा किए जाने वाले कई टूल Rust में लिखे गए हैं
- पुरानी system-level utilities को बदलने या performance सुधारने के लिए ecosystem के कुछ हिस्सों को दोबारा लिखने में Rust पसंदीदा भाषा है
- Rust-आधारित टूल्स के लिए सबसे आम विशेषण शायद "बेहद तेज़" है
- उदाहरण के लिए Python ecosystem में कई ऐसे टूल हैं जिनके Rust-आधारित alternatives बेहतर performance के लिए उपलब्ध हैं
- भाषा डिज़ाइनरों और समुदाय ने पिछली भाषाओं की कई कमियों की तुलना में कम pitfalls के साथ शानदार execution speed देने वाला, और साथ ही मुख्य SDK, libraries तथा development tools का एक बेहद पसंदीदा ecosystem बनाने में सफलता पाई है
- टीम के कई लोग Rust के प्रशंसक हैं, और ऐसा लगता है कि Rust इस्तेमाल करने वाले अधिकांश डेवलपर्स भी इसे बहुत सराहते हैं
WASM का क्रमिक उभार
- WASM(WebAssembly) stack-based virtual machine के लिए एक binary instruction format है
- अधिकांश डेवलपर्स की रुचियों के लिहाज़ से यह बहुत गूढ़ और low-level लग सकता है, लेकिन लोग इसका महत्व समझते हैं: browser sandbox के भीतर जटिल applications चलाने की क्षमता
- WASM मौजूदा JavaScript virtual machine के भीतर चल सकता है, जिससे डेवलपर्स ऐसे applications को browser में एम्बेड कर सकते हैं जिन्हें पहले केवल native frameworks और extensions में ही लागू किया जा सकता था
- चार प्रमुख browsers (Chrome, Firefox, Safari, Edge) अब WASM 1.0 को support करते हैं, जिससे sophisticated, portable और cross-platform development के लिए दिलचस्प संभावनाएँ खुलती हैं
- पिछले कुछ वर्षों से हम इस standard को बहुत रुचि के साथ देखते आए हैं, और अब इसे एक वैध deployment target के रूप में अपनी क्षमता दिखाना शुरू करते देखना उत्साहजनक है
generative AI टूल्स का Cambrian explosion
- पिछले कुछ Radar संस्करणों में दिखाई गई दिशा को देखते हुए, हमें उम्मीद थी कि generative AI हमारी चर्चाओं में प्रमुखता से आएगा
- फिर भी language models को support करने वाले तकनीकी ecosystem के विस्फोट ने हमें अब भी चकित किया:
- guardrails, evaluation, agent-building tools, structured output workflows के लिए frameworks, vector databases, cloud services और observability tools
- यह तेज़ और विविध विकास कई मायनों में पूरी तरह समझ में आता है
- शुरुआती अनुभव, यानी language model को सादा text prompt देने की सरलता, software product engineering तक पहुँची
- हो सकता है यह उन सपनों और बढ़ा-चढ़ाकर किए गए दावों तक न पहुँचे जो लोगों ने ChatGPT को अपना पहला prompt भेजने के बाद बनाए थे, लेकिन हम कई ग्राहकों में generative AI का समझदारीपूर्ण और उत्पादक उपयोग देख रहे हैं, और ये सभी टूल्स, प्लेटफ़ॉर्म और frameworks LLM-आधारित solutions को production में लाने में महत्वपूर्ण भूमिका निभाते हैं
- 2015 के आसपास JavaScript ecosystem के विस्फोट की तरह, यह अव्यवस्थित विकास कुछ समय तक जारी रहने की उम्मीद है
[Techniques]
Adopt
-
1% canary
- canary deployment का उपयोग कर नए software versions के लिए शुरुआती feedback को प्रोत्साहित करना और जोखिम घटाना
- नई सुविधा को 1% users तक rollout करने की तकनीक, जिससे टीमें feedback कैप्चर कर सकती हैं, प्रभाव देख सकती हैं और ज़रूरत पड़ने पर प्रतिक्रिया दे सकती हैं
- mobile apps, edge computing devices और software-defined vehicles जैसी बड़े पैमाने की deployments में महत्वपूर्ण
-
Component testing
- test automation प्रभावी software development की आधारशिला है
- frontend testing पर ध्यान देकर स्थिरता और गति सुनिश्चित करना
- component tests के लिए jsdom का उपयोग कर memory में execution
- end-to-end tests के लिए browser tools का उपयोग
-
Continuous deployment
- जहाँ संभव हो, continuous deployment का अभ्यास अपनाएँ
- automated tests पास कर चुके सभी changes को अपने-आप production में deploy करना
- तेज़ feedback loop और ग्राहकों तक त्वरित value delivery संभव
- आवश्यक maturity हासिल करने के लिए roadmap देने वाली Valentina Servile की पुस्तक "Continuous Deployment" देखें
-
Retrieval-augmented generation (RAG)
- large language models की response quality सुधारने के लिए पसंदीदा pattern
- Jugalbandi AI platform जैसे projects में सफलतापूर्वक इस्तेमाल
- प्रासंगिक और भरोसेमंद documents की जानकारी database में संग्रहित करना
- prompt के लिए संबंधित documents को retrieve और augment कर समृद्ध context देना
- बेहतर output quality और hallucinations में बड़ी कमी
Trial
-
Domain storytelling
- domain-driven design (DDD) हमारे software development approach की नींव बन चुका है
- कई टीमों के लिए DDD की शुरुआत कठिन होती है
- domain storytelling शुरुआती domain model development का विकल्प या पूरक है
- business experts की गतिविधियों के विवरण को diagram के रूप में दिखाकर साझा समझ को स्पष्ट करना
-
Fine-tuning embedding models
- retrieval-augmented generation पर आधारित LLM apps बनाते समय embeddings की गुणवत्ता का retrieval और responses पर सीधा असर पड़ता है
- किसी विशेष task या domain के लिए embeddings की accuracy और relevance बेहतर की जा सकती है
- domain-specific LLM apps में जब सटीक information extraction महत्वपूर्ण होता है, तब हमारी टीम embedding fine-tuning करती है
- इस approach के फायदे और नुकसान पर विचार करना ज़रूरी है
-
Function calling with LLMs
- दिए गए query और संबंधित documents के आधार पर LLM द्वारा उपयुक्त function तय कर उसे call करने की क्षमता
- इससे LLM की क्षमताएँ text generation से आगे तक बढ़ती हैं
- function या API trigger के ज़रिए LLM ऐसे कार्य कर सकता है जो पहले उसकी स्वतंत्र कार्य-सीमा से बाहर थे
- LLM आंतरिक systems, databases से जुड़ सकता है या browser के माध्यम से internet search भी कर सकता है
- इसे retrieval-augmented generation और agent architecture के संदर्भ में समझा जाना चाहिए, एक abstract pattern के रूप में
-
LLM as a judge
- हम ऐसे systems बनाते हैं जो बड़े datasets पर आधारित प्रश्नों के उत्तर दे सकते हैं, लेकिन उन उत्तरों तक पहुँचने की प्रक्रिया को ट्रैक करना कठिन होता है
- किसी दूसरे system (जो LLM-आधारित भी हो सकता है) के responses का मूल्यांकन करने के लिए LLM का उपयोग
- product catalog के search results की relevance और LLM-आधारित chatbot की user guidance direction के मूल्यांकन में उपयोग
- evaluator system की सावधानीपूर्वक setup और calibration ज़रूरी
- इससे efficiency बढ़ सकती है और cost कम हो सकती है
-
Passkeys
- FIDO Alliance के नेतृत्व में, और Apple, Google, Microsoft के support के साथ, mainstream usability के करीब पहुँच रहा है
- नया login सेट करते समय key pair बनता है - website public key प्राप्त करती है, user private key अपने पास रखता है
- asymmetric cryptography का उपयोग कर login प्रोसेस करना
- user device में stored रहने वाली और website को transmit न की जाने वाली private key के स्वामित्व का प्रमाण
- Passkey तक पहुँच biometrics या PIN से सुरक्षित होती है
- multi-platform users के लिए CTAP के माध्यम से key creation या login के लिए आवश्यक device के अलावा किसी दूसरे device पर भी Passkey स्टोर की जा सकती है
-
Small language models
- बड़े language models (LLM) उपयोगी हैं, लेकिन उनके बड़े आकार के कारण समस्याएँ पैदा हो सकती हैं
- prompt responses के लिए बहुत अधिक compute resources चाहिए, इसलिए वे धीमे और महंगे होते हैं
- मॉडल अक्सर proprietary होते हैं और बड़े आकार के कारण उन्हें third-party cloud पर host करना पड़ता है, जो sensitive data के लिए समस्या बन सकता है
- अधिकांश मामलों में model training अत्यधिक महंगी होती है
- RAG pattern base model की training और fine-tuning की आवश्यकता को कम कर सकता है, लेकिन cost और privacy की समस्याएँ फिर भी बनी रहती हैं
- छोटे language models (SLM) में रुचि बढ़ रही है
- इनमें weights और precision कम होते हैं (आमतौर पर 3.5 अरब से 10 अरब parameters)
- सही context में ठीक से configure किए जाने पर ये LLM जितना या उससे बेहतर प्रदर्शन कर सकते हैं
- अपने आकार के कारण ये edge devices पर चल सकते हैं
- Google का Gemini Nano और Microsoft की Phi-3 series जैसे उदाहरणों के साथ यह क्षेत्र तेज़ी से विकसित हो रहा है
- बड़े language models (LLM) उपयोगी हैं, लेकिन उनके बड़े आकार के कारण समस्याएँ पैदा हो सकती हैं
-
Synthetic data for testing and training models
- इसमें ऐसा artificial data बनाना शामिल है जो वास्तविक scenarios की नकल कर सके, बिना sensitive या restricted-access data sources पर निर्भर हुए
- structured datasets के लिए synthetic data पर व्यापक रूप से काम किया गया है
- unstructured data के लिए synthetic data का पुनः उपयोग बढ़ रहा है
- खासकर उन कंपनियों में जिन्हें LLM training या fine-tuning के लिए labeled, domain-specific data की कमी का सामना करना पड़ता है
- Bonito और Microsoft का AgentInstruct जैसे tools text documents और code files जैसे raw sources से synthetic instruction-tuning data बना सकते हैं
- इससे manual data curation की लागत और उस पर निर्भरता घटाते हुए model training तेज़ होती है
- imbalanced या sparse data की समस्या हल करने के लिए synthetic data generation भी एक महत्वपूर्ण use case है
- यह fraud detection या customer segmentation जैसे tasks में आम है
- SMOTE जैसी techniques minority class instances को कृत्रिम रूप से बनाकर dataset को संतुलित करती हैं
- finance जैसे उद्योगों में GAN का उपयोग दुर्लभ transactions का simulation करने के लिए किया जाता है, ताकि models edge cases का पता लगाने में अधिक robust बनें और overall performance बेहतर हो
-
Using GenAI to understand legacy codebases
- generative AI (GenAI) और large language models (LLM) developers को code लिखने और समझने में मदद करते हैं
- यह विशेष रूप से उन legacy codebases के लिए उपयोगी है जिनकी documentation कमजोर, पुरानी या भ्रामक है
- legacy codebases को समझने के लिए GenAI के उपयोग से जुड़ी techniques और products और परिपक्व हो रहे हैं
- विशेष रूप से mainframe modernization के लिए reverse engineering कार्य में इसका सफल उपयोग हुआ है
- codebase के knowledge graph पर information retrieval करने वाला retrieval-augmented generation (RAG) approach आशाजनक है
- knowledge graph codebase के बारे में ऐसी structural information सुरक्षित रख सकता है जो LLM केवल text code से निकाल पाने से अधिक हो
- यह विशेष रूप से उन legacy codebases के लिए मददगार है जिनमें self-descriptiveness और cohesion कम होती है
- graph को existing और AI-generated documentation, external dependencies, और business domain knowledge जैसी चीज़ों से और समृद्ध करने के अवसर भी मौजूद हैं, जिससे AI का काम आसान हो सकता है
Assess
-
AI team assistants
- AI coding assistance tools पर अब तक मुख्यतः individual contributors के काम को support और improve करने के संदर्भ में चर्चा हुई है
- लेकिन software delivery हमेशा से teamwork रही है और आगे भी रहेगी, इसलिए 10x engineer के बजाय 10x team बनाने में मदद करने वाले AI team assistants कैसे बनाए जाएँ, इस पर विचार ज़रूरी है
- हालिया tool market developments ने इसे वास्तविकता के और करीब ला दिया है
- Unblocked एक ऐसा platform है जो टीम के सभी knowledge sources को एकीकृत करता है और उन्हें टीम के tools में बुद्धिमानी से जोड़ता है
- Atlassian का Rovo सबसे व्यापक रूप से उपयोग किए जाने वाले team collaboration platform में AI जोड़कर documents के लिए नए प्रकार की search और access उपलब्ध कराता है
- हम knowledge amplification और team practices को support करने के लिए AI की क्षमता का प्रत्यक्ष रूप से अध्ययन कर रहे हैं
- Haiven team assistant को open source के रूप में उपलब्ध कराया गया है और requirements analysis जैसे non-coding tasks के लिए AI support पर सीखना शुरू किया गया है
-
Dynamic few-shot prompting
- few-shot prompting के आधार पर model response को guide करने के लिए prompt में specific examples को dynamically शामिल किया जाता है
- इन examples की संख्या और प्रासंगिकता समायोजित करके context length और relevance को optimize किया जाता है, जिससे model efficiency और performance बेहतर होती है
- scikit-llm जैसी libraries इस technique को लागू करने के लिए nearest-neighbor search का उपयोग करती हैं, ताकि user query से मेल खाने वाले सबसे प्रासंगिक examples लाए जा सकें
- इससे model की सीमित context window का बेहतर उपयोग होता है और token consumption कम होती है
- open source SQL generator vanna response accuracy बेहतर करने के लिए dynamic few-shot prompting का उपयोग करता है
-
GraphQL for data products
- data products के output port के रूप में GraphQL का उपयोग कर clients को product consume करने देने की तकनीक
- GraphQL का उपयोग करके underlying data complexity को abstract किया जाता है और clients के लिए अधिक consistent और manageable interface देने वाली एक unified API layer बनाई जाती है
- data products में GraphQL उपयोग करने पर consumers GraphQL schema के माध्यम से data formats और relationships को सहज रूप से खोज सकते हैं और परिचित client tools का उपयोग कर सकते हैं
- हमारी टीम LLM की मदद से big data insights का अन्वेषण और खोज करने वाले विशेष use cases में इस तकनीक का अध्ययन कर रही है
- LLM user prompt और reference के लिए दिए गए GraphQL schema के आधार पर GraphQL queries बनाता है
-
LLM-powered autonomous agents
- Autogen और CrewAI जैसे frameworks के आने से यह तकनीक single-agent और static multi-agent systems से आगे विकसित हो रही है
- इसमें जटिल गतिविधियों को कई छोटे tasks में तोड़कर हर agent को एक specific role दिया जाता है ताकि वे उन्हें पूरा कर सकें
- developers task execution के लिए preconfigured tools का उपयोग कर सकते हैं और agents आपस में बातचीत कर flow को orchestrate कर सकते हैं
- यह अभी भी शुरुआती development चरण में है, और हमारी टीम ने agents के infinite loops में फँसने या uncontrolled behavior जैसी समस्याएँ देखी हैं
- LangGraph जैसी libraries flow को graph के रूप में define करने की क्षमता के साथ agent interactions पर अधिक control देती हैं
- इस तकनीक का उपयोग करते समय timeout और human oversight सहित fail-safe mechanisms लागू करने की सिफारिश की जाती है
-
Observability 2.0
- पारंपरिक और heterogeneous monitoring tools से हटकर एक ऐसे integrated approach की ओर बदलाव, जो single data store में structured और high-cardinality event data का उपयोग करता है
- rich और raw events को detailed metadata के साथ capture किया जाता है, ताकि comprehensive analysis के लिए single source of truth उपलब्ध हो
- events को raw form में store करने से correlation सरल होता है, real-time और forensic analysis को support मिलता है, और complex, distributed systems के बारे में गहरी अंतर्दृष्टि मिल सकती है
- यह high-resolution monitoring और dynamic investigation capabilities प्रदान करता है
- performance bottlenecks के बिना detailed inspection के लिए high-cardinality और high-dimensional data capture को प्राथमिकता दी जाती है
- unified data store complexity को कम करता है, system behavior का एक consistent view देता है, और observability practices को software development lifecycle के साथ अधिक closely align करता है
-
On-device LLM inference
- अब web browsers और smartphones, laptops जैसे edge devices पर large language models (LLM) चलाना संभव है
- इससे cloud transmission के बिना sensitive data को सुरक्षित रूप से process किया जा सकता है, edge computing और real-time image/video processing जैसे tasks के लिए बहुत low latency मिलती है, local computation से लागत घटती है, और internet connection अस्थिर हो या उपलब्ध न हो तब भी functionality बनी रहती है
- यह research and development का एक सक्रिय क्षेत्र है, और पहले Apple Silicon पर efficient machine learning के लिए open source framework MLX को प्रमुखता दी गई थी
- Transformers.js और Chatty जैसे नए tools सामने आ रहे हैं
- Transformers.js, ONNX Runtime का उपयोग करके browser में transformers चला सकता है (PyTorch, TensorFlow, JAX से converted models का समर्थन)
- Chatty, WebGPU का उपयोग करके browser में LLM को native और private तरीके से चलाता है, जिससे feature-rich AI experience मिलता है
-
LLMs से structured output
- इसका अर्थ है भाषा मॉडल के जवाबों को एक परिभाषित schema तक सीमित रखने की प्रथा
- इसे generalized model को किसी खास format में जवाब देने का निर्देश देकर या JSON जैसे "default" output के लिए model को fine-tune करके हासिल किया जा सकता है
- OpenAI अब structured output को support करता है, जिससे developer JSON schema, pydantic या Zod object देकर model responses को सीमित कर सकते हैं
- function calling, API interaction, external integration आदि में, जहां accuracy और format compliance महत्वपूर्ण हों, यह खास तौर पर उपयोगी है
- यह सिर्फ code के साथ interface करने के तरीके को बेहतर नहीं बनाता, बल्कि chart rendering के लिए markup generate करने जैसे व्यापक use case भी support करता है
- यह model output में hallucination की संभावना कम करने में भी मदद करता है
Hold
-
AI-generated code के प्रति complacency
- GitHub Copilot और Tabnine जैसे AI coding assistants बहुत लोकप्रिय हैं
- StackOverflow के 2024 developer survey के अनुसार, "सभी respondents में से 72% development के लिए AI tools के प्रति अनुकूल या बहुत अनुकूल हैं"
- हम भी इनके फायदों को मानते हैं, लेकिन code quality पर इनके मध्यम और दीर्घकालिक असर को लेकर सतर्क हैं और developers को AI-generated code के प्रति आत्मसंतुष्टि से बचने की सलाह देते हैं
- कुछ सकारात्मक अनुभवों के बाद AI सुझावों की समीक्षा करते समय सतर्कता कम कर देना आसान हो जाता है
- GitClear के अध्ययन के अनुसार, codebase के तेजी से बढ़ने की प्रवृत्ति दिखती है, और संदेह है कि यह बड़े pull requests से मेल खाती है
- GitHub के इस अध्ययन में बताया गया pull request merge rate में 15% की वृद्धि वास्तव में अच्छी बात है या लोग AI परिणामों पर जरूरत से ज्यादा भरोसा करके बड़े pull requests को अधिक तेजी से merge कर रहे हैं, इस पर सवाल उठता है
- हम अब भी एक साल पहले दी गई बुनियादी "शुरू करने" वाली सलाह का उपयोग कर रहे हैं, और automation bias, sunk cost fallacy, fixation तथा review fatigue से सावधान रहने की जरूरत है
- साथ ही, यह भी अच्छा है कि programmer इस बारे में एक अच्छा mental framework विकसित करें कि AI का उपयोग कहां और कब करना है, और कब उस पर भरोसा नहीं करना चाहिए
-
Enterprise-wide integration test environments
- यह एक आम और अपव्ययी प्रथा है जो सब कुछ धीमा कर देती है
- यह अक्सर ऐसे कीमती resource बन जाते हैं जिन्हें replicate करना मुश्किल होता है और जो development में bottleneck बनते हैं
- environments के बीच अपरिहार्य data inconsistency और configuration overhead के कारण यह झूठा सुरक्षा-बोध देते हैं
- alternatives (ephemeral environments या कई on-premise test environments) के खिलाफ आम आपत्ति विडंबना से cost ही होती है
- लेकिन enterprise-wide integration test environment से होने वाली देरी की लागत पर ध्यान नहीं दिया जाता
- यह तब होती है जब development teams दूसरी teams के काम पूरा होने या dependent systems के नए version deploy होने का इंतजार करती हैं
- इसके बजाय teams को ephemeral environments का उपयोग करना चाहिए और वास्तविक replicas की जगह fake stubs का उपयोग करके, development team के स्वामित्व वाले test sets को सस्ते में शुरू और बंद करना चाहिए
- इस विकल्प को support करने वाली अन्य तकनीकों में contract testing, deployment और release को अलग करना, mean time to recovery, और production testing पर जोर शामिल है
-
LLM bans
- कार्यस्थल पर व्यापक LLM ban लागू करने के बजाय approved AI tools के set तक access देने पर ध्यान देना चाहिए
- ban सिर्फ कर्मचारियों को unapproved और संभावित रूप से unsafe workaround खोजने के लिए प्रेरित करते हैं
- शुरुआती personal computer की तरह, लोग बाधाओं की परवाह किए बिना उन tools का उपयोग करके काम करेंगे जिन्हें वे प्रभावी मानते हैं
- अगर सुरक्षित और assured alternatives नहीं दिए जाते, तो enterprise में कर्मचारी unapproved LLMs का उपयोग करके intellectual property, data leakage और liability risk पैदा कर सकते हैं
- इसके बजाय सुरक्षित और enterprise-approved LLMs या AI tools उपलब्ध कराने से safety और productivity दोनों सुनिश्चित किए जा सकते हैं
- अच्छी तरह प्रबंधित approach के जरिए organization, data privacy, security, compliance और cost से जुड़ी चिंताओं को संभालते हुए कर्मचारियों को LLM की क्षमताएं दे सकता है
- सबसे अच्छे मामले में, AI tools तक सुव्यवस्थित access कार्यस्थल में AI के सर्वोत्तम उपयोग के बारे में organizational learning को तेज कर सकता है
-
Replacing pair programming with AI
- coding assistants की बात करते समय pair programming का विषय लगभग अनिवार्य रूप से सामने आता है
- हमारे पेशे का pair programming के साथ प्रेम-घृणा वाला रिश्ता है
- कुछ लोग इसके कट्टर समर्थक हैं और कुछ इसे बिल्कुल सहन नहीं कर पाते
- अब coding assistants यह सवाल उठाते हैं कि क्या इंसान किसी दूसरे इंसान की जगह AI के साथ pair बनाकर team के लिए वही परिणाम हासिल कर सकता है
- GitHub Copilot खुद को "your AI pair programmer" भी कहता है
- हमें लगता है कि coding assistants pair programming के कुछ फायदे दे सकते हैं, लेकिन pair programming को पूरी तरह AI से बदलने की सिफारिश नहीं करते
- coding assistant को pair programmer मानने से pairing के प्रमुख फायदों में से एक, यानी individual contributor नहीं बल्कि पूरी team को बेहतर दिशा में ले जाना, नजरअंदाज हो जाता है
- coding assistants अटके हुए हिस्सों को सुलझाने, नई तकनीक सीखने, onboarding में मदद करने या tactical काम को तेज करने में मदद कर सकते हैं ताकि strategic design पर ध्यान दिया जा सके
- लेकिन ongoing work को कम रखना, handoff और relearning घटाना, continuous integration संभव बनाना, और collective code ownership बेहतर करना जैसे team collaboration के फायदों में ये मदद नहीं करते
[Platforms]
Adopt : कोई नहीं
Trial
-
Databricks Unity Catalog
- यह Lakehouse के assets जैसे files, tables और ML models के लिए data governance solution है
- यह एक managed open source solution है जिसका उपयोग external storage या Databricks द्वारा managed data को manage और query करने के लिए किया जा सकता है
- इसका फायदा यह है कि यह governance, metastore management और data discovery को एकीकृत रूप से support करता है, जिससे कई tools को manage करने की जरूरत कम होती है
- Databricks-managed Unity Catalog में automatic disaster recovery का अभाव एक कमी के रूप में सामने आया
- teams को backup और recovery features खुद configure करने पड़े
- यह एक centralized solution है, लेकिन individual teams को अपने assets manage करने के लिए authority delegate की जा सकती है
-
FastChat
- यह large language models के training, serving और evaluation के लिए एक open platform है
- यह कई models (Llama 3.1, Mistral 7B, Llama-SQL आदि) को OpenAI API format में एकसमान तरीके से host कर सकता है
- यह controller-worker architecture का उपयोग करके अलग-अलग models को कई workers पर host करता है
- यह vLLM, LiteLLM, MLX आदि जैसे विभिन्न worker types को support करता है
- use case के अनुसार अलग प्रकार के FastChat model workers बनाए और scale किए जा सकते हैं
- developer IDE में code suggestions के लिए low latency चाहिए, इसलिए कई workers तक scale किया जाता है
- Text-to-SQL में demand कम होने से multiple workers की जरूरत नहीं होती
- इसे A/B testing में उपयोग किया जा सकता है
- एक ही model पर अलग-अलग hyperparameter values सेट करके optimal value पहचानी जा सकती है
- live service में model switching के दौरान zero-downtime migration को validate किया जा सकता है
-
GCP Vertex AI Agent Builder
- यह एक flexible platform है, जिससे natural language या code-first approach के जरिए AI agents बनाए जा सकते हैं
- यह third-party connectors के जरिए enterprise data के साथ सहज रूप से integrate होता है
- यह AI agents के निर्माण, prototyping और deployment के लिए जरूरी सभी tools प्रदान करता है
- developer कम से कम setup के साथ agents का तेजी से prototype बना सकते हैं और complex data tasks संभाल सकते हैं
- यह structured/unstructured data को कुशलतापूर्वक manage करने वाले knowledge base या automated support systems बनाने में उपयोगी है
-
Langfuse
- यह LLM-आधारित applications की observability, monitoring और evaluation के लिए एक tool है
- tracing, analytics और evaluation features के जरिए completion performance और accuracy का विश्लेषण किया जा सकता है
- cost और latency को manage करके तथा production usage patterns को समझकर data-driven improvements किए जा सकते हैं
- यह instrumentation data का उपयोग करता है, जो request-response flow और intermediate steps की complete traceability देता है
- इसे RAG और LLM-आधारित autonomous agents के साथ उपयोग किया जा सकता है
- low-score वाले conversation traces का विश्लेषण करके architecture में सुधार की जरूरत वाले हिस्सों की पहचान की जा सकती है
-
Qdrant
- यह Rust में लिखा गया open source vector similarity search engine और database है
- यह विभिन्न text और multimodal dense vector embedding models को support करता है
- MiniLM-v6 और BGE जैसे open source embeddings को कई product knowledge bases में उपयोग किया जा सकता है
- इसे multi-tenancy support करने वाले enterprise vector store के रूप में इस्तेमाल किया जाता है
- vector embeddings को अलग collections में store करके प्रत्येक product के knowledge base को isolate किया जाता है
- user access policies application layer में manage की जाती हैं
-
Vespa
- यह एक open source search engine और big data processing platform है
- उन applications के लिए उपयुक्त है जिन्हें low latency और high throughput की आवश्यकता होती है
- कई search technologies का उपयोग करके hybrid search लागू किया जा सकता है
- विविध metadata की efficient filtering और sorting को support करता है
- multi-stage ranking लागू की जा सकती है
- प्रति document कई vectors को duplication के बिना index किया जा सकता है
- कई indexed fields में एक साथ data search किया जा सकता है
Assess
-
Azure AI Search
- यह knowledge base जैसी applications के लिए structured/unstructured data processing हेतु cloud-based search service है
- keyword, vector, hybrid search सहित विभिन्न प्रकार की search को support करता है
- PDF, DOC, PPT जैसे सामान्य unstructured data formats को स्वतः ingest करके searchable content बनाया जा सकता है
- Azure OpenAI जैसी अन्य Azure services के साथ integration के कारण न्यूनतम manual integration के साथ application बनाया जा सकता है
- Azure environment में hosted projects के लिए उपयुक्त है और stable performance दिखाता है
- custom skills के माध्यम से विशेष data processing steps को परिभाषित किया जा सकता है
-
Databricks Delta Live Tables
- यह reliable, maintainable और testable data processing pipelines बनाने के लिए एक declarative framework है
- declarative approach से data transformations को define करता है और underlying infrastructure तथा data flow को स्वतः manage करता है
- मजबूत monitoring capabilities प्रदान करता है और पूरे data pipeline के DAG को visual रूप में दिखाता है
- data lineage और dependency tracking के लिए उपयोगी है
- Databricks ecosystem के साथ गहरे integration के कारण interface customization पर सीमाएँ हो सकती हैं
-
Elastisys Compliant Kubernetes
- यह healthcare, finance और government जैसे अत्यधिक regulated industries के लिए विशेष Kubernetes distribution है
- automated security processes प्रदान करता है
- multi-cloud और on-premises support उपलब्ध है
- zero trust security architecture के आधार पर बनाया गया है
- GDPR, HIPAA जैसे कानूनों और ISO27001 जैसे controls compliance के लिए built-in support है
-
FoundationDB
- यह एक multi-model database है, जिसे 2015 में Apple ने acquire किया और 2018 में open source किया गया
- इसका core एक distributed key-value store है जो strict serializable transactions प्रदान करता है
- write hotspots को रोकने के लिए smart data distribution और नए storage engine जैसे प्रमुख सुधार किए गए हैं
- unbundled architecture के माध्यम से cluster के विभिन्न हिस्सों को स्वतंत्र रूप से scale किया जा सकता है
- व्यापक features के बावजूद large-scale clusters को चलाना आसान है
-
Golem
- यह durable computing के लिए explicit state machine architecture का उपयोग करने वाला distributed computing platform है
- long-running microservice sagas या AI agent orchestration workflows के लिए उपयुक्त है
- WebAssembly components को किसी भी supported language में लिखा जा सकता है
- यह deterministic है और fast startup time को support करता है
-
Iggy
- यह Rust में लिखा गया persistent message streaming platform है
- multi-stream, topic और partition को support करता है
- at-most-once delivery, message expiration, QUIC/TCP/HTTP protocols के लिए TLS support आदि प्रदान करता है
- एक single server पर high read/write throughput हासिल करता है
- clustering और
io_uringsupport की योजना है, इसलिए यह Kafka का विकल्प बन सकता है
-
Iroh
- यह IPFS का विकसित रूप distributed file storage और content delivery system है
- इसमें maximum block size limit नहीं है और range-based set reconciliation के माध्यम से data synchronization mechanism प्रदान किया जाता है
- WASM के माध्यम से browser support roadmap में शामिल है
iroh.networkके जरिए cloud service का उपयोग किया जा सकता है- यह कई भाषाओं के SDK प्रदान करता है और IPFS की तुलना में अधिक user-friendly है
-
Large vision model (LVM) platforms
- यह large vision model platforms हैं जो video streams और images की segmentation, synthesis, reconstruction और analysis कर सकते हैं
- इन्हें diffusion models या standard CNN के साथ मिलाकर उपयोग किया जा सकता है
- production environment में इनके उपयोग से जुड़ी चुनौतियाँ मौजूद हैं
- training data collection, object segmentation और labeling, model fine-tuning आदि
- V7, Nvidia Deepstream SDK, Roboflow जैसे tools इन चुनौतियों को हल करने के लिए उभरे हैं
- Deepstream और Roboflow video stream management के लिए GUI और API का integrated support प्रदान करते हैं
-
OpenBCI Galea
- यह brain-computer interface (BCI) के लिए non-invasive technology platform है
- EEG जैसे electrophysiological signals का उपयोग करके brain implants की तुलना में कम जोखिम वाला विकल्प प्रदान करता है
- यह OpenBCI का नवीनतम product है जो VR headset functionality और BCI को जोड़ता है
- यह time-synchronized physiological data streams, spatial position sensors और eye tracking प्रदान करता है
- Unity या Unreal में sensor data का उपयोग किया जा सकता है
- यह open source platform के रूप में उपलब्ध है, जिससे researchers के innovation को support मिलता है
-
PGLite
- यह PostgreSQL database का WASM build है
- Linux virtual machine के बिना web browser में सीधे चलाया जा सकता है
- memory में temporary database बनाया जा सकता है या indexedDB के माध्यम से disk persistence दी जा सकती है
- Electric के साथ PostgreSQL-आधारित reactive local-first applications बनाए जा सकते हैं
-
SpinKube
- यह Kubernetes पर WebAssembly के लिए open source serverless runtime है
- WebAssembly के millisecond-level startup time के कारण on-demand workloads के लिए अधिक dynamic और flexible serverless solution प्रदान करता है
- WebAssembly-आधारित workloads के development और deployment को सरल बनाता है
-
Unblocked
- यह SDLC assets और artifacts के लिए search tool है
- ALM और collaboration tools के साथ integrate होकर codebase और संबंधित resources को समझने में मदद करता है
- code के लिए तुरंत और relevant context प्रदान करता है, जिससे complex systems को navigate करना और समझना आसान होता है
- engineering teams को work-related discussions, assets और documents तक सुरक्षित पहुँच मिलती है
- experienced team members के ज्ञान को capture और share करता है ताकि सभी सदस्य उसका उपयोग कर सकें
Hold : कोई नहीं
[Tools]
Adopt
-
Bruno
- Bruno, API testing, development और debugging के लिए Postman और Insomnia का open source desktop alternative है
- इसका simple offline-only design बेहतर collaboration, privacy और security प्रदान करने का लक्ष्य रखता है
- collections को Bru Lang नामक user-defined plain text markup language में लिखा जाता है और सीधे file system में store किया जाता है; इन्हें Git या चुने गए version control tool के साथ share करके collaboration किया जा सकता है
- यह desktop app और CLI tool के रूप में उपलब्ध है, official VS Code extension प्रदान करता है, और अतिरिक्त IDE support की योजना है
- यह कई Thoughtworks teams की default choice बन चुका है, लेकिन VPN और proxy environments में काम करते समय requests के अप्रत्याशित रूप से fail होने की reports मिली हैं, इसलिए सावधानी आवश्यक है
-
K9s
- K9s ने अधिक विस्तृत graphs और views को integrate करके visualization capabilities में सुधार किया है
- अब यह logs और metrics को बेहतर ढंग से दिखाता है और custom resources (CRD) को अधिक flexibility के साथ प्रदर्शित करता है
- pods पर operations का विस्तार किया गया है, debugging tools (जैसे
kubectl debug) के साथ integration को मजबूत किया गया है, और multi-cluster environments के लिए support बेहतर हुआ है - CRD support में बड़ा सुधार हुआ है, जिससे अब इन resources को बेहतर ढंग से explore और manage किया जा सकता है और custom resources के साथ interaction अधिक seamless हो गया है
- shortcut panel में भी सुधार किया गया है, जिससे
kubectlसे परिचित न होने वाले developers के लिए इसे उपयोग करना आसान हो गया है - क्योंकि K9s शुरू में मुख्य रूप से DevOps teams पर केंद्रित था, इसलिए यह एक महत्वपूर्ण सुधार है
-
SOPS
- SOPS एक encrypted file editor है जो KMS के साथ encryption के लिए कई तरह के file formats को support करता है
- secret management के लिए हमारी सलाह हमेशा यही रही है कि उन्हें source code से अलग रखा जाए
- लेकिन infrastructure as code की भावना में, जब पूरी automation और seed secrets को manage, seed और rotate करने के लिए vault जैसे tools के साथ कुछ manual steps के बीच चुनाव करना पड़ता है, तो टीमों को अक्सर समझौता करना पड़ता है
- उदाहरण के लिए, हमारी टीम infra bootstrap के लिए seed credentials को manage करने के लिए SOPS का उपयोग करती है
- लेकिन कुछ स्थितियों में legacy code repositories से secrets को हटाया नहीं जा सकता
- ऐसे मामलों में हम text files में secrets को encrypt करने के लिए SOPS का उपयोग करते हैं
- SOPS encryption keys के source के रूप में AWS और GCP key management services (KMS) या Azure Key Vault जैसे cloud-managed key stores के साथ integrate होता है
- यह cross-platform भी काम करता है और PGP keys को support करता है
- जब code repositories में secrets को manage करना जरूरी होता है, तो हमारी कई टीमें default रूप से SOPS का उपयोग करती हैं
-
Visual regression testing tools
- हमने पहले visual regression testing tools पर जोर दिया था और देखा है कि algorithms raw pixel-level comparison से विकसित होकर sophisticated pattern matching और optical character recognition (OCR) तक पहुंच गए हैं
- शुरुआती visual regression testing tools बहुत सारे false positives पैदा करते थे और केवल development के बाद के चरणों में उपयोगी थे, जब interface स्थिर हो चुका होता था
- BackstopJS selectors और viewports को configure करके page के specific elements पर सटीक visual tests चलाकर इस समस्या से बचता है
- लेकिन machine learning ने visual elements को अधिक सटीकता से detect और compare करना आसान बना दिया है, भले ही वे खिसक गए हों या उनमें dynamic content शामिल हो
- ये tools लगातार अधिक उपयोगी होते गए हैं और AI तथा machine learning में हाल की प्रगति का लाभ उठाने की अच्छी स्थिति में हैं
- Applitools और Percy जैसे कई commercial tools अब visual regression testing में AI का उपयोग करने का दावा करते हैं
- हमारी एक टीम Applitools Eyes का व्यापक रूप से उपयोग करती रही है और उसके परिणामों से संतुष्ट है
- visual regression testing अच्छी तरह लिखे गए end-to-end functional tests का विकल्प नहीं हो सकती, लेकिन यह testing toolbox में एक मूल्यवान जोड़ है
- हम इसे अपना रहे हैं क्योंकि यह एक व्यापक UI testing strategy के एक हिस्से के रूप में सुरक्षित default विकल्प बन गया है
-
Wiz
- Wiz कई projects में cloud security platform के रूप में चुना गया है
- हमारी टीमें इस बात की सराहना करती हैं कि यह changes को लगातार inspect करके समान tools की तुलना में risk और threats को अधिक तेजी से detect कर सकता है
- Wiz live environment में deploy न किए गए artifacts (container images, infrastructure code) और live workloads (containers, VM और cloud services) दोनों में misconfigurations, vulnerabilities और leaked secrets को detect और alert कर सकता है
- हम development teams और leadership, दोनों के लिए इसकी मजबूत reporting capabilities की भी सराहना करते हैं
- यह analysis यह समझने में मदद करता है कि vulnerabilities किसी specific service को कैसे प्रभावित कर सकती हैं, ताकि उस संदर्भ में समस्या का समाधान किया जा सके
Trial
-
AWS Control Tower
- AWS Control Tower multi-team environments में AWS accounts को manage करने के लिए सबसे अच्छे विकल्प के रूप में बना हुआ है
- यह security और compliance controls को preconfigure करने का एक सुविधाजनक mechanism देता है, जिन्हें नए landing zones पर अपने-आप लागू किया जाएगा
- यह "change के समय compliance" का एक उदाहरण है, जहां हर बार नया infrastructure बनाए जाने पर controls लागू और verify किए जाते हैं, जिससे बाद में manual compliance checks की जरूरत नहीं रहती
- AWS Control Tower Account Factory for Terraform(AFT) पिछले volume के बाद से लगातार विकसित हुआ है और अब अधिक AWS regions में उपलब्ध है
- AFT के साथ infrastructure code pipelines के जरिए Control Tower accounts को provision किया जा सकता है
- हमें यह पसंद है कि AFT को webhooks भेजने या specific actions करने के लिए customize किया जा सकता है, ताकि GitHub Actions जैसे external tools के साथ सुरक्षित रूप से integrate किया जा सके
- हमारी टीमों ने AWS Control Tower का उपयोग करके accounts manage करने में बड़ी सफलता हासिल की है, लेकिन जब भी सुधार की गुंजाइश हो, हम चाहते हैं कि AWS इस project में community contributions को स्वीकार करे
-
CCMenu
- continuous integration का पालन करने वाली टीमों के लिए यह महत्वपूर्ण है कि वे CI system से central build की स्थिति को लगातार जानती रहें
- महामारी से पहले team room में बड़े TV screens पर dashboards एक नजर में यह जानकारी दे देते थे
- remote work के जारी रहने के साथ अब ऐसे solution की जरूरत है जो individual developer workstations पर काम करे
- Mac पर इस कमी को CCMenu नाम का एक छोटा app पूरा करता है, जिसे एक Thoughtworker ने बनाया है
- मूल रूप से CruiseControl का हिस्सा रहा यह app Jenkins और TeamCity सहित उन सभी servers के साथ काम करता है जो cctray format में जानकारी दे सकते हैं
- हाल ही में इसे फिर से लिखा गया है, जिससे GitHub Actions के लिए support जुड़ा है और अधिक CI servers तथा authentication styles के साथ गहरे integration का रास्ता खुला है
-
ClickHouse
- ClickHouse real-time analytics के लिए एक open source column-oriented online analytical processing (OLAP) database है
- 2009 में एक experimental project के रूप में शुरू होकर यह एक high-performance, linearly scalable analytical database के रूप में परिपक्व हो चुका है
- अपने efficient query processing engine और data compression capabilities की वजह से यह pre-aggregation के बिना interactive queries चलाने के लिए उपयुक्त है
- ClickHouse OpenTelemetry data को store करने के लिए एक अच्छा विकल्प है
- Jaeger के साथ integration के जरिए यह बड़ी मात्रा में tracing data को store और कुशलतापूर्वक analyze कर सकता है
-
Devbox
- development tools में प्रगति के बावजूद, कई टीमों के लिए consistent local development environments बनाए रखना अब भी एक चुनौती है
- नए engineers को onboard करने के लिए अक्सर commands या custom scripts चलानी पड़ती हैं, जो अलग-अलग systems पर अप्रत्याशित रूप से fail हो सकती हैं, और इससे असंगति पैदा हो सकती है
- इस समस्या को हल करने के लिए हमारी टीमें बढ़ते हुए Devbox पर निर्भर हो रही हैं
- Devbox एक command-line tool है जो virtual machines या containers का उपयोग किए बिना Nix package manager की मदद से reproducible, project-specific local development environments बनाने के लिए एक सुलभ interface प्रदान करता है
- किसी codebase के लिए एक बार configure हो जाने के बाद, नए device पर परिभाषित environment को फिर से बनाने के लिए केवल एक CLI command (
devbox shell) की जरूरत होती है, जिससे onboarding workflow काफी सरल हो जाता है - Devbox VSCode के साथ integrate करने के लिए shell hooks, custom scripts और
devcontainer.jsongeneration को support करता है
-
Difftastic
- Difftastic एक ऐसा tool है जो syntax-aware तरीके से code files के बीच differences को highlight करता है
- यह Unix
diffcommand जैसे text diff tools से काफी अलग है - उदाहरण के लिए, Difftastic Java या TypeScript जैसी semicolon-delimited languages में लंबे statements को तोड़ने के लिए डाले गए line breaks को नजरअंदाज करता है
- यह tool केवल उन changes को highlight करता है जो program syntax को प्रभावित करते हैं
- इसके लिए यह पहले files को abstract syntax trees में parse करता है और फिर Dijkstra algorithm का उपयोग करके trees के बीच की दूरी की गणना करता है
- हमने पाया है कि बड़े codebases की review करते समय changes को समझने में Difftastic खास तौर पर उपयोगी है
- Difftastic किसी भी programming language के साथ उपयोग किया जा सकता है जिसके लिए parser उपलब्ध हो, और यह default रूप से 50 से अधिक programming languages के साथ CSS और HTML जैसे structured text formats को support करता है
- यह कोई नया tool नहीं है, लेकिन हमें लगता है कि LLM coding assistants के दौर में, जहां human-in-the-loop review तेजी से महत्वपूर्ण हो रही है, यह विशेष ध्यान देने योग्य है
-
LinearB
- सॉफ्टवेयर इंजीनियरिंग इंटेलिजेंस प्लेटफ़ॉर्म LinearB, इंजीनियरिंग लीडर्स को निरंतर सुधार में मदद के लिए डेटा-आधारित insights प्रदान करता है
- यह benchmarking, workflow automation, और developer experience तथा productivity में सुधार के लिए लक्षित निवेश जैसे प्रमुख क्षेत्रों को संरेखित करता है
- LinearB के उपयोग का अनुभव इंजीनियरिंग टीमों के भीतर सुधार और दक्षता की संस्कृति बनाने की इसकी क्षमता को उजागर करता है
- हमारी टीम ने इस प्लेटफ़ॉर्म का उपयोग करके मुख्य engineering metrics को ट्रैक किया, सुधार की आवश्यकता वाले क्षेत्रों की पहचान की, और evidence-based actions लागू किए
- ये क्षमताएँ LinearB के मुख्य value proposition — benchmarking, metrics collection automation, और data-driven improvement को सक्षम करना — के साथ अच्छी तरह मेल खाती हैं
- LinearB source code, application lifecycle, CI/CD और communication tools के साथ integrate होता है, और preconfigured engineering metrics तथा custom engineering metrics का उपयोग करके developer experience, productivity और team performance पर व्यापक मात्रात्मक insights प्रदान करता है
- DORA समर्थकों के रूप में, हम इस बात की सराहना करते हैं कि LinearB इन विशेष metrics पर ज़ोर देता है और software delivery performance के उन प्रमुख पहलुओं को मापने की क्षमता बढ़ाता है जो दक्षता सुधार के लिए आवश्यक हैं
- ऐतिहासिक रूप से, टीमों को DORA-विशिष्ट metrics एकत्र करने में कठिनाई हुई है, और वे अक्सर जटिल custom dashboards या manual processes पर निर्भर रही हैं
- LinearB इन metrics की tracking को automate करके और developer experience, productivity तथा predictability पर proactive decision-making को समर्थन देने वाला real-time data प्रदान करके एक आकर्षक समाधान देता रहा है
-
pgvector
- pgvector, PostgreSQL के लिए एक open source vector similarity search extension है, जो एक ही अच्छी तरह से स्थापित database में structured data के साथ vectors को store करने की सुविधा देता है
- हालांकि इसमें specialized vector databases की कुछ उन्नत क्षमताओं की कमी है, लेकिन यह ACID compliance, point-in-time recovery और PostgreSQL की अन्य मजबूत विशेषताओं का लाभ देता है
- generative AI आधारित applications की वृद्धि के साथ, हम देख रहे हैं कि embeddings vectors को store करने और similarity के लिए कुशलतापूर्वक retrieve करने का पैटर्न बढ़ रहा है, जिसे pgvector प्रभावी रूप से संबोधित करता है
- production environments में pgvector के बढ़ते उपयोग, खासकर उन टीमों में जो पहले से managed PostgreSQL देने वाले cloud providers का उपयोग कर रही हैं, और अलग vector store की आवश्यकता के बिना सामान्य vector search जरूरतों को पूरा करने की इसकी सिद्ध क्षमता को देखते हुए, हमें pgvector की संभावना पर भरोसा है
- हमारी टीम ने इसे structured और unstructured data की तुलना करने वाली परियोजनाओं में उपयोगी पाया है, जो व्यापक अपनाने की संभावना दिखाता है
- इसलिए हम pgvector को trial चरण में ले जा रहे हैं
-
Snapcraft build tool
- Snapcraft, Ubuntu, अन्य Linux distributions और macOS पर snap कहलाने वाले self-contained applications को build और package करने के लिए एक open source command-line tool है
- snaps को Linux computers, virtual environments और vehicles के onboard computer systems सहित hardware platforms पर आसानी से deploy और maintain किया जा सकता है
- Snapcraft snap publishing के लिए एक public app store देता है, लेकिन हमारी टीम build tool का उपयोग autonomous driving systems को snap के रूप में package करने के लिए करती है, बिना उन्हें public app store में publish किए
- इससे embedded software systems को locally build, test और debug करना संभव होता है, साथ ही उन्हें internal artifact repository में publish भी किया जा सकता है
-
Spinnaker
- Spinnaker, Netflix द्वारा बनाया गया एक open source continuous delivery platform है
- यह first-class feature के रूप में cluster management और baked images को cloud पर deploy करने की क्षमता प्रदान करता है
- हमें microservices deploy करने के लिए Spinnaker का opinionated approach पसंद है
- पहले के versions में हमने यह इंगित किया था कि pipelines को code के रूप में configure नहीं किया जा सकता, लेकिन spin CLI के जुड़ने से यह समस्या हल हो गई है
- हम सरल CD scenarios के लिए Spinnaker की सिफारिश नहीं करते, लेकिन जटिल परिस्थितियों में यह समान रूप से जटिल deployment pipelines के साथ कई लोगों का पसंदीदा tool बन गया है
-
TypeScript OpenAPI
- TypeScript OpenAPI (या tsoa), code से OpenAPI specification generate करने के लिए Swagger का एक विकल्प है
- यह code-first है, TypeScript controllers और models को single source of truth के रूप में उपयोग करता है, और TypeScript में OpenAPI tooling इस्तेमाल करते समय अधिक जटिल files और configuration की ज़रूरत के बजाय TypeScript annotations या decorators का उपयोग करता है
- यह 2.0 और 3.0 दोनों API specifications generate करता है और Express, Hapi तथा Koa के लिए routes बना सकता है
- अगर आप TypeScript में API लिखते हैं, तो इस project को देखना उपयोगी होगा
-
Unleash
- जहाँ तक संभव हो, सबसे सरल feature toggles का उपयोग करना हमारा अनुशंसित approach बना हुआ है, लेकिन टीम के आकार में वृद्धि और तेज़ development के कारण manually बनाए गए toggle management अधिक जटिल हो गए हैं
- Unleash इस जटिलता को हल करने और CI/CD को सक्षम करने के लिए हमारी टीमों में व्यापक रूप से उपयोग किया जाने वाला विकल्प है
- इसे service के रूप में उपयोग किया जा सकता है या self-host भी किया जा सकता है
- यह कई भाषाओं में SDKs प्रदान करता है और developer experience तथा management के लिए एक परिचित UI देता है
- OpenFeature specification के लिए आधिकारिक support अभी नहीं है, लेकिन Go और Java के लिए community-maintained providers मिल सकते हैं
- Unleash सिर्फ सरल feature toggles के लिए ही नहीं, बल्कि segmentation और gradual rollouts के लिए भी उपयोग किया जा सकता है, इसलिए यह scale पर feature management के लिए एक उपयुक्त विकल्प है
Assess
-
Astronomer Cosmos
- Astronomer Cosmos, एक Airflow plugin है जिसे Airflow में dbt core workflows के लिए अधिक native support देने के लिए डिज़ाइन किया गया है
- plugin install होने पर, DbtDag dbt workflow को wrap करते समय dbt nodes को Airflow tasks/task groups में बदल देता है, जिससे engineers सीधे Airflow UI में dbt dependency graph और execution progress को visualize कर सकते हैं
- यह dbt profiles के बजाय Airflow connections का उपयोग भी सक्षम करता है, जिससे configuration sprawl कम हो सकता है
- हम इस tool के साथ प्रयोग कर रहे हैं क्योंकि इसमें Airflow में dbt workflows को अधिक seamless बनाने की क्षमता है
-
ColPali
- ColPali, vision language models का उपयोग करके PDF documents search करने के लिए एक नया tool है, जो images, diagrams और tables वाले multimedia documents से data निकाल सकने वाले मजबूत retrieval-augmented generation (RAG) applications बनाने की कठिनाई को संबोधित करता है
- text-based embeddings या optical character recognition (OCR) तकनीकों पर निर्भर पारंपरिक तरीकों के विपरीत, ColPali पूरे PDF pages को process करता है और visual transformers का उपयोग करके ऐसे embeddings बनाता है जो text और visual content दोनों को ध्यान में रखते हैं
- यह समग्र approach न केवल बेहतर retrieval संभव बनाता है, बल्कि यह तर्क करने की क्षमता भी देता है कि कोई विशेष document क्यों retrieve हुआ, और data-rich PDFs के लिए RAG performance को काफी बेहतर बनाता है
- हमने कई clients के साथ ColPali का परीक्षण किया है और इसने आशाजनक परिणाम दिखाए हैं, लेकिन यह तकनीक अभी भी शुरुआती चरण में है
- खासकर जटिल visual document data वाले संगठनों के लिए इसका मूल्यांकन करना उचित है
-
Cursor
- AI-assisted programming tools में प्रतिस्पर्धा जारी है, और उनमें सबसे उल्लेखनीय Cursor है
- Cursor एक AI-first code editor है, जिसे coding workflows में AI को गहराई से integrate करके developer productivity बढ़ाने के लिए डिज़ाइन किया गया है
- हमने पिछले Radar आकलन में Cursor पर ध्यान दिया था, लेकिन अब यह स्पष्ट है कि Cursor में हालिया निरंतर सुधारों ने गुणात्मक बदलाव ला दिया है
- हमारे उपयोग में, Cursor ने मौजूदा codebase के आधार पर मजबूत context inference capabilities दिखाई हैं
- जहाँ GitHub Copilot जैसे अन्य AI code tools code snippets generate करने और सहयोग करने की ओर झुकते हैं, वहीं Cursor की multi-line और multi-file editing actions इसे अलग बनाती हैं
- Cursor, VSCode से fork किया गया है और उसी पर विकसित किया गया है, और यह developers की सहज समझ के अनुरूप तेज़ और intuitive interaction methods प्रदान करता है
- शक्तिशाली actions को ctrl/cmd+K और ctrl/cmd+L से पूरा किया जा सकता है
- developer interaction और codebase understanding के संदर्भ में Cursor, AI programming tools की नई प्रतिस्पर्धा का नेतृत्व कर रहा है
-
Data Mesh Manager
- Data Mesh Manager एक सामान्य data mesh platform की metadata layer प्रदान करता है
- खास तौर पर यह data product की परिभाषा और data contract specifications पर फोकस करने के लिए OpenContract initiative का उपयोग करता है, और जुड़े हुए DataContract CLI का इस्तेमाल करके इसे build pipeline में इंटीग्रेट किया जा सकता है
- यह application data products और उनके metadata को खोजने और एक्सप्लोर करने के लिए data catalog भी प्रदान करता है, और data quality metrics की परिभाषा तथा data quality rules के management सहित federated governance की अनुमति देता है
- यह इस क्षेत्र में सामने आए पहले purpose-built tools में से एक है, जो मौजूदा platforms को data mesh paradigm के हिसाब से फिर से ढालने की कोशिश नहीं करता
-
GitButler
- Git का command-line interface शक्तिशाली और उपयोगी है, लेकिन कई branches को मैनेज करना और उनके भीतर commits को stage करना बहुत जटिल होने के लिए बदनाम है
- GitButler एक Git client है जो इस प्रक्रिया को सरल बनाने के उद्देश्य से graphical interface प्रदान करता है
- यह Git से स्वतंत्र रूप से uncommitted file changes को track करता है और फिर उन changes को virtual branches में stage करता है
- यह तर्क दिया जा सकता है कि यह ऐसी समस्या का समाधान है जो शुरू से होनी ही नहीं चाहिए थी। अगर आप छोटे बदलाव बार-बार करते हैं और trunk पर push करते हैं, तो कई branches की ज़रूरत नहीं पड़ती
- लेकिन अगर workflow में pull requests शामिल हैं, खासकर तब जब PR merge होने से पहले review cycle लंबा हो, तो branching structure जटिल हो सकता है
- इसे हल करने के लिए GitButler GitHub के साथ integrate होता है, ताकि changes को चुनिंदा रूप से pull requests में समूहित किया जा सके और सीधे tool से जारी किया जा सके
- GitButler, PR process में निहित जटिलता को मैनेज करने वाली बढ़ती blip category में एक और प्रविष्टि है
-
JetBrains AI Assistant
- JetBrains AI Assistant एक coding assistant है, जिसे code completion, test generation और style guide compliance में सहायता देने के लिए सभी JetBrains IDEs के साथ सहज रूप से integrate होने के लिए डिज़ाइन किया गया है
- यह OpenAI और Google Gemini जैसे models पर आधारित है, और भविष्य के sessions के लिए coding style को याद रखकर consistent output सुनिश्चित करने की क्षमता के कारण अलग नज़र आता है
- हमारे developers को इसकी test generation feature खास तौर पर उपयोगी लगी, और उन्होंने stability issues के बिना लंबा output संभालने की इसकी क्षमता पर ध्यान दिया
- हालांकि, कुछ competitors के विपरीत JetBrains अपने models खुद host नहीं करता, इसलिए third-party data processing को लेकर चिंतित ग्राहकों के लिए यह उपयुक्त नहीं हो सकता
- फिर भी, JetBrains IDEs के साथ इसका integration इसे AI-powered coding assistants को explore करने वाली teams के लिए एक आशाजनक विकल्प बनाता है
-
Mise
- polyglot environments में काम करने वाले developers को अक्सर अलग-अलग languages और tools के कई versions मैनेज करने पड़ते हैं
- mise का लक्ष्य इस समस्या को एक ही tool देकर हल करना है, जो nvm, pyenv, rbenv, rustup आदि की जगह ले सकता है और asdf का विकल्प बन सकता है
- Mise shell interaction speed के लिए Rust में लिखा गया है, और shell-based shim का उपयोग करने वाले asdf के विपरीत, mise PATH environment variable को पहले से modify करता है ताकि tool execution time पर direct invocation हो
- यही उन कारणों में से एक है जिनसे mise, asdf से तेज है
- जो developers पहले से asdf से परिचित हैं, उनके लिए mise वही functionality देता है, लेकिन कुछ महत्वपूर्ण अंतर के साथ
- Rust में लिखा होने के कारण यह तेज है और इसमें कुछ features हैं जो asdf में नहीं हैं। उदाहरण के लिए, यह एक ही tool के कई versions को एक साथ install कर सकता है और fuzzy matching सहित अधिक उदार commands प्रदान करता है
- यह एक integrated task runner भी देता है, जो linters, tests, builders, servers और project-specific अन्य tasks चलाने में उपयोगी है
- अगर आप development environment को मैनेज करने के लिए कई tools इस्तेमाल करने से और दूसरे tools के कभी-कभी अटपटे syntax से थोड़ा थक चुके हैं, तो mise को देखना निश्चित रूप से सार्थक है
-
Mockoon
- Mockoon एक open source API mocking tool है
- यह intuitive interface, customizable routes और dynamic responses के साथ-साथ mock datasets के generation को automate करने की क्षमता भी प्रदान करता है
- Mockoon OpenAPI के साथ compatible है और ऐसे विभिन्न scenarios बना सकता है जिन्हें locally test किया जा सके और development pipeline में integrate किया जा सके
- requests को intercept करके और केवल Mockoon में defined calls को fake बनाकर आप "partial mock" भी बना सकते हैं
- partial mock खास API routes या endpoints को simulate करने और बाकी requests को real server तक पहुँचाने में मदद करता है
- partial mock कुछ खास scenarios में उपयोगी हो सकता है, लेकिन इसका अत्यधिक उपयोग अनावश्यक जटिलता का जोखिम पैदा कर सकता है
- इसके अलावा, Mockoon mock APIs को जल्दी सेट अप करने तथा development workflow को बेहतर और automate करने के लिए एक उपयोगी tool बना रहता है
-
Raycast
- Raycast एक macOS premium launcher है, जो keyboard से applications को जल्दी launch करने, commands चलाने, files खोजने और tasks automate करने की सुविधा देता है
- हमारी टीम ने developers के लिए इसकी built-in features और VSCode, Slack, Jira, Google जैसी third-party apps और services के साथ interaction के लिए इसकी आसान extensibility की सराहना की
- Raycast productivity पर केंद्रित है और context switching को कम करके रोज़मर्रा के कामों को सरल बनाना चाहने वालों के लिए उपयोगी tool है
- Pro users एक विशेष AI-powered search assistant, Raycast AI, तक पहुँच प्राप्त कर सकते हैं
-
ReadySet
- ReadySet MySQL और PostgreSQL के लिए एक query cache है
- manual invalidation पर निर्भर पारंपरिक caching solutions के विपरीत, ReadySet database replication stream का उपयोग करके cache को क्रमिक रूप से update करता है
- partial view materialization के ज़रिए ReadySet मौजूदा read replicas की तुलना में कम tail latency हासिल करता है
- ReadySet, MySQL और PostgreSQL के साथ wire-compatible है, इसलिए इसे application में बदलाव किए बिना database के सामने deploy करके read workloads को horizontally scale किया जा सकता है
-
Rspack
- web-based frontend पर काम करने वाली हमारी कई teams ने Webpack जैसे पुराने bundling tools से Vite की ओर रुख किया है
- इस क्षेत्र में नया entrant Rspack है, जिसका 1.0 version 18 महीने के development के बाद जारी हुआ है
- इसे Webpack के replacement के रूप में डिज़ाइन किया गया है और यह Webpack ecosystem के plugins और loaders के साथ compatible है
- जटिल Webpack configurations को migrate करते समय यह Vite की तुलना में लाभ हो सकता है
- हमारी teams के Vite और Rspack जैसे आधुनिक tools पर migrate करने का मुख्य कारण developer experience, खासकर speed, है
- अपने आखिरी code change पर feedback पाने से पहले 1–2 मिनट इंतज़ार करने से ज़्यादा development flow को कुछ भी नहीं तोड़ता
- Rust में लिखा गया Rspack, Webpack की तुलना में कहीं तेज performance देता है और कई मामलों में Vite से भी तेज है
-
Semantic Router
- LLM-based applications बनाते समय, requests को किसी खास agent तक route करना या किसी विशेष flow को invoke करने से पहले user intent तय करना महत्वपूर्ण होता है
- Semantic Router, LLMs और agents के लिए एक ultra-fast decision layer की तरह काम करता है, जिससे semantic meaning के आधार पर requests को कुशलतापूर्वक और भरोसेमंद तरीके से route किया जा सकता है
- vector embeddings का उपयोग करके intent infer करने से Semantic Router अनावश्यक LLM calls को कम करता है और intent समझने के लिए अधिक सरल और cost-effective approach प्रदान करता है
- इसकी क्षमता intent inference से आगे बढ़कर विभिन्न semantic tasks के लिए एक versatile component के रूप में भी फैलती है
- अपनी speed और flexibility के कारण, यह उन environments में एक मजबूत दावेदार बनता है जहाँ LLM के overhead के बिना तेज और real-time decision-making की ज़रूरत होती है
-
सॉफ़्टवेयर इंजीनियरिंग एजेंट
- इस समय GenAI क्षेत्र में सबसे चर्चित विषयों में से एक सॉफ़्टवेयर इंजीनियरिंग एजेंट की अवधारणा है
- ये coding support tools इंजीनियरों को इधर-उधर code snippets लिखने से कहीं अधिक काम करने में सक्षम बनाते हैं। ये उन समस्याओं के आकार का विस्तार करते हैं जिन्हें हल किया जा सकता है, और आदर्श रूप से स्वायत्त रूप से तथा न्यूनतम मानवीय हस्तक्षेप के साथ काम करते हैं
- विचार यह है कि ये tools GitHub issues या Jira tickets लेकर plans और code changes सुझा सकते हैं, या यहाँ तक कि इंसानों द्वारा review किए जाने के लिए pull requests भी बना सकते हैं
- यह AI coding support के प्रभाव को बढ़ाने की अगली तार्किक कड़ी है, लेकिन अक्सर प्रचारित किया जाने वाला वह लक्ष्य कि सामान्य एजेंट व्यापक coding tasks संभाल सकें, बहुत महत्वाकांक्षी है, और tooling की वर्तमान स्थिति इसे भरोसेमंद रूप से नहीं दिखाती
- फिर भी, हमें लगता है कि अधिक जटिल समस्याओं के लिए developer समय खाली कराने हेतु सीमित दायरे वाले सरल कार्यों में यह जल्द ही काम कर सकता है
- जिन tools में agents के beta versions जारी हुए हैं, उनमें GitHub Copilot Workspace, qodo flow, JIRA के लिए Tabnine agent, Amazon Q Developer आदि शामिल हैं
- SWE Bench benchmark इस क्षेत्र के और भी tools को सूचीबद्ध करता है, लेकिन AI क्षेत्र के benchmarks को थोड़े संदेह के साथ देखने की सलाह दी जाती है
-
uv
- Rust अपनी तेज़ startup performance के कारण command-line tools लिखने के लिए उपयुक्त है, और हम लोगों को कुछ toolchains को Rust में फिर से लिखते हुए देख रहे हैं
- पिछले Radar में हमने Ruff का उल्लेख किया था, जो Rust में लिखा गया Python linter है
- इस volume में हमने uv का मूल्यांकन किया, जो Rust में लिखा गया Python package management tool है
- uv का value proposition है “बेहद तेज़”, और benchmarks में यह अन्य Python package management tools से काफी आगे निकलता है
- हालांकि, Radar मूल्यांकन के दौरान हमने इस पर चर्चा की कि build tools के लिए seconds के स्तर पर optimization करना क्या वास्तव में सीमांत सुधार है
- performance से भी अधिक, package management systems के लिए ecosystem, परिपक्व community और long-term support अधिक महत्वपूर्ण हैं
- फिर भी, project teams से मिले feedback ने दिखाया कि यह छोटा performance improvement feedback cycle और समग्र developer experience को बेहतर बनाने में बहुत मदद कर सकता है — हम अक्सर ऐसे छोटे performance gains के लिए manual CI/CD caching को बहुत जटिल बना देते हैं; uv Python environment management को सरल बनाता है
- Python development के लिए package और env management में अभी भी काफी सुधार की गुंजाइश है, इसलिए हमें लगता है कि uv एक ऐसा विकल्प है जिसका मूल्यांकन किया जाना चाहिए
-
Warp
- Warp macOS और Linux के लिए एक terminal है
- यह readability बढ़ाने के लिए command output को blocks में विभाजित करता है
- Warp में intelligent command suggestions और natural language processing जैसी AI-आधारित सुविधाएँ शामिल हैं
- इसमें notebook सुविधाएँ भी शामिल हैं, जिनसे उपयोगकर्ता commands और outputs को व्यवस्थित कर सकते हैं और annotations व explanations जोड़ सकते हैं
- इन सुविधाओं का उपयोग करके README files या onboarding materials बनाए जा सकते हैं, और terminal workflows को संरचित तथा interactive तरीके से प्रस्तुत और प्रबंधित किया जा सकता है
- Warp, Starship के साथ आसानी से integrate होता है, जो एक flexible cross-shell prompt है; इसके जरिए चल रही processes, उपयोग में लिए जा रहे tools के specific versions, Git details या current Git user जैसी जानकारी लेकर terminal experience को customize किया जा सकता है
-
Zed
- Atom text editor project बंद होने के बाद उसके निर्माताओं ने Zed नाम का नया editor बनाया
- Rust में लिखा गया और modern hardware का लाभ उठाने के लिए optimized Zed तेज़ महसूस होता है
- इसमें वे सभी सुविधाएँ हैं जिनकी एक आधुनिक editor से अपेक्षा की जाती है, जैसे कई programming languages का support, built-in terminal, multi-buffer editing आदि
- AI-assisted coding कई LLM providers के साथ integration के जरिए उपलब्ध है
- उत्साही pair programmers के रूप में हम Zed में built-in remote collaboration सुविधाओं से प्रभावित हुए
- developers GitHub ID के माध्यम से एक-दूसरे को खोज सकते हैं और फिर real time में उसी workspace में collaboration कर सकते हैं
- यह तय करना अभी जल्दबाज़ी होगी कि development teams Visual Studio Code ecosystem के आकर्षण से बाहर निकल सकती हैं और निकलना चाहती भी हैं या नहीं
- लेकिन Zed एक ऐसा विकल्प है जिसे ज़रूर explore किया जा सकता है
Hold
- CocoaPods
- CocoaPods, Swift और Objective-C Cocoa projects में लंबे समय से लोकप्रिय dependency management tool रहा है
- यह 10 साल से अधिक समय तक iOS और macOS developers के लिए एक महत्वपूर्ण tool रहा है
- CocoaPods team ने अब घोषणा की है कि project maintenance mode में जा रहा है और active development बंद कर दिया जाएगा
- CocoaPods tool और उससे जुड़े resources उपलब्ध रहेंगे, लेकिन नए features या improvements नहीं किए जाएँगे
- developers को Swift Package Manager पर migration की सिफारिश की जा रही है
- Swift Package Manager, Xcode के साथ native integration देता है और Apple से long-term support मिलने की संभावना रखता है
[Language and Frameworks]
Adopt
-
dbt
- ELT pipelines में data transformation लागू करने के लिए इसे एक मजबूत और विवेकपूर्ण विकल्प माना जाता है
- हमें यह पसंद है कि यह engineering rigor को संभव बनाता है और SQL-आधारित transformations में modularity, testability और reusability जैसी practices को सक्षम करता है
- यह Snowflake, BigQuery, Redshift, Databricks, Postgres जैसे कई cloud data warehouses, lakehouses और databases के साथ अच्छी तरह integrate होता है, और इसके आसपास community packages का स्वस्थ ecosystem मौजूद है
- हाल ही में जोड़े गए unit testing के लिए native support (dbt core 1.8+ और हाल ही में शुरू किया गया dbt Cloud “versionless” experience) toolbox में इसकी स्थिति को और मजबूत करते हैं
- नई unit testing सुविधा के साथ static test data को आसानी से define किया जा सकता है, output expectations सेट की जा सकती हैं, और pipeline के incremental तथा full refresh modes दोनों का test किया जा सकता है, जिसे teams बहुत महत्व देती हैं
- कई मामलों में इससे समान गुणवत्ता बनाए रखते हुए custom scripts को हटाया जा सका
-
Testcontainers
- Testcontainers को test execution के लिए भरोसेमंद environment बनाने के एक उपयोगी default option के रूप में अनुभव किया गया है
- यह कई भाषाओं में port की गई library है, जो सामान्य test dependencies को Dockerize करती है, जिनमें विभिन्न प्रकार के databases, queue technologies, cloud services और web browsers जैसी UI test dependencies शामिल हैं; आवश्यकता पड़ने पर custom Dockerfiles भी चलाए जा सकते हैं
- हाल ही में इसका desktop version जारी किया गया है, जो test sessions के visual management और अधिक जटिल scenarios के management की सुविधाएँ देता है, और teams ने इसे बहुत उपयोगी पाया है
Trial
-
CAP
- यह एक .NET library है जो distributed messaging systems में database updates और event publication को atomic तरीके से करने के लिए Outbox pattern को implement करती है
- यह उसी database transaction में events publish करने के इरादे को रिकॉर्ड करके समस्या का समाधान करती है
- यह कई databases और messaging platforms को support करती है और at-least-once delivery की गारंटी देती है, इसलिए उपयोगी है
-
CARLA
- यह एक open source autonomous driving research simulator है, जिसका उपयोग production deployment से पहले autonomous driving systems की testing के लिए किया जाता है
- यह vehicles, terrain, humans, animals आदि के 3D models को लचीले ढंग से बनाने और पुन: उपयोग करने की सुविधा देता है, जिससे विभिन्न scenarios का simulation संभव होता है
- autonomous driving systems को इन dynamic objects को पहचानना होता है और brake जैसी उचित कार्रवाई करनी होती है
- इसका उपयोग autonomous driving systems के निरंतर development और testing में किया जाता है
-
Databricks Asset Bundles
- अप्रैल 2024 में GA हुए DABs, data teams में software engineering practices को अपनाने को बढ़ावा देने वाले Databricks asset packaging और deployment tool के रूप में स्थापित हो रहे हैं
- workflows और job configurations के साथ उन jobs में चलने वाले code को bundle के रूप में पैकेज करके CI/CD pipelines के जरिए कई environments में deploy किया जा सकता है
- यह सामान्य asset types के लिए templates और custom templates को support करता है, जिससे data engineering और ML projects के लिए tailored service templates बनाए जा सकते हैं
- इसे engineering workflows के एक प्रमुख हिस्से के रूप में बढ़ते हुए अपनाया जा रहा है
- यह notebook templates को शामिल करने और उन्हें production में deploy करने का support देता है, लेकिन notebooks को productionize करने की सिफारिश नहीं की जाती
- इसके बजाय, यह ऐसी engineering practices के साथ जानबूझकर production code लिखने को प्रोत्साहित करता है जो maintainability, resilience और scalability की आवश्यकताओं का समर्थन करती हैं
-
Instructor
- यह एक लाइब्रेरी है जो LLM का उपयोग करके structured responses (JSON, YAML आदि) मांगने और उन्हें parse करके application में इस्तेमाल करने में मदद करती है
- LLM nondeterministic होते हैं, इसलिए वे हमेशा अनुरोध के मुताबिक काम नहीं कर सकते
- आप इच्छित output structure परिभाषित कर सकते हैं और यदि LLM मांगी गई संरचना वापस न करे तो retry कॉन्फ़िगर कर सकते हैं
- यह stream में partial structure को parse करने की सुविधा भी देता है, जिससे पूरे response का इंतज़ार किए बिना results को stream किया जा सकता है
-
Kedro
- यह MLOps टूल के रूप में काफ़ी बेहतर हुआ है और modularity व engineering practices पर अपना फ़ोकस बनाए रखता है
- standalone
kedro-datasetspackage की शुरुआत के साथ modularity पर ज़ोर दिया गया है, जैसे code और data को अलग करना - CLI, starter project templates और telemetry capabilities में सुधार किया गया है
- हाल ही में आए VS Code extension से developer experience बेहतर हुआ है
-
LiteLLM
- यह एक लाइब्रेरी है जो कई LLM provider APIs के साथ आसानी से integrate होती है और OpenAI API format के ज़रिए interactions को standardize करती है
- यह व्यापक provider और model support देती है, साथ ही completions, embeddings और image generation के लिए unified interface प्रदान करती है
- यह हर provider की specific endpoint requirements के मुताबिक inputs को transform करके integration को सरल बनाती है
- यह caching, logging, rate limiting और load balancing जैसी production applications के लिए ज़रूरी operational capabilities लागू करने का framework भी देती है
- यह अलग-अलग models को आसानी से बदलने देती है, जो models के तेज़ी से बदलते मौजूदा माहौल में ज़रूरी क्षमता है
- यह मानना चाहिए कि एक ही prompt पर अलग-अलग models की responses अलग हो सकती हैं, इसलिए सिर्फ़ consistent calling method से completion performance को optimize करना मुश्किल हो सकता है
- हर model अतिरिक्त features को अपने तरीके से लागू करता है, इसलिए एक single interface से सभी जरूरतें पूरी करना कठिन हो सकता है
-
LlamaIndex
- इसमें ऐसा engine शामिल है जिससे domain-specific और context-based LLM applications डिज़ाइन किए जा सकते हैं, और यह data ingestion, vector indexing, तथा documents पर natural language question answering जैसे कार्यों को support करता है
- LlamaIndex का उपयोग करके document ingestion को automate किया जा सकता है, document embeddings को index किया जा सकता है, और user input के आधार पर इन embeddings को query करने वाली RAG(Retrieval-Augmented Generation) pipeline बनाई जा सकती है
- LlamaHub का उपयोग करके LlamaIndex modules को extend या customize किया जा सकता है, और पसंदीदा LLM, embedding तथा vector store providers के साथ LLM applications बनाए जा सकते हैं
-
LLM Guardrails
- यह guidelines, policies या filters का ऐसा सेट है जो LLM को हानिकारक, भ्रामक या असंबंधित सामग्री उत्पन्न करने से रोकता है
- इसे malicious users से LLM applications की सुरक्षा के लिए भी इस्तेमाल किया जा सकता है, जो input manipulation जैसी तकनीकों से system का दुरुपयोग करना चाहते हैं
- यह model द्वारा content को process और generate करने के लिए सीमाएँ तय करके safety net की तरह काम करता है
- NeMo Guardrails, Guardrails AI और Aporia Guardrails जैसे उभरते frameworks इस क्षेत्र में उपयोगी हैं
- सिफारिश की जाती है कि सभी LLM applications में guardrails लगाए जाएँ और rules व policies को लगातार बेहतर किया जाए
- यह ज़िम्मेदार और भरोसेमंद LLM chat apps बनाने के लिए महत्वपूर्ण है
-
Medusa
- ज़्यादातर shopping websites बनाने वाले e-commerce solutions 80/20 trap में फँस जाते हैं
- Medusa एक संतुलित, highly customizable open source commerce platform है, जो developers को अलग और tailored shopping experiences बनाने में सक्षम बनाता है
- यह Next.js और PostgreSQL पर बना है और shopping cart, order management से लेकर gift card modules और region-specific tax calculation जैसी advanced capabilities तक, modules की व्यापक रेंज के साथ development process को तेज़ करता है
- इसे कुछ projects में लागू किया गया है और एक मूल्यवान framework के रूप में आंका गया है
-
Pkl
- यह एक open source configuration language और tool है, जिसे शुरुआत में Apple ने आंतरिक उपयोग के लिए बनाया था
- इसकी मुख्य क्षमता type और validation system है, जो deployment से पहले configuration errors को पकड़ सकती है
- यह code duplication को कम कर सकता है (जैसे environment overrides के मामलों में) और configuration changes को live environment में लागू करने से पहले validate कर सकता है
- यह JSON, PLIST, YAML,
.propertiesfiles generation और code generation सहित व्यापक IDE और language integrations प्रदान करता है
-
ROS 2
- यह robot systems के development के लिए एक open source framework है
- यह libraries और tools देता है जो applications के modular implementation को संभव बनाते हैं, जिनमें interprocess communication, multithreaded execution और quality of service जैसी capabilities शामिल हैं
- यह previous version की तुलना में real-time capabilities, modularity, multi-platform support और sensible defaults जैसे पहलुओं में बेहतर हुआ है
- autonomous driving functionality जैसी जटिल और विकसित होती in-vehicle applications वाले manufacturers के लिए इसकी node-based architecture और topic-based communication model विशेष रूप से आकर्षक है
- automotive industry में इसका उपयोग लगातार बढ़ रहा है
-
seL4
- SDV या अन्य safety-critical scenarios में operating system की real-time stability महत्वपूर्ण होती है
- entry barrier ऊँचा होने के कारण कुछ ही कंपनियाँ इस क्षेत्र पर हावी हैं, इसलिए seL4 जैसे open source solutions मूल्यवान हैं
- seL4 एक high-assurance, high-performance operating system microkernel है
- यह formal verification methods का उपयोग करके जाँचता है कि operating system का behavior specifications का "गणितीय रूप से" पालन करता है या नहीं
- microkernel architecture system stability सुनिश्चित करने के लिए core responsibilities को न्यूनतम रखता है
- NIO जैसी EV कंपनियाँ seL4 ecosystem के साथ काम कर रही हैं, और आगे इस क्षेत्र में और प्रगति हो सकती है
-
SetFit
- इस समय अधिकांश AI-based tools generative हैं, जो text और images बनाते हैं और GPT का उपयोग करते हैं
- पारंपरिक text tasks (text classification या intent determination) के लिए sentence transformers को प्राथमिकता दी जाती है
- SetFit sentence transformers को fine-tune करने का framework है
- यह contrastive learning का उपयोग करता है और बहुत कम examples के साथ भी अक्सर स्पष्ट separation हासिल कर लेता है, जिससे अलग-अलग intent classes को अलग किया जा सके
- sentence transformers generative AI systems में भी भूमिका निभा सकते हैं
- LLM का उपयोग करने वाले customer-facing chatbot systems में intent detection के लिए SetFit का सफल उपयोग किया गया है, और अधिक सख्त filtering के लिए SetFit-based classifier चुना गया है
-
vLLM
- यह LLMs के लिए high-throughput, memory-efficient inference engine है, जिसे cloud या on-premise पर चलाया जा सकता है
- यह कई model architectures और लोकप्रिय open source models को सहज रूप से support करता है
- NVIDIA DGX और Intel HPC जैसे GPU platforms पर containerized vLLM workers deploy करके developer coding assistance, knowledge retrieval और natural language database interaction आदि के लिए Llama 3.1(8B और 70B), Mistral 7B और Llama-SQL जैसे models host किए जा सकते हैं
- यह OpenAI SDK standard के साथ compatible है, जिससे consistent model serving को बढ़ावा मिलता है
- Azure का AI Model Catalog custom inference containers का उपयोग करके model serving performance बेहतर करता है, और high throughput व efficient memory management के कारण vLLM को default inference engine के रूप में इस्तेमाल करता है
- vLLM framework बड़े पैमाने पर model deployment के लिए default विकल्प के रूप में उभर रहा है
Assess
-
Apache XTable™
- उपलब्ध open table formats में अभी कोई स्पष्ट विजेता सामने नहीं आया है
- Delta UniForm जैसे tools इन formats के बीच interoperability संभव बनाते हैं
- Apache XTable™ एक Apache incubator project है जो Hudi, Delta और Iceberg के बीच bidirectional interoperability को बढ़ावा देता है
- लेकिन इन formats की feature differences के कारण, लंबे समय में bidirectional interoperability पर बहुत अधिक निर्भरता टीमों को केवल "lowest common denominator" features तक सीमित कर सकती है
-
dbldatagen
- data engineering के लिए test data तैयार करना एक बड़ी चुनौती है
- production से test environment में data भेजना जोखिमभरा हो सकता है, इसलिए टीमें अक्सर fake या synthetic data पर निर्भर करती हैं
- dbldatagen(Databricks Labs Data Generator) एक Python library है जो testing, benchmarking और demos आदि के लिए Databricks environment के भीतर synthetic data generate करती है
- dbldatagen कुछ ही मिनटों में अरबों rows generate कर सकता है, जिससे कई tables, change data capture, और merge/join operations जैसे विविध scenarios को support करते हुए बड़े पैमाने पर synthetic data बनाया जा सकता है
-
DeepEval
- DeepEval, LLM performance का मूल्यांकन करने के लिए एक Python-आधारित open source evaluation framework है
- इसे LlamaIndex या LangChain जैसे लोकप्रिय framework के साथ बनाए गए RAG (retrieval-augmented generation) और अन्य प्रकार के apps का मूल्यांकन करने, और ज़रूरत के अनुसार विभिन्न models की तुलना करते समय baseline और benchmark सेट करने के लिए इस्तेमाल किया जा सकता है
- DeepEval, hallucination detection, answer relevance, hyperparameter optimization आदि के जरिए LLM performance का मूल्यांकन करने के लिए comprehensive metrics और features प्रदान करता है
- यह
pytestके साथ integration देता है, और assertions के साथ test sets को CI (continuous integration) pipeline में आसानी से integrate किया जा सकता है
-
DSPy
- आज अधिकांश language model-आधारित applications, किसी विशेष task के लिए manually tuned prompt templates पर निर्भर करते हैं
- DSPy, ऐसे applications विकसित करने के लिए एक framework है, जो direct prompt engineering को हटाने वाला अलग approach अपनाता है
- इसके बजाय, यह program flow से जुड़ी high-level abstractions पेश करता है (उन modules के जरिए जिन्हें एक-दूसरे के ऊपर layer किया जा सकता है), साथ ही optimize किए जाने वाले metrics, और train या test किए जाने वाले data को भी
- इसके बाद यह परिभाषित metrics के आधार पर underlying language model के prompts या weights को optimize करता है
- परिणामस्वरूप codebase, PyTorch का उपयोग करके neural network training के काफी समान होता है
-
Flutter for Web
- Flutter, iOS और Android applications के लिए cross-platform support के कारण जाना जाता है
- अब यह और अधिक platforms तक विस्तृत हो चुका है
- एक ही codebase से iOS, Android और browser के लिए apps बनाए जा सकते हैं
- हर web application के लिए Flutter उपयुक्त नहीं है, लेकिन progressive web apps, single-page apps, और मौजूदा Flutter mobile apps को web में बदलने के मामलों में यह खास तौर पर अच्छा फिट बैठता है
- Flutter पहले से experimental channel में WebAssembly (WASM) को compile target के रूप में support करता था, जिसका मतलब था कि यह सक्रिय development में है और इसमें संभावित bugs तथा performance issues हो सकते हैं
- हाल की release में यह stable हो गया है
- WASM target पर compile किए गए Flutter web applications का performance, JavaScript compile target की तुलना में काफी बेहतर है
- विभिन्न platforms पर native-जैसा performance भी उन कारणों में से एक है जिनकी वजह से कई developers ने शुरुआत में Flutter को चुना था
-
kotaemon
- kotaemon, knowledge-base documents के लिए Q&A apps बनाने का open source RAG-आधारित tool और framework है
- यह PDF और DOC formats सहित कई document types को समझ सकता है, और Gradio-आधारित web UI प्रदान करता है ताकि उपयोगकर्ता knowledge base को configure कर सकें और chat interface के जरिए उससे interact कर सकें
- इसमें vector store के साथ built-in RAG pipeline है और इसे SDK के जरिए extend किया जा सकता है
- यह response में source document citations भी देता है, साथ में web-आधारित inline preview और relevance score भी
- जो लोग RAG-आधारित document Q&A application चाहते हैं, उनके लिए यह customizable framework एक बहुत अच्छा starting point है
-
Lenis
- Lenis, modern browsers के लिए डिज़ाइन की गई हल्की लेकिन शक्तिशाली smooth scrolling library है
- यह WebGL scroll synchronization और parallax effects जैसे smooth scrolling experiences को संभव बनाती है, इसलिए flexible और seamless scroll interactions वाले pages बनाने वाली teams के लिए यह आदर्श है
- developers ने पाया है कि Lenis सरल, उपयोग में आसान है, और smooth scrolling बनाने के लिए streamlined approach प्रदान करती है
- हालांकि, इस library में accessibility से जुड़ी समस्याएँ हो सकती हैं, खासकर vertical और horizontal scroll interactions disabled users के लिए भ्रम पैदा कर सकती हैं
- देखने में आकर्षक होने के बावजूद accessibility बनाए रखने के लिए सावधानीपूर्वक implementation की आवश्यकता होती है
-
LLMLingua
- LLMLingua, छोटे language model का उपयोग करके गैर-आवश्यक tokens को हटाते हुए prompt को compress करता है, जिससे performance loss को न्यूनतम रखते हुए LLM efficiency बढ़ती है
- यह approach, LLM को longer prompts को कुशलतापूर्वक process करने, साथ ही reasoning और in-context learning बनाए रखने में सक्षम बनाती है, जिससे cost efficiency, inference latency, और context handling जैसी चुनौतियों का समाधान होता है
- बिना अतिरिक्त training के विभिन्न LLMs के साथ compatible होने और LlamaIndex जैसे frameworks को support करने वाला LLMLingua, LLM inference performance optimize करने के लिए उपयुक्त है
-
Microsoft Autogen
- Microsoft Autogen, AI agents के निर्माण और orchestration को सरल बनाने वाला open source framework है, जो जटिल tasks को हल करने के लिए multi-agent collaboration को संभव बनाता है
- यह autonomous और human-in-the-loop, दोनों workflows को support करता है, और विभिन्न LLMs तथा agent interactions के लिए tools के साथ compatibility प्रदान करता है
- एक team ने clients के लिए Autogen का उपयोग करके ऐसा AI-आधारित platform बनाया, जिसमें हर agent code generation, code review, या document summarization जैसी किसी specific skill का प्रतिनिधित्व करता है
- framework का उपयोग करके उपयुक्त model और workflow परिभाषित करने से teams नए agents को seamless और consistent तरीके से बना सकती हैं
- LlamaIndex का उपयोग करके workflow को orchestrate किया जा सकता है, ताकि agents product search और code suggestions जैसे tasks को कुशलतापूर्वक संभाल सकें
- Autogen ने खासकर production environments में संभावनाएँ दिखाई हैं, लेकिन अधिक agents जुड़ने के साथ scalability और complexity management को लेकर चिंताएँ बनी हुई हैं
- agent-आधारित systems के विस्तार में इसकी long-term viability का आकलन करने के लिए आगे और evaluation की आवश्यकता है
-
Pingora
- Pingora, तेज़, स्थिर और programmable network services बनाने के लिए Rust framework है
- मूल रूप से Cloudflare द्वारा Nginx की कमियों को दूर करने के लिए विकसित किया गया Pingora, पहले ही बड़ी संभावनाएँ दिखा रहा है, और River जैसे नए proxies उसके ऊपर बनाए जा रहे हैं
- अधिकांश लोग Cloudflare-स्तर के scale का सामना नहीं करते, लेकिन वे ऐसे scenarios से ज़रूर टकराते हैं जहाँ flexible application-layer routing, network services के लिए आवश्यक होती है
- Pingora की architecture, security या performance से समझौता किए बिना ऐसे मामलों में Rust की पूरी क्षमता का उपयोग संभव बनाती है
-
Ragas
- Ragas, retrieval-augmented generation (RAG) pipelines के performance का मूल्यांकन करने के लिए डिज़ाइन किया गया framework है, जो retrieval और generation components दोनों के evaluation की चुनौती को संबोधित करता है
- यह fidelity, answer relevance, और context utilization जैसे structured metrics प्रदान करता है, जो RAG-आधारित systems की effectiveness का आकलन करने में मदद करते हैं
- developers ने पाया है कि यह top-k retrieval और embedding models जैसे parameters को fine-tune करने के लिए नियमित evaluations चलाने में उपयोगी है
- कुछ teams ने Ragas को ऐसी pipeline में integrate किया है जो prompt template या model बदलने पर रोज़ चलती है
- हालांकि metrics मज़बूत insights देते हैं, लेकिन यह चिंता भी है कि framework, जटिल RAG pipelines की सभी बारीकियों और complex interactions को पूरी तरह capture नहीं कर सकता, इसलिए अतिरिक्त evaluation frameworks पर विचार करने की सिफारिश की जाती है
- फिर भी, Ragas production environments में RAG evaluation को सरल बनाने और data-driven improvements प्रदान करने की क्षमता के कारण अलग पहचान रखता है
-
Score
- अपने internal development platform को लागू करने वाले कई संगठन, developer और platform hosting टीमों के बीच organizational standards लागू करने के लिए अपना खुद का platform orchestration system बनाने की प्रवृत्ति रखते हैं
- हालांकि, container workloads को सुरक्षित, सुसंगत और compliance-अनुरूप तरीके से host करने के लिए paved-road deployment platform की बुनियादी क्षमताएं संगठनों में काफी समान होती हैं
- क्या इन आवश्यकताओं को निर्दिष्ट करने के लिए कोई shared language होना अच्छा नहीं होगा?
- Score इस क्षेत्र में एक standard बनने की क्षमता दिखा रहा है
- यह YAML format की एक declarative language है, जो containerized workloads को deploy करने के तरीके और उन्हें चलाने के लिए आवश्यक विशिष्ट services और parameters का वर्णन करती है
- Score को मूल रूप से Humanitec के Platform Orchestrator product के लिए configuration language के रूप में विकसित किया गया था, लेकिन अब यह CNCF(Cloud Native Computing Foundation) के प्रबंधन के तहत एक open source project है
- CNCF के समर्थन से, Score के Humanitec product से आगे बढ़कर अधिक व्यापक रूप से उपयोग किए जाने की संभावना है
- इसे Kubernetes और Docker Compose, इन दो reference implementations के साथ जारी किया गया
- Score की extensibility से अन्य platforms के लिए community contributions आने की उम्मीद है
- Score में Kubevela के Open Application Model(OAM) specification से समानताएं हैं, लेकिन यह पूरे application की बजाय container workload deployment पर अधिक केंद्रित है
- SST के साथ भी थोड़ा overlap है, लेकिन SST internal engineering platform की बजाय सीधे cloud infrastructure पर deployment में अधिक रुचि रखता है
- Score के विकसित होने के साथ हम इसे रुचि के साथ देख रहे हैं
-
shadcn
- shadcn, reusable और copy-paste किए जा सकने वाले components प्रदान करके पारंपरिक component library की अवधारणा को चुनौती देता है
- यह approach टीमों को पूर्ण ownership और control देती है, जिससे आसान customization और extension संभव होता है, जो MUI और Chakra UI जैसी अधिक सामान्य पारंपरिक libraries में अक्सर कमी वाला क्षेत्र है
- Radix UI और Tailwind CSS पर बना shadcn किसी भी React-आधारित application में सहज रूप से integrate हो जाता है, इसलिए यह control और extensibility को प्राथमिकता देने वाले projects के लिए उपयुक्त है
- इसमें ऐसा CLI शामिल है जो project में components को copy-paste करने की प्रक्रिया को समर्थन देता है
- hidden dependencies को कम करने और tightly coupled implementations से बचाने का लाभ भी होने के कारण, shadcn frontend development के लिए अधिक व्यावहारिक और अनुकूलनीय approach अपनाने वाली टीमों के लिए एक आकर्षक विकल्प के रूप में ध्यान खींच रहा है
-
Slint
- Slint, Rust, C++ या JavaScript applications के लिए native user interfaces बनाने का एक declarative GUI framework है
- यह live preview, responsive UI design, VS Code integration और native user experience जैसी महत्वपूर्ण सुविधाओं वाला एक multiplatform UI framework है, लेकिन हम खास तौर पर embedded systems के लिए इसकी उपयोगिता पर जोर देना चाहते हैं
- embedded applications विकसित करने वाली टीमों के पास परंपरागत रूप से UI development के लिए सीमित विकल्प रहे हैं, और हर विकल्प के अपने फायदे और नुकसान थे
- Slint उपयोग में आसान, HTML-जैसी markup language का उपयोग करता है और सीधे machine code में compile होता है, जिससे developer experience और performance के बीच बेहतरीन संतुलन मिलता है
- runtime के दौरान भी यह कम resource footprint बनाए रखता है, जो embedded systems के लिए महत्वपूर्ण है
- संक्षेप में, हमें Slint इसलिए पसंद है क्योंकि यह web और mobile development की सिद्ध practices को embedded ecosystem तक लाता है
-
SST
- SST एक framework है जो applications को cloud environment में deploy करने के लिए, उन्हें चलाने हेतु आवश्यक सभी services के साथ, इस्तेमाल होता है
- SST केवल एक IaC tool नहीं है, बल्कि यह एक framework है जिसमें application environment को define करने के लिए TypeScript API है, Git push से trigger होने पर application deploy करने वाली service है, और result application को manage करने तथा SST management functions को call करने वाला GUI console भी है
- SST मूल रूप से AWS Cloud Formation और CDK पर आधारित था, लेकिन नवीनतम version Terraform और Pulumi के ऊपर implement किया गया है, इसलिए सैद्धांतिक रूप से यह cloud-agnostic है
- SST, Next.js और Remix सहित कई standard web application frameworks की deployment को built-in रूप से support करता है, और headless API applications को भी support करता है
- SST अपनी अलग ही category में आता हुआ दिखता है
- इसमें Kubevela जैसे platform orchestration tools से समानताएं हैं, लेकिन यह developer convenience features भी देता है, जैसे live mode जिसमें developer की local machine पर चलने वाले function के जरिए AWS Lambda invocation को proxy किया जाता है
- फिलहाल SST अभी भी कुछ हद तक जिज्ञासा का विषय बना हुआ है, लेकिन जैसे-जैसे यह विकसित हो रहा है, यह एक ध्यान देने योग्य project और tool category का हिस्सा है
10 टिप्पणियां
धन्यवाद। मज़ेदार है।
आपने बहुत मेहनत की है... धन्यवाद!
बीच में ज़िक्र हुए Lenis नाम के scroll library पर अपनी राय जोड़ूँ तो.. Apple की वेबसाइट जैसी बहुत स्मूद scroll animation मुझे थोड़ी असुविधाजनक लगती है.
माउस scroll wheel घुमाते हुए देखने पर बार-बार animation टूटती हुई महसूस होती है, और arrow down key दबाकर चलें तो वह इतना तेज़ लगता है कि सामग्री पढ़ना मुश्किल हो जाता है.
आखिरकार Windows में scroll wheel क्लिक करके, उसे बस थोड़ा-सा हिलाकर धीरे-धीरे नीचे जाना ही ऐसे वेबसाइटों को 'एंजॉय' करने का एकमात्र तरीका है, लेकिन मुझे नहीं पता कि उसकी उतनी वैल्यू है भी या नहीं. एक शब्द में कहूँ तो, यह सच में अच्छी technique है या नहीं, इस पर संदेह है.
Databricks का नाम डराने वाली हद तक बहुत ज़्यादा आ रहा है।
पढ़ते-पढ़ते ही रुक गया. T_T
GeekNews पर पहले पोस्ट किए गए प्रोडक्ट/सेवाओं को व्यवस्थित किया गया है.
Platforms - Assess
Platforms - Trial
Language and Frameworks - Adopt
Language and Frameworks - Assess
Language and Frameworks - Trial
Tools - Adopt
Tools - Assess
Tools - Trial
धन्यवाद। काफ़ी दिलचस्प है~
अच्छी तरह पढ़ा। धन्यवाद।
इसे पढ़कर बहुत अच्छा लगा। धन्यवाद।
Thoughtworks Technology Radar, Volume 30
Thoughtworks Technology Radar, Volume 29
Thoughtworks Technology Radar, Volume 28
Thoughtworks Technology Radar, Volume 27
Thoughtworks Technology Radar, Volume 26
ThoughtWorks Technology Radar, Volume 23
ThoughtWorks Technology Radar, Volume 22
ThoughtWorks द्वारा हर 6 महीने में प्रकाशित तकनीकी समाचार - Radar Vol.21