Mac mini: The One Week Review
The Mac mini has been here for a week now. What have I learned from it? And what have I done with it?
Well, I haven't done too much, but I have certainly learned quite a bit. This Ars Technica article gave me some pretty good starter's information.
My impressions follow:
- My plan was not to do development work on this machine. But Bob Lee pointed out that the JDK is bundled with the machine. Upon further inspection, I found out that Xcode 1.5 is also bundled, with an Interface Builder and a whole lot of tools. So much for not doing development.
- Eric Burke wanted to know how slow the Mac mini is. And of course the most objective way of measuring that is to run the SETI@Home program. So I downloaded the Mac OS X version and started it overnight. Aside from the fact that the program won't keep the machine from falling into sleep, things are straightforward. I have completed 4 work units, with an average CPU time per work unit at 6 hr 31 min 24.9 sec.
- Everything looks and feels like iTunes. I thought the iTunes user interface was good when I used the Windows version. Over here every application has that quantity. I've used Safari, Mail, iPhoto, iMovie and a few other things.
- I bought the basic Mac keyboard and mouse. And of course I'm suffering from the my-right-click-is-really-a-left-click symdrome. The problem is most pronounced while I'm browsing web sites. I have a habit of copying the URL of unfamiliar or suspicious links and open them in a different browser, just to be sure of the actual site I visit. (I once clicked on an innocent looking link that triggered a flood of pop-up windows faster than I can close them.)
- Comparing the Mac keyboard and the PC keyboard I noticed that the Print Scrn/SysRe, Scroll Lock, Pause/Break and Num Lock keys are missing. My first question was "How am I going to do screen shots?" Googling for that question brought up a confusing array of hits. I found the answer in the afore mentioned article, which I printed out a few weeks ago, when I told Kevin Heifner I wanted to buy a Mac mini.
- On the other hand, do you ever use your Scroll Lock key? What does it do anyway? It doesn't lock my scrolls!
- The Home and End keys does not do the expected things. Instead, it brings you to the Home (the beginning) or the End of the buffer. Just like in Emacs (at least until a couple of years ago, when they remapped the keys). Recognizing that they are doing what Emacs used to do turns out to be a good observation, for the analogy carries over deeper than you think: Guess what these key combinations do: Ctrl-A, Ctrl-E, Ctrl-F, Ctrl-B, Ctrl-K? :)
- I stumbled upon the F9, F10, F11 keys while blindly hitting on keys. Pretty cool. I discovered these before I has a chance to form the complaint about not being able to find obscured windows.
- I had a little trouble with my HP LaserJet 1100 hanging off of a Linux box, not because it's on a LPR/LPD queue, but because there is no Mac OS X driver for the printer. I picked the HP Laser Jet 1200 driver out of frustration. (What else could a reasonable person do?) So far, it's been printing stuff out OK. My HP Photosmart 7350 came with OS X support.
- My HP Photosmart 730 digital camera just worked with iPhoto the first time I plugged it in.
- Yes Brad, I've found the Terminal. (And I have visited every directory there is in the entire system.) And there are lots of GNU tools. Doesn't the *BSDs pride themselves for being a true UNIX and therefore need no GNU's Not Unix tools? Where is the real vi, the one written by Bill Joy for BSD? Oh, I also found out how to do split screens in Terminal. One thing I miss from GNOME Terminal is the ability to open any URL typed or displayed in the terminal from the context menu.
- Garage Band 2 is cool and fun. I did manage to lock up the system with it, to the point where Command-Option-Escape won't work. I have to press the power switch.
- I tried to find a GUI way to add all of my other machine's names into the /etc/hosts file. I couldn't. So I cheated and edited the file with vi. I haven't enabled the root user yet, but apparently my regular user is in the sudo list.
- PDFs are used everywhere. Somehow PDF on the Mac feels lighter weight than on Windows. Double click on them and they open up. No stupid slash screens that hang around for minutes informing me all eight thousand patents that Adobe own.
So far, I'm a satisfied Mac mini user. (No, not a switcher yet, because on the other side of the KVM pedel is my FC3.) I'll still try to be a user on this box. But with a fully functional IDE with a good GUI builder bundled in, you can't blame me for trying out a few lines of Cocoa!
It's Official: The Ant Programming Language
James Duncan Davidson: Remember when I said that "Ant is not a programming language"?...
... So, with all that said, I'm not surprised, but am rather amused, to see that Jon Aquino has now written a video game in an Ant buildfile...
The circle is now complete. All we need is someone standing up claiming "Ant is too complicated. I can make it simpler."
I can even imagine the opening sentence of the new project: "TWR (The Wheel, Reinvented) is a build too just like Ant, but without Ant's wrinkles."
The Mac mini Is Here
The West County Apple Store called telling me my Mac mini has arrived. I picked it up this morning and set it up. Everything went smoothly.
I have wanted to buy a Mac for some time now. I blogged about it 569 days ago. The last time I seriously used a Mac was when it was still called MacIntosh and looked something like this.
The Mac mini gave me a perfect excuse to jump into the Mac OS X world. I purposefully bought the $499 version. And I have decided that I will never work on this machine. No Fedora Core 4 for this Mac mini. Not even the JDK. It's going to be pictures, music, videos and other fun stuff.
Brian Gilstrap on Dependency Injection
Brian Gilstrap: I believe the problems we have with dependency resolution (which dependency injection attempts to solve) are not the real problem, they are the symptom. The real problem is that we ...
Go read.
Don'ts
- Don't make your user mad.
- Don't make your user lose work.
- Don't make your user change email client.
- Don't make your user change email protocol.
- Don't make your user reconfigure ssh client.
- Don't make your user's email stop working.
- Don't make your user's any application stop working.
- Don't make your user's email become slower than before.
- Don't make your user's any application slower than before.
- Don't make your user's shared folders stop working.
- Don't make your user's printing stop working.
- Don't make your user's email stop printing.
- Don't make your user's mailing lists change the way they work.
- Don't make your user's ssh session timeout change the way they work.
- Don't make your user's daily routines stop working.
- Don't make your user's occational use cases stop working.
- Don't make your user's different login profiles overwrite each other.
Now go ahead and upgrade the network infrastructure.
`Oh, @#$%. He's right.'
JWZ: And then Nat went back to whichever flyover state Novell is in, and a few days later he said to me, "wow, you really bummed me out, because the dozen other people I had talked to before you were all like, `a free ????????? system, that's an awesome idea!' Then you depressed me, and I came back here and told the other guys what you had said, and they were all, `Oh, @#$%. He's right.'"
Read the whole thing.
XQuery, Screencast, YAWF, ...
Jon Udell of InfoWorld has been doing something called screencast for a while. I can't find a good definition of the word on the internet. Google's lucky link for the word is one of Jon's screencasts. (MSN search did turn up this O'Reilly Network article written by Jon Udell.)
Today's screencast is a demo of the Mark Logic Content Interaction Server. This screencast is of interest to me for two reasons. First, the product integrates XQuery, a subject I wrote about last year. Second, the presenter is Jason Hunter, author of the servlet book and JDOM.
One attractive aspect of XQuery is that it allows the convenient mixing of XML or HTML fragments with code. The expression-oriented nature of XQuery makes this mixing less offensive than in servlet or JSP, maybe even preferrable.
Here's an example web page and the XQuery source that generated it:
I sense a future for "XQuery on Rails."
Come on! We could all use yet another web framework (YAWF)!
Designing With Dependency Injection
Alex Miller gave this month's presentation at the St. Louis JUG last Thursday.
The topic is Designing With Dependency Injection. The slides are uploaded to the Knowledge Base. See Alex's blog for more details.
javax.script.*
Pat Niemeyer: ...But I'm going to let you in on a little secret. There are really two APIs buried in this specification and one of them is actually quite interesting. Java is about to get a standardized API for working with scripting languages and it's not just about web applications any more...
...(The politics of Groovy continue to amaze me.)...
The politics of the JCP start to get to me now. First the JSR 243 public review balloting, now JSR 223 bias toward groovy. What's next? Vote down JSR requests from the Eclipse foundation?
Java News Brief (JNB): Monitoring and Management with J2SE 5.0
This month's Java News Brief (JNB) talks about Monitoring and Management with J2SE 5.0. It is written by yours truly, based on the OCI internal Java lunch I did 26 days ago.
The inspriation came a few days before J2SE 5.0 was released, when I was looking at the latest beta. What do I do when I inspect a JDK beta? Well, First of all, I did some thing like this:
[weiqi@gao] $ cd $JAVA_HOME/bin; ls appletviewer jarsigner javaws jstack native2ascii serialver apt java jconsole jstat orbd servertool ControlPanel javac jdb jstatd pack200 tnameserv extcheck javadoc jinfo keytool policytool unpack200 HtmlConverter javah jmap kinit rmic idlj javap jps klist rmid jar java-rmi.cgi jsadebugd ktab rmiregistry
I then did a ls in $JAVA_HOME/doc and saw a file named (something like, I don't recall exactly) blockdiagram.html. It contained an HTML table version of the Java Block Diagram. Somehow the word "Management" just jumped out of the HTML table at me. And I said, I have to learn what this is all about.
I can think of numerous situations in my past Java projects where something like this would be very useful, either in development or in production. I hope the article will be helpful for someone.
Like always, please do subscribe to the JNB list (the form is at the upper right corner of the JNB page). You will receive future JNB articles in email.
Oh, one more thing, have you ever read the file $JAVA_HOME/THIRDPARTYLICENSEREADME.txt?
Happy Chinese New Year
Today, Wednesday February 9, 2005, is Chinese New Year, Year 4702 the Year of the Rooster.
To my Chinese and Asian friends and colleagues, a Happy and Prosperous New Year. May all your wishes come true. May all your endeavers be successful.
To everyone else, I have some explaining to do.
The Chinese Calendar
The Chinese calendar is based on the movements of the moon and the sun. Here's how it works. A month starts with a new moon. Since the moon circles the earth in 29.5 days, the length of the month alternates between 29 and 30 days. It always goes 30, 29, 30, 29, 30, 29,... forever.
A year is 12 months. A mornal year has 354 days, 11 days short of a solar year. To catch up with the solar year, every so often (2 or 3 years) there will be a leap month. It's always a 29 day month, making a 383-day year.
Luckily there is a 19 year cycle in the movement of the moon and the sun. So the two calendars goes back in synch every 19 years. So February 9th was also the Chinese New Year in 1986 and will be again in 2024.
Solar Positions
Whereas in the Western world, we notice the four solar stations: Winter and Summer solstice, and the String and Autumn equinox, and call them the "start" of the seasons, in Chinese calendar, we observe 24 such stations: the four just mentioned, plus 20 more, roughly once every half a month. The four just mentioned are considered the "middle" of the season. 12 of the stations are major, the other 12 are minor. The four mentioned above are major ones. It always goes major, minor, major, minor,...
Every month contains a major and a minor. In Western calendar, these fall on roughly exact dates every month, the 6th and 21st from January to June, the 8th and 23rd from July to December. Since the length of the months are so arbitrary in and because of the leap day, the above estimates may be off by as much as 2 days.
In Chinese calendar the solar stations drifts later and later every month since a month is only 29 or 30 days. The month when one of them drifts off the end of the month will contain only one of the solar stations. In such a month, the only solar station in the month is on the 15th. If it is a minor station, the month is a leap month. This always happens on a 29 day month.
Start of the Year, The Animals
The start of the Chinese year is the second new moon after the Winter solstice. It's always between January 23rd and February 22nd.
This has important implications. If you ever went to a Chinese restaurant and read the placemat that has the "Chinese Zodiac" printed on them, you no doubt know your animal sign. Well, if your birthday is before January 23, you belong to the animal sign of the previous year. You don't want to get who's compatible with you wrong, do you?
What's Good About This
Regularity. Solar eclipses always happen on the first of the month. Lunar eclipses always happen on the 15th of the month.
No political influence. Explain why August has 31 days.
Good rough estimates. Raise your head and look for the moon. You can deduce the date of the month quite easily by the phase of the moon.
Ask Jeeves Acquires Bloglines
Bloglines.com, the blog aggregator I use to read all of your blogs, announced its acquisition by Ask Jeeves today.
Things I gleaned from the press release that I don't know before:
- Bloglines.com was owned and operated by Trustic, Inc. up till now.
- Bloglines.com was chosen Time Magazine's 500 Coolest Websites for 2004
- Mark Fletcher is the CEO of Bloglines, will be VP of Ask Jeeves and GM for Bloglines.
- Mark Fletcher was also behind eGroups, now Yahoo!Groups.
- Ask Jeeves owns excite.com, iwon.com, myway.com
I first learned about Bloglines.com not through the press or word of mouth, but through the first person who subscribed to my blog at Bloglines.com back in September 2003. I first spotted bloglines.com in my referers page and followed the link as all starting bloggers tend to do.
I still don't know who my first blogline.com subscriber is. But thank you all the same for bring me to Bloglines.com. I wish Bloglines.com continued success.
Strange Typo
I caught myself issuing the
[weiqi@gao] $ cvs up -qP
command instead of the
[weiqi@gao] $ cvs -q up -dP
command that I use all the time. It is the third time this happened. It feels as if the command words and command options come from two separate buffers in the brain, and I just had an "off by one" error in the command options buffer.
Strange.
MSN Search Better Than Google?
I've heard a lot about MSN Search lately. Today I gave it a try. (Guess what my first search is?)
I have to say, this MSN Search thing definitely is better than Google, which has refused to give me the top spot for the past year and a half, no matter how many blogs I write. :)

This Blog Hit With TrackBack Spam, Offending IPs Banned
If you can't access my blog any more, it's probably because I banned your IP. Just comment on this blog and I'll unban your IP. :)
Sign the Online Petition For JDO 2.0!
TheServerSide.com: JDOCentral has made available an online petition for the community to sign and show the JCP EC their support for JDO, citing reasons including the success of JDO so far, the need for O/R standards today, JCP bias towards EJB 3, and the possibility that a NO vote would cause JDO to be developed outside of the JCP. A successful petition would demonstrate community interest in continueing JDO, and as of Friday, Feb 4th, 665 people have already signed.
The online petition to the Java Community Process Executive Committee be signed here:
RHUG Obsoleted By GCJ 4
I mentioned rhug in the January 2003 Java News Brief.
Today Anthony Green announced its obsolesence:
The rhug project is no longer necessary thanks to the great gcj and GNU Classpath hackers. All of the rhugified packages below build and run out of the box, both natively and interpreted, with the tools found in GCC 4. The contents of this website are now frozen for historical/hysterical purposes. Thank you!

