Home / Companies / Stream / Blog / August 2024

August 2024 Summaries

11 posts from Stream

Filter
Month: Year:
Post Summaries Back to Blog
Running large language models (LLMs) locally is gaining traction among developers who prioritize data privacy and wish to avoid sending information to cloud-based AI model providers like DeepSeek and OpenAI. Several tools, such as LM Studio, Jan, Llamafile, GPT4ALL, Ollama, and LLaMa.cpp, enable users to run and test LLMs on their devices without internet connectivity, ensuring that data remains secure and private. These tools offer various features, including model customization, cross-platform support, and the ability to run without subscriptions or additional costs, making them appealing for both personal and commercial use. LM Studio, for example, offers a user-friendly interface for managing model parameters and supports multiple operating systems, while Jan provides an open-source alternative to ChatGPT with a focus on local execution. Llamafile simplifies AI integration by converting LLMs into executable files, and GPT4ALL emphasizes privacy and offline functionality. Ollama facilitates the creation of local chatbots without the need for external APIs, and LLaMa.cpp serves as a backend technology that supports significant LLM inferences across various hardware. These tools provide developers the flexibility to experiment with LLMs locally, offering significant benefits in contexts where internet connectivity is limited or where data privacy is a primary concern.
Aug 27, 2024 2,980 words in the original blog post.
GStreamer is a comprehensive multimedia framework that excels in audio and video processing, offering a modular architecture that allows for the creation of complex media pipelines by linking various elements such as decoding, encoding, and streaming. When combined with the Go programming language, known for its efficiency and strong concurrency support, GStreamer can be used to develop robust streaming solutions for applications like HTTP Live Streaming (HLS), RTMP output, and thumbnail generation in Selective Forwarding Unit (SFU) tasks. The framework, primarily written in C, supports multiple programming languages through bindings, including Go, making it accessible for diverse development environments. The plugin-based system of GStreamer enables the dynamic extension of its capabilities to accommodate new media formats, codecs, and protocols, ensuring its adaptability to different application needs. In practical implementations, such as at Stream, GStreamer is used for HLS and call recording, RTMP output implementations, and generating thumbnails in SFU tasks, demonstrating its wide-ranging utility in multimedia processing.
Aug 27, 2024 2,388 words in the original blog post.
Nitric and Ionic are frameworks designed to streamline cloud application and hybrid mobile app development, respectively, by abstracting complex infrastructure and enabling cross-platform compatibility. Nitric simplifies backend development by automatically provisioning infrastructure, supporting multiple cloud providers, and using a declarative approach to manage cloud resources. It facilitates the creation of backend services such as APIs, storage, and event handling, akin to how Ionic uses web technologies like HTML, CSS, and JavaScript to build high-performance apps for iOS, Android, and web from a single codebase. In a tutorial, users are guided through setting up a library API with Nitric's SDK in JavaScript and integrating it with an Ionic frontend, requiring basic knowledge of Ionic and backend development, and tools like Ionic CLI, Nitric SDK, and AWS. The project involves creating backend and frontend projects, setting up API endpoints, and testing them using Nitric's dashboard, while the Ionic app is initialized with a blank template and configured to fetch data from the Nitric backend using TanStack Query. This demonstration highlights the productivity benefits of using Nitric and Ionic in developing scalable applications, with future plans to extend the application with authentication features and further API integration.
Aug 26, 2024 3,252 words in the original blog post.
Go, also known as Golang, was developed by Google in 2007 to address the needs of backend development with features like simplicity, robust concurrency support, and efficient performance. Designed by notable computer scientists Rob Pike, Ken Thompson, and Robert Griesemer, Go was created as a statically typed, compiled language that enhances productivity, especially in high-load systems. Its features, such as fast compilation, efficient concurrency via Goroutines, and a comprehensive standard library, make it well-suited for backend applications. Although lacking some traditional object-oriented abstractions and having a verbose error-handling model, Go offers advantages in deployment with its single executable file approach. Despite being newer than languages like Java and Python, and still maturing, Go has been adopted by major companies for its capability to handle large-scale applications effectively. The language's real-world application is exemplified by companies like Stream, which transitioned from Python to Go to achieve significant performance improvements. However, potential adopters should consider factors like existing team expertise and project requirements before switching to Go.
Aug 21, 2024 2,632 words in the original blog post.
On August 13, 2024, Orta announced a significant transition for CocoaPods as it enters maintenance mode, reflecting a shift in the Apple development ecosystem. Originally launched 13 years ago, CocoaPods revolutionized the integration of third-party dependencies for iOS and macOS developers, particularly facilitating the use of libraries like AFNetworking. However, with the advent and subsequent improvements of Apple's Swift Package Manager (SPM)—notably since Swift 5 and Xcode 11—developers now have a robust alternative for managing dependencies. SPM's enhanced support for various build systems and non-source files has led many developers to favor it over CocoaPods, marking a shift in priority for projects transitioning to SPM. Guidance is provided on removing CocoaPods from projects using cocoapods-deintegrate and cocoapods-clean, and instructions are offered for integrating SPM by adding package dependencies through Xcode's interface. Although some dependencies may still lack a Package.swift file, developers are encouraged to adapt repositories or request maintainers to facilitate SPM compatibility.
Aug 15, 2024 662 words in the original blog post.
Jetpack Compose's Previews feature in Android Studio offers significant benefits by enabling developers to build and display UI components incrementally, enhancing the ease of UI testing and component reliability. Utilizing Previews encourages the creation of well-designed, stateless components, which are ideal for maintaining consistency and facilitating screenshot testing. Key best practices include minimizing dependence on ViewModels through state hoisting to enhance reusability and testability, and using manual or mock ViewModel creation for accurate previews. LocalInspectionMode can be leveraged to provide mock data or alter behavior specifically during previews, ensuring UI components render correctly without relying on network or complex operations. Useful annotations such as @Preview, @PreviewParameter, and MultiPreview annotations help streamline the development process by enabling multiple configurations in previews. Additionally, managing dependencies with CompositionLocal can prevent preview failures by ensuring all necessary instances are provided. These strategies collectively streamline UI development, making it easier to extend components for UI tests or screenshot tests, ultimately leading to more effective and testable UI components.
Aug 15, 2024 2,903 words in the original blog post.
In a detailed exploration of improving a spam detection model, the blog post outlines the integration of OpenAI's GPT with the Stream Chat API for automatic moderation, emphasizing the significance of prompt engineering to enhance accuracy. Initially, a basic prompt was used to identify spam, achieving an accuracy of 89.8%, which was improved to 97.7% through refined prompts that provided clearer instructions, better formatting, and a more specific spam definition. Prompt engineering techniques like clarifying instructions, using few-shot learning, and adjusting parameters such as temperature were discussed to ensure a more consistent and unbiased classification. The post also highlights the benefits of using larger models like GPT-4o for marginal accuracy gains and discusses fine-tuning for specific use cases. Additionally, it touches on maintaining model performance over time and the potential of using lightweight, open-source models like BERT for moderation tasks. The approach aims to create a scalable and reliable content moderation system that can be integrated into production apps.
Aug 12, 2024 4,606 words in the original blog post.
Stream, an API platform renowned for powering chat, live video, and activity feeds for major apps like Strava, IBM, and Adobe, offers a comprehensive 10-week onboarding program for engineers, focusing primarily on Go programming. This program emphasizes learning Go fundamentals, testing best practices, database performance, and advanced syntax, along with exploring technologies such as Redis, WebRTC, and Pebble & Raft consensus. Stream's initiative aims to bridge the gap in onboarding quality often seen between sales and engineering teams, equipping engineers with practical skills through real project work. The curriculum also includes lessons on tracing and performance optimization, culminating in a series of practical tasks designed to consolidate the learning experience. The program encourages engineers to avoid common pitfalls such as inadequate testing and database misunderstandings while promoting transparency and communication within teams.
Aug 05, 2024 2,700 words in the original blog post.
Large Language Models (LLMs) like GPT can significantly enhance content moderation in online communities by automating the detection of unwanted content, such as spam, through integration with chat platforms like Stream's Chat API. This setup involves using tools such as FastAPI, Langchain, and various Python libraries to create a real-time moderation service, with GPT employed for spam detection. While the tutorial suggests starting with GPT for its quality and ease of integration, it also explores the cost-effectiveness and customization options of open-source models like Mistral 7B. The process involves preparing a prompt template for the LLM, testing its accuracy with a sample dataset, and integrating the service with Stream's webhook to automatically flag and manage inappropriate messages. The guide emphasizes the importance of prompt engineering, using diverse datasets, and monitoring model performance to maintain effective moderation. By leveraging AI, users can ensure a safer and more engaging community environment, with adaptable strategies for message review and management.
Aug 02, 2024 3,370 words in the original blog post.
This comprehensive tutorial details the implementation of end-to-end encryption (E2EE) in a chat application by integrating Seald's encryption service with Stream's Chat SDK. The objective is to ensure that chat conversations are only accessible to channel members, preventing unauthorized server-side access and enhancing user privacy. The guide walks through creating accounts on Stream and Seald, setting up a Next.js app, and configuring the Stream Chat SDK for basic messaging functionality. It then introduces Seald's SDK for encryption and decryption processes, explaining the initialization of Seald identities and encryption sessions, and how to handle message encryption and decryption within the chat interface. The tutorial concludes by integrating these components into a React chat app, demonstrating how to encrypt messages before sending and decrypt them upon receipt, thereby creating a secure chat environment akin to WhatsApp Web. The project is hosted on GitHub, and users are encouraged to explore further functionalities of the chat and encryption SDKs.
Aug 01, 2024 5,530 words in the original blog post.
End-to-end encryption (E2EE) offers a robust security solution by ensuring data is encrypted from the sender's device to the recipient's device, making it inaccessible to unauthorized parties, including developers and service providers. Unlike traditional methods like encryption in transit or at rest, E2EE uses cryptography to convert data into ciphertext, which can only be decrypted by the intended recipient using private keys stored on their devices. This approach is particularly crucial in applications where user privacy is paramount, such as healthcare, financial transactions, and secure messaging platforms like WhatsApp and iMessage. However, E2EE is not without challenges, as it can be vulnerable to attacks like backdoor, endpoint, and man-in-the-middle attacks. Implementing E2EE effectively requires sophisticated tools or SDKs such as Seald, which manage cryptographic complexities and ensure a Zero Trust security model. Adopting E2EE not only enhances user trust and protects against data breaches but also sets a high standard for privacy and security in digital communications.
Aug 01, 2024 1,796 words in the original blog post.