Fasteroids: take the pie menu challenge!
on
Pie-Menus in Mozilla
·
· Score: 3, Interesting
wadetemp said: "It's my personal belief that pie menus are more of a perceived advantage rather than a true advantage. The complexity of motion makes you feel more industrious... although you may not be getting work done any faster at all."
What objective facts are your personal beliefs based on, or are they purely subjective?
Question: How do you know that your personal beliefs are not merely a perception of knowledge than true knowledge? Answer: subject your theories to experimentation.
Have you performed any emperical experiments to determine if pie menus have an advantage over linear menus?
I'm sorry your personal belief contradicts my own emperical experience.
In all the experiments I have ever done, and all the ones other people have done that I have read about, pie menus have been proven to be
faster than linear menus.
So it's not at all subjective or based on personal belief. The effect of Fitts' Law is quite easily measured, which should eliminate the need for resorting to the exposition of subjective personal beliefs.
Here is one such experiment that you can try for yourself (which requires Internet Explorer).
Fasteroids is a free game that lets you compare pie menus with linear menus. Take the pie menu challange! Fasteroids tracks your selection speed and error rate, so you can compare pie menus and linear menus for yourself.
-Don
Steve Jobs thinks pie menus suck
on
Pie-Menus in Mozilla
·
· Score: 3, Informative
Years ago at Educom, I gave a demo of pie menus, NeWS, UniPress Emacs and HyperTIES to Steve Jobs.
He was jumping up and down, pointing at the screen, yelling "That sucks! That sucks! Wow, that's neat! That sucks!"
He had just finally released the NeXT computer. This was his big debut after such a long wait (remember the "NeVR" t-shirts?). The NeXT Computer had the best user interface in the whole world. All other user interfaces sucked in comparison. And the NeXT didn't have pie menus, therefore pie menus sucked. If you can follow that train of thought outside of the reality distortion field.
I gotta hand it to Jobs. Once he makes a decision, he sticks with it -- you gotta give him that. As far as I know, NeXT in its current incarnation as Mac OS/X still doesn't have pie menus.
The first known published reference to the idea was in 1969, in a paper about a CAD system:
Wiseman, N. E., Lemke, H. U., and Hiles, J. O., "PIXIE: A New Approach to Graphical Man-Machine Communications",Proc. 1969 CAD Conf. Southhampton, IEE Conf. Pub. 51, p. 463
The basic idea was also mentioned in an early edition of the reference book on computer graphics:
Newman, W.M. and Sproull, R. F., Principles of Interactive Computer Graphics, 2nd. edition, McGraw-Hill, 1979, 1973
Jack Callahan and I published a paper about an experiment comparing pie menus with linear menus in 1984:
Callahan, J., Hopkins, D., Weiser, M. & Shneiderman, B. (1988) An empirical comparison of pie vs. linear menus. Proceedings of CHI `88, 95-100
Pie menus have been used in products, including Connected TV, The Sims, Unix SimCity for TCL/Tk, Maya, Habitat, Neverwinter Nights, Return to Zork, Logitech's mouse driver, UniPress Emacs, and the open source piewm window manager for X11.
Pie menus have been implemented as plug-in components for systems including NeWS, Hypercard, ScriptX, X Toolkit, Director, Flash, Asymetrix ToolBook, TCL/Tk, ActiveX, Java, Dynamic HTML Behaviors, and finally Mozilla).
-Don
Re:Keyboard accelerators, mouse ahead and rehersal
on
Pie-Menus in Mozilla
·
· Score: 2
I think I've actually seen a mouse like you describe, with a trackpoint on it.
Ted Selker is the IBM researcher [now at MIT Media Lab] who came up with the Trackpoint, after many years of research and development.
He called it the "Joy Button". But IBM they wouldn't go that far out with a product name. But he did get away with suggestting the slogan "So Hot We Had To Make It Red", which survived the focus groups and was printed in huge type on a two page spread ad for the Trackpoint in Time magazine.
Ted Selker even made a prototype Thinkpad with TWO trackpoints, one for each hand!!! Boy did that have a nice feel to it! Something not-very-subliminal about the appeal of a computer with two red nipples. People of all persuasions couldn't keep their hands off of it. It was one of those things that was just too good to release. I heard a rumor that IBM keeps the original prototype locked away in their secret underwater sealab, and they installed the only other pair of trackpoints on a laptop given as a gift to Bill Clinton, in exchange for special favors.
Penny Lane's
"Finger pie" was a Liverpudlian sexual reference included in the song to amuse the locals. "It was just a nice little joke for the Liverpool lads who like a bit of smut," said Paul. "For months afterwards, girls serving in local chip shops had to put up with the requests for 'fish and finger pie'."
Drop down menus can't support mouse-ahead as well as pie menus, because pie menus are based on direction, and you don't have to look at the screen to know reliably which direction you move the mouse.
So you can mouse ahead through a pie menus reliably, because it's the direction, not the distance that matters.
But with drop-down menus, the distance is what matters, and the direction is always the same: down (which suggests that alternative possibilities are being wasted: the other directions). It requires your full visual attention for the hand-eye feedback loop, to position the mouse over the correct target rectangle, merely as tall as the font height.
Selecting one small rectangle below your cursor requires much more attention and precision than selecting one large pie slice, each in a different direction.
Fitts' Law predicted it: the larger and closer the target, the faster and easier it is to hit.
The experiments have proven it.
But close-minded people are still stubbornly resistant to change, as it has always been and always will be.
-Don
Integration issues and component technology
on
Pie-Menus in Mozilla
·
· Score: 3, Informative
Actually, the old ActiveX pie menus do support XML configuration, but I didn't take it very far because it was obvious that you needed to be able to embed dynamic HTML in the XML pie menu specifications, to describe any kind of interface possible: pie menus with html, style sheets, animated gifs, flash, other plug-ins, svg, force feedback, odorama, or whatever the latest fad in rendering technology happens to be at the time.
But it just wasn't tractable to implemented dynamic html rendering in the ActiveX control. It might have been possible to recursively embed an Internet Explorer ActiveX control, but it just wasn't worth going down that road.
Instead I turned the problem inside-out and reimplemented pie menus inside Explorer in JavaScript (as an IE-Windows-only dynamic html behavior component), so they could take full advantage of all of the browser's features, in a well-integrated, memory-efficient way.
Unfortunately, it's unlikely that Microsoft is going to support Dynamic HTML Behavior Components on the Mac version of Internet Explorer, and unlikely but not impossible that Mozilla will support them on any platform. It's a nice way to package and re-use components implemented in scripting languages like JavaScript or VBScript (or any other language).
I'm glad the Mozilla developers have implemented pie menus using their own component technology (Chrome). It would be nice if Mozilla could some day support DHTML components on all platforms (which would give it an advantage over IE), and also nice if IE could support Chrome components on all platforms. One of those scenarios is more likely than the other, though.
The JavaScript pie menus can't shape the window in arbitrary ways like the ActiveX pie menus do, because they're running inside of the browser window, without their own windows. But they're nicely integrated into the html rendering engine, so they can take advantage of all kinds of nice features like transparency, rendering parameterized Flash files, etc.
The pie menu tracking callbacks can change dynamic html properties as well as Flash object parameters, which works well because recent versions of Flash have been integrated with Internet Explorer's HTML renderer instead of being blocked off in its own window. So the browser can draw html content on top of flash content and vice-verce, and JavaScript pie menus can integrate them both.
I don't yet know how to Mozilla pie menus are integrated with the web page and drawing engine, but I trust they've done a good thing, and I'm looking forward to trying them it and learning how it works.
-Don
Keyboard accelerators, mouse ahead and rehersal
on
Pie-Menus in Mozilla
·
· Score: 5, Informative
Pie menus are better than linear menus with keyboard accelerators, because when you use a pie menu you're not familiar with, you're actually rehearsing the accelerated action.
Once you know the direction of the pie menu item you want, you can quickly select it without even looking at the screen, by mousing ahead. It's like using a keyboard accelerator, but without moving your hand from the mouse to the keyboard and back. The accelerated action is exactly the same as the unaccelerated action, only faster.
But selecting from a linear menu is not rehearsal for using the keyboard accelerator, because typing on the keyboard is a completely different action than selecting from the menu with the mouse, so you have twice as many actions to learn. To use the keyboard accelerator, you have to learn a completely new command that has nothing to do with the menu, and interrupts the flow of mouse actions.
It takes at least a second to move your hand between the mouse and keyboard and readjust, so it's important to provide keyboard equivalents for commands you'll be using while typing. I'm not suggesting removing keyboard accelerators when adding pie menus. Pie menus have their own built-in accelerators (mousing ahead without looking), that is extremely easy to use if you're already pointing and clicking with the mouse (which is the case with a game like The Sims, that doesn't use the keyboard very much).
Of course there's no reason why you couldn't assign traditional keyboard accelerators to individual pie menu items.
The ActiveX pie menus have full support for keyboard navigation, so you can select and navigate and use all their features from the keyboard as well as the mouse.
Four item and eight item pie menus map very nicely to the arrow keys and numeric keypad. The ActiveX pie menus can automatically limit the maximum number of items per pie menu to eight, and let you page up and down through arbitrarily long menus in groups of eight items at a time, with the mouse or keyboard.
The newer JavaScript Pie Menus for Internet Explorer don't support keyboard navigation yet. Here's a description of many of the features of the older ActiveX pie menus, which are fancier but don't integrate with the web page as nicely or support dynamic HTML rendering and XML configuration like the newer Javascript pie menus.
Here's a screen dump of PizzaTool, that ran on the Sun under the NeWS window system, and actually faxed a PostScript picture of the pizza (along with the text of the order) to Tony and Alba's pizzaria in Mountain View:
"I'm not going to solve a $34 billion debt problem of a major carrier just because I express optimism in its future." -Federal Communications Commission Chairman Michael K. Powell
Uuuuh, Mr. Powell, it's a $70 billion debt, now.
Maybe the problem is that we have an FCC chairman who's OPTIMISTIC about the future of Worldcom, and makes lame excuses saying "don't blame me for being optimistic". We blame you for being an idiot, because you're an optimistic corporate suck-up.
Is that an easter egg, or just the way it works? At first, it resists repeated letters, then it catches on and opens up a tunnel for you to fall through. Keep driving though the tunnel, then all of a sudden swerve around, then try to get back into the tunnel again. Then switch to repeating a different letter, and switch back and forth between them. It's got a great kinesthetic texture, you can feel the springyness!
-Don
Krapagnor should proudly tear up his Mensa card.
on
Wolframania
·
· Score: 2
There are even more references to Lorenz in the index:
Lorenz, Edward N. (USA, 1917-)
and chaos theory, 971
and complex ODE, 879
and experimental math, 899
and fluid turbulence, 998
in Preface, xiii
Lorenz Equations
as giving strange attractor, 922
and history of chaos theory, 971
and Lissajous figures, 917
and weather prediction, 1178
To recap, the original poster Krapangor said:
"Do I even have to mention the Lorentz system at all, everyone should know it. But he is just a physicist after all. I'm a proud owner of a Mensa membership card."
So it's obvious that Wolfram is aware of the work of Lorenz as well as the work of Lorentz, since he cites both of them in the index, spells their names correctly, and discusses their work in his book.
It's also obvious that Krapagnor should tear up his Mensa card that he's so proud of, if he can't manage correctly spell the name he drops, claiming "everyone should know it".
Krapagnor: If everyone should know the "Lorentz" system, then why can't you even spell it correctly? You should tear up your Mensa card, and learn to spell before you dismiss all physicists as fools. And please read the book before attempting to discredit it by insulting the author.
-Don
You even had to mention the Lorentz system...
on
Wolframania
·
· Score: 3, Informative
Krapangor writes: "However Wolfram doesn't seem to understand the complexity which arises even from continuous systems and that in fact non-continuous dependencies can turn up in continuous systems. Do I even have to mention the Lorentz system at all, everyone should know it. But he is just a physicist after all."
This is from the index of Wolfram's "A New Kind of Science":
Lorentz, Hendrik A. (Netherlands, 1853-1928)
and relativity theory, 1041
Lorentz contraction, 1041
Lorentz gas, 1022
Lorentz transformations, 1041, 1042
Lorentzian spaces, 1051
From the notes for Chapter 9, refereing to Page 522, History of Relativity, on page 1041:
[Mentions Galileo, Newton, Maxwell, Michelson, Morley, FitsGerald...] Already in 1904 Lorentz pointed out that Maxwell's equations are formally invariant under a so-called Lorentz transformation of space and time coordinates (see note below). [Mentions Einstein, Minkowski, Mach...]
Yet as I discussed earlier in the chapter, if a complete theory of physics is to be as simple as possible, then most things like relativity theory must in effect be derived from more basic features of the theory -- as I start to try to do in the main text of this section.
[End of quote from Wolfram's "A New Kind of Science".]
How about reading the book before dismissing it by insulting all physicists?
-Don
You've never heard of Mathematica??!
on
Wolframania
·
· Score: 3, Insightful
You accuse Wolfram of 1) having no real clue of math, and 2) obviously not having grasped the usefulness of a clean mathematical formalism.
So have you ever heard of a widely-used product called MATHEMATICA?
Open the URL http://www.mathematica.com, notice where it redirects you to, learn about it, and see how laughably wrong and totally off-base you are in your accusations that Wolfram doesn't understand math.
Krapangor, I find it impossible to believe that you know much about math yourself, if you've never heard of Mathematica. But for you to say that Wolfram doesn't understand math -- that takes the cake! Ha ha ha!
-Don
Until you're read the book: http://www.ZipIt.com
on
Wolframania
·
· Score: 3, Insightful
You have no real clue on Wolfram because you obviously haven't read the book.
YOU ARE NOT QUALIFIED TO COMMENT if all you've read are the reviews. So please shut up until you read the book.
For only $45 from Amazon, A New Kind of Science is physically one of the best deals I've ever seen in a book. Its size is enormous (well over 1200 pages), and the quality of the paper, binding and printing process is extremely excellent, because the high resolution illustrations required it.
"Many of the pictures in this book have a rather different character from things that are normally printed. For unlike traditional diagrams consisting of separate visible elements -- or photographs involving smooth gradiations of color -- they often for example contain hundreds of cells per inch, each in effect independently black of white. And to capure this properly required careful sheet-fed printing on paper smooth enough to avoid significant spreading of ink."... "The book was printed on 50-pound Finch VHF paper on a sheet-fed press. It was imaged directly to plates at 2400 dpi, with halftones rendered using a 175-line screen with round dots angled at 45 degrees. The binding was Smythe sewn."
Even if you never read this book and only use it as a paper weight or prop to pick up girls, it's still the highest quality paper weight or chick magnet you'll ever find for the money. If Springer-Verlag had published A New Kind of Science, it would probably cost at least $250, be printed on cheap K-Mart toilet paper, and they wouldn't have even considered putting a fresh ribbon in the typewriter.
If you do bother reading the book before trying to write a review or refute its contents by personally attacking the author, it will certainly change your view of the universe.
The Evolution Robotics System doesn't use Windows -- it's based on Linux. If you're already building and programming robots, you will probably have no problem integrating your hardware and software with it.
This library is mainly aimed at real time computer vision. Some example areas would be Human-Computer Interaction (HCI); Object Identification, Segmentation and Recognition; Face Recognition; Gesture Recognition; Motion Tracking, Ego Motion, Motion Understanding; Structure From Motion (SFM); and Mobile Robotics.
Library Areas:
The areas covered by this library are
Chapter Contents
Image functions: Creation, allocation, destruction of images. Fast pixel access macros.
Data Structures: Static types and dynamic storage.
Contour Processing: Finding, displaying, manipulation, and simplification of image contours.
Geometry: Line and ellipse fitting. Convex hull. Contour analysis.
Features: 1st & 2nd Image Derivatives. Lines: Canny, Hough. Corners: Finding, tracking.
Image Statistics: In region of interest: Count, Mean, STD, Min, Max, Norm, Moments, Hu Moments.
Image Pyramids: Power of 2. Color/texture segmentation.
Morphology: Erode, dilate, open, close. Gradient, top-hat, black-hat.
Background Differencing: Accumulate images and squared images. Running averages.
Distance Transform: Distance Transform
Thresholding Binary, inverse binary, truncated, to zero, to zero inverse.
Flood Fill: 4 and 8 connected
Camera Calibration: Intrinsic and extrinsic, Rodrigues, un-distortion, Finding checkerboard calibration pattern
View Morphing: 8 point algorithm, Epipolar alignment of images
Motion Templates: Overlaying silhouettes: motion history image, gradient and weighted global motion.
CAMSHIFT: Mean shift algorithm and variant
Active Contours: Snakes
Optical Flow: HS, L-K, BM and L-K in pyramid.
Estimators: Kalman and Condensation.
POSIT: 6DOF model based estimate from 1 2D view.
Histogram (recognition): Manipulation, comparison, backprojection. Earth Mover's Distance (EMD).
Gesture Recognition: Stereo based: Finding hand, hand mask. Image homography, bounding box.
Matrix: Matrix Math: SVD, inverse, cross-product, Mahalanobis, eigen values and vectors. Perspective projection.
Eigen Objects: Calc Cov Matrix, Calc Eigen objects, decomp. coeffs. Decomposition and projection.
embedded HMMs: Create, destroy, observation vectors, DCT, Viterbi Segmentation, training and test.
Drawing Primatives: Line, rectangle, circle, ellipse, polygon. Text on images.
System Functions: Load optimized code. Get processor info.
Utility: Abs difference. Template matching. Pixel order<->Plane order. Convert Scale. Sampling lines. Bi-linear interpolation. ArcTan, sqrt, inv-sqrt, reciprocal. CartToPolar, Exp, Log. Random numbs. Set image. K-Means.
Intel® Image Processing Library (included in OpenCV WinOS download):
Image creation and access (same image header used for both libraries).
Image arithmetic and logic operations.
Image filtering.
Linear image transformation.
Image morphology.
Color space conversion.
Image histogram and thresholding.
Geometric transformation (zoom-decimate, rotate, mirror, shear, warp, perspective transform, affine transform).
Image moments.
Demo Overview (apps that come with the library)
Matlab Camera Calibration Toolbox tutorial
Automatic camera calibration filter
Color tracker/face tracker
Condensation filter fracker
Face recognition using embedded HMMs
Kalman filter tracker
Lucas-Kanade optical flow in an image pyramid
User Contributed Utilities
Windows* Specific
How to find any Direct Show* camera driver with the CAMSHIFT demo
Matrox Meteor* Direct Show capture filter
Linux* Specific
C Code, Non-Specific
BMP* to IPL file reader/writer
Finding the mean and covariance of data sets on disk
Last weekend I assembled one of Evolution's robots, set up the software and read over all the included sources and documentation. It pretty much works as advertised, and is quite flexible, but it needs more example source code and further development.
I'm working on a robot project with the
Stupid Fun Club, and we're going to build the Evolution laptop into a much bigger heavier duty robot body, to control it. [These people started the Robot Wars competition, but this particular robot is designed to be peaceful, even friendly and social.] The big friendly robot is still under construction, so I decided to assemble Evolution's cute smaller modular robot to see how it works.
It took an afternoon to put together the lego-like parts to build the Evolution robot kit. It included a bunch of aluminum beams, lots of ingenious modular plastic connectors, nuts and bolts, wheels and motors, bump and IR distance sensors, and some awesome ultra-heavy-duty velcro.
The IR distance sensors were somewhat tricky to attach, had flakey connectors, and don't all work; but everything else was quite straightforward and easy. I haven't had so much fun with legos in years!
We're using a laptop recommended and preconfigured by Evolution: an IBM Thinkpad type 2612-1bu.
Most interesting is the software, which runs on Linux. Evolution has developed a "robotic operating system", which is written in C++ and configured with XML.
It has a visual behavior programming language for connecting together boxes (representing software behavior modules) with wires (representing data types of input and output parameters).
It's kind of like the "SimAntics" language used to program The Sims, but much simpler, more general purpose, and extensible.
The behavior modules are implemented in C++ and compiled into dynamically linked libraries or built into the application. There's a C++ SDK for programming your own behavior modules, with which I've just started experimenting.
XML schema files describe the module interfaces (name, description, library, symbol, parameters, input and output ports with data types, etc). They're not standard XML-Schema, just Evolution's own special purpose behavior schema format, which is appropriate for the task.
XML behavior files assemble a bunch of modules and connect them together into high level behavior networks, which you can use to build even higher level behavior networks in a modular fashion.
There's a visual programming tool implemented in Java that lets you graphically construct networks of behavior modules, or you can simply type them in as XML in a text editor.
Unfortunately the behavior construction tool isn't integrated with the behavior execution engine, so you have to run them separately, so you can't actually edit the behaviors in place while they're running.
Other visual programming languages like SimAntics and Bounce let you edit live programs while they are running, which is extremely useful.
The software side of the Evolution robotics kit includes modules for voice synthesis and voice recognition (IBM's ViaVoice libraries), as well as video capture, some simple image processing, sensor reading, motor control, network communication, teleoperation, a simple emotion engine and animated human face, and a bunch of other stuff.
But unfortunately the source code for many of the interesting modules is not included, so if they don't do exactly what you want you have to replace them from scratch.
For example, the human face emotion animation module doesn't support texture mapped faces.
That's fine if your robot's face is Kermit the Frog, but I want to use face skins from The Sims. If Evolution decided to include more module source code with the SDK, programmers would be able to customize it more easily, instead of reinventing the wheel.
In summary, I like Evolution's modern and open architecture, and the code that I've seen so far is quite well designed and nicely written. But I'd like to see more code, please!
One of the big problems in robotics is smoothly integrating many different pieces of software and hardware, and I think they've taken a good approach to that problem. Now they have to enable developers to easily integrate many different software and hardware modules, and let them all fight it out.
802.11b works quite well, and I don't see the need for another incompatible, less powerful protocol.
But the main reason I think Bluetooth is a crock, is that it's being heavily pushed by the SAME IDIOTS PUSHING WAP, who are a bunch of unmitigated MORONS and CHARLATANS with their heads stuck firmly up their marketing asses.
I've been using the Xircom 1130-NA with my Palm m505 for several months. It works pretty well, although you should know that it attaches to the serial port and imitates a modem with a PPP server, as far as the Palm is concerned. So it's not blazingly fast or anything. But it works well, and is very portable.
You can charge the Palm and the sled at the same time, by plugging the Palm cradel charger cord into the sled. Since I got it, I've been hot-synching over the net and don't use the clumsy Palm cradel any more. However, I don't think it's as fast as hot-synching over USB, because of the serial interface.
So much for Dylan Twentty's short bright career as an unbiased technology reporter.
Now maybe he can get a job for Oracle writing for their internal newsletter, or shredding papers, or sucking off Larry Elison.
File this under "It Sounded Like a Good Idea at the Time".
-Don
California Builds a Useful Government Website
With a transaction engine and sophisticated Web technology, the state of California gets serious about the Web.
By Dylan Tweney, January 11, 2001
[...]
The site was developed under Arun Baheti, director of eGovernment for the state -- a position created by Governor Gray Davis last year. Incredibly, Baheti built the site in just 110 days, with a budget of $2 million, in time for this week's launch.
Rather than take a typical public-sector approach -- award the site construction contract to a single vendor, then let that vendor own the project from the ground up -- the governor instructed Baheti to pick a few best-of-breed technologies, then hire a consultant to help put the pieces together. That's standard practice in the private sector, but it counts as a significant innovation in the halls of the state capitol.
The result is a melange of technologies stitched together to create a strong site with an array of functionality. The site uses BroadVision for online transactions and personalization, Interwoven for content management, Verity for searching, and Broadbase for online marketing and visitor traffic analysis. Deloitte Consulting handled the integration and project management. The site is hosted on hardware at the state's high-capacity Teale Data Center.
To organize the site's information architecture, Baheti brought in a team of state librarians to come up with a meaningful information classification system and to develop the site's FAQ (frequently asked question) files. Baheti's team also took pains to ensure that the site is accessible to people with physical disabilities.
The result is a site that is remarkably effective at bringing together a host of government services and information. Carlo Grifone, a principal in the Sacramento, Calif., office of Deloitte Consulting, says that a guiding theme was the idea of "one government, one customer." In other words, visitors to the site don't particularly care which department or state agency is responsible for issuing fishing licenses -- they just want to go fishing. The site aims to help visitors find what they need without having to navigate a virtual version of the government bureaucracy.
The current site offers direct access to about a dozen state services, but many additional state departments and agencies are developing applications for the site. As these are ready, they will be plugged in to the current site infrastructure, eventually making my.ca.gov a true, single-stop California government portal.
While portals, personalization, and online transactions are old hat for commercial sites, this is the cutting edge for e-government. Let's hope other governments follow California's lead.
====
Uuuh, how about: let's hope other governments cover up their pay-offs and bribes better than California's.
The Meta-Programming Shangra-Language for which you yearn has been around for many years, and it's called Lisp.
Check out the Common Lisp Macro System, which is deeply explored in Paul Graham's free downloadable book
On Lisp.
On Lisp is a deep, wonderful, mind-expanding book, originally published by Prentice Hall.
It's earned five stars on Amazon.
The book is out of print, but fortunately thanks to Paul Graham and Alan Apt of Prentice Hall, you can now download On Lisp for free!
-Don
====
On Lisp
Synopsis:
Written by a Lisp expert, this is the most comprehensive tutorial on the advanced features of Lisp for experienced programmers. It shows how to program in the bottom-up style that is ideal for Lisp programming, and includes a unique, practical collection of Lisp programming techniques that shows how to take advantage of the language's design for highly efficient programming in a wide variety of (non-AI) applications.
KEY TOPICS: Contains comprehensive presentations of key Lisp features: functions, macros, symbols and interning, variables, scope and lexical closures; object-oriented programming, data structures, and Lisp style. For experienced Lisp programmers.
TOC:
1. The Extensible Language.
2. Functions.
3. Functional Programming.
4. Utility Functions.
5. Returning Functions.
6. Functions as Representation.
7. Macros.
8. When to Use Macros.
9. Variable Capture.
10. Other Macro Pitfalls.
11. Classic Macros.
12. Generalized Variables.
13. Computation at Compile-Time.
14. Anaphoric Macros.
15. Macros Returning Functions.
16. Macro-Defining Macros.
17. Read Macros.
18. Destructuring.
19. A Query Compiler.
20. Continuations.
21. Multiple Processes.
22. Nondeterminism.
23. Parsing with ATNs.
24. Prolog.
25. Object-Oriented Lisp.
Appendix: Packages.
Notes.
Index.
From The Publisher:
Starting in the 1980s, Lisp began to be used in several large systems, including Emacs, Autocad, and Interleaf. On Lisp explains the reasons behind Lisp's growing popularity as a mainstream programming language. On Lisp is a comprehensive study of advanced Lisp techniques, with bottom-up programming as the unifying theme. It gives the first complete description of macros and macro applications. The book also covers important subjects related to bottom-up programming, including functional programming, rapid prototyping, interactive development, and embedded languages. The final chapter takes a deeper look at object-oriented programming than previous Lisp books, showing the step-by-step construction of a working model of the Common Lisp Object System (CLOS). As well as an indispensable reference, On Lisp is a source of software. Its examples form a library of functions and macros that readers will be able to use in their own Lisp programs.
Limbaugh said he reviewed four different video games and found "no conveyance of ideas, expression, or anything else that could possibly amount to speech. The court finds that video games have more in common with board games and sports than they do with motion pictures."
Obviously Limbaugh never heard of The Sims, or read any of the stories in
The Sims Exchange,
where players have uploaded more than 50,000 families with their stories, each of which certainly qualify as free speech.
The Sims has much in common with web publishing tools, word processors, graphics editors, 3D CAD tools, storyboarding and movie production tools, all of which essentially support free speech, storytelling and public expression.
The Sims supports the expression of free speech in several ways.
You can take pictures of the scenes in the game, collect them into your family album, and write stories about them. You can create your own characters, props and scenery, construct sets with the built-in architectural tools, and direct the plot of your own story as it unfolds on the screen. You can take snapshots and write text to record your stories, and share them with other people.
What objective facts are your personal beliefs based on, or are they purely subjective? Question: How do you know that your personal beliefs are not merely a perception of knowledge than true knowledge? Answer: subject your theories to experimentation.
Have you performed any emperical experiments to determine if pie menus have an advantage over linear menus?
I'm sorry your personal belief contradicts my own emperical experience. In all the experiments I have ever done, and all the ones other people have done that I have read about, pie menus have been proven to be faster than linear menus.
Here are a few references to experiments measuring the usability of pie menus.
So it's not at all subjective or based on personal belief. The effect of Fitts' Law is quite easily measured, which should eliminate the need for resorting to the exposition of subjective personal beliefs.
Here is one such experiment that you can try for yourself (which requires Internet Explorer). Fasteroids is a free game that lets you compare pie menus with linear menus. Take the pie menu challange! Fasteroids tracks your selection speed and error rate, so you can compare pie menus and linear menus for yourself.
-Don
He had just finally released the NeXT computer. This was his big debut after such a long wait (remember the "NeVR" t-shirts?). The NeXT Computer had the best user interface in the whole world. All other user interfaces sucked in comparison. And the NeXT didn't have pie menus, therefore pie menus sucked. If you can follow that train of thought outside of the reality distortion field.
I gotta hand it to Jobs. Once he makes a decision, he sticks with it -- you gotta give him that. As far as I know, NeXT in its current incarnation as Mac OS/X still doesn't have pie menus.
-Don
"Jack Callahan and I published a paper about an experiment comparing pie menus with linear menus in 1988 (not 1984):
Callahan, J., Hopkins, D., Weiser, M. & Shneiderman, B. (1988) An empirical comparison of pie vs. linear menus. Proceedings of CHI `88, 95-100"
-Don
Wiseman, N. E., Lemke, H. U., and Hiles, J. O., "PIXIE: A New Approach to Graphical Man-Machine Communications" ,Proc. 1969 CAD Conf. Southhampton, IEE Conf. Pub. 51, p. 463
The basic idea was also mentioned in an early edition of the reference book on computer graphics:
Newman, W.M. and Sproull, R. F., Principles of Interactive Computer Graphics, 2nd. edition, McGraw-Hill, 1979, 1973
Jack Callahan and I published a paper about an experiment comparing pie menus with linear menus in 1984:
Callahan, J., Hopkins, D., Weiser, M. & Shneiderman, B. (1988) An empirical comparison of pie vs. linear menus. Proceedings of CHI `88, 95-100
Pie menus have been used in products, including Connected TV, The Sims, Unix SimCity for TCL/Tk, Maya, Habitat, Neverwinter Nights, Return to Zork, Logitech's mouse driver, UniPress Emacs, and the open source piewm window manager for X11.
Pie menus have been implemented as plug-in components for systems including NeWS, Hypercard, ScriptX, X Toolkit, Director, Flash, Asymetrix ToolBook, TCL/Tk, ActiveX, Java, Dynamic HTML Behaviors, and finally Mozilla).
-Don
Ted Selker is the IBM researcher [now at MIT Media Lab] who came up with the Trackpoint, after many years of research and development.
He called it the "Joy Button". But IBM they wouldn't go that far out with a product name. But he did get away with suggestting the slogan "So Hot We Had To Make It Red", which survived the focus groups and was printed in huge type on a two page spread ad for the Trackpoint in Time magazine.
Ted Selker even made a prototype Thinkpad with TWO trackpoints, one for each hand!!! Boy did that have a nice feel to it! Something not-very-subliminal about the appeal of a computer with two red nipples. People of all persuasions couldn't keep their hands off of it. It was one of those things that was just too good to release. I heard a rumor that IBM keeps the original prototype locked away in their secret underwater sealab, and they installed the only other pair of trackpoints on a laptop given as a gift to Bill Clinton, in exchange for special favors.
-Don
"As seen on Connected TV"!
-Don
Penny Lane's "Finger pie" was a Liverpudlian sexual reference included in the song to amuse the locals. "It was just a nice little joke for the Liverpool lads who like a bit of smut," said Paul. "For months afterwards, girls serving in local chip shops had to put up with the requests for 'fish and finger pie'."
So you can mouse ahead through a pie menus reliably, because it's the direction, not the distance that matters.
But with drop-down menus, the distance is what matters, and the direction is always the same: down (which suggests that alternative possibilities are being wasted: the other directions). It requires your full visual attention for the hand-eye feedback loop, to position the mouse over the correct target rectangle, merely as tall as the font height.
Selecting one small rectangle below your cursor requires much more attention and precision than selecting one large pie slice, each in a different direction.
Fitts' Law predicted it: the larger and closer the target, the faster and easier it is to hit. The experiments have proven it. But close-minded people are still stubbornly resistant to change, as it has always been and always will be.
-Don
But it just wasn't tractable to implemented dynamic html rendering in the ActiveX control. It might have been possible to recursively embed an Internet Explorer ActiveX control, but it just wasn't worth going down that road.
Instead I turned the problem inside-out and reimplemented pie menus inside Explorer in JavaScript (as an IE-Windows-only dynamic html behavior component), so they could take full advantage of all of the browser's features, in a well-integrated, memory-efficient way.
Unfortunately, it's unlikely that Microsoft is going to support Dynamic HTML Behavior Components on the Mac version of Internet Explorer, and unlikely but not impossible that Mozilla will support them on any platform. It's a nice way to package and re-use components implemented in scripting languages like JavaScript or VBScript (or any other language).
I'm glad the Mozilla developers have implemented pie menus using their own component technology (Chrome). It would be nice if Mozilla could some day support DHTML components on all platforms (which would give it an advantage over IE), and also nice if IE could support Chrome components on all platforms. One of those scenarios is more likely than the other, though.
The JavaScript pie menus can't shape the window in arbitrary ways like the ActiveX pie menus do, because they're running inside of the browser window, without their own windows. But they're nicely integrated into the html rendering engine, so they can take advantage of all kinds of nice features like transparency, rendering parameterized Flash files, etc.
The pie menu tracking callbacks can change dynamic html properties as well as Flash object parameters, which works well because recent versions of Flash have been integrated with Internet Explorer's HTML renderer instead of being blocked off in its own window. So the browser can draw html content on top of flash content and vice-verce, and JavaScript pie menus can integrate them both.
I don't yet know how to Mozilla pie menus are integrated with the web page and drawing engine, but I trust they've done a good thing, and I'm looking forward to trying them it and learning how it works.
-Don
Once you know the direction of the pie menu item you want, you can quickly select it without even looking at the screen, by mousing ahead. It's like using a keyboard accelerator, but without moving your hand from the mouse to the keyboard and back. The accelerated action is exactly the same as the unaccelerated action, only faster.
But selecting from a linear menu is not rehearsal for using the keyboard accelerator, because typing on the keyboard is a completely different action than selecting from the menu with the mouse, so you have twice as many actions to learn. To use the keyboard accelerator, you have to learn a completely new command that has nothing to do with the menu, and interrupts the flow of mouse actions.
It takes at least a second to move your hand between the mouse and keyboard and readjust, so it's important to provide keyboard equivalents for commands you'll be using while typing. I'm not suggesting removing keyboard accelerators when adding pie menus. Pie menus have their own built-in accelerators (mousing ahead without looking), that is extremely easy to use if you're already pointing and clicking with the mouse (which is the case with a game like The Sims, that doesn't use the keyboard very much).
Of course there's no reason why you couldn't assign traditional keyboard accelerators to individual pie menu items. The ActiveX pie menus have full support for keyboard navigation, so you can select and navigate and use all their features from the keyboard as well as the mouse.
Four item and eight item pie menus map very nicely to the arrow keys and numeric keypad. The ActiveX pie menus can automatically limit the maximum number of items per pie menu to eight, and let you page up and down through arbitrarily long menus in groups of eight items at a time, with the mouse or keyboard.
The newer JavaScript Pie Menus for Internet Explorer don't support keyboard navigation yet. Here's a description of many of the features of the older ActiveX pie menus, which are fancier but don't integrate with the web page as nicely or support dynamic HTML rendering and XML configuration like the newer Javascript pie menus.
-Don
http://catalog.com/hopkins/images/pizzatool.gif
It was written entirely in NeWS PostScript, and shipped with OpenWindows 2.0 (but with the faxing option disabled).
Ironically enough pizzatool didn't use pie menus. (There were too darn many toppings to choose from, which wouldn't have worked well on a pie menu.)
-Don
Uuuuh, Mr. Powell, it's a $70 billion debt, now. Maybe the problem is that we have an FCC chairman who's OPTIMISTIC about the future of Worldcom, and makes lame excuses saying "don't blame me for being optimistic". We blame you for being an idiot, because you're an optimistic corporate suck-up.
-Don
Lorenz, Edward N. (USA, 1917-)
and chaos theory, 971
and complex ODE, 879
and experimental math, 899
and fluid turbulence, 998
in Preface, xiii
Lorenz Equations
as giving strange attractor, 922
and history of chaos theory, 971
and Lissajous figures, 917
and weather prediction, 1178
To recap, the original poster Krapangor said: "Do I even have to mention the Lorentz system at all, everyone should know it. But he is just a physicist after all. I'm a proud owner of a Mensa membership card."
So it's obvious that Wolfram is aware of the work of Lorenz as well as the work of Lorentz, since he cites both of them in the index, spells their names correctly, and discusses their work in his book.
It's also obvious that Krapagnor should tear up his Mensa card that he's so proud of, if he can't manage correctly spell the name he drops, claiming "everyone should know it".
Krapagnor: If everyone should know the "Lorentz" system, then why can't you even spell it correctly? You should tear up your Mensa card, and learn to spell before you dismiss all physicists as fools. And please read the book before attempting to discredit it by insulting the author.
-Don
This is from the index of Wolfram's "A New Kind of Science":
Lorentz, Hendrik A. (Netherlands, 1853-1928)
and relativity theory, 1041
Lorentz contraction, 1041
Lorentz gas, 1022
Lorentz transformations, 1041, 1042
Lorentzian spaces, 1051
From the notes for Chapter 9, refereing to Page 522, History of Relativity, on page 1041:
[Mentions Galileo, Newton, Maxwell, Michelson, Morley, FitsGerald...] Already in 1904 Lorentz pointed out that Maxwell's equations are formally invariant under a so-called Lorentz transformation of space and time coordinates (see note below). [Mentions Einstein, Minkowski, Mach...]
Yet as I discussed earlier in the chapter, if a complete theory of physics is to be as simple as possible, then most things like relativity theory must in effect be derived from more basic features of the theory -- as I start to try to do in the main text of this section.
[End of quote from Wolfram's "A New Kind of Science".]
How about reading the book before dismissing it by insulting all physicists?
-Don
So have you ever heard of a widely-used product called MATHEMATICA?
Open the URL http://www.mathematica.com, notice where it redirects you to, learn about it, and see how laughably wrong and totally off-base you are in your accusations that Wolfram doesn't understand math.
Krapangor, I find it impossible to believe that you know much about math yourself, if you've never heard of Mathematica. But for you to say that Wolfram doesn't understand math -- that takes the cake! Ha ha ha!
-Don
YOU ARE NOT QUALIFIED TO COMMENT if all you've read are the reviews. So please shut up until you read the book.
For only $45 from Amazon, A New Kind of Science is physically one of the best deals I've ever seen in a book. Its size is enormous (well over 1200 pages), and the quality of the paper, binding and printing process is extremely excellent, because the high resolution illustrations required it.
"Many of the pictures in this book have a rather different character from things that are normally printed. For unlike traditional diagrams consisting of separate visible elements -- or photographs involving smooth gradiations of color -- they often for example contain hundreds of cells per inch, each in effect independently black of white. And to capure this properly required careful sheet-fed printing on paper smooth enough to avoid significant spreading of ink." ... "The book was printed on 50-pound Finch VHF paper on a sheet-fed press. It was imaged directly to plates at 2400 dpi, with halftones rendered using a 175-line screen with round dots angled at 45 degrees. The binding was Smythe sewn."
Even if you never read this book and only use it as a paper weight or prop to pick up girls, it's still the highest quality paper weight or chick magnet you'll ever find for the money. If Springer-Verlag had published A New Kind of Science, it would probably cost at least $250, be printed on cheap K-Mart toilet paper, and they wouldn't have even considered putting a fresh ribbon in the typewriter.
If you do bother reading the book before trying to write a review or refute its contents by personally attacking the author, it will certainly change your view of the universe.
-Don
PS: Here's a dynamic cellular automata snowflake generator that I wrote a while ago, inspired by Margolis and Toffoli's "Cellular Automata Machines: A New Environment for Modeling" [MIT Press, 1987]:
AethOTron: http://www.DonHopkins.com/AethOTron
-Don
http://www.intel.com/research/mrl/research/opencv
-Don
====
This library is mainly aimed at real time computer vision. Some example areas would be Human-Computer Interaction (HCI); Object Identification, Segmentation and Recognition; Face Recognition; Gesture Recognition; Motion Tracking, Ego Motion, Motion Understanding; Structure From Motion (SFM); and Mobile Robotics.
Library Areas:
The areas covered by this library are
Chapter Contents
Image functions: Creation, allocation, destruction of images. Fast pixel access macros.
Data Structures: Static types and dynamic storage. Contour Processing: Finding, displaying, manipulation, and simplification of image contours.
Geometry: Line and ellipse fitting. Convex hull. Contour analysis.
Features: 1st & 2nd Image Derivatives. Lines: Canny, Hough. Corners: Finding, tracking.
Image Statistics: In region of interest: Count, Mean, STD, Min, Max, Norm, Moments, Hu Moments.
Image Pyramids: Power of 2. Color/texture segmentation.
Morphology: Erode, dilate, open, close. Gradient, top-hat, black-hat.
Background Differencing: Accumulate images and squared images. Running averages.
Distance Transform: Distance Transform Thresholding Binary, inverse binary, truncated, to zero, to zero inverse.
Flood Fill: 4 and 8 connected
Camera Calibration: Intrinsic and extrinsic, Rodrigues, un-distortion, Finding checkerboard calibration pattern
View Morphing: 8 point algorithm, Epipolar alignment of images
Motion Templates: Overlaying silhouettes: motion history image, gradient and weighted global motion.
CAMSHIFT: Mean shift algorithm and variant
Active Contours: Snakes
Optical Flow: HS, L-K, BM and L-K in pyramid.
Estimators: Kalman and Condensation.
POSIT: 6DOF model based estimate from 1 2D view.
Histogram (recognition): Manipulation, comparison, backprojection. Earth Mover's Distance (EMD).
Gesture Recognition: Stereo based: Finding hand, hand mask. Image homography, bounding box.
Matrix: Matrix Math: SVD, inverse, cross-product, Mahalanobis, eigen values and vectors. Perspective projection.
Eigen Objects: Calc Cov Matrix, Calc Eigen objects, decomp. coeffs. Decomposition and projection.
embedded HMMs: Create, destroy, observation vectors, DCT, Viterbi Segmentation, training and test.
Drawing Primatives: Line, rectangle, circle, ellipse, polygon. Text on images.
System Functions: Load optimized code. Get processor info.
Utility: Abs difference. Template matching. Pixel order<->Plane order. Convert Scale. Sampling lines. Bi-linear interpolation. ArcTan, sqrt, inv-sqrt, reciprocal. CartToPolar, Exp, Log. Random numbs. Set image. K-Means.
Intel® Image Processing Library (included in OpenCV WinOS download):
Image creation and access (same image header used for both libraries).
Image arithmetic and logic operations.
Image filtering.
Linear image transformation.
Image morphology.
Color space conversion.
Image histogram and thresholding.
Geometric transformation (zoom-decimate, rotate, mirror, shear, warp, perspective transform, affine transform).
Image moments.
Demo Overview (apps that come with the library)
Matlab Camera Calibration Toolbox tutorial
Automatic camera calibration filter
Color tracker/face tracker
Condensation filter fracker
Face recognition using embedded HMMs
Kalman filter tracker
Lucas-Kanade optical flow in an image pyramid
User Contributed Utilities
Windows* Specific
How to find any Direct Show* camera driver with the CAMSHIFT demo
Matrox Meteor* Direct Show capture filter
Linux* Specific
C Code, Non-Specific
BMP* to IPL file reader/writer
Finding the mean and covariance of data sets on disk
====
They'll have credit card swipers, bill and coin slots, and even cigarettes dispensers.
-Don
I'm working on a robot project with the Stupid Fun Club, and we're going to build the Evolution laptop into a much bigger heavier duty robot body, to control it. [These people started the Robot Wars competition, but this particular robot is designed to be peaceful, even friendly and social.] The big friendly robot is still under construction, so I decided to assemble Evolution's cute smaller modular robot to see how it works.
It took an afternoon to put together the lego-like parts to build the Evolution robot kit. It included a bunch of aluminum beams, lots of ingenious modular plastic connectors, nuts and bolts, wheels and motors, bump and IR distance sensors, and some awesome ultra-heavy-duty velcro.
The IR distance sensors were somewhat tricky to attach, had flakey connectors, and don't all work; but everything else was quite straightforward and easy. I haven't had so much fun with legos in years!
We're using a laptop recommended and preconfigured by Evolution: an IBM Thinkpad type 2612-1bu. Most interesting is the software, which runs on Linux. Evolution has developed a "robotic operating system", which is written in C++ and configured with XML.
It has a visual behavior programming language for connecting together boxes (representing software behavior modules) with wires (representing data types of input and output parameters).
It's kind of like the "SimAntics" language used to program The Sims, but much simpler, more general purpose, and extensible.
The behavior modules are implemented in C++ and compiled into dynamically linked libraries or built into the application. There's a C++ SDK for programming your own behavior modules, with which I've just started experimenting.
XML schema files describe the module interfaces (name, description, library, symbol, parameters, input and output ports with data types, etc). They're not standard XML-Schema, just Evolution's own special purpose behavior schema format, which is appropriate for the task.
XML behavior files assemble a bunch of modules and connect them together into high level behavior networks, which you can use to build even higher level behavior networks in a modular fashion.
There's a visual programming tool implemented in Java that lets you graphically construct networks of behavior modules, or you can simply type them in as XML in a text editor.
Unfortunately the behavior construction tool isn't integrated with the behavior execution engine, so you have to run them separately, so you can't actually edit the behaviors in place while they're running.
Other visual programming languages like SimAntics and Bounce let you edit live programs while they are running, which is extremely useful.
The software side of the Evolution robotics kit includes modules for voice synthesis and voice recognition (IBM's ViaVoice libraries), as well as video capture, some simple image processing, sensor reading, motor control, network communication, teleoperation, a simple emotion engine and animated human face, and a bunch of other stuff.
But unfortunately the source code for many of the interesting modules is not included, so if they don't do exactly what you want you have to replace them from scratch.
For example, the human face emotion animation module doesn't support texture mapped faces. That's fine if your robot's face is Kermit the Frog, but I want to use face skins from The Sims. If Evolution decided to include more module source code with the SDK, programmers would be able to customize it more easily, instead of reinventing the wheel.
In summary, I like Evolution's modern and open architecture, and the code that I've seen so far is quite well designed and nicely written. But I'd like to see more code, please! One of the big problems in robotics is smoothly integrating many different pieces of software and hardware, and I think they've taken a good approach to that problem. Now they have to enable developers to easily integrate many different software and hardware modules, and let them all fight it out.
-Don
802.11b works quite well, and I don't see the need for another incompatible, less powerful protocol.
But the main reason I think Bluetooth is a crock, is that it's being heavily pushed by the SAME IDIOTS PUSHING WAP, who are a bunch of unmitigated MORONS and CHARLATANS with their heads stuck firmly up their marketing asses.
-Don
You can charge the Palm and the sled at the same time, by plugging the Palm cradel charger cord into the sled. Since I got it, I've been hot-synching over the net and don't use the clumsy Palm cradel any more. However, I don't think it's as fast as hot-synching over USB, because of the serial interface.
-Don
Now maybe he can get a job for Oracle writing for their internal newsletter, or shredding papers, or sucking off Larry Elison.
File this under "It Sounded Like a Good Idea at the Time".
-Don
California Builds a Useful Government Website
With a transaction engine and sophisticated Web technology, the state of California gets serious about the Web.
By Dylan Tweney, January 11, 2001
[...]
The site was developed under Arun Baheti, director of eGovernment for the state -- a position created by Governor Gray Davis last year. Incredibly, Baheti built the site in just 110 days, with a budget of $2 million, in time for this week's launch.
Rather than take a typical public-sector approach -- award the site construction contract to a single vendor, then let that vendor own the project from the ground up -- the governor instructed Baheti to pick a few best-of-breed technologies, then hire a consultant to help put the pieces together. That's standard practice in the private sector, but it counts as a significant innovation in the halls of the state capitol.
The result is a melange of technologies stitched together to create a strong site with an array of functionality. The site uses BroadVision for online transactions and personalization, Interwoven for content management, Verity for searching, and Broadbase for online marketing and visitor traffic analysis. Deloitte Consulting handled the integration and project management. The site is hosted on hardware at the state's high-capacity Teale Data Center.
To organize the site's information architecture, Baheti brought in a team of state librarians to come up with a meaningful information classification system and to develop the site's FAQ (frequently asked question) files. Baheti's team also took pains to ensure that the site is accessible to people with physical disabilities.
The result is a site that is remarkably effective at bringing together a host of government services and information. Carlo Grifone, a principal in the Sacramento, Calif., office of Deloitte Consulting, says that a guiding theme was the idea of "one government, one customer." In other words, visitors to the site don't particularly care which department or state agency is responsible for issuing fishing licenses -- they just want to go fishing. The site aims to help visitors find what they need without having to navigate a virtual version of the government bureaucracy.
The current site offers direct access to about a dozen state services, but many additional state departments and agencies are developing applications for the site. As these are ready, they will be plugged in to the current site infrastructure, eventually making my.ca.gov a true, single-stop California government portal.
While portals, personalization, and online transactions are old hat for commercial sites, this is the cutting edge for e-government. Let's hope other governments follow California's lead.
====
Uuuh, how about: let's hope other governments cover up their pay-offs and bribes better than California's.
-Don
Check out the Common Lisp Macro System, which is deeply explored in Paul Graham's free downloadable book On Lisp.
On Lisp is a deep, wonderful, mind-expanding book, originally published by Prentice Hall. It's earned five stars on Amazon. The book is out of print, but fortunately thanks to Paul Graham and Alan Apt of Prentice Hall, you can now download On Lisp for free !
-Don
====
On Lisp
Synopsis: Written by a Lisp expert, this is the most comprehensive tutorial on the advanced features of Lisp for experienced programmers. It shows how to program in the bottom-up style that is ideal for Lisp programming, and includes a unique, practical collection of Lisp programming techniques that shows how to take advantage of the language's design for highly efficient programming in a wide variety of (non-AI) applications.
KEY TOPICS: Contains comprehensive presentations of key Lisp features: functions, macros, symbols and interning, variables, scope and lexical closures; object-oriented programming, data structures, and Lisp style. For experienced Lisp programmers.
TOC:
1. The Extensible Language.
2. Functions.
3. Functional Programming.
4. Utility Functions.
5. Returning Functions.
6. Functions as Representation.
7. Macros.
8. When to Use Macros.
9. Variable Capture.
10. Other Macro Pitfalls.
11. Classic Macros.
12. Generalized Variables.
13. Computation at Compile-Time.
14. Anaphoric Macros.
15. Macros Returning Functions.
16. Macro-Defining Macros.
17. Read Macros.
18. Destructuring.
19. A Query Compiler.
20. Continuations.
21. Multiple Processes.
22. Nondeterminism.
23. Parsing with ATNs.
24. Prolog.
25. Object-Oriented Lisp.
Appendix: Packages.
Notes.
Index.
From The Publisher: Starting in the 1980s, Lisp began to be used in several large systems, including Emacs, Autocad, and Interleaf. On Lisp explains the reasons behind Lisp's growing popularity as a mainstream programming language. On Lisp is a comprehensive study of advanced Lisp techniques, with bottom-up programming as the unifying theme. It gives the first complete description of macros and macro applications. The book also covers important subjects related to bottom-up programming, including functional programming, rapid prototyping, interactive development, and embedded languages. The final chapter takes a deeper look at object-oriented programming than previous Lisp books, showing the step-by-step construction of a working model of the Common Lisp Object System (CLOS). As well as an indispensable reference, On Lisp is a source of software. Its examples form a library of functions and macros that readers will be able to use in their own Lisp programs.
====
Limbaugh said he reviewed four different video games and found "no conveyance of ideas, expression, or anything else that could possibly amount to speech. The court finds that video games have more in common with board games and sports than they do with motion pictures."
Obviously Limbaugh never heard of The Sims, or read any of the stories in The Sims Exchange, where players have uploaded more than 50,000 families with their stories, each of which certainly qualify as free speech.
The Sims has much in common with web publishing tools, word processors, graphics editors, 3D CAD tools, storyboarding and movie production tools, all of which essentially support free speech, storytelling and public expression.
The Sims supports the expression of free speech in several ways. You can take pictures of the scenes in the game, collect them into your family album, and write stories about them. You can create your own characters, props and scenery, construct sets with the built-in architectural tools, and direct the plot of your own story as it unfolds on the screen. You can take snapshots and write text to record your stories, and share them with other people.
The Sims lets people of all ages produce illustrated web pages about their house, family, and an album telling their story. It lets you upload your web pages and games to The Sims web site, were many other people can read the stories, and even download and play with the families.
The Sims is an example of a video game that essentially supports free speech, which should clearly be protected by the Constitution.
-Don