Skip to main content

· 5 min read
Raymond Cheng

At Kariba Labs, we believe deeply in the power of open source software. That is why we are building Open Source Observer (aka OSO), an open source tool for measuring the impact of open source projects. In order to achieve our goal of making open source better for everyone, we believe that OSO needs more than just open source code. We are committed to being the most open and reliable source of impact metrics out there. We will achieve this by committing the OSO project to the following practices:

  • Open source software: All code is developed using permissive licenses (e.g. MIT/Apache 2.0)

  • Open data: All collected and processed data will be openly shared with the community (to the extent allowed by terms of service)

  • Open infrastructure: We will open up our infrastructure for anyone to contribute or build upon our existing infrastructure at-cost.

· 12 min read
Raymond Cheng

Choosing how to add localization to your application can be a complicated decision, because there are so many options out there. From code-based frameworks to third-party services that automatically rewrite your HTML, there is no silver bullet for localization. At Plasmic, we have been exploring the many options to better inform how we can support localization for our own application. Many tutorials assume you want to already want to use a code framework, like react-i18next, but that has implications for your team’s workflow. In this blog post we will survey different localization techniques you may be considering for your React application and discuss some of the trade-offs.

· 9 min read
Raymond Cheng

In this blog post, we will show you how to implement personalization using Next.js middleware. Traditionally, personalization was implemented on the server, which may incur many hundreds of milliseconds of latency before the user receives the content. With Next.js middleware and static site generation (SSG), we can serve rich personalized experiences entirely from the edge (i.e. CDN), resulting in significant performance improvements for your website and improved experiences for your users.

· 12 min read
Raymond Cheng

In this blog post we will show you how to implement A/B testing using Next.js middleware, first introduced in Next.js 12. When compared to other A/B testing frameworks, this method more easily fits into your existing developer workflows and inherits all of the performance benefits of Next.js, including static site generation (SSG). You’ll see that A/B tests don’t have to be onerous for either your users or your developers — every Next.js site can easily make measurable progress this way!

· 9 min read
Raymond Cheng

In this guide, we will show you how to build a crowd-sourced Pokemon Pokedex, by connecting Supabase, an open source Firebase backend alternative, with Plasmic, a visual builder for the web. While many users leverage Plasmic to quickly launch and iterate on landing pages, in this tutorial we’ll show just how powerful Plasmic can be as a general-purpose visual builder for React, which can be used to design and implement fully featured read-write applications.

· One min read
Raymond Cheng
View post on Instagram
 

Chinese New Year Cake (Nian Gao) Recipe

· 2 min read
Raymond Cheng

I love writing. I miss that aspect of working in research. You see the slightest thread of an insight, and then just keep pulling on it through reading related work, writing, and iterating, until you've formed a coherent thought to share with the world. Not everything I write is equally insightful (or coherent) to others, but I always enjoy the writing process nonetheless. In academia, writing took the form of technical papers that might only see the light of day on Arxiv. Nowadays, my preferred medium is blogging, but without dedicating time to writing, it just doesn't happen.

· 11 min read
Raymond Cheng
Jeff Hsu

The AutoDapp project aims to automatically convert any existing web or mobile application into a decentralized application (DApp) by changing just a single line of code, starting with Discourse and MediaWiki. This blog post outlines a high-level approach to instantly decentralize popular applications by interposing on the SQL connection between its web server and database. With the unified effort of the open source community, we can accelerate the advent of the decentralized future for millions of users -- this is what we’re calling our “One Million” mission.

· 29 min read
Raymond Cheng
Jeff Hsu

Key Takeaways

  • Centralized proprietary recommendation algorithms are hard to get right. Social media platforms are failing us as sole arbiters of truth on their platforms.
  • Let’s open up the ability for 3rd party developers to create recommendation algorithms on Twitter services.
  • Instead of jumping straight into a fully decentralized protocol, which is risky and takes a lot of work, let’s test the underlying assumptions on production Twitter first.
  • If decentralization is the ultimate goal, any work we do here will be useful on the path.

· 8 min read
Raymond Cheng

"Time is the most valuable thing a man can spend." Theophrastus

With only so much time on this world, it's in our best interest to use it wisely. Even with best intentions, I often find myself feeling like I could have spent my time better. These thoughts typically fall into one of three categories:

  1. Missed goals: You wanted to get something done this week/month/year, but it didn't happen. Now you find the task repeatedly slipping to the next week.
  2. Lost time: It's a long day, and hour 5 fades into hour 6. Next thing you know it's the end of the day and you wonder where the time went.
  3. Poor Use: People need you, emails need responses, events run over. By the end of the day, you've spent your time on a bunch of things you never intended to spend time on.

· 3 min read
Raymond Cheng

Have you ever had that awkward moment with a PhD student, where someone asks:

How much longer until you graduate? Do you know what you'll do after school?

The student hesitates to answer, or worse, bolts in the other direction. For the majority of people who will never get their PhD, I'll give my explanation for the reason why. Disclaimer: this opinion will be heavily biased towards PhD's in computer science and may not apply to other fields.

· 12 min read
Raymond Cheng

In this blog post, I'll show you how to configure a Docker-based personal server, running each service in a separate Docker container. Modern devops tools have made it easier than ever to run your own server and for anyone with basic familiarity with Linux, it's worth a try. In this tutorial, we'll use Gitlab as a running example.

· One min read
Raymond Cheng

One of my first projects at MIT was at the Media Lab, where we were exploring self-sufficient technologies. My advisor, Richard Fletcher, and I wanted to build a completely self-sufficient printer for use in developing countries.

· One min read
Raymond Cheng

For years, my website was a single gigantic HTML file. Adding content and making edits felt a lot like stacking Jenga blocks a mile high. While that was fun in many ways, it is 2015 and it is time to move to some form of automated system like Jekyll.