Oct 23

Saying “Deadwood” in Chinese

Category: China, Language

Many people have been telling how good of a show that HBO’s Deadwood is.  Since I had no new DVD material that I was regularly watching, I decided to pick it up.  Not to mention, it would be a good diversion from working into the evening.  I scouted around the DVD places and learned that the name of the show is a direct translation:  “Dead” and “Wood”.  In Chinese, it’s “Si”, tone 3 (we don’t have this “i” sound in English; it’s not the same as the Spanish word for “yes”!), and “Mu”, tone 4 (Basically like a cow:  “Moo!” with a strong downward inflection (that’s what “tone 4″ means)).  So, this is pretty easy to pronounce correctly.

I didn’t buy anything right away.  But, I came back a week later to the place that had all three seasons with good quality and a good price.  I couldn’t find it, so I asked for “Si3 Mu4″.  Confused looks.  I explained a little more, “It’s an American TV show.  It’s called ‘DeadWood’.”  Instead, I was directed to someone else.  More confused looks.  I know I was pronouncing it correctly.  Eventually, someone handed me a piece of paper and a pen asked me to write it down in English.  Then we translated it.  “A!!!  Si Mu!”  Yeah, that’s what I was saying!

Anyway, I bought it, but as a continued experiment, I asked a few English-speaking Chinese if they could understand what I was saying.  Most of them weren’t sure.  One good response was “Dead Deer?”

See, it’s not that I was mispronouncing anything.  It’s just that Chinese is such a damn weird language that without the context, you can’t tell what I’m trying to say!  The sound “si”3 and “mu”3 are represented by multiple characters, so with so few words, how do you know for sure what I’m saying.  If I were better at Chinese, I would have said something like, “‘Si’ as when you die and ‘mu’ as what trees are made of.”

Some seventy or eighty years ago, as I understand it, there was a movement to do away with the Chinese characters and adopt some sort of alphabet, like the Western alphabet.  To demonstrate how necessary the characters were, a professor in Beijing wrote a nonsensical story that told about someone named Mr. Shi who lived in a stone hut and was addicted to eating lions.  Sounds weird, but the point was that although he used numerous characters to tell the story, there was only one phonetic sound (excluding the tones):  “Shi”.

See how messed up that is?  People who read the story can understand it fine, but if they hear it, they have no idea what’s being said.  Pretty crazy, huh?  Outside of maybe a short sentence, this isn’t conceivable in English.

The Chinese language is optimized for subterfuge, double meanings, and confusion.  No wonder Westerners here often get frustrated or just plain perplexed.  Maybe this is why Chinese have such a great reputation in negotiation and business; they are accustomed to wearing down opponents just by using frustrating language.

1 comment

Oct 21

Tchaikovsky Recording Finished

Category: China, Entrepreneur

Man, I can’t believe this project is finished.  It’s been in the works a long time.  Again, something that sounded very easy turned out to be involved and lengthy.  This time, despite it being a music project, I was completely ignorant of the effort that was going to be involved.

Basically, I wanted to improve my recording of Tchaikovsky’s Violin Concerto on the electric guitar.  I recorded it a long time ago with synthesizer tracks replacing the orchestra.  Although I was happy with the recording, the synth sounds had always been the weakness.  Just a year or year and a half ago, a friend, colleague, and fellow guitarist suggested that I redo the MIDI tracks with real orchestral recordings.

I finally got around to looking into this.  However, I was convinced that all that was involved in converting a MIDI file into orchestral sounds was running the MIDI file through some high end samples and call it good.  Boy, was I wrong.

I started out by posting a job on Elance requesting someone to convert a MIDI file into a WAV file.  I got numerous responses whose prices ran the gamut from $50 to $500.  This seemed weird, but I didn’t really think much of it.  I ended up picking a really nice and knowledgeable guy in Argentina.  He was way on the low end of the price, but I really picked him because he sounded informed and communicated well.  However, when it came time to share the job with him, I got a nice but firm email stating that he’d misunderstood the requirements and that it was way beyond what he had originally had bidded on.  He was nice enough to spend a lot of time with me to explain exactly what would be involved.  About the same time, I met a guy in China, Xiao Xie, through another friend who, having studied music and was working in the music industry here in Shenzhen as a game and advertisement composer, seemed to be a great fit for the job.  So, I hired him.  A great find!

