Elegant Software




Interesting Articles on Software and Computers

The dumbing-down of programming Rebelling against Microsoft, "My Computer" and easy-to-use wizards, an engineer rediscovers the joys of difficult computing, by by Ellen Ullman .
Paul Graham's web site has some thought provoking articles:
In the Beginning was the Command Line History by Neal Stephenson .
End-to-End Arguments in System Design This paper presents a design principle that helps guide placement of functions among the modules of a distributed computer system. The principle, called the end-to-end argument, suggests that functions placed at low levels of a system may be redundant or of little value when compared with the cost of providing them at that low level. Examples discussed in the paper include bit error recovery, security using encryption, duplicate message suppression, recovery from system crashes, and delivery acknowledgement. Low level mechanisms to support these functions are justified only as performance enhancements.
Why Threads Are A Bad Idea (for most purposes). This talk was presented as an Invited Talk at the 1996 USENIX Technical Conference (January 25, 1996). The talk compares the threads style of programming to an alternative approach, events, that use only a single thread of control. Although each approach has its weaknesses, events result in simpler, more manageable code than threads, with efficiency that is generally as good as or better than threads. Most of the applications for which threading is currently recommended (including nearly all user-interface applications) would be better off with an event-based implementation. The click here for the slides.
Fundamentals Of Multithreading Overview of mutlithreading issues in CPUs.
Splice This document describes a strawman proposal for a new model for I/O in a Unix Operating System. The goals of the new model include low overhead I/O, scatter-gather for zero copy networking to and from disks, async I/O, simple implementation, and compatibility with the existing kernel implementation. The model is fundamentally different than the existing model, but easily provides compatibility with the standard read and write interfaces. If desired, a kernel could move entirely to this model, building the old interfaces on top, somewhat similarly to what Sun did with mmap. If this idea ever lives up to its full potential, it could be as useful as the mmap work. splice.ps
The Fundamentals Of Cache Overview of caching in modern chips.
Are you Ready For C99? Overview new C99 Standard.
UNIX Socket FAQ! Reference for socket programming.
Reflections on Stephen Wolfram's "A New Kind of Science" Really, really deep thinking on celluar automata, ai and physics.
Scaleable Network Programming A nice overview.



(c) 2004 Russell Leighton, all rights reserved