October 2017 Summaries
4 posts from Stream
Filter
Month:
Year:
Post Summaries
Back to Blog
Activity streams and feeds have become a fundamental component across various applications, with prominent examples including social media platforms like Twitter and Facebook, as well as companies like Google and Amazon adopting similar structures. These feeds facilitate user engagement and retention by connecting people with information and potentially creating new revenue opportunities through features like paid advertisements. A feed, defined as a list of activities related to followed topics, requires attention to three critical features for optimal functionality: aggregation, ranking, and personalization. Aggregation helps streamline content by grouping similar activities, such as a single notification for multiple likes from the same user, thus maintaining user interest. Ranking allows the prioritization of content within the feed, ensuring that important or popular posts remain visible to users, thereby enhancing engagement. Personalization leverages machine learning to tailor content based on user interests, offering suggestions and content that align with their preferences, a strategy employed by platforms such as Instagram and Quora. These features are essential for creating effective and engaging feed structures within applications, with tools like Stream's API available to assist developers in implementing these strategies.
Oct 26, 2017
713 words in the original blog post.
Stream switched its primary programming language from Python to Go due to Go's superior performance, especially in API operations, where it significantly outperforms Python. The decision was driven by Go's fast execution speed, efficient concurrency handling with goroutines and channels, and minimal boilerplate requirements, making it suitable for Stream's feed and chat platform that serves over 500 million end users. Go's straightforward syntax and enforced code formatting with Gofmt enhance developer productivity and team scalability. Despite its lack of a dominant framework and some limitations in error handling and package management, Go's robust ecosystem, especially for microservices with gRPC and protocol buffers, and its fast compile times, make it a strong choice for performance-critical applications. While Stream continues to use Python for dashboards and machine learning, Go is now favored for performance-intensive tasks, underscoring its effectiveness in reducing optimization time while maintaining high execution speeds.
Oct 17, 2017
2,665 words in the original blog post.
Modern JavaScript frontend frameworks such as Angular, React, and Vue are often supported by standalone Command Line Interface (CLI) programs that simplify the setup of development environments. These CLIs are designed to help both novice and experienced developers by providing a structured approach to project initialization, including features like code linting, testing, and bundling. While these tools are optional, they offer significant time-saving benefits and insights into current best practices in the JavaScript ecosystem. Angular CLI stands out for its comprehensive feature set, generating boilerplate code to expedite development, whereas Create React App is notable for its "no config" simplicity, though it may require "ejection" for advanced configurations. Vue CLI offers a unique templated approach with a question-and-answer format for project setup, contributing to its widespread adoption. Each CLI program offers long-term efficiency gains by promoting positive development habits and easing onboarding processes, though complexities may arise when integrating third-party tools. Overall, these CLIs provide a cohesive development environment that aligns with community standards, making them valuable resources for developers seeking to streamline their workflows.
Oct 12, 2017
1,672 words in the original blog post.
Stream's API is utilized by over 500 companies and 200 million users, and the company emphasizes a robust testing infrastructure to maintain code reliability while moving quickly. The primary services are developed in Go, and the blog post details the lessons learned from testing a large Go codebase. It highlights the importance of a solid testing workflow, involving test-driven development, peer reviews, and continuous integration tools such as Travis CI and Codecov. The team uses Go's testing package along with additional tools like testify for cleaner and more manageable tests, and they employ both dependency injection and the GoMock framework for mocking in unit tests. Integration and acceptance tests are handled separately in a dedicated repository using Ginkgo and a custom BDD library named bdd for behavior-driven tests. This approach allows Stream to maintain a consistent testing grammar across the company, facilitating faster development cycles, better code reviews, and onboarding of new hires. The company is also working on Cucumber-like feature tests and encourages experimentation with testing methodologies to improve software quality.
Oct 02, 2017
2,432 words in the original blog post.