His English was pretty good, better than my Chinese, but at least he had a command of the technical terms in English, so we could get by.  He basically confirmed what the guy in Argentina had stated:  we needed to render each instrument into a wave file, and usually each track would need to be rendered multiple times.  For example, we’d need to render some violin sections with long bow strokes with pronounced vibrato, other times we’d need to use a swift marcato, and then everything in between.  Strings are always the most difficult, but we had to do the same for winds and brass as well.  On top of that, for the challenging full orchestral moments, we rendered multiple versions of the same track to give it a full ensemble sound.  We neede to separate some tracks, like some of the flute tracks, so we could bring out the melody better.  Then, we went back, mixed it all together, reworking sections multiple times so that the balance would be good.  We added equalization, reverb, and so on.

As you can see, this is way more work than simply turning on orchestral samples, pressing “play” on the MIDI file and “record” on the WAV recorder.  We usually spent one day per weekend, for anywhere from two to six hours working through the piece.  It took about three to four months to do the whole thing.  We worked hard on it, got testy with each other from time to time, but remained friends throughout. A celebration is called for!

And, I’m very happy with it!  The CD artwork is already finished, so now, it’s just a matter of uploading the right files to a duplication company in the US and re-releasing on CDBaby.  I’ll send out another announcement once the recording is for sale.

Have a listen of a brief sample from the first movement:

And some pics from the home studio:

2 comments

Oct 16

Head Massage

Category: China, Entrepreneur

One thing I’m not so good at:  Letting go of the reigns and delegating to other people.  One thing that plays into this is money.  If I can do something myself, then I’m often reluctant to spend money on someone else doing it.  Most things I can do, so I think that it’s best that I do them myself.  And so I do.  And then I end up driving myself crazy with too many obligations and deadlines.  That happened last week and I realized I had to take a break and relax.  I’d basically been working from sun up to past sun down and should have had more to show for it.  At least I realize it.  And I’m trying really hard to get better at it.  I think it’s something that’s just going to take concerted effort and practice.  And repeatedly reminding myself that I’ve got to get better at it.

Stuff I was driving myself crazy with this past week:

  • Choosing membership software – There are tons of solutions out there, each with pros and cons.  Though I haven’t settled on one, I’m a lot closer.  Getting to this point though was a pain.
  • Investigating merchant accounts – Same thing here with tradeoffs and pros and cons.  I use a website for advice, but that’s nothing like trusted advice, and it’s so easy to get contradicting information.  In the end, it comes down to your own investigation which is time-consuming.
  • Video technical problems – Actually, there weren’t too many problems, but hunting down the right cables, testing out the green screen, etc. etc. takes time.  I spent a long time looking for a stupid Firewire 800 cable which is surprisingly impossible to find in Shenzhen now.  I had to order one from Shanghai.
  • Buying a plane ticket – Once I decided that I needed to come home for Christmas, I spent a lot of time online looking for a ticket.  At first, I wanted to use my miles, but every time I went to purchase a ticket, the Delta site would tell me that “a leg of your trip is sold out.  Please try again.”  Well, thanks for telling me which one.  I had to make at least three phone calls to customer service.  In the end, I realized that since Delta partnered with Northwest (or was the same airline) and that all my flights would be on Northwest, I’d get more accurate information on their site.  One trip to the NWA site and I found a relatively cheap ticket from Hong Kong to Hotlanta.
  • WordPress mail problems – A new version of a plugin that I endorse had a weird problem of stripping HTML from mail when generating mail from the “Edit Post” page, though it worked fine from the “New Mail” page.  Numerous back-and-forth with a support group didn’t yield much.
  • The Great Firewall of China blocked a client’s URL – Why?  After networking around, I found out that you have to register a site in China if you don’t want it to be blocked.  I then contracted another trusted contact to help out.  In the mean time, I had to console and explain what was going on to my clients.
  • Create a test ad campaign – This is just an idea that I had after creating the first website.  As part of the negotiation (due to a misunderstanding that I was forgiving with), I got some free advertising in a Shenzhen magazine.
  • The Great Firewall of China blocked one of my sites – Same thing.  At least I’d seen this before.  But, this affects my ad campaign.  I now need to think about revising the ad.
  • Health Certificate – As part of my visa requirement, I had to go get a medical examination at a designated hospital.  The first time, I had someone help me.  This time, it was just me.  Got it, and all is well.
  • More visa stuff – Trips to police stations, getting the runaround, visiting five places until finding the right one, dealing with officials who don’t know what the process is.  This caused numerous headaches.  At least I had someone helping during key moments otherwise it would have been much longer.
  • International Bank Accounts – Learning the ins-and-outs of moving money around.  What a pain.  I’ve been working on this one for weeks, it seems.  I owe my friend in Hong Kong money for purchasing my laptop.  He’s been very nice.
  • Business accounting – Related to the above item, I had to contact my accountant and ask some things that have been on my mind.
  • Learning RegNow’s fulfillment and affiliate system – It’s huge, complex, and poorly documented.  I often lose patience with the documents and then just settle for an-email-per-day support while I concentrate on other things.
  • Finding an appropriate WordPress theme for a new site – This is time consuming and I haven’t found anything I like.  I think the solution is to hire someone to create one.  Create the job, post it, review the dozens of bids, follow-up, establish payment rules, etc. etc.

