Amazon Customer Support Always Makes Me Smile

August 19th, 2011 joconner No comments

Dear Mr. Bezos,

I own an Amazon Kindle 3G+Wifi device, my 3rd. My first Kindle worked great, and I used it all the time. During one of my business trips, I lost it in an airport. After realizing that Southwest’s lost-and-found wasn’t going to help, I bought another one.

After some heavy use and maybe a little abuse (dropped once or twice), the 2nd Kindle began to malfunction, making it impossible to read. I made a call late one Saturday night around 11pm to Kindle’s support number. I described the problem, and the service rep insisted that this was just a bad device. She was quick and efficient, and I didn’t have to beg or make excuses. She sent a 3rd Kindle to my home within days. The service rep was amazing; the experience caused me to become a loyal Amazon fan. So delighted with my call, I actually laughed afterwards. I told my wife, family and several friends about the customer support experience.

So, now I have a 3rd Kindle. After a very, very cold night during a recent Mammoth Lakes camping trip, this 3rd Kindle developed a quirk. It’s not something I can reproduce at will, but the problem occurs sporadically and requires me to reset the device. The problem is aggravating, so guess what I did…I called Amazon’s Kindle support. This time I made the call at 10:30pm on a Friday night (tonight). An Amazon rep answered the phone, asked me a couple questions about the device’s behavior, and apologized to me several times. After 5 or 6 minutes on the phone, she promised to send me a replacement Kindle by Tuesday.

My experience with Amazon’s customer support has been amazing. I really enjoy my Kindle device. I recognize that it isn’t perfect…it can break and can malfunction. However, Amazon’s customer support is so easy to work with! I’m so impressed by how this person actually wanted to help me, actually did help me, and made me smile in the process. As I recall, I felt the same way after my first call to the support center.

I look forward to getting my replacement unit next week. Oh, and I’ll be ordering a new Kindle for my son’s birthday too. He uses mine too much so I decided to get him one.

Amazon, thanks for putting the customer first. You guys always make me smile.

 

VN:F [1.9.13_1145]
Rating: 0.0/5 (0 votes cast)
VN:F [1.9.13_1145]
Rating: 0 (from 0 votes)
Share and Enjoy:
  • Print
  • Digg
  • del.icio.us
  • Facebook
  • Mixx
  • Google Bookmarks
  • Technorati
  • Twitter
  • Add to favorites
  • Yahoo! Bookmarks
  • DZone
  • LinkedIn
  • Reddit
  • Slashdot
Categories: Hardware Tags: , ,

Omnigraffle and UML?

August 9th, 2011 joconner No comments

Umlstencil

Some coworkers recently recommended Omnigraffle to me as a UML diagramming tool. After installing a copy, I discovered that although UML “stencils” are available, the tool is not in fact a dedicated UML tool at all. Ahem…obviously I should have read the description a little better.

Now that I have Omnigraffle, however, I will need to use it at least until I find something better for UML diagrams. I have found a few stencils — stencils are pre-made template objects that can be used in your diagrams. So far I’ve found these:

  • Bantik UML — not really full featured but certainly nice looking. It’s not a reasonable choice because it just doesn’t have a full set of UML diagram types.
  • UML 2 — again, just not nearly a full set of diagram types.
  • UML 2.1 Collection — has practically everything I need for now. Best set of diagrams I’ve found. The only trouble I had was that the unzipped stencil wasn’t properly named. When I finally added the .gstencil extension to the unzipped file, Omnigraffle recognized it.

If you know of a better set than the UML 2.1 Collection above, let me know. Until I find something better, that’s what I’m using. I feel a bit silly for using OmniGraffle in the first place. It isn’t exactly a UML tool, but it can be forced into it as needed.

Since I started using NetBeans again recently, maybe I’ll check out the plugins available for it. Surely someone has created a UML plugin. I’ll check that out tomorrow and let you know what I find.

