Hello,
Yes, it's very good for non-tile-based environments. The thing is to construct he graph "on the fly", not have it constructed beforehand (since it might be way too large to store), and that's one of the advantages of A*: it doesn't need to look at the whole graph or keep it in memory, just a function that for each node, it returns a list of neighbors.
I'm using it in my own game, and it works beautifully (and quickly!) and I'm not using tiles.
I recommend that you add a visual element while you program it. For example, render a little white dot for every node expanded, that way you can see exactly what it's doing.
BTW, the link doesn't work, it says it's deactivated.