It’s about a week after I pulled back a bit so I’m wondering what I’m forgetting.  It doesn’t matter, that’s enough.  Well, one day, my head was hurting so much that I decided I needed a head massage, or more accurately a “wash head” or “xi1 tou2″, as they say in Chinese.  The beautiful thing as that there’s a place right outside of my apartment complex, a hair salon actually, that offers this.  I’ve written other posts that talk about haircuts in China.  In these haircut places, you can get these wonderful head massages before you get your haircut.  I thought my last place was pretty good, but this one takes the cake.  Here’s what you get with a “head wash” at the place next door:

  • Three washes, each one lasting ten minutes.  And you’re not sitting in some stupid chair wrenching your neck backwards like you do in the US.  You’re supine on a cushioned table with your head balanced on a small padded column above a sink.  The first two washes are with shampoo.  And, once there are enough suds, the girl washing your hair will just rub your temples, forhead, sprinkle water down your closed eyes so it runs off your cheeks (very refreshing), massage your neck and shoulders.  Fantastic.  The last wash is with some sort of cleanser with a menthol sort of feel to it.  The same techniques are used.
  • Five minutes to clean your ears with Q-tips.
  • Five minutes of arm massage.  This is very comfortable if done well.  A lot of it is focused on massaging your hands and fingers.
  • Ten minutes of back massage – great way to round out the whole experience.

After fifty minutes of that, I always end up staggering home.  A hot shower and I’m ready to hit the sack and feel revived in the morning.

Total cost:  10RMB ,or, $1.46

No comments

Oct 15

Interviews at MS

Category: Technology

Check out this recent story about a developer interview at Microsoft.  I know Igor through a mutual friend back in Georgia.  Igor came up to Redmond for a conferece a few years ago when I was still there.  He reminded me of me – enthralled with everything Microsoft and willing to work to make himself an expert so he’d have a chance to work for the empire.  After I read this recent post about his interview with Microsoft, he reminded me even more of myself!  My first interview at Microsoft went badly as well.

This was a long time ago, not long after I was out of college.  The year must have been early 1997 when I was really into Microsoft technology and programming.  I spent all of my commuting time on the bus reading programming books.  I spent much of my reading time before bed reading programming books or a subscription to MSDN magazine.  With this rate of information intake, I became one of the top programmers at my company pretty quickly, but I was still unprepared my interview at Microsoft.

I expected my interview at Microsoft to concentrate on high level technologies like MFC and COM, which I’d pretty much mastered.  Indeed, when I did get asked questions about COM, I knocked them out of the park and the interviewer was outwardly impressed.  However, the rest of the interview, say 90% of it, was just straight C programming.  It’s hard for me to remember the exact questions I got, but here are some:

  • Reverse the words in a sentence.  This was pretty tough for me at the time, since it required careful attention to pointers.  Today, it’s a piece of cake.  I eventually got it, but my solution wasn’t impressive or quick.
  • Write a function to convert a number to a string and a string to a number.  I did decently on this, but nothing to impress according to Microsoft standards.
  • Write a function to reverse the bits in a byte.  This one I completely flunked.  I stood in front of the whiteboard for a long time, just silent, with no help from the interviewer.  At the time, I felt like an idiot, but in retrospect, I suspect he had no idea what to do with me either.  I gave a ton of interviews at Microsoft myself, and I would have been ashamed to behave as this interview did.  Regardless, I’m sure he wasn’t happy with my performance and I didn’t get the job.  But, even worse, I left not really wanting the job.

