Monday, January 19, 2009

XamlTune just got a little better

XamlTune is a fab utility for converting SVG to XAML. It's one of the best things going for conversion from Adobe Illustrator to XAML.

Unfortunately, like all SVG-to-XAML converters, it's flawed in various ways.

I've just released my second patch for XamlTune, which fixes a few more of the flaws and makes Adobe Illustrator to XAML conversion that much easier again.

(You can download my XamlTune patches here.)

Key fixes:

  • SVG shapes (circles, ellipses, etc) that have a transformation matrix, now convert correctly. Woot! (The trick was to convert them into XAML Paths instead of XAML shapes.)

  • SVG circles are now converted into XAML Ellipses, instead of being converted into XAML Paths. (But if the circle has a transformation matrix, we stick with XAML Paths, as per the previous point.)


XamlTune has cost me a few days of debugging work (i.e. debugging XamlTune), but it has saved me much more time than that with an already extensive SVG-to-XAML conversion framework. I am glad to be able to contribute my bug-fixes back to the project and help it help others more.

Enjoy! :o)

Wednesday, January 14, 2009

PayPal - well, their tech support kinda worked for me

I sent a very unhappy email to PayPal about some stupid stuff their automated systems was doing to my account. It took a phone call to find out what address to send the email to. But despite the many difficulties I've had with them, to be fair, I must commend them that :

1) We were actually able to ring them by phone and speak with a human;

2) When we sent our complaint email to the email address we were given by phone, we actually got a reply from a human - and within only a day or two;

3) The human answering our email had clearly comprehended our complaint, and checked our account to ensure it was all fine;

Yes - PayPal automated processes have some issues - some of them pretty serious - but to be fair, I have to say that I am impressed that they listened and responded and my account is working again.

Kudos PayPal for at least doing this much...

Monday, January 12, 2009

Convert Adobe Illustrator files to XAML via SVG

There are lots of ways to convert Adobe Illustrator files to XAML, but for my needs, none of them were quite good enough.

The Adobe Illustrator XAML-export-plugin was mucking up some of our line art.

InkScape's built-in XAML support was mucking things up even worse. (I LOVE InkScape, but its XAML support is still not as good as hopefully it will be one day...)

XamlTune was mucking up a few things here and there as well.

Anyhow, I discovered that, for our line art, the main problem with XamlTune was its handling of thick strokes on ellipses. I fixed the XamlTune source code, submitted a patch, and now, voila, XamlTune is converting our line art perfectly! (Or at least, my eye notices no deficiencies.)

Here are the steps I'm taking:

1) Open the Adobe Illustrator file in Adobe Illustrator. (A free 30 day trial is available.)

2) Save a copy as an SVG document. (There are lots of SVG options, but at least for us, the default SVG options work fine.)

3) Use XamlTune to convert from SVG to XAML.

I doubt my patch will be integrated into the main XamlTune source in a hurry, so if you have enough technical nouse, get my patch from the XamlTune CodePlex site and enjoy the benefits. :o)

Your mileage may vary - apparently SVG to XAML conversion is not good at handling gradients, but all our line art is just simple sets of lines, paths and shapes, so that hasn't been a problem for us...

"Cannot locate resource" in VS.NET 2008 when debugging

I downloaded XamlTune - very helpful, but a little buggy. So I turned to the VS.NET 2008 debugger. But every time I tried to run the XamlTune source code, I would get a "Cannot locate resource 'Output.xaml'" error message at runtime during app startup.

I searched and searched and found zillions of people getting the "Cannot locate resource" error message, but nothing solved the problem in this case.

By trial and error, I finally discovered that the assembly name is the culprit in this case.

The XamlTune "solution" contains a DLL called XamlTune and a separate executable by the same name.

XamlTune.dll
XamlTune.exe

In Release mode, this runs fine, and presumably, in previous versions of VS.NET, it ran fine. But in VS.NET 2008 sp1, running in Debug mode, the aforesaid error occurs.