VN:F [1.9.13_1145]
Rating: 0.0/5 (0 votes cast)
VN:F [1.9.13_1145]
Rating: 0 (from 0 votes)
Share and Enjoy:
  • Print
  • Digg
  • del.icio.us
  • Facebook
  • Mixx
  • Google Bookmarks
  • Technorati
  • Twitter
  • Add to favorites
  • Yahoo! Bookmarks
  • DZone
  • LinkedIn
  • Reddit
  • Slashdot
Categories: Mac OS X, Tools Tags: ,

NetBeans vs Eclipse for Maven Projects

August 1st, 2011 joconner 1 comment

I thought yesterday that I had pumped up NetBeans unfairly without regard to other tools. To be fair, I decided today that I’d try to open up the very same project in Eclipse, just to see if it matched NetBeans’ ability to immediately understand the project.

First thing I noticed was that Eclipse did not automatically understand Maven. A quick search of “maven plugin eclipse” put me in contact with a couple plugins. I tried the first one. Installed it like Eclipse likes by pointing to the plugin repo. Downloaded the plugin and then restarted eclipse. I thought Eclipse would behave like NetBeans on this, but no it didn’t. No good; the plugin options, if they even exist, don’t appear anywhere in the menus.

So, back to the search. I find another maven plugin. This time, I’m more successful installing the “m2eclipse” plugin. It actually exposes a “Maven” project in the menu system this time. So I point to my source code, and try to open the pom file. It opens the pom file, but it doesn’t open up all the modules or seem to understand that I want to see the source code in my ide. Hmmm, I wonder if I’m just not doing something right.

Of course, I’m not doing something right. I’m really a maven newbie. If I really knew what I was doing, I’d have this project up and humming in only minutes. Instead, I’ve been fiddling around with Eclipse for 1.5 hours, trying to figure out how to open an existing maven project in the tool. I can’t show anything productive for my labor. I’m disappointed.

So I go back to NetBeans, wondering if what I did before was something special. I did nothing but point NetBeans at the file directory, chose the File->Open Project menu and pointed it to the root directory of my Maven project. NetBeans just understands this is a Maven project. And I downloaded how many plugins? None, nothing at all. Worked right out of the box…again.

Yes, I know I didn’t give Eclipse a fair shake this time either. But why should I at this point? I can become an expert in Maven later and learn whatever it is that I need to integrate Eclipse later. But I have coding to do now, and don’t have time to mess with Maven. I have to work on my actual product, and time wasted on integrating my IDE with it is just wasted time.

Gotta love NetBeans. It just works.

VN:F [1.9.13_1145]
Rating: 3.0/5 (4 votes cast)
VN:F [1.9.13_1145]
Rating: +4 (from 4 votes)
Share and Enjoy:
  • Print
  • Digg
  • del.icio.us
  • Facebook
  • Mixx
  • Google Bookmarks
  • Technorati
  • Twitter
  • Add to favorites
  • Yahoo! Bookmarks
  • DZone
  • LinkedIn
  • Reddit
  • Slashdot
Categories: Java, NetBeans, Tools Tags: ,

Rediscovering NetBeans

July 28th, 2011 joconner 1 comment

After the longest of waits, I’m finally rediscovering NetBeans. My team uses it to create their translation tools and accompanying web services. Really, I couldn’t be more delighted.

We’re using Maven, and my first response is wow! NB really nows how to integrate with a Maven project. The setup couldn’t be more simple. Open Project….bam. Everything is there, no fussing with classpaths, nothing. Thousands and thousands of lines of code with a dozen subprojects and dependencies just build without a single glitch. Beautiful.

Of course, this says something great about my team. They obviously know how to set up a maven project with all of the dependencies, etc. But to simply unleash an IDE for the first time on nothing but the downloaded SVN code and have it work immediately….I’m just impressed. That’s it. Just impressed and felt like saying “Thanks NetBeans!”

 