About three years later, I got the chance to interview again and this was when I landed my job at Microsoft.  I was way more seasoned as a programmer (I still regard GeoGraphix as the best programming job I’ve ever had), and I knew what to expect.  In short, I crushed this Microsoft interview.  However, I did think it was pretty easy by typical Microsoft standards.  The hardest question that I can remember was:

  • Something like, write a function to reverse a string using a char* but keep in mind that the string is a multi-byte character string.  Dang, I wish I could remember the details of this one a little better, but the trick was that you simply couldn’t write a string reverse; you also had to take into account that some of the characters were more than one byte.

One thing to note about Microsoft interviews is that when you’re in front of that whiteboard trying to find a solution to a really hard program, you’re also expected to write very clean and efficient code.  When I came on board the team and finally got my first look at some real Microsoft code, I was shocked.  “Wait, this is Microsoft right?  Who wrote this code!?”  That story is for a different post.

A few years later, when I felt I needed another change but was still interested in programming, I went on my last round of interviews.  I interviewed for the Office group, for Internet Explorer, and a couple of others that I don’t recall.  Office and IE were the most memorable because they were the closest that I came to getting an offer, but I never did.  In retrospect, this was a good thing, but I left again with a sour taste in my mouth about the whole interview process.  The questions that I was asked this time were ridiculously hard.  The ones I remember best, though still it’s fuzzy, were from the office group:

  • A problem involving binary trees.  I had prepared for binary trees, but this problem had a twist on it that made it really hard.
  • A problem that I later discovered was taken out of the Programming Pearls book.  In case you don’t know, this book has some super hard problems in here that some university classes take a couple of weeks to study.  I was expected to solve it in one hour.  I never did, but I was happy with how well I did.
  • I went through a few more questions but I can’t recall the details.  But, it suffices to say that they all dealt with either trees, hash functions, or lists.  Each was really hard.  I may have had less than a 50% success rate, but, again, I was personally happy with the progress I made on each.  I assumed that this would be taken as positive.

After maybe four or five interviews, I was shown back to the hiring manager’s office.  I’d had a great conversation with him the week before.  He had waived the screening interview because he was impressed enough with our conversation.  However, this time, he came in with a scowl and promptly announced, “Well, it seems it’s not going that well for you.  I’m not going to bother with an ‘as-appropriate’ (MS terminology) interview with you.”

I gave him a shocked looked and retorted, “Oh, I was under the impression that I was doing pretty well.”  This prompted mixed-up looks from both of us at each other.  To make a long story short, our short conversation eventually turned to me giving him a stern but nice lecture about how his team interviewed me on one skill, algorithmic programming, which I had already professed was my weakest trait.  If this was what they were looking for, then they likely made a good choice, however, if they were looking for a well-rounded developer which strength in distilling problems to their most simple components and a flair for creativity, then they failed.  I honestly can’t remember that much, but I seem to recall that he was a little shocked that I talked back to him the way I did.  I’m no super MS programmer by any stretch, but I had been at MS long enough to know that there are plenty of so-called geniuses that cause all sorts of problems with the code that they write and that hiring manager should look for balance on their teams.

After that, I made special strides to be a different sort of interviewer.  I never asked the super hard programming problems.  In fact, my problems were pretty easy.  Of course, if you wanted a chance, you had to nail it, and if you did, you had to be able to intelligently take it to the next level, explain why, and show your own brand of excitement while you do it.

I was proud of my track record:  People that I strongly endorsed when on to become great full-time hires.  Some people that I “no-hired” (MS terminology) and who were hired anyway eventually ended up being fired.  I can think of two right now!  Not to mention the numerous interviews that I conducted in China, which was a completely different animal.

To close, I wish you would have asked me to help you prepare in advance, Igor.  You gotta know the linked list backwards and forwards.  I know you do, but at least now you’ve had your trial by fire and you’ll be ready next time.  Those interviews can be unsettling.  I’ve never experienced the phone “whiteboard” interview.  I bet it’s even worse than the basic whiteboard interview.  Give it some time and try again.

