Skip to content

Instantly share code, notes, and snippets.

@brson
Last active June 20, 2019 03:40
Show Gist options
  • Save brson/f9f3cc08acb1260c3fef6b12b6e0bb04 to your computer and use it in GitHub Desktop.
Save brson/f9f3cc08acb1260c3fef6b12b6e0bb04 to your computer and use it in GitHub Desktop.

Distributed Systems Training in Go and Rust

At PingCAP we love the Go and Rust programming languages. They are the languages with which we write the databases TiDB and TiKV, respectively. They have empowered us to build these fast and reliable distributed systems from the ground up, and iterate on them quickly and confidently.

These languages are the future of systems programming.

We expect a lot from ourselves — our engineers need to be, or to quickly become, experts on both databases and distributed systems, and to be comfortable expressing that knowledge in these modern languages. The products we develop are on the cutting edge of distributed systems, storage technology, software design, and programming language theory, and yet there are few opportunities for students to gain hands-on experience with this intersection of technologies.

At PingCAP we are committed to mentoring the next generation of systems programmers, those who are beginning their careers in a world that is quickly adopting next-generation systems languages.

To this end, PingCAP is creating a series of training courses on writing distributed systems in Go and Rust. These courses consist of:

  • Practical Networked Applications in Rust. A series of projects that incrementally develop a single Rust project from the ground up into a high-performance, networked, parallel and asynchronous key/value store. Along the way various real-world and practical Rust development subject matter are explored and discussed.

  • Distributed Systems in Rust. Adapted from the MIT 6.824 distributed systems coursework, this course focuses on implementing important distributed algorithms, including the Raft consensus algorithm, and the Percolator distributed transaction protocol.

  • Distributed Systems in Go. A course on implementing implementing algorithms necessary in distributed databases, including map reduce, and parallel query optimization.

Today they are in an early state, but we would appreciate if you give them a look and help us improve them over at our PingCAP Talent Plan.

Distributed Systems Training in Rust and Go

On the TiKV team we love the Rust and Go programming languages. They are the languages in which we write most of our software, with TiKV in Rust, and its sister project, TiDB, in Go. They have empowered us to build these fast and reliable distributed systems from the ground up, and iterate on them quickly and confidently.

These languages are the future of systems programming.

Creating reliable distributed systems like TiKV demands a lot from contributors — they not only need to be experts in storage and distributed systems, but also to be comfortable expressing that knowledge in these modern languages.

The software we develop is on the cutting edge of distributed systems, storage technology, software design, and programming language theory, and yet there are few opportunities for students to gain hands-on experience with this intersection of technologies.

As a CNCF project, we are committed to mentoring the next generation of systems programmers, those who are beginning their careers in a world that is quickly adopting next-generation systems languages.

To this end, PingCAP is creating a series of training courses on writing distributed systems in Rust and Go. These courses consist of:

  • Practical Networked Applications in Rust. A series of projects that incrementally develop a single Rust project from the ground up into a high-performance, networked, parallel and asynchronous key/value store. Along the way various real-world and practical Rust development subject matter are explored and discussed.

  • Distributed Systems in Rust. Adapted from the MIT 6.824 distributed systems coursework, this course focuses on implementing important distributed algorithms, including the Raft consensus algorithm, and the Percolator distributed transaction protocol.

  • Distributed Systems in Go. A course on implementing implementing algorithms necessary in distributed databases, including map reduce, and parallel query optimization.

Today they are in an early state, but we would appreciate if you give them a look and help us improve them over at our PingCAP Talent Plan.

@brson
Copy link
Author

brson commented Jun 19, 2019

Even though I think the words "Rust and Go" sound better than "Go and Rust", I've used the phrase "Go and Rust" so that they can have the parallel with "TiDB and TiKV". I think it is correct to list TiDB before TiKV since TiDB is the main product.

@brson
Copy link
Author

brson commented Jun 19, 2019

I use the word "dearth" here, which is appropriate, but difficult even for native english speakers.

@brson
Copy link
Author

brson commented Jun 19, 2019

Ok i removed "dearth"...

@Hoverbear
Copy link

We expect a lot from our engineers -> We expect a lot from ourselves PingCAP is more than just engineers. :)

@Hoverbear
Copy link

We do use C++ quite a bit, and other languages. Maybe instead of saying ...careers in a world that is quickly migrating away from previous-generation systems languages we can say ...careers in a world that is quickly adopting next generation systems languages? It's more positive.

@brson
Copy link
Author

brson commented Jun 19, 2019

I did leave the titles of both as "Distributed Systems Training in ...", but the pingcap.com one could also be something like "Introducing the PingCAP Talent Plan"

@Hoverbear
Copy link

- To that end PingCAP is creating a series of training courses on writing distributed systems in Go and Rust. These courses consist of
+ Standing by our commitment, PingCAP is creating a series of training courses on writing distributed systems in Go and Rust. These courses consist of

@Hoverbear
Copy link

Hoverbear commented Jun 19, 2019

- ...you will give them a look and offer feedback on our...
+ ...you will give them a look and help us improve them over at our...

@Hoverbear
Copy link

- Creating reliable distributed systems like TiKV demands a lot from engineers
+ Creating reliable distributed systems like TiKV demands a lot from contributors

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment