Skip to content
View arogozhnikov's full-sized avatar


  • Pro
Block or Report

Block or report arogozhnikov

Block user

Prevent this user from interacting with your repositories and sending you notifications. Learn more about blocking users.

You must be logged in to block users.

Please don't include any personal information such as legal names or email addresses. Maximum 100 characters, markdown supported. This note will be visible to only you.
Report abuse

Contact GitHub support about this userโ€™s behavior. Learn more about reporting abuse.

Report abuse

Hi-hello ๐Ÿ‘‹

I enjoy working on really challenging scientific questions that will make a long-term difference.

My current focus is ML + Bio (more specifically, protein design), but previously I developed a bunch of ML methods for CERN.

You can find my development/ML projects here on github: first of all, check einops (unless you already use it ๐Ÿ˜).

Projects I'm interested in

Are you looking for a programming project? I have some ideas for you:

einops support in ruff

Einops is very readable per se, and mistakes are generally easy to detect, but how about making it even simpler with static analysis?

Some examples where it could be useful

rearrange(x, 'b h w c -> b (h w)') # complain on missing c
rearrange(x, 'b h w 3 -> b (h w) 3') # anonymous axes like 3 are not available in rearrange
rearrange(x, 'b (h w) c -> b h w c') # complain that either h or w should be provided
einops coloring in vs code

Wouldn't it be great if reduced or added dimension was immediately colored? Something like:

Screenshot 2024-06-28 at 13 59 28
'better' typer

Tiangolo's typer originally made a number of things right - hierarchy of typers, strict type checking, and auto-completion for a number of shells out-of-the-box.

That said, typer lacks attention from tiangolo, and lost some critical parts of experience:

  • it is slow (500ms for auto suggestion is harsh)
  • way many dependencies
  • does not handle async functions (fixable)
  • it is quite shell-y and not pythonic. I'd like to just call function from shell after all
    • strange rules for lists and *args (e.g. can't pass an empty list)
    • func(*, kw_only_param, kw_param=False) is not recognized
    • func(param1, param2=None) forces to use --param2=val instead of call param1_val param2_val
    • type | None not supported
    • dataclasses / pydantic as inputs are not supported
  • 'just give me raw input, I'll put it to other bash command' is not supported

That's my complains, but walk over bugtracker of typer to see what's in demand.

unix sockets in SSH-over-HTTP

Do you use SSH? I guess you do, since you're on github.

I've been using unix sockets (UDS) as endpoints for containers for a while now, and it (mostly) rocks.

Several similar containers can live on the same instance, and each mounts a folder with UDS (multiple services usually). Domain sockets can provide access to various web-servers, and almost anything can serve from UDS.

(If you use TCP port forwarding for containers, try using UDS, you may like it much better, specially if you manage many endpoints or containers! No security issues, and you can easily add/remove sockets on the fly and without port clashes! Spice with using symlinks for synonyms, and network management stops being ugly.)

Back to the point: openssh-server does not support serving on unix socket, so I use ugly hack with socat redirecting request to TCP port. Openssh-client does not support connecting to domain socket (easy to fix this in config though).

While (unmerged) patches are available to support UDS in openssh, I'm on the market for something next-gen, e.g. something like SSH3 + serving/connecting to unix sockets.

Remarks related to all project above

What exactly I am ready to help with (details)

If you think taking one of these projects, I am happy to test your solution, provide detailed user feedback, maybe test in prodiction, and if it works, cover it here or in my blog. (or einops docs if it is relevant to einops).

Note that doesn't include development, but programming is something enjoyable,
while finding someone interested in using your work is usually non-trivial ๐Ÿ™‚.

Pinned Loading

  1. eindex eindex Public

    Multidimensional indexing for tensors

    Jupyter Notebook 107 2

  2. einops einops Public

    Flexible and powerful tensor operations for readable and reliable code (for pytorch, jax, TF and others)

    Python 8.2k 340

  3. python3_with_pleasure python3_with_pleasure Public

    A short guide on features of Python 3 with examples

    3.6k 242

  4. infiniteboost infiniteboost Public

    InfiniteBoost: building infinite ensembles with gradient descent

    Jupyter Notebook 183 23

  5. hep_ml hep_ml Public

    Machine Learning for High Energy Physics.

    Jupyter Notebook 176 64

  6. 3d_nn 3d_nn Public

    Raymarching neural network in browsers with WebGL shaders

    JavaScript 190 31