Learn Lisp? Use Lisp?

I am a lisp/scheme hobbyist. So I learn something about lisp, I have read some manuals of Common lisp, Emacs lisp, r5rs, r6rs, racket and part of guile. But as any other IT technology, if I don’t touch them for some time, I will forget almost everything about them soon. And an important way to learn something is to use it. So I try to use Lisp as much as possible.

  • Emacs is my editor, email client (gnus), TODO/task manager (org mode, partly) and many more. And I try to customize Emacs to make it fit my requirement.
    • Emacs runs in daemon mode + a shell/terminal manager can replace screen or tmux. I write a shell/terminal manager by myself: project-shells, it can create/switch multiple shell/terminal buffers for each project.
      • Emacs runs in daemon mode could be attached to a ssh session, so I can resume my work remotely when needed. This can replace the session attachment/detachment functionality of screen/tmux.
      • The shell/terminal manager could replace the terminal management functionality of screen/tmux. But the terminal mode of Emacs is not good enough to run some program, sometimes I still have to use screen for that. But fortunately, at most times, shell mode is sufficient for me.
  • I use the racket pict module to draw figure. That is a good tool, and I like to draw figure in program way than WYSIWYG mode, because I feel I can control the figure at will and it is easier to change the figure in some situation. I write some code to enhance the functionality of racket pict module, the code is put here.
  • I have used racket slideshow module to write some slides. Because I need to share the slides with others, I may not write all my slides with it, but I think it is a good tool and I will try to use it as much as possible.
  • I have written a simple IMAP mail filter with racket net/imap module to filter my email for one of my email service used. I plan to enhance net/imap and use my imap filter for my other email services and publish the code at my github.
  • I use Guix distribution on one of my main notebook, that is a distribution written in guile. And uses many guile software, such as shepherd, mcron, etc. I read some code of Guix and contribute to Guix project to make it works better for me. I plan to use Guix as my main distribution in the future. But there is still some feature missing in Guix, so I only use it on one of my main notebook now.
  • I use Stumpwm on Guix as my window manager. It is implemented with Common Lisp. So it is highly customizable. I have fixed several bugs in stump and its modules. I may customize more in the future. But I will reduce my usage of Common Lisp in the future and use more Scheme in the future. So I may try guilewm or something else in the future.
  • I have tries to write shell scripts with Common Lisp and implement a simple shell in Common Lisp: hysh. But I found Common Lisp is not good for this task. The typical usage model of Common Lisp is to run functions in REPL, not run function in shell. I plan to implement a simple shell in racket firstly with process*/ports and place*, this may be not perfect, but should be easy to implement.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s