I just published my Emacs configuration as an article. Contains interesting stuff on Emacs, OrgMode, Clojure and other things.
Archive for the ‘english’ Category
This week, I re-implemented my main website. The text on the old one needed to be revised heavily (in fact I removed almost all of it except a short bio and some longer articles) and I wanted to experiment with a more colorful look. I need to revise the stylesheet a bit more to give a better experience on small screens (mobile), but so far I’m pleased with the result.
The new site html is generated completely by emacs’ org-mode project publishing functionality (the old one used a custom bunch of perl scripts generating from HTML snippets and perl POD documents). This hopefully means it’ll be easier to add and revise content, and it also provides nice syntax highlighting for any code snippets I put in my articles.
The whole switchover was pretty smooth, especially once I wrote a bit of elisp to roughly prepare conversion from POD formatting to org:
"Rougly convert region from pod syntax to org-mode"
(replace-regexp "C<\\([^>]+\\)>" "=\\1=" nil point mark)
(replace-regexp "I<\\([^>]+\\)>" "/\\1/" nil point mark)
(replace-regexp "B<\\([^>]+\\)>" "*\\1*" nil point mark)
(replace-regexp "^=head1 \\(.*\\)" "* \\1" nil point mark)
(replace-regexp "^=head2 \\(.*\\)" "** \\1" nil point mark)
(replace-regexp "^=head3 \\(.*\\)" "*** \\1" nil point mark)
(replace-regexp "^=head4 \\(.*\\)" "**** \\1" nil point mark)
(replace-regexp "^=head5 \\(.*\\)" "***** \\1" nil point mark))
Very basic, but pretty useful.
Now, I’m considering replacing WordPress for this blog with org-mode too. That probably requires a bit more investigation. I want to keep at least the tags/categories feature and related rss feeds, and I’m not sure if that’s available for org at the moment.
This saturday, all day. I’ll be giving an updated version of my “functional clojure: sequences” talk in the morning.
clojure-refactoring, the Emacs/SLIME based toolkit for doing refactoring wasn’t getting enough love and attention, so I fixed a few things. Tom Crayford unfortunately doesn’t have the time to work on it any further so I’m taking over as the maintainer. Inspect the code at the new “official” repository.
For now, I’m focused on fixing parsing issues first, then installing ease (I’m thinking about packaging everything Emacs-related on marmalade but that depends on what’s the easiest way to get stuff integrated for the user on the Emacs and Clojure sides). I’ve already removed the dependencies on out-dated libraries. Basically, everything I need to make the current functionality reliable enough for production use. Next up is support for clojure 1.3, probably, if that needs any work (I’m running 1.2 in production everywhere for now).
For the further future, I’d like this code to be useful for other editors/APIs/tools, so the SLIME/swank/Emacs specific stuff probably has to be separated out at some point. Some more refactorings will also be useful.
For now, version 0.6.1 is on clojars. Get it while it’s hot.
I’m working on pretzel right now. It’s a basic library that can be used to combine predicates and also holds a bunch of tests on string content.
Some people indicated they wanted some example code for my clj-decline
(validation) and flutter (form generation) libraries. So today I wrote
a simple demo application that uses both.
< Functional Clojure >
I’ll be doing a short presentation on the basic higher-order (sequence) functions in clojure.core at the Amsterdam Clojurians meeting next Wednesday. This talk should be understandable and useful for Clojure newbies. If you’re interested, just show up around 7.
Update: quite a few people showed up to the meeting. I’ve put the slides on github, and here is the elisp code I used to present the slides.
This is part of the series on SLIME functions. See the introduction for information on what SLIME is.
Another very short post.
Now what is the name of that function again? Which namespace contains that variable?
slime-apropos; Default key-binding:
C-c C-d C-a and type the part of the name you remember and SLIME will list all matching globals/symbols in the running program.
I’ve forked off ring.middleware.multipart-params into a new library called ring.middleware.upload-progress
It’s a bit rough-and-ready for now, and it uses the session to store the shared state about current uploads, which is probably not the best way to go about it – I’m thinking about introducing a new lower-level mechanism for low-memory shared state based on clojure’s STM tools, since this kind of thing is interesting for more than just uploads – but it does work as long as you’re not doing anything too fancy (if you’re worried, you can use a separate session store just for this info).
For the interested: the code is at github.
I’ll get a clojars release done as soon as I’m satisfied this stuff is usable. Probably in the next few days.