Sign in

Ilya (Marshal)

@marshal.dev
4.9K followers 92 following 438 posts

Software Engineer 🐍 The AT Protocol SDK for Python: atproto.blue 🍿 Custom Feed in Python: github.com/MarshalX/bluesky-feed-ge… 🏎️ Fast IPLD library for Python: github.com/MarshalX/python-libipld marshal.dev

PostsRepliesMedia
Ilya (Marshal) @marshal.dev · 20/09/2026
Just the zone. I didn't spot any changes in the VO2 max algorithm. Even the version is the same (4). BUT they added video-based assessment with the help of Apple Watch or AirPods as an HR tracker P.S. I love and use the Super Age app
110
Ilya (Marshal) @marshal.dev · 20/09/2026
iOS 27.2 beta changed how Cardio Fitness (VO2 max) levels are calculated It still depends on age and sex, like before, but the boundaries between levels now appear to move smoothly with age instead of jumping at fixed age brackets. Mine went up
140
Ilya (Marshal) @marshal.dev · 10/09/2026
AT Protocol SDK for Python v0.0.72 is out 🎉 🧩 Custom lexicon codegen: "atp gen custom" turns any lexicon dir into a typed package of models, namespaces, subscription clients, and a Client subclass. 📚 Fully reworked docs with a much better search: atproto.blue #atproto #python
atproto.blue
The AT Protocol SDK for Python
Autogenerated from lexicons, well type hinted, documented, sync and async. Where to start: Quickstart Install it, log in, send a post, read a timeline. Five minutes. Quickstart Guides Posting, read...
040
Ilya (Marshal) @marshal.dev · 19/08/2026
github.com/MarshalX/atp...
github.com
Fix JSON serialization of blobs decoded from DAG-CBOR by MarshalX · Pull Request #708 · MarshalX/atproto
110
Ilya (Marshal) @marshal.dev · 18/08/2026
cc @alex.bsky.team, fyi @emily.space (pls be a beta tester)
120
Ilya (Marshal) @marshal.dev · 18/08/2026
Shipped! Jetstream 🛩️ is in the Python SDK. Server-side filtering so you only get what you asked for, dict-zstd for ~65% less bandwidth, and full network replay: snapshot() and replay() sweep the archive and cut over to the live tail with no gap or duplicate. #atproto atproto.blue/en/latest/at...
atproto.blue
Jetstream (data streaming)
Jetstream is a streaming service for the AT Protocol network. Unlike the Firehose, it delivers records as plain JSON, filters server-side, and needs no CAR or DAG-CBOR decoding. Both clients are pr...
2164
Ilya (Marshal) @marshal.dev · 18/08/2026
okay github.com/MarshalX/atp...
github.com
Release v0.0.70 · MarshalX/atproto
What's Changed 🛩️ Jetstream v2 support: live tail with dict-zstd compression (~65% less bandwidth) and full network replay via snapshot() and replay() Add atproto_jetstream package with Jetstream ...
050
Ilya (Marshal) @marshal.dev · 18/08/2026
Hmmmm, let me think
010
Ilya (Marshal) @marshal.dev · 28/05/2026
#atproto #python
030
Ilya (Marshal) @marshal.dev · 28/05/2026
The AT Protocol SDK for Python now supports @standard.site lexicons! 🐍 You can now read and write publication, document, and subscription records. The same long-form schemas powering @leaflet.pub, @pckt.blog, and @offprint.app. atproto.blue
atproto.blue
Documentation
The AT Protocol SDK documentation for Python
1162
Ilya (Marshal) @marshal.dev · 27/05/2026
Oops, now there is v3.4.1 with even more performance (up to +7%) and parity with other libraries #atproto
Deserialization v3.4.0 → v3.4.1
030
Ilya (Marshal) @marshal.dev · 26/05/2026
FYI @snarfed.org
020
Ilya (Marshal) @marshal.dev · 26/05/2026
🚀 Python libipld v3.4.0 is out! Up to 30x faster DAG-CBOR decode than pure-Python library. Up to 2x faster than v3.3.2, with ~30% quicker CAR parsing for the Bluesky firehose! More details: github.com/MarshalX/pyt... #atproto #bluesky #python
Deserialization v3.3.2 → v3.4.0
1153
Ilya (Marshal) @marshal.dev · 01/12/2025
#atproto
020
Ilya (Marshal) @marshal.dev · 01/12/2025
@emily.space pls try it :) `pip install -U libipld`
110
Ilya (Marshal) @marshal.dev · 01/12/2025
And as a self-promo yeah, I am looking for a job :) Here is my CV: marshal.dev
marshal.dev
Ilya Siamionau | CV
Software Engineer
032
Ilya (Marshal) @marshal.dev · 01/12/2025
Bluesky custom feeds in Python are now ~x2 faster! ~25-35% faster DAG-CBOR decoding, and ~17% faster CID decoding! I do have more ideas on what to try to speed it up even further! For example, applying BOLT on top of the existing PGO. Huge kudos to @vmx.cx for making this happen!
github.com
Release v3.3.0 · MarshalX/python-libipld
🟢 The maintainer is looking for a job! CV: https://marshal.dev What's Changed ❗ Almost x2 speed for CAR decoding (Bluesky firehose), ~25-35% faster DAG-CBOR decoding, and ~17% faster CID decoding! ...
4568
Ilya (Marshal) @marshal.dev · 21/11/2025
David’s one is also C. But the difference between is huuuuuuge
010
Ilya (Marshal) @marshal.dev · 21/11/2025
After looking closer Ruby’s results look too good to believe 🤩 pls share the trick
100
Ilya (Marshal) @marshal.dev · 22/10/2025
A lot of things happened! The non-career life got a huge revamp with huge fat loss, more gym and car enthusiasms, and prospects for my own family. I got a lot done on my current work, and in the coming month gonna start looking for a new job! Now I am just playing BF6 and riding across Poland 🇵🇱
120
Ilya (Marshal) @marshal.dev · 22/10/2025
Python Pi support :)
100
Ilya (Marshal) @marshal.dev · 22/10/2025
A little bit delayed post XD. The full historical convo and bugs list is available here: github.com/MarshalX/pyt...
github.com
DASL Testing: Tier 1 · Issue #57 · MarshalX/python-libipld
Hello, I work on DASL Testing, a project funded by IPFS to test dag-cbor libraries. I'm filing this issue to report on "Tier 1" bugs we've discovered in python-libipld. More information is availabl...
010
Ilya (Marshal) @marshal.dev · 22/10/2025
Thanks to @makeworld.space, Fast IPLD lib for Python is shiny as never before! Many panics and out-of-specification bugs have been fixed. Amazing DASL Testing: hyphacoop.github.io/dasl-testing/
hyphacoop.github.io
DASL Testing
151
Ilya (Marshal) @marshal.dev · 22/10/2025
The atproto SDK for Python now supports Python 3.14! Please report any instability of firehose async client. There are too many dependency bumps for this release.
1141
Ilya (Marshal) @marshal.dev · 21/04/2025
@atproto.com are you gonna be our trusted verifier? 🙂 #atproto
040
Ilya (Marshal) @marshal.dev · 11/04/2025
🚀 Python atproto SDK v0.0.60 is here! Key additions: - Message reactions in DMs - Improved AtUri core class - ⁠Content-Type overriding - Digits in NSID - Email 2FA support - Enhanced HTTPX config and various fixes! Check it out! 🐍✨ #Python #atproto
github.com
Release v0.0.60 · MarshalX/atproto
What's Changed Add message reaction to the example of Direct Messages by @MarshalX in #595 Add UnknownUnionModel type by @MarshalX in #586 Add include_pins argument to get_author_feed method of Cl...
0181
Ilya (Marshal) @marshal.dev · 03/03/2025
Only because I don’t want to have a broken example someday because you forgot that this post is in use and it’s forbidden to delete 🥲
120
Ilya (Marshal) @marshal.dev · 23/02/2025
Add sync firehose message support, the latest lexicon update, and more github.com/MarshalX/atp... #atproto
github.com
Release v0.0.59 · MarshalX/atproto
What's Changed Add support for the repository #sync message in the subscribe repos firehose by @MarshalX in #556 Add chat.* and tools.* models to the main menu of documentation by @MarshalX in #55...
0100
Ilya (Marshal) @marshal.dev · 25/01/2025
mass repost
020
Ilya (Marshal) @marshal.dev · 25/01/2025
zero issues with making custom video feeds in Python
030
Ilya (Marshal) @marshal.dev · 03/01/2025
if we are talking about uploaded videos, then you can use video.bsky.app/watch/. it will give you m3u8. also you could try to get a raw blob but idk
video.bsky.app
010
Ilya (Marshal) @marshal.dev · 03/01/2025
Everything is possible 😌
110
Reposted by Ilya (Marshal)
Jer @jeremie.com · 30/12/2024
Fun little winter break side project to help me explore more of atproto - I made a fun Bluesky - IRC bridge! github.com/quartzjer/AT... Built in python using @marshal.dev's awesome atproto module, definitely spent too much time fiddling with how to display rich/media posts in an IRC-friendly way 😅
0284
Ilya (Marshal) @marshal.dev · 14/12/2024
Ruby lets goooo
010
Ilya (Marshal) @marshal.dev · 13/12/2024
gratz! now you will struggle with pydantic`s memory consumption xD
000
Ilya (Marshal) @marshal.dev · 12/12/2024
i provide like 97 different pre-built wheels... if you are using something special be ready for pain pypi.org/project/libi...
pypi.org
libipld
Python binding to the Rust IPLD library
000
Ilya (Marshal) @marshal.dev · 12/12/2024
pure python is "dag_cbor". that's how it slow: github.com/DavidBuchana...
github.com
GitHub - DavidBuchanan314/dag-cbor-benchmark: Test data for benchmarking dag-cbor decoders and encoders
Test data for benchmarking dag-cbor decoders and encoders - DavidBuchanan314/dag-cbor-benchmark
020
Ilya (Marshal) @marshal.dev · 11/12/2024
applied to bsky custom feed template repo; thanks
000
Ilya (Marshal) @marshal.dev · 06/12/2024
What is inside bad request error? The server should tell more details
110
Ilya (Marshal) @marshal.dev · 06/12/2024
You need string format like 2024-11-24T06:02:00Z
110
Ilya (Marshal) @marshal.dev · 06/12/2024
Thank you for your contribution! Test coverage, performance benchmarks, and more — that's very professional. I appreciate it!
050
Ilya (Marshal) @marshal.dev · 02/12/2024
Welp, the code generator is ready and cli to use it as well. But binding models to the existing xrpc client is tricky. This is something what I want to improve one day and have ideas
000
Ilya (Marshal) @marshal.dev · 28/11/2024
My pleasure! Congratulations with finished prototype 🥳
030
Ilya (Marshal) @marshal.dev · 18/11/2024
This is repo structure. I did not implement tree walker in SDK yet (no ones requested). Here is the spec: atproto.com/specs/reposi...
atproto.com
Repository - AT Protocol
Self-authenticating storage for public account content
130
Ilya (Marshal) @marshal.dev · 18/11/2024
My pleasure 😇
010
Ilya (Marshal) @marshal.dev · 17/11/2024
The fix was merged! But it does not resolve the main problem. So to be continued here github.com/bluesky-soci...
github.com
Relay: consumers do not receive root block in case of too big seq commit · Issue #780 · bluesky-social/indigo
From bluesky-social/atproto#2893
051
Ilya (Marshal) @marshal.dev · 17/11/2024
And since Python 3.8 died more than moth ago, it looks like I can finally use Py_EnterRecursiveCall CAPI github.com/MarshalX/pyt...
github.com
Segfault on decoding of nested lists and maps · Issue #9 · MarshalX/python-libipld
these benchmarks fail. ref https://github.com/DavidBuchanan314/dag-cbor-benchmark Decode Torture Tests: ===================== torture_cids.dagcbor libipld 75.2 ms (51.98 MB/s) torture_nested_lists....
010
Ilya (Marshal) @marshal.dev · 17/11/2024
Today's Python SDK incident with segfault comes from Firehose raises the priority of the proper bugfix 🫠 github.com/MarshalX/atp... tl;dr no recursion limit; malformed payloads in the network could lead to segfaults of python-libipld (rust binding)
github.com
Segmentation fault (core dumped) in CAR reading from Firehose · Issue #437 · MarshalX/atproto
i was consuming data from the firehouse, specifically at cursor: 3720770000, every time i get a consistent Core Dumped I managed to find the crash is coming from: .venv/lib/python3.12/site-packages...
261
Ilya (Marshal) @marshal.dev · 02/11/2024
Hi, you can provide any other PDS URL to the client constructor already
110
Ilya (Marshal) @marshal.dev · 24/10/2024
Firehose consumers do not receive root block in case of too big seq commit. I dug into this because I got reports from Python SDK users that commit.blocks received from the firehose message frame could be missed. I am waiting for the review by #atproto team github.com/bluesky-soci... 🙃
github.com
Firehose consumers do not receive root block in case of too big seq commit · Issue #2893 · bluesky-social/atproto
Describe the bug Firehose consumers do not receive root block in case of too big seq commit. To Reproduce I wrote a corresponding unit test in the linked PR that reproduces the issue Actual behavio...
040