Sepia MacWorld

I’m reading the news of Apple pulling out of MacWorld with a touch of sadness. MacWorld Boston is long dead. It was only a matter of time before MacWorld San Francisco ended, too. It makes sense to me.

Consider the history of COMDEX. In it’s heyday, COMDEX rocked. There was excitement, drama, confusion. I attended my first COMDEX in 1991, my last in 2003. Fall COMDEX reigned supreme but I also have fond memories of Spring COMDEX in Atlanta. (Never made the Chicago show).

That last COMDEX was a week of the living dead. Sad. Like the last moments of an ailing pet.

COMDEX was a dealers expo. The conference tracks had more to do with channels than with end user training. It was a time of the backroom demo, of systems companies meeting with component suppliers, of mom and pop shops meeting with distributors. That time is past. Or, at least, has moved offshore.

MacWorld outlived COMDEX precisely because its focus, its purpose was different. Look at the conference tracks. MacWorld is less about refining the channel and reshaping manufacturing supply chains. Its more about the end user. And frankly, MacWorld is Apple’s big show, “Look at me.”

I felt MacWorld 2008–while interesting–was unnecessary. The Apple booth was packed but it was the SAME APPLE BOOTH. Adobe was noticeably scarce. Macromedia had been assimilated. Microsoft was promising big advances in Office 2008. Thankfully, the number of iPod skin vendors was down. It was a nice show. Like a nice visit with your favorite Aunt.

I would rather Apple bow out now at a pleasant MacWorld 2009 than drag out its inevitable death. I would have rather remembered COMDEX 1999 as the last hoorah than witness the emphysemic COMDEX 2003.

The world is changing. Computers are increasingly a commodity product. In the ’80s and ’90s, each year brought amazing new advancements to the relatively crude PC. The ’80s more so. I am lucky to have attended SOG in ’87. That event wasn’t a show, wasn’t an expo. However, the people who attended were the living soul of personal computing… and the revolution. Everyone I talked to was a gift. Every conversation a revelation. The big shows never had that.

There will still be Apple’s World Wide Developers Conference. Microsoft has the Professional Developers Conference. Adobe has an analogous event for designers/developers with Adobe Max. Intel has Intel Developer Forum. But the PC pioneer days are over.

If you really, really have a need to join La RevoluciĆ³n, there’s still some life left in the penguinistas. But you better hurry. Even Linux World is changing. It’s now OpenSource World. Still, it’s not the same as a computer show. It’s more of a movement.

The era of big shows is past. The personal computer industry has grown up. We now have smaller developer-focused shows. It’s the times we live in. It’s just this way. For now. Who knows what 2020 will bring.

Mandarin Tuesdays II

My Tuesday dancecard is filling up. The first mandarin course has ended and I’m now registered in the next chapter of Mandarin.

Stanford Continuing Studies icon

Beginning Chinese II

“This course is the second of a three-quarter sequence of beginning Mandarin Chinese. It is designed for students with little knowledge of Chinese. With an emphasis on conversation, the course will focus on the acquisition of basic communication skills for travel, business, and everyday use.”

Stanford Continuing Studies
Tuesdays, January 13 – March 17, 7-9 pm

centos l10n problem

Just about the time I believe the UTF-8 beast is in the cage, it escapes and runs amok.

This AM, I started to deploy an update to the webapp on EC2. Seems that some of the static strings in the app contained UTF-8 encoded non-ascii characters. The java compiler barfed. “The heck?”, I thought. I just compiled the app on my MacBook. I checked the usual suspects (tomcat’s server.xml, JAVA_OPTS) but everything looked fine. However, when I looked at the code, it was indeed mangled.

Crap! Was this a bug in CVS? (Yes, we still use CVS). Wait. What if I cut and paste the correct code from my Mac to the Centos server version. No luck. Couldn’t be vi. Trusty old vi. Could it be that Centos is confused? Let’s look:

