Faster than the wind

Saw some article in PopSci about a wind powered car, and it used a propeller to drive the drive wheels. Claimed it could drive directly into a headwind with the setup. Which makes sense, but then we later began discussing whether it could go fater than a tailwind. Very non-intuitive, but turns out this is possible… and pretty dang cool. I did some searching and found this discussion on the topic: http://karmatics.com/dwfttw (dtfttw = downwind faster than the wind)

Another short promotion- rfidpedia.com

Have a new site out, rfidpedia – at www.rfidpedia.com – goal of which is to be a comprehensive directory of RFID related products and services. Feel free to check it out.

Posted in RFID. Tags: . Leave a Comment »

Short Promotion – HyundaiOwner.com

Just a quick promotion for www.hyundaiowner.com , a new forum for Hyundai car owners. The new Genesis is showing that Hyundai means business, so I expect there to be increasing interest in this company and their cars going into the future. Heck I wouldnt mind driving a Genesis myself ;)

wpf printing with xps – avoiding rasterization

I’ve had a collection of headaches getting printing to work correctly in a wpf app that displays long vertical graphs of geological data.  Paging is one topic Ill cover later (as Im still trying some things to determine which works best), but a recent headache has been apparently random rasterizing of parts of the printout. I normally print using acrobat to a pdf for testing purposes (don’t wanna waste paper!), and I’d noticed that some parts of the graph seem to get rasterized while others stay in vector fomat. You probably already know this but rasterized output will typically not look as good on most printers, plus it can rapidly increase your data size sent to the printer (or pdf). And, if you are using a pdf, you can zoom in on the file when viewing it.. so any rasterized parts will get all jaggie and ugly.

So, my lessons learns so far in avoiding this:

-Dont use opacity settings. So far, I only had opacity levels set for some background fills inside a curve line. This would result in rasterizing both the curve line, fill, and apparently anything drawn behind it- which in my case included the entire background grid.

-(I havent verified this one, but-) dont draw geometry that extends past a clipped edge. For example, my curve lines would draw past the edge of the canvas they were displayed on, and the canvas had clipping turned on. Again, not verified, but i think this was causing rasterization.

- Don’t dump an oversized visual into a page that it doesnt fit in. This is another one I havent confirmed, but it seemed that the longer the data I shoved into a page (and which continued off the end of the page), the more likely some parts wound up growing jaggies.

If I find more, Ill add it here. Now I’m off to figure out efficient ways to chop up my graph into pages.

My favorite projects

These are a few of my current favorite programmer/nerdy type projects on the web-

ReactOS – I’ve been watching this one a long time and it seems to be building steam. This is a free/open source clone of Windows… While still in alpha stage, and crashes are frequent, it is truly amazing how much windows functionality is working. Even Firefox 2.0 runs in it. I’ve been contributing some bug reports and compatibility report, and hope to get deeper involved in the future.

Cosmos – A .Net based OS… ok that’s a bit confusing, but basically you write .Net code and this project is able to compile the .Net into direct assembly language. Also a bit early, but also progressing nicely. I’m envisioning using this on some small and/or embedded systems in the future.

Phalanger – This is an awesome project which compiles PHP code into CLR… so you can run all those php apps in an IIS/.Net environment, and even develop in visual studio. Unfortunately it has gone a bit stale, the rumor I heard is one of the leads was hired by MS and doesnt have the time to put into the project any longer. I’m hoping the best for the project.

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.

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: 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.