2012

Not huge on “year end” or “goal” posts.. or is that goalposts? but last year I did a 2011 and Beyond post, so I figured I would do one this year. Of course it is 2 days late, as I was on the road and kind of disconnected from Dec 23rd until Jan 1st. But here goes.

First…How did I do from last year .. I did some of the things, tried to do some of the things, and failed at some of things, expected.

This year? Well..

  • Spend more time with Emily and Ella
  • Lose weight! Failed at this. I used Fitbit (that is another post) and I want to try to do 10k steps a day this year
  • Brew at least 1 batch of beer a month (And try a Secondary, and our own recipe)
  • Utilize social networks and sites more.
  • Learn to cook (tried last year but the class was cancelled?!?)
  • Complete a few awesome projects at work
  • Hit 1000 blog posts (should be easy, I’m at 991 right now)
  • Hit 3+ conferences and network like crazy
  • Keep adding value to MADPASS
  • Get home to Pierz and Chisholm 3+ times
  • Buy a house
  • Get rid of Windows in my house

And there is so much more. So much to do, it never ends. But we can try, and still have fun. To everyone, have a great year and do things you want to do and have fun doing it!

Europe

Last month, I was in Europe for a week on business. Madison to Chicago, To London to Milton Keynes, to Zurich, back to London and then to Chicago and Madison.

Was a real good trip (the business side, and seeing UK and Switzerland), but there were some things that just seemed.. well, weird.

Driving on the other side of the road.. yet using Miles instead of Kilometers in the UK. Also, instead of using “feet” for exits (Exit 1500 feet) they use Yards.. the only thing I know that uses yards is American Football. And that there are 3 feet in a yard.

GBP.. the pound. or lbs or # .. since I don’t have GB English keyboard setup. First off, the exchange rate is crazy, and then, the coins?! It was hard keeping all the denominations straight. 1 pence, 2 pence, 5 pence, 10 pence, 20 pence, 50 pence, 1 lb, 2 lb then 5 lb note and onward. Bills were too big for my wallet too.

The signs. “Give Way”, “Kill your Speed”, “Mind the Gap”. and so forth..

Sandwiches.. what is up with the sandwiches in the UK? Tons of different types and “flavors”. Odd for an American I guess.

Internet: no free wifi. Anywhere. UK or Switzerland. You pay by the hour, or 24 hours. What a rip.

Mobile service. Roming charges are through the roof, data roaming 20$/1MB – wtf! 50 cents an SMS..

Food.. proper english breakfast every day.. and for dinner, random things .. everything is similar to US, but slightly different. Just odd.

Country Pubs – loved these in the UK.. very laid back, my type of place.

Bacon. – wtf? real bacon is called streaky bacon. UK bacon is like, canadian bacon/ham ..kind of. Give me real bacon, any day.



Public transport – trains, the “tube” (subway) and other things, just way more advanced than here. Things are closer together, you can walk.

Roundabouts – there are like 6 in Sun Prairie, about 600 in Milton Keynes.

Beer – usually good beer on tap, no Bud, Miller, Coors, etc, etc. The crappy beer is good beer in the US.

Toilets – I never met one that flushed right, or some at all

TV – in the UK.. BBC 1,2,3 and Sky.. and thats it. In Switzerland, a few more channels, but after 11 PM, every commercial was an ad for .. well.. x rated things. Much different than USA

Zurich airport was the cleanest I have ever seen. Welcoming too.

Easyjet – boarding from the Tarmac

Downtown Zurich – very nice. Tons of bikes and walkers and train riders. Cobblestone walkways, just a good area.

Swiss Francs – worse that GBP. More denominations (1/2 francs?!?) and the conversion rate is horrible, not only that , but inflation rate is horrible. 2 beers for 17 francs? phhhh

Swiss.. most people can talk “baby” words in English.. Hi, Bye, Yes, No, Thanks, etc, etc.. some are real good at english, some have none. Your mileage may vary. If you go to a bar, just as for “Beer” and you might get something good, or bad.