VN:F [1.9.13_1145]
Rating: 3.0/5 (2 votes cast)
VN:F [1.9.13_1145]
Rating: +3 (from 3 votes)
Share and Enjoy:
  • Print
  • Digg
  • del.icio.us
  • Facebook
  • Mixx
  • Google Bookmarks
  • Technorati
  • Twitter
  • Add to favorites
  • Yahoo! Bookmarks
  • DZone
  • LinkedIn
  • Reddit
  • Slashdot
Categories: NetBeans Tags:

Encoding URLs for non-ASCII query params

June 24th, 2011 joconner No comments

Are you a web service API developer? The web truly is a world-wide web. Unfortunately, a great number of globally unaware developers are on the global web. This creates an odd situation in which web services are globally accessible but only locally or regionally aware.

There are a few important things to remember when creating a global web service. Let’s just cover ONE today: non-ASCII query parameters are valid, useful, and often necessary for a decent, global web service.

It seems so obvious to me, and it probably does to you. Sometimes a service needs to exchange or process non-ASCII data. The world is a big place, and although English is an important part of the global web, more people speak a different language. English is a big percent, but lots of people use Chinese or an Indic language too. Let’s make sure your web service can process all those non-ASCII characters in English or any other language!

Let’s look at some examples of non-ASCII query params:

  • http://example.com?name=田中&city=東京
  • http://example.com?名前=田中&市=東京

In these examples, you must perform two steps to get the query params (both keys and values) into the correct form:

  1. Convert the keys and their values to UTF-8 if they are not already.
  2. Perform the “percent encoding” on each UTF-8 code unit

To do #1, you’ll need to use whatever character conversion utility you have in your developer’s library: the Java charset encoding converters, whatever.

The #2 step is the important one for this blog. For each hexadecimal code unit in the UTF-8 query portion, you must “percent encode” the code unit. Let’s look at the first example query params:

name=田中&city=東京

The JavaScript function encodeURI actually does a good job of doing this for us:

encodeURI("name=田中&city=東京") produces the string:

name=%E7%94%B0%E4%B8%AD&city=%E6%9D%B1%E4%BA%AC

Notice that you should also include this encoding for the keys in the param list. In the next example, I’ve used Japanese values for both keys and values.

encodeURI(“名前=田中&市=東京”) produces this string:

%E5%90%8D%E5%89%8D=%E7%94%B0%E4%B8%AD&%E5%B8%82=%E6%9D%B1%E4%BA%AC”

Note that both the keys and vaues have been “percent encoded”.

On the server side, your server will understand how to decode these values into their correct UTF-8 string values if you have configured it correctly. Correct configuration of a server usually involves a charset conversion filter for a servlet container and sometimes just a config setting for Apache.

More on this at a later time.

 

VN:F [1.9.13_1145]
Rating: 0.0/5 (0 votes cast)
VN:F [1.9.13_1145]
Rating: 0 (from 0 votes)
Share and Enjoy:
  • Print
  • Digg
  • del.icio.us
  • Facebook
  • Mixx
  • Google Bookmarks
  • Technorati
  • Twitter
  • Add to favorites
  • Yahoo! Bookmarks
  • DZone
  • LinkedIn
  • Reddit
  • Slashdot
Categories: JavaScript, Unicode, Web Tags:

Collecting some older Java articles

May 8th, 2011 admin No comments

Over the years, I’ve written dozens of articles about the Java platform. I’m trying to collect them all from their hiding places across the internet. They range from Java platform update notes to in-depth feature tutorials.

Some are from the defunct Sun Microsystems’ site, others are located at Oracle now. If you enjoyed those articles in the past, I hope you’ll revisit them on my articles page.

VN:F [1.9.13_1145]
Rating: 0.0/5 (0 votes cast)
VN:F [1.9.13_1145]
Rating: 0 (from 0 votes)
Share and Enjoy:
  • Print
  • Digg
  • del.icio.us
  • Facebook
  • Mixx
  • Google Bookmarks
  • Technorati
  • Twitter
  • Add to favorites
  • Yahoo! Bookmarks
  • DZone
  • LinkedIn
  • Reddit
  • Slashdot
