Toggle between Vertical and Horizontal Windows Splitting

On gnu.emacs.help:

Requested: Function that toggles between vertical and horizontal split layout of currently defined windows preferrably preserving splitting ratio.

(defun my-toggle-window-split ()
  "Vertical split shows more of each line, horizontal split shows
more lines. This code toggles between them. It only works for
frames with exactly two windows."
  (interactive)
  (if (= (count-windows) 2)
      (let* ((this-win-buffer (window-buffer))
             (next-win-buffer (window-buffer (next-window)))
             (this-win-edges (window-edges (selected-window)))
             (next-win-edges (window-edges (next-window)))
             (this-win-2nd (not (and (<= (car this-win-edges)
                                         (car next-win-edges))
                                     (<= (cadr this-win-edges)
                                         (cadr next-win-edges)))))
             (splitter
              (if (= (car this-win-edges)
                     (car (window-edges (next-window))))
                  'split-window-horizontally
                'split-window-vertically)))
        (delete-other-windows)
        (let ((first-win (selected-window)))
          (funcall splitter)
          (if this-win-2nd (other-window 1))
          (set-window-buffer (selected-window) this-win-buffer)
          (set-window-buffer (next-window) next-win-buffer)
          (select-window first-win)
          (if this-win-2nd (other-window 1))))))

Thanks Fabrice.

PLT Web Server Changes

Jay, maintainer of the PLT Web Server, has recently made a lot of changes to make it easier for folks to get started with the app server. The latest change is in the documentation, per this post:

The PLT Web Server manual was organized too much like a reference manual with little guide to a user to understand how some modules fits in to the big picture. I’ve reorganized the documentation with the following paradigm:
— Running the Web Server
— Writing Servlets
— Extending the Web Server
Other improvement related to this: I’ve added examples to almost every servlet function. I have integrated the stateless and non-stateless servlet documentation to put stateless servlets on a more secure footing and make it clear that they are usable in real applications. I’ve created an HTTP sub-module that encapsulates most of the HTTP handling. (This will limit the need to use what used to be considered internal Web Server functions.)

Links: Docs, Writing Servlets, Stateless, and HTTP module.

Bazaar Marketing Practice

I recently cut over from Subversion to Bazaar. Happy to see that a new, improved version, 1.9, was released; I headed over to the download area only to find a RC1 version available. There were only two 1.9 releases available: source code or a Mac installer. Apparently the Windows installer will be available in a few days. How disappointing.
Why drum up everyone’s excitement on the 7th of November only to tell them that they need to wait around for another five days before they can use it? It is a bizarre marketing practice!

A Theory for Language Design

No amount of language design can force a programmer to write clear programs. If the programmer’s conception of the problem is badly organized, then his programs will also be badly organized. The extent to which a programming language can help a programmer to organize his problem is precisely the extent to which it provides features appropriate to his problem domain. The emphasis should not be on eliminating “bad” language constructs, but on discovering or inventing helpful ones.

— AIM-353: LAMBDA: The Ultimate Imperative