Archive for September, 2009
Snatcher and Son 3.1
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 commentMy 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 commentsGoreRange.info
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.
No commentsSoftware 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!
3 commentsDunkin’ Doughnuts
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.
2 commentsAmplifier Headaches
I am starting to work on some recording projects and need a working amplifier. I had MS ship over my studio guitar amplifier, a very nice one, from the US, but, silly me who didn’t even think about the power requirements, the amp has no internal transformer like a laptop and can only work with 110 volts. But, I had a brilliant idea: I can go to Hua Qiang Bei, the electronics capital of Shenzhen, and China, and I guess the world.
I got a tip from Davide to visit some stores in the area that sold mixing boards and microphones and ask there. I was successful at step one: locating these stores. The salespeople though weren’t selling what I was looking for, but they directed me to “Electronics World” across the street, which is yet another of these 4-5 story enclosures which comprise hundreds of independent shops. I asked one of the guards where they sold transformers (bian4 ya1 qi1). I couldn’t understand his response, but he gestured off in a certain direction, so I pretended to understand and thanked him. After walking down one corridor of mini stores and eyeing the wares, I began to notice a lot of power supplies and plugs. Perhaps this was the place.
And it was. The nice woman showed me two heavy transformers, about the size of a shoebox. After explaining what I was looking for and showing her a picture of the back of my amp, we settled on the 600 watt transformer. I walked back outside and to the bus-stop, quite pleased with myself. But, as I should have known, when I got home and plugged it in. It turned on briefly, made a horrible noise, and shut off. Dead. Reality set back in and I cursed at the idea of having to go back to Hua Qiang Bei.
I went the next day and the nice lady switched out the fuse. Oh, it was that simple? Just an old fuse or something? She gave me a couple of extras and we tested it. It seemed to work fine.
Back at home, I plugged it in and turned it on again. This time, it made a horrible loud buzzing, but didn’t shut off. Now, why didn’t I hear this loud buzzing when I was in the store. Oh wait, it was Hua Qiang Bei which is perpetually full of multitudes of screaming people. Makes sense. Well, back to reality again, I though, “How in the heck am I supposed to record with this awful buzzing in the background?” There was no reasonable answer, but I decided to at least try the amp. I plugged it in, turned on the power…BOOM! Fuse blown again.
OK, I give up. I could always have someone replace the transformer, I guess, but I do plan to go back to the US someday and don’t want to have to change it back again. Besides, there is zero guarantee that the electrician will do a good job. I could end up burning the whole apartment complex down. Forget it; I’ll just buy a new amp, a little cheapo studio one. That’ll be fine, I’ve got a nice effect rack. It’ll work. The next day, I learned about “Music Heaven” in Shenzhen and checked it out. Not bad! It’s another collection of stores, about 3 stories worth. The owner of the place that I tried out is a big fan of Paul Gilbert and had his picture playing guitar with him proudly displayed, so I thought that was fitting.
I’ve got an extremely heavy paperweight now, my shoebox-sized transformer, unless someone wants to take this thing off my hands. Return it to the store? Forget it. Welcome to Hua Qiang Bei.
No commentsWindows 7 Review
I realized that I finally had to upgrade my Windows installation on my laptop in order to debug my upcoming software release. For the longest time, since the beginning of my summer trip, I was assuming that a problem that I was having with one of my DLLs was due to my piracy protection software corrupting the file. In reality, it was, of course, some new weird junk security feature that was introduced on Vista. Back in China, after tracking the problem down, it was undeniable that fixing it would require me to install a new Microsoft OS. Folks who know me know that I think that Vista was a horrible release. Horrible, expensive, lengthy…just bad in every way. In fact, here’s a Microsoft anecdote: I can recall sitting in on a meeting with the VP in charge of Vista. He was shouting and complaing and pleading and asking, “Why can’t we do this? Apple has been doing this for years?!” When the explanation came, he put his head in his hands and shook his head back and forth saying, “This is so depressing.”
That says it all. OK, it’s not news that Vista is junk. However, I have been surprised by Windows 7. And it only had to do a few basic things much better:
- Improve the wireless connectivity and interface. It’s way better on Windows 7; in fact, it’s better than the Mac (can you believe I’m saying that?). Actually, I’m not sure what this was like on Vista, but it was ridiculous on XP:
- When you type in the Wireless password, you have to type it in twice! Why?! You’re not setting the password, you’re just accessing the wireless network!
- Once you connect to wireless, the UI is out of sync: Though the machine is connected to the wireless internet, the button at the bottom says “Disconnect”, while the wireless network says, “Not connected”.
- Improve the stupid “Start” menu. This was an easy fix and much better in Windows 7.
- Improve the speed. Windows 7 start up time is similar to XP.
- Improve the worst feature of Vista: the cumbersome security. Way better in Windows 7; you barely notice it. UAC will not become a household acronym.
On top of that, the new taskbar is way better. It looks great, it’s simple, and accessing your open applications is almost as good as Apple’s Expose.
I’m looking forward to upgrading my desktop machine to Windows 7. I’ll do that as soon as the product is officially released. I’ve been running XP SP1 (yes, that’s SP1) for a long time now. When I tried installing SP2, the machine wouldn’t boot. From that and other lessons like that, I’ve also always turned off system updates. But, I’m beginning to hope again with Windows 7.
No comments