The solution is extremely simple: Change one or other project file so that the assembly names of the two projects differ.

Clearly a bug in the VS.NET or .NET framework implementation, and it certainly wasted hours of my time today, but when you know how to solve it, everything works nicely again...

XAML stroke - inconsistent, but livable if you know the tricks...

I'm using XamlTune to convert SVG to XAML. Ellipses with thick strokes weren't converting correctly. I dug deeper, and discovered that XAML is inconsistent in its treatment of stroke placement.

For paths, the stroke is centred on the path line (as with SVG). But with ellipses and rectangles (and hence circles and squares too), XAML draws the stroke INSIDE the perimeter line. SVG is consistent - the stroke is always centred on the perimeter line.

Anyhow, I had difficulty finding info on this anywhere, so I tested my theory with some practical examples.

In XAML, create an Ellipse with e.g. a 100 pixel diameter.

<Ellipse Width="100" Height="100" Fill="Yellow" />

Then set a very wide stroke:

<Ellipse Width="100" Height="100" Fill="Yellow" StrokeThickness="50" Stroke="Blue" />

Voila! Note that the size of the circle is the same whether there is a stroke or not. Thus, XAML uses an internal stroke for ellipses.

But do the same thing in Inkscape (i.e. in SVG) and the circle gets larger as the stroke gets wider.

Since I found it hard to find anyone else commenting on the same "gotcha", I thought I'd make note of it here...

Friday, December 5, 2008

SQL Server 2008 Express Edition

I've just installed SQL Server 2008 Express Edition.

Thought #1 : It rocks.

I found SQL Server 2005 (particularly the SQL Server 2005 Management Studio Express) to be VERY slow - you know, 10 second delay here, 10 second delay there. And btw, I'm using a very powerful machine.

None of that ridiculous stuff (so far) from SQL Server 2008 - bam! Responsive. Fast. I like.

Thought #2 : It's extremely unintuitive figuring out how to install SQL Server 2008 Management Studio Express.

SQL Server 2008 Express Edition installed with my version of .NET Studio 2008 Express. But no Management Studio. I find Management Studio particularly useful, so I wanted to install it.

Problem #1 : It's now called Management Studio Basic instead of Management Studio Express.

Problem #2 : With SQL Server 2005 Express Edition, you could download and install the Management Studio separately. Turns out that option ain't available with SQL Server 2008 Express Edition. You actually have to download a 200MB+ install package that includes both SQL Server 2008 Express Edition and the Management Studio. That's not obvious, but once you know it, ok, you can move on...

Problem #3 : When you launch this installer, it is extremely unintuitive finding how to install just the Management Studio, given that (if you're in the case I was in) you already have SQL Server 2008 Express Edition installed and just want the Management Studio to be installed.

Many many MANY thanks to these guys who wrote an article which gave me just enough information that, with a bit of trial and error, I finally managed to triumph. If you're in the same boat as me, go to Installing SQL Server Express 2008 and it shows you the things you need to know. Kudos!

Wednesday, December 3, 2008

PayPal - systems gone awry

Strong language warning

Hello PayPal,

I hope that the reports of abysmal/non-existent PayPal service are false, because this situation is entirely PayPal's fault, and I've heard lots of stories of PayPal screwing customers when the situation was not the customer's fault.

My wife made a purchase online using her credit card.

She does NOT and has NEVER had a PayPal account.

She did NOT log in to PayPal to make the purchase - she simply typed in her credit card number.

It so happens that she is an additional card holder for my credit card account.

It so happens that I have two PayPal accounts, and my credit card is linked to one of those accounts.

You, PayPal, decided behind the scenes to link my wife's online purchase to my PayPal account, but you have done so in a way that has broken everything.

I will go into full detail below, but the present ludicrous situation is that YOU PayPal are demanding that my wife log in to her non-existent PayPal account to restore her account access. She cannot log in to her account, because she does not have one (and has never had one). And in the meantime, my own PayPal account is disrupted, and logging in to my own PayPal account has not resolved the issue.