3 comments

Oct 8

CascadeAdventures.info

Category: Cambodia, Entrepreneur

I forgot to announce on this site last week that my upgrade to my Cascade climbing site is now complete (I did announce on Facebook).  I used the same technique as I did for the Gore Range Site.  There are also newer movies available on various reports.  I decided to use Vimeo.  I prefer their interface to youtube’s.  Of course, youtube gets way more traffic.  You can click on the “Movies” category to see all reports with movies, by the way.  I still have several to add, including some HD ones…whenever I get around to making them.

cascadeadventures_rectangle

No comments

Sep 26

Snatcher and Son 3.1

Category: Entrepreneur

Well, I’ve got another release ready.  You can download it here.

Of course, there’s always a heaping amount of nonsense when you’re dealing with software.  I foolishly thought I might get by this one with very little effort.  I was so close.  And yet again, at the finish line, something lassoed me an violently jerked me off my feet and put me on another part of the course to make my way through.

Here’s the good, both items have to do with how I changed my software:

  • I added code to better support affiliates.  Regnow has an SDK, which is (surprisingly) designed very well, which is used to certify that your application ensures proper payment to affiliates who sell your product.  I was able to implement this in a matter of hours.  All I did was read the two page overview doc, looked at an examples, and implemented it.  Thanks, Regnow!  If only the rest of your system was this well-planned.
  • I changed my install program from a crappy old copy of InstallShield (I stay as far away as possible from the new versions which are awful) to Advanced Installer, which is fantastic.  I can’t say enough about how good it is.  Nowadays, finding something good makes me happy because I’ve been burned by so many bad upgrades!  I was up and installing Snatcher and Son 3.1 in about thirty minutes.  The only difficulty was dealing with the registry, but around an hour of learning how it worked fixed all the problems.  I was able to create my installation package using the free version.  I may end up buying a license, just so I can customize the graphics and a few other little things.  At $299, it’s way more affordable than InstallShield.  Oh yes, and my installation program shrunk from 7 megs down to one.

Here’s the bad, these all come from the fulfillment side:

  • I went to upload my .msi file on the Regnow.com servers and got an error message that they only support .exe files.  You’ve got to be kidding!  I shot off an email to support right away.  I can’t believe this is true, but I guess it is.  Maybe I’ll have to buy a license to Advanced Installer to get this too.
  • On Upload.com, where I have a paying account, I went to modify my product and made all the necessary modifications.  It went smoothly (save for the fact that the icon doesn’t show and I uploaded both .png and .ico files…got a support message out for that).  However, I got asked to upgrade my account from a free account to a basic or premium one.  What?  I already am paying!  I went back to my product page which indeed showed that I had added a new product!  But, I am certain that I clicked on modify.  So, another support message is out.  Bah!  I won’t even go into describing how confusing their help system is.

I’m looking forward to the day when I make an upgrade and it takes a total of thirty minutes to deploy the whole thing.  As of right now, that seems a long way off.

Again, as they say in Chinese:  “Hao Shi Duo Mo”, or, “The road to success is paved with hardship.”  Too bad I don’t know how to say, “and nonsense, and foolishness, and bad designs, etc.”

1 comment

Sep 20

My Apartment

Want to see some pictures of the apartment I live in?  See below.  Since I’m no longer at MS and am trying to work for myself, I’m a little low on cash flow.  So, I’ve moved into a cheaper place and am rooming with a former colleague of mine.  Actually, it was an easy transition since we’re both very low key.  I do sorta miss the privacy, but it’s not bad at all, and can be fun at times.  Anyway, I had a housing budget at Microsoft.  Actually, it was super high, until I brought it down to the reasonable level and negotiated the difference into a cash bonus instead – haha!  But anyway, my place was about 8000RMB before, which is almost $1200.  That’s pretty high end for Shenzhen (which is already an “expensive” city for China).  My place was really big too – 3 bedrooms.  Much to much for me, but I picked it because it was the cleanest place I found in a neighborhood that I knew.  The landlord turned out to be fantastic too.  She even dropped the price way down (to 5500, I think) when I announced that I had to move out (just before coming to the US for the summer).