$ locale
LANG=
LC_CTYPE="POSIX"
LC_NUMERIC="POSIX"
LC_TIME="POSIX"
LC_COLLATE="POSIX"
LC_MONETARY="POSIX"
LC_MESSAGES="POSIX"
LC_PAPER="POSIX"
LC_NAME="POSIX"
LC_ADDRESS="POSIX"
LC_TELEPHONE="POSIX"
LC_MEASUREMENT="POSIX"
LC_IDENTIFICATION="POSIX"
LC_ALL=

What the…?

I don’t know what I did but when I created my ec2 image, I must have omitted a step. None of the googled web-geniuses had solved this exact problem but it seems everyone flails about with LANG environment variable.

export LANG=en_US.UTF-8

That did the trick!

$ locale
LANG=en_US.UTF-8
LC_CTYPE="en_US.UTF-8"
LC_NUMERIC="en_US.UTF-8"
LC_TIME="en_US.UTF-8"
LC_COLLATE="en_US.UTF-8"
LC_MONETARY="en_US.UTF-8"
LC_MESSAGES="en_US.UTF-8"
LC_PAPER="en_US.UTF-8"
LC_NAME="en_US.UTF-8"
LC_ADDRESS="en_US.UTF-8"
LC_TELEPHONE="en_US.UTF-8"
LC_MEASUREMENT="en_US.UTF-8"
LC_IDENTIFICATION="en_US.UTF-8"
LC_ALL=

A fresh cvs checkout and I was back in business. I don’t feel I completely understand Centos localization configuration. At least I’m aware of it, now.

bash array crawler

I wanted to complement my bash directory crawler post with a bash array crawler example.

Sometimes, it’s easier to jack a list of identifying tokens into an array and process them rather than to build an end-to-end script with database access. For this contrived example, I grab a list of UUID from MySQL with a simple SQL statement.

mysql> SELECT id, uuid FROM icons;
+-----+--------------------------------------+
| id  | uuid                                 |
+-----+--------------------------------------+
|   1 | fe0b16ed-3369-4dda-8e60-faffb966375d |
|   3 | 82bfcbc2-84a2-4ca7-914b-13172b94feb6 |
|   6 | ab5e7265-3698-4205-b081-e6aec528fee2 |
|  11 | 4b6ca26b-c6ed-494f-aeb4-9bf369e2d465 |
|  19 | e7cc807b-7f15-46fa-b1c5-85d1f1050155 |
+-----+--------------------------------------+
5 rows in set (0.00 sec)

Next, jack the tokens into an array and simply crawl over the tokens.

#!/bin/bash

uuids=(
 fe0b16ed-3369-4dda-8e60-faffb966375d
 82bfcbc2-84a2-4ca7-914b-13172b94feb6
 ab5e7265-3698-4205-b081-e6aec528fee2
 4b6ca26b-c6ed-494f-aeb4-9bf369e2d465
 e7cc807b-7f15-46fa-b1c5-85d1f1050155
)

for uuid in ${uuids[@]} ; do

  # do something interesting here
  echo "http://icons.example.com/${uuid}.jpg"

  # curl 
  #   --request GET 
  #   --remote-name 
  #   --url "http://icons.example.com/${uuid}.jpg"

done

Holiday Angst

Once again, it’s the holidays; I’m not feeling very cheery.

UTF-8 on Tomcat

I use Apache httpd + mod_jk with tomcat and connect to port 8009. Be sure to tell the tomcat connection that you are using UTF-8.

# vi /usr/local/tomcat/conf/server.xml
<Connector
  port="8009"
  URIEncoding="UTF-8"
  enableLookups="false"
  redirectPort="8443"
  protocol="AJP/1.3" />

Add two parameters to the list of JAVA_OPTS (at least for tomcat)

-Djavax.servlet.request.encoding=UTF-8
-Dfile.encoding=UTF-8"