If you have gotten this far, thank you for taking the time to consider that it might be possible to improve the PayPal systems. (If not, then I sincerely hope you are supplanted by someone who actually acknowledges their mistakes and improves their game.)

Here is what happened :

* Early July, my wife made the purchase as previously described (from "Hallelujah Acres"), using a computer I do not use, that was not logged in to PayPal. She entered the credit card number directly.

* At around the same time, I used PayPal (on a different computer, and logging in to my PayPal account) to donate a small sum of money (around US$10) to someone else.

* Weeks later (international delivery, so it took a while), we received the goods my wife purchased (some health food).

* My wife, reviewing our credit card statement, saw a large PayPal transaction. The credit card statement read "PAYPAL *BFOBUILDING <number removed from this public copy of this email>". The number matched my PayPal account number. I knew that the only recent activity on my account was the US$10 donation. I logged in to my PayPal account, and the small donation was the only transaction visible. The bank statement said PayPal took the money, and related it to my PayPal account number, but PayPal denied knowledge of the transaction, claiming nothing had happened. I knew nothing had happened on my PayPal account, because I had not used PayPal for a very long time, except for that small donation. Accordingly, it was evident that fraud or computer error had occurred. For the first and only time in my (lengthy) credit card history, I raised a chargeback with my bank.

* On the 4th of September, my wife got a phone call out-of-the-blue from a woman in America. This woman politely asked why we had issued a chargeback. My wife was confused. My brain made a few quick connections and I suspected I knew what had happened. I took the phone from my wife and spoke with the woman. Lo-and-behold, she was from Hallelujah Acres, and the PayPal transaction we had rejected was for the health food we purchased. But how were we to know? PayPal was indicted on the bank statement, yet my PayPal account claimed ignorance. Anyhow, as soon as I realised that the transaction was valid - even though misreported by PayPal - I promised to contact my bank and undo the chargeback - which I promptly did. (I contacted my bank, asked what to do, and sent in a detailed fax re-authorising the transaction as they advised me to do.)

Whilst it was irresponsible of PayPal to put us and the vendor through this hassle (by representing to my bank that the payment came from my PayPal account, yet showing no evidence of it in my PayPal account), that is only half the story. My wife subsequently received an email from PayPal declaring that she must re-activate her account due to the recent chargeback. She never had an account.

But it goes on. I had reason to wish to use PayPal again just recently, but discovered that my own PayPal account is not working properly. Realising it was probably related to this whole stupid debacle, and having heard only bad things about PayPal's moronic support policies (or "no support" policies), I didn't even bother contacting you.

Now my wife receives a second email insisting that she must re-activate her non-existent account, and threatening account closure if she takes no action.

Based on how poorly your automated systems have performed in the past, it seems likely you will accidentally (or is that deliberately?) close my own good account too, and without warning, and without cause.

I have used PayPal in the past. The only trouble I have ever caused PayPal is by acting in good faith on information PayPal itself provided - i.e. by you not showing in my account history the transaction in question, but you simultaneously reporting to my credit card provider that the transaction in question actually did come from that selfsame account, you were clearly telling me that the transaction was in error or a fraud, and I acted in good faith on that information you provided. And now you insist on continuing to confuse and bamboozle my innocent wife by telling her to take action with her non-existent PayPal account, and you continue to frustrate myself and any vendors I might purchase from in the future by disabling my own account to some extent yet not providing me any way of re-enabling my own account.

I have joined the long list of people who have found PayPal to be a farce, a joke.

If you resolve this issue, without further ridiculous hassle or effort on the part of myself or my wife, I will be impressed. And I will blog about it to counter the voices of those who say that PayPal never cares.

But there are too many sad stories out there for me to believe that you will.

Which way will it be?

Here's hoping,



Jonathan Field

UPDATE Thu 15-Jan-2009 : PayPal replied.