Anyway, there were a couple of ‘hoods that we thought about moving to.  In the end, we ended up finding a place in “Hai An Cheng”, or “Coastal City” which is the name of a big mall near here.  It’s a nice area; the mall attracts a lot of high end businesses and restaurants and there is still plenty of local flavor.  There are way more local restaurants and stores that I can quickly get to now than before.  The only downside is that it’s not close to a subway.  But, I’ve found the key busses that can take me where I need to go.  Some are quite fast.  Who needs a car?

The rent is 3500RMB a month, about $500.  Split in two, that’s $250 per month.  Not too shabby.

I have a Filippino friend down the street whom I’m jealous of.  He’s got the best place for the money I’ve ever seen.  A very cozy apartment that matches roughly the same dimensions as mine.  But, a sweet kitchen and a well-designed bathroom too.  It’s only 3000RMB.  If he moves out, I’m jumping on that place without waiting.

3 comments

Sep 19

GoreRange.info

Category: China, Entrepreneur

I rehired a girl here in China to help me port over the trip reports from my old Gore Range site to the new one.  I used the same effective technique:  Create a special page that described the job and (here’s the key) created a screencast that showed how to do the job.  A “screencast” is basically a video of your computer screen showing what you’re doing on the computer.  I created the one for this job with Windows Media Encoder 9, which has problems (of course), but is at least free.  I’ll be upgrading to Camtasia as soon as I get my new laptop (going to pick it up in Hong Kong early next week!)  They’re running a $99 promotion now for their new version for the Mac.

The screencast is a powerful tool.  My assistant was convinced that this job, using WordPress, etc. was too complex for her.  I told her to just give it a try for a couple of them.  Now, she’s cranking them out in a matter of minutes.

Total price for the website port:  $15

My adventures in the Cascades are next.  That’s a much bigger site.  Maybe I’ll even create a site for my fourteener trip reports.

gorerange_rectangle

No comments

Sep 19

Software Release

My first project after leaving Microsoft was to re-release my WebSnatcher products.  Except, this time, I wanted to give this old lineup a brand new handsome face.  That included:  bundling my two products together as a simple “web downloading suite”, update the new graphics with artwork from someone who knew what they were doing, a new name, and a new website.  Of course, I included some small enhancements and a few key bug fixes, but there wasn’t really that much new in terms of functionality; it’s just a much better looking package that runs much better on vista and Windows 7 and, as a package, it’s much cheaper (by a third).

The development was a pain.  The primary source of that was wanting to move the main product, the product formerly known as “WebSnatcher”, to Unicode.  Well, that didn’t work at all (and I believe I covered exactly why in a previous post), so rolling that back was kind of a pain, especially not having source control.

Then, just before I went to the US, I ran out of time and didn’t have all the software that I needed to prepare the installation.  My copy of InstallShield was in my storage unit and one of my first jobs was to pull that out and put together the installation while I was in the US.  But, upon arriving in the US, I discovered unlucky mistake:  Apparently the software that protects my product had corrupted one of my DLLs.  After trying numerous workarounds, I realized I was stuck and had to wait until I got back to China in order to rebuild the DLL and protect it again (I had some vague memory that the protection software would corrupt files one in a hundred times or so…actually, I now have no idea if that’s true).  So, I gave up on releasing my software and forsaked two months of revenue.  But, when I started the project up again in China, I realized that it wasn’t the software at all, it was just some absurd new security feature in Vista.  How many times has Vista prevented me from “realizing my potential”?  Well, let’s not even bother counting.  I immediately got a copy of Windows 7 and installed it on my laptop and reproduced the error.  I fixed it by manually registering the stupid COM DLLs on install and not automatically through DllRegisterServer().  Easy fix…once I knew what the problem was.

Well, as big a disappointment as that was, it paled in comparison to setting up the fulfillment operations.  I assumed that once the product was actually done, setup created, website running, and everything, that the big problems were behind me.  Oh no.  And what’s worse, these problems were even more stupid than the Vista problems.  In fact, all throughout this release, every problem I ran into was not a problem solved by creativity or innovation, but some dumb barrier placed by some bad design choice or lousy support system.

