August 22, 2004 7:19 PM
First the important news: Corrected a critical bug in Footnote fixes. The version of the fix I was using works perfectly. Tried using the one on the page and found it wasn't working (due to lack of a (goto-char 0) ) for more than one footnote <embarrassed grin>. My email box has been swallowing all my mails (aliases are evil). So, if I haven't replied to anyone, then it's because I haven't gotten the email in the first place.

Added an interactive function that counts the number of words in an EmacsWiki buffer. Read emacs-wiki-count-words.el.

Boy, the exams were something. Consider this question for our System Programming paper:

Write an algorithm for a one pass microprocessor and explain the data structures used by the microprocessor.

Yeah, you read it right, a one pass microprocessor1. After the exam commenced, some of the teachers sheepishly announced to there being some minor spelling mistakes in the question paper.

Another interesting question was about resolution of deadlocks2. The Ostrich algorithm3, employing the famous stick your head in the sand and pretend there is no problem at all solution is of course, the easiest of all deadlock resolution algorithms to implement.

Solutions to classical interprocess communication problems like the Dining Philosopher's problem, the Readers and Writers problem and the Sleeping Barber problem are hard to implement in DOS where the only way to simulate multitasking is via TSRs4. But it isn't impossible. All you have to do is write a scheduler that mimics a process scheduler. This can be done using setjmp and longjmp calls hooked into functions that are going to act as your individual processes. My implementation, designed before I was familiar with any of the Unix operating systems, is too Turbo C++ and x86 dependent using its asm directive to embed assembly code which saves and restores critical register values before the setjmp and longjmp calls.

Some of the textbooks reminded me of the stuff that I had wanted to make a note of and forgot; like the 91 function attributed to John McCarthy:

(defun func-91 (x)
  (if (> x 100)
      (setq x (- x 10))
    (func-91 (func-91 (+ x 11)))))

Another is about Artificial Intelligence (AI). An interesting trend in AI technologies is that once they are developed, they become standard tools. Therefore, AI has also gained the expansion, "Almost Implemented." Rodney Brooks describes this as the AI effect.


[1] The correct word is macroprocessor.
[2] A set of processes is deadlocked if each process in the set is waiting for an event that only another process in the set can cause.
[3] Implemented by Windows and certain UNIX versions.
[4] Terminate but Stay Resident programs.

Copyright © 2004-2011 Anirudh Sasikumar. All rights reserved.
Last Updated: January 21, 2005 4:28 PM