Soccer – world cup was going on. I could hear vuvuzela’s everywhere i went from the TV’s having the games going.

Taxi drivers take credit cards in Zurich.

You can get Kangaroo and Ostrich Fajitas in Zurich..

There is a huge snow dome in Milton Keynes. You can go snowboarding any time of year.


The weather was nice, didn’t rain at all, 70’s.. but learn to convert Celsius to Fahrenheit.. since they all report in Celsius.

The iPad made it from Chicago to London, on the whole time, reading a book, and lost only 40% of the battery.

The trip was awesome, I had a good time, learned a lot about our business in Europe, met some great people, put faces to names, and just all in all had fun. The only downsides were, I missed my family and I wish had more time with each country and group in Europe. Two conflicting things!


Hacking Microsoft Pro Photo Tools – Using Reflector to use MapPoint Lat Long Lookup (for free!) in C#

The other day, Microsoft came out with “Microsoft Pro Photo Tools” which allows you to geocode your photos. It is a pretty cool app, but there are some things that I wonder, like why didn’t they just build this functionality into Windows Live Photo Gallery?

Anyway’s, with any new thing I download and play around with, I started digging into stuff. I looked in the install directory, C:Program FilesMicrosoft Pro Photo Tools and noticed that there are some Interop assemblies and other assemblies, etc. I fired up Reflector and started disassembling the assemblies and exe. Pretty cool stuff, you can see what they are doing. Using xaml forms, etc. The cool stuff is the Location based stuff.

Microsoft has MapPoint web services which you can use/sign up for, but they cost a pretty penny. I have used some of these web services in the past and they have a ton of functionality.

Like I said, digging through the disassembled stuff in Reflector, I saw a method “GetLatitudeLongitude()” which takes in country, state, city, address, zip and returns a lat long object. But, you need a “MapPointWrapper” object to use it.

I fired up Visual Studio 2008, and then referenced the assemblies in the Pro Photo Tools directory so I could use them in code. I created a test WinForms app, and started hacking away.

Looking at the MapPointWrapper class constructor in Reflector, I noticed that it needs a username, password, URL, and timeout, the first three I don’t have – but I bet I could find!!

Here you can see the constructor as it looks in Reflector. The thing I noticed right away is that they have the username and password embedded in the function, although its all “encoded”, then blend the strings together to create default credentials. Their blend method is using some bitwise operators, etc, if you are interested, you can just click on the Blend method and it browses to that (did I mention Reflector is cool??) – anyway’s, I still need a URL…

image

Reflector lets you click on a class and “analyze” it, which gives you what classed depend on it, which classes use it etc. Just going through the list for MapPointWrapper, I found one that showed how they call the constructor.

image

That’s the ticket! You can see they are passing in empty strings for user/pass (which then gets converted to the correct user/pass by the constructor) and then the URL is right there!!! nice! We can use this!!

Now, on to using this functionality in our own app!!

image

Now, this will give you the lat/long back from MapPoint! Sweet. Now we can start digging into everything else – what else do these assemblies expose?? Can I get routes? directions? Maps? etc, etc, etc. There is a plethora of things to dig into. It looks like they are just using Virtual Earth though to get maps, not MapPoint (from what I can tell anyways).

I know there are a ton of other ways to get this info, but this was basically a test to reverse engineer their assemblies and use the functionality. I don’t recommend or condone hacking/reverse engineering assemblies like this for profit, more for fun , in other words – don’t use this in a production app as Microsoft would probably find out and come hunt you down.

This post is also just an example of how .NET code can be disassembled easily and re-used, for good, or evil 🙂

There are some basic things that every developer should do with .NET desktop apps – use Dotfuscator (which just obfuscates your code, making it harder/not feasible to reverse engineer, and also encrypt any strings/values you don’t want anyone else using or reading. That being said, Reflector is a great way to see how other applications are coded, and learn how they work. Happy Coding Hacking!