It started off pretty well.  I was set on fully automating order fulfillment.  Before, when a user purchased a product, I’d get an email notification.  Then, I’d log into my Windows machine, start up the software that protected my product, input their name, generate the key, then save the registration key as a text registry file.  I’d then start up my email program, copy the usual mail text from a text file and paste it into the email, then add the registration key as an attachment and send the email.  I got pretty good at this, where it would take two to three minutes to fulfill.  It wasn’t that big of a deal since I didn’t get that many orders, but the one huge downside was that it was dependent on me.  If I didn’t check email, someone wouldn’t get their key for a day or more (if I were a user, that would irritate me).  If I went on vacation and couldn’t bring my laptop, they wouldn’t get their key for a week, or maybe more.  But, at least I set up an autoresponder to let them know (no matter, that would irritate me too).  So, I was committed to 100% automated fulfillment.

The software that I use to protect my application came with a ‘C’ API to implement your own key generating tool.  That’s exactly what I needed and it fit the requirement of the regsoft.com, my fulfillment company of many years.  They simply needed the registration key to be output to stdout (text in a console application, basically) and to know the arguments that you required to be passed to your application.  Easy enough, and I was able to implement it in just a couple of hours (the one party in this whole affair that did do a good job was the protection software).  I then, according to regsoft’s instructions, emailed regsoft and asked them to evaluate my application, I attached the application in a zip file (renamed to .ziz), I included a readme.txt file with the arguments I required and sample output.  I did everything to the letter.  They said they’d review it in two days and get back to me.

Two days came, nothing.  So I wrote back.  I got an email response saying something like, “Oh sorry, we got your email but the file wasn’t attached.  Please send it again.”  I sent it again this time from two different addresses.  Two days later, I followup and get the same response.  This time I send another email and add an FTP link with username and password (which I tested) where they could download the file.  Two days later, maybe more, I follow up again.  I get the same response, except this time they suggest that I add a link where they can download it.  So, I write back nicely saying, “You guys don’t seem to have your act together.  I’ve already provided all of this.” to which they replied with profuse apologies.

It was a little too late anyway because I had learned of another fulfillment company, a sister company in fact, called regnow.com.  This looked more attractive anyway because they had an extensive affiliate network.  So, I was committed to switching.  I started the process to get my software selling on their site.

Of course, their system was way more complex than regsoft’s.  I actually liked the regsoft system quite a bit; it was well designed, they just lacked the affiliate network and their customer service was lacking at times.  Combine the two and you’d have a strong combination.  Anyway, just getting through the first two pages took a whole afternoon.  They had huge sections to prepare affiliate marketing kits and so on.  I had to create graphics from the artwork that my designer created for me in all sorts of dimensions.  No matter, I plowed thorugh it.

Then I got to the automated key generation section.  I assumed that I’d be able to use my little Windows console app to generate my keys.  No such luck.  They had much stricter requirements:  You had to submit source code, not an executable.  And it had to be compiled by the GCC compiler (uh oh) and be able to run on a Solaris machine (or whatever).  Well, I looked a bit into this, but I hate these open source compilers; just getting them to work is a monumental effort.  I don’t understand why they enjoy making it so hard, well actually, I think I do, I should write a post on the psychology of programmers.  Anyway, I realized this was going to be an effort so I first had to ask a key question:  “My key generating application is dependent on a Windows DLL (the protection software DLL), there is no way around this.  Do you support an app that can run on Windows?”  I never really got an answer to that question, but I did submit my source code just to see what would happen.  A tech representative wrote me back with a long list of errors and told me to fix them.  Most all of them were from Windows identifiers that the GCC system didn’t understand.  OK, that settled it for me; this was the wrong battle to engage in.  Was there another solution?

Turns out, there was something that looked promising.  I had recently purchased an upgrade to my protection software which included many updates in custom key generating options.  One was a CGI library.  I’d never done that before, but how cool would it be to generate keys over the web?  Regnow supported this, that was good.  So, I just needed to upload the library to my cgi-bin folder on my website and create a little web page to test it.  I uploaded the library, wrote the page (even easier than writing the first application), and tested it.  ERROR.  So, I opened a ticket with my hosting company to find out if they supported this.  I was suspicious of one little line in their CGI documentation:  make sure your script ends in .pl or (one of the other popular CGI scripting languages).  Mine was a compiled library.  Maybe this was impossible to work.  Regardless, my ticket was there.  In the mean time, I posted the “do you supported compiled CGI libraries on your server?” question to another hosting company.  They wrote back right away with “Yes”.  Would I end up switching hosting companies too?

