Apr 2002
Tue, 30 Apr 2002
Sam Ruby - another great article
Sam Ruby says, "Since the REST gods have yet to smite me, I figured I would tempt fate with a little essay: Google's Genius."
[Sam Ruby]
I'm not sure what the folks like Sam on the inside of the SOAP/REST debate think of my assertion that SOAP can participate in HTTP GET transactions just as readily as any other architecture. I understand that it's not part of the spec, so people may ignore it for that reason. Still, it's a useful idiom.
Posted at: 23:32 | permalink
Goodbye April, Hello May
I'm finishing out the month tonight with over 5000 visitors for the month of April. I'd like to give a big thank you to everyone that helped make this possible including the folks at google, Dave Winer, Sam Ruby, Ugo Cei, Mark Pilgrim, Chris Wenham, LM Orchard, Joe Gregorio, Jeff Zapotoczny, and Bryan Mills. Let's hope May brings even bigger and better developments!
Posted at: 23:22 | permalink
JBoss 3.0 - smokin' in the boys room!
I managed to get jboss 3.0 RC1 installed with JDK 1.4 on mandrake linux 8.2 tonight. JBoss 3.0 smokes. These guys are absolutely going to kill BEA. If I worked at BEA right now, I'd be looking for a job. Outside of linux, it's the most impressive piece of opensource I've seen to date. Install and config are smooth. That bodes well for the future of J2EE development. Cool. Now, I've got my stable platform in place to start doing my web services behind my swing client. Public release to follow soon thereafter.
Posted at: 23:17 | permalink
Back on postfix again
After spending a couple of months testing CommuniGate Pro, I am happy to report that I've got my mail server back on postfix again. Communigate's a great product but I couldn't justify the cost for a little one man show like this. Besides, I like the fact that postfix with IMAP is so lightweight and quick. My friends will all be thrilled not to have to suffer through the header messages that the Communigate trial was putting on all my inbound and outbound mail. I'm glad to see them go too.
Posted at: 21:06 | permalink
Ad hominem usage panel questioned
Bob Phillips asks, "who's the usage panel" that decided how ad hominem should be used?
Posted at: 20:43 | permalink
Userland has worms
Disinfotainment has some interesting commentary on Userland's approach to public relations (PR). I don't want to make matters worse by spreading any misinformation. However, I believe that Userland would be better served by:
- being upfront about admitting it's problems
- apologizing to customers
- putting all their effort into fixing them and insuring that they don't happen again
Two final comments:
- I have used google since they had a publicly available server (was that 1998?). I have had my default page in the browser on every machine that I use set to google since around that time. I have never accessed google and gotten a 404 or any other error. Now that defines professionalism.
- Is it revealing to make a comparison between Userland's approach to the criticism directed at it in the last few days and Microsoft's approach to the antitrust trial? I think so.
Finally, the latest worm announcement seems interesting for the following reason:
Though this worm is just now getting attention in the media, we have had the patches available for our customers on our website and through Red Hat Network since September 2000. Customers who have kept their systems up to date are not impacted.
No backup server? Yikes. Full disclosure: I am a paying Userland customer.
Posted at: 12:36 | permalink
Isn't slashdot divine?
It's no small irony to me that Flip Filipowski's company, Divine, got slashdotted today. And then their webserver fell over only 15 minutes into it. I looked at the load size for http://www.divine.com/ yesterday. It's over 600KB! I used to work for Flip's previous company, Platinum Technology. It seems the strategy here is merely to do this as a means to thin out the employee pool without having to do it the hard way. This probably has less detrimental impact on morale than a layoff would. I predict this is only the first futile move on the road to another acquisition by Computer Associates (CA) or the like. I've been through that twice. Run for the hills.
Posted at: 10:14 | permalink
Big problems in userland
I couldn't get to subhonker6 again this morning, it was dead yesterday morning, and half the weekend. I'm gonna look at movable type soon too. Despite Dave Winer's assertions that you can host the site without Userland's server, and the fact that I'm doing exactly that, my page still hits subhonker6, I assume because of the static sites image.
I'm beginning to agree with a lot of the folks making noise about the bugs in Userland's stuff, Radio in particular. I notice that the discussion group at radio.userland.com now has quite a few entries that have several reads but no replies. When people come to realize that the product is not well-documented, they, like me, resort to the discusion group. Unfortunately, at least one of them has had to resort to changing his posts to something ridiculous like this. I haven't resorted to that yet but I can't blame the guy, he's getting responses. My post, however, goes unanswered.
Userland's approach of not documenting the more complex parts of the product because they're afraid some newbie will hurt themselves leaves a lot to be desired, IMHO. It's obvious that the audience for the product is a lot broader than that now. I appreciate Dave Winer's creativity and forward-vision; however, the day to day running of the company is probably better left to a bean-counting-organizational-control-freak.
Posted at: 06:26 | permalink
Mon, 29 Apr 2002
NY Times continuing story on mentally ill
Voiceless, Defenseless and a Source of Cash. A Times investigation found that adult homes for the mentally ill in New York have become magnets for money-making schemes that exploit the residents. By Clifford J. Levy. [New York Times: NYT HomePage]
Posted at: 22:23 | permalink
Sam Ruby notices Google issues
I'm glad to see that I'm not the only one that noticed the anomalies with Google. Sam Ruby noticed them too:
Google seems to have reindexed recently. Inexplicably, Simon Fell is no longer related (I disagree). Meanwhile, my google ranks generally are improving.
[Sam Ruby]Posted at: 20:21 | permalink
Ford's OK with me
From Loebrich.org via News Is Free:
Former President Ford is siding with those who want to allow cloning for medical research, saying the effort holds "enormous potential" for treating an array of diseases. [AP]![]()
Posted at: 16:01 | permalink
Sam Ruby on the Flash Remoting Announcement
Supporting both object-based RPC access and XML document processing (in the form of ActionScript, XML, and DOM), Macromedia Flash Remoting enables Macromedia Flash to exchange data with remote services, including ColdFusion components and pages, EJBs, Java classes, and .NET components and pages. [Sam Ruby]
Posted at: 08:41 | permalink
Sonic Foundry 6.0 free public beta
From Harmony Central: Sound Forge 6.0 Announced, Beta Released (04/12) Sonic Foundry is offering a preview of the next version of Sound Forge with a free public beta version that you can download. [Harmony Central]
Posted at: 06:41 | permalink
Ongoing competition in B2B e-commerce
MSA MetalSite Setting Up Asset Sales [33metalproducing.com]
Posted at: 06:32 | permalink
Treatment of mentally ill worse than 1800's?
One thing I've always liked about the NY Times is that after they discover wrongdoing, they continue to hammer away day after day. Here's the second (to the best of my knowledge) installment in their thread on Seaport Manor. This one appears to be even more disturbing than the first. Here, Life Is Squalor and Chaos. A Times investigation shows that Seaport Manor, an adult home for the mentally ill in Brooklyn, is gripped by drug abuse, loan-sharking, prostitution and violence. By Clifford J. Levy. [New York Times: NYT HomePage]
Posted at: 06:29 | permalink
Technology Compensation Drops
Compensation Is Down in Technology Land. Shrinking bonuses and underwater stock options have contributed to the first drop in technology workers' pay in at least five years. By Chris Gaither. [New York Times: Technology]
Posted at: 06:20 | permalink
Sun, 28 Apr 2002
Sharp Zaurus Mini-Review
I was tooling around in Staples last night when I noticed that they had just gotten a fresh Sharp Zaurus put out on display. This is the one with the color screen, pen and keyboard input, running linux. When I read the early reviews of this device, I was skeptical about what could be done on a Palm sized device with embedded linux. Well, I'm happy to report that my skepticism was unfounded. This thing is hinting at what the oqo could be, should be, would be; if it has the kind of design wizardry that sharp has put into this device.
First of all, the screen is, well, sharp. Very sharp. Nextly, the thumb keyboard is actually usable, and the slick slider design doesn't compromise the form factor of the device. My perception was that the form factor's about the same as a Visor Edge, meaning thin, extremely thin, and light too. The machine responded quickly to all of my inputs whether I was using the keyboard or the stylus. Video performance on the included asteroids game was admirable. In fact, so admirable that I couldn't seem to keep the ship intact for more than one shot at the asteroids before I was blown to bits. Input with the stylus was very smooth in some instances, not so smooth in others. I'm accustomed to the graffiti system on Palm so the keystrokes that I used didn't translate 100%. The majority worked but the ones that are a bit odd on graffiti didn't work on the Zaurus. I'd probably have to study the manual to comprehend the differences.
This device is also representative of the new range of devices that go way beyond what original PDA designs were capable of in terms of handling complex applications. The linux variant that this device ships with seems to have taken a lot of the rough edges out of typical X-windows-on-linux GUI applications. That's a huge step forward for linux here as this device is now very competitive with, if not superior to, current Pocket PC and Palm offerings. I'd be curious about the development platform for the simple reason that various efforts to enable application development for these devices have been very complex (Sun's Java effort comes to mind) and reducing that complexity for developers, IMHO, would do a lot to further adoption of the platform.
Quoting Sharp's FAQ:
The Sharp SL-5xxx series Personal Mobile Tool is powered by Embedix Plus PDA and the Qtopia. Embedix Plus integrates Embedix Linux from Lineo Inc, Qt/Embedded GUI application framework from Trolltech, Opera web browser from Opera Software and Jeode JVM from Insignia Solutions. Trolltech also provides Qtopia, the user interface and application suite for the Sharp SL-5xxx series.
The machine was priced at $499 which is reasonable considering it's power. However, I already have a Kyocera smart phone so another PDA's a bit ridiculous, at least the wife would think so. ;->
Posted at: 21:55 | permalink
Book Review: World Without Secrets: Business, Crime and Privacy in the Age of Ubiquitous Computing
Talk in Your Sleep? Is the Radio Listening?. A new book by Richard Hunter, "World Without Secrets: Business, Crime and Privacy in the Age of Ubiquitous Computing," reminds us that the technologies of the 90's are still being deployed rapidly. By William J. Holstein. [New York Times: Business]
Posted at: 00:42 | permalink
Sat, 27 Apr 2002
For mentally ill, death and misery
For Mentally Ill, Death and Misery. A Times investigation shows that many of the private homes for the mentally ill in New York City have devolved into places that resemble the state institutions they replaced. By Clifford J. Levy. [New York Times: NYT HomePage]
Posted at: 22:49 | permalink
Freakin' Hilarious... circular blog-o-matic algorithm
Faisal Jawdat: "With the influx of new 'bloggers' over the course of the past few months, I've created a handy key to help newbies understand what they'll be doing."
[Scripting News]
Posted at: 22:31 | permalink
Earth to Microsoft
The NY Times article regarding Microsoft executive Christopher Jones testimony this week compels me to write.
"Consumers would be confused and frustrated if products marketed as Windows operating systems were incapable of running Windows applications because blocks of software code relied on by those applications had been removed,'' he said, in written testimony. [NY Times]
Let me rephrase this:
Consumers are confused and frustrated because products marketed as Windows operating systems are incapable of running Windows applications because blocks of software code relied on by those applications have been removed.
Did Microsoft just forget about this? Or this?
Finally, Jakob Nielsen says, "I recently wasted half an hour trying to print a report that had many screenshots. Several of the images printed only as "X." Why? Was it a problem with Windows'98? Or with Word 2000? Or was it that the vendor had yet to update the printer driver? Maybe the printer simply had too little memory. The point is: I couldn't figure it out, and I have a Ph.D. and 28 years' experience using computers. After messing with various settings, I finally succeeded in getting my printout, but this small victory was no help the next day, when we were suffered under a different piece of software." [useit.com]
And I couldn't possibly say anything that would make the point clearer than that.
Posted at: 08:32 | permalink
Fri, 26 Apr 2002
Eliminate browser printing problems with CSS
Mark Pilgrim has a really interesting article about using CSS to provide well-formed print output automagically in the browser without needing to create a separate printable page for each and every page designed for online viewing. I asked Mark to share his print.css with the community. I'm hoping it might be useful, ie. that I don't have to write my own to get the benefits that Mark describes.
Posted at: 23:20 | permalink
Netscape's still in the browser game
If my web server statistics are to be believed, Netscape isn't as far behind in the browser war as we believed. Of course, there's a certain audience that reads this web page but still, who would've guessed that the numbers would be that close.
|
Top 2 of 120 Total User Agents | |||
|---|---|---|---|
| # | Hits | User Agent | |
| 1 | 63967 | 48.09% | Internet Exploder |
| 2 | 60199 | 45.25% | Netscape |
Posted at: 06:24 | permalink
Response to Paul Prescod's Email
This morning, I got email from Paul Prescod regarding my rebuttal of his article: "I wondered if you were going to update your weblog to admit that your log was actually agreeing, not disagreeing, with my article." And my reply: I wondered if you were going to update your article to admit that SOAP does not preclude the use of HTTP GET/POST? And further clarification: My use of HTTP/GET POST with SOAP solves the problem of getting data from the SOAP service when that idiom is necessary and provides lower implementation cost than SOAP libraries provide. That is clearly the case with browser interfaces but not with full-blown GUI clients. All of the other client interfaces that I have written including Java and C# use Electric's GLUE or the Microsoft SOAP libraries, respectively. In the case of Java or C#, writing the HTTP GETs or POSTs long-hand would not produce the ease of use and low implementation cost that the SOAP client libraries provide. In the end, most people will not be concerned with the details of the SOAP/REST mud-slinging, as Joel Spolsky says, they'll be more concerned about the fact that they get an intellisense pop-up in their IDEs when they go to write their clients. Sam Ruby clarifies my point even further here. Sam's right, we use this for read-only operations where the infrastructure that we've built with Glue just makes it trivial to hook up the pieces. We're not trying to launch a satellite with the HTTP GET interface. To clarify even further, the example that I'm talking about is one in which we, the implementors, are writing both client(s) and server. Obviously, that makes it much easier to control the use of this type of interface. I am working at home on some stuff that would expose an HTTP GET interface for public consumption but that's not ready for prime time. Finally, in his posting to the comments on the article, Paul asks, "By the way, I would be very grateful if you could give me information on whether GLUE can also generate HTTP *clients*. My impression after a few minutes of playing is that it cannot and that is too bad." And my answer is: no, to the best of my knowledge there is no way to generate HTTP clients as it is a very limited form of interaction with the web service and I believe it was designed to solve the aforementioned problem with browser clients. I'd be curious what Graham Glass would have to say on the subject. Side note: now I understand what Dave Winer was talking about.
Posted at: 05:35 | permalink
Thu, 25 Apr 2002
Huge Thanks To Joe Gregorio At BitWorking
I just wanted to send out a huge thank you to Joe Gregorio at BitWorking. I came across Joe's CSS theme for Radio this evening and it answered my prayers for an easy to install, flexible, light-weight system for rendering my blog. Awesome work Joe! Don't let Joe's comment make you think it's too difficult to install. I'm about as novice as they come with regard to Radio and CSS and HTML but I had no difficulty whatsoever getting the system running. The only blip I came across in Joe's instructions was that the javascript.html file was not included in the zip and so I wasn't sure whether it was safe to copy off the site being that it was post-rendering. So I left this link pointing at Joe's site knowing that I'd figure it out eventually.
Here are the estimated download times for my site after the switch to Joe's CSS theme. From Dr. Watson:
| Object type | Number | Size in bytes |
| |||||
|
|
|
|
|
|
| |||
| HTML | 1 | 18217 | 13.29 | 7.29 | 6.07 | 5.20 | 2.28 | 0.91 |
| Images | 6 | 2993 | 2.18 | 1.20 | 1.00 | 0.86 | 0.37 | 0.15 |
| Total | 7 | 21210 | 15.47 | 8.48 | 7.07 | 6.06 | 2.65 | 1.06 |
That's quick! Extremely quick. And it still looks great. I'm psyched!
Posted at: 22:52 | permalink
Rebutting Paul Prescod
Paul Prescod: Google's Gaffe. "I take the SOAP-ifying of Google as a sign that the web services hype has now reached overdrive."
[scripting.com]
Quoting Paul's article on xml.com:
But all of these advantages are like the tiny diamonds that ring the big rock. The most important advantage is that an HTTP version is part of the Web rather than merely being behind it. This point is subtle but the most central. A piece of information is on the Web if it has a URI, accessible through a Web protocol or is embedded in an accessible document. When Google exposes its service through SOAP, it is behind the Web because the object with the web URI is the SOAP component ("endpoint"), not the actual query results. I need to go through the component to get to the data, like making a phone call through an operator instead of dialing direct. But in the XML/HTTP/URI way of thinking, every possible query result has its own URI and thus is a first-class web data object.
I hate to burst Paul's bubble, but the use of SOAP does not preclude the use of HTTP GET/POST bindings. A particular toolkit may not support this idiom, but Electric's Glue does. We use this method quite often to define services that return a string that is merely decorated in whatever fashion the client desires; in this case, HTML.
Quoting Electric's Documentation (via Google's cache):
GET POST Bindings
GLUE includes support for HTTP GET/POST web service bindings. To invoke a web service using an HTTP GET, use the syntax endpoint/method?arg1=value1&arg2=value2. To try out this feature, run the examples.publish.Publish1 server and then type the following URL into your web browser.
http://localhost:8004/glue/urn:exchange/getRate?country1=usa&country2=japan
You will see the return result displayed in your browser window. If you invoke a web service in this manner using an HTTP POST, all parameters of the form $x are automatically replaced with their corresponding actual values from the POST form.
I agree with Dave on this one. REST advocates can continue to battle. I've been using XML-RPC and SOAP since they were first available and I have produced demonstrable GUI applications in a variety of languages with usable performance characteristics and that's good enough for me.
Posted at: 07:20 | permalink
Wed, 24 Apr 2002
Rebutting Mike Deem
Mike Deem: "The people who run Microsoft could decide to delete all the source code and go home. Microsoft is a private enterprise run for fun and profit. If you take the fun and profit out of it, why bother?"
[Scripting News]
Jeez, Mike. Do you really think that we don't realize that this is just an individual manifestation of a corporate culture that is tantamount to the behavior of a spoiled toddler throwing sand in the face of his aggressor because he's not allowed to have all the sand in the Sahara?
Posted at: 20:08 | permalink
Jay Chiat, Advertising Man on a Mission, Is Dead at 70
Jay Chiat, the coolly cerebral and fiercely passionate executive who helped transform the advertising industry died Tuesday at his home in Marina del Rey. By Stuart Elliott. [New York Times: Business]
Posted at: 06:10 | permalink
Google oddities continued
I'm back at #1 on google again for "david watson" after falling off the face of google completely yesterday. Still no explanation for it. I think there's a ghost in the machine at google.
Posted at: 05:54 | permalink
Tue, 23 Apr 2002
What could Microsoft learn from the web log community? Coopetition
Webloggers cooperate
Dave Winer used the word in an essay back in 1999. There are many examples of how webloggers cooperate to promote themselves, and blogging in general. Theres the I link to you, you link to me phenomenon in which a weblogger will return the favor of a link by linking back to the referrer. In the extreme, automatic referrer linking such as that practiced by Chris Wenham and others, demonstrates the concept on a grand scale. Bloggers also cooperate by developing software jointly. This is largely the model employed by open source developers though it tends to be focused around scripting and is not as seriously oriented toward methodology and CVS in blogspace. Webloggers support each other by responding when a weblogger puts out a call for help. Finally, birds of a feather flock together. A sense of community emerges where people help each other, in turn, promoting a sense of interdependency, not independency. Think about Microsoft in that context for a moment.
Webloggers compete
Blogspace represents a darwinistic information economy in which the survival of the fittest is determined by the ideas that each individual has to offer to the community. If what you have to offer is compelling, people will come. An attitude of humility helps and an attitude of humanity prevails. Bloggers can measure their progress on sites such as those hosted by Radio Community Server, Daypop, or Blogdex. The community will decide who rises to the top and who doesnt. Cliques develop dynamically without the deeply rooted politics of social institutions such as schools or companies. People do change their minds, individually and collectively. Those cliques influence the rise and fall of new competitors in blogspace. The combination of cooperation and competition is coopetition and Microsoft could learn a lot from looking at the way social groups form, grow, and support each other in this environment. Clearly, Microsoft has a vested interest in protecting its relationships with VARs and ISVs but just as clear is the fact that there is considerable dissension among those groups as to what Microsofts current position is and what it should be.
Coopetition in Microsoft
Specific business units within Microsoft appear to have tendencies toward coopetition - MSDN, for instance. However, the underlying motivation (complete and total domination) destroys the spirit of coopetition. Example: Im an independent developer, I use Microsoft tools at work, but when I upgrade my tools, I have to upgrade my web browser. First, this is not coopetition. This is market manipulation and is one of the primary reasons why the company is in court in the first place. Second, this violates at least one of the design principles that Microsoft would seem to espouse namely, orthogonality. In the end, if webloggers behaved like Microsoft, Dave Winer would have launched a Denial Of Service (DOS) attack against my site when I got more than a hundred unique visitors a day. So far, that hasnt happened.
Posted at: 23:00 | permalink
Thanks for the memories
Tony Bowden's got some interesting commentary on a variety of topics.
Barbelith has some interesting thoughts on the Google API.
e7l3 has some interesting comments on linux and vmware.
Why memories? Well, I had this thought that blogspace is really the collective consciousness of the tech world. The internet is the neuron and each blogger is a synapse and blog software is the neurotransmitting chemical soup. When the synapses fire in harmony, everybody tells 2 friends and you have a collective memory that can persist forever if we are careful. Just a thought.
Posted at: 20:47 | permalink
Driving to the store with an OS running your car
It's been ten years since I first saw this but even now, it still makes me laugh hysterically. I believe I originally saw it in a column by Peter Coffee in PC Week but that's just a guess. I wish I knew the identity of the real author.
Posted at: 20:29 | permalink
Google Oddities Go On
I have fallen almost completely off of google today for some reason. Now, when you search on "david watson", my site doesn't appear anywhere. It's mind boggling. There must be some bugs in the cache updating or something. Previous searches that returned near google whack results, now return nothing, or really old pages. Can somebody explain this?
Posted at: 10:06 | permalink
New Release of Swingin' Google!
Added support for launching external browsers, spelling interface, JDK 1.3 (Mac OS X), fixed hyperlinks.
Get it here.
Posted at: 10:03 | permalink
Mon, 22 Apr 2002
XWT may answer my GUI app install complaints
XWT: "You don't "install" web pages; you simply visit them. Why should applications be any different?"
This is the essence of what I was moaning about a while ago. Thanks to Ugo Cei for pointing me to this new technology. I've got to try it.
Posted at: 21:53 | permalink
Sat, 20 Apr 2002
Thanks to Paul Victor Novarese
Thanks to Paul Victor Novarese for linking to my article about Swingin' Google. It'll be right here in just a couple of minutes. I'm so excited I can't type straight. ;->
Posted at: 22:15 | permalink
Thanks to Ugo Cei
Thanks to Ugo Cei for linking to my blog. Check out his cocoon stuff. Very cool.
Posted at: 10:27 | permalink
Redefining the browser, or it's the end of the world as we know it
This was a pre-release announcement. You'll find the finished application here.
| Swingin' Google combines the best of Swing user interface elements constructed with Sun's latest JDK 1.4 to bring you a significantly improved google search experience. We've been talking about the end of the browser for years but this is the future now. Here's a screenshot of a pre-release prototype running on Windows XP. All of the features aren't there yet, but the basic interface is usable. We've taken the google SOAP API and wired it to the tabbed pane at the top of the main window. You specify search criteria and click search. The agent creates and populates a separate tabbed list view for each search result set. When you click on a row in the list view, the page loads immediately in it's own tab below. You can build result sets in the list view tabs along with their resultant HTML views in the browser tabs, ad infinitum. Coming soon to a desktop near you. Look for the first release here this weekend. |
Posted at: 03:35 | permalink
Fri, 19 Apr 2002
Thanks to Sam Ruby
Thanks to Sam Ruby for linking to my article. I promise to repay you all shortly.
Posted at: 20:27 | permalink
Decafbad's referer perl cgi script
After reasoning through why I liked disenchanted so much I came across decaf bad. Orchard has taken Chris Wenham's idea and implemented it in some perl cgi ssi hackfest. That's just the ticket. I may just have to try this when I get home. Cool!
Posted at: 17:19 | permalink
Great alternatives to google
If you're new to weblogs (blogs) and you haven't tried daypop or blogdex, check 'em out. They're great alternatives to google when you're looking for more recently updated content.
Posted at: 06:53 | permalink
Cape Clear Developer Support Network
Thanks for the link! Check out the google mail application here. [Cape Clear]
Posted at: 06:12 | permalink
Question of the day
What is a temporal fetish?
Posted at: 00:33 | permalink
free mp3 downloads
Looking for classic rock or jazz fusion music (mp3 and real media) without major label hassles? Click the music link on the left.
Posted at: 00:32 | permalink
Thu, 18 Apr 2002
Disintermediating Publishing
Let me start off by saying that Chris Wenham is smart. Very smart.
I'm not sure if that's a revelation to anyone, whether his technique has been written about before, or whether his technique is unique, but it is compelling for a number of reasons. What technique, you ask? Read on.
First, a brief description. Chris has a system where an external site that links into his site gets a link on the page that is linked to - automagically. Phew! It's tough to comprehend all those links. Read it again and a third time if it hasn't sunk in yet. You can see this in the screenshot below. I linked to disenchanted.com from this weblog. Then, disenchanted.com auto-generated the link back to me and they even added a little commentary onto my link.
The disintermediation occurs because disenchanted and I are now competing with established publications by working in concert. I had no distribution channel to speak of when I started this weblog. But doors have opened magically because I provided a few pieces of content that someone wanted to read. Disenchanted provides a very real incentive to link to their site which changes the economics of information. Readers of both sites benefit because they get a broader array of ideas and information than they would have gotten from either site individually. Disenchanted benefits by the referrals they get from my link, I benefit by the referrals I get from disenchanted; it's a win-win for everyone. But wait, it gets better.
Disenchanted has gone so far as to tie their auto link generating system into their RSS feed. Now, anyone that's subscribed to disenchanted's RSS feed, gets a link to my article. Because my RSS feed is tied into my email. I receive an email with the link like this:
Disenchanted's Recent Referers, 4/18/2002; 2:07:01 PM. | ||
| ||
|
Disenchanted could have subscribers through the normal RSS feed channels such as Userland Radio and Eazel's Nautilus but they could also be publishing the RSS feed via email as I've demonstrated here. The sheer reach and implications of such a system are staggering. | ||
|
| ||
Posted at: 16:09 | permalink
Barbarians at the gate, or the meek shall inherit the data
Edd Dumbill: "The frenzy over Google's new SOAP API is just plain silly."
[Scripting News]
Call me crazy, but am I the only person out here that thinks that attitudes like this can go the way of the dinosaur? I think Ed Dumbill finally realized that Google gave away the keys to the safe and now mere mortals have access to the safe and that means that the I can connect these people to that data in 1 line of shell script crowd is nervous. It's like the TV show Name That Tune.
What happens if it doesn't cost six figures in salary cost to hook my application to your data across the internet in a hurry? Six figures will go elsewhere to solve bigger and better problems. Besides, what this is really about is that people who know what users want to do with business data can connect them to that data via rich user interfaces, without hiring an Oracle DBA! Perhaps Edd should read this and realize that there's huge value in simplicity and ubiquity, even if that value is opaque to him.
Finally, my original vbscript post an hour after google released their API was less than 100 characters. Ed Dumbill's ill-disguised shell script was 350 characters. If we're going to play the Name That Tune game, I'll bet you can do that mail app in about as much VB, despite the fact that you're not a VB programmer!
And there, ladies and gentlemen, is the essence of what we're talking about here. Ed Dumbill wants you to get your linux box and write some pretty hideous shell script. The spirit of SOAP says, use whatever platform you've got, with whatever language you've got, and be done with it. That's empowerment. And that's why some digerati are running scared.
Posted at: 13:09 | permalink
Broken link to java google soap api source fixed
Special thanks go out to John Yester for apprising me of the fact that the link to my java google soap api source zip was broken. It's not broken any more. See here.
Posted at: 11:05 | permalink
Wed, 17 Apr 2002
WebJives extends my vbscript google SOAP API example
WebJives: These guys have expanded rather nicely on my original vbscript work last week. If you're looking for one of the better, more complete, vb script examples of how to use the google SOAP API, this is it.
Posted at: 16:21 | permalink
What is a Scoville?
Scoville. When you accidentally chew one of those strange red things that P.F. Chang's mixes into their Kung Pao Chicken and your mouth turns into an electric superkiln of volcanic fire, you can say Oh wow, that musta been 200,000 scovilles! (right after you've finished the fifth glass of water) and it's all because of Wilbur Scoville: a chemist who invented a way of measuring just how hot a pepper can get, way back in 1912.
Scoville's method to determine the heat of a pepper is based on dilution. You grind up the pepper into a paste, then dilute it in a gallon of water. Then you keep adding sugar to the solution until a panel of about 5 taste testers don't burn their tongues anymore. The amount of sugar you had to add will be used to calculate the pepper's Scoville rating.
Namby-pamby Tabasco sauce is a paltry 2,140 scovilles, while the hottest naturally occurring pepper is the Red Savina Habanero, which clocks about 577,000.
That's baby food.
A food additive called Chet's Gone Mad registers 1.5 million scovilles and, when added to your chili, shall put Grandma in the hospital. But that's only for beginners and amateurs, because Blair's 5am Reserveof which only 999 bottles were mademakes the sun jealous at 5.5 million scovilles.
Should one obtain the permits and necessary safety equipment to handle it, it should be disclosed that pure capsaicin, the chemical in peppers that makes them hot, marks the top of the scale at 16 million scovilles. Put a teaspoon of this in a gallon of barbeque sauce and you'll be incarcerated under the terms of the comprehensive test-ban treaty.
[Disenchanted Dictionary]Posted at: 16:13 | permalink
Wenham's first law of demand
Wenham's first law of demand. No matter how dumb your product's concept is, or how badly it's been implemented, there will always be someone who's lifestyle is so perverse and twisted that your service will become indispensable to them. [Disenchanted Dictionary]
Posted at: 16:12 | permalink
One of the most concise statements on SOAP that's been written
This is probably the best description of SOAP for mere mortals that I've seen anywhere. And one of the smartest sites I've ever seen. Period.
disenchanted.com: "It might be poetic justice, then, that a better alternative to Java (for writing programs that can be used from anywhere) has been invented in a partnership that included Microsoft. It's called SOAP, and instead of trying to make a program run on any computer, it's meant to make it easier for a program to talk to any computer across the Internet and make that computer behave like a component. In the past, if you built a word processor and wanted to add a spell-checker you'd have to buy that part, include it with every copy of the word processor that you shipped, and plan on hiring an employee to keep the dictionary updated with new words. SOAP means you don't have to; you just have your program talk to an online dictionary hosted somewhere else. The program you ship loses the fat, reduced to a bundle of signal genes, because all the libraries are stored elsewhere and maintained by someone else." [disenchanted.com]
Posted at: 15:50 | permalink
Developers dig into google's toolbox
I was contacted by Stefanie Olsen, from CNET news about this article but unfortunately, I didn't get back to her in time to be included. Still, it's a good article for those who want to understand the high level ideas behind what Google is doing.
Posted at: 09:06 | permalink
Google inconsistencies
Can somebody tell me why the google box on the right side of this page often has different results than searching google.com for the same search string? Note: I've since removed the google box. Sorry!
Posted at: 07:55 | permalink
I'm feeling lucky - on steroids
I'm feeling lucky - on steroids
This was an early announcement about the prototype I was working on. You'll find the finished application here.
| The Web Search Agent combines the best of Swing user interface elements constructed with Sun's latest JDK 1.4 to bring you the ultimate google search experience. This is a screenshot of our pre-release prototype running on Windows XP. All of the features aren't there yet, but the basic interface is usable. We've taken the google SOAP API and wired it to the tabbed pane at the top of the main window. You specify search criteria and click search. The agent creates and populates a separate tab for each search result with the fully rendered HTML in each tab, asynchronously. That's why we call it, I'm feeling lucky - on steroids. You get all of your search results faster than a short order cook flips eggs. Coming soon to a desktop near you courtesy of Bryan Mills and David Watson. |
Posted at: 00:56 | permalink
Tue, 16 Apr 2002
Sewage truck explodes
Ouch. My nose
"Sewage truck explodes" [Daypop Top 40]
Posted at: 07:00 | permalink
Mon, 15 Apr 2002
Google catalog search
Google catalog search
Wow! These guys never stop innovating. I wonder what they'll think of next.
Posted at: 22:56 | permalink
The wonder of archive.org
The wonder of archive.org
Several years ago, Phil Shevrin and I did a PR piece for Stingray when we worked at Platinum Technology. Scot Wingo later sold Stingray to Rogue Wave and stingray.com is long gone. But archive.org still has the article. How cool is that? I'm not sure why it matters to me now but it has a certain nostalgic effect. I miss Phil and the crew in Boston. Don't get up there much anymore. Sigh.
Posted at: 22:48 | permalink
Very Strange Google Search Results Revisited
Very Strange Google Search Results Revisited
It might not seem particularly odd that I'm the #2 site when searching google for "The Mind Electric" until you consider that their own website doesn't appear in the top 10. :-/
Posted at: 20:55 | permalink
Java Client for the Google API using Glue from the Mind Electric (SOAP)
Java Client for the Google API using Glue from the Mind Electric (SOAP)
This one has several source files so I'm including it here in zip form. This one is easy to follow and like my vbscript example, it has built-in proxy support thanks to the slick design from Graham Glass and the guys at the Mind Electric.
If you don't have GLUE you can get it here. You'll need a recent JDK (1.3 or 1.4) and you'll also need to have your classpath set. Mine looks like:
CLASSPATH=.;c:\\glue231\\lib\\GLUE-STD.jar;c:\\glue231\\lib\\servlet.jar;c:\\glue231\\lib\\dom.jar;c:\\glue231lib\\jnet.jar
so on Windows:
set CLASSPATH=.;c:\\glue231\\lib\\GLUE-STD.jar;c:\\glue231\\lib\\servlet.jar;c:\\glue231\\lib\\dom.jar;c:\\glue231lib\\jnet.jar
Unzip all of the files into a single directory and type:
javac *.java
Then:
java GoogleShell
Enjoy!
import electric.registry.Registry;
import electric.util.Context;
public class GoogleShell
{
public static void main( String[] args )
throws Exception
{
// set proxy location and authentication credentials
Context context = new Context();
context.setProperty( "proxyHost", "your.proxy.here" );
context.setProperty( "proxyPort", "8080" );
// bind to web service whose WSDL is at the specified URL
String url = "file://GoogleSearch.wsdl";
IGoogleSearchService google = (IGoogleSearchService) Registry.bind(url, IGoogleSearchService.class, context);
// invoke the web service as if it was a local java object
String ret = google.doSpellingSuggestion("YourKeyHere", "Britney Spars");
System.out.println( "Spelling = " + ret );
GoogleSearchResult result = google.doGoogleSearch( "YourKeyHere", "david watson", 0, 10, false, "",false,"lang_en","latin1","latin1");
for(int i = 0; i < result.endIndex; i++)
System.out.println(result.resultElements[i].URL);
}
}
Posted at: 16:56 | permalink
Bill Gates comes to Butler County, PA
Bill Gates comes to Butler County, PA
Hmm... Corbis moves it's archives to Butler County, PA.
Posted at: 14:48 | permalink
Swinging into patent litigation
Swinging into patent litigation
The absurdity at the US patent office continues.
Posted at: 13:02 | permalink
Sun, 14 Apr 2002
Microsoft past it's peak?
Microsoft past it's peak?
Jakob Nielsen: "However, there might be a tendency for companies to reach the top of the HCI field when they've already peaked." [useit.com]
An interesting conclusion considering that he gave Microsoft the gold award for the 2000-2010 period. It's also notable that CMU is the only university lab currently on the list.
Posted at: 22:28 | permalink
From my conversation with Dave Winer this evening regarding OPML
From my conversation with Dave Winer this evening regarding OPML
It wouldn't be hard to take apache's mod_index and hack together a mod_opml to make an apache site spit out the equivalent of radio's directory.opml. In fact, a few jboss calls via JMX beans and you could probably enumerate all of the stuff in a running J2EE app server and spit it out there as well. The nice thing about the apache idea though is that you'd cover 70% of the web server market with very little work.
Posted at: 21:08 | permalink
Reaction to Dave Winer's article on google, directories, and OPML
Reaction to Dave Winer's article on google, directories, and OPML
SoapWare.Org: Google, directories, OPML.
[Scripting News]
The outliner as mini website is a useful model but it has problems when you try to exrapolate that to the link structure for the web. For instance, the 2d tree as we see in an outliner or the typical M$ Windows explorer interface is ill-suited to handle the demands of displaying outlinks, inlinks, circular links, redirects, etc. Some combination of concepts will probably produce a usable interface but we're not there yet.
I believe that Ben Bederson's work on zoomable UI at the University of Maryland HCI lab could help in this area. In this regard, zooming could tie to the hyperlinking concept in such a way as to make N levels of Z-order workable for the user. You have to imagine the Windows explorer model where the left pane is occupied by Dave Winer's outliner and the right pane is occupied by Ben Bederson's zoomable UI. You root yourself in the outliner at some URL. The zoomable UI paints a representation of all the pages at the same hierarchical level as your selection in the outliner tree. While we're at it, let's give some slack to Jakob Nielsen by including a full-blown status window in the typical IDE location. In that status window, let's include a detailed display of exactly what the client is doing. I was very impressed with Ben's work when I first looked at it and I still think it's just a matter of time until someone with enough spare cycles puts it to work in a really big way.
Posted at: 15:09 | permalink
Language Translation for Radio Users
Language Translation for Radio Users
I noticed that I was getting an increasing number of visitors from foreign countries; countries in which the Queen's English may not be the primary language. I also notice that click throughs from my site appeared to be far less when the visitors were coming from foreign countries. I inferred that perhaps foreign visitors were having trouble reading the link text. So I started looking around for a means to solve the problem of language translation for Radio Users. Thanks to the folks at FreeTranslation.com for providing this great service.
If you're using Radio Userland, you'll find 6 hyperlinks below that'll give you instant translation to 6 languages (French, German, Italian, Norwegian, Portuguese, Spanish) for your Radio site. You can see these in action under my title/description at the top of the page. Just copy and paste the hyperlinks into your Radio Home Page Template under Prefs/Home Page Template wherever you see fit and hit Submit. It would be really nice if each had an icon attached to make it easier to identify but I'm not a graphic artist and I have to finish my taxes! If you can do the icons, please send email. Thanks.
Enjoy!
<A href="http://fets3.freetranslation.com:5081/?Language=English%2FFrench&Url=<%radio.macros.weblogUrl ()%>%2F&Sequence=core">French</A> <A href="http://fets3.freetranslation.com:5081/?Language=English%2FGerman&Url=<%radio.macros.weblogUrl ()%>%2F&Sequence=core">German</A> <A href="http://fets3.freetranslation.com:5081/?Language=English%2FItalian&Url=<%radio.macros.weblogUrl ()%>%2F&Sequence=core">Italian</A> <A href="http://fets3.freetranslation.com:5081/?Language=English%2FNorwegian&Url=<%radio.macros.weblogUrl ()%>%2F&Sequence=core">Norwegian</A> <A href="http://fets3.freetranslation.com:5081/?Language=English%2FPortuguese&Url=<%radio.macros.weblogUrl ()%>%2F&Sequence=core">Portuguese</A> <A href="http://fets3.freetranslation.com:5081/?Language=English%2FSpanish&Url=<%radio.macros.weblogUrl ()%>%2F&Sequence=core">Spanish</A>
Posted at: 11:57 | permalink
A google oddity - not a google whack but maybe weirder
A google oddity - not a google whack but maybe weirder
This search returns only one result, this page. Why is that odd? Well, for one thing, googleapi.zip is hosted on google.com. This means they're not indexing their own content. I thought that was a little unexpected considering that if somebody searched for googleapi.zip it might be far more useful if they found the link on google and not my site.
Update
Somebody at google must be listening because I posted this 3 days after google released googleapi.zip but now it's indexed on google.
Posted at: 10:35 | permalink
Sat, 13 Apr 2002
The Demographics of Traffic to This Site
The Demographics of Traffic to This Site
Thought some of you might be curious about where you fit in the scheme of the world's web surfers. Here's usage by country for April 2002 (generated by webalizer and PHP) on www.davidwatson.org:
| Top 30 of 37 Total Countries | |||||||
|---|---|---|---|---|---|---|---|
| # | Hits | Files | KBytes | Country | |||
| 1 | 4933 | 25.65% | 2146 | 27.89% | 38448 | 21.69% | US Commercial |
| 2 | 4793 | 24.92% | 1656 | 21.52% | 26576 | 14.99% | Network |
| 3 | 4474 | 23.26% | 1680 | 21.84% | 66420 | 37.47% | Unresolved/Unknown |
| 4 | 1673 | 8.70% | 778 | 10.11% | 21529 | 12.15% | Japan |
| 5 | 794 | 4.13% | 355 | 4.61% | 1521 | 0.86% | US Educational |
| 6 | 491 | 2.55% | 172 | 2.24% | 800 | 0.45% | Canada |
| 7 | 399 | 2.07% | 161 | 2.09% | 914 | 0.52% | Australia |
| 8 | 306 | 1.59% | 139 | 1.81% | 659 | 0.37% | United Kingdom |
| 9 | 213 | 1.11% | 80 | 1.04% | 9205 | 5.19% | Netherlands |
| 10 | 137 | 0.71% | 59 | 0.77% | 266 | 0.15% | Non-Profit Organization |
| 11 | 133 | 0.69% | 58 | 0.75% | 270 | 0.15% | Sweden |
| 12 | 120 | 0.62% | 34 | 0.44% | 173 | 0.10% | Brazil |
| 13 | 89 | 0.46% | 40 | 0.52% | 173 | 0.10% | United States |
| 14 | 83 | 0.43% | 40 | 0.52% | 192 | 0.11% | New Zealand (Aotearoa) |
| 15 | 79 | 0.41% | 30 | 0.39% | 8977 | 5.06% | Belgium |
| 16 | 61 | 0.32% | 32 | 0.42% | 129 | 0.07% | Germany |
| 17 | 60 | 0.31% | 32 | 0.42% | 120 | 0.07% | Argentina |
| 18 | 37 | 0.19% | 16 | 0.21% | 64 | 0.04% | Spain |
| 19 | 30 | 0.16% | 16 | 0.21% | 62 | 0.03% | France |
| 20 | 30 | 0.16% | 16 | 0.21% | 62 | 0.03% | Ireland |
| 21 | 30 | 0.16% | 16 | 0.21% | 62 | 0.04% | Singapore |
| 22 | 26 | 0.14% | 13 | 0.17% | 73 | 0.04% | Taiwan |
| 23 | 25 | 0.13% | 11 | 0.14% | 63 | 0.04% | Denmark |
| 24 | 22 | 0.11% | 8 | 0.10% | 33 | 0.02% | Israel |
| 25 | 21 | 0.11% | 8 | 0.10% | 37 | 0.02% | US Military |
| 26 | 16 | 0.08% | 9 | 0.12% | 40 | 0.02% | Norway |
| 27 | 16 | 0.08% | 8 | 0.10% | 61 | 0.03% | Russian Federation |
| 28 | 16 | 0.08% | 8 | 0.10% | 56 | 0.03% | Thailand |
| 29 | 15 | 0.08% | 8 | 0.10% | 31 | 0.02% | Austria |
| 30 | 15 | 0.08% | 8 | 0.10% | 31 | 0.02% | Finland |
Posted at: 09:39 | permalink
Searching google for David Watson
Narcissism Revisited
It used to be if you searched for "david watson" on google, you'd find 8 million sites, but not me. After the deluge of the last few days, I'm sitting at #3 or #1 depending on who you believe. I get #3 going to google.com and searching but my little google radio widget thingamabob over there -> says I'm #1. If you can explain this discrepancy, please send mail. I'm mystified. Thanks.
I always liked the name "david watson" but it's kinda weird being that anonymous.
Posted at: 06:29 | permalink
Fri, 12 Apr 2002
What does the google API mean for regular folks?
DaveNet: What does the Google API mean for regular folks?
[Scripting News]
What does the Google API mean for regular folks? I'll tell you. It's relatively simple but there are some twists and turns along the way. What it means is that people like me are going to turn their attention to building rich, compelling user interfaces that don't rely on the browser to be rendered. Watch this space for more of that in the near future. We've been hearing about this forever but there hasn't been a lot of forward motion. That's all about to change, but there's a problem. You see, despite what everybody tells us about the web reducing our software distribution cost to zero, there's a dirty little secret hidden there. I know it, my dad knows it, the average computer user knows it.
Software installations on the web suck!
The future of the web described by the futurists will have a hard time taking off until that problem is solved completely, without compromise, full metal jacket. On the big company side, we've got Sun with Java web start and we've got Microsoft with whatever they're calling their copy of Java web start. Sun's solution requires me to download the solution before I get the benefits of automagic installation. The quandary is that installing the solution may be more painful than whatever came before it. No matter what anyone tells you, Java is never going to penetrate beyond the bounds of the digerati until it's on every PC out there by default, from the manufacturer. If there's a single thing that the DOJ could do to fairly even the score, it's to require a JVM on every copy of Windows shipped. But alas, it's probably to late for that solution to have any real impact since the installed base of PCs is so large. Microsoft, on the other hand, requires me to run all of their tools (particularly IIS, which makes me want to vomit). Then, the Microsoft OS du jour falls over after I install too much software on it. None of these alleged solutions is what it needs to be.
<Digression>
I read with some curiosity the ZD Net article explaining how IBM was going to buy Sun and assume control of Java and everything would be hunky dory because they get it after getting killed with OS/2!?! Riiiight. The problem with Java is that neither Sun nor IBM understand how to compete in a market space that is hyper-focused on user interface, or in politically correct terms, user experience. The really big problem, of course, is that software installation and configuration winds up being the work of interns that no self-respecting engineer would admit to doing and thus, we wind up with installers that are barely usable by engineers, let alone average folk who'd rather be watching Monday Night Football.
</Digression>
I built a command line interface to google using Visual Studio .net and C++ last night. I compiled and had all of the methods working cleanly in both debug and release builds on my XP box. I then proceeded to copy the executables to a Windows 2000 box and voila, it runs and produces the following output to every command:
0x0082039
Great! That's just the user experience I was hoping to give to my customers. I say to hell with dynamic links and the myriad of patches that Microsoft has put on top of the horribly broken dynamic linking system in Windows. I'm gonna static link everything. Now, if the open source folks would just come up with a compelling installation and configuration scheme, I'd be getting out my checkbook. Until then, I'll be suffering along trying to explain to mere mortals how to:
java -jar blah blah blah
when what I really want is:
Click hyperlink, BING!, running application.
The internet OS has a long way to go before that's possible. I'd love it if somebody sent me email and said, "but no, dave, the problem is solved already by wysiwyg widget wacker", but I'm not holding my breath.
Posted at: 22:39 | permalink
Jenny nails Hillary Rosen to the cross
Jenny nails Hillary Rosen to the cross
Go Jenny! Kill that little lawyer maggot!
Posted at: 15:40 | permalink
If the site seems slow
If the site seems slow
It's a Toshiba Infinia 200 MHz Pentium, 64MB RAM, 3GB disk, running linux. It's swapping quite a bit trying to keep up with the hit parade but I'm not sure what that looks like from Australia. It's big brother, the Toshiba Magnia, is sitting right here, but it's not quite ready for prime time. Maybe the next time I have a hit spike, I'll have it online so things don't bog so much.
Update: The hits have slowed and indeed the box has survived, never passing 50% CPU or 50 MB swap in use. I'm impressed.
Side Note On Radio and Hit Spikes
It would be really nice if radio had a feature like the big news sites where you could go in and hit a buttom and essentially dispense with all of the fat graphics and go to an alternate text only representation with a button click. That would make response times for readers during big hit spikes much better and it would allow people to run on a lot less hardware and bandwidth and still be able to handle the hit spikes.
After quite a bit of analysis I can see that there's a quantum link effect that you get when you wind up on scripting.com. Dave has awesome power in that regard. I think his power may be even greater than the big news sites because of the intermingling effect of syndication, RCS, daypop, blogdex, google, google groups, and the google formula. I doubt he planned it that way, but the impact does not go unnoticed.
Posted at: 08:04 | permalink
Predicting the next mouse click, or lack thereof
Predicting the next mouse click, or lack thereof
Curiously, the click throughs to my pic site are about 100x the click throughs to my mp3 site. It remains a mystery.
Posted at: 07:39 | permalink
Scripting the Google API via C++ (Microsoft Visual Studio.net)
Scripting the google SOAP API via C++ (Microsoft Visual Studio.net)
Here's the next installment in my google SOAP API experiment. I have the major stuff working in a win32 C++ console application. You can get the project files, source, and binaries here. Too tired too say much about it but it works even though it's not iron-clad. I'd like to put the typical while loop and take the commands interactively like a real shell but ran out of steam. If you do that, please send me the updates. Thanks.
/*
PROGRAM: GoogleShell.cpp
AUTHOR: David Watson
CONTACT: http://davidwatson.org:8086/
DATE: April 11, 2002
PURPOSE: Define a win32 console application for calling Google's SOAP API.
Copyright (c) 2002 David Watson
Permission is hereby granted, free of charge, to any person obtaining a copy of
this software and associated documentation files (the "Software"), to deal in
the Software without restriction, including without limitation the rights to use,
copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the
Software, and to permit persons to whom the Software is furnished to do so,
subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,
INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
*/
#include "stdafx.h"
#include "GoogleSearchService.h"
#include <iostream>
#include <string>
class CCom
{
private :
HRESULT m_hr;
public:
CCom() : m_hr(E_FAIL)
{
}
HRESULT Initialize()
{
ATLASSERT(FAILED(m_hr));
return m_hr = CoInitialize(NULL);
}
~CCom()
{
if (SUCCEEDED(m_hr))
CoUninitialize();
}
static bool SoapSuccess( HRESULT hr)
{
if (FAILED(hr))
{
std::wcout << L"0x" << std::hex << hr;
return false;
}
return true;
}
};
int _tmain(int argc, _TCHAR* argv[])
{
using namespace GoogleSearchService;
using namespace std;
if ( argc < 4 )
{
cout << "usage: GoogleShell key [page, search, spell] [\"url\", \"search string\", \"spelling word\"]" << endl << endl;
cout << "example: GoogleShell \"7ei2nf9e8wn3s7dhjr8dnr8e72lednd7\" page \"http://davidwatson.org:8086/\"" << endl;
cout << "example: GoogleShell \"7ei2nf9e8wn3s7dhjr8dnr8e72lednd7\" search \"david watson\"" << endl;
cout << "example: GoogleShell \"7ei2nf9e8wn3s7dhjr8dnr8e72lednd7\" spell \"britney spars\"" << endl;
return 0;
}
CCom COM;
HRESULT hr = COM.Initialize();
if (SUCCEEDED(hr))
{
CGoogleSearchService service;
CComBSTR bstrResponse;
GoogleSearchResult retVal;
ATLSOAP_BLOB blob;
wstring command ( static_cast<const wchar_t *>(CComBSTR(argv[2]) ));
wstring SPELL ( L"spell" );
wstring SEARCH ( L"search" );
wstring PAGE ( L"page" );
if ( command == SPELL)
{
if (CCom::SoapSuccess(service.doSpellingSuggestion(CComBSTR(argv[1]), CComBSTR(argv[3]), &bstrResponse)))
wcout << static_cast<const wchar_t*>(bstrResponse);
}
else if (command == SEARCH)
{
if (CCom::SoapSuccess(service.doGoogleSearch(CComBSTR(argv[1]), CComBSTR(argv[3]), 0, 10, false, CComBSTR(L""),false,CComBSTR(L"lang_en"),CComBSTR(L"latin1"),CComBSTR(L"latin1"), &retVal)))
for(int i = retVal.startIndex; i < retVal.endIndex; i++)
wcout << static_cast<const wchar_t*>(retVal.resultElements[i].title) << endl;
}
else if (command == PAGE)
{
if (CCom::SoapSuccess(service.doGetCachedPage( CComBSTR(argv[1]), CComBSTR(argv[3]), &blob)))
wcout << static_cast<const wchar_t*>(CComBSTR(blob.size,(LPCTSTR)blob.data)) << endl;
}
}
return 0;
}
Posted at: 02:16 | permalink
Thu, 11 Apr 2002
Drummer takes a dive
Drummer takes a dive
Ouch. I can't watch this (AVI file) without laughing out loud. I hope the poor guy wasn't injured, though I'm sure the emotional injuries have outlived the physical ones.
Posted at: 20:03 | permalink
Thanks to Dave Winer
Thanks Dave!
Many thanks to Dave Winer for linking to my article on programming google via SOAP in VBScript. Ditto on the C++ article. Thanks Dave!
Posted at: 18:02 | permalink
Scripting the Google SOAP API via VBScript
Scripting the Google SOAP API via VBScript
Hopefully, there's someone out there besides me who was excited by Dave Winer's post of the Google SOAP API release! Here's a vbscript snippet to call the google spelling API for those of you looking to experiment on Windows XP, or any release of Windows that has the Windows Scripting Host (WSH) and the SOAP 2.0 Toolkit installed. I intend to post more significant examples later but this is all I have time for right now.
Go Google! Can I work there? Please? Pretty please? I promise to develop the most killin' search client on the planet. If you open up images.google.com to the SOAP API, I'll even make it work with this!
REM googlespeller.vbs
dim SOAPClient
set SOAPClient = createobject("MSSOAP.SOAPClient")
on error resume next
REM put the wsdl from the googleapi.zip in the same directory as the vbscript
SOAPClient.mssoapinit("GoogleSearch.wsdl")
if err then
wscript.echo "WSDL"
wscript.echo SOAPClient.faultString
wscript.echo SOAPClient.detail
end if
REM if you need proxy support keep the next 3 lines, if not, get rid of them
SOAPClient.ClientProperty("ServerHTTPRequest") = True
SOAPClient.ConnectorProperty("ProxyServer") = "your.proxy.goeshere.com"
SOAPClient.ConnectorProperty("ProxyPort") = 8080
outputText= SOAPClient.doSpellingSuggestion("YourGoogleKeyGoesHere", "Britney Spars")
if err then
wscript.echo "SOAP"
wscript.echo SOAPClient.faultString
wscript.echo SOAPClient.detail
else
MsgBox outputText
end if
Here's what you get:
Postscript: The guys at WebJives have done a wonderful job of extending my example here. See their article for more details.
Posted at: 16:56 | permalink
Hillary Rosen must end
Hillary Rosen must end
I have a strange feeling this is just the tip of the iceberg, that there's a real sea change underway here. Does anybody know anyone that still uses cassettes? I went to minidisc for that a while ago and it appears now even the average consumer is being encouraged to do similar things with CD-R. Cool.
Are Ads a Gateway to Illegal CDs?. Gateway is showing people how to download music and movies and burn them on to CD-Rs. Heck, it's even tossing in some free blank CDs. But it's against piracy. Gateway has a singing cow to prove it. By Brad King. [Wired News]
Posted at: 09:25 | permalink
Kartoo - a meta search engine, draws web maps
A mind-boggling array of cool new software today. I'm trying to keep up. From google: Kartoo is a meta search engine which draws web maps. I discovered this while looking at my referer listings this morning. Apparently someone hit upon one of my pages using this. The first couple of times, I tried it, it was getting slammed and didn't respond. Later, I managed to get this screenshot. It's one of the more impressive uses of flash that I've seen. Ultramod!
Posted at: 00:00 | permalink
Image of the week
Mount St. Helens overlooking Spirit Lake, Panorama - 1999
Posted at: 00:00 | permalink
Swingin' Google! - It's the End of the Browser As We Know It
Download Swingin' Google!
|
|
You get the simple search field/button interface in the top tabbed pane. You enter your search text and hit the search button. The application populates the second row of tabbed panes with the search results in a list view. You click on a search result and the application populates yet another row of tabbed panes with the browser view. Originally, my prototype opened ALL of the search results in the tab view automatically but that was cumbersome due to the fact that, from a performance standpoint, doing it asynchronously in Swing did not yield the results I was hoping for.
Hopefully, the various proclamations that I've made won't have everyone's expectations running too high but anyhow, here goes. This is the first release of my Java Swing application using the Google SOAP API. You can find the full story here with screen shots, downloads, instructions, disclaimers, thanks, etc. You'll also find my editorial about the wonderful world of Swing programming. The code is an absolute train wreck because I've been hacking on it late into the night. Thus, you won't find any source here - yet. That doesn't mean there won't be source. That just means that I'm embarrassed by the state of it right now. Still, the binary's not as embarrassing. But it's not perfect. You'll find plenty of warts. You'll see that I struggled with layout management, and I even wrote a tutorial on layout management once. Suffice it to say that Swing's layout manager doesn't always do what I would have hoped it would do when running on the plethora of platforms that it supports. There are times when the slicing and dicing of the screen is, well, sub-optimal.
I could go into trying to call this alpha, beta, release .10, blah blah blah. In the Dave Winer spirit, let me put it this way: my software's garbage, your software's garbage, all software's garbage. But some software has less maggots than others.
Questions, comments, bug reports: send
email. Thanks!
My poor little web server box is probably going to fall over in the middle of the night. You have my apologies if it's slow or dead. I'll do my best sysadmin impersonation to keep it alive.
Posted at: 00:00 | permalink
New Release of Swingin' Google!
Added support for launching external browsers, spelling interface, JDK 1.3 (Mac OS X), hyperlinks, etc. Check out the Mac OSX screenshot. Tasty! Thanks to my friend Jeff Zapotoczny for Mac OSX testing and the screen shot.
Get it here.
| Mac OSX | Windows 2000 | Linux | Windows XP |
|
|
Posted at: 00:00 | permalink
Wed, 10 Apr 2002
Bush rallies opponents of cloning
Bush Rallies Opponents of Cloning. President Bush is inviting opponents of cloning research to the White House on Wednesday to rally support for legislation that would prohibit all types of human cloning. By Sheryl Gay Stolberg. [New York Times: NYT HomePage]
Could reason possibly prevail? Doubtful.Posted at: 08:22 | permalink
Tue, 09 Apr 2002
My social class is better than your social class
My social class is better than your social class
Fascinating look at class dynamics worldwide [Weekly Standard via blogdex]
Posted at: 12:08 | permalink
1,000 résumés a day
NY Tmes: "All this has made Google Silicon Valley's hottest private company, one deluged with 1,000 résumés a day." Google's Toughest Search Is for a Business Model [( blogdex : recent )]
Posted at: 06:17 | permalink
Thu, 04 Apr 2002
Oddpost
Oddpost
Looks like outlook. Smells like outlook. Tastes like outlook. Must be oddpost. Doh!
Now if they'd just do IMAP, I'd be willing to PAY! Till then, not so sure. Oh yeah, sell me the SOAP server while you're at it, so that I can run against my own mail server. Thanks!
Posted at: 22:57 | permalink
WooHoo! SOAP mail client!
Holy macarel. I was just reading "open source development with cvs" yesterday and thinking, I should sit down and implement a rich GUI client that uses SOAP as a conduit to SMTP and POP. Then these guys turn around and do it! I need to move faster. Sigh...
From Dave Winer:
I had a great phone talk with Iain and Ethan at Oddpost. The connection between the server and the browser is in SOAP. The server is written in Python. I know it only runs in MSIE/Win, so here's a screen shot. It's not Java, it's DHTML, all done with divs and borders, according to Ethan. They came from HalfBrain, via Adobe. Of course I encouraged them to do a user interface for weblogs using the Blogger and MetaWeblog APIs. I also suggested they do a weblog because they're natural storytellers. Now something for their testimonials page. "It's really great to see software developers pushing the envelope for the pure fun of it. I totally look forward to their next innovation and the one after that."
[Scripting News]
Posted at: 18:15 | permalink
Mon, 01 Apr 2002
Java Font Tricks
Of all the cool things that you can do with Electric's XML Parser, here's a useful one. This code will allow you to define your own font attributes for any swing program on an application-wide basis. The font characteristics are specified in XML so that they can be changed at runtime without recompiling. Neat, and barely 15 lines of code - thanks to the Mind Electric.
Here's the java source:
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.border.*;
import javax.swing.plaf.*;
import java.io.File;
import electric.xml.*;
public class TestFonts
{
public static void main(String[] args) throws Exception
{
parseXmlFontProperties();
// YOUR SWING CODE GOES HERE
}
private static void parseXmlFontProperties() throws Exception
{
Document document = new Document( new File( "fonts.xml" ) );
Element root = document.getRoot();
Elements elements = root.getElements( "component" );
while( elements.hasMoreElements() )
{
Element element = elements.next();
String component = element.getAttributeObject("name").getValue();
String font = element.getTextString("font");
int embellishment = element.getInt("embellishment");
int size = element.getInt("size");
UIManager.put(component, new FontUIResource(font, embellishment, size));
}
}
}
Here's the XML config file (fonts.xml):
<fontspec>
<component name='Button.font'>
<font>SansSerif</font>
<embellishment>0</embellishment>
<size>24</size>
</component>
<component name='TextField.font'>
<font>SansSerif</font>
<embellishment>0</embellishment>
<size>12</size>
</component>
</fontspec>
Posted at: 17:24 | permalink


