Medium Engineering
558 FOLLOWERS
Read stories from the team building Medium. This is a publication by the Medium Engineering team, where they talk about engineering values, how they use technology, and fun oddities encountered while building their product.
Medium Engineering
2w ago
Explore the foundations of the new list feature type in Medium’s feature store. Photo by Iain Kennedy on Unsplashtl;dr
This is the first installment of our series on the new list feature type in Medium’s feature store. Central to Medium’s recommendations system, the feature store handles the high-volume data used by machine learning models. The limitations of the existing relational features prompted the development of the new list feature type, which is designed to handle cross-entity relations in an efficient and scalable way.
What is the feature store?
The feature store ..read more
Medium Engineering
3w ago
The Medium team at our company retreat in Portland, Oregon
As Medium turns the page on becoming a profitable company, in engineering we are looking ahead at how that milestone changes the way we think about the work we do and how we want to approach it going forward.
This is a note I sent to the engineering team a few months ago. This has started a lot of discussions that have been the basis for a big culture shift we’re trying to make as a company towards long-term stability and success.
Team,
We spent the last few years improving everything about our engineering culture: our proces ..read more
Medium Engineering
1M ago
This story is not about pretty code, it is even less about pretty design. By Ed Uthman — originally posted to Flickr as Apple I Computer, CC BY-SA 2.0, https://commons.wikimedia.org/w/index.php?curid=7180001
The Medium iOS codebase is more than 10 years old, and we still have code dating from 2013 and 2014 that is still in use today.
Here you might think why the hell did they never completely rewrite this?
This is actually something we wear like a badge of honour in the Medium iOS team and I want to explain why today, by diving into how we work effectively with legacy code, with ..read more
Medium Engineering
1M ago
Like in many companies, you probably have some databases lying around that are starting to cost a lot in terms of storage. You are paying more and more every week; the more you wait, the more money will be spent for nothing. It’s time for a cleanup.
The basic approach is to write a script that will scan your DB and delete the items that aren’t useful anymore (e.g., really old data).
Problem: that can be extremely expensive with Dynamo DB, so expensive that it will take years to pay off…
Solution: One way to tackle this is to migrate all the data you need to a new table. From the ..read more
Medium Engineering
2M ago
Imagine you are a software engineer, or you really are. You create iOS apps on a daily basis. You use only the latest and finest trends in mobile development, such as SPM, Swift Data, and, of course, SwiftUI. Life couldn’t be better. But reality is cruel. And in real life you probably need to maintain and develop an application that was written several years ago when these technologies didn’t exist at all.
Due to your natural curiosity and desire to build top-notch products, you still strive to integrate the best approaches in your app. The Medium iOS team is not an exception. And given t ..read more
Medium Engineering
5M ago
Read along with us as we study Building Microservices
Medium Engineering started a book club this year! (Really, it’s the backend group, but we’ll extend this to all of engineering in Q3.)
Our first book is Building Microservices. We have a 4-month schedule that’s easy enough to follow while still getting everything done.
March (already over, but you can catch up!) — Section I: Foundation
April-May — Section II: Implementation
June — Section III: People
Read along with us!
Why this book?
Medium is built with a microservice architecture. But we have a (relatively) small t ..read more
Medium Engineering
5M ago
An example on how we do it in the Medium iOS Application
I bet that when you started your first SwiftUI project and when you wanted to paginate some lists, you scratched your head a bit. While there are various techniques to achieve this, I’ll focus on the one I’ve used for years.
This time, I’ll not use Ice Cubes as an example but the Medium iOS application, as we’ve often used this technique when rebuilding the app's various features using SwiftUI.
An infinite list of stories
I recently migrated the search user interface to SwiftUI, and as you can see above, you can scroll th ..read more
Medium Engineering
1y ago
Technical exploration & capabilities of our proof of concept
OpenAI recently announced the support of plugins for ChatGPT. Plugins are a groundbreaking feature for ChatGPT as they solve one of the platform’s biggest problems, which is its lack of access to the internet and up to date content. ChatGPT was trained on a dataset from 2021 and does not have direct access to the internet. Plugins provide a solution to this limitation. Content platforms like Medium can expose their content to ChatGPT, based on the user prompt and installed plugins, ChatGPT can trigger the correct API of your ..read more
Medium Engineering
1y ago
A few months ago we started getting reports of stories appearing multiple times in the For You feed on Medium mobile apps. See for instance the screenshot below, in which the “Breaking News: Stuff actually costs a lot” story is listed twice:
Instrumentation showed that there were around 4K occurrences per day of duplicate stories on iOS and around 3K occurrences per day on Android. We also received reports of duplicate stories appearing in the For You feed in the web app. So we started investigating.
The For You feed under the hood
Before we dive into how we fixed the issue, let’s t ..read more
Medium Engineering
1y ago
Photo by orbtal media on Unsplash
How we use Kubernetes to manage micro-services — a high-level view & Introduction
Why Kubernetes?
The simple answer is that it meets our needs quite nicely; and that it solves important, complex problems without us having to build the solutions ourselves. The obvious solutions Kubernetes provides are around scaling, bin-packing, and the fact that it allows services to be more or less ‘self-healing’.
Another critical consideration is deployments — ease of rollouts and rollbacks. We have built complex infrastructure around deployments, but more on that ..read more