Categories: Java Tags:

Companies gain productivity from continuous work force

April 17th, 2011 joconner No comments

One of the wonderful benefits of any global company is the productivity achieved by having a continuous work force. As one group of employees in the US go home, another set in India begins its day. It’s an oversimplification for sure, but I have no doubt that global companies gain real productivity.

Here’s an example of real productivity. It is now Sunday night on April 17, about 11:35 PM in my local time zone. I’ve just responded to an email that’s been in my INBOX over the weekend. Fortunately, even though it’s late for me, and I’m really, really exhausted, my colleague in India is fresh and perhaps just going for his lunch break on Monday afternoon. He can take my email response and act upon it. The contents of the email provide a helpful tip for fixing a unit test. The end result is that the corporate product — the software in this case — has continuous nurturing, updates, and improvements.

The problem is at the micro level, however. While the larger company product benefits, sometimes individuals that work in that environment burn out. I’m no where near that, but I can see a pattern evolving that could lead to that. You see, for me, the work day never ends. Somewhere in the world, someone is working on a problem that I am also working on. Ideally, the handoff would be a clearly distinguished time. That is, I might get an email in the morning, work on the issue, then respond before my end of day. Then my colleague in India would awake (and I’d be asleep), and then he would continue working.

In reality, however, the actual work day never really ends for some of these people. For example, I stay up late to get a real-time response back. Or I might use an instant messenger tool to get an immediate response from a colleague around the world. This continues for several weeks until finally someone gets ill and has to take a few days extra rest. At the micro level — at the real person level — around-the-clock work is not a good thing. It takes its toll on energy level, family interactions, and even health.

In the end, I still think a company can benefit from a global workforce. However, individuals must be disciplined to let one shift end and another begin without feeling the need to constantly communicate in real time. In a global workforce, asynchronous email is a great thing. I have to remind myself of that regularly. Like now. Time for bed. No more work for me. Good night India.

 

VN:F [1.9.13_1145]
Rating: 0.0/5 (0 votes cast)
VN:F [1.9.13_1145]
Rating: 0 (from 0 votes)
Share and Enjoy:
  • Print
  • Digg
  • del.icio.us
  • Facebook
  • Mixx
  • Google Bookmarks
  • Technorati
  • Twitter
  • Add to favorites
  • Yahoo! Bookmarks
  • DZone
  • LinkedIn
  • Reddit
  • Slashdot
Categories: Globalization Tags: , ,

Twitter begins crowd-sourced translations

February 15th, 2011 joconner No comments

Recently I became aware of Twitter’s new translation initiative that enlists the help of its user base. I think it’s a unique and possibly worthwhile gamble. After all, the translations are free, and twitter pays it users by giving them a …. “special badge on their public Twitter page displaying their status as an official Twitter translator.”

The idea is simple enough. An invited twitterer/translator logs into their site. Having been identified as a translator, the user sees additional buttons on their twitter web UI…buttons that allow you to translate the page labels and text. Cool.

Twitter wants to translate into all the world’s language eventually. For now, however, they’ll settle on these in the short term:

  • French
  • German
  • Indonesian
  • Italian
  • Japanese
  • Korean
  • Spanish

Hey, great idea, Twitter. I wonder if the “special badge” of honor will be enough to enlist talented, real help?

 

VN:F [1.9.13_1145]
Rating: 0.0/5 (0 votes cast)
VN:F [1.9.13_1145]
Rating: 0 (from 0 votes)
Share and Enjoy:
  • Print
  • Digg
  • del.icio.us
  • Facebook
  • Mixx
  • Google Bookmarks
  • Technorati
  • Twitter
  • Add to favorites
  • Yahoo! Bookmarks
  • DZone
  • LinkedIn
  • Reddit
  • Slashdot
