Java 5.0: September 30!
From a post at the Javalobby:
Graham Hamilton: The current target release date for J2SE 5.0 (Tiger) is September 30th.
That is the target: as I am sure people understand, we are watching quality and customer feedback closely and will adjust if needed. But right now things are looking good for hitting that date.
Weblogs and Newsgroups
Bloglines.com is offering the ability to subscribe to Google Groups and Yahoo Groups and a few other kinds of online forums.
I have always thought Weblogs are a simplified version of the Usenet newsgroups. As a matter of fact, my first experience with Weblogs are through a NNTP based aggregator called nntp://rss.
Now that I can compare weblogs and newsgroups within the same interface (granted an interface designed for weblogs, not newsgroups), a few features of newsgroups that I miss the most is clear:
- The concept of a thread. The ability to mutate a follow-up into a full-fledged entry.
- The delivery of follow-ups the same way originals are delivered.
- The ability to have discussions appear to happen in multiple groups, and if I read it through one group, it will be marked read in all groups.
- The ability to also email an entry or a follow-up to additional email recipients, at the time of posting.
Ant Is Not a Shell, ClassLoaders Are Not Processes
Coming off Java for a little while after six years of immersion offered me an opportunity to look at Java from a different perspective. In particular, I got to look at some of Java's deficiencies from a non-defensive perspective.
Take this post: Static: friend or foe?, for example. Cedric pointed out that the java task in Ant, if not "fork"ed, leaves the invoked classes loaded and any of their one time (static) initializations done. Thus if two non-forked java tasks are run in the same Ant invocation, the first can affect the second in surprising ways.
His advice, avoid static variables as a rule of thumb, though good in intention, and sound in principle, does not address the root of the problem:
Ant is not a shell. It a build tool with its own wrinkles.
Now take a look at a proposed remedy for the problem. It essentially want Ant to use a different classloader for each non-forked java task. This will fix the symptom in Cedric's example, but it doesn't go far enough. For example, classes loaded by other tasks (including custom tasks) would still be loaded and initialized.
The problem with ClassLoaders is this:
ClassLoaders are not processes. It a (square) reinvention of the process wheel.
For all the ClassLoader fans out there, here's a question for you: How do you do ICC (inter-classloader communication)?
QualComm QCP-1960
People seems to get excited about their cell phones.
I thought I'll join the crowd by showing off my QualComm QCP-1960:
It has buttons that I can use to dial a phone number. And when the other end picks up the phone, we can talk, for hours.
It also rings when someone calls me. I can pick up the phone and talk, also for hours, if we wanted to.
PDF Generation From OpenOffice
Generating PDF files from the likes of Word documents and PowerPoint slides has always been a hassle. I've used two roundabout ways to accomplish the task in the past: i) use a PostScript print driver to print to a file and then run GhostScript's ps2pdf over the result; or ii) use a PDF print driver. Others have used Adobe's Distiller.
In a conversation last week, I learned that the latest version of Open Office included the export to PDF feature. I am aware of the feature and vaguely remember it being available on Linux but not on Windows. But that was way back when.
So I took another look at my Open Office 1.1.1 on Windows XP Pro. And sure enough, the "Export as PDF ..." item is right there in the "File" menu. And it works for text documents, spreadsheets and presentations.
Thanks, Open Office developers!
Cygwin Notes
The D programming language arrived at my Cygwin installation today. You just change all your c's to d's :) :
[weiqi@gao] $ cat foo.d int main() { printf("hello, world.\n"); } [weiqi@gao] $ gdc -o foo foo.d [weiqi@gao] $ ./foo hello, world
The Windows clipboard can be accessed as /dev/clipboard from the bash command line. Now I can do
[weiqi@gao] $ head -1 ChangeLog > /dev/clipboard
to put the first line of the ChangeLog into the clipboard, and !!cat /dev/clipboard in Vim to paste it into the CVS log:
CVS: ---------------------------------------------------------------------- CVS: Enter Log. Lines beginning with `CVS:' are removed automatically CVS: CVS: Committing in ... ~ ~ ~ :.!cat /dev/clipboard
The ascii command prints the ASCII table to stdout, including the beep.
Learned a few more tricks in Vim:
- The * command finds and highlights the next instance of the word under the cursor.
- The % command finds matching parenthesis, brackets and braces. It also finds matching #if/#else/#elseif/#endif's in C source files.
- Ctrl-n is the word completion command. It cycles through all possible completions. It knows about symbols from #included header files.
Did I say "header files"?
James Gosling, Open Source, Future of Java, ...
Take a look at this Wikipedia page on James Gosling:
He is the "father" of the Java programming language, as well as the creator of NeWS and Gosling Emacs.
While reading the "NeWS" and "Gosling Emacs" entries I can't help but to realize how badly has Free Software treated Gosling's creations in the past.
All of a sudden, Sun's hesitation about open sourcing Java, the foot-dragging, the ambiguity, the conflicting manifestations of "we'll open source Java, eventually" and "over my dead body", ..., all made sense.
True, Sun's big on Open Source, but those are done by Bill Joy, and whoever the StarOffice guy is. And they have left Sun, at least Bill Joy has.
My prediction: Sun will never open source Java. Java will die a Cobol death---becoming the Enterprise language for the next century.
And Paul Graham will be made right:
I've read that Java has just overtaken Cobol as the most popular language. As a standard, you couldn't wish for more. But as a medium of expression, you could do a lot better. Of all the great programmers I can think of, I know of only one who would voluntarily program in Java. And of all the great programmers I can think of who don't work for Sun, on Java, I know of zero.
Quote of the Day
I predict that within ten years, we'll have clothing that runs screensavers, and what's more, we'll have gangs of people running around with synchronized displays to show that they "belong". Schools will then outlaw gang screensavers, and impose uniform screensavers on their students. Someone will hack into your clothes processor just to get you into trouble with the teachers. Norton and McAfee will sell software to make sure your clothes keep saying what you want them to say, and not what someone else wants them to say. Or show...
---Larry Wall, The State of the Onion
Mono 1.0.1 Released
I just noticed that the Mono 1.0.1 bug fix release is available on their download site.
I installed it on my Fedora Core 1 laptop using yum from the repository at http://www.go-mono.com/archive/1.0.1/fedora-1-i386.
Here's what I have to do to get the Mono 1.0.1 update over my Mono 1.0 intallation. I find myself secretly wishing Java stuff---JDK, J2EE, JBoss, etc.---could be this easy to install. But nobody listens to me. :(
[root@gao]# yum update Gathering header information file(s) from server(s) Server: Mono 1.0.1 Finding updated packages Downloading needed headers mono-basic-0-1.0.1-1.ximi 100% |=========================| 1.2 kB 00:00 mono-nunit-0-1.0.1-1.ximi 100% |=========================| 1.2 kB 00:00 bytefx-data-mysql-0-1.0.1 100% |=========================| 1.2 kB 00:00 xsp-0-1.0.1-1.ximian.7.0. 100% |=========================| 4.9 kB 00:00 mono-drawing-0-1.0.1-1.xi 100% |=========================| 1.1 kB 00:00 mono-data-0-1.0.1-1.ximia 100% |=========================| 1.4 kB 00:00 mono-locale-mideast-0-1.0 100% |=========================| 1.1 kB 00:00 ikvm-1-0.8.0.0-1.ximian.7 100% |=========================| 1.5 kB 00:00 mono-web-services-0-1.0.1 100% |=========================| 1.6 kB 00:00 mono-locale-cjk-0-1.0.1-1 100% |=========================| 1.1 kB 00:00 mono-data-postgresql-0-1. 100% |=========================| 1.2 kB 00:00 mono-ziplib-0-1.0.1-1.xim 100% |=========================| 1.1 kB 00:00 mono-data-sybase-0-1.0.1- 100% |=========================| 1.1 kB 00:00 mono-locale-other-0-1.0.1 100% |=========================| 1.1 kB 00:00 mono-runtime-devel-0-1.0. 100% |=========================| 3.5 kB 00:00 mono-xml-relaxng-0-1.0.1- 100% |=========================| 1.1 kB 00:00 mono-web-forms-0-1.0.1-1. 100% |=========================| 1.3 kB 00:00 gecko-sharp-0-0.5-2.ximia 100% |=========================| 1.3 kB 00:00 mono-ikvm-0-1.0.1-1.ximia 100% |=========================| 1.1 kB 00:00 mono-novell-directory-0-1 100% |=========================| 1.1 kB 00:00 mono-ms-enterprise-0-1.0. 100% |=========================| 1.1 kB 00:00 mono-preview-0-1.0.1-1.xi 100% |=========================| 4.1 kB 00:00 gtk-sharp-gapi-0-1.0-1.xi 100% |=========================| 2.1 kB 00:00 monodoc-0-1.0.1-1.ximian. 100% |=========================| 2.8 kB 00:00 mono-data-oracle-0-1.0.1- 100% |=========================| 1.1 kB 00:00 gtksourceview-sharp-0-0.5 100% |=========================| 1.7 kB 00:00 mono-core-0-1.0.1-1.ximia 100% |=========================| 3.4 kB 00:00 libgdiplus-0-1.0.1-1.ximi 100% |=========================| 1.4 kB 00:00 mono-directory-0-1.0.1-1. 100% |=========================| 1.1 kB 00:00 monodevelop-0-0.5-1.ximia 100% |=========================| 15 kB 00:00 mono-winforms-0-1.0.1-1.x 100% |=========================| 1.4 kB 00:00 mono-data-sqlite-0-1.0.1- 100% |=========================| 1.1 kB 00:00 mono-remoting-0-1.0.1-1.x 100% |=========================| 1.4 kB 00:00 gtk-sharp-0-1.0-1.ximian. 100% |=========================| 3.5 kB 00:00 mono-core-devel-0-1.0.1-1 100% |=========================| 2.2 kB 00:00 mono-locale-rare-0-1.0.1- 100% |=========================| 1.1 kB 00:00 mono-ms-extras-0-1.0.1-1. 100% |=========================| 1.5 kB 00:00 mono-peapi-0-1.0.1-1.ximi 100% |=========================| 1.1 kB 00:00 mono-complete-0-1.0.1-1.x 100% |=========================| 1.1 kB 00:00 mono-posix-0-1.0.1-1.ximi 100% |=========================| 1.3 kB 00:00 ibm-data-db2-0-1.0.1-1.xi 100% |=========================| 1.1 kB 00:00 mono-complete-devel-0-1.0 100% |=========================| 912 B 00:00 mono-cairo-0-1.0.1-1.ximi 100% |=========================| 1.1 kB 00:00 Resolving dependencies Dependencies resolved I will do the following: [update: mono-basic 1.0.1-1.ximian.7.1.i386] [update: mono-nunit 1.0.1-1.ximian.7.1.i386] [update: bytefx-data-mysql 1.0.1-1.ximian.7.1.i386] [update: xsp 1.0.1-1.ximian.7.0.i386] [update: mono-drawing 1.0.1-1.ximian.7.1.i386] [update: mono-data 1.0.1-1.ximian.7.1.i386] [update: mono-runtime-devel 1.0.1-1.ximian.7.1.i386] [update: ikvm 1:0.8.0.0-1.ximian.7.1.noarch] [update: mono-web-services 1.0.1-1.ximian.7.1.i386] [update: mono-locale-cjk 1.0.1-1.ximian.7.1.i386] [update: mono-data-postgresql 1.0.1-1.ximian.7.1.i386] [update: mono-ziplib 1.0.1-1.ximian.7.1.i386] [update: mono-data-sybase 1.0.1-1.ximian.7.1.i386] [update: mono-locale-other 1.0.1-1.ximian.7.1.i386] [update: mono-xml-relaxng 1.0.1-1.ximian.7.1.i386] [update: mono-web-forms 1.0.1-1.ximian.7.1.i386] [update: mono-core-devel 1.0.1-1.ximian.7.1.i386] [update: mono-ikvm 1.0.1-1.ximian.7.1.i386] [update: monodevelop 0.5-1.ximian.7.2.i386] [update: gecko-sharp 0.5-2.ximian.7.1.i386] [update: mono-ms-enterprise 1.0.1-1.ximian.7.1.i386] [update: mono-preview 1.0.1-1.ximian.7.1.i386] [update: gtk-sharp-gapi 1.0-1.ximian.7.0.i386] [update: monodoc 1.0.1-1.ximian.7.1.i386] [update: mono-data-oracle 1.0.1-1.ximian.7.1.i386] [update: gtksourceview-sharp 0.5-1.ximian.7.1.i386] [update: mono-core 1.0.1-1.ximian.7.1.i386] [update: libgdiplus 1.0.1-1.ximian.7.1.i386] [update: mono-directory 1.0.1-1.ximian.7.1.i386] [update: ibm-data-db2 1.0.1-1.ximian.7.1.i386] [update: mono-novell-directory 1.0.1-1.ximian.7.1.i386] [update: mono-winforms 1.0.1-1.ximian.7.1.i386] [update: mono-data-sqlite 1.0.1-1.ximian.7.1.i386] [update: mono-remoting 1.0.1-1.ximian.7.1.i386] [update: gtk-sharp 1.0-1.ximian.7.0.i386] [update: mono-locale-rare 1.0.1-1.ximian.7.1.i386] [update: mono-ms-extras 1.0.1-1.ximian.7.1.i386] [update: mono-locale-mideast 1.0.1-1.ximian.7.1.i386] [update: mono-peapi 1.0.1-1.ximian.7.1.i386] [update: mono-complete 1.0.1-1.ximian.7.1.i386] [update: mono-posix 1.0.1-1.ximian.7.1.i386] [update: mono-complete-devel 1.0.1-1.ximian.7.1.i386] [update: mono-cairo 1.0.1-1.ximian.7.1.i386] Is this ok [y/N]: y Getting mono-basic-1.0.1-1.ximian.7.1.i386.rpm mono-basic-1.0.1-1.ximian 100% |=========================| 492 kB 00:12 Getting mono-nunit-1.0.1-1.ximian.7.1.i386.rpm mono-nunit-1.0.1-1.ximian 100% |=========================| 104 kB 00:02 Getting bytefx-data-mysql-1.0.1-1.ximian.7.1.i386.rpm bytefx-data-mysql-1.0.1-1 100% |=========================| 83 kB 00:02 Getting xsp-1.0.1-1.ximian.7.0.i386.rpm xsp-1.0.1-1.ximian.7.0.i3 100% |=========================| 211 kB 00:05 Getting mono-drawing-1.0.1-1.ximian.7.1.i386.rpm mono-drawing-1.0.1-1.ximi 100% |=========================| 260 kB 00:06 Getting mono-data-1.0.1-1.ximian.7.1.i386.rpm mono-data-1.0.1-1.ximian. 100% |=========================| 574 kB 00:14 Getting mono-runtime-devel-1.0.1-1.ximian.7.1.i386.rpm mono-runtime-devel-1.0.1- 100% |=========================| 255 kB 00:06 Getting ikvm-0.8.0.0-1.ximian.7.1.noarch.rpm ikvm-0.8.0.0-1.ximian.7.1 100% |=========================| 1.1 MB 00:29 Getting mono-web-services-1.0.1-1.ximian.7.1.i386.rpm mono-web-services-1.0.1-1 100% |=========================| 229 kB 00:05 Getting mono-locale-cjk-1.0.1-1.ximian.7.1.i386.rpm mono-locale-cjk-1.0.1-1.x 100% |=========================| 233 kB 00:05 Getting mono-data-postgresql-1.0.1-1.ximian.7.1.i386.rpm mono-data-postgresql-1.0. 100% |=========================| 107 kB 00:02 Getting mono-ziplib-1.0.1-1.ximian.7.1.i386.rpm mono-ziplib-1.0.1-1.ximia 100% |=========================| 102 kB 00:02 Getting mono-data-sybase-1.0.1-1.ximian.7.1.i386.rpm mono-data-sybase-1.0.1-1. 100% |=========================| 100 kB 00:02 Getting mono-locale-other-1.0.1-1.ximian.7.1.i386.rpm mono-locale-other-1.0.1-1 100% |=========================| 24 kB 00:00 Getting mono-xml-relaxng-1.0.1-1.ximian.7.1.i386.rpm mono-xml-relaxng-1.0.1-1. 100% |=========================| 85 kB 00:02 Getting mono-web-forms-1.0.1-1.ximian.7.1.i386.rpm mono-web-forms-1.0.1-1.xi 100% |=========================| 648 kB 00:16 Getting mono-core-devel-1.0.1-1.ximian.7.1.i386.rpm mono-core-devel-1.0.1-1.x 100% |=========================| 504 kB 00:12 Getting mono-ikvm-1.0.1-1.ximian.7.1.i386.rpm mono-ikvm-1.0.1-1.ximian. 100% |=========================| 13 kB 00:00 Getting monodevelop-0.5-1.ximian.7.2.i386.rpm monodevelop-0.5-1.ximian. 100% |=========================| 1.6 MB 00:39 Getting gecko-sharp-0.5-2.ximian.7.1.i386.rpm gecko-sharp-0.5-2.ximian. 100% |=========================| 21 kB 00:00 Getting mono-ms-enterprise-1.0.1-1.ximian.7.1.i386.rpm mono-ms-enterprise-1.0.1- 100% |=========================| 39 kB 00:00 Getting mono-preview-1.0.1-1.ximian.7.1.i386.rpm mono-preview-1.0.1-1.ximi 100% |=========================| 7.2 MB 03:03 Getting gtk-sharp-gapi-1.0-1.ximian.7.0.i386.rpm gtk-sharp-gapi-1.0-1.ximi 100% |=========================| 188 kB 00:04 Getting monodoc-1.0.1-1.ximian.7.1.i386.rpm monodoc-1.0.1-1.ximian.7. 100% |=========================| 7.5 MB 03:13 Getting mono-data-oracle-1.0.1-1.ximian.7.1.i386.rpm mono-data-oracle-1.0.1-1. 100% |=========================| 84 kB 00:02 Getting gtksourceview-sharp-0.5-1.ximian.7.1.i386.rpm gtksourceview-sharp-0.5-1 100% |=========================| 71 kB 00:01 Getting mono-core-1.0.1-1.ximian.7.1.i386.rpm mono-core-1.0.1-1.ximian. 100% |=========================| 4.2 MB 01:48 Getting libgdiplus-1.0.1-1.ximian.7.1.i386.rpm libgdiplus-1.0.1-1.ximian 100% |=========================| 1.5 MB 00:38 Getting mono-directory-1.0.1-1.ximian.7.1.i386.rpm mono-directory-1.0.1-1.xi 100% |=========================| 32 kB 00:00 Getting ibm-data-db2-1.0.1-1.ximian.7.1.i386.rpm ibm-data-db2-1.0.1-1.ximi 100% |=========================| 60 kB 00:01 Getting mono-novell-directory-1.0.1-1.ximian.7.1.i386.rpm mono-novell-directory-1.0 100% |=========================| 187 kB 00:04 Getting mono-winforms-1.0.1-1.ximian.7.1.i386.rpm mono-winforms-1.0.1-1.xim 100% |=========================| 563 kB 00:14 Getting mono-data-sqlite-1.0.1-1.ximian.7.1.i386.rpm mono-data-sqlite-1.0.1-1. 100% |=========================| 21 kB 00:00 Getting mono-remoting-1.0.1-1.ximian.7.1.i386.rpm mono-remoting-1.0.1-1.xim 100% |=========================| 116 kB 00:02 Getting gtk-sharp-1.0-1.ximian.7.0.i386.rpm gtk-sharp-1.0-1.ximian.7. 100% |=========================| 1.4 MB 00:34 Getting mono-locale-rare-1.0.1-1.ximian.7.1.i386.rpm mono-locale-rare-1.0.1-1. 100% |=========================| 127 kB 00:03 Getting mono-ms-extras-1.0.1-1.ximian.7.1.i386.rpm mono-ms-extras-1.0.1-1.xi 100% |=========================| 104 kB 00:02 Getting mono-locale-mideast-1.0.1-1.ximian.7.1.i386.rpm mono-locale-mideast-1.0.1 100% |=========================| 19 kB 00:00 Getting mono-peapi-1.0.1-1.ximian.7.1.i386.rpm mono-peapi-1.0.1-1.ximian 100% |=========================| 80 kB 00:02 Getting mono-complete-1.0.1-1.ximian.7.1.i386.rpm mono-complete-1.0.1-1.xim 100% |=========================| 3.5 kB 00:00 Getting mono-posix-1.0.1-1.ximian.7.1.i386.rpm mono-posix-1.0.1-1.ximian 100% |=========================| 18 kB 00:00 Getting mono-complete-devel-1.0.1-1.ximian.7.1.i386.rpm mono-complete-devel-1.0.1 100% |=========================| 2.5 kB 00:00 Getting mono-cairo-1.0.1-1.ximian.7.1.i386.rpm mono-cairo-1.0.1-1.ximian 100% |=========================| 24 kB 00:00 Running test transaction: Test transaction complete, Success! mono-core 100 % done 1/86 mono-preview 100 % done 2/86 mono-data 100 % done 3/86 mono-winforms 100 % done 4/86 gtk-sharp 100 % done 5/86 mono-ziplib 100 % done 6/86 mono-ms-enterprise 100 % done 7/86 mono-posix 100 % done 8/86 mono-web-services 100 % done 9/86 mono-remoting 100 % done 10/86 mono-web-forms 100 % done 11/86 mono-nunit 100 % done 12/86 mono-ikvm 100 % done 13/86 mono-novell-directory 100 % done 14/86 mono-peapi 100 % done 15/86 mono-directory 100 % done 16/86 mono-core-devel 100 % done 17/86 bytefx-data-mysql 100 % done 18/86 gecko-sharp 100 % done 19/86 monodoc 100 % done 20/86 gtksourceview-sharp 100 % done 21/86 mono-data-postgresql 100 % done 22/86 mono-ms-extras 100 % done 23/86 mono-data-sybase 100 % done 24/86 mono-data-oracle 100 % done 25/86 ibm-data-db2 100 % done 26/86 mono-data-sqlite 100 % done 27/86 mono-cairo 100 % done 28/86 mono-basic 100 % done 29/86 mono-runtime-devel 100 % done 30/86 mono-locale-cjk 100 % done 31/86 mono-locale-other 100 % done 32/86 mono-xml-relaxng 100 % done 33/86 mono-locale-rare 100 % done 34/86 mono-locale-mideast 100 % done 35/86 libgdiplus 100 % done 36/86 mono-drawing 100 % done 37/86 xsp 100 % done 38/86 ikvm 100 % done 39/86 monodevelop 100 % done 40/86 gtk-sharp-gapi 100 % done 41/86 mono-complete 100 % done 42/86 mono-complete-devel 100 % done 43/86 Completing update for mono-basic - 44/86 Completing update for mono-nunit - 45/86 Completing update for bytefx-data-mysql - 46/86 Completing update for xsp - 47/86 Completing update for mono-drawing - 48/86 Completing update for mono-data - 49/86 Completing update for mono-runtime-devel - 50/86 Completing update for ikvm - 51/86 Completing update for mono-web-services - 52/86 Completing update for mono-locale-cjk - 53/86 Completing update for mono-data-postgresql - 54/86 Completing update for mono-ziplib - 55/86 Completing update for mono-data-sybase - 56/86 Completing update for mono-locale-other - 57/86 Completing update for mono-xml-relaxng - 58/86 Completing update for mono-web-forms - 59/86 Completing update for mono-core-devel - 60/86 Completing update for mono-ikvm - 61/86 Completing update for monodevelop - 62/86 Completing update for gecko-sharp - 63/86 Completing update for mono-ms-enterprise - 64/86 Completing update for mono-preview - 65/86 Completing update for gtk-sharp-gapi - 66/86 Completing update for monodoc - 67/86 Completing update for mono-data-oracle - 68/86 Completing update for gtksourceview-sharp - 69/86 Completing update for mono-core - 70/86 Completing update for libgdiplus - 71/86 Completing update for mono-directory - 72/86 Completing update for ibm-data-db2 - 73/86 Completing update for mono-novell-directory - 74/86 Completing update for mono-winforms - 75/86 Completing update for mono-data-sqlite - 76/86 Completing update for mono-remoting - 77/86 Completing update for gtk-sharp - 78/86 Completing update for mono-locale-rare - 79/86 Completing update for mono-ms-extras - 80/86 Completing update for mono-locale-mideast - 81/86 Completing update for mono-peapi - 82/86 Completing update for mono-posix - 83/86 Completing update for mono-cairo - 84/86 Updated: mono-basic 1.0.1-1.ximian.7.1.i386 mono-nunit 1.0.1-1.ximian.7.1.i386 bytefx-data-mysql 1.0.1-1.ximian.7.1.i386 xsp 1.0.1-1.ximian.7.0.i386 mono-drawing 1.0.1-1.ximian.7.1.i386 mono-data 1.0.1-1.ximian.7.1.i386 mono-runtime-devel 1.0.1-1.ximian.7.1.i386 ikvm 1:0.8.0.0-1.ximian.7.1.noarch mono-web-services 1.0.1-1.ximian.7.1.i386 mono-locale-cjk 1.0.1-1.ximian.7.1.i386 mono-data-postgresql 1.0.1-1.ximian.7.1.i386 mono-ziplib 1.0.1-1.ximian.7.1.i386 mono-data-sybase 1.0.1-1.ximian.7.1.i386 mono-locale-other 1.0.1-1.ximian.7.1.i386 mono-xml-relaxng 1.0.1-1.ximian.7.1.i386 mono-web-forms 1.0.1-1.ximian.7.1.i386 mono-core-devel 1.0.1-1.ximian.7.1.i386 mono-ikvm 1.0.1-1.ximian.7.1.i386 monodevelop 0.5-1.ximian.7.2.i386 gecko-sharp 0.5-2.ximian.7.1.i386 mono-ms-enterprise 1.0.1-1.ximian.7.1.i386 mono-preview 1.0.1-1.ximian.7.1.i386 gtk-sharp-gapi 1.0-1.ximian.7.0.i386 monodoc 1.0.1-1.ximian.7.1.i386 mono-data-oracle 1.0.1-1.ximian.7.1.i386 gtksourceview-sharp 0.5-1.ximian.7.1.i386 mono-core 1.0.1-1.ximian.7.1.i386 libgdiplus 1.0.1-1.ximian.7.1.i386 mono-directory 1.0.1-1.ximian.7.1.i386 ibm-data-db2 1.0.1-1.ximian.7.1.i386 mono-novell-directory 1.0.1-1.ximian.7.1.i386 mono-winforms 1.0.1-1.ximian.7.1.i386 mono-data-sqlite 1.0.1-1.ximian.7.1.i386 mono-remoting 1.0.1-1.ximian.7.1.i386 gtk-sharp 1.0-1.ximian.7.0.i386 mono-locale-rare 1.0.1-1.ximian.7.1.i386 mono-ms-extras 1.0.1-1.ximian.7.1.i386 mono-locale-mideast 1.0.1-1.ximian.7.1.i386 mono-peapi 1.0.1-1.ximian.7.1.i386 mono-complete 1.0.1-1.ximian.7.1.i386 mono-posix 1.0.1-1.ximian.7.1.i386 mono-complete-devel 1.0.1-1.ximian.7.1.i386 mono-cairo 1.0.1-1.ximian.7.1.i386 Transaction(s) Complete
Software Version Inertia
When you create a JFrame, do you also add a little WindowListener so that it will close properly?
Do you double click on the SystemMenuBox to close a window in Windows?
Do you set a local variable to null right before it goes out of scope to "help the JVM garbage collect the object"?
Do you set your IDE to use "version 4 keyboard bindings" even though the current version is already 10?
Do you still use java.util.Date methods that have been deprecated for years?
Do you use any features of Microsoft Office 10 that are not present in Microsoft Office 6?
If you do, then you have experienced software version inertia---the phenomenon that people seem to latch on a particular version of software and stopped progressing.
The version of software that you parked yourself in is usually the one that you feel comfortable and productive. Any further learning would generate diminished returns.
I don't think this is a bad thing. The way I see it, the learning has got to stop, and the working has got to begin!
Just the 'internet' Now
Via Slashdot.org, Wired News has proclaimed "It's Just the 'internet' Now":
Effective with this sentence, Wired News will no longer capitalize the "I" in internet.
At the same time, Web becomes web and Net becomes net.
Randall Hauch on Writing Eclipse Plugins
What is Eclipse?
If you read the trade magazines, you'd think it's an IDE. If you are IBM, you'd thinks it's the solution to all problems. And if you are Sun, you'd think it's a conspiracy against Sun.
Thus began Randall Hauch of MetaMatrix at yesterdays St. Louis JUG meeting.
He went on to introduce Eclipse Plugin development to an auditoriumful of Java developers, most of whom have used Eclipse as an IDE but only a few had actually developed Eclipse Plugins.
Coming into the meeting not knowing any details about Eclipse's Plugin architecture and the PDE, I felt Randall did an excellent job in explaining it.
He spent well over half the time creating and demonstrating some very interesting plugins. I'm afraid my short blog won't convey the atmosphere at the meeting. You really have to be there to get the most benefit out of the presentation.
The presentation PDF is here. The Eclipse workspace containing all the plugins Randall developed during the presentation is zipped here.
Java News Brief (JNB): Some Other New Features in J2SE 1.5
Dean Wette writes about Some Other New Features in Java 2 Standard Edition 1.5 in this month's installment of OCI Java News Brief.
Missouri Back-To-School Tax Holidays (Aug. 13--15, 2004)
Certain back-to-school supplies (including personal computers under $2000.00) will be exempt from Missouri state sales tax (4.225%) this weekend.
STLJUG: How To Develop Eclipse Plugins
Just want to remind St. Louis area Java developers that this week's St. Louis Java Users Group presentation is How To Develop Eclipse Plugins by Randall Hauch of MetaMatrix.
It's Thursday, August 12, 2004, evening 6:30-8:00pm at One City Place in Creve Coeur. It's FREE. There will be SANDWICHES and COOKIES. :)
Come!
Books, Unread Books, and PDFs
Jeff Brown blogged about SourceBeat.com yesterday. Jeff wondered whether the $29.95 price is too high for an electronic copy of a book. Jeff also mentioned people's preference of paper books over electronic ones.
I commented on the paper vs. electronic aspect, and offered my reasons for why I liked paper books and dislike electronic books.
Matt Riable, a SourceBeat author, reasoned against both the price and the paper vs. electronic concerns.
Here's more of my thoughts:
Books: There are different kind of books. In the "computer books" category there are the heavy-weight ones like the Donald Knuth's The Art of Computer Programming and any one of the compiler books; then there are the best sellers like Thinking In Java, Java in a Nutshell; and then the longer shell life volumes such as the Design Patterns, Effective Java; and then the shorter lived Learn X 1.0.1 in 7 Minutes. There are fundamental differences between the categories. For example, for DEK's books the publisher is willing to wait for decades!
Electronic versions of Real Books: I bought all editions of Java In a Nutshell. I also bought the CD version of the same book at one time. I ended up throwing the CD away. The paper books are heavily used. So my dislike for online books are from my experience. Other people might have different experiences. Last year, when I had the choice to buy either the paper version or the electronic version of Object-Oriented Perl, I opted for the paper edition, even though it's more expensive.
Books Bought But Never Read: I have bought my share of books that I was never able to finish, either because I lost interest in the subject or because they (author, publisher) lost interest in the subject. Struts In Action is an example. I never was on a Struts project and now the version of Struts described in the book is obsolete. I never finished Inside OLE, second edition, either. Almost all of my electronic books (free from TheServerSide.com, etc.) are unread. The exception being Paul Graham's On Lisp (I printed it out) and ESR's The Art of UNIX Programming (It's a website).
Product Documentations: They are not really books although they look like books. I never buy those. They (employer, client, project) have to buy them for me. They have to pay me for me to read them.
PDFs: PDFs are not meant to be read online!
Price: A good book is a good book. Price doesn't matter.
I stand by my claim: the more thought and effort an author put into a book, the more likely I will read it. (I have bought only a couple of Wrox books---Michael Kay's XSLT, and Rod Johnson's One-On-One. I did have the latest Pro JSP :) .)
Office Depot Recycles Technology Hardware---For Free
I just took my old InkJet printer to Office Depot. They are offering a free recycling program until Labor Day.
They take one item per customer per day. I'm going to send them my old Gateway P5-200 :) system tomorrow.
Cross-Platform As Long As It's Windows, Solaris, Linux/x86?
Mike Shoemaker is not happy about the fact that the recently released Together Designer Community Edition is not available for Mac OS X.
Why on earth would one write a Java program, which supposedly runs anywhere a JVM is available, and then restricts its usefulness by locking it into a platform specific installer?
This is plain silly.
If your program is truly pure Java, at least provide a generic zip bundle so that it can be installed on all these other platforms that are not Windows, Solaris or Linux/x86.