Power ASP.NET 2.0 Programming
Jeff Prosise returns to the St. Louis C# Users Group next week presenting Power ASP.NET 2.0 Programming.
I went to his last talk 322 days ago.
Bloglines.com Web Services
Everyone and his brother is excited about a set of web services just published by Bloglines.com. One of them is a Blogroll Wizard.
By putting a snippet of JavaScript like this:
<script language="javascript" type="text/javascript" src="http://rpc.bloglines.com/blogroll?id=weiqigao"> </script>
into my weblog templates, I can have my Bloglines blogroll show up in my blog. As I have done below.
Finally, after four years, a web service that I can understand!
Evidence That Eclipse Has Become a "Platform"
Joel on Software in Streaming Audio
I recently discovered IT Conversations. They feature audio interviews with IT industry type people, which they hope you would download into your iPod. Well, I don't have an iPod, but I really liked their format (better than, for example, the format TheServerSide.com uses).
This week, they feature an Interview with Joel Spolsky, of Joel on Software fame.
Whatever Happened to "Never Change Your Interfaces" (JDK 5.0 Horrors)
Reading through the new JDK 5.0 documentation, I found this piece of gem:
In DOM level 3, additional methods were defined in the following interfaces:
- Attr
- Document
- DOMImplementation
- Element
- Entity
- Node
- Text
The added methods only affect applications that implement the interfaces directly, and only then when the application is recompiled. Applications that use the factory methods to obtain implementation classes for these interfaces will have no problems.
After years of yelling at people "Don't ever change your interfaces, you will break other peoples code," I feel pretty annoyed by this.
True, 5.0 is a compatibility breaking upgrade (if you have ever written code like Enumeration enum = myVector.elements(); back in the 1.1.4 days), but adding public methods to interfaces is a crime much more severe.
Even in the old 1.1.x days people know to introduce new and improved interfaces with a different name: LayoutManager2 vs. LayoutManager.
On a practical level, this means that even after I have upgraded to JDK 5.0, I have to keep a copy of JDK 1.4.2_05 around just to compile old code that implements the narrower interfaces, until everybody in the world have patched their code for 5.0!
RSS Support In Thunderbird 0.8
Eric Burke didn't like it when I blogged about RSS support in Firefox three days ago. I would have agreed with him completely had the feature in question been anything other than RSS. I just liked the cute little button too much. :)
Now, guess what I found out today? RSS support in Thunderbird, the Mail and News reader from Mozilla:

File->New->Account..., then choosing "RSS News & Blogs" lets you subscribe to RSS feeds. After that, you just read it like News.
Babelfish Translates To Chinese, and Back, and ...
I ran across the AltaVista Babelfish page today. They've added simplified Chinese support.
Ever the curious, I submitted my homepage to it. I'm surprised at the high quality of the machine translated Chinese. (Unfortunately my weblog is messed up by it.)
Here's a sampling of my homepage translated into various languages:
RSS Support In Firefox 1.0 RC: Live Bookmarks!!!
Just downloaded and installed Firefox 1.0 RC. And the first thing that jumped into my eyes is the little orange RSS icon at the lower right corner[1] (Slashdot is my home page :) ):

