Thanks Google, and while you’re at it…

My last post about google was their adwords service not working for me… My account finally started showing ads a full week later. But it’s working now, so thanks.

So while we’re fixing problems, any hints on why this keeps happening. I use a couple gmail accounts for personal and business use, and recently switched to thunderbird for my email client and connect to my gmail accounts using imap. I actually switched to thunderbird because Outlook 2007 was completely lousy at handling imap (complete freezups for minutes at a time), but that’s another story.

So this has been working pretty well so far, except for one annoyance. I have thunderbird save the passwords for my accounts, but google seems to suddenly reject or expire them somhow every couple days or so. No set pattern, just seems like every morning at least one of my accounts needs me to re-enter the password, even though it still shows the “******” (my saved password) in the login box.

I havent figured out if this is a thunderbird problem or a google one, but whichever it is, gets annoying having to always redo passwords. I’m hoping this is one of those “doh how did I not see that” items.

Advertisements

Debug Windows Mobile with webservices with Fiddler – part 2

 The day following my posting the original “using fiddler” info (see this ), I got to try my same setup using a windows mobile 5 pda… and failed.

I won’t go into all the things I tried to get this to work again, but FINALLY found the right combo to allow a locally-connected PDA (via activesync) to connect to a webservice running in the visual studio development webserver.

WM5+ apparently no longer likes to use the ppp_peer name for accessing the locally connected pc. I’ve read there is a replacement called dtpt_peer that should work, but so far this one is batting zero. Instead, you can use an IP that gets configged automatically by activesync. I wish there were a name to use in place of the ip, but if there is one, i havent found it.

Basically:

169.254.2.2  is the IP given to the desktop pc.
169.254.2.1 is the ip given to the PDA.

Why not just use this IP in place of ppp_peer and get busy? Well windows on the desktop also treats these ip’s differently from the normal local ip, and when a connection is made through them, they are treated as remote connections.

Step 1. Let’s configure Fiddler to accept external IP’s. Note: the method I used will allow connections from *anywhere*, which is a bit dangerous as it could allow others to use your proxy and do bad-people stuff through it. You should really configure fiddler to only allow remote connections from the 169.254.2.* range.

Check this box:

enable remote connections

enable remote connections

Restart fiddler and your personal firewall will likely warn that fiddler wants to accept connections on port 8888, tell it yes that’s cool. Really, the personal firewall is a better place to go set some rules regarding the allowable ip range mentioned above.

Step 2. Add some script code to fiddler. Open the script editor and add this to the event called OnBeforeRequest, replacing the port 1234 with the appropriate one (the one web development server dynamically assigns):

if (oSession.host==”169.254.2.2:1234″){
   oSession.host=”127.0.0.1:1234″;
}

This entry will take the “remote” connection from the 169 ip and make it look like a local connection that the dev server will be happy with accepting.

Step 3. Setup the connection on the pda to use a proxy, and put the 169.254.2.2 for the proxy ip. For the http proxy portion, specify port 8888.

Step 4. Now open a browser on the PDA and connect to: http://localhost.:1234 , again replacing the port 1234 with your own. Yes, that is a “.” between localhost and the “:”. Go read on the fiddler website about it, I dont understand it either. If things work, fiddler should show your connection attempt in its log, and your mobile browser should show the locally hosted web content.

Now, you can use this same url scheme with your webservice calls from the PDA.

Warning! I also tried this same setup today with a compact framework 1.0 app. It *almost* worked, but the older CF.Net trimmed off the port number portion and thus was trying to hit port 80… and failed. As soon as I upgraded to cf.net 3.5, everything worked fine, and Im sure cf.net 2.0 is ok as well, though I should know better than to be sure of anything at all with winmo and CF.net dev 😉

Is This the Road to Candyland?

Here’s a strange one.

Driving on the interstate yesterday, I noticed some popping noises from my radio which happened to be running at elevated volume. Thinking I’d finally blown the factory speakers, I turned the radio down to investigate and figured out the noise must be coming from that strange increasingly-growing-thicker brownish streak on the road as it stuck to my tires and flung up under the car. 

I had to exit about that time and was more than glad to do so. However the junk flying off my tires continues for miles after I got off the freeway.

Once I parked atmy destination, I opened the door and immediately smelled something that was, well, pretty dang good smellin!

Apparently I had found a trail of thick sticky molasses leaked on the interstate. Some poor tank truck driver must have lost his cargo on his way to the candy factory, which instead made a nice tarmac-flavored candy coating on my car, complete with a light gravel topping.

I suspect I still have several gallons of it stuck on there. Everywhere Ive parked since, I’ve left a nice puddle of goo.  Fortunately I think it will dissolve in water, now I just gotta find a place I can submerge my car for week or so.

Google Adwords and the Mysterious Case of the Phantom Billing System

Well I’m having second thoughts about staying long with my google stock. I just finished a chat with a google adwords tech, and my faith in the company is, eh, not what it used to be.

I started telling my story here in detail but just realized that the chat log pretty much summarizes things.