Categories: Web Tags: , ,

Take care in speaking and writing your customer’s name

February 9th, 2011 joconner No comments

No matter how many times it happens, I still feel somewhat surprised that companies still don’t know how to gather form data, move it through their database and use it without destroying something as simple as a name. My most recent surprise came just today, this time from Ford Motor Company.

Apparently I had filled out an online form and included my name. Unfortunately, Ford didn’t quite know what to do with the apostrophe in my family name. They turned it into a form similar to an html character entity reference but they seem to have scrubbed out the semi-colon from the “'” reference. Here’s the US postal address they used to reach me recently.

Letterapostrophe

Aah, when will they learn?

 

 

VN:F [1.9.13_1145]
Rating: 5.0/5 (1 vote cast)
VN:F [1.9.13_1145]
Rating: 0 (from 2 votes)
Share and Enjoy:
  • Print
  • Digg
  • del.icio.us
  • Facebook
  • Mixx
  • Google Bookmarks
  • Technorati
  • Twitter
  • Add to favorites
  • Yahoo! Bookmarks
  • DZone
  • LinkedIn
  • Reddit
  • Slashdot
Categories: Uncategorized Tags:

Attending IUC 34 and career longevity

October 20th, 2010 joconner No comments

After a few years being away from the internationalization crowd, I’m attending the Internationalization and Unicode Conference again this year. How great to see old friends and to make new ones. Some things are new — some new people. However, many things are old or definitely older.

What’s old? Well, for one, the problems. It’s the same problems, over and over again. It seems like every new tool, application, operating system, whatever… they all struggle with internationalization as if it’s a new problem. And it isn’t. After almost two decades in this industry, I still am surprised that we talk about resource bundles, date and time formats, etc. I keep thinking this stuff is resolved and over. But every year, the IUC reminds me that it is not. Every new platform and tool and application will repeat the mistakes of the past and solve these problems yet again and again and again as if they are new. Why is that?

Some things were very new, mainly products and specific technologies. We have new characters in Unicode. Old languages (JavaScript) are getting more internationalization support in some future version. Windows 7. Twitter. And gray hair. That’s definitely new. Some of my very good colleagues in the industry have aged…and it reminds me about my own age and career in internationalization.

About 15 years ago, my friend Bill Hall and I mused that we might be out of a job one day in the internationalization (i18n) industry. Maybe we thought that we and others like us would solve all the internationalization issues and make everyone aware and create libraries that everyone would use everywhere. We really thought that we could work hard, solve all the problems, and finally make our jobs unnecessary or obsolete. Funny thing is that here we are 15 years later, and it’s clear to me now that we didn’t permanently solve any problem. We provided temporary solutions, but nothing permanent. It’s humbling to think that one’s life-work hasn’t made many reusable solutions, but this knowledge does have a silver lining too.

So, I suppose my rant just boils down to this. Welcome to all the new individuals in this industry! All you people at Twitter, those working on Android or Chrome, all you newer Adobe Flash and Flex folks, and all newer individuals representing a host of other companies …. welcome to the internationalization industry and welcome to IUC! You can be happy to know that despite all your hard work today, you will always have a job in this industry tomorrow. You are in a great, vibrant, long-lived career. Despite your best efforts, you probably will never work yourself out of a job! What you do is needed, necessary today and tomorrow, and most likely always will be!

Bitter-sweet? Definitely. Sigh….

 

VN:F [1.9.13_1145]
Rating: 0.0/5 (0 votes cast)
VN:F [1.9.13_1145]
Rating: +1 (from 1 vote)
Share and Enjoy:
  • Print
  • Digg
  • del.icio.us
  • Facebook
  • Mixx
  • Google Bookmarks
  • Technorati
  • Twitter
  • Add to favorites
  • Yahoo! Bookmarks
  • DZone
  • LinkedIn
  • Reddit
  • Slashdot
Categories: Unicode Tags: ,