Curious, I clicked on it. And up popped a context menu asking me "Subscribe to 'Slashdot RSS'..."
Sure! I clicked.
The familiar "Add Bookmark" dialog showed up. I selected a spot for it to live. And it showed up in my bookmarks toolbar[2], along with all the top stories.
That is really Cool!
Now, come to think about it, there is a second story here. It has to do with the UI design of this new feature. It flows so naturally that I, without any preknowledge of this new feature, figured it out within seconds without wasting one mouse click or key stroke.
Now I'm going to post this blog entry and see if it shows up in my Firefox live bookmark.
Update: It did!
Project Gutenberg
This post from Norman Walsh reminded me of Project Gutenberg:
Project Gutenberg is the oldest producer of free electronic books (eBooks or etexts) on the Internet. Our collection of more than 12.000 eBooks was produced by hundreds of volunteers. Most of the Project Gutenberg eBooks are older literary works that are in the public domain in the United States. All may be freely downloaded and read, and redistributed for non-commercial use (for complete details, see the license page).
Best of all, all of the books are in plain text, the easiest to manipulate on a computer.
Java Faster Than C++? No Way!
Ever since 1995, the Java world has been fascinated with talks and benchmarks which shows why Java should be/could be/would be/is faster than C++.
At first it was the JIT:
When Java gets a JIT, it would be faster than C++.
Then it was the HotSpot:
When the HotSpot is done, Java would be faster than C++.
Now it is the benchmarks:
Professor So-and-so did a benchmark, and guess what, Java is faster than C++.
And the well-argued theories:
The garbage collector is faster than hand collection for the same amount of garbage.
But my experience tells me that Java is slower than C++:
- My Java based "Hello, World." program is slower than my C++ "Hello, World." program.
- My Java based Java compiler is slower than my C++ based Java compiler.
- My Java based IDE (wonderful as it is) is slower than my C++ based IDE.
- My Java based JavaScript interpreter is slower than my C++ based JavaScript interpreter.
Java has many advantages over C++. Performance is not one of them.
The good news is that the Moore's Law and cheaper memories has done a lot more to boost Java's performance than anything else. Java is the appropriate technology in more and more applications.
Pluto, Jetspeed 2, EXO Portal, Liferay, ...
Sean Goggins gave a very thorough presentation on the Java Portlet Specification (JSR 168) and demoed with multiple implementations.
Things I learned:
- Pluto is a reference implementation of a JSR 168 compliant portlet container (not to be confused with a portal). It's an Apache project (originated from IBM?)
- Jetspeed 2 is a servlet based implementation of a portal that uses Pluto as its portlet container. It's also an Apache project.
- EXO Portal is another servlet based implementation of a portal that supports JSR 168 conforming portlets.
- Liferay is a J2EE based implementation of a portal that can be deployed in any J2EE app server.
- WebSphere, BEA, SAP, Novell, Oracle all have their own implementations of portals.
- You write portlets much like you write servlets. And you can deploy them in any compliant portlet containers.
The presentation material is here.
Go Listen To Ted
TheServerSide.com: What do you think it (SOA) is?
Ted Neward: It's a buzz word! It's a buzz word! It's an opportunity for those of us who sell consulting services to make more money! That's all it is.
TheServerSide.com: Why is it (class loaders) busted?
Ted Neward: We ask to much of it. We ask our class loaders to be both a code loading mechanism and an isolation mechanism. We definitely need isolates.
I haven't read his book yet. But I attended his Enterprise Java session at the St. Louis NFJS Symposium last year. I recommend him highly.
Eclipse Section in Dr. Dobb's Journal
The October issue of Dr. Dobb's Journal features four Eclipse articles:
- Penumbra: Simplifying Eclipse by Frank Mueller and Antony L. Hosking
- The Eclipse Visual Editor for Java by Michael Pilone
- Refactoring with Eclipse by Hugo Troche
- Eclipse 3.0's Rich Client Platform by Gene Sally and Maciej Halasz
This is the second issue that contains an Eclipse section. Last month they covered the CDT and EMF.
If you are into Eclipse, you probably want to get these two issues of DDJ.
[Fwd: Enterprise developer research at Adobe]
Hello Weigi!
My name is Carole Libizangomo, and I recruit participants for the User Research team at Adobe. The User Research Team is currently conducting research studies (one on one interviews, phone interviews, usability studies, site visits) with developers to learn more about the application development workflow.
We are looking for enterprise developers who are building business web or client applications (specifically, ones written in JSP, ASP.NET, Java, Visual Basic or Visual C#).
I got your contact from your website OCWIB.com
A typical study is between one-and-a-half to two hours long. If you are selected to participate, you will receive a $75 gift certificate as a token of our appreciation. If you or someone you know might be interested in participating in a session, please send your/their names and contact info to me, Carole Libizangomo at developers@adobe.com , and fill out our screener at http://www.surveymonkey.com/s.asp?u=34714598717
If you have any questions, please feel free to e-mail me.
Thank you very much!
Best regards,
Carole Libizangomo
Adobe User Research
P.S. Please feel free to forward this e-mail to other developers.
Thank You!
Jython Runs Again With Java 5.0 RC
It seems that my problem in running Jython went away when I upgraded to Java 5.0 RC:
[weiqi@gao] $ java -version java version "1.5.0-rc" Java(TM) 2 Runtime Environment, Standard Edition (build 1.5.0-rc-b63) Java HotSpot(TM) Client VM (build 1.5.0-rc-b63, mixed mode, sharing) [weiqi@gao] $ jython Jython 2.1 on java1.5.0-rc (JIT: null) Type "copyright", "credits" or "license" for more information. >>>







