DoorDash: Migrating From Python to Kotlin for Our Backend Services

This page summarizes the projects mentioned and recommended in the original post on reddit.com/r/programming

Our great sponsors
  • OPS - Build and Run Open Source Unikernels
  • SonarLint - Deliver Cleaner and Safer Code - Right in Your IDE of Choice!
  • Scout APM - Less time debugging, more time building
  • GitHub repo benchmarks

    Some benchmarks of different languages

    Also cool to note that Kotlin is one of the fastest GC'd languages, up there with D and Nim. Surprising considering the JVM.

  • GitHub repo python_backend_template

    Quickly create and deploy AWS stacks using CDK.

    In general I think well written Python avoids the problems DoorDash faced. I've created a GitHub template so all my products start in a clean way: https://github.com/hbrooks/python_backend_template

  • OPS

    OPS - Build and Run Open Source Unikernels. Quickly and easily build and deploy open source unikernels in tens of seconds. Deploy in any language to any cloud.

  • GitHub repo gomacro

    Interactive Go interpreter and debugger with REPL, Eval, generics and Lisp-like macros

    For our use (debugging and running small scripts to update data), gomacro should work well enough, despite being an "almost complete" Go interpreter. This isn't the same as the Python REPL which uses entirely the same code to run, but it should be up to the task.

  • GitHub repo Kategory

    Λrrow - Functional companion to Kotlin's Standard Library (by arrow-kt)

    If you need to handle stuff like that, use Arrow.

  • GitHub repo Rope

    a python refactoring library

    Both PyCharm and the Python Language Server will use type hints to help in refactoring. PLS uses https://github.com/python-rope/rope/blob/master/docs/overview.rst#type-hinting

  • GitHub repo typeguard

    Run-time type checker for Python

    typeguard

  • GitHub repo beartype

    Unbearably fast O(1) runtime type-checking in pure Python.

    beartype

  • SonarLint

    Deliver Cleaner and Safer Code - Right in Your IDE of Choice!. SonarLint is a free and open source IDE extension that identifies and catches bugs and vulnerabilities as you code, directly in the IDE. Install from your favorite IDE marketplace today.

  • GitHub repo mypyc

    Compile type annotated Python to fast C extensions

    I'm also more excited to see where mypyc goes.

  • GitHub repo Quasar

    Fibers, Channels and Actors for the JVM (by puniverse)

    I'd say because of Erlang. Loom's architect was building a bytecode-modifying (with a javaagent) lib named Quasar before he joined Oracle. The project page mentions a news titled "Introductory blog post: Erlang (and Go) in Clojure (and Java), Lightweight Threads, Channels and Actors for the JVM." in May 2, 2013.

  • GitHub repo react-wasm-github-api-demo

    A demo application to serve as a template for your Rust & React needs. With a sample GraphQL backend.

    I'm not sure what your use case is, and anyway, mine's very different, but I do have a working implementation running in my wasm-template (that's a web client, but the GraphQL stuff is all in Rust. Look into the backend folder.)

  • GitHub repo SDKMan

    The SDKMAN! Command Line Interface

    You don't seem to have much knowledge about either Java or Kotlin. Oracle's JDK is not the most used today by a large margin. The main distribution of Java is OpenJDK... but there are many companies that distribute customized openJDK buillds, like Azul, BellSoft, SAP, Amazon, and even Microsoft itself (all are free to use, with different paid support plans for those who need it). If you want to try any of these builds, it takes one command once you install SDKMAN!:

  • GitHub repo cargo-update

    A cargo subcommand for checking and applying updates to installed executables

    So while it may take a while for some, it's already absolutely fine for me to compile my projects in a few seconds or a minute. I install all my related tooling via cargo install and update it via cargo install-update -a ( https://github.com/nabijaczleweli/cargo-update ) so I frequently/daily build different Rust projects and I'm quite ok with the compilation times.

  • GitHub repo vector

    A reliable, high-performance tool for building observability data pipelines.

    FWIW, we implement both a GraphQL server and client in Vector -- here's the GraphQL client code: https://github.com/timberio/vector/tree/master/lib/vector-api-client

NOTE: The number of mentions on this list indicates mentions on common posts plus user suggested alternatives. Hence, a higher number means a more popular project.

Suggest a related project

Related posts