Konstantinos Kallas

58 Followers
57 Following
12 Posts
Assistant Professor of CS at UCLA // Systems, Compilers, PL // he/they
Websitehttps://angelhof.github.io

PaSh finally got a PyPI package (https://pypi.org/project/pash/) 🎉

Install with `pip install pash` and start parallelizing your 🫵 shell scripts today!

Client Challenge

"Closing a Browser", 2024

White ASCII on transparent canvas.

I am a bit late to the party, but I am very excited to announce that I will be joining UCLA CS as an assistant professor starting January 2025 🎉

I will be recruiting students for the Fall of 2025. If you want to work on systems/compilers/PL apply to UCLA and email me :)

I will be moving to LA 🌅 in early Fall so if you are in the area contact me and we can hang out!

And a note of appreciation: I have been very fortunate to work with and get support from a fantastic set of people---mentors, collaborators, friends, family---without whom this wouldn't have been possible. I am especially grateful to my advisor, Rajeev Alur, and to Nikos Vasilakis, who were constant sources of inspiration and support throughout my PhD and I am so lucky to have met them! There is no space to mention everyone else here, so if you want to see the extended version of these acknowledgements see my dissertation📃

Are you using Github Copilot? Are you terribly afraid that you will accidentally delete your system 🔥 when running the suggested shell commands? try comes to the rescue 🧯 Use try to run any command in a lightweight sandbox that you can then inspect before committing.

I wrote a short blog post that describes this usage https://angelhof.github.io/2023/01/09/try-on-gh-copilot.html.

Thanks to Mayank Keoliya who came up with this idea! Download try (https://github.com/binpash/try) and use it to keep your sanity with Copilot 😌

Using try to make Copilot command suggestion a bit saner

Here is a cool usecase of our recently published tool, try that can help when using Github Copilot in the CLI. Thanks to Mayank who came up with it! TL;DR: Use try around commands suggested by LLMs to not accidentally destroy your system 😌 LLMs are here and developers use them increasingly often to suggest programs and commands to them by describing what they want in natural language. A particular usecase is Github Copilot in the CLI which suggests shell commands that can then be easily copied to the clipboard or explained. Here is an example that I recently used to delete some garbage files that get generated when copying files from a location in Windows to WSL: $ gh copilot suggest "delete all files in this directory recursively that end with :Zone.Identifier" Welcome to GitHub Copilot in the CLI! version 0.5.4-beta (2024-01-04) I'm powered by AI, so surprises and mistakes are possible. Make sure to verify any generated code or suggestions, and share feedback so that we can learn and improve. For more information, see https://gh.io/gh-copilot-transparency ? What kind of command can I help you with? > generic shell command Suggestion: find . -name "*:Zone.Identifier" -delete ? Select an option > Explain command Explanation: • find is used to search for files and directories. • . specifies that we want to start the search from the current directory. • -name "*:Zone_Identifier" specifies that we want to search for files or directories with names ending in :Zone_Identifier. • -delete deletes the files found. ? Select an option > Copy command to clipboard Command copied to clipboard! ? Select an option [Use arrows to move, type to filter] > Copy command to clipboard Explain command Revise command Rate response Exit Even though Copilot offers to explain this command, can we actually trust it??1 In fact this command does not exactly capture the original intent, because it can also delete directories! One should use -type f to prevent that, but how could you have guessed to ask?!. It is not very wise to immediately run this command on your system before first carefully looking at find’s manpage to determine if this usage is correct—but that beats the purpose of using an LLM in the first place. This is where try can be very helpful as a safeguard when running the suggested command. try is a tool that allows you to easily run a shell command in a sandbox to first inspect its effects before commiting it. We can use try to run the Copilot suggested command and inspect all the modifications that it would do: $ try 'find . -name "*:Zone.Identifier" -delete' Changes detected in the following files: /home/konstantinos/University/job-applications/univ1/research-statement.pdf:Zone.Identifier (deleted) /home/konstantinos/University/job-applications/univ2/teaching-statement.pdf:Zone.Identifier (deleted) /home/konstantinos/University/job-applications/univ3/cover-letter.pdf:Zone.Identifier (deleted) /home/konstantinos/University/job-applications/univ3/teaching-statement.pdf:Zone.Identifier (deleted) /home/konstantinos/University/job-applications/univ4/cover-letter.pdf:Zone.Identifier (deleted) /home/konstantinos/University/job-applications/univ5/cover-letter.pdf:Zone.Identifier (deleted) /home/konstantinos/University/job-applications/univ6/cover-letter.pdf:Zone.Identifier (deleted) Commit these changes? [y/N] If the changes look OK, we can ask try to commit, otherwise we can revise the command by mentioning the counterexample. try has more features to help with exploring the changes, like using try explore to spawn a shell in the sandbox and play around seeing if the changes are actually reasonable. You can find out more about it on Github. Links: try: Github repo Github Copilot: Documentation

Konstantinos Kallas
UPenn's REPL (Research Experiences for Undergrads in PL) program is open for applications:
https://penn-repl.github.io
It's a summer program from May to August, eligible to US undergrads, with a focus on underrepresented groups. Deadline is March 1st
REPL

Just arrived in Koblenz for SOSP'23! Contact me if you want to have a chat during the conference 🏰

It's 🔥 HotOS 🔥 time and we (Georgios Liargkovas @gliargko, Michael Greenberg, Nikos Vasilakis, and I) would like to present hs*, a system that runs 🐚 scripts out-of-order to improve their performance. On a bioinformatics script hs achieves x3.9 speedup.

*hs does not stand for haskell but sh in the wrong order!

The key difference with prior work is that this system does not require ANY 🤯 information from the user (e.g., in the form of command specifications). How?

hs uses tracing 🔍 and isolation☣️. With tracing hs figures out what a command does while it runs and isolation lets hs run commands without fear that they will modify their surrounding system. If a command performs illegal side-effects, hs just throws its isolated environment to the trash 🗑️

As a side-benefit, with the help of @eric we isolated the isolation component of hs in its own tool called try (https://github.com/binpash/try). Try allows you to speculatively execute a command, check its effects on the file system, and only commit them if it hasn't broken anything.

If you want to learn more about this work you can read our HotOS paper (https://sigops.org/s/conferences/hotos/2023/papers/liargkovas.pdf) or watch our presentation at HotOS on Friday at 9am ET.

GitHub - binpash/try: Inspect a command's effects before modifying your live system

Inspect a command's effects before modifying your live system - binpash/try

GitHub