In the mean time, the other company took forever to answer.  The first response they gave me was, “Can you set up a test page?” to which I replied, “Look at my original request; I’ve pasted in text you need to test it.  Just save that text to a ‘test.htm’ file and open it.”  I won’t go into the details of all the back and forth, but finally they confirmed that it was indeed true – they only supported scripts, not binary CGI solutions.  Time to switch hosting companies.

I started trying to switch hosting companies.  I figured out the plan I wanted and the duration (I wanted the max length so the monthly rate would be very low).  But, my credit card was denied.  Oh no, not now.  I tried jumping over to some software that bypassed the China filters and disguised my IP address.  Still failed.  I called up the company and told them what was going on.  They suggested that I either go to Hong Kong or call someone in the US to make the purchase for me.  So, I called my mom and we walked through it at least two times, maybe three.  DENIED!  Remember, this is all balancing times between the US and China so much of these conversations took place late at night or early in the morning for me.  I called the bank and told them that I was running into these problems.  They suggested that I call the hosting company back and explain to them that I had contacted the bank and so on.  She also gave me a phone number that they could call in order to verify that I was telling the truth.  Back on the phone with  the hosting company, the customer service agent was great; he seemed to understand the pain that I was going through.  As he was communicating with some of the people looking into the credit card, he would quietly pop back on the phone with me and tell me, “They’re asking me if you sound like a real American” to which I could only reply in my best Apu voice, “Yes, thank you, hot dog, Britney Spears…”  We finally got it all straightened out, but I had to email over a scanned copy of my passport and explain again the situation, the people I talked to, the bank phone number, etc. etc. I was relieved when I woke up the next morning and I saw an email message, “Welcome to Host Gator!”  YES!!!

It took me only five minutes to upload the CGI key generating library and test it.  It worked!  Score another one for the protection software!  Now, it was just a matter of getting it plugged in to the Regnow system.  But, remember what I said about it being complex?  Well, it was basically impossible for me to figure out without plowing through reams of web page help which was badly indexed and had no search (what?!?).  So, I spent the next several days on email with support back and forth.  I asked for a phone number twice; never got one.  While these guys were helpful, they were constrained by this complex system, and their time zone.  It was basically an email per day unless I was lucky enough to catch one of them early in the morning (my time) in which case I’d get two emails in one day.  In between all that, technicians were changing parts of my submission, deleting sections, etc. etc.  This prompted more emails like, “Hey, I just added this, what happened!?”  It was a big mess, and they have a lot of improvement to make here.

I realize this post is already long so I’d better stop.  If I went into all the additional little problems of getting this product out the door, I could go on for another few paragraphs.  Let’s just say that it’s finally done and I’ve very happy with it.  An order came in almost right away and it was so sweet to not have to do a thing.  I’m looking forward to turning more of my attention to another project and spending a few hours a week working on marketing this software, something I never did the first time around (I think I could have done really well if I had any business sense back then).

I never would have thought that this little project would have been such a pain.  As they say in Chinese:  “Hao3 Shi4 Duo1 Mo2″,  “????”, or “The road to success is paved with hardship”.  Neat how you can say all that in just four words, huh?

Well, here t’is, finally!

Snatcher and Son banner

3 comments

Sep 16

Dunkin’ Doughnuts

Category: China

Can you believe it?  There is a Dunkin’ Doughnuts in DongMen!  That’s right.  You read correctly:  There is now a Dunkin’ Doughnuts in DongMen, the local shopping neighborhood famous for knock-offs, pirated DVDs, counterfeit, and so on and so forth.  The location is fitting though.  It’s right across from the McDonalds and KFC (aka “old head”).  They form a triangle of evil.  I’m just kidding; I like McDonalds in China.  And, I’m sure I’ll hit the Dunkin’ Doughnuts sometime just for fun.  I zipped by here and almost didn’t notice it.  Had to do a double-take and come back for the picture.  See the guy in blue in the foreground?  I think this is why many Chinese don’t care about throwing trash on the street; there are legions of these guys to clean it up!  (big man voice):  “So, when I see them, I see jobs!!!”  Thanks for the inspiration, Michael.

Dunkin' Doughnuts

2 comments

« Previous PageNext Page »