ByteByteGo Newsletter

Share this post

EP53: Design effective and safe APIs

blog.bytebytego.com

EP53: Design effective and safe APIs

Alex Xu
Apr 1, 2023
123
5
Share

This week’s system design refresher:

  • Types of memory and storage (Youtube video)

  • Designing effective and safe APIs

  • The best way to learn SQL

  • Twitter recommendation algorithm

  • Job openings


Monitor your GPT-3 and GPT-4 App Usage in New Relic (Sponsored)

You can now monitor your GPT app usage in New Relic! Our latest MLOps capability allows for seamless monitoring of OpenAI's GPT-3, GPT-3.5, and GPT-4 technology using New Relic's platform. With just two lines of code, generate a dashboard displaying key GPT performance metrics like cost, response time, total requests, and more, providing you with in-depth insights for optimized usage and better results.

Get started for free


Types of Memory and Storage

In this video, we're diving into the world of computer memory and storage.

We will talk about:
- The fundamental duo: RAM and ROM
- DDR4 and DDR5
- Firmware and BIOS
- SRAM and DRAM
- HDD, SSD, USB Drive, SD Card
- and more


How do we design effective and safe APIs?

The diagram below shows typical API designs with a shopping cart example.

Note that API design is not just URL path design. Most of the time, we need to choose the proper resource names, identifiers, and path patterns. It is equally important to design proper HTTP header fields or to design effective rate-limiting rules within the API gateway.

Over to you: What are the most interesting APIs you’ve designed?


What is the best way to learn SQL?

In 1986, SQL (Structured Query Language) became a standard. Over the next 40 years, it became the dominant language for relational database management systems. Reading the latest standard (ANSI SQL 2016) can be time-consuming. How can I learn it?

No alternative text description for this image

There are 5 components of the SQL language:
- DDL: data definition language, such as CREATE, ALTER, DROP
- DQL: data query language, such as SELECT
- DML: data manipulation language, such as INSERT, UPDATE, DELETE
- DCL: data control language, such as GRANT, REVOKE
- TCL: transaction control language, such as COMMIT, ROLLBACK

For a backend engineer, you may need to know most of it. As a data analyst, you may need to have a good understanding of DQL. Select the topics that are most relevant to you.

Over to you: What does this SQL statement do in PostgreSQL: “select payload->ids->0 from events”?


Twitter just open-sourced its recommendation algorithm.

We will make an explanation video about it. Subscribe to our YouTube channel so you won't miss it: https://lnkd.in/e6iSdtnp


Join the ByteByteGo Talent Collective

If you’re looking for a new gig, join the collective for customized job offerings from selected companies. Public or anonymous options are available. Leave anytime.

If you’re hiring, join the ByteByteGo Talent Collective to start getting bi-monthly drops of world-class hand-curated engineers who are open to new opportunities.

Featured job openings

X1 Card: Software Engineer, Back End (United States)
X1 Card: Head of Infrastructure and Risk (United States)

123
5
Share
5 Comments
iacopo breschi
Apr 2

Thanks super work as usual!

I would be interested in having a feedback on the API Design for the cases resources cross reference ( GET /carts/123/items/321) and add item to cart (POST /carts/123/items:add) .

What is your opinion on having a flat API instead of the nested one you propose?

* Create one item POST/items

* List cart items GET /items/&cart=123

* Retrieve item X GET /items/321

In past I tried nesting resources but it gets quick;y messy and leads to code with higher coupling.

Expand full comment
Reply
1 reply
Dr. Jody-Ann S. Jones
Writes The Data Sensei
Apr 1

Thank you Alex!

Expand full comment
Reply
3 more comments…
Top
New
Community

No posts

Ready for more?

© 2023 ByteByteGo
Privacy ∙ Terms ∙ Collection notice
Start WritingGet the app
Substack is the home for great writing