<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0" xmlns:cc="http://cyber.law.harvard.edu/rss/creativeCommonsRssModule.html">
    <channel>
        <title><![CDATA[Stories by Yattish Ramhorry on Medium]]></title>
        <description><![CDATA[Stories by Yattish Ramhorry on Medium]]></description>
        <link>https://medium.com/@yattishr?source=rss-a96294ac6d05------2</link>
        <image>
            <url>https://cdn-images-1.medium.com/fit/c/150/150/1*FAajvVnpDxydl-XbrY_5lg.jpeg</url>
            <title>Stories by Yattish Ramhorry on Medium</title>
            <link>https://medium.com/@yattishr?source=rss-a96294ac6d05------2</link>
        </image>
        <generator>Medium</generator>
        <lastBuildDate>Thu, 16 Jul 2026 05:13:57 GMT</lastBuildDate>
        <atom:link href="https://medium.com/@yattishr/feed" rel="self" type="application/rss+xml"/>
        <webMaster><![CDATA[yourfriends@medium.com]]></webMaster>
        <atom:link href="http://medium.superfeedr.com" rel="hub"/>
        <item>
            <title><![CDATA[Building SceneOne: Creating an AI-Directed Multimodal Production Studio]]></title>
            <link>https://yattishr.medium.com/building-sceneone-creating-an-ai-directed-multimodal-production-studio-31da2fcf18ea?source=rss-a96294ac6d05------2</link>
            <guid isPermaLink="false">https://medium.com/p/31da2fcf18ea</guid>
            <category><![CDATA[geminiliveagentchallenge]]></category>
            <category><![CDATA[gemini-live]]></category>
            <category><![CDATA[generative-ai-tools]]></category>
            <dc:creator><![CDATA[Yattish Ramhorry]]></dc:creator>
            <pubDate>Mon, 16 Mar 2026 07:56:43 GMT</pubDate>
            <atom:updated>2026-03-16T07:56:43.608Z</atom:updated>
            <content:encoded><![CDATA[<p>I recently participated in an online hackathon with Devpost, which was the “<a href="https://geminiliveagentchallenge.devpost.com/">2026 Gemini Live Agent Challenge</a>”. I wanted to build something more unique, usable, and interesting than just another chatbot.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*EkW8ZGe34_GqSb3jdE-YLA.png" /></figure><p>Most generative AI tools involving video, audio, or images still follow a very linear workflow. You generate some text, move it to another tool to record audio, then manually edit and assemble the final asset. AI helps with the pieces of the process, but it rarely participates in the full creative workflow.</p><p><strong>SceneOne Studio</strong> was designed to change that.</p><p>The idea was simple: build a system where an AI agent can see a product, guide a short recording session, and produce a finished audio clip in one continuous interaction.</p><p>Instead of a text generator, the AI becomes the creative director that guides the user and manages the production pipeline.</p><p>The Goal: Moving beyond prompt-only AI</p><p>Traditional AI tools operate inside a text box. They respond to prompts but have no awareness of the surrounding environment.</p><p>If someone wants to generate a short advert for a product, the process usually looks like this:</p><p>Step 1: Write a prompt describing the product</p><p>Step 2: Generate a script</p><p>Step 3: Copy the script to an audio tool</p><p>Step 4: Record voice audio</p><p>Step 5: Manually edit and trim the recording</p><p>Step 6: Export the final asset</p><p>The AI participates in steps one and two, but everything else is manual. SceneOne Studio was built to remove those gaps.</p><p>In this system, the user simply holds up a product to their camera. The AI analyses the object, generates a short script, guides the recording session, and produces a finished audio ad.</p><p>To support that workflow, the AI needs more than text input. It needs live audio, video, and the ability to interact with the interface.</p><h3>Phase 1: Capturing live audio and video</h3><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*J_03K2Gc1iGq8jLcfTRRfQ.png" /><figcaption>SceneOne Studio — Architecture: Frontend, Backend, and Intelligence Layer</figcaption></figure><p>The first technical challenge was ingesting the user’s camera and microphone in real time.</p><p>The frontend is built with Next.js and uses the browser&#39;s MediaDevices API to access the webcam and microphone. Video frames and audio chunks are captured continuously during a session.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*ZJD3mMiqEPx-DE46KDStzg.png" /><figcaption>SceneOne Studio — User Interface</figcaption></figure><p>These streams are then sent to the backend using a persistent Websocket connection.</p><p>The backend is built with FastAPI and acts as the central processing hub. Incoming media streams are forwarded to the Gemini model using the <a href="https://google.github.io/adk-docs/get-started/python/">Google Agent Development Kit (ADK)</a>.</p><p>The ADK runner provides a run_live interface that allows Gemini to receive streaming input from the WebSocket connection.</p><p>Once this pipeline was working, the model could analyse what the user was showing on the camera during the session. That opened the door for real multimodal interaction.</p><h3>Phase 2: Building the AI “Director”</h3><p>With live input working, the next step was defining the agent itself. Using Google ADK, I created a custom SceneOne director agent that guides the session. The agent receives camera and microphone input, interprets the product being shown, and decides when to generate an ad script.</p><p>The agent is configured with system instructions that define its role as a creative director during the session. In my tests and experimentation with various products, the agent was intelligent enough to recognise any product that I presented. It went even as far as to notice textures, graining, colour gradients, contrasts, and even scuff marks.</p><p>I tested the live agent using a Volkano Bluetooth speaker, a Hush Puppie boot that&#39;s older than ten years, and a Kiwi and Tangarine Massage soap, and it recognised almost every detail in everytime each of those products.</p><p>At times when the product wasn’t very clear to the agent, it requested that I hold up the item closer to the camera, so it could take a closer look at the item.</p><p>Rather than constantly generating responses, the agent waits for the right moment in the interaction. When the user indicates they are ready, the agent generates a short ad script, which is usually 10 seconds in length. But the user has the option of toggling between 10 seconds to 30 seconds in the user interface.</p><p>Instead of simply returning the script as text, the agent triggers a tool call: <strong><em>capture_ad_script</em></strong>. This tool records the generated script and signals that the session should move into the recording phase.</p><p>At this point, the AI is no longer just generating content; it is controlling the workflow.</p><h3>Phase 3: Connecting the agent to the interface</h3><p>The next challenge was connecting the backend actions to the browser interface. When the AI decides that recording should start, the frontend needs to react,<em> automatically</em>.</p><p>To handle this communication layer, I integrated <a href="https://www.copilotkit.ai/ag-ui">Copilot Kit</a> as an agent-to-UI bridge.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*ZHutrhko_tGgGheG3eYJLQ.png" /><figcaption>SceneOne Studio — User Interface with Asset Dock</figcaption></figure><p>When the backend agent triggers the capture_ad_script tool, the event is sent through CopilotKit to the Next.js frontend.</p><p>The frontend listens for this action using a useCoPilotAction hook. The user, can speak the words; “Hey Director” to begin the session, and then “Action” to complete the session, after which the agent kicks off the recording process.</p><p>Once the action is received, the browser automatically starts recording the microphone using the MediaRecorder API. The interface updates to show that recording has begun.</p><p>From the users perspective, the AI is directing the session.</p><h3>Phase 4: Processing the audio</h3><p>After the recording finishes, the captured audio is sent to the backend for processing. Raw audio capture often contains silence, inconsistent levels, and abrupt start or stop artifacts. To produce a clean audio asset, the file goes through a processing step in the FastAPI backend.</p><p>Using the Pydub library and FFmpeg, the system performs several operations:</p><ol><li>Audio normalization adjusts the volume levels for a consistent output.</li><li>Silence detection identifies and removes dead air at the start or end of the recording.</li><li>Short fades are applied to prevent clicks at the beginning or end of the file.</li><li>Once processed, the audio is exported as a finalised “.wav” file.</li></ol><h3>Phase 5: Asset storage and retrieval</h3><p>After processing, the finished audio is saved and made available to use. The backend returns a download URL to the frontend. The interface then adds a new card to the Asset Dock, which displays the generated script and provides a download link for the audio file.</p><p>SceneOne also supports optional persistence through Google Cloud Storage. Generated assets can be uploaded to a GCS bucket, so they remain available across sessions.</p><p>This ensures that the system can function as a live demo and as a persistent creative tool.</p><p>Final result: A multimodal creative workflow</p><p>SceneOne Studio demonstrates how multimodal AI systems can participate in real production workflows rather than acting as isolated text generators. The system combines several components:</p><p>The frontend captures live audio and video output.</p><p>The backend streams this data to Gemini through the ADK runtime. A custom agent analyzes the session and directs the creative process.</p><p>Audio processing tools refine the recording into a finished asset. Cloud storage ensures that the final output is available immediately.</p><p>Together, these pieces create a closed creative loop where a user can show a product, generate a script, record a voiceover, and receive a polished audi ad within a single session.</p><p>For the Gemini Live Agent Challenge, SceneOne represents a step toward AI systems that participate directly in creative production instead of simply generating text.</p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=31da2fcf18ea" width="1" height="1" alt="">]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[President Biden’s Executive Order Sets a Course for Responsible AI Adoption]]></title>
            <link>https://yattishr.medium.com/president-bidens-executive-order-sets-a-course-for-responsible-ai-adoption-b5e6f3d0f8cc?source=rss-a96294ac6d05------2</link>
            <guid isPermaLink="false">https://medium.com/p/b5e6f3d0f8cc</guid>
            <category><![CDATA[technology]]></category>
            <category><![CDATA[ethical-ai]]></category>
            <category><![CDATA[machine-learning]]></category>
            <category><![CDATA[responsible-ai]]></category>
            <category><![CDATA[artificial-intelligence]]></category>
            <dc:creator><![CDATA[Yattish Ramhorry]]></dc:creator>
            <pubDate>Fri, 03 Nov 2023 12:04:43 GMT</pubDate>
            <atom:updated>2023-11-03T12:04:43.361Z</atom:updated>
            <content:encoded><![CDATA[<figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*ajJ0E65kzFysbmxq4euMQQ.jpeg" /><figcaption>Photo by <a href="https://unsplash.com/@mattwridley?utm_content=creditCopyText&amp;utm_medium=referral&amp;utm_source=unsplash">Matt Ridley</a> on <a href="https://unsplash.com/photos/text-60atsfCakP8?utm_content=creditCopyText&amp;utm_medium=referral&amp;utm_source=unsplash">Unsplash</a></figcaption></figure><p>President Biden’s recent Executive Order underscores the significance of responsible and ethical AI adoption. In this order, the administration emphasizes the importance of taking the lead in both harnessing the potential and managing the risks associated with Artificial Intelligence (AI). Let’s break down the key points of this pivotal directive and what it means.</p><h3>Ensuring AI Safety and Security</h3><p>The Executive Order outlines the need for stringent standards in AI safety and security. This entails that developers of powerful AI systems must now share their safety test results and information with the government.</p><p>Furthermore, the order aims to establish standards and tools to ensure that AI systems are safe, secure, and trustworthy. It also emphasizes the critical importance of protecting against the risks posed by using AI to engineer potentially dangerous biological materials.</p><h3>Safeguarding AI Privacy</h3><p>With an eye toward protecting Americans’ privacy, the Executive Order urges Congress to pass bipartisan data privacy legislation.</p><p>It also directs actions to support the development and use of privacy-preserving techniques, strengthens privacy-preserving research and technologies, and ensures the evaluation of how agencies collect and utilize commercially available information.</p><p>Moreover, it advocates <strong><em>the development of guidelines to assess the effectiveness of privacy-preserving techniques.</em></strong></p><h3>Promoting AI Equity and Civil Rights</h3><p>The order emphasizes the need to ensure that AI advances equity and civil rights. This includes providing clear guidance to prevent AI algorithms from exacerbating discrimination in crucial areas such as housing, federal benefits programs, and federal contracting.</p><p>Additionally, it underscores the importance of addressing algorithmic discrimination through training, technical assistance, and coordination between civil rights offices. The order also seeks to ensure fairness within the criminal justice system and emphasizes the need to enforce existing authorities to protect people’s rights and safety.</p><h3>Protecting AI Consumers and Workers</h3><p>Under this order, protecting consumers and workers is a top priority. It encourages the responsible use of AI in sectors like healthcare and education.</p><p>It also aims to develop principles and best practices to minimize the negative impacts of AI on workers while maximizing its benefits.</p><p>The order mandates the production of a comprehensive report on the potential impacts of AI on the labor market. It explores options for bolstering federal support for workers facing disruptions in their employment.</p><h3>Fostering AI Innovation and Competition</h3><p>To promote a fair and competitive AI landscape, the order aims to catalyze AI research across the United States. It also prioritizes providing small developers and entrepreneurs with access to technical assistance and resources through a pilot of the National AI Research Resource.</p><p>The order stresses the importance of aiding small businesses in commercializing AI breakthroughs and expanding opportunities for highly skilled immigrants and nonimmigrants with expertise in critical areas to contribute to the development and implementation of AI in the United States.</p><h3>Leading Global Initiatives in AI</h3><p>Recognizing the global impact of AI, the order calls for expanded collaboration with international partners. It aims to accelerate the development and implementation of essential AI standards and encourages the responsible and rights-affirming deployment of AI solutions globally.</p><p>Additionally, it seeks to support allies and partners in establishing a robust international framework for the development and use of AI.</p><h3>Ensuring Responsible AI Deployment in Government</h3><p>The Executive Order underscores the need for responsible AI deployment within the government and emphasizes the modernization of federal AI infrastructure.</p><p>It calls for issuing guidance for agencies’ use of AI and streamlining the acquisition of AI products and services through efficient contracting. Additionally, it aims to accelerate the hiring of AI professionals as part of a comprehensive government-wide AI talent surge.</p><h3>How does this order affect businesses using AI?</h3><p>The Executive Order issued by President Biden emphasizes the significance of responsible AI usage and offers a complete structure that companies using AI must comprehend. However, what are the wide-ranging consequences of this order for businesses?</p><h3>Privacy Regulations and Compliance</h3><p>For businesses that rely on AI to collect, process, or analyze personal data, the Executive Order introduces new privacy regulations and standards. This includes using privacy-preserving techniques and sharing relevant information with the government.</p><p>Moreover, it emphasizes the need for following guidelines to evaluate the effectiveness of privacy-preserving techniques. Compliance with these measures is essential to ensure the privacy and data security of individuals.</p><h3>Ensuring Fair and Accountable AI</h3><p>Businesses using AI to provide services impacting people’s rights, safety, or well-being should ensure fair, transparent, accountable, and non-discriminatory AI systems.</p><p>This involves providing clear guidance to prevent AI algorithms from exacerbating discrimination and addressing algorithmic discrimination through training and coordination efforts. It also emphasizes enforcing existing authorities to protect people’s rights and safety.</p><p>Ensuring fairness and accountability is not only a legal requirement but also a moral obligation for businesses.</p><h3>Opportunities for Innovation and Global Competition</h3><p>Businesses can leverage the Executive Order’s AI initiatives and resources for research, development, and commercialization.</p><p>This includes accessing technical assistance and resources and benefiting from the expanded ability of highly skilled immigrants and nonimmigrants with expertise in critical areas to study, stay, and work in the United States. These opportunities can help businesses stay at the forefront of AI-driven innovation and maintain a competitive edge.</p><h3>Responsible Government Deployment</h3><p>Businesses interacting with the government or providing services to the government must adapt to new guidance and standards for the responsible deployment of AI.</p><p>This entails using specified AI products and services that meet certain criteria. Furthermore, they should adhere to best practices for mitigating the potential harms and maximizing the benefits of AI for workers.</p><p>Collaboration with the government on developing vital AI standards with international partners is also encouraged. This ensures that AI systems used in government-related operations are aligned with ethical and responsible practices.</p><h3>A Final Word(s)</h3><p>President Biden’s Executive Order is a significant milestone in the journey toward responsible and ethical AI adoption. Businesses using AI must pay attention to the evolving landscape and adapt their practices accordingly. President Biden’s vision for AI is not just about government policy; it’s about creating a framework that benefits the entire AI community.</p><h3>Call to Action</h3><p>Know someone on the hunt for a top-notch development partner to bring their MVP dream to life? Connect them with me on <a href="https://www.linkedin.com/in/yattishramhorry/">LinkedIn</a> — your referrals are the fuel that drives innovation! 🚀</p><p>You can also find me here on <a href="https://github.com/yattishr">Github</a>!</p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=b5e6f3d0f8cc" width="1" height="1" alt="">]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[A Four-Stack Approach to Unlocking the Potential of Large Language Models]]></title>
            <link>https://yattishr.medium.com/a-four-stack-approach-to-unlocking-the-potential-of-large-language-models-34302801fb79?source=rss-a96294ac6d05------2</link>
            <guid isPermaLink="false">https://medium.com/p/34302801fb79</guid>
            <category><![CDATA[coding]]></category>
            <category><![CDATA[software-development]]></category>
            <category><![CDATA[artificial-intelligence]]></category>
            <category><![CDATA[large-language-models]]></category>
            <category><![CDATA[llm]]></category>
            <dc:creator><![CDATA[Yattish Ramhorry]]></dc:creator>
            <pubDate>Fri, 27 Oct 2023 12:44:12 GMT</pubDate>
            <atom:updated>2023-10-27T12:44:12.477Z</atom:updated>
            <content:encoded><![CDATA[<figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*FczcVPR7UhY5CczfOYXoIA.jpeg" /><figcaption>Photo by <a href="https://unsplash.com/@neom?utm_content=creditCopyText&amp;utm_medium=referral&amp;utm_source=unsplash">NEOM</a> on <a href="https://unsplash.com/photos/a-person-jumping-into-the-air-at-sunset-urBne08-lTQ?utm_content=creditCopyText&amp;utm_medium=referral&amp;utm_source=unsplash">Unsplash</a></figcaption></figure><p>I’ve been delving deep into the fascinating world of Large Language Models (LLMs), and I can’t wait to share what I’ve learned with you.</p><p>Let me walk you through a framework that harnesses the power of LLMs to create advanced applications and agents.</p><p>It’s all about understanding the four fundamental stacks that make these models tick.</p><h4>The LLM Stack</h4><p>At the core of any LLM application lies the LLM stack. Whether you’re working with OpenAI’s GPT-4, ChatGPT 3.5, or LLaMA-2, this is where the magic begins.</p><p>You need to consider how the model was created, the pre-training, fine-tuning, and whether any Reinforcement Learning from Human Feedback (RLHF) has been applied.</p><p>Think about customizing and fine-tuning the model to suit your specific needs and optimizing its serving strategy. The LLM stack is the foundation upon which you’ll build your intelligent agent.</p><p>When using open source software in the LLM stack, it&#39;s important to consider the method of serving. Will you opt for cloud hosting?</p><p>If you are using LLaMA-2 in the cloud and paying per token, it is important to consider whether you will be paying by the amount of compute you use.</p><p>It may be worthwhile to think about running the process locally, using one of the four-bit models and a low-resolution model.</p><p>However, if you are looking to use LLM for more than just a simple chatbot and require logic or mathematics, full resolution models may perform better than quantization models.</p><h4>The Search/Memory/Data Stack</h4><p>The second stack is all about data. You’ll be dealing with semantic search and vector stores, making decisions about which tools and technologies to use.</p><p>Will you opt for Faiss or explore hosted solutions like ChromaDB or Pinecone?</p><p>You’ll also need to think about data access, extraction from conventional databases, and knowledge graphs.</p><p>Now, obviously, the language model that you’ve chosen will have a big impact on this. If you’ve gone for a language model with a 16K context window, now you can actually afford to inject a lot more into it.</p><p>Another key component of this stack is to consider aspects such as search functionality.</p><p>If you’re using Google or Duck Duck Go to go out and fetch information off the web or scrape that information from somewhere in real-time, that’s something that you also want to think about in this stack as well.</p><p>Finally, another key part that’s really key for building agents is the whole concept of memory of basically having some kind of memory that you can save to and retrieve from, for injecting information into your prompts via in context learning. So this is a key part of this stack as well.</p><p>This stack is all about connecting your LLM with the information it needs to provide valuable insights.</p><h4>The Reasoning and Action Stack</h4><p>As your application evolves, you’ll find yourself exploring the reasoning and action stack. This is where the decision-making happens, often with the help of your LLM.</p><p>Whether you’re using React or other tools, you need to consider the logic behind your system’s choices.</p><p>Remember that all the stacks interact with each other. So, if you are doing something with React or OpenAI functions or something like that, that would fit into this.</p><p>Mathematical and logic solvers can provide stability and structure, enhancing your application’s decision-making capabilities.</p><p>This stack will continue to grow as we explore new ways of reasoning beyond just LLMs.</p><h4>The Personalization Stack</h4><p>The top layer of this framework is all about personalization. This is where your application develops its unique personality, style, and brand.</p><p>You might be tracking user interactions or customizing the conversation’s tone.</p><p>Think of it as fine-tuning the output via prompts and other manipulations.</p><p>This is the level of the stack that people talk about and a lot more people have done really interesting experiments in trying to get a large language model to be like a certain personality or to act in a certain way and respond in a certain way.</p><p>Personalization is key if you want your LLM-powered agent to connect with users on a more personal level.</p><h4>A Final Word</h4><p>When designing your LLM application or agent, consider the importance of each of these stacks. If you’re aiming for rich, role-playing interactions, invest in personalization.</p><p>If data integration is central to your project, the search/memory/data stack is your focus. Each layer offers different tools and opportunities to make your application shine.</p><p>As you’re architecting your application, remember that it’s not just about where each stack fits but also how they interact. Your choices at each level will impact the final product.</p><p>Whether you’re creating a mobile app or a sophisticated agent, think carefully about your tools, reasoning, and the heuristics your agent uses for decision-making.</p><p>This framework will empower you to create LLM chat apps, summarization apps, and LLM agents that can tackle diverse tasks.</p><p>Each stack has its unique role in shaping your application, and understanding them will be your key to success.</p><p>If you’re as intrigued by this topic as I am, feel free to share your thoughts in the comments. And if you found this post valuable, let me know.</p><p>Stay tuned for more exciting updates in the world of Large Language Models. Bye for now!</p><h3>Call to Action</h3><p>Know someone on the hunt for a top-notch development partner to bring their MVP dream to life? Connect them with me on <a href="https://www.linkedin.com/in/yattishramhorry/">LinkedIn</a> — your referrals are the fuel that drives innovation! 🚀</p><p>You can also find me here on <a href="https://github.com/yattishr">Github</a>!</p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=34302801fb79" width="1" height="1" alt="">]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Unleash the Power of Local Open Source LLM Hosting]]></title>
            <link>https://yattishr.medium.com/unleash-the-power-of-local-open-source-llm-hosting-e33bf6a9679f?source=rss-a96294ac6d05------2</link>
            <guid isPermaLink="false">https://medium.com/p/e33bf6a9679f</guid>
            <category><![CDATA[software-development]]></category>
            <category><![CDATA[open-source]]></category>
            <category><![CDATA[artificial-intelligence]]></category>
            <category><![CDATA[large-language-models]]></category>
            <category><![CDATA[education]]></category>
            <dc:creator><![CDATA[Yattish Ramhorry]]></dc:creator>
            <pubDate>Fri, 20 Oct 2023 13:46:21 GMT</pubDate>
            <atom:updated>2023-10-20T13:47:56.412Z</atom:updated>
            <content:encoded><![CDATA[<figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*AXfClI-ZMhT5z49VcgjGcw.jpeg" /><figcaption>Photo by <a href="https://unsplash.com/@jeremybishop?utm_content=creditCopyText&amp;utm_medium=referral&amp;utm_source=unsplash">Jeremy Bishop</a> on <a href="https://unsplash.com/photos/man-walking-on-gray-concrete-road-rBx6r5OUt7s?utm_content=creditCopyText&amp;utm_medium=referral&amp;utm_source=unsplash">Unsplash</a></figcaption></figure><p>Recently, I ventured out and experimented with hosting an open-source language model on my Windows laptop. Why would I do this, you might ask, if there already are options like GPT4, ChatGPT, PaLM, and others?</p><p>Well, there are a few reasons why I feel it is a good idea to host a small LLM locally.</p><p>Firstly, as a hard-core techie, it&#39;s a small project that is fun to explore, play around with, and get to understand how an LLM works. With hosting an open source LLM locally, you have the option to “look under the hood” at how a large language model works, and you can tinker with the settings, source code, and the different infrastructure options that you have available.</p><p>If you wanted to, you could also spin up a cloud server to host your language model in the cloud. But, if you’re only starting out and experimenting, you can get away with running a smaller model on your Windows / Mac.</p><p>Secondly, with a locally running language model, you have the option of fine-tuning the model on your own data.</p><p>If you’re part of a small enterprise, the costs of fine-tuning a proprietary model can become a costly affair.</p><p>If you have sensitive data that you do not want to be exposed to third parties, running an open-source, privately hosted language model is a significant benefit as your private data remains contained, and there are no risks of data leaks.</p><p>Furthermore, fluctuating vendor pricing makes it difficult to know for certain what your usage costs will be at the end of each billing cycle. However, you could set up hard and soft usage limits to avoid running into excessive costs on a proprietary model.</p><p>With proprietary language models, you are locked into a specific vendor, and there are limited options for flexibility. Thankfully, there are open source libraries available to enable a smooth transition from a proprietary model to an open source one.</p><p>Open source language models are getting better at providing better responses, as the open source community is making huge strides in improving the quality of outputs. However, in this aspect, proprietary models still have the upper hand, are far more accurate in their responses, and are improving daily. But there will come a time when open source models will catch up (and maybe even surpass) proprietary models.</p><p>With that being said, let&#39;s dive into the nitty-gritty of setting up and running your very own language model hosted on your personal laptop/PC. The steps for setting up an LLM locally are simple and straightforward, but it does require technical expertise and know-how to set up and configure.</p><h3>Setting up WebUI for Text Generation</h3><p>Currently, there are several open source language models that you could experiment with. A few open source models that are worth mentioning include Orca, Mistrel, and Falcon.</p><p>You can look up the technical specs for each of these open source models on Huggingface to learn more. Here are the links for some of these Huggingface models:</p><ul><li><a href="https://huggingface.co/pankajmathur/orca_mini_13b">pankajmathur/orca_mini_13b · Hugging Face</a></li><li><a href="https://huggingface.co/TheBloke">TheBloke (Tom Jobbins)</a></li><li><a href="https://huggingface.co/TheBloke/MistralLite-7B-GPTQ">TheBloke/MistralLite-7B-GPTQ · Hugging Face</a></li></ul><p>The first step is to set up the WebUI interface. This interface allows you to interact with, configure, and fine-tune the language model according to your needs. You can access the Github repo for WebUI at this link;</p><p><a href="https://github.com/oobabooga/text-generation-webui">GitHub - oobabooga/text-generation-webui: The definitive Web UI for local AI, with powerful features and easy setup.</a></p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*P8MzYvbzS3C_IdbkTAxEGg.png" /><figcaption>WebUI interface</figcaption></figure><p>The Github repository offers comprehensive installation instructions to get you up and running with the WebUI interface in no time. There are ‘one-click’ options available to download and extract ZIP files to your local drive.</p><p>There is also an option to run the Docker version of the WebUI interface if you prefer installing it this way. I personally haven’t experimented with using Docker for this experiment but maybe I might give this a try at a later stage.</p><p>I opted to clone the Gihub repo instead and set up the UI from there. If you’re going to clone the Github repo, I recommend that you do it in a <strong>Conda environment.</strong></p><p>I am doing the setup from my Windows laptop and have Anaconda installed, so the Conda terminal comes pre-installed. I would not recommend using a regular Windows terminal. Open up a Conda terminal, as shown in the image below.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*fqkgb5a7QHF-GLSIbLrZYg.png" /><figcaption>Anaconda terminal</figcaption></figure><p>From your Conda terminal, enter the following command:</p><p><strong>conda create -n tui python=3.10.9</strong></p><p>Here, we are specifying the name of the Python environment, “<strong>tui</strong>,” and the Python version. In this case, we are using <strong>Python version 3.10.9</strong>.</p><p>When you are promoted to Proceed, type in “y” or hit Enter since “y” is the default option.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*Ian9Kz-XGQ0396CVjnI5NQ.png" /></figure><p>When the setup completes successfully, you will see the following screen:</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*YWySBcvfufewH8TFrUilFg.png" /><figcaption>Activating the Conda environment.</figcaption></figure><p>Type in <strong>‘conda activate tui</strong>’ to activate the Conda environment. Your command prompt will now change to “tui” to show that you are in your new Python environment. The next step is to install the Python packages that WebUI requires. At your terminal, enter the following line;</p><p><strong>pip3 install torch torchvision torchaudio — index-url </strong><a href="https://download.pytorch.org/whl/cu117"><strong>https://download.pytorch.org/whl/cu117</strong></a></p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*O0wD55odwmZBXMvPV0Av2Q.png" /></figure><p>The next step is to clone the Github repository. The link for the WebUI Github repo is:</p><p><a href="https://github.com/oobabooga/text-generation-webui.git">GitHub - oobabooga/text-generation-webui: A Gradio web UI for Large Language Models. Supports transformers, GPTQ, AWQ, llama.cpp (GGUF), Llama models.</a></p><p>At your Conda terminal, type in:</p><p>“<strong>git clone </strong><a href="https://github.com/oobabooga/text-generation-webui.git"><strong>https://github.com/oobabooga/text-generation-webui.git</strong></a>”</p><p>After cloning the Git repo, you’ll need to install all the Python modules for the repository. At your terminal, enter in:</p><p><strong>pip install -r requirements.txt</strong></p><p>Since you are using a Conda Python environment, you won’t run into any dependency issues while doing a `pip install.`</p><p>If you are using an NVIDIA GPU, there&#39;s an additional step that is required. For Linux, run the following command:</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*hAAqiTWd-jok3Tens2-ErA.png" /></figure><p>For Windows, run the following command:</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/711/1*9u3aAxxICNcWsV56MJv31A.png" /></figure><p>If you are just working on a CPU and you don’t want to run these models on your GPU, you can skip the steps above.</p><p>My laptop does not have a GPU, so I skipped the steps above. Now that you’ve installed all the dependencies, the only thing that is left is to start up your server, which you can do by typing in the following command at your terminal:</p><p><strong>python server.py</strong></p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*cpBs6Ooo28Q8N3pC-VC3Aw.png" /></figure><p>Copy the URL provided, and paste it into your Chrome browser, to start up the WebUI interface, which will look like the image below:</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1002/1*PbaAyaBgG5Wg-zXir7iVYQ.png" /></figure><p>Once you have the WebUI interface running, you will need to hook it up to an open source language model. There are three different ways in which you can do this.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*l-GaXC3GbBEo3B9cHg9KQQ.png" /></figure><p>The first method is by downloading the Huggingface model directly from the WebUI interface.</p><p>As I mentioned above, there are several open source models for you to choose from. For the purposes of my experiment, I <strong>initially </strong>chose to use the Mistral-7b model, which wasn&#39;t the best option since I later discovered that WebUI does not support the Mistral models yet.</p><p>You are free to experiment with any open source model. With so many available, you are not limited to using any specific model. However, as a first start, I recommend that you start with using the <a href="https://huggingface.co/pankajmathur/orca_mini_13b"><strong>orca_mini_13b</strong></a><strong>.</strong></p><figure><img alt="" src="https://cdn-images-1.medium.com/max/740/1*3uwB5d9TVsewPZN58UEayw.png" /><figcaption>Orca Mini 13b LLM model.</figcaption></figure><p>Copy the link to the Huggingface model, and paste it into your WebUI interface. Go to the Models tab in WebUI, and paste in the link to the Huggingface model. Click the Download button when you are ready to begin downloading the model.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*QYq1u4acmDqbdpIOZBfUTQ.png" /></figure><p>The second method for downloading the Huggingface model is to download it from the Conda terminal using the following command:</p><p><strong>python download-model.py pankajmathur/orca_mini_13b</strong></p><p>In the command above, I have pasted the link to the Huggingface model to download the Orca mini 13b model.</p><p>The final method of downloading a Huggingface model is doing it all manually, which is not the most ideal option, as it can lead to unnecessary issues and frustrations. If you want to follow this method, open the link to the Huggingface model in your web browser, and navigate to the “<strong>Files and Folders”</strong> tab</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*Uryt_gsroxM3zfMDb-_nnw.png" /></figure><p>Then, download each of the files individually, and copy them into the <strong>models</strong> folder in your text-generation-ui project.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/809/1*Of5F2bnabPbfKYKo1IU4zA.png" /></figure><p>Once you’ve successfully installed the model, go back into the WebUI interface and apply the model that you have downloaded in the <strong>Model</strong> tab.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/778/1*zwdtB8n-SlrrVr3TXuqBvA.png" /></figure><p>And that is all that is needed for setting up the WebUI interface and configuring an open source model!</p><p>There are additional settings that you could configure to optimize your environment. For example, if you are using a CPU, you can toggle the “<strong>cpu</strong>” option.</p><p>What&#39;s nice about using WebUI is that you can fine-tune the model on your own data. I have not yet explored this option as yet, as I am still familiarising myself with the interface and exploring different models etc. You can access the fine-tuning option by navigating to the “Training” tab of the WebUI interface.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*O_Ws0Ymja_7r2K42Ah1jQA.png" /></figure><p>A benefit of hosting an open source language model on your local PC is that you have access to an LLM even when there is no internet access available. So if you are traveling by train, bus, or airplane without internet access, you still have the ability to perform text generation tasks from your local LLM.</p><p>I hope this post has helped you with experimenting with open source models and got you interested in further developing applications with large language models!</p><p><strong>Note: All the open source language models that I have mentioned in this article are <em>only </em>meant for text generation.</strong></p><h3>Call to Action</h3><p>Know someone on the hunt for a top-notch development partner to bring their MVP dream to life? Connect them with me on <a href="https://www.linkedin.com/in/yattishramhorry/">LinkedIn</a> — your referrals are the fuel that drives innovation! 🚀</p><p>You can also find me here on <a href="https://github.com/yattishr">Github</a>!</p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=e33bf6a9679f" width="1" height="1" alt="">]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Building Blocks of a Successful Web App: Selecting the Right Tech Stack for Seamless Development]]></title>
            <description><![CDATA[<div class="medium-feed-item"><p class="medium-feed-image"><a href="https://yattishr.medium.com/building-blocks-of-a-successful-web-app-selecting-the-right-tech-stack-for-seamless-development-9edacb953fc6?source=rss-a96294ac6d05------2"><img src="https://cdn-images-1.medium.com/max/1920/1*bm0U0uNQsq8j3LAn2cRBQA.jpeg" width="1920"></a></p><p class="medium-feed-snippet">When it comes to building a web app, one of the most crucial decisions you&#x2019;ll make is selecting the right tech stack.</p><p class="medium-feed-link"><a href="https://yattishr.medium.com/building-blocks-of-a-successful-web-app-selecting-the-right-tech-stack-for-seamless-development-9edacb953fc6?source=rss-a96294ac6d05------2">Continue reading on Medium »</a></p></div>]]></description>
            <link>https://yattishr.medium.com/building-blocks-of-a-successful-web-app-selecting-the-right-tech-stack-for-seamless-development-9edacb953fc6?source=rss-a96294ac6d05------2</link>
            <guid isPermaLink="false">https://medium.com/p/9edacb953fc6</guid>
            <category><![CDATA[software-design-company]]></category>
            <category><![CDATA[software-design]]></category>
            <category><![CDATA[open-source]]></category>
            <category><![CDATA[software-development]]></category>
            <dc:creator><![CDATA[Yattish Ramhorry]]></dc:creator>
            <pubDate>Tue, 19 Sep 2023 09:44:10 GMT</pubDate>
            <atom:updated>2023-09-19T09:44:10.034Z</atom:updated>
        </item>
        <item>
            <title><![CDATA[Unlocking Open Source Gold: A Developer’s Guide to Finding Projects to Contribute]]></title>
            <link>https://yattishr.medium.com/unlocking-open-source-gold-a-developers-guide-to-finding-projects-to-contribute-6a873e5fd830?source=rss-a96294ac6d05------2</link>
            <guid isPermaLink="false">https://medium.com/p/6a873e5fd830</guid>
            <category><![CDATA[software-architecture]]></category>
            <category><![CDATA[open-source]]></category>
            <category><![CDATA[software-engineering]]></category>
            <category><![CDATA[software-development]]></category>
            <category><![CDATA[technology-news]]></category>
            <dc:creator><![CDATA[Yattish Ramhorry]]></dc:creator>
            <pubDate>Tue, 13 Jun 2023 11:51:08 GMT</pubDate>
            <atom:updated>2023-06-13T11:51:08.084Z</atom:updated>
            <content:encoded><![CDATA[<figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*OUOQZWQ3gSc-shAmmuUK3g.jpeg" /><figcaption>Photo by <a href="https://unsplash.com/fr/@marvelous?utm_source=unsplash&amp;utm_medium=referral&amp;utm_content=creditCopyText">Marvin Meyer</a> on <a href="https://unsplash.com/photos/SYTO3xs06fU?utm_source=unsplash&amp;utm_medium=referral&amp;utm_content=creditCopyText">Unsplash</a></figcaption></figure><p>In the world of software development, contributing to open source projects is not only a way to give back to the community but also a fantastic opportunity to enhance your skills, collaborate with like-minded individuals, and make a meaningful impact.</p><p>However, finding the right open source project to contribute to can be a daunting task. In this article, we will explore some effective strategies and platforms that will help you discover exciting open source projects and help you with making valuable contributions to the projects you love 💛</p><h3>Define Your Interests and Goals</h3><p>Before diving into the vast sea of open source projects, take a moment to reflect on your interests, skills, and goals. Identify the programming languages, frameworks, or domains you enjoy working with.</p><p>This self-reflection will serve as a compass to guide your search and ensure that you find projects that align with your passions.</p><h3>Leverage GitHub</h3><p>GitHub is a goldmine for open source projects, and it offers numerous features to help you find suitable projects to contribute to. Start by exploring the “<a href="https://github.com/explore">Explore</a>” section on GitHub, where you’ll find trending repositories, curated collections, and topics that pique your interest.</p><p>Additionally, use the GitHub search bar to find projects based on keywords, programming languages, or specific topics.</p><h3>Explore Open Source Directories</h3><p>Open source directories are treasure troves of diverse projects actively seeking contributions. These directories compile and categorize open source projects, making it easier for developers to discover projects aligned with their interests and expertise.</p><h4>Open Source Friday</h4><p><a href="https://opensourcefriday.com/">Open Source Friday</a> is a platform that promotes open source contributions by encouraging developers to dedicate time each Friday to work on open source projects.</p><p>The platform features a curated list of projects from various domains, programming languages, and difficulty levels. It’s an excellent starting point for developers who want to explore different projects and contribute regularly.</p><h4>Awesome Open Source</h4><p><a href="https://awesomeopensource.com/">Awesome Open Source</a> is a community-curated list of open source projects spanning a wide range of domains, including web development, machine learning, mobile apps, and more.</p><p>The platform showcases projects based on popularity, relevance, and community recommendations. Developers can filter projects by programming language, stars, forks, and other criteria, making it easier to find projects that match their preferences.</p><h4>Up For Grabs</h4><p><a href="https://up-for-grabs.net/">Up For Grabs</a> is a website specifically designed to connect open source projects with contributors. It lists projects with open issues or tasks suitable for newcomers.</p><p>These projects often tag their issues as “up-for-grabs” or “good-first-issue,” indicating that they welcome contributions from developers with little or no prior experience with the project.</p><p>It’s a fantastic resource for developers who want to dip their toes into open source contributions and gain hands-on experience.</p><h4>CodeTriage</h4><p><a href="https://www.codetriage.com/">CodeTriag</a>e is another platform that helps developers find open source projects in need of active maintainers and contributors.</p><p>The platform allows you to subscribe to projects of interest, and you’ll receive a curated list of issues via email.</p><p>This ensures that you stay up to date with projects you care about and have a steady stream of potential contributions to work on.</p><h4>Language-Specific Directories</h4><p>Many programming languages have their own dedicated directories for open source projects. For example, Ruby developers can explore RubyGems, a repository of Ruby libraries and applications.</p><p>Similarly, Python developers can check out PyPI, the Python Package Index, which hosts a vast collection of Python packages and projects.</p><p>These language-specific directories provide a focused approach to finding projects tailored to a particular ecosystem.</p><p>When exploring open source directories, it’s essential to pay attention to project descriptions, documentation, and community engagement.</p><p>Look for projects that have an active community, clear contribution guidelines, and responsive maintainers. This ensures that you’ll have the support and guidance needed to make meaningful contributions.</p><p>Remember, open source directories are constantly evolving, with new projects and updates being added regularly.</p><p>It’s a good practice to revisit these directories periodically, keeping an eye out for exciting new projects and opportunities to contribute.</p><h3>Engage in Community Discussions</h3><p>Engaging in community discussions is an excellent way to identify projects in need of contributions and connect with fellow developers. Participate in forums, mailing lists, and chat rooms related to your preferred programming language or framework.</p><p>Pay attention to discussions about open issues, feature requests, or projects seeking contributors. You might stumble upon a project that matches your interests and where your skills can be put to good use.</p><h3>Hackathons and Code Challenges</h3><p>Participating in hackathons or code challenges not only hones your skills but also exposes you to potential open source projects.</p><p>During these events, you might encounter projects looking for contributors or even get the opportunity to collaborate with other developers on open source initiatives.</p><p>Keep an eye out for hackathons and coding competitions in your local community or online platforms like Devpost and Kaggle.</p><h3>Follow Influencers and Blogs</h3><p>In the developer community, influencers, and industry experts often share their insights and highlight interesting open source projects.</p><p>Follow influential developers on social media platforms like Twitter, LinkedIn, and Medium. Subscribe to developer-focused blogs and newsletters that cover open source contributions.</p><p>This way, you’ll stay up to date with the latest trends and find out about new projects seeking contributors.</p><h3>Contribute to Projects You Use</h3><p>Consider contributing to open source projects that you already use or benefit from in your own work.</p><p>If you come across a bug or missing feature in a tool or library you rely on, take the opportunity to fix it or implement the feature yourself.</p><p>Contributing to projects you’re familiar with not only provides practical value to your workflow but also enhances your understanding of the project’s codebase.</p><h3>Attend Meetups and Conferences:</h3><p>Networking at developer meetups and conferences can lead you to exciting open source projects. Engage in conversations with fellow attendees, speakers, and organizers.</p><p>Share your interest in contributing to open source, and you might receive recommendations or invitations to collaborate on existing projects or upcoming initiatives.</p><h3>Conclusion</h3><p>Contributing to open source projects is a fulfilling and rewarding experience that helps you grow as a developer.</p><p>By leveraging open source directories, you can easily discover a wide range of projects, from small utility libraries to large-scale frameworks.</p><p>Don’t hesitate to explore different categories, experiment with new technologies, and contribute to projects that align with your interests and career aspirations.</p><p>Remember, finding the right project takes time and patience. Don’t be afraid to explore different projects, experiment, and collaborate with others.</p><p>Happy exploring and contributing to the vibrant world of open source!</p><p>If you know anyone looking for a dev shop and need an MVP built, please intro them to me over <a href="https://www.linkedin.com/in/yattishramhorry/">LinkedIn</a> — thank you for the referrals!</p><p>You can also find me on <a href="https://github.com/yattishr">Github</a>!</p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=6a873e5fd830" width="1" height="1" alt="">]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[How to Share Your ChatGPT Conversations with Others]]></title>
            <link>https://yattishr.medium.com/how-to-share-your-chatgpt-conversations-with-others-8151bf2e42dd?source=rss-a96294ac6d05------2</link>
            <guid isPermaLink="false">https://medium.com/p/8151bf2e42dd</guid>
            <category><![CDATA[chatgpt]]></category>
            <category><![CDATA[large-language-models]]></category>
            <category><![CDATA[technology]]></category>
            <category><![CDATA[education]]></category>
            <dc:creator><![CDATA[Yattish Ramhorry]]></dc:creator>
            <pubDate>Thu, 01 Jun 2023 13:42:18 GMT</pubDate>
            <atom:updated>2023-06-01T13:42:18.001Z</atom:updated>
            <content:encoded><![CDATA[<figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*w9u0WvmXRSQLTaTtVorP6Q.jpeg" /><figcaption>Photo by <a href="https://unsplash.com/@jupp?utm_source=unsplash&amp;utm_medium=referral&amp;utm_content=creditCopyText">Jonathan Kemper</a> on <a href="https://unsplash.com/photos/MMUzS5Qzuus?utm_source=unsplash&amp;utm_medium=referral&amp;utm_content=creditCopyText">Unsplash</a></figcaption></figure><p>If you are a user of <a href="https://chat.openai.com/">ChatGPT</a>, the online chatbot powered by OpenAI’s GPT-3 model, you might have had some interesting, funny, or insightful exchanges with the bot that you want to share with others.</p><p>But how do you do that? Taking screenshots is tedious and cumbersome, and copying and pasting text is not very appealing. Fortunately, there is a better way: <strong>shared links</strong>.</p><p>Shared links are a new feature that allows you to generate a unique URL for any of your ChatGPT conversations, which you can then share with your friends, colleagues, and collaborators.</p><p>With shared links, you can let others see — and continue — your ChatGPT conversations in a simple and convenient way.</p><p>In this blog post, I will show you how to create and use shared links, as well as answer some frequently asked questions about this feature.</p><h3>How to create a shared link</h3><p>To create a shared link, you need to have an account on chat.openai.com, the website where you can access ChatGPT. Shared links are currently available only on the website, not on the iOS app.</p><p>To create a shared link for a conversation, follow these steps:</p><p>1. Hover over the chat that you want to share and click on the shared link icon (a chain link symbol) on the right side of the chat box.</p><p>2. You will see a preview of the conversation snapshot that you are about to share. You can scroll up and down to see the whole conversation.</p><p>3. You have the option to share your name or anonymously by clicking on the three dots on the top right corner of the preview window. If you share your name, it will appear at the top of the conversation on the shared link page. If you share anonymously, your name will not be shown.</p><p>4. When you are ready, click on the green button that says “Copy Link” to copy the URL of your shared link to your clipboard. You can then paste it anywhere you want to share it.</p><h3>How to use a shared link</h3><p>When someone clicks on your shared link, they will be taken to a page where they can see your conversation with ChatGPT. They can also continue the conversation by typing in their own messages and getting responses from ChatGPT.</p><p>If they have an account on chat.openai.com, they can also import the conversation into their chat history by clicking on the “Import” button on the top right corner of the page. This will allow them to save the conversation and access it later from their account.</p><p>If they don’t have an account on chat.openai.com, they can still view and continue the conversation, but they won’t be able to import it or save it.</p><h3>FAQs about shared links</h3><p>Here are some common questions and answers about shared links:</p><h3>Are shared links public? Who can access my shared links?</h3><p>§ Anyone who has access to a shared link can view and continue the linked conversation. We encourage you not to share any sensitive content, as anyone with the link can access the conversation or share it with other people.</p><p>§ If you’ve created a link that you no longer want to be public, you can delete the link or clear the conversation. The conversation will no longer be accessible via the shared link, but if a user imported the conversation into their chat history, deleting your link will not remove the conversation from their chat history.</p><h3>What information about me is included in the shared link I generate?</h3><p>§ By default, shared links will not include your name or any other personal information. You can choose to add your name when creating the link by clicking on the ellipsis in the shared link window, then clicking “Share your name.” If you add your name, it will appear on the page of your shared link at the top of the conversation.</p><p>§ Shared links will also not include any information about which ChatGPT model or settings you used for your conversation. The linked conversation will use the default model and settings for anyone who views or continues it.</p><h3>How do I update or delete a shared link after it is created?</h3><p>§ You can update or delete a shared link by opening up the link share modal for that conversation (by hovering over the chat and clicking on the shared link icon) and clicking on the three dots on the top right corner of the preview window.</p><p>§ You can update your name visibility (share your name or make it anonymous) by clicking on the corresponding option. To save your changes, you need to click on the green button that says “Update and Copy Link”.</p><p>§ You can delete a shared link by clicking on “Delete Link”. This will remove the link from your account and make it inaccessible for anyone who tries to open it.</p><h3>Where can I find all my shared links?</h3><p>§ You can find all your shared links in a history panel accessible via the settings modal (by clicking on your profile picture on chat.openai.com). The history panel shows all your links along with their creation dates and names (if any). You can also delete all your links at once by clicking on “Delete All Links.”</p><h3>Conclusion</h3><p>Shared links are a great way to share your ChatGPT conversations with others in an easy and fun way. They allow you to showcase your creativity, humor, or insights with ChatGPT without having to resort to screenshots or plain text. They also let others join in and continue your conversations with ChatGPT.</p><p>If you haven’t tried ChatGPT yet, I encourage you to sign up for an account on chat.openai.com and start chatting with one of the most advanced AI models in the world. And if you have tried ChatGPT already, I hope you enjoy using shared links and sharing your conversations with others.</p><p>Happy chatting!</p><p>If you know anyone looking for a dev shop and need an MVP built, please intro them to me over <a href="https://www.linkedin.com/in/yattishramhorry/">LinkedIn</a> — thank you for the referrals!</p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=8151bf2e42dd" width="1" height="1" alt="">]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Revolutionize Your Machine Learning and Recommendation Systems with Vector Databases: Say Goodbye…]]></title>
            <link>https://yattishr.medium.com/revolutionize-your-machine-learning-and-recommendation-systems-with-vector-databases-say-goodbye-to-fc42a5b46c78?source=rss-a96294ac6d05------2</link>
            <guid isPermaLink="false">https://medium.com/p/fc42a5b46c78</guid>
            <category><![CDATA[education]]></category>
            <category><![CDATA[technology]]></category>
            <category><![CDATA[vector-database]]></category>
            <category><![CDATA[database]]></category>
            <category><![CDATA[machine-learning]]></category>
            <dc:creator><![CDATA[Yattish Ramhorry]]></dc:creator>
            <pubDate>Tue, 02 May 2023 07:31:32 GMT</pubDate>
            <atom:updated>2023-05-03T08:16:29.081Z</atom:updated>
            <content:encoded><![CDATA[<h3>Revolutionize Your Machine Learning and Recommendation Systems with Vector Databases: Say Goodbye to Slow and Inefficient Searches!</h3><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*9Towvz5yDOyyBdKsXM2d2A.jpeg" /><figcaption>Photo by <a href="https://unsplash.com/@kaleidico?utm_source=unsplash&amp;utm_medium=referral&amp;utm_content=creditCopyText">Kaleidico</a> on <a href="https://unsplash.com/photos/3V8xo5Gbusk?utm_source=unsplash&amp;utm_medium=referral&amp;utm_content=creditCopyText">Unsplash</a></figcaption></figure><p>Vector databases, also known as vectorized databases or vector similarity databases, are a type of database that are designed to store and manipulate vector data efficiently.</p><p>Vector data refers to data that can be represented as vectors, which are mathematical representations of objects or data points in multi-dimensional space.</p><p>Vector databases are particularly well-suited for handling high-dimensional data, such as embeddings or feature vectors, which are commonly used in machine learning and natural language processing tasks.</p><p>Vector databases store vectors as data points and provide specialized indexing and querying capabilities for vector-based similarity search.</p><p>They are optimized for performing vector operations, such as vector similarity computation and nearest neighbor search, which are common tasks in machine learning and recommendation systems.</p><p>Vector databases enable efficient storage and retrieval of large-scale vector data, making them ideal for applications that require fast and accurate similarity search, such as image retrieval, text search, and recommendation systems.</p><p>Examples of vector databases include:</p><ol><li><a href="https://engineering.fb.com/2017/03/29/data-infrastructure/faiss-a-library-for-efficient-similarity-search/">Faiss</a>: An open-source vector similarity search library developed by Facebook. Faiss provides fast and memory-efficient indexing and querying for large-scale vector data and supports various similarity metrics, such as cosine similarity and Euclidean distance.</li><li><a href="https://milvus.io/">Milvus</a>: An open-source vector database that provides vector indexing and searching capabilities. Milvus supports various indexing algorithms, such as IVF (Inverted File with Vocabulary Tree) and HNSW (Hierarchical Navigable Small World), and is designed for handling large-scale vector data.</li><li><a href="https://pypi.org/project/annoy/1.0.3/">Annoy</a>: An open-source C++ library for approximate nearest neighbor search, which can be used as a vector database. Annoy provides fast and memory-efficient indexing and querying for vector data and supports various distance metrics, such as Euclidean distance and cosine similarity.</li><li><a href="https://redis.com/solutions/use-cases/vector-database/">Redis</a>: Redis Vector databases offer a number of benefits over other vector databases. For example, Redis vector databases provide real-time search performance, built-in fault tolerance, and resilience to ensure your search applications never experience downtime. An additional benefit of a Redis vector database is the reduction of architectural and application complexity.</li></ol><p>Now, let’s compare vector databases with NoSQL and relational databases:</p><ol><li>Data Representation: Vector databases are specifically designed to store and manipulate vector data efficiently, whereas NoSQL and relational databases are generally designed for storing more traditional data types, such as text, numbers, and multimedia. Vector databases provide specialized indexing and querying capabilities for vector-based similarity search, which is not available in NoSQL or relational databases.</li><li>Performance: Vector databases are optimized for vector operations, such as vector similarity computation and nearest neighbor search, and can provide fast and efficient performance. NoSQL and relational databases may not be optimized for vector operations and may not perform well in tasks involving vector similarity search.</li><li>Scalability: Vector databases are designed to handle large-scale vector data efficiently, making them suitable for big data applications. NoSQL and relational databases may also be able to handle large-scale data, but they may not be as optimized for vector data and vector operations as vector databases.</li><li>Flexibility: NoSQL and relational databases provide more flexibility in terms of data modeling and schema design, allowing for dynamic and evolving data structures. Vector databases, on the other hand, may have more constraints in terms of data modeling and may require a fixed schema for vector data.</li><li>Querying Capabilities: Vector databases provide specialized indexing and querying capabilities for vector-based similarity search, which is a key feature for many machine learning and recommendation system applications. NoSQL and relational databases may not provide built-in support for vector similarity search or may require additional customization to achieve similar capabilities.</li></ol><p>In summary, vector databases are specialized databases optimized for efficiently storing and querying vector data and are well-suited for applications requiring fast and accurate vector similarity search.</p><p>NoSQL and relational databases, on the other hand, are more general-purpose databases that may not be optimized for vector operations but provide more flexibility in terms of data modeling and schema design.</p><p>The choice between vector databases, NoSQL, and relational databases depends on the specific requirements of the application and the nature of the data being stored and queried.</p><p>If you know anyone looking for a dev shop and need an MVP built, <a href="https://www.linkedin.com/in/yattishramhorry/">please intro them to me over LinkedIn</a> — thank you for the referrals!</p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=fc42a5b46c78" width="1" height="1" alt="">]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Building for the Future: Embracing API-First Development]]></title>
            <link>https://yattishr.medium.com/api-first-development-ccb238ad6c62?source=rss-a96294ac6d05------2</link>
            <guid isPermaLink="false">https://medium.com/p/ccb238ad6c62</guid>
            <category><![CDATA[education]]></category>
            <category><![CDATA[software]]></category>
            <category><![CDATA[development]]></category>
            <category><![CDATA[api-development]]></category>
            <category><![CDATA[technology]]></category>
            <dc:creator><![CDATA[Yattish Ramhorry]]></dc:creator>
            <pubDate>Tue, 11 Apr 2023 07:36:57 GMT</pubDate>
            <atom:updated>2023-05-03T08:17:42.226Z</atom:updated>
            <content:encoded><![CDATA[<p>API-first development is a development approach that emphasizes the creation of an API before any other part of the application.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*Fi36khUpNsXie1hDlNAE1Q.jpeg" /><figcaption>Photo by <a href="https://unsplash.com/@sigmund?utm_source=unsplash&amp;utm_medium=referral&amp;utm_content=creditCopyText">Sigmund</a> on <a href="https://unsplash.com/photos/Im_cQ6hQo10?utm_source=unsplash&amp;utm_medium=referral&amp;utm_content=creditCopyText">Unsplash</a></figcaption></figure><p>API-first development approach enables developers to build flexible, scalable, and easily maintainable applications. This blog will explore the concept of API-first development, including its benefits, how to build APIs, and popular frameworks used to build APIs.</p><h3>Benefits of API-First Development</h3><p>API-first development offers several benefits for developers. Firstly, it promotes a modular and scalable architecture that allows developers to add or remove functionalities without affecting the entire application.</p><p>Secondly, it enables developers to build applications that are device-agnostic, meaning that the same API can be used across multiple platforms, such as desktops, mobile devices, and IoT devices.</p><p>Thirdly, API-first development encourages collaboration between developers and stakeholders, making it easier to iterate on the application during development.</p><h3>Building APIs</h3><p>The first step in API-first development is to create the API. APIs are typically created using a <em>RESTful</em> architecture, which involves creating a set of endpoints that clients can use to communicate with the server.</p><p><strong>REST </strong>(Representational State Transfer) is an architectural style that is commonly used in web development to build web services and APIs.</p><p><strong><em>RESTful </em></strong>architecture is an approach to building web services that follow the principles of REST. RESTful APIs are designed around resources, which are identified by URLs.</p><p>Clients can interact with these resources by making HTTP requests to their corresponding URLs. RESTful APIs use HTTP methods such as GET, POST, PUT, and DELETE to perform CRUD (create, read, update, delete) operations on resources.</p><p>A RESTful API should also follow the following constraints, as outlined by Roy Fielding in his dissertation, “<a href="https://home.cs.colorado.edu/~kena/classes/7818/f08/lectures/lecture_9_fielding_disserta.pdf"><em>Architectural Styles and the Design of Networkbased Software Architectures</em></a>”:</p><ol><li><strong>Client-server architecture</strong>: The client and server should be independent of each other and should be able to evolve independently.</li><li><strong>Statelessness</strong>: The server should not store any client context between requests. Each request should contain all the necessary information to perform the request.</li><li><strong>Cacheability</strong>: The server should indicate whether a response can be cached or not. This reduces the number of requests made to the server and improves performance.</li><li><strong>Layered system</strong>: A client should not be able to tell whether it communicates directly with the server or an intermediary.</li><li><strong>Uniform interface</strong>: The interface between the client and server should be standardized to allow for independence between the two.</li></ol><p>Following these constraints can help ensure your RESTful API is easy to use, maintain, and scale.</p><p>Endpoints are essentially URLs that are used to retrieve or manipulate data on the server. Here is an example of an endpoint in a RESTful API:</p><p>GET /api/books</p><p>This endpoint would return a list of books stored on the server. Similarly, a POST endpoint could be used to add new books to the server:</p><p>POST /api/books</p><p>When a client sends a POST request to this endpoint, it would add the book to the server&#39;s database.</p><p>Here is an example of how to create an endpoint in Node.js using the Express framework:</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/753/1*OOqShqv1YT63RJAe-jP0vw.png" /><figcaption>Create an endpoint in Node.js using the Express framework</figcaption></figure><p>This code creates two endpoints using the GET and POST methods, respectively: /api/books and /api/books</p><h3>Popular Frameworks for Building APIs</h3><p>There are several popular frameworks that developers can use to build APIs. Here are some examples:</p><ol><li><strong>Express.js</strong> — is a popular Node.js framework for building web applications and APIs. It provides a simple and flexible routing system that makes it easy to create endpoints.</li><li><strong>Django REST Framework</strong> — Django is a Python web framework with a RESTful API called Django REST Framework. It provides a wide range of features, including serialization, authentication, and pagination.</li><li><strong>Ruby on Rails</strong> — Ruby on Rails is a popular web framework that includes a built-in API framework called Active Model Serializers. It allows developers to easily create and serialize JSON data for use in their APIs.</li></ol><h3>What is Authentication, and Why is it necessary?</h3><p>Authentication and securing your API endpoints are critical aspects of API-first development.</p><p>Without proper authentication and security measures, your API may be vulnerable to attacks, compromising sensitive data and significantly damaging your application and reputation.</p><p>Authentication is the process of verifying the identity of a user or system. It ensures that only authorized users can access the API endpoints.</p><p>There are several authentication methods that you can use to secure your API. Here are some of the most common methods:</p><ol><li><strong>Token-based Authentication</strong> — Token-based authentication involves issuing a token to the client after they have provided their credentials.</li><li>The client then includes the token in every subsequent request to the API. The server validates the token to ensure that the request is authorized.</li><li><strong>OAuth 2.0</strong> — OAuth 2.0 is a widely-used authentication protocol that allows users to grant third-party applications access to their resources. It involves a series of redirects and exchanges between the client, server, and user.</li><li><strong>Basic Authentication</strong> — Basic authentication involves sending the username and password in plain text with each request. This method is not recommended as it is vulnerable to interception and replay attacks.</li></ol><p>Here is an example of how to implement token-based authentication in Node.js using the jsonwebtoken library:</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/887/1*NGhgZ7x2Lk7oi_HPce1d0Q.png" /><figcaption>Implement token-based authentication in Node.js using the jsonwebtoken library</figcaption></figure><p>This code includes two endpoints: /login and /api/books. The /login endpoint is responsible for issuing a token to the client after they have provided their credentials.</p><p>The /api/books endpoint checks if the token is valid before returning the list of books from the server&#39;s database.</p><p>Securing Your API Endpoints Securing your API endpoints involves protecting them from unauthorized access and attacks. Here are some best practices for securing your API endpoints:</p><ol><li><strong>Use HTTPS</strong> — HTTPS encrypts the data sent between the client and server, protecting it from interception and tampering.</li><li><strong>Implement Rate Limiting</strong> — Rate limiting limits the number of requests a client can make to the API within a specified period. This helps to prevent denial-of-service attacks.</li><li><strong>Validate Input</strong> — Validate all input received from clients to prevent injection attacks.</li><li><strong>Use Role-Based Access Control</strong> — Role-based access control allows you to grant access to API endpoints based on the user’s role.</li></ol><p>Here is an example of how to implement rate limiting in Node.js using the express-rate-limit library:</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/788/1*-62_5fKRJ3n9dH8f8_M0Vw.png" /><figcaption>Rate limiting in Node.js using the express-rate-limit library</figcaption></figure><p>This code implements rate limiting for the /api/books endpoint, allowing a maximum of 100 requests per IP address within a 15-minute window.</p><h3><strong>Conclusion</strong></h3><p>API-first development is a powerful approach to building modern applications that are scalable and flexible.</p><p>By designing your application around your API, you can ensure it is easy to maintain and adapt to changing requirements. However, ensuring that your API is secure and follows best practices for authentication and endpoint security is important.</p><p>With popular frameworks like Express.js, Django REST Framework, and Ruby on Rails, developers have access to powerful tools to create robust and flexible APIs.</p><p>If you enjoyed reading this article, you may also enjoy reading;</p><p><a href="https://yattishr.medium.com/debugging-nightmare-avoid-it-by-testing-your-code-with-jest-5e1a78a54566"><strong>Debugging Nightmare? Avoid It by Testing Your Code with Jest!</strong></a></p><p>I also wrote another blog about <a href="https://yattishr.medium.com/my-experience-and-learnings-from-building-an-exercise-tracker-with-express-and-mongodb-5465cef211a2"><strong>My Experience and Learnings from Building an Exercise Tracker with Express and MongoDB</strong></a><strong>.</strong></p><p>I hope this article was useful and informative. Happy coding!</p><p>If you know anyone looking for a dev shop and need an MVP built, <a href="https://www.linkedin.com/in/yattishramhorry/">please intro them to me over LinkedIn</a> — thank you for the referrals!</p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=ccb238ad6c62" width="1" height="1" alt="">]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[My Experience and Learnings from Building an Exercise Tracker with Express and MongoDB]]></title>
            <link>https://yattishr.medium.com/my-experience-and-learnings-from-building-an-exercise-tracker-with-express-and-mongodb-5465cef211a2?source=rss-a96294ac6d05------2</link>
            <guid isPermaLink="false">https://medium.com/p/5465cef211a2</guid>
            <category><![CDATA[freecodecamp]]></category>
            <category><![CDATA[api]]></category>
            <category><![CDATA[api-development]]></category>
            <category><![CDATA[software]]></category>
            <category><![CDATA[software-development]]></category>
            <dc:creator><![CDATA[Yattish Ramhorry]]></dc:creator>
            <pubDate>Thu, 30 Mar 2023 13:28:39 GMT</pubDate>
            <atom:updated>2023-05-03T08:18:21.760Z</atom:updated>
            <content:encoded><![CDATA[<figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*7A_qDAFflD2gO34e0mkNjg.png" /><figcaption>Setting up the routing for the Node and Express application.</figcaption></figure><p>As someone who is passionate about software development, I ventured out to FreeCodeCamp to attempt their <a href="https://www.freecodecamp.org/learn/back-end-development-and-apis/">Backend Development and APIs Certification</a>.</p><p>One of the projects which I was challenged to build for the certification was to create a simple exercise tracker application to keep track of exercise workouts. After researching various technologies and frameworks, I chose to use Express.js and MongoDB for my project.</p><p>During the development of this project, I learned a lot about web development, databases, and testing. I’ll share some of my experiences and learnings in this blog post.</p><p>First, I learned how to use Express.js to create a RESTful API. I started by setting up my server and routing endpoints for creating new users and adding exercises to their accounts. I used middleware functions to handle incoming requests and extract data from the request body or query parameters.</p><p>Next, I learned how to use MongoDB to store data. I created a schema for my User and Exercise models and used Mongoose to connect to my database and perform CRUD operations.</p><p>I learned how to query my database using the Mongoose API and how to use aggregation pipelines to perform more complex queries.</p><p>One of the biggest challenges I faced was writing tests for my application. I learned how to use Jest to write unit and integration tests for my server endpoints and database models.</p><p>I wrote a blog post about setting up different test scenarios for your project using Jest here; <a href="https://medium.com/@yattishr/debugging-nightmare-avoid-it-by-testing-your-code-with-jest-5e1a78a54566"><strong>Debugging Nightmare? Avoid It by Testing Your Code with Jest!</strong></a></p><p>I also learned how to use Supertest to simulate HTTP requests and test my endpoints. Testing helped me identify and fix bugs in my application and gave me confidence that my code was working as expected.</p><p>Another important skill I developed was error handling. I learned how to handle errors at various levels of my application, from input validation to database queries. I also learned how to use status codes and error messages to communicate with clients and help them debug issues.</p><p>Finally, I learned how to deploy my application to a production environment. I used <a href="https://render.com/">Render</a> to host my application and learned how to configure environment variables, set up a database, and deploy my code using Git.</p><p>In conclusion, building an exercise tracker with Express and MongoDB was a great learning experience. I gained valuable skills in web development, databases, testing, and deployment.</p><p>I also learned how to break down a complex project into smaller, manageable pieces and how to research and troubleshoot issues. I’m excited to continue learning and building more applications in the future.</p><p>If you know anyone looking for a dev shop and need an MVP built, <a href="https://www.linkedin.com/in/yattishramhorry/">please intro them to me over LinkedIn</a> — thank you for the referrals!</p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=5465cef211a2" width="1" height="1" alt="">]]></content:encoded>
        </item>
    </channel>
</rss>