Thank you for contacting Google AdWords. Please hold a moment while we route your chat to a specialist who will help you with your question: “Enabled ads last thurs and they still are not running. Dont know what I need to do to get them going. “.
TechDude: Hello Boomhauer. Thanks for contacting Google AdWords. I’m happy to help you.
Boomhauer: thanks
TechDude: For account verification purposes, can you please give me your customer ID number?
Boomhauer: sure, it is (number here)
Boomhauer: I was added to this account by (my associate)
TechDude: Would you mind waiting a moment while I pull up your account?
Boomhauer: please do
Boomhauer: ive waited 4 days already 😉
TechDude: thanks for waiting.
TechDude: I see that the card you have on file has not been charged successfully on a previous occasion and this is the reason your ads are not running.
TechDude: You will need to update your payment details for your ads to run.
Boomhauer: (my associate) just updated the card details, we have a new address for the card. it is a valid card.
Boomhauer: what do we need to change to force it to start running again?
Boomhauer: very frustrating that the system doesnt tell me a reason the ads are not running.
Boomhauer: i had hoped to get a lot of the july 4th weekend traffic to our site, but we were unable to do this, and not even told why.
Boomhauer: i waited all weekend for the ads to go live.
TechDude: I understand your situation. Just re-submitting the card details should enable the system to validate your card.
Boomhauer: should he remove the card and re-add it?
Boomhauer: becuase he already edited the card info last week.
TechDude: yes, removing and then adding will help.
Boomhauer: ok.
Boomhauer: very dissappointed. will get this done.
TechDude: If you ace any more problems in doing this please feel free to chat in again.
Boomhauer: (my associate) is trying to remove and add the card back now, but all it lets him do is edit it, which he already did last week.
Boomhauer: so it sounds like he has already done what is needed.
Boomhauer: can you force the account to re-auth the card?
TechDude: In the edit option you can enter the new card details.
Boomhauer: he put the same card info back in, i think this is why it doesnt work.
Boomhauer: this is what he already used.
Boomhauer: several days ago
TechDude: yes, can you try using some other card please.
Boomhauer: that is our business card we use for everything. it is fine. we dont have another card to use.
Boomhauer: there is NOTHING wrong with this card.
Boomhauer: we buy (big money figure) of dollars of parts every week using it.
TechDude: Can you please try-re-entering all the details of this card again?
Boomhauer: will do right now.
TechDude: It seems that this card had expired sometime back.
Boomhauer: (late month)/09 is the expiration
TechDude: If you have renewed this card then please be sure to change the expiry date in AdWords account.
TechDude: To update your payment information, please follow these steps:
TechDude: 1. Sign in to your AdWords account at (link here)
TechDude: 2. Select the ‘My Account’ tab.
TechDude: 3. Click ‘Billing Preferences’.
TechDude: 4. Edit your primary and backup card information. Be sure to enter
TechDude: your payment details, including card number and new expiration date, accurately.
TechDude: 5. Click ‘Save Changes’.
Boomhauer: Im looking at it right now- it already says expiration is (late month) 2009!!!
Boomhauer: it is NOT expired
TechDude: Can you please re-enter all the details again following the steps I have given.
Boomhauer: why?? it already has the right expiration!
Boomhauer: something is broke on google’s side. Im tired of trying to debug it for you.
Boomhauer: i wasted all weekend on this.
Boomhauer: look at the account. tell me what expiration date you see.
Boomhauer: it is (that month again) 2009.
Boomhauer: it is correct.
Boomhauer: it is not expired.
TechDude: Boomhauer, sometimes re-entering the billing information helps.
Boomhauer: the frustrating part is, as a tech support person, apparently you cant fix this? you need me to “try” something and just hope?
TechDude: can you do that please/
Boomhauer: yes ill do it.
TechDude: Please note that our billing process is automated and is done by the system.
Boomhauer: apparently it is broke.
Boomhauer: please pass this chat on to your superiors and let them know of my frustration.
TechDude: If your account is still not active within a couple of hours please contact us again.
TechDude: I will inform the concerned team regarding the issue you are acing.
Boomhauer: fine. Ill beg google to take my money 😉
Boomhauer: thank you for the help
TechDude: I apologize for your frustration.
TechDude: You’re welcome.
TechDude: It was a pleasure chatting with you. If you have any more questions, please feel free to visit our Help Center.

Slightly off topic, but why has every liveperson implementation Ive seen done with any larger company seem to be a token gesture not meant to give any results? Comcast comes to mind… I feel like “hey, you could call us and spend 2 hours on the phone and finally find someone who can help you… Or, just click this button and we’ll quickly give you a warm body with no power to solve any issue you have, but youll feel better after punching capslock and unloadingsyour frustration”. So far, liveperson is batting zero for me.

Google, please fix this. I wasted a chunk of my july 4th weekend doing everything I could think of to try to get my new ads running and attempt to get some sales from all the customers where were off for a long weekend… a good portion of which I imagine were on the web, buying my competitor’s inferior products (competitors: you know i’m just kidding about that inferior part, right?).  If my credit card is having problems, let me suggest a notification: “Attention: your credit card is unable to be charged and requires updating”. See how that works?

And if that is too difficult, could you maybe consider giving your support guys the power to actually fix something? I don’t need virtual handholding.

