Posts about Common Lisp
I'm mainly an embedded/HW engineer. I also like computers so I know a bit more than typical electrical engineer on programming, unix utilities and the like. I know C (not an expert), some Python to get by, some Java, some FPGA (Verilog, VHDL) and ~advanced shell scripting (automated a good part of stuff, ~100-1000 lines bash CLI scripts).
Now, what is the buzz in systems programming languages these days? Rust and Zig. Both are becoming viable options for embedded. But I find Rust a bit complex for what it offers (memory safety). Zig simply seems to be a better C/C++ but without a "borrow checker". Also, neither of them have a nice concurrency story AFAIK (Go, green(?) threads, fibers(?) I don't know what these concepts are).
And I'm here wondering, why should I learn these two when I can just hone my C skills? Why shouldn't I learn something radically different instead for general purpose but fast computing?
So I decided to learn an alien language. Something completely different and paradigm shifting. Since my background is in EE, I was never exposed to LISP, Schemes or Prolog.
I've reached to Common Lisp. Why?
Mainly this blog post. He talks about a special way of "interactive development" that is only available on CL and Smalltalk. It intrigued me! If you've worked with MATLAB, you'd know that it has a emphasis on testing correctness of something on REPL first, then incrementally adding the parts of the solution to a script. You can also inspect all variables in a window and see their change.
Both of these seem to be not only supported in CL but the main way the development in it works. Like incrementally experimenting with a library or API, and testing if it works or how to use it, checking the variables in a window and finally adding the part to the bigger script.
There is Embedded CL that can generate C code so the final binary would be comparable to C and Rust in size. I asked about this here on /r/Common_lisp.
SBCL produces large binaries (but not ECL).
I don't know Emacs (only know vim) and 99% of internet is suggesting EMACS + SLIME. Yes, I know about Vim plugins. But 99% are suggesting EMACS. There is a reason for it.
People are saying Lisps are old. It certainly is not hype. Why isn't everyone coding in CL if it's this awesome?
Why should I learn CL when Python (numpy, PyTorch) is getting all the cool applications nowadays (Machine learning, Image synthesis). What is really CL's edge? What can it do that others can't?
In fact, I'm not sure why should I abandon my Bash + Unix utilities + Shellcheck workflow. It works and the REPL is bash session itself. No ()s too.
Only Chicken and Chez seem viable for me. They don't have that special REPL that the blog talked about. Chez does not have many libraries for stuff. Too much fraction in the scene (R7RS-small, R7Rs-large, R6Rs, R5Rs, etc)
Clojure: prefer not to mess with Java here.
uLisp: I hope what I learn with CL can be translated there. Like I can write my own derivation.
Janet, Babashka: nice but don't have as many contributors to it as CL.
TLDR; Looking for a general purpose, fast, Python/Shell alternative that has a better dev. cycle story than IPython/Jupyter-notebook and Bash+Unix.
Please join the project GitHub repo if you would like to contribute or be notified of updates: https://github.com/kaveh808/kons-9
I'm putting out this feeler to gauge interest in developing a new open source 3D graphics in Common Lisp. Hoping to assemble a team for this.
The idea would be to develop a system along the lines of Blender/Maya/Houdini, but oriented towards the strengths of Common Lisp.
Looking for contributors of all kind who are enthusiastic about the idea.
I'm an old-time 3D developer who has worked in CL on and off for many years. But I don't consider myself an expert, and am hoping to attract a cool group of people.
A little about me: • wrote 3D animation software used in “Jurassic Park” • software R&D lead on “Final Fantasy: The Spirits Within” movie • senior software developer on “The Hobbit” films
A proof of concept system I have been developing over the past few months:
I am well aware that this will be a large undertaking. This is my first such project, so please bear with me as we figure out the process together.
Do get in touch if you are interested. I have a feeling this might lead to something exciting. :)
How can I make an HTTP request to the Docker Engine SDK from Common Lisp using unix sockets
Basically all I want to do is to implement the following curl request in Lisp
curl --unix-socket /var/run/docker.sock http://localhost/v1.41/containers/json
Appreciate any pointers and help, thank you