Here is a solution to the 2008 ICFP Programming Contest in TeX.
(via expandrive blog)
Author: grant
tufte-latex
The tufte-handout document class defines a style similar to the style Edward Tufte uses in his books and handouts. Tufte’s style is known for its extensive use of sidenotes, tight integration of graphics with text, and well-set typography
(via comp.text.tex)
Gambit Scheme on the iPhone
This might be the first Scheme running on the iPhone!
(via comp.lang.scheme)
Source Code for Various Old Scheme Implementations
The source code for various, older, Scheme implementations can be found here. It is pretty interesting to read about the differing interests of the implementers.
(via comp.lang.scheme)
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.
Beating the Odds: 3 Tenets of Good Software
Lately I’ve noticed three key traits about software that is generally recognized as “excellent” by technical folks. At its core, said software is simple (it does a few things, very, very well), it its highly reliable (correct, predictable, stable), and it is extensible (by the user).
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