41554 blogs · [ { "id": "01a087df-9bf5-7106-b147-a8469bdf5456", "title": "The Hidden Contract in Every API Call", "url": "https://shenli.dev/2026/03/26/hidden-contract-in-every-api-call.html/2026/03/26/hidden-contract-in-every-api-call.html", "published_at": "2026-03-26T04:00:00+00:00" }, { "id": "01a087df-9bf5-7106-b147-a8469bfef7c5", "title": "Django Deployment Goals for Beginners", "url": "https://shenli.dev/2026/03/26/hidden-contract-in-every-api-call.html/2020/10/24/django-deployment-goals-for-beginners.html", "published_at": "2020-10-24T15:39:00+00:00" }, { "id": "01a087df-9bf5-7106-b147-a8469c301d18", "title": "Seamlessly integrate hashids with Django", "url": "https://shenli.dev/2026/03/26/hidden-contract-in-every-api-call.html/2020/08/26/django-hashids.html", "published_at": "2020-08-27T03:45:00+00:00" }, { "id": "01a087df-9bf5-7106-b147-a8469cb96a89", "title": "ASGI from scratch - WebSocket", "url": "https://shenli.dev/2026/03/26/hidden-contract-in-every-api-call.html/2020/08/05/asgi-from-scratch-2-websocket.html", "published_at": "2020-08-06T01:21:00+00:00" }, { "id": "01a087df-9bf5-7106-b147-a8469d03c09e", "title": "ASGI from scratch - Let’s build an ASGI web framework", "url": "https://shenli.dev/2026/03/26/hidden-contract-in-every-api-call.html/2020/06/20/asgi-from-scratch.html", "published_at": "2020-06-21T02:15:00+00:00" }, { "id": "01a087df-9bf5-7106-b147-a8469d3a9572", "title": "django-simple-task: An asynchronous Django 3 task runner", "url": "https://shenli.dev/2026/03/26/hidden-contract-in-every-api-call.html/2019/12/30/django-simple-task.html", "published_at": "2019-12-30T08:00:00+00:00" }, { "id": "01a087df-9bf5-7106-b147-a8469dae2a53", "title": "How to Watermark A Video with Python", "url": "https://shenli.dev/2026/03/26/hidden-contract-in-every-api-call.html/2015/10/18/how-to-watermark-a-video-with-python.html", "published_at": "2015-10-18T04:00:00+00:00" } ] posts Claim your blog
Back to shenli.dev
Blog · corpus.blog/blogs/shenli.dev/posts

shenli.dev

shenli.dev

2026

2020

2019

2015