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 ๐).
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](https://private-user-images.githubusercontent.com/6318811/344316870-2c6a63d7-2300-4f6d-8262-4768fcdc8816.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MjQzMTUxMDUsIm5iZiI6MTcyNDMxNDgwNSwicGF0aCI6Ii82MzE4ODExLzM0NDMxNjg3MC0yYzZhNjNkNy0yMzAwLTRmNmQtODI2Mi00NzY4ZmNkYzg4MTYucG5nP1gtQW16LUFsZ29yaXRobT1BV1M0LUhNQUMtU0hBMjU2JlgtQW16LUNyZWRlbnRpYWw9QUtJQVZDT0RZTFNBNTNQUUs0WkElMkYyMDI0MDgyMiUyRnVzLWVhc3QtMSUyRnMzJTJGYXdzNF9yZXF1ZXN0JlgtQW16LURhdGU9MjAyNDA4MjJUMDgyMDA1WiZYLUFtei1FeHBpcmVzPTMwMCZYLUFtei1TaWduYXR1cmU9M2ZlMTc3OGVkM2I0MTIyNWEwYjEwNTQ5MWQ1YjQwYjU0MWUwYTVhOGM3ZDc5MTE3NmIwZjc5ZTUzYWYxODEzNyZYLUFtei1TaWduZWRIZWFkZXJzPWhvc3QmYWN0b3JfaWQ9MCZrZXlfaWQ9MCZyZXBvX2lkPTAifQ.bVNTtmeLH9-iT6xRQPVyndduA3A-KgGiBMLrFqJrq3g)
'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 recognizedfunc(param1, param2=None)
forces to use --param2=val instead ofcall 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 ๐.