Domain: parc.com
Stories and comments across the archive that link to parc.com.
Stories · 16
-
Tool Shows the Arguments Behind Wikipedia Entries
Al writes "A team of researchers at the Palo Alto Research Center have created a tool that shows how much argument has gone into crafting an entry. Ed Chi, a senior research scientist for augmented social cognition at PARC, obtained access to Wikipedia edit data and used it to build a tool that shows whether users have fought over the accuracy of a page by rapidly re-editing each other's changes. Experiments suggest that the method provides a better measure of 'controversy' than simply having Wikipedia editors add a warning to a suspect page. Their software, called Wikidashboard, serves up a Wikipedia entry, but adds an info-graphic revealing who has been editing it and how often it has been reedited. Of course, this doesn't reveal whether a Wikipedia entry is truly accurate, but it might at least highlight an underlying bias or vested interest." -
Self-Recycling Paper
fermion writes "Xerox is reported to be working on some interesting forms of digital paper. The New York Times reports a 16 hour reusable paper. This system uses a coated paper and special ink to produce a copy that will fade over 16 hours, or sooner if the paper is put back in the copy tray. It can then be reused for a new copy, up to 10 times. According to the article, the rational for this is that paper is no longer used to store information, but merely to temporarily display it. The research suggest that in the typical office many copies end up in the recycle bin by the end of the day. The main obstacle to commercialization seems to be the question of whether people need this product. Will people have digital displays that will take the place of paper? Will something radically different from plain paper, but with competitive costs and characteristics, become popular? Xerox itself is working on something called gyricon, a system of tiny bichromal beads encased between sheets of plastics. Evidently the beads can be set electrically to either reflect of absorb light, thus allowing images to be generated at will. According to the page, the images can be set by a printer or a hand held wand. The 'paper' could even be combined with electronics to create a flexible display. So, /., where is our display technology headed? Coated conventional paper? Plastic reprintable paper? Glasses with heads up displays and wireless data feed?" -
Webcam Jigsaw Solver in 200 Lines of Python
leighklotz writes "Jeff Breidenbach and 200 lines of Python code have brought us the Glyphsaw Puzzle solver. Hold a puzzle piece up to a webcam, and the display sgiws exactly where in the puzzle the piece belongs. The solver uses the Python Imaging Library (PIL), Numerical Python, and the PARC DataGlyph Toolkit. By the way, you can make your own DataGlyphs." -
Webcam Jigsaw Solver in 200 Lines of Python
leighklotz writes "Jeff Breidenbach and 200 lines of Python code have brought us the Glyphsaw Puzzle solver. Hold a puzzle piece up to a webcam, and the display sgiws exactly where in the puzzle the piece belongs. The solver uses the Python Imaging Library (PIL), Numerical Python, and the PARC DataGlyph Toolkit. By the way, you can make your own DataGlyphs." -
Webcam Jigsaw Solver in 200 Lines of Python
leighklotz writes "Jeff Breidenbach and 200 lines of Python code have brought us the Glyphsaw Puzzle solver. Hold a puzzle piece up to a webcam, and the display sgiws exactly where in the puzzle the piece belongs. The solver uses the Python Imaging Library (PIL), Numerical Python, and the PARC DataGlyph Toolkit. By the way, you can make your own DataGlyphs." -
Webcam Jigsaw Solver in 200 Lines of Python
leighklotz writes "Jeff Breidenbach and 200 lines of Python code have brought us the Glyphsaw Puzzle solver. Hold a puzzle piece up to a webcam, and the display sgiws exactly where in the puzzle the piece belongs. The solver uses the Python Imaging Library (PIL), Numerical Python, and the PARC DataGlyph Toolkit. By the way, you can make your own DataGlyphs." -
PARC's New Networking Architecture
-
PARC's New Networking Architecture
-
Block Spam Bots With Free CAPTCHA Service
Chirag Mehta writes "I just released a freeware service called BotBlock (barebones demo) that lets site owners copy/paste a few lines of PHP code and insert a CAPTCHA image-verification system into any web form. The amount of form spamming by bots is on a rise. While remedies exist for MT blogs, a more efficient solution is to use image-verification or text-identification. Used for a while by sites like Yahoo! (scroll to bottom), Hotmail and patented in 2001 by AltaVista, CAPTCHAs are now being used more widely. PARC also came up with two algorithms Baffletext and Pessimal Print. The technology always existed, but until now required the site owners to install image libraries and understand how to generate images that cannot be OCR'ed. With BotBlock it is like inserting a page counter." -
Block Spam Bots With Free CAPTCHA Service
Chirag Mehta writes "I just released a freeware service called BotBlock (barebones demo) that lets site owners copy/paste a few lines of PHP code and insert a CAPTCHA image-verification system into any web form. The amount of form spamming by bots is on a rise. While remedies exist for MT blogs, a more efficient solution is to use image-verification or text-identification. Used for a while by sites like Yahoo! (scroll to bottom), Hotmail and patented in 2001 by AltaVista, CAPTCHAs are now being used more widely. PARC also came up with two algorithms Baffletext and Pessimal Print. The technology always existed, but until now required the site owners to install image libraries and understand how to generate images that cannot be OCR'ed. With BotBlock it is like inserting a page counter." -
PARC's Popout Prism Aids Web Navigation
sulo writes "Popout Prism is a Web Browser that reduces the amount of time users end looking for information in Web pages. By creating visual "popouts" that emphasize critical elements in Web pages, Popout Prism draws users' attention to the right information." Not a very complicated idea, but one that could be useful. -
Play GNU Chess On Your Scanner
leighklotz writes "Debian developer and Internet Mail Archive founder Jeff Breidenbach of PARC has made GlyphChess, a chess-playing copier using Python, GNU Chess and DataGlyphs attached to the bottom of the pieces. DataGlyphs are cool 2D barcodes made out of / and \ marks for ones and zeros that use the coding from CDs for error coding. If you don't happen to have a Xerox machine at home, it also works with SANE..." -
Play GNU Chess On Your Scanner
leighklotz writes "Debian developer and Internet Mail Archive founder Jeff Breidenbach of PARC has made GlyphChess, a chess-playing copier using Python, GNU Chess and DataGlyphs attached to the bottom of the pieces. DataGlyphs are cool 2D barcodes made out of / and \ marks for ones and zeros that use the coding from CDs for error coding. If you don't happen to have a Xerox machine at home, it also works with SANE..." -
Play GNU Chess On Your Scanner
leighklotz writes "Debian developer and Internet Mail Archive founder Jeff Breidenbach of PARC has made GlyphChess, a chess-playing copier using Python, GNU Chess and DataGlyphs attached to the bottom of the pieces. DataGlyphs are cool 2D barcodes made out of / and \ marks for ones and zeros that use the coding from CDs for error coding. If you don't happen to have a Xerox machine at home, it also works with SANE..." -
Xerox Alto Computer 30th Anniversary
aheath writes "The New York Times has a story about the 30th anniversary of the Xerox Alto computer: How Digital Pioneers Put the 'Personal' in PC's. According to the PARC Factsheet "The Alto Computer (1973/1980) included the Graphical User Interface (GUI), WYSIWYG editing, bit-mapped display, overlapping windows, and the first commercial use of the mouse." The concepts prototyped in the Xerox Alto contributed to the development of the Xerox Star, the Apple Lisa, the Apple Macintosh and Microsoft Windows 1.0." -
Aspect-Oriented Programming with AspectJ
Verity Stob writes "There is a turning point in the emergence of a programming methodology. It doesn't matter how big and popular the website is, nor how many papers have been published in the ACM journals or development magazines, nor even whether the first conferences have been a sell-out. A methodology hasn't made really made it until somebody has published a Proper Book. With Aspect-Oriented Programming with AspectJ author Ivan Kiselev is bidding to drag AOP into the mainstream. He is motivated, he says in his introduction, by the recollection of the 25 odd years it took for the object-oriented concept to spread from its Simula origins in frosty Norway to being the everyday tool of Joe Coder. He aims to prevent this delay happening to AOP." Read on for Verity Stob's review of Kiselev's book. Aspect-Oriented Programming with AspectJ author Ivan Kiselev pages 274 publisher SAMS rating Excellent reviewer Verity Stob ISBN 0672324105 summary Introduction to a new programming technique using an extension to JavaHe has divided the book into four parts. Part I provides a brief sketch of AOP and introduces its concepts. AOP builds on OOP, asserting that we need a new programming entity called, wait for it, an aspect. Mr Kiselev's explanation of aspects reminded me of that bit in The Hitchhiker's Guide to the Galaxy when the planet Golgafrincham divided its population into A types (who were the leaders, the scientists and the great artists), the C types (who were the people who did all the actual making of things and doing of things), and the B types, who comprised everybody left over: telephone sanitizers, advertising account executives and hairdressers. As I understand Mr Kiselev, the AOP view of things is that objects and classes (A type thinkers) and low-level procedures and APIs (C type doers) can be nicely encapsulated using traditional components. But aspects, software's little hairdressers, get their fingers into everything, and until now there has been no way to encapsulate them. This of course is what AOP in general and specifically the AspectJ superset of the Java language set out to do.
AspectJ's eponymous aspects are constructs not unlike ordinary classes. Mr Kiselev has not resisted the temptation to make an aspect Hello World example, and it looks reassuringly so-whatish:
package intro;
import java.io.*;
public aspect HelloWorldA
{
public static void main(String args[])
{
System.out.println(Hello, world!);
}
}Mr Kiselev then lays out his stall of New Things. A join point is any point in execution flow that AspectJ can identify and -- to get slightly ahead of ourselves -- execute some extra code. The most frequently used kind of join point being the call to a method. Pointcuts specify collections of join points; as a regular expression is to an instance of matched text, so a pointcut is to a matching join point. An advice (with horrid plural 'advices') is the code to be executed when a given pointcut is matched. If you are familiar with Eiffel's pre- and post-conditions, then you'll understand if I say that it is common for advices to run in the same way, topping and/or tailing the execution of a method. The differences are that aspects are specified from outside the method without touching the method or its class's code, and that aspects can be applied to multiple methods in one go. Mr Kiselev concludes this section of the book with a few simplistic examples of 'here is class A, here is class B' kind.
In Part II Mr Kiselev rolls up his sleeves and takes us through an extended, realistic example. I did wonder if perhaps it weren't a wee bit too realistic, as it is a miniature website application for news story submission and reading -- sort of Slashdot Ultralite -- all done using JSP and a MySQL database. Just explaining this setup, without even using any AspectJ, consumes a 15-page chapter. Since I am a C++ programmer who has not had any contact with JSP, I was initially anxious that I might not be able to follow this. However, recalling that www.[name withheld].com, the clumsiest, ugliest corporate website on the Internet, is programmed in JSP, I reasoned that if the dolts that programmed that site could understand JSP then it couldn't be very hard. So it proved.
The first example comprises adding password protection to the application. This is achieved by adding an advice that intercepts calls to doStartTag() methods. The advice can test if the user is logged in and, if he isn't, throw an exception that will dump him back at the login page. (Who says exceptions aren't 21st century gotos?) At this point Mr Kiselev admits that the cute 10-line implementation that he initially shows is in reality a non-starter; for one thing not all pages that must be secured define doStartTag() methods, for another the aspect can't reach an instance variable it needs to read because it is declared in protected scope. The second problem is easily overcome. AOP offers a mechanism by which extra classes can be bodged ('introduced' is the preferred verb in the AOP community) into the hierarchy as parents of existing classes. He uses this to add an accessor method for the field in question. The other problem is not so neatly smothered, and it is somewhat ruefully that Mr Kiselev produces his final, two-page solution. But I think that it is greatly to Mr K's credit that he does this - it tastes like programming in the real world as I have experienced it.
For the rest of Part II, Mr K demonstrates other applications of AOP using the AspectNews code. This includes Eiffelish design-by-contract stuff, improved exception handling, various debugging and tuning techniques (specifically logging, tracing and profiling) and a chapter on runtime improvements - stream buffering, database connection pooling and result caching - which show the AOP way to do things, usually where I would expect to be putting in proxy classes.
In part III we get down and dirty with the AspectJ language. This is the part where the book explains the obscure stuff: how to make a pointcut that picks up object preinitialization, or make an advice that goes off only when you are exiting a method on the back of an exception. I skimmed this bit - I guess it will become vital when I start using AspectJ in earnest. It looked good and clear on a flick through. A brief part IV contains some patterns, to give one a start when engaging AspectJ in earnest. Apparently it is horribly easy to create infinitely recursive situations, so if you here a faint popping sound from your machine it will be the stack colliding with the heap. There are seven appendices, supplying such things as a summary of the API in AspectJ's packages and hints on obtaining and using the Open Source supplementary tools mentioned in the book (Tomcat JSP container, MySQL database and Ant make replacement). AspectJ itself, now escaped from Xerox PARC, can be downloaded from the Eclipse website.
Complaints? None really. Oh all right, here's a nitpicklette because it's you: at page 75 Mr Kiselev adopts the irritating Internet habit of writing 'loosing' when he means 'losing'. Note to publisher SAMS proofreaders: do I win 25 cents?
For the rest, this is a lucid and readable book that describes the Next Big Methodology. I'm a bit alarmed at the prospect of squeezing new actions into the cracks of existing code, but I dare say I'll grow to love it.
A word of warning to the eager: since this technology is currently implemented as a species of preprocessor that relies on having all the source code available at once, so it is rather slow and probably isn't going into production shops for a while. There again, I seem to remember the comparable Cfront C++ compiler doing rather well, before we had platform-native C++ compilers.
And to the sceptics: if you think you can ignore AOP, don't forget the fate of the A and C type inhabitants of Golgafrincham, who having sent their B type telephone sanitizers into exile were all wiped out by a germ caught from a particularly dirty telephone.
You can purchase Aspect-Oriented Programming with AspectJ from bn.com. Slashdot welcomes readers' book reviews -- to see your own review here, read the book review guidelines, then visit the submission page.