I never imagined I’d have to work so hard to give someone my money.

Debug Windows Mobile with webservices on localhost using Visual Studio Web Development Server and Fiddler

This has frustrated me for a while, but seems I found a solution this evening.
I build a lot of Compact Framework apps which communicate via webservices with an asp.net webservice. During development, I prefer to use the built-in web development server instead of having to mess around with IIS etc.

The problem: the web dev server only allows connections from “localhost”, which doesnt include your dev pda, assuming you are using activesync. Long story, but even though the pda can browse the web using your desktop’s ip, it has it’s own local ip which makes the dev web server think it is a remote connection. Thus is winds up blocked.

Solution seems to be, download this tool: http://www.fiddlertool.com
Fiddler is a local proxy which is used for debugging http connections, and is normally used along with asp.net development.

You can disable the logging in fiddler so we’re just using it as a local proxy.

On your windows mobile device, add an http proxy to the connection settings. Use port 8888 (the fiddler default), and use ppp_peer as the host name. Im told that windows mobile 5 and greater use dtpt_peer instead, but I havent tested this yet.

NOW: when you wish to connect to a locally hosted web app or web service from the pda, use this:

localhost.:1234/path.asmx

where 1234 is your port number and.. you get the idea. *But* notice the single “.” after localhost. This is the magic that makes this work. How? Well, I’ve fought this battle long enough, discovering why is a luxury I don’t have at the moment.

To Catch A Geek: Texas to Jail Computer Techs

Texas, of whom I am usually proud to call myself a native, somehow managed to pass one of the stupidest laws I’ve heard of in a while. If you work in computer service and repair (cough*geek*cough), you now are required to either have a criminal justice degree or a private investigator license. A CJ degree of course is 4 years, and a PI license takes at least 3 years of training to obtain. Punishment can be up to $4000 fine and imprisonment , and – get this – even a customer of such services can face the same punishments, even just for SOLICITING work from an “unqualified” geek.

Think about this. How many members of your local geeksquad, or your neighborhood ‘pooter geek, are going to have these qualifications? NONE.

Then also think about this: I don’t want to bash law enforcement, but think about the people you know with CJ degrees. Either cops, or college athletes who didn’t know what to take. Ok that was a bit harsh, but seriously, these are the guys we have to rely on to fix our PC’s for the next 3 to 4 years while the “real” geeks get “educated”? Refer to Zoolander clip.  (sorry, couldnt figure out how to embed this one..)

Texas has very few restrictions on gun ownership, and allows carrying a concealed weapon after taking a class that lasts all of 4 days (last I checked). Only in Texas: 4 days to be packin’ heat, 4 years to help your gramma find her missing recipes file.

There’s at least one lawsuit already in progress over this, from the good guys at the Institute for Justice. This link describes more about the law and what they are doing to fight it. I can’t remember the last time I called lawyers “good guys” but I wish them luck in reversing this stupidity.

Of course there is that silver lining… now when your friends ask you for help with their PC, you have a  reusable excuse instead of having to invent a new one every time.

Scratch your Car and Feel the Freedom!

A wise drunk weird crazy man once told me that the first thing he always did after buying a new truck was drive it through a bunch of brush to get some scratches on it. I was a kid at the time and thought this sounded crazy.

Now XX years later, I realize the wisdom in this.

My work truck is an old beat up Ford, which looks good overall for its age but has that spot where I nicked a mailbox, the dents from poorly-aimed firewood thrown in the bed, and the place where I kissed a wall in a parking garage (not due to unfamiliarity, but from trying to do 35 on a twisting ramp I had become too comfortable with…)

Last year I bought a new (to me) car which still had pristine paint, no dents, no scratches. And while it is a blast to drive, I found myself parking far away from other cars, and worrying about getting a nick or a scratch in the paint. However, when I drive my truck, I don’t have a care in the world.

Only about a month after owning it, a valet parked the car and backed it into a wall, creating a series of nice scratches on the back bumper. Of course I wasn’t excited about this, but I’ve realized since that those scratched has relieved me from the opression of perfection. Since that time, I’m no longer so worried about little nicks and dings from day-to-day use, and I’m now (at least closer to) enjoying the freedom from worry that I’ve enjoyed with my truck for so many years!

So apparently the crazy guy knew what he was talking about.

I’ve observed the opposite in action as well. An unnamed associate of mine is a wealthy business man who last year bought a very expensive luxury car. I’ve observed this normally relaxed individual become obsessive in his quest to keep the car in pristine condition. Not too long after purchase, the “first scratch” appeared on a fender, inflicted by an unknown party. Instead of embracing the new freedom of imperfection, he took the car to the shop the same day to have it repaired, and continues to obsess over the car to this day.

Thus I propose the Scratch Your Car movement day month concept ritual. Anyone buying a new car should free themselves from the oppression of perfection by finding a creative way to “personalize” it and add their own first imperfections. Instead of dreading and being victimized this uncontrollable future event, embrace the process and take control of your life. Key yourself, bump into something (but not someone..), or find something really creative to do. You’ll simultaneously improve your life and create a good story to tell your friends.

And they’ll probably think you’re crazy too.