From 4222507d357e6094fdcd3bb03d5ce032f8267c75 Mon Sep 17 00:00:00 2001
From: clinton
Rating:
+ + + + + + (8) / FictionRating:
+ + + + + + + (6) / FictionRating:
+ + + + + + (10) / FictionRating:
+ + + + + + (9) / FictionRating:
+ + + + + + + (8) / FictionThe author of the rather amazing Scary Go Round. +I highly recommend procuring the printed collections; the printing +quality is superb (full color on glossy paper), and the long story +arcs are much easier to read.
+ +Fiction
+ + + + + +Fiction
+ + + + + +Fiction
+ + + + + +Fiction
+ + + + + +Fiction
+ + + + + +Fiction
+ + + + + +Fiction
+ + + + + +Fiction
+ + + + + + +Fiction
+ + + + + + +Fiction
+ + + + + +Fiction
+ + + + + +Fiction
+ + + + + + +Nonfiction
+ + + + + +Nonfiction
+ + + + + +Nonfiction
+ + + + + +Nonfiction
+ + + + + + +Rating:
+ + (4) / NonfictionAt the time, I enjoyed reading this collection of meditations on +Stoic philosophy, and it was a fairly quick read (fifteen minutes a +day over the course of two weeks for me). Nowadays I've read +Epictetus, and I suggest reading his Discourses instead.
+ + + + +Blake is my favorite of the English poets. His +unique use of relief etching and watercoloring makes for very +interesting Illuminated works. There is a very high quality +complete archive of Blake's works online +with high resolution plate scans and full transcriptions among other +things.
+ +Rating:
+ + (10) / FictionThe unfinished manuscript of Blake's longest apocalypse. The +Four Zoas divide from Albion and rage through the ages of dismal woe +to bring about the end of the cycle of Ulro and restore the cycle of +Beulah.
+ + + +Rating:
+ + (10) / FictionThe finest of Blake's Illuminated works.
+ + + + +Fiction
+ + + + + + +Rating:
+ + (6) / FictionOf the Sandman spinoffs, Lucifer stands out as the best for +the first half, but then the writer appears to take on far too great a +task, and, with the introduction of some disagreeable character +relations, fails to execute the story as well as it could have +been. Still, it was worth reading to the end even though most of the +stories after issue 35 or so were merely ok. If you like Kierkegaard I +suggest issues 2, 3, and 62—they show the form of the incommensurable +relation of the single individual to the absolute perfectly.
+ + + + +Nonfiction
+ + + + + + +Rating:
+ + (10) / FictionPerhaps the best comic book series of all time; I would say The +Sandman as a whole ranks higher than anything even Alan Moore has +written.
+ + + +Rating:
+ + (8) / FictionA friend of a friend decided one evening that I needed to read +so-called normal people books, and so she lent me Good Omens. It +was an enjoyable read and unearthed vague memories of comic book +magazines I read when I was small and the name Sandman; thus through +one book I found something far greater.
+ + + +Rating:
+ + (6) / FictionEntertaining, but the end was a bit much rushed.
+ + + + +Former teacher and now author-activist.
+ +Rating:
+ + (9) / NonfictionAn interesting underground history of the American education +system. Available +online for free.
+ + + + +Kahlil Gibran is fairly interesting; his earlier works do not +agree with my æsthetic sense (blah blah), but The Madman onward are +all rather nice. A few of his works are +online, but I recommend scouting used book +stores for old hardcover editions. The (late 90s onward at least) +hardcover versions from Alfred A. Knopf are in fact permabound +paperbacks with a hardcasing, and are of seriously inferior quality to +the editions from the 50s and 60s (and cost quite a bit more, +naturally).
+ +Rating:
+ + (3) / FictionOne of Kahlil Gibran's earlier works, I did not much like A +Tear and a Smile excepting the last poem ("A Poet's Voice").
+ + + +Rating:
+ + + + + + (9) / FictionRating:
+ + (7) / FictionAn interesting little book of aphorisms.
+ + + +Rating:
+ + + + + + + (8) / FictionRating:
+ + + + + + + (10) / FictionPerhaps the most overrated modern writer. Other people have written +everything he has to write better and many years before he got around +to it.
+ +Rating:
+ + (0) / NonfictionHuxley stains the name of Blake by naming this horrible +pseudo-scientific and pseudo-poetic essay after a line from The +Marriage of Heaven and Hell. Subjectivity and objectivity are +incommensurable; his attempt and being subjectively objective is +utterly worthless.
+ + + +Rating:
+ + (0) / NonfictionBlah blah LSD blah blah Mushrooms blah blah Peyote blah blah I'm +Aldous Huxley I'm a pretentious jerk. Don't bother.
+ + + +Rating:
+ + (7) / FictionA nice light read; the story is obvious and by the hundreth page +the ending is clear, but it provided a bit of a break from heavier +reading for me. I must say that anyone who has read Brave New World +and does not despise modern society has the intellectual capacity of +an Epsilon. 1984 is perhaps easily misread, but Brave New World +is very clear with its message and is a bit like being smacked upside +the head with a hammer.
+ + + + +Rating:
+ + (7) / NonfictionA partially finished extended summary
+ + + +Nonfiction
+ +++ + + + + + ++America is thus as a nation rapidly drifting towards a state of things +in which no man of science or letters will be accounted respectable +unless some kind of badge or diploma is stamped upon him, and in which +bare personality will be a mark of outcast estate. It seems to me high +time to rouse ourselves to consciousness, and to cast a critical eye +upon this decidedly grotesque tendency. Other nations suffer terribly +from the Mandarin disease. Are we doomed to suffer like the rest?
+ +
The novelist brother of William James; I've not read many (read: +one) of his books, but what I did was decent.
+ +Rating:
+ + (7) / FictionA short novella about a man who maintained an altar in a church +for all of his lost loved ones on the surface, but something a bit +more beneath.
+ + + + +Rating:
+ + (10) / NonfictionAMOP is useful as a reference to the CLOS MOP (although less so with +the online MOP spec), but the true value of the book lies in the first +half of the book. It presents the design of the CLOS MOP through a +series of revisions that fix limitations of earlier implementations +and gradually work toward a generic and well designed MOP for +CLOS. Through that process one is made more aware of a few general +object protocol design skills, and gains insight into how to cleanly +make mapping decisions customizable.
+ + + + +Kierkegaard was a master of style and philosophy; his writing is +interesting even if one finds the theistic extentialism espoused +disagreeable.
+ +Rating:
+ + (10) / NonfictionI purchased this when I was looking through books at a store after +being unable to find the book I really wanted, and I must say that it +was better for me to have found this one.
+ +Contained within is a beautiful analysis of despair in the context of +Christianity (really theism in general). Even if the argument offends, +the presentation cannot. The dialectical nature of despair is +reflected in every aspect of the work, and the method of presentation +forces reflection.
+ + + +Rating:
+ + (10) / NonfictionComposed of two portions, Either/Or is a rather lengthy but +rewarding read. The first book is a series of essays and a diary of a +young esthetician; the second is a pair of long letters from an older +ethicist friend to this esthetician. You are then left to resolve the +conflict between the views.
+ + + +Nonfiction
+ +An interesting dialectical lyric contrasting Despair and Faith.
+ + + +Rating:
+ + (10) / NonfictionHe who despairs of esthetic repetition gets none; he who despairs +of ethical repetition receieves the esthetic. Is it true then that no +repetition exists? Is transition all one can hope for?
+ + + +Rating:
+ + (7) / Nonfiction...Very clearly an early work of Kierkegaard. It is rather formal +and difficult to get through. I'd recommend reading a lot of other +Kierkegaard before this.
+ + + + +Rating:
+ + + + + + + (8) / FictionRating:
+ + (8) / NonfictionAfter learning Scheme, I read Successful Lisp and was able to +pick up Common Lisp fairly easily.
+ + + + +Nonfiction
+ + + + + + +Rating:
+ + + + + + + (10) / FictionRating:
+ + + + + + + (10) / FictionRating:
+ + + + + + (8) / FictionRating:
+ + + + + + + (10) / FictionRating:
+ + (7) / FictionI read most of Utopia in high school with the TI-89 ebook reader, but +the way the book was split up made it a bit difficult to grasp the +overall structure. I found a copy at a used book store one day, and so +I read it again, and found it much more comprehensible. It is a quick +read, and decent piece of literature. The interesting social system +espoused resembles resembles state communism (even if perhaps as a +negative ideal), but with an strange blend of 14th century European +social customs.
+ + + + +A bit acerbic and esoteric, Nietzsche is for me a good secular +counterpart to Kierkegaard's theistic philosophy. Nietzsche's +polemical works raise important questions for anyone who reads works +on ethics. As such it is a shame that he has gotten a bad reputation +by being read by far too many angsty teenagers who see (and relay) +only Nietzsche the asshole rather than Nietzsche the master of the +polemic.
+ +Rating:
+ + (8) / FictionA masterpiece of indirect communication depsite the occasional +flaw and overly dramatic passage. Certainly a book worth reading many +times over the course of one's life.
+ + + +Rating:
+ + (8) / NonfictionA somewhat more comprehensible, if a bit less aesthetically +pleasing, presentation of much of the philosophy found in Thus Spoke +Zarathustra in the negative form. The final chapters are very +important (not to detract from the value of the rest of the work) if +one wishes to understand On the Genealogy of Morals.
+ + + +Rating:
+ + (9) / NonfictionOn the Geneaology of Morals is a wonderful book of three +polemical essays on the origin of moral/ethical valuations, and the +blindness of modern philosphers whose very thinking is tainted by +these valuations unknowingly.
+ + + +Rating:
+ + (7) / NonfictionEcce Homo is Nietzsche's very strange autobiography and +explanation of his own works. At points it is clear that it could have +used a bit more editing (prevented by Nietzsche ... falling into a +catatonic state and all), but is still a very useful book to read as +Nietzsche explains the overall structure of his works.
+ + + + +Rating:
+ + + + + + (10) / FictionFiction
+ + + + + + +Fiction
+ + + + + +Fiction
+ + + + + +Nonfiction
+ + + + + +Fiction
+ + + + + +Rating:
+ + + + + + (10) / NonfictionFiction
+ + + + + + +ULTRAGOTHIK
+ +Rating:
+ + (6) / FictionThis is when I learned that I still don't really like late 1800s +American literature all that much. Some of the tales were worth +reading, but most of it was not in a style I like all that much.
+ + + + +Rating:
+ + (7) / Fiction++ ++And it's his illusions about what +constitutes the real world which are +inhibiting him... +His reality, his reason, his society +...these are what must be destroyed
+ +
A quotation from one of my favorite metal songs inspired me to grab +this book; at worst it would be a waste of time. Much reward was found +in this random stab in the dark. The book is framed as an +autobiography of the author as a psychoanalyst, and his progression +through life as a Dice Man after deciding to live his life through +random chance.
+ +The style, plot, and content are equally neurotic; part comedy, part +attack on psychoanalysis, and part deep philosophy. It was often +difficult to put down, and was read in under a week of spare time.
+ + + + +Rating:
+ + (9) / FictionAs one must read the Bible to understand English literature, so one +must read Snow Crash today to be a nerd. In the realm of modern pop +fiction this is one of the better books I've read; it was devoured in +a mere four nights. Neal Stepheson may not be Milton, but he does come +up with enganging tales. Snow Crash has a nice undertone of (quite +accurate) political and social commentary that makes it worth reading +as more than mere cyberpunk fiction.
+ + + +Rating:
+ + (8) / FictionI read Cryptonomicon when it was new, and at the time I thought it was +good. It could have lost a hundred or so pages without detracting from +the plot, but it was easy reading and didn't take very long to +finish. The story was enganging, and the continual switching between +the 1940s and present day slowly unravelled the tale in a nice way.
+ +I'd still have to recommend Snow Crash if one wished to read only one +Stephenson novel.
+ + + + +Nonfiction
+ +Once upon a time I was fifteen and I read this book. It was more +or less what taught me how to write programs just large enough to do +useful things, and so shall forever be remembered by me. A year and a +half later I stumbled upon a little language called Scheme and fell +down the rabbit hole.
+ + + + +Rating:
+ + + + + + (9) / FictionRating:
+ + + + + + (10) / FictionRating:
+ + + + + + + (7) / FictionRating:
+ + (9) / FictionThere are few books that I have started to read before sleeping +and found myself watching the sun rise after finishing. Cat's Cradle +is definitely required nerd reading.
+ + + + +Rating:
+ + + + + + + (7) / FictionOr rather, Robert Anton Wilson and Robert Shea (but my book script +updating thing doesn't do multiple authors
+ +Rating:
+ + (10) / Nonfictione-cash MP5K-SD Adriatic Bellcore Lon Horiuchi 9705 Samford Road +jihad New World Order AVN FTS2000 ANZUS subversive SAPO PET Armani
+ + + + +Fiction
+ + + + - + October 26, 2018 \ No newline at end of file diff --git a/Books.html b/Books.html index ba5fb0c..2b867cb 100644 --- a/Books.html +++ b/Books.html @@ -48,10 +48,10 @@ Book Reviews of a Sort - diff --git a/Cary to Greensboro Bicycle Route.html b/Cary to Greensboro Bicycle Route.html index 54aafdb..47409a6 100644 --- a/Cary to Greensboro Bicycle Route.html +++ b/Cary to Greensboro Bicycle Route.html @@ -148,8 +148,7 @@ bright. - diff --git a/Code.html b/Code.html index 3491217..ea2f7bc 100644 --- a/Code.html +++ b/Code.html @@ -232,9 +232,7 @@ hacky as Hell, but the XHTML genera - diff --git a/Cooking.html b/Cooking.html index b4d2441..75ca577 100644 --- a/Cooking.html +++ b/Cooking.html @@ -167,9 +167,7 @@ Light Fare - diff --git a/Guacamole.html b/Guacamole.html index f032b4c..f97f30c 100644 --- a/Guacamole.html +++ b/Guacamole.html @@ -106,9 +106,7 @@ closer to the right amount. - diff --git a/Habanero Hot Sauce.html b/Habanero Hot Sauce.html index fbffa69..43c6720 100644 --- a/Habanero Hot Sauce.html +++ b/Habanero Hot Sauce.html @@ -160,8 +160,7 @@ chili or black bean burritos. - diff --git a/Homebrewing.html b/Homebrewing.html index 93c4f6d..50d173e 100644 --- a/Homebrewing.html +++ b/Homebrewing.html @@ -252,9 +252,7 @@ liquid bannanas it was ... interesting. - diff --git a/Hummus.html b/Hummus.html index 2ce2822..64d23d4 100644 --- a/Hummus.html +++ b/Hummus.html @@ -153,10 +153,9 @@ throttle for a little bit to blend out the chunks. - diff --git a/Imagery.html b/Imagery.html index 91dba23..0d5366f 100644 --- a/Imagery.html +++ b/Imagery.html @@ -72,8 +72,8 @@ here before you. - diff --git a/Kilt.html b/Kilt.html index 40a349f..deb6598 100644 --- a/Kilt.html +++ b/Kilt.html @@ -115,10 +115,9 @@ kilts so that I no longer have to wear pants. - diff --git a/Koftah-Adana Hybrid Kebabs.html b/Koftah-Adana Hybrid Kebabs.html index 1fd91a4..fb9dba9 100644 --- a/Koftah-Adana Hybrid Kebabs.html +++ b/Koftah-Adana Hybrid Kebabs.html @@ -81,9 +81,7 @@ Directions - diff --git a/Lisp.html b/Lisp.html index 290ca0a..68180f2 100644 --- a/Lisp.html +++ b/Lisp.html @@ -96,13 +96,10 @@ which ought to make my overview obsolete. - diff --git a/LiveJournal User Pics.html b/LiveJournal User Pics.html index 1cc1351..9b4323e 100644 --- a/LiveJournal User Pics.html +++ b/LiveJournal User Pics.html @@ -102,10 +102,8 @@ Subdued - diff --git a/Maast-o Khiar.html b/Maast-o Khiar.html index 75778fb..f9cdd9b 100644 --- a/Maast-o Khiar.html +++ b/Maast-o Khiar.html @@ -89,9 +89,8 @@ together a batch. - diff --git a/Maytag.html b/Maytag.html index b33ed26..e27c829 100644 --- a/Maytag.html +++ b/Maytag.html @@ -81,13 +81,8 @@ Meow - diff --git a/Metaobject Protocols.html b/Metaobject Protocols.html index 55187e3..f629002 100644 --- a/Metaobject Protocols.html +++ b/Metaobject Protocols.html @@ -274,11 +274,11 @@ enable selective modification of individual facets with minimal code. (options) ...) (defmethod generic-name ((parameter type) parameter ...) - "documentation string" + "documentation string" body) (defgeneric foo (bar baz quux) - (:documentation "Process the baz with the quux capacitor to make the + (:documentation "Process the baz with the quux capacitor to make the foo widget fly into the sky at warp speed")) (defmethod foo ((bar example) baz (quux capacitor)) @@ -410,7 +410,7 @@ languages to expose a reflective MOP.(defgeneric example-inspect (instance) - (:documentation "Simple object inspector using CLOS MOP")) + (:documentation "Simple object inspector using CLOS MOP")) (defmethod example-inspect ((instance t)) (format t "Simple Object~% Value: ~S~%" instance)) @@ -487,10 +487,10 @@ details to the program. ;;; Metaclass (defclass observable (standard-class) () - (:documentation "Metaclass for observable objects")) + (:documentation "Metaclass for observable objects")) (defmethod compute-slots ((class observable)) - "Add a slot for storing observers to observable instances" + "Add a slot for storing observers to observable instances" (cons (make-instance 'standard-effective-slot-definition :name 'observers :initform '(make-hash-table) @@ -554,7 +554,7 @@ details to the program. slot-name) (gethash slot-name (slot-value instance 'observers))) -(defmethod (setf slot-value-using-class) :before (new-value +(defmethod (setf slot-value-using-class) :before (new-value (class observable) instance slot) @@ -804,9 +804,7 @@ implementation as possible. - diff --git a/Music I Enjoy.html b/Music I Enjoy.html index b154af7..59ab600 100644 --- a/Music I Enjoy.html +++ b/Music I Enjoy.html @@ -173,8 +173,8 @@ heard this album many times, and will listen again many more. - diff --git a/Music.html b/Music.html index aa7d808..3aa03a6 100644 --- a/Music.html +++ b/Music.html @@ -62,10 +62,8 @@ Recently Vacated Graves - diff --git a/My Bicycle.html b/My Bicycle.html index fea619f..11e129e 100644 --- a/My Bicycle.html +++ b/My Bicycle.html @@ -290,8 +290,11 @@ regular riding and occasional exposure to rain. - diff --git a/Old Viewpoints.html b/Old Viewpoints.html index 7b7cac1..314e89b 100644 --- a/Old Viewpoints.html +++ b/Old Viewpoints.html @@ -97,10 +97,11 @@ trashy works which have become popular to the masses. - diff --git a/Olive Pita.html b/Olive Pita.html index 7f59fc1..23938f8 100644 --- a/Olive Pita.html +++ b/Olive Pita.html @@ -98,10 +98,10 @@ can impart such a nice flavor. - diff --git a/Pita.html b/Pita.html index e8f88da..1627585 100644 --- a/Pita.html +++ b/Pita.html @@ -123,9 +123,10 @@ lighter if you'd like. - diff --git a/Politics.html b/Politics.html index 4632aad..d09ee2b 100644 --- a/Politics.html +++ b/Politics.html @@ -422,7 +422,8 @@ Learned Ignorance and Weakness - diff --git a/Quotations.html b/Quotations.html index 21c3f7a..e68f238 100644 --- a/Quotations.html +++ b/Quotations.html @@ -79,9 +79,11 @@ to the dictates of his own personal tastes and urge for expression. - diff --git a/Reading.html b/Reading.html index cd05e4a..95b6ba7 100644 --- a/Reading.html +++ b/Reading.html @@ -482,10 +482,10 @@ Design - diff --git a/Roasted Garlic.html b/Roasted Garlic.html index ee1c33c..bd687ca 100644 --- a/Roasted Garlic.html +++ b/Roasted Garlic.html @@ -89,9 +89,7 @@ oven if you have a need for an absurd amount of roasted garlic. - diff --git a/SCWM.html b/SCWM.html index cdfbc37..8dd7ac5 100644 --- a/SCWM.html +++ b/SCWM.html @@ -186,7 +186,7 @@ interaction with guile. "Name of the Guile evaluation scratch buffer") (defun make-guile-scratch-buffer () - (interactive) + (interactive) (let ((scratch-buf (generate-new-buffer guile-scratch-buffer-name))) (switch-to-buffer scratch-buf) (scheme-mode) @@ -237,9 +237,9 @@ to it, hint hint). - diff --git a/Site Software.html b/Site Software.html index f6a8165..4ad394f 100644 --- a/Site Software.html +++ b/Site Software.html @@ -129,10 +129,13 @@ could be generally useful for other things. - diff --git a/Sourdough Rye.html b/Sourdough Rye.html index ac6eee0..a7a9b38 100644 --- a/Sourdough Rye.html +++ b/Sourdough Rye.html @@ -166,7 +166,7 @@ wish). - diff --git a/Sun Dried Tomato Pita.html b/Sun Dried Tomato Pita.html index a6f1b8d..9d335ce 100644 --- a/Sun Dried Tomato Pita.html +++ b/Sun Dried Tomato Pita.html @@ -94,11 +94,8 @@ pita when baking. It is, naturally, delicious. - diff --git a/TRUTH.html b/TRUTH.html index f37ec91..487e326 100644 --- a/TRUTH.html +++ b/TRUTH.html @@ -91,8 +91,7 @@ abandon logic as an anachronism of times long past - diff --git a/UCWNotes.html b/UCWNotes.html index 4940249..62ea87b 100644 --- a/UCWNotes.html +++ b/UCWNotes.html @@ -162,17 +162,17 @@ application mixins you find useful.(defclass standard-application (application) ((url-prefix :initarg :url-prefix - :documentation "A string specifying the + :documentation "A string specifying the start (prefix) of all the urls this app should handle. This value is used by the standard-server to decide what app a particular request is aimed at and for generating links to actions within the app. ") (www-roots :initarg :www-roots - :documentation "A list of directories (pathname + :documentation "A list of directories (pathname specifiers) or cons-cell (URL-subdir . pathname) to use when looking for static files.") (dispatchers :initarg :dispatchers - :documentation "A list of request + :documentation "A list of request dispatchers. The user supplied list of dispatchers is extended with other dispatchers that are required for UCW to function properly (action-dispatcher, a parenscript-dispatcher, etc). If @@ -180,7 +180,7 @@ you want full control over the active dispatchers use the (setf application.dispatchers) accessor or, if you want control over the order of the dispathcers, (slot-value instance 'dispatchers).")) - (:documentation "The default UCW application class.")) + (:documentation "The default UCW application class."))src/rerl/modular-application/modular-application.lisp
@@ -188,7 +188,7 @@ the order of the dispathcers, (slot-value instance(defclass modular-application-mixin () () - (:documentation "Superclass for all application mixins.")) + (:documentation "Superclass for all application mixins.")) (defclass modular-application (standard-application modular-application-mixin) ...) @@ -201,7 +201,7 @@ Cookie(defclass cookie-session-application-module (modular-application-mixin) - (:documentation "Class for applications which use cookies for sesion tracking. + (:documentation "Class for applications which use cookies for sesion tracking. Cookie session applications work exactly like standard-applications except that when the session is not found @@ -220,7 +220,7 @@ L10n(defclass l10n-application-module (modular-application-mixin) - (:documentation "Application class which can handle l10n requests.")) + (:documentation "Application class which can handle l10n requests."))@@ -232,7 +232,7 @@ Secure(defclass secure-application-module (modular-application-mixin) (:documentation - "Mixin class for applications which require authorized access. + "Mixin class for applications which require authorized access. Concrete application must specialize the following methods: APPLICATION-FIND-USER (APPLICATION USERNAME) APPLICATION-CHECK-PASSWORD (APPLICATION USER PASSWORD) @@ -319,7 +319,7 @@ Windows (defclass simple-window-component (window-component) ((title) (stylesheet) - (javascript :documentation "List of javascript includes. + (javascript :documentation "List of javascript includes. Each element must be a list whose first value is either the symbol :SRC or :JS. @@ -353,15 +353,15 @@ to insert messages into the browser status bar.@@ -388,7 +388,7 @@ severity SEVERITY.")) (defclass redirect-component () ((target :accessor target :initarg :target)) (:metaclass standard-component-class) - (:documentation "Send a client redirect. + (:documentation "Send a client redirect. This component, which must be used as a window-component, redirects the client to the url specified in the target slot. A @@ -419,7 +419,7 @@ Containers (defclass container () (...) (:metaclass standard-component-class) - (:documentation "Allow multiple components to share the same place. + (:documentation "Allow multiple components to share the same place. The container component serves to manage a set of components. It does not provide any render impementation, which is the @@ -452,7 +452,7 @@ be converted into (component . component) form."))(defcomponent status-bar () - ((messages :documentation "An ALIST of the messages to + ((messages :documentation "An ALIST of the messages to show. Each element is a cons of the form (SEVERITY . MESSAGE). SEVERITY is one of :ERROR, :WARN, :INFO and MESSAGE is a string which will be html-escaped.") ...) - (:documentation "Stateless status bar to display messages.")) + (:documentation "Stateless status bar to display messages.")) (defgeneric add-message (status-bar msg &key severity &allow-other-keys) - (:documentation "Add the message text MSG to STATUS-BAR with + (:documentation "Add the message text MSG to STATUS-BAR with severity SEVERITY."))@@ -375,7 +375,7 @@ severity SEVERITY.")) (render (status-bar win))) (defgeneric show-message (msg &key severity &allow-other-keys) - (:documentation "Show a message in the status bar. Only works if + (:documentation "Show a message in the status bar. Only works if current window is a status-bar-mixin"))(defclass switching-container ... - (:documentation "A simple renderable container component. + (:documentation "A simple renderable container component. This component is like the regular CONTAINER but serves to manage a set of components which share the same place in the UI. Therefore it provides @@ -481,7 +481,7 @@ components."))(defcomponent tabbed-pane (switching-container) - (:documentation "Component for providing the user with a standard \"tabbed pane\" GUI widget.")) + (:documentation "Component for providing the user with a standard \"tabbed pane\" GUI widget."))Provides a generic tabbed pane that renders a nested div split into a @@ -503,7 +503,7 @@ user.
(defclass login () ((username) (password) (message)) - (:documentation "Generic login (input username and password) component. + (:documentation "Generic login (input username and password) component. This component, which must be embedded in another component, presents the user with a simple two fielded login form. @@ -524,7 +524,7 @@ all the required methods have been definined.")(defgeneric check-credentials (login) - (:documentation "Returns T if LOGIN is valid.")) + (:documentation "Returns T if LOGIN is valid.")) (defaction login-successful ((l login)) (answer t)) @@ -549,7 +549,7 @@ protocol details follow. user))) (defgeneric application-find-user (application username) - (:documentation "Find USER by USERNAME for APPLICATION.")) + (:documentation "Find USER by USERNAME for APPLICATION."))@@ -560,14 +560,14 @@ protocol details follow.(defclass error-message (simple-window-component) ((message :accessor message :initarg :message :initform "ERROR [no message specified]")) - (:documentation "Generic component for showing server side + (:documentation "Generic component for showing server side error messages.") (:metaclass standard-component-class)) (defclass error-component (error-message) ((condition :accessor error.condition :initarg :condition :initform nil) (backtrace :accessor error.backtrace :initarg :backtrace)) - (:documentation "Generic component for showing server side + (:documentation "Generic component for showing server side error conditions. Unlike ERROR-MESSAGE this component also attempts to display a backtrace.") (:metaclass standard-component-class)) @@ -582,7 +582,7 @@ protocol details follow. (defclass info-message () ((message :initarg :message :accessor message) (ok-text :initarg :ok-text :accessor ok-text :initform "Ok.")) - (:documentation "Component for showing a message to the user. + (:documentation "Component for showing a message to the user. If the OK-TEXT slot is non-NIL component will use that as the text for a link which, when clicked, causes the component to @@ -600,7 +600,7 @@ never answer.") (defclass option-dialog (template-component) ((message) (options) (confirm)) (:default-initargs :template-name "ucw/option-dialog.tal") - (:documentation "Component for querying the user. + (:documentation "Component for querying the user. The value of the slot MESSAGE is used as a general heading. @@ -636,22 +636,22 @@ Forms(defclass form-field () - ((validators :documentation "List of validators which will be + ((validators :documentation "List of validators which will be applied to this field.") - (initially-validate :documentation "When non-NIL the + (initially-validate :documentation "When non-NIL the validators will be run as soon as the page is rendered."))) (defgeneric value (form-field) - (:documentation "The lispish translated value that represents the form-field.")) + (:documentation "The lispish translated value that represents the form-field.")) -(defgeneric (setf value) (new-value form-field) - (:documentation "Set the value of a form-field with translation to client.")) +(defgeneric (setf value) (new-value form-field) + (:documentation "Set the value of a form-field with translation to client.")) (defclass generic-html-input (form-field html-element) ((client-value :accessor client-value :initarg :client-value :initform "" - :documentation "The string the client submitted along with this field.") + :documentation "The string the client submitted along with this field.") (name :accessor name :initarg :name :initform nil) (accesskey :accessor accesskey :initarg :accesskey :initform nil) (tooltip :accessor tooltip :initarg :tooltip :initform nil) @@ -689,10 +689,10 @@ list. ((message :accessor message :initarg :message :initform nil))) (defgeneric validate (field validator) - (:documentation "Validate a form-field with a validator.")) + (:documentation "Validate a form-field with a validator.")) (defgeneric javascript-check (field validator) - (:documentation "Generate javascript code for checking FIELD against VALIDATOR. + (:documentation "Generate javascript code for checking FIELD against VALIDATOR. This is the convenience entry point to generate-javascript-check, methods defined on this generic funcition should return a list of @@ -700,10 +700,10 @@ javascript code (as per parenscript) which tests against the javascript variable value.")) (defgeneric javascript-invalid-handler (field validator) - (:documentation "The javascript code body for when a field is invalid.")) + (:documentation "The javascript code body for when a field is invalid.")) (defgeneric javascript-valid-handler (field validator) - (:documentation "Generate the javascript body for when a field is valid.")) + (:documentation "Generate the javascript body for when a field is valid."))Standard Form Fields
@@ -717,7 +717,7 @@ javascript variable value.")) (defclass integer-field (number-field)) (defclass in-field-string-field (string-field) - ((in-field-label :documentation "This slot, if non-NIL, will be + ((in-field-label :documentation "This slot, if non-NIL, will be used as an initial field label. An initial field label is a block of text which is placed inside the input element and removed as soon @@ -732,22 +732,22 @@ javascript variable value.")) ((year) (month) (day))) (defclass dmy-date-field (date-field) - (:documentation "Date fields which orders the inputs day/month/year")) + (:documentation "Date fields which orders the inputs day/month/year")) (defclass mdy-date-field (date-field)) (defclass select-field (generic-html-input) - ((data-set :documentation "The values this select chooses + ((data-set :documentation "The values this select chooses from.")) - (:documentation "Form field used for selecting one value from a + (:documentation "Form field used for selecting one value from a list of available options.")) (defgeneric render-value (select-field value) - (:documentation "This function will be passed each value in the field's + (:documentation "This function will be passed each value in the field's data-set and must produce the body of the corresponding <ucw:option tag.")) (defclass mapping-select-field (select-field) - (:documentation "Class used when we want to chose the values of + (:documentation "Class used when we want to chose the values of a certain mapping based on the keys. We render the keys in the select and return the corresponding value from the VALUE method.")) @@ -761,13 +761,13 @@ javascript variable value.")) (defclass radio-button (generic-html-input) ((value) - (group :documentation "The RADIO-GROUP this button is a part + (group :documentation "The RADIO-GROUP this button is a part of.")) - (:documentation "A widget representing a single radio + (:documentation "A widget representing a single radio button. Should be used in conjunction with a RADIO-GROUP.")) (defmethod add-value ((group radio-group) value) - "Adds radio-button with value to group") + "Adds radio-button with value to group") (defclass checkbox-field (generic-html-input)) (defclass file-upload-field (generic-html-input)) @@ -784,13 +784,13 @@ be set to the MIME type of the file being uploaded.(defgeneric mime-part-headers (mime-part) - (:documentation "Returns an alist of the headers of MIME-PART. + (:documentation "Returns an alist of the headers of MIME-PART. The alist must be of the form (NAME . VALUE) where both NAME and VALUE are strings.")) (defgeneric mime-part-body (mime-part) - (:documentation "Returns the body of MIME-PART.")) + (:documentation "Returns the body of MIME-PART."))@@ -801,7 +801,7 @@ VALUE are strings.")) (defclass not-empty-validator (validator)) (defclass value-validator (validator) - (:documentation "Validators that should only be applied if there is a value. + (:documentation "Validators that should only be applied if there is a value. That is, they always succeed on nil.")) (defclass length-validator (value-validator) @@ -812,7 +812,7 @@ That is, they always succeed on nil.")) (defclass string=-validator (validator) ((other-field :accessor other-field :initarg :other-field)) - (:documentation "Ensures that a field is string= to another one.")) + (:documentation "Ensures that a field is string= to another one.")) (defclass regex-validator (value-validator) ((regex :accessor regex :initarg :regex :initform nil))) @@ -862,7 +862,7 @@ Templates ((environment :initarg :environment :initform nil))) (defgeneric template-component-environment (component) - (:documentation "Create the TAL environment for rendering COMPONENT's template. + (:documentation "Create the TAL environment for rendering COMPONENT's template. Methods defined on this generic function must return a TAL environment: a list of TAL binding sets (see the documentation @@ -880,7 +880,7 @@ visable." (make-standard-environment `((component . ,component)) component)) (defmethod render ((component template-component)) - "Render a template based component. + "Render a template based component. Calls the component's template. The name of the template is the value returned by the generic function @@ -908,7 +908,7 @@ Utility Mixin Components(defclass range-view (template-component) (:default-initargs :template-name "ucw/range-view.tal") - (:documentation "Component for showing the user a set of data one \"window\" at a time. + (:documentation "Component for showing the user a set of data one \"window\" at a time. The data set is presented one \"window\" at a time with links to the the first, previous, next and last window. Each window shows @@ -926,7 +926,7 @@ and define their RENDER-RANGE-VIEW-ITEM methods on that.")(defgeneric render-range-view-item (range-view item) - (:documentation "Render a single element of a range-view.") + (:documentation "Render a single element of a range-view.") (:method ((range-view range-view) (item t)) "Standard implementation of RENDER-RANGE-VIEW-ITEM. Simply applies ITEM to princ (via <:as-html)." @@ -949,7 +949,7 @@ for defining lightweight widgets embedded within other components. (css-style) (extra-tags) (events)) - (:documentation "An HTML element. + (:documentation "An HTML element. HTML elements control aspects that are relevant to almost all tags. @@ -973,11 +973,11 @@ added."))(defclass widget-component (html-element) () - (:documentation "A widget which should be wrapped in a <div>.")) + (:documentation "A widget which should be wrapped in a <div>.")) (defclass inline-widget-component (html-element) () - (:documentation "A widget which should be wrapped in <span> and not <div>")) + (:documentation "A widget which should be wrapped in <span> and not <div>")) (defmethod render :wrap-around ((widget widget-component))) (defmethod render :wrap-around ((widget inline-widget-component))) @@ -1015,7 +1015,7 @@ into a task.) -(answer VAL) ; answer parent component ONLY IN ACTIONS +(answer VAL) ; answer parent component ONLY IN ACTIONS -(ok SELF VAL) ; Used to answer a component anywhere and what answer - ; expands into +(ok SELF VAL) ; Used to answer a component anywhere and what answer + ; expands into -(jump COMPONENT-NAME &REST ARGS) ; is similar to call, but replaces - ; the current component with the new - ; one and drops any backtracks (back - ; button will no longer work) +(jump COMPONENT-NAME &REST ARGS) ; is similar to call, but replaces + ; the current component with the new + ; one and drops any backtracks (back + ; button will no longer work)(defclass task-component (standard-component) (...) - (:documentation "A controller for a single task or operation to + (:documentation "A controller for a single task or operation to be performed by the user. A task component's START action is called as soon as the @@ -1024,7 +1024,7 @@ RENDER method, in fact they have no graphical representation but serve only to order a sequence of other components.")) (defgeneric/cc start (task) - (:documentation "action which gets called automatically when + (:documentation "action which gets called automatically when task-component is active. Use defaction to define your own \"start\" action"))@@ -1037,17 +1037,17 @@ task-component is active. Use defaction to define your own(defcomponent cached-component () ((cached-output :accessor cached-output :initform nil - :documentation "A string holding the output to + :documentation "A string holding the output to use for this component. This string will be written directly to the html stream and is changed by the REFRESH-COMPONENT-OUTPUT method." ) (timeout :accessor timeout :initarg :timeout - :documentation "An value specifying how often this + :documentation "An value specifying how often this component needs to be refreshed. The exact interpretation of the value depends on the type of caching used class.")) - (:documentation "Component which caches its output. + (:documentation "Component which caches its output. The component caching API is built around the generic functions COMPONENT-DIRTY-P and REFRESH-COMPONENT-OUTPUT and a method on @@ -1056,25 +1056,25 @@ RENDER, see the respective docstrings for more details. Do not use CACHED-COMPONENT directly, use one its subclasses.")) (defgeneric component-dirty-p (component) - (:documentation "Returns T is COMPONENT's cache is invalid.")) + (:documentation "Returns T is COMPONENT's cache is invalid.")) (defgeneric update-cache (component) - (:documentation "Update COMPONENT's cache variables after a refresh.")) + (:documentation "Update COMPONENT's cache variables after a refresh.")) (defcomponent timeout-cache-component (cached-component) ((last-refresh :accessor last-refresh :initform nil - :documentation "The time, exrpessed as a + :documentation "The time, exrpessed as a universal time, when the component was last rendered.")) (:default-initargs :timeout (* 30 60 60)) - (:documentation "Render the component at most every TIMEOUT seconds.")) + (:documentation "Render the component at most every TIMEOUT seconds.")) (defcomponent num-hits-cache-component (cached-component) ((hits-since-refresh :accessor hits-since-refresh :initform nil - :documentation "Number of views since last refresh.")) + :documentation "Number of views since last refresh.")) (:default-initargs :timeout 10) - (:documentation "Render the component every TIMEOUT views.")) + (:documentation "Render the component every TIMEOUT views."))Subclass and override
component-dirty-p
to do something useful @@ -1113,15 +1113,15 @@ Notes: This macro assumes that the lexcial variable UCW:SELF is bound to the calling component."
(call COMPONENT-NAME &ARGS INIT-ARGS)
callsCOMPONENT-NAME
and returns @@ -1137,7 +1137,7 @@ component for most of UCW to work.(defaction NAME (first ...) ...) - ; (roughly) expands into + ; (roughly) expands into (defmethod/cc NAME (first ...) (let ((self first)) ...)) @@ -1156,7 +1156,7 @@ Entry Points(defentry-point url (:application APPLICATION :class DISPATCHER-CLASS) - (PARAM1 ... PARAMN) ; GET / POST vars, bound in body + (PARAM1 ... PARAMN) ; GET / POST vars, bound in body body)@@ -1187,7 +1187,7 @@ Dispatching(defgeneric matcher-match (matcher application context) - (:documentation "Abstract method for subclasses to implement a + (:documentation "Abstract method for subclasses to implement a matcher. This method would return multiple-values according to matcher internal nature. @@ -1198,7 +1198,7 @@ that case methods defined on this function must not modify CONTEXT's application nor rebind *context*.")) (defgeneric handler-handle (handler application context matcher-result) - (:documentation "Abstract function for handler classes to + (:documentation "Abstract function for handler classes to implement in order to handle a request matched by relevant matcher. @@ -1206,7 +1206,7 @@ These methods may modify context as they wish since they'r matched, request will be closed after this method is run.")) (defgeneric dispatch (dispatcher application context) - (:documentation "Entry point into a dispatcher. Must return T + (:documentation "Entry point into a dispatcher. Must return T if the context has been handled or NIL if it hasn't. No methods defined on this function may rebind *context*, nor @@ -1227,7 +1227,7 @@ application nor rebind *context*.")) Simple Dispatcher-(:documentation "This class of dispatchers avoids all of UCW's +(:documentation "This class of dispatchers avoids all of UCW's standard call/cc (and therefore frame/backtracking/component) mechanism. @@ -1268,7 +1268,7 @@ server. Logs are generated in verbosity defined by LOG-LEVEL and directed to LOG-ROOT-DIRECTORY if defined." ... - server) ; return server, naturally + server) ; return server, naturally@@ -1352,7 +1352,10 @@ you wish to have content interspersed with yaclml tags. - diff --git a/William Blake.html b/William Blake.html index 236ee11..0f508b3 100644 --- a/William Blake.html +++ b/William Blake.html @@ -181,7 +181,8 @@ Thus Sang the Jessie: i stuck the phone antenna up the dogs nose and he ignored me + diff --git a/William James - The PhD Octopus.html b/William James - The PhD Octopus.html index abdfb2c..7c0c625 100644 --- a/William James - The PhD Octopus.html +++ b/William James - The PhD Octopus.html @@ -348,10 +348,8 @@ to guard us from a future so unmanly and so unbeautiful! - diff --git a/William James - The Varieties of Religious Experience.html b/William James - The Varieties of Religious Experience.html index bf8ea28..582d467 100644 --- a/William James - The Varieties of Religious Experience.html +++ b/William James - The Varieties of Religious Experience.html @@ -867,7 +867,8 @@ uebermensch or Taoist] - diff --git a/Window Maker Themes.html b/Window Maker Themes.html index 7e7742a..9bb3ffa 100644 --- a/Window Maker Themes.html +++ b/Window Maker Themes.html @@ -137,8 +137,7 @@ RAM. - diff --git a/Wisdom.html b/Wisdom.html index 42926f7..cf7fc62 100644 --- a/Wisdom.html +++ b/Wisdom.html @@ -313,9 +313,7 @@ stinks. One should not go to church if one wants to breathe - diff --git a/index.html b/index.html new file mode 100644 index 0000000..123d817 --- /dev/null +++ b/index.html @@ -0,0 +1,258 @@ + + + + +The Home of Your Friendly Neighborhood Terrorist + + + + + + + +The Home of Your Friendly Neighborhood Terrorist
+++ + ++
+- +Sections +
+- + +
+- +About Me / Contact +
+- +
++
+- +GnuPG +
+- +Email +
+- +Jabber +
+- +IRC +
+- +Résumé +
+- +A Picture +
+- +Site Software +
+- +Ancient History +
+Greetings, my name is Clinton and you have stumbled upon my personal +website. This is a continually evolving project as most things on the +web are.
+ +You might want to check out my weblog (warning: contains pictures of +cats and rants about OpenAFS and Common Lisp).
+ ++Sections
+ ++Boring Technical Stuff (I Know I Know, You're Probably Here for This)
+ ++
+ + +- Code + +
++
- darcsweb
+- gitweb (although a lot of my time is spent on HCoop code)
+- Lisp Stuff
+- Android
++Perhaps Interesting
+ + + + +Et cetera
+ + + + ++Unabashed Navel Gazing
+ + + + + + ++About Me / Contact
+ +I am a mild mannered hacker and metalhead.
+ +I hack Lisp and am on the board of a hosting cooperative that you +should join.
+ +I welcome criticism and suggestions to improve anything I have +written here.
+ ++GnuPG
+ +BCE8 C667 7CD2 7139 735C 2F99 DB28 E55B 381E 3395 General use key. I +sign my mail with this and you can send me encrypted messages using it +if you fear the orbital mind control lasers.
+ +F169 C3BC 9751 843F 9497 42BE 3F59 9AAE 7C43 A9F4 (key used for +signing software release tarballs). Notice: I forgot the passphrase +and lost the revocation (I know, I'm a terrible person) and so this +key was regenerated
+ + +2010-04-16
. Or perhaps The Network got to me.+ + +
clinton at unknownlamer dot gro
(a simple puzzle)+Jabber
+ ++ + +
clinton at hcoop dot net
(this also works as an email address and must +be protected as a result)+IRC
+ +I hang out on Freenode and oftc as
+ + +unknown_lamer
in various +channels./whois
will guide you to me.+Résumé
+ +I am a programmer by trade, and as such have a (potentially) fancy and +most certainly oudated Résumé. I am quite familiar with UnCommon Web +and Common Lisp in general. This, naturally, makes me pretty +unemployable.
+ + ++A Picture
+ ++
+ + ++ + A Furry Young Lad +Site Software
+ +I use muse-mode to author the site because Emacs is all powerful, and +the closest approximation to a good user interface available on any +modern computer system. Muse allows me to simply write with very low +overhead (I spend most of my time in Emacs, and having hyperlinks and +a reasonable preview in the file buffer is quite useful). The file +format is quite hairy, but luckily the code is Free Software and, if +needed, I could easily write a publishing backend that transcoded my +site to an easier to parse format. There are advantages to being a +programmer.
+ +I use darcs to push updates to the site and manage my muse files. As +such there is a handy updates feed courtesy of a small Lisp program I +wrote and darcs.
+ +A more detailed description of my setup is available.
+ + ++Ancient History
+ +The Old Site is still available. Links to pages there will remain +stable indefinitely so as to not break the Holy Command of Our Sovran +Hypertextia. Be warned I may have been a teenager when most of it was +written.
+ + + + + + + + + + + \ No newline at end of file diff --git a/planner-cke.el.html b/planner-cke.el.html new file mode 100644 index 0000000..df6afe4 --- /dev/null +++ b/planner-cke.el.html @@ -0,0 +1,389 @@ + + + + +planner-cke.el + + + + + + + +planner-cke.el
+++ + ++
+;;; Planner Mode Settings +(require 'planner)
+ +;;; Basic Config +(setq planner-carry-tasks-forward 1) +(setq planner-project "clintons-plans")
+ +(setq planner-use-other-window nil)
+ +;;; Planner template +(setq planner-day-page-template +
+"* Tasks\n\n\n* Schedule\n\n\n* Notes\n\n\n* Timeclock\n\n\n* Accomplishments\n\n") +
+ +;;; General Key Bindings +(global-set-key [?\C-c ?p ?p] #'plan) +(global-set-key [?\C-c ?p ?d] #'planner-goto-today) +(global-set-key [?\C-c ?p ?b] #'planner-create-task-from-buffer) +(global-set-key [?\C-c ?p ?B] #'cke-planner-create-task-from-buffer-extended) +(global-set-key [?\C-c ?p ?t] #'planner-create-task) +(global-set-key [?\C-c ?p ?T] #'cke-planner-create-task-extended) +(global-set-key [?\C-c ?r] #'remember)
+ +;; My emacs runs continually and this ensures that my todo list will +;; be in front of me when I wake up in the morning +(add-hook 'midnight-hook #'(lambda () +
+;; Rebind hook to nil to supress prompts +;; for auto created cyclic tasks +(let ((planner-create-task-hook nil) +;; Only try to create cyclic tasks +;; when new page is created +;; automatically because it is +;; annoying as hell to have the +;; prompts for my cyclic tasks to +;; come up when scheduling future +;; tasks. +(planner-mode-hook (cons #'planner-cyclic-create-tasks-maybe +planner-mode-hook))) +(plan)))) +
+ +;;; Extra task interfaces +(require 'planner-w3m) +(require 'planner-bibtex) +(require 'planner-bookmark)
+ +(require 'planner-publish)
+ +(setq planner-html-inner-header +
+"<calendar arrows=\"t\"> +") +
+ +(setq planner-calendar-prev-month-button +
+"<<") +(setq planner-calendar-next-month-button +">>") +
+ +;;; Remember +(require 'remember-planner) +(setq remember-handler-functions '(remember-planner-append)) +(setq remember-annotation-functions planner-annotation-functions)
+ +;; Local Keybindings +(define-key planner-mode-map [?\C-c ?n] #'planner-create-note-from-task) +(define-key planner-mode-map [?\C-c ?d] #'planner-deadline-change)
+ +(require 'planner-gnus) +(planner-gnus-insinuate)
+ +;; Prompt for a deadline in addition to start date when creating new tasks +(require 'planner-deadline)
+ +(planner-calendar-insinuate) +(define-key global-map [?\C-c ?p ?c] #'calendar)
+ + +;;; Ranking customizations +(require 'planner-rank)
+ +;; Asks for importance before deadline to allow adding importance to +;; tasks without a deadline. +(defun cke-planner-deadline-add (date) +
++ +(interactive (list (planner-read-date nil t))) +;; Overload this for the extent because I don't care +;; about manually setting the urgency; a task lacking a +;; deadline is for me one with 'average' urgency. +(cond (date (planner-deadline-add date)) +(t +(flet ((planner-rank-read-importance-and-urgency +() +(list +(string-to-number +(read-string "Importance: " +nil +nil +(number-to-string +planner-rank-default-importance))) +planner-rank-default-urgency))) +(planner-rank-change)))))
+(defun cke-planner-call-extended (fun) +
++ +(let ((planner-create-task-hook +(cons #'(lambda () +(call-interactively #'cke-planner-deadline-add)) +planner-create-task-hook))) +(call-interactively fun)))
+(defun cke-planner-create-task-extended () +
++ +"Prompt for deadline and/or importance when creating a task" +(interactive) +(cke-planner-call-extended #'planner-create-task))
+(defun cke-planner-create-task-from-buffer-extended () +
++ +"Prompt for deadline and/or importance when creating a task from a buffer" +(interactive) +(cke-planner-call-extended #'planner-create-task-from-buffer))
+(setq planner-sort-tasks-key-function +
+ +(setq planner-rank-importance-vs-urgency-factor 1.5)
+ +(setq planner-rank-priority-A-valve 6.49) +(setq planner-rank-priority-B-valve 4.49)
+ +;;; note: tenative +;(setq planner-rank-deadline-urgency-map-list '(-1 0 4 10 21 30 90 180 365))
+ +(define-key planner-mode-map [?\C-c ?i] #'planner-rank-change)
+ +;;; Cyclic Tasks +(require 'planner-cyclic)
+ +(setq planner-cyclic-diary-file "~/plans/diary.cyclic-tasks")
+ +;; Cyclic tasks are only created when #'plan is run by midnight-mode +(remove-hook 'planner-mode-hook 'planner-cyclic-create-tasks-maybe)
+ +;;; Task IDs +(require 'planner-id)
+ +(setq planner-id-tracking-file "~/plans/.planner-id")
+ + +;;; Experimental +(defun cke-planner-get-annot () +
++ +(interactive) +(kill-new (or (run-hook-with-args-until-success +'planner-annotation-functions) +"")))
+(define-key global-map [?\C-c ?p ?a] #'cke-planner-get-annot)
+ +(require 'planner-schedule) +;(require 'planner-timeclock) +;(require 'planner-timeclock-summary)
+ +(setq timeclock-file (cke-personal-file "timelog"))
+ +;(planner-timeclock-summary-insinuate)
+ +(define-key planner-mode-map [?\C-c ?\C-o] #'(lambda () +
+(interactive) +(planner-task-open) +(timeclock-out))) +
+ +(require 'planner-calendar)
+ +(setq planner-calendar-today-page-name "index")
+ +;; 2018-10-26 seems to be broken... +;(eval-after-load "muse-publish"
+ + + +(require 'planner-accomplishments)
+ +(setq planner-accomplishments-status-display +
+'(("_" . "Unfinished") +; ("o" . "In progress") +; ("D" . "Delegated") +("P" . "Postponed") +("X" . "Completed") +("C" . "Cancelled"))) +
+ +(planner-accomplishments-insinuate)
+ +;;; Special task creation functions
+ +(defun cke-planner-create-book-tasks-range (title start end) +
++ +"Create undated tasks for reading individual sections of a +book" +(interactive "MTitle: \nnStart: \nnEnd: ") +(dotimes (chapter-base (- (1+ end) start)) +(planner-create-task (format "Reading: %s: Chapter %d" +title (+ chapter-base start)) +nil nil "Reading" "P")))
+(defun cke-planner-create-book-tasks (title chapters) +
++ +"Create undated tasks for reading individual sections of a +book" +(interactive "MTitle: \nnChapters: ") +(cke-planner-create-book-tasks-range title 1 chapters))
+(defun cke-planner-create-bicycle-light-tasks () +
++ +(interactive) +(let ((cke-date (planner-read-date)) +(planner-default-task-priority "A")) +(mapc (lambda (task-description) +(planner-create-task task-description cke-date nil "Bicycle")) +'("Charge headlight" +"Charge LD-600 AAAs" +"Charge LD-1000 AAs"))))
+(global-set-key [?\C-c ?p ?e ?b] #'cke-planner-create-book-tasks) +(global-set-key [?\C-c ?p ?e ?B] #'cke-planner-create-book-tasks-range) +(global-set-key [?\C-c ?p ?e ?l] #'cke-planner-create-bicycle-light-tasks)
+ + +;;; Diary Integration +;; (require 'planner-diary)
+ +(setq diary-file "~/plans/diary") +;; (add-hook 'diary-display-hook 'fancy-diary-display)
+ +;; (setq planner-diary-string "* Schedule") +;; (setq planner-diary-use-diary t) +;; (planner-diary-insinuate)
+ +;;; Appointments +(require 'planner-appt)
+ +(setq planner-appt-task-use-appointments-section-flag t)
+ +(planner-appt-use-tasks) +(planner-appt-insinuate)
+ +;;; BBDB +(require 'planner-bbdb)
+ +;;; VC Integration +(require 'planner-log-edit)
+ +;;; Misc Local Keybindings +(define-key planner-mode-map [?\C-c (control shift ?p)] #'planner-task-pending)
+ +;;; Faces +(custom-set-faces +
++ +'(planner-cancelled-task-face ((t (:foreground "gray70" :strike-through "red" :height 0.85)))) +'(planner-completed-task-face ((t (:foreground "gray70" :strike-through "green" :height 0.85)))) +'(planner-low-priority-task-face ((t (:foreground "cyan")))))
+;;; Works in Progress
+ +;; Next +;; 1. overlay modification hooks +;; a. behavior +;; b. modifying overlay when text length changes +;; 2. regex matching +;; a. match groups +;; 3. integrate with planner +;; a. use planner deadline functions to match task deadline +;; b. insert overlay +;; i. manage overlay size when task is changed +;; c. hook into planner +;; 4. Cleanup +;; a. create a category for the deadline overlay +;; i. move properties from function to plist on category +(defun cke-planner-overlay-test () +
++ +(save-selected-window +(switch-to-buffer (get-buffer-create "foo")) +(let ((cke-overlay (or (car (overlays-at 8)) +(make-overlay 8 13)))) +(overlay-put cke-overlay 'before-string "foo1") +(overlay-put cke-overlay 'invisible t))))
+;; Version control integration +(defun vc-darcs-init-version () +
++ +nil)
+;; this needs to only try to check in new files of the planner +;; project, and then only when they are real files and not transient +;; report buffers +(defadvice planner-prepare-file (after cke-planner-darcs-add +
+disable) +"Add empty planner files to the current darcs repo if the +planner projects under vc" +(set-buffer-modified-p t) +(save-buffer) +(when (and (buffer-file-name) +(eq (muse-project-of-file (buffer-file-name)) +planner-project)) +(let ((vc-default-init-version nil)) +(if (not (condition-case nil +(vc-register nil nil) +(error t))) +(vc-checkin (buffer-file-name) nil "Initial Checkin"))))) +
+ +(ad-unadvise #'planner-prepare-file)
+ + + + + + + + \ No newline at end of file -- 2.20.1