November 23, 2003

Bulk view

LedgerMode

I want to be able to use Emacs for my double-entry accounting so that
I don’t have to start GnuCash. I would like it to be emacs-wiki
compatible so that I can publish it as an emacs-wiki file. I can begin
with having all of my entries in a GeneralLedger wiki page. Each entry
can be of the form

Date {{Finance:GUID}} Transaction name / notes Account Amount

The amount would be expressed as either Amount (credit) or -Amount
(debit).

I want to be able to quickly cycle or complete accounts, and I
think I’ll be able to do that with hippie-expand or some way to choose
accounts easily.

- I want to be able to see a summary of the balances of accounts.
- I want to be able to view income/expense reports aggregated by month.
- I want to be able to see expense reports per month.
- I want to allow split transactions.

LedgerMode

Text messaging for the blind

http://news.bbc.co.uk/1/hi/technology/2403913.stm

accessible computing, deals with text abbreviations

Whew! Just reviewed the history of UNIX

… and boy, are there stories to tell. =)

Story about pipes for CS161

http://www.bell-labs.com/history/unix/sohedid.html

Although stymied, McIlroy didn’t drop the idea. “And over a period from 1970 to 1972, I’d from time to time say, ‘How about making something like this?’, and I’d put up another proposal, another proposal, another proposal. And one day I came up with a syntax for the shell that went along with the piping, and Ken said, ‘I’m going to do it!’”

“He was tired of hearing this stuff,” McIlroy explained. “He didn’t do exactly what I had proposed for the pipe system call. He invented a slightly better one that finally got changed once more to what we have today. He did use my clumsy syntax.”

“Thompson saw that file arguments weren’t going to fit with this scheme of things and he went in and changed all those programs in the same night. I don’t know how…and the next morning we had this orgy of one-liners.” mcIlroy
“He put pipes into UNIX, he put this notation into shell, all in one night,” McElroy said in wonder.

CS161

Story ideas for CS161

- AT&T Bell Labs gave up on MULTICS
- (Ken Thompson, Dennis Ritchie, and J.F. Ossanna)
- really cool filesystem idea on paper
- all requests for a computer to hack on for an OS were denied
- Space Travel: “Their effort included a floating-point arithmetic package, the pointwise specification of the graphics characters for the display, and a de-bugging subsystem that continuously displayed the contents of typed-in locations in the corner of the screen.”
- Filesystem and some other tools hacked on
- PDP-7 obsolete and they didn’t even own it
- 1970: proposal for a PDP-10. At $65,000, it was much less than they’d previously asked, and not ‘operating system’ – ‘word processing system’
- processor arrived by end of summer 1970, but no disk until december. cross-assembled core-only system.
- most of the time, the system enumerated all the closed knight’s tours on a 6×8 chessboard.
- pdp-11. no multiprogramming, but real paths. 24k of core memory (16k for system, 8k for user) disk with 1k blocks (512kb) files limit to 64kb
- promise system for word-processing. because hardware took a long time to arrive, pdp-7 unix was more useful. so why not develop unix as a development tool for the more specialized system?
- 1971: runoff program inspired by roff from Multics and CTSS. two advantages: supported terminals and added a feature to it (line numbers) that other system could not provide, so patent office chose them.
- 1973: rewritten in C

- “And so, Ken Thompson started mailing magnetic tapes with the Unix source code and utilities to his friends, labeling them simply “Love, ken”. And so, in the early 1970′s, a culture of Unix hackers sprang up, working with the Bell Labs source code.”

- “Around the mid 1970s, a professor by the name of John Lions at the University of New South Wales in Australia decided to use Unix to teach operating system architecture.”

- “If you had taken Lions’ class at the time, you would have bought two books (one red and one orange), they were the Source Code and Commentary on UNIX Level 6. The class became quite popular, and soon Bell Labs took notice. ” Most photocopied books in computer history.

“Because we couldn’t legally discuss the book in the University’s operating systems class, several of us would meet at night in an empty classroom to discuss the book. It was the only time in my life that I was an active member of an underground.” —Peter B. Reintjes, on the back of the 1996 reprinting of Lions’ Commentary

Ooooh. anarchy. rebel spirit.

“The whole Unix culture was based upon sending C source code from person to person, adding features and fixing bugs as time went on.”

UCB
- virtual memory
- networking
- wildly different

- ATT Unix rights bounced around a lot and are now with SCO

- hideous tangle of lawsuits: BSD wars

MIT
- ITS: Incompatible Timesharing System, optimized like heck, but not portable
- death of LISP machine due to corporate interests
- RMS, Unix way, GNU GPL, 1983: tools

Helsinki
- “1991: GNU was complete OS, but lacked kernel. BSD locked in lawsuits”
- Linus Torvalds! sick of inefficiencies of Tanenbaum’s Minix, can’t connect to uni’s Unices (Linus and Lars, to learn C)

Sources:
- The Ritchie paper
- http://www.crackmonkey.org/unix.html
- http://www.bell-labs.com/history/unix/firstport.html (incl image)

History from Dennis Ritchie for CS161

http://cm.bell-labs.com/cm/cs/who/dmr/hist.html

What we wanted to preserve was not just a good
environment in which to do programming, but a system around which a
fellowship could form. We knew from experience that the essence of
communal computing, as supplied by remote-access, time-shared
machines, is not just to type programs into a terminal instead of a
keypunch, but to encourage close communication.

— Dennis
Ritchie

So it really did begin with Space Travel… then a file system (which
had been previously designed with chalk), then user-level utilities
(because a filesystem is wasted if you don’t have stuff to do with
it), then a shell, then an assembler.

How the old shell worked:

- The shell closed all its open files, then opened the terminal special file for standard input and output (file descriptors 0 and 1).
- It read a command line from the terminal.
- It linked to the file specifying the command, opened the file, and removed the link. Then it copied a small bootstrap program to the top of memory and jumped to it; this bootstrap program read in the file over the shell code, then jumped to the first location of the command (in effect an exec).
- The command did its work, then terminated by calling exit. The exit call caused the system to read in a fresh copy of the shell over the terminated command, then to jump to its start (and thus in effect to go to step 1).

Recognizing coding systems in Emacs

For when Emacs doesn’t correctly autodetect it: C-x RET c CODING-SYSTEM RET M-x revert-buffer RET

Tidbit for CS161

The different versions of the UN*X brand operating system are numbered
in a logical sequence: 5, 6, 7, 2, 2.9, 3, 4.0, III, 4.1, V, 4.2, V.2,
and 4.3.

From: http://www.cs.bgu.ac.il/~omri/Humor/unix-history.html

CS161

Funny UNIX history

http://www.cs.bgu.ac.il/~omri/Humor/unix-history.html

CS161

Jody Klymak’s planner-mode stuff

http://pender.coas.oregonstate.edu/PlannerMode.html

E-Mail from Jody Klymak

The Object of Java

http://www.aw-bc.com/catalog/academic/product/0,4096,0321168542-TOC,00.html

The outline looks like it makes sense as part of a syllabus.

Running word count in Emacs buffers

http://gnufans.net/~deego/emacspub/site-lisp-not/wcount.el