Sign in

Alexey Sergushichev

@asergushichev.bsky.social
178 followers 253 following 140 posts

Assistant professor, WashU Pathology & Immunology Author of FGSEA and other packages for omics data analysis alserglab.wustl.edu

PostsRepliesMedia
Alexey Sergushichev @asergushichev.bsky.social · 12/10/2026
Yeah, I did play a while ago with FFT for some combinatorics/polynomial multiplication. You quickly realize that you need to do number theoretic transform if you want exact numbers — with logarithmic number of modulos of the answer length, specifically accounting for fixed-length arithmetic.
010
Alexey Sergushichev @asergushichev.bsky.social · 10/10/2026
That's how you get docs in poems
000
Alexey Sergushichev @asergushichev.bsky.social · 09/10/2026
I don't think an individual academic can realistically sue big-AI, so first it should be a simple evidence that the general public can verify. Third-party signed hashes should work for this purpose.
100
Alexey Sergushichev @asergushichev.bsky.social · 09/10/2026
Yeah. I started to wonder, if there is a service that can verify timestamps on an unpublished document. With git you can modify timestamps, so it's not that credible.
120
Reposted by Alexey Sergushichev
Alex Rubinsteyn @alexr.bsky.social · 02/10/2026
FYI I wrapped a lot of immuno-informatics predictors so you don't have to: openvax.github.io/mhctools/ (eg NetMHCpan, MHCflurry, Pepsickle, DeepTAP, ERAMER, BigMHC, PRIME, &c)
openvax.github.io
mhctools
Run MHC binding, presentation, immunogenicity and antigen-processing predictors through one predict() call
073
Alexey Sergushichev @asergushichev.bsky.social · 29/09/2026
Inb4, a hand-written-letter-as-a-service start-up
030
Reposted by Alexey Sergushichev
Ian Sudbery @iansudbery.bsky.social · 12/09/2026
Holy moly, @ensembl.org killed biomart! Hope many R scripts are there out there that depend on biomaRt? How many people have informatics practicals, or undergraduate project instructions that depend on a web interface for bulk selection of data?
53327
Alexey Sergushichev @asergushichev.bsky.social · 29/08/2026
I use a vibe-coded set up that runs Claude in docker. Mounts only the project dir. Docker images are shared, as well as package libraries.
010
Alexey Sergushichev @asergushichev.bsky.social · 25/08/2026
Source code is at github.com/alserglab/GA... Documentation is at alserglab.wustl.edu/GAMclust/ 5/5
github.com
GitHub - alserglab/GAMclust: GAM-clustering: metabolic modules derivig from RNAseq data
GAM-clustering: metabolic modules derivig from RNAseq data - alserglab/GAMclust
000
Alexey Sergushichev @asergushichev.bsky.social · 25/08/2026
But it can work with spatial Vizium data too: as a case study we analyzed a glioma dataset: alserglab.wustl.edu/GAMclust/art... There, one of the modules is glycolysis, which localizes nicely to the tumor core 4/5
100
Alexey Sergushichev @asergushichev.bsky.social · 25/08/2026
For example, previously we used the GAMclust approach to discover patterns of metabolic regulation across mononuclear phagocytes from bulk and single-cell RNA-seq with ImmGen sciencedirect.com/science/arti... 3/5
110
Alexey Sergushichev @asergushichev.bsky.social · 25/08/2026
It extends the GAM/GATOM approach we developed previously for finding metabolic modules in differential comparisons (academic.oup.com/nar/article/...) and is applicable to explore complex datasets 2/5
100
Alexey Sergushichev @asergushichev.bsky.social · 25/08/2026
New application note from the lab: "GAMclust: identification of regulated metabolic modules in bulk, single cell and spatial gene expression data" doi.org/10.1093/bioi... 🧬 🖥️ 1/5
140
Reposted by Alexey Sergushichev
Reese Richardson @reeserichardson.bsky.social · 25/08/2026
A massive update: At least ~15 companies~ are selling scientists antibodies using faked validation data. We've documented 18,000+ manipulated images on 17,000+ products sold by leading laboratory suppliers including Thermo Fisher, Abcam, Santa Cruz Biotechnology, Millipore Sigma and Bio-Techne. 1/🧵
18455329
Reposted by Alexey Sergushichev
Bastian Greshake Tzovaras @gedankenstuecke.scholar.social.ap.brid.gy · 04/08/2026
Love this interactive exploration of how people approach pathfinding: «Why some people mow a lawn better than others» pudding.cool/2026/06/mow
pudding.cool
Why some people mow a lawn better than others
We analyzed 132,003 attempts to mow a virtual lawn efficiently.
011
Alexey Sergushichev @asergushichev.bsky.social · 31/07/2026
Today I realized: R repository system doesn't sign the packages and there is no default way to verify the package origin? So if someone compromises one CRAN mirror and replaces a package with a malicious one, it will just get installed silently?
010
Alexey Sergushichev @asergushichev.bsky.social · 31/07/2026
Another LLM-based "faithful" rewrite turned out to be not that faithful: github.com/zqfang/GSEAp... And here also I'm not sure if corner cases and recent fixes are ported too.
github.com
Fix fgsea multilevel p-values: apply denomProb normalisation and estimator selection by joshchiou · Pull Request #365 · zqfang/GSEApy
Problem prerank_multilevel reports the multilevel core's raw cppMPval. That value is a probability conditional on the null enrichment score sharing the sign of the observed one, so it is not a ...
010
Alexey Sergushichev @asergushichev.bsky.social · 31/07/2026
Actually, one of them (academic.oup.com/bioinformati...) seem to be human-written, but is based on an older version, with some of the recent fixes missing.
academic.oup.com
PyFgsea: a Rust-powered, fgseaMultilevel-aligned GSEA framework with rolling-window enrichment along single-cell trajectories
AbstractSummary. GSEA is a standard approach for pathway interpretation, yet Python ecosystems lack a high-performance implementation aligned with the fgse
200
Alexey Sergushichev @asergushichev.bsky.social · 31/07/2026
Now I know about three ports of fgsea from R/C++ to Python+Rust, none of the authors contacted me. It's MIT licenced, so that's OK, but is it really hard to drop a line to the original authors? What's their plan for maintenance? Are they going to port any future changes?
141
Alexey Sergushichev @asergushichev.bsky.social · 23/07/2026
Thanks @shitovhappens.bsky.social for the challenging UMAP to test on! 8/8
000
Alexey Sergushichev @asergushichev.bsky.social · 23/07/2026
All of this I did with Claude. It definitely helped trying out new ideas (and I could do it remotely from my phone at random places where I get new ideas), but I wasn't able to make it solve this on its own (with my budget). And it took a LOT of my guidance to make the code look reasonable. 7/8
100
Alexey Sergushichev @asergushichev.bsky.social · 23/07/2026
The final step is a force-directed polishing to further shorten the connectors and repel the labels a bit from each other, while strictly continuing to avoid conflicts. 6/8
100
Alexey Sergushichev @asergushichev.bsky.social · 23/07/2026
Next, the main trick: instead of moving labels one-by-one, let's move two label simultaneously! It looks expensive at first, but with a good starting point and some bound-based pruning it works pretty fast too, and gives a great layout structure. 5/8
100
Alexey Sergushichev @asergushichev.bsky.social · 23/07/2026
Second, do several passes of greedy label moves (each label has pre-generated radial candidates to consider), keeping the layout conflict-free. Looks not bad already, but there are obvious unnecessary long connectors. 4/8
100
Alexey Sergushichev @asergushichev.bsky.social · 23/07/2026
The final algorithm has 4 stages. First, we try to to start with a conflict-free layout: turns out, you can always make a conflict-free boundary layout by generating slots on plot sides and then solving the best matching over Euclidean distances (unfortunately, only works for same-size slots). 3/8
100
Alexey Sergushichev @asergushichev.bsky.social · 23/07/2026
The problem here is that we want to avoid label overlaps and connector crossings, while keeping connectors short. My initial take was to try a force-directed/simulated annealing algorithm, but after many iterations I wasn't able to get a good result. 2/8
100
Alexey Sergushichev @asergushichev.bsky.social · 23/07/2026
I released new 0.4 version of mascarade package with a much improved automatic label placement algorithm. It's a pretty neat algorithm, but it took a while to get there. 1/8 github.com/alserglab/ma... 🧬🖥️
141
Alexey Sergushichev @asergushichev.bsky.social · 22/07/2026
Ask ChatGPT to check it for you /s
120
Alexey Sergushichev @asergushichev.bsky.social · 17/07/2026
We provide a reference implementation in a hamstest Python package: github.com/golikov-nik/..., where you can also provide a function to calculate your own statistic. See the preprint for more details: arxiv.org/abs/2607.12853 7/7
github.com
GitHub - golikov-nik/hamstest
Contribute to golikov-nik/hamstest development by creating an account on GitHub.
010
Alexey Sergushichev @asergushichev.bsky.social · 17/07/2026
And yes, these issues were happening with FGSEA (github.com/alserglab/fg...), so the current implementation uses exactly this algorithm. 6/7
github.com
fgsea hangs forever for highly enriched pathways in the presence of repeated high scored genes · Issue #151 · alserglab/fgsea
Hi Alex, A (reproducible) issue ("GSEA hangs") was posted on the clusterProfiler GitHub. See: YuLab-SMU/clusterProfiler#659 (comment), and posts below that one. Since clusterProfiler uses under the...
100
Alexey Sergushichev @asergushichev.bsky.social · 17/07/2026
In this work, we show that this problem can be solved by introducing hashing to split ties, as well as highlight couple of other potential pitfalls specific to discrete spaces. In the end we have great accuracy and no bias when applied to K-S and M-W tests going down to 1e-100 and below. 5/7
110
Alexey Sergushichev @asergushichev.bsky.social · 17/07/2026
Turns out, in a discrete space—e.g., with permutation-based statistic—it doesn't always works smoothly: for example, all of the >= L_i level samples might have the same value L_i and you don't have a new value to select as the next level. Oops. 4/7
100
Alexey Sergushichev @asergushichev.bsky.social · 17/07/2026
How do we do it? We start from a trivial level L_0=-∞, sample from the level conditional distribution with MCMC, and select the median as the next level. Now we can estimate small p-values with logarithmic number of levels and samples! 3/7
110
Alexey Sergushichev @asergushichev.bsky.social · 17/07/2026
In FGSEA, for efficient estimation of small p-values (as opposed to simple Monte Carlo), we adapted a beautiful idea of adaptive multilevel splitting. We rewrite the target probability as a product of conditional probabilities and try to find L_i s.t. each conditional probability ≈ 0.5. 2/7
110
Alexey Sergushichev @asergushichev.bsky.social · 17/07/2026
New preprint from my lab with a methodological follow up on our work on fast GSEA algorithm: Hash-augmented adaptive multilevel splitting Monte Carlo algorithm for accurate estimation of two-sample permutation test p-values 1/7
Preprint abstract:

Nonparametric permutation tests are widely used for statistical analysis. However, exact computation of test p-values can be algorithmically challenging, particularly for custom tests with complex test statistics. In contrast, Monte Carlo sampling can be easily applied to any test statistic, but it suffers from poor relative accuracy when estimating small p-values, interfering with multiple hypothesis testing correction and leading to other issues. In this work, we present a hash-augmented adaptive multilevel splitting Monte Carlo algorithm that enables accurate estimation of arbitrarily small p-values in two-sample permutation tests. Using the Kolmogorov-Smirnov and the Mann-Whitney U tests as examples, we highlight potential pitfalls related to the discreteness of the test statistic distribution and show how to address them. By comparing with an exact algorithm, we demonstrate the accuracy of the p-value estimates provided by the proposed algorithm and the validity of the associated confidence intervals. We provide a reference implementation of the proposed algorithm in the Python package hamstest, which allows p-value estimation for a user-defined statistic.
1103
Reposted by Alexey Sergushichev
Sergey Nurk @sergeynurk.bsky.social · 07/07/2026
Senior Bioinformatics Software Developer opening in my team in ONT's Applications department! Hybrid with a few days a week in our Oxford headquarters. We can sponsor visas! www.linkedin.com/jobs/view/44...
linkedin.com
Oxford Nanopore Technologies hiring Senior Bioinformatics Software Engineer, Applications in Oxfordshire, England, United Kingdom | LinkedIn
Posted 3:04:10 PM. Job DescriptionOur goal is to bring the widest benefits to society through enabling the analysis of…See this and similar jobs on LinkedIn.
12218
Reposted by Alexey Sergushichev
Ryan Moulton @moultano.bsky.social · 19/06/2026
I spent the last month obsessed with finding colors that can't be displayed on a conventional screen. This is what I found. moultano.wordpress.com/2026/06/19/w...
moultano.wordpress.com
Where to Find the Colors Your Screen Can’t Show You
An atlas of the vibrance of the real world
471130381
Alexey Sergushichev @asergushichev.bsky.social · 18/06/2026
If it's for sciencv, I made something like this previously, which supports a bit more of formatting types (e.g. html tags and subscripts): bsky.app/profile/aser...
020
Reposted by Alexey Sergushichev
hex @hex.kolektiva.social.ap.brid.gy · 07/06/2026
But if *I* hijack *their* devices it's a "felony." blog.includesecurity.com/2026/06/th…
blog.includesecurity.com
The Smart TV in Your LivingRoom Is a Node in the AIScraping Economy
The work at Include Security has us working with AI day in and day out (hacking it, using it, training it, etc). We’re all aware of the community-level opposition happening against datacenters, aimed at improving AI capabilities, being built recently. What you might not be aware of are the distributed efforts to train AI that could be using the devices inside your home. In this post, we’re going to explore how the company Bright Data facilitates modern AI models scraping training data from the Internet using its residential proxy network. Bright Data is a data-collection company that sells access to what it markets as the world’s largest residential proxy network of 400M+ home IP addresses that its customers route web-scraping traffic through. The supply behind that network comes from an SDK: a piece of software embedded in consumer apps that, with the user’s consent, turns their phone or smart TV into one of those exit nodes. We’ll document what you, the average user, should know about what this company’s SDK does on your systems such as your mobile phone and your smart TV. We’re going to explore how their SDK works, which platforms have shipped it, and why your Internet-connected TV is the ultimate proxy for AI models looking to train on data scraped from the Internet. ### **Why This Matters Now** AI companies depend on web-scraped content: for pre-training, for retrieval, for agent grounding, for search. But the modern web isn’t scrapeable from a datacenter. Cloudflare, DataDome, HUMAN, among others throttle or block requests from known cloud IPs. The workaround is residential proxies. A scraping job routed through a Comcast or T-Mobile subscriber’s connection arrives at the target site from an IP that belongs to a paying residential customer. Krebs reported in October 2025 that _“a glut of proxies from Aisuru and other sources is fueling large-scale data harvesting efforts tied to various AI projects.”_ Academic measurement going back to 2019 shows these networks are overwhelmingly misused. The FBI issued a formal advisory earlier this year. Most of the existing press has focused on the **illegal** residential-proxy supply: botnets (Aisuru, Kimwolf), trojanized apps (HUMAN Security’s PROXYLIB disclosure), pre-infected IoT hardware (Google/Mandiant’s IPIDEA takedown). These are the bad actors. On the other hand, the legal supply side has received far less scrutiny. Today Bright Data is the largest residential proxy network in the world by its own marketing, advertising “150M+ IPs” sourced via a consent SDK embedded in partner apps. This research documents how that SDK works, which platforms have shipped it, and why the connected-TV is the ultimate residential proxy. ### **Why Connected TV (CTV) is the Ideal Proxy** Connected TV, a.k.a Smart TV, is a near-perfect residential proxy. Compared to a mobile phone: **Factor**| **Mobile phone**| **Smart TV / CTV** ---|---|--- Power| Battery most of the day| Always plugged in Network| WiFi + cellular| Always WiFi, high-speed Uptime| Intermittent| 24/7 in standby Bandwidth ceiling| Low (cellular caps)| Effectively unlimited User attention| Actively used| Often unattended Consent UI| Text on a phone screen| Text navigated via TV remote arrow keys Corporate/family oversight| Higher (MDM, mobile EDR)| Virtually none A TV never hits 1% battery, jumps between WiFi networks or gets locked when the user is asleep. Some partner publishers do disclose the Bright Data relationship in their privacy policies PlayWorks is one example. But privacy-policy disclosure is the wrong control surface for a TV. It is hard to scroll through a legal document navigated by arrow keys on a remote, and the in-app consent dialog, doesn’t convey that a paying Bright Data customer is about to route their scraping traffic through the user’s home internet. Petflix, a Roku app documented by The Verge, is a representative case. Its opt-in screen reads: _“To enjoy Petflix for free with fewer ads, you are allowing Bright Data to occasionally use your device’s free resources and IP address to download public web data from the internet. Bright Data will only use your IP address for approved business-related use cases. None of your personal information is accessed or collected except your IP address. Period.”_ The Petflix dialog says “occasionally.” The SDK’s publicly queryable config sets `max_bw_monthly_wifi: 200,000,000,000` bytes — a 200 GB default monthly WiFi budget. **Who Bright Data Names as Partners** Bright Data exposes a partner manifest endpoint. The endpoint is unauthenticated and anyone can fetch it. Names in the manifest that I was able to identify with high confidence from public sources: **Partner ID (from config)**| **Entity**| **Scale** ---|---|--- playworks_digital| **PlayWorks Digital Ltd**| 400+ CTV game titles; reach ~250M TV homes via Comcast, Sky, Cox, LG, Samsung, Vizio, Roku cloudtv| **CloudTV**| Integrated across 125+ TV brands and 15+ OEMs longvision_media_hong_kong_co_limited| **Longvision Media HK (LongTV)**| 5M OTT users across HK and Malaysia viber_media_s_r_l| **Viber Media S.à r.l. (Rakuten)**| 250M–820M monthly users of the Viber messenger supercent_inc| **Supercent** (Korea)| #1 Korean mobile publisher by downloads in 2023 moonfrog_labs_private_limited| **Moonfrog Labs** (Stillfront subsidiary)| ~10M MAU on Teen Patti Gold alone; acquired for $90M hola_networks| **Hola Networks**| Bright Data’s lineage parent; user base reported in the tens to ~100M+ range at peak per Hola’s own historical marketing Others (`desoline, free_time, ott_studio, global_microtrading, m_m_media, easystaff_lp`) are present but less identifiable from public sources. `bright_screensavers, bright_videos`, and `brightdata `are Bright Data’s own apps. A note on what the partner list proves: Being listed in Bright Data’s config means an integration might have existed at some point. It does _not_ by itself prove that a specific publisher’s currently-shipping app(s) includes the SDK in production. For any named publisher, per-app verification is required. What the partner list _does_ directly prove: 1. Bright Data ships this roster in an **unauthenticated public endpoint**. 2. At least three CTV-focused entities (PlayWorks, CloudTV, Longvision) monetized their user’s devices as residential proxy exit nodes. PlayWorks in particular reports CTV distribution across major TV platforms and ISPs, with reach figures in the hundreds of millions of households per its own marketing materials. ### **How does the Bright Data SDK turn a user’s device into a residential proxy exit node?** The Bright Data SDK is a publicly documented commercial product, offered to publishers via Bright Data’s SDK integration docs (with a JavaScript variant for web). What follows builds on that public surface with findings from reverse-engineering the shipping iOS framework and instrumenting 30 days of its runtime traffic. The SDK ships as an iOS framework (brdsdk.framework) inside partner apps. I reverse-engineered the binary and captured 30 days of traffic from a research fleet running the SDK inside a consent-installed partner app. #### **The Unauthenticated Config** On every launch the SDK calls: `GET <https://clientsdk.bright-sdk.com/sdk_config_ios.json>?appid=<bundle>&ver=<sdk-version>&uuid=sdk-ios-<32hex>` The endpoint is unauthenticated in any meaningful sense. The server gates only on two query parameters `appid `(an app bundle ID, which can be found in the App Store listing of the partner app) and `ver `(the SDK version string). Supply those and any randomly generated UUID, and the server returns the same response a real device gets: feature flags, idle-detection thresholds (battery %, CPU/memory ceilings, WiFi-vs-cellular rules), per-country bandwidth tiers, and the partner manifest I showcased above. Each of these branches is worth examining on its own: the idle rules that decide when your device is eligible to relay, a flag that routes peer traffic around your VPN, a map that stitches your installs across platforms into one identity, and the per-country bandwidth caps. #### **The Peer Tunnel** After config fetch, the SDK opens a persistent WebSocket to: `wss://proxyjs.brdtnet.com:443` This hostname resolves to AWS Global Accelerator IPs (3.33.193.183, 15.197.193.114 as of this writing). The TLS certificate is `CN=*.luminatinet.com` — the domain for Luminati Networks, Bright Data’s pre-2018 corporate name. The rebrand was publicly announced in 2018. Active SDK infrastructure still runs on the legacy cert, which is a useful detection pivot: the current customer-facing proxy service lives on brightdata.com-branded domains, so any luminatinet.com / brdtnet.com traffic on your network is specifically the peer-tunnel plane, not customer-side Bright Data usage. The server identifies itself as `uWebSockets: 20`. The peer endpoint requires no authentication to upgrade. The server accepts any TLS-valid WebSocket upgrade and immediately pushes the connecting client an application-layer frame with the client’s public IP echoed back. From there, a handshake unfolds: 1. **Server → client: tunnel_init** establishes the session, returns the client’s public IP. 2. **Server → client: cid_set** the server assigns the client a session-tracking identifier in the format `<IP>-<token>/ls<N>c<M>p443_<IP>_<counter>`. We confirmed this format matches the cid field present in the SDK’s captured telemetry traffic from real devices. 3. **Server → client: status_get** the server polls the device for its idle state, battery, network type, and available bandwidth. The device responds with a continuous telemetry feed: `idle, wifi_connected, mobile_connected, mobile_type` (LTE/5G), `roaming, battery_level, using_battery, screen_on, on_call, cpu_usage, mem_usage, raw_bw, bw, ipv6_supported, appid` (the host app), `sdk_version, platform`, and the assigned `cid`. This is a continuous feed of physical-device state to a third party, delivered via a consent dialog whose text is chosen by the host app publisher. 4. **Handshake complete.** Once the device reports favorable status, the server’s job-matching layer is free to push `cmd_tun` frames: individual scraping-job instructions that the SDK executes as HTTP requests against third-party sites, using the user’s residential IP as the source. Every frame on the WebSocket is plain JSON with a fixed envelope: `{"type": "ipc_call"|"ipc_post"|"ipc_result"|"ipc_error", "cmd": <command>, "cookie": <correlation-id>, "err_code": 0, "msg": { ...payload... }}` The full command vocabulary extracted from the binary and verified on the wire: **Direction**| **cmd**| **Purpose** ---|---|--- Server → Client| tunnel_init| Open session, echo public IP Server → Client| cid_set| Assign session identifier Server → Client| status_get| Poll device idle/battery/bandwidth Server → Client| cmd_tun / tun| Dispatch a scraping job Server → Client| dns| Request DNS resolution of a target Server → Client| consent| Request consent state Client → Server| status_send| Periodic heartbeat with device state Client → Server| tun_report / tun_ack / tun_fin| Relay-job lifecycle responses Client → Server| tunnel_init_decline| Decline a session Client → Server| logs| Ship diagnostic logs to server There’s no message signing, HMAC, client certificate or device attestation. Only the TLS layer and the server’s IP-reputation filter gating which peers actually receive jobs. For readers familiar with commercial malware protocol design: this is substantially less secure than typical C2. #### **When the SDK considers you “idle”** The config ships an explicit rulebook for when the device is eligible to relay someone else’s traffic: `"idle_metrics": { "ignore_screen_on": true, // relay even with the screen on "ignore_on_call": true, // relay while the user is on a phone call "max_bw_ratio": 1, "min_battery": 0.2, "wifi_on_battery": true, "min_battery_wifi": 0.2, "max_cpu_usage": 70, "max_mem_usage": 90, "mem_screen_off": true, "idle_timeout": 30, "not_idle_timeout": 10 }` The ignore_screen_on and ignore_on_call flags are notable: “idle” does not mean the user is away from the device. It means the device’s CPU, memory, and battery are within the SDK’s thresholds. A user on a phone call, actively reading the screen, is considered idle for relay purposes. #### **Cross-Platform Identity Linkage** The config also ships a dual_pairing map: ``**"dual_pairing":** { "ios_com.brd.earnapp": ["win_earnapp.com", "mac_com.earnapp"] }`` That’s a server-side map tying a user’s iOS, Windows, and macOS installations of the same brand into one entity. It’s cross-platform identity stitching documented inside a public config file.One more forward-looking field: http3_enabled: true. The SDK is already shipping the flag for QUIC-based peer transport. A future version may move the peer tunnel from TCP/443 to UDP/443, which would break any defender relying on TCP connection tracking to detect the WebSocket. #### **The Inspection Bypass** The SDK’s config ships a flag “use_netifs”: true. That flag triggers code in the SDK binary that constructs its NWConnection with a specific required interface: `en0 `(WiFi) or `pdp_ip0 `(cellular), rather than using the system default route. **On iOS, this bypasses any configured VPN’s tun0 interface entirely.** The peer tunnel does not cross a user-configured VPN, even when the rest of the app’s HTTPS traffic does. We observed this empirically. My research setup includes transparent TLS interception. It captured every HTTPS call the SDK made, except the peer tunnel to proxyjs.brdtnet.com:443, even though port 443 is explicitly redirected to the inspector. The bypass uses Apple’s documented NWParameters.requiredInterface API. It’s worth emphasizing that the SDK uses **two independent inspection bypasses** , one per plane: * **Control plane** (config fetch, telemetry pings): built on CFNetwork’s CFHTTPMessage primitives rather than URLSession/NSURLConnection. This defeats URLSessionlevel instrumentation (swizzling, network extensions, URLProtocol subclasses) commonly used in mobile app-sec tooling, while still respecting the system proxy and so remaining visible to TLS-intercepting researchers. * **Data plane** (peer tunnel): built on NWConnection with requiredInterface set to the physical interface. This is what defeats VPNs and ensures the scraping is executed from a residential IP. Both choices are legitimate Apple APIs. The combination is the interesting artifact: the data plane is invisible to VPN-based inspection _and_ the control plane is invisible to URLSession-based hooks. Researchers who rely on either single technique see only half the SDK’s behavior. For enterprise security teams running MDM, corporate-VPN-based traffic inspection, or home-router parental controls: the most sensitive channel this SDK operates is designed to go around your visibility layer. ### **The geography tiers** The config ships per-country bandwidth thresholds. Four countries get explicit non-default policies: **Country**| **Min battery to relay**| **Daily cap**| **Monthly cap** ---|---|---|--- **Uzbekistan**| **1%**| 1 GB| 30 GB **Oman**| **1%**| 1 GB| 30 GB Qatar| 20%| 40 MB| 250 MB UAE| 20%| 40 MB| 250 MB default (worldwide)| 20%| 50 MB| 500 MB Looking at the config, Uzbekistan and Oman devices are permitted to relay down to **1% battery** , with daily caps 20× the default and monthly caps 60× the default. Qatar and UAE devices are throttled _below_ default. We can only speculate as to why the tiers are drawn this way. One reading is deliberate market segmentation, relaxing limits where grid power is stable and throttling where mobile data is expensive. The default-worldwide allowance still permits **500 MB of someone else’s traffic per month** over the user’s home internet. ### **Testing Setup and Methodology** Three data sources: 1. **Thirty days of TLS-inspecting proxy captures** from iOS device running consent-installed partner apps (including XYO COIN, which embeds the Bright SDK). 2. **Static analysis of the SDK binary** (brdsdk.framework, version 1.532.120, iOS arm64). All specific Bright Data hostnames, cert fingerprints, and TLS infrastructure described are publicly observable by anyone making the same requests. No session-specific identifying data from either the research fleet or the research client appears in this document. ### **Timeline** * **May 11, 2026** – Email notice sent to privacy@brightdata.com notifying their team about the release of this blog post. No response to the notification has been received at the time of this article’s publishing. ### **Defense Approaches** The traffic leaves clear fingerprints at the network boundary, and the SDK leaves identifiable symbols in the app binary. The approaches below let you detect and block the peer tunnel — at the network level or on the device itself. Three approaches, ordered by ease of deployment: **Approach 1: DNS block** (trivial, effective for network-routed devices): proxyjs.brdtnet.com proxyjs.luminatinet.com proxyjs.bright-sdk.com clientsdk.bright-sdk.com clientsdk.brdtnet.com Blocking proxyjs.* kills the peer tunnel without affecting any customer who legitimately uses Bright Data’s customer-facing proxy service on a different domain. **Approach 2: TLS SNI filtering:** Drop or alert on TLS handshakes where server_name matches *.brdtnet.com, *.luminatinet.com, or *.luminati.io. Works at the network boundary without TLS inspection. **Approach 3: TLS certificate fingerprint:** * .brdtnet.com → SHA256 313ce4ec7d5a51e5… * .luminatinet.com → SHA256 5028612e625befea… Stable until Sectigo cert rotation (current certs valid through mid-2026). **The use_netifs caveat:** All three layers only work on traffic that crosses your network boundary. The SDK’s use_netifs binding means that on iOS, when the device is on cellular, peer traffic bypasses corporate WiFi entirely. For managed fleets, the complementary control is MDM-based app binary scanning: search installed apps for the Swift symbols BrdWebSocketFacade and BrdNetwork.DNSResolver, and prohibit apps containing them on corporate-issued devices. For household users concerned about a specific smart TV or mobile app: block the hostnames above at your router’s DNS settings (Pi-hole, NextDNS, Cloudflare Gateway, your ISP’s equivalent). — This blog post was written in partnership with our guest author and independent security researcher Buchodi. ### Share this: * Share on X (Opens in new window) X * Share on Facebook (Opens in new window) Facebook * ### Like this: Like Loading…
21048
Reposted by Alexey Sergushichev
c0nc0rdance @c0nc0rdance.bsky.social · 29/05/2026
Pigeon pathfinding may depend on IMMUNE CELLS in their LIVERS 😕. Macrophages in the liver break down old red blood cells & in the process accumulate iron compounds like 'ferritin', which is superparamagnetic. These liver immune cells are found in proximity to nerve clusters. Compass cells!
613237
Reposted by Alexey Sergushichev
Laurel Oldach @laureloldach.bsky.social · 28/05/2026
Thermo Fisher has responded to research integrity activists who spotted apparent manipulation in its antibody catalog: "In ... preparing antibody images for publication on our website, some images may have been adjusted to clarify for presentation purposes." More: cen.acs.org/research-int...
Headline "Sleuths say Thermo Fisher doctored data to sell antibodies," subhead "Apparent manipulation of validation images in reagent catalog concern researchers," byline Laurel Oldach, image of a pipette loading an SDS-PAGE gel for a western blot
97938
Reposted by Alexey Sergushichev
Reese Richardson @reeserichardson.bsky.social · 28/05/2026
TL;DR: We've identified more than 100 cases of apparent manipulation in Thermo Fisher Scientific's antibody verification data. @sholtodavid.bsky.social @johanduchene.bsky.social reeserichardson.blog/2026/05/28/h...
reeserichardson.blog
How much of Thermo Fisher’s antibody data has been manipulated?
We’ve documented more than 100 instances of apparent data manipulation in Thermo’s catalog
23591312
Reposted by Alexey Sergushichev
Reese Richardson @reeserichardson.bsky.social · 21/05/2026
@johanduchene.bsky.social @sholtodavid.bsky.social Spent the last hour looking, found ten more apparently manipulated Western blots in Thermo Fisher's antibody verification data (across eight different catalogued products). Thread below. www.thermofisher.com/antibody/pro...
Apparent manipulation in the antibody verification data in Thermo Fisher's online catalog
1517388
Alexey Sergushichev @asergushichev.bsky.social · 22/05/2026
What a great news to read, while still waiting for more than a year to get my adjustment of status approved.
110
Reposted by Alexey Sergushichev
Sholto David @sholtodavid.bsky.social · 22/05/2026
Earlier this week I posted an example of a fake western blot provided by ThermoFisher to demonstrate the validity of a p53 antibody. I considered it an amusing curiosity. In fact Thermo Fisher Scientific has systematically manipulated antibody validation data!
713660
Alexey Sergushichev @asergushichev.bsky.social · 19/05/2026
Oh yeah, for selling they should be great.
110
Alexey Sergushichev @asergushichev.bsky.social · 19/05/2026
Their checklist exam is bullshit though. I was naive and didn't go to the mechanic, found a hole from a stray bullet in the roof on the 8th day, just after the return window, and later a couple more problems. But I guess they're no worse than an average offline dealer.
110
Alexey Sergushichev @asergushichev.bsky.social · 16/05/2026
And you immediately get a citation!
110
Reposted by Alexey Sergushichev
William DeWitt @wsdewitt.github.io · 29/04/2026
Arc Institute’s “MULTI-evolve” learns a classical additive model, not epistasis. Preprint (w/ Gian Marco Visani and Aayush Verma): www.biorxiv.org/content/10.6... Blog: dewitt-lab.github.io/posts/2026-0...
dewitt-lab.github.io
Additivity is all you need?
Arc Institute’s “MULTI-evolve” learns a classical additive model, not epistasis.
37927
Reposted by Alexey Sergushichev
Bioconductor @bioconductor.bsky.social · 30/04/2026
🚀 We’re excited to share the release of Bioconductor 3.23, featuring: ✅2418 software packages (94 new) ✅437 experiment data packages (5 new) ✅928 annotation packages ✅8 books (2 new) ✅28 workflows 🔗 Please see the full release announcement here: bioconductor.org/news/bioc_3_...
02413