Free Adobe DNG Viewer For Windows … soon

Adobe claims they are finally going to release a DNG file viewer for Windows. I’ve been itching to try that format as a replacement for the NEF files that are produced by my Nikon … but I and my wife still use Windows Live Photo Gallery, which doesn’t have a freely available DNG viewer. (Very very lame Adobe… push a format that doesn’t even have a thumbnail viewer for XP or Vista).

On a side note, if you’re a Windows user and itching to set GPS coordinates into your photos (and ideally have a GPS with tracking data), check out the Microsoft Pro Photo Tools version 1 here. It’s a bit rough around the edges, but functional.

image

image

I don’t understand why it was written using Windows Forms (as it was claimed it was just recently written from scratch in less than 100 days). Why not WPF?

Warning though — it’s not 64 bit compatible yet. That may have something to do with the plug-ins from camera vendors not being 64 bit ready.  I can’t for example find a 64 bit viewer for NEF files from Nikon … here’s the 32 bit version — I don’t see a 64 bit download.

What’s the perfect API?

I was skimming a rant by someone on arstechnica about how badly messed up Win32 APIs are and how superior everything else is, when this paragraph grabbed my attention:

The reason must be that no one in Microsoft actually gives a damn. Each group develops their own UI widgets in their own style and they simply don’t care that it’s a total mess. They don’t care that I have to learn new ways of doing the same task just because they couldn’t be bothered to do things the same way as other applications. I’m not saying, for example, that they shouldn’t have introduced the ribbon concept in Office 2007, because it seems to work pretty well, and I can believe that it really is a better UI model. But they should have taken stock of what they were doing and made it a system-wide UI device. New widgets and UI models do crop up from time to time, but they should be rare, and when they do appear, Microsoft should make them general so that everyone can use them.

The article/post contained a lot of conjecture and fact-less information up to that point, and had strayed into the Vista-bashing camp that so many love when that paragraph smacked me. It’s where I went from having very little respect for the author to near zero. I mean seriously — how could you honestly write that no one cares at Microsoft? Not a single person? Right. There are some misguided teams and products at Microsoft from time to time (and some great products that are canceled), and maybe some products that he or I don’t agree with, but come on — there’s plenty of people who want to produce a product that others will use and enjoy (or at least find useful)! Does the author of that article honestly think, Microsoft employees get up in the morning, and think to themselves, I couldn’t care less about my future or any of my customers — I’ll go do the least amount of work I can to get my job done — and produce something barely adequate.

I frequently see someone posting, “I’m joining Microsoft … so that I can not make a difference and not care!”

A few other zingers from the post…

If you develop software for a living, and were to say something to me in an interview like this:

Another example; Win32 has a function for getting the size of a file. File sizes on Windows are limited to 2^64 bytes, and so they need a 64-bit integer to be expressed easily. But the API call to get the size of a file doesn’t give you a 64-bit value. Instead, it gives you a pair of 32-bit values that have to be combined in a particular way. For 32-bit Windows, that’s sort of understandable; 32-bit Windows is, well, 32-bit, so you might not expect to be able to use 64-bit integers. But if you use the same API in 64-bit Windows, it still gives you the pair of numbers, rather than just a nice simple 64-bit number. While this made some kind of sense on 32-bit Windows, it makes no sense at all on 64-bit Windows, since 64-bit Windows can, by definition, use 64-bit numbers.

It shows such an immaturity of what it takes to do long term programming (not just one-off programming for hobbies) and API maintenance that you’d be a “no-hire.” Dude, do you seriously want to conditionalize all of your code just so you can recompile on 64 bit Windows? Do you want a new API just for that? Seriously, what’s the gain?

So clearly, …

So Windows is just a disaster to write programs for. It’s miserable. It’s quite nice if you want to use the same techniques you learned 15 years ago and not bother to change how you do, well, anything, but for anyone else it’s all pain. I thought before that Microsoft cared about people like me. But it doesn’t. And it makes programming on Windows painful. Microsoft is great at backwards compatibility—you can take really old programs and compile and run them on a brand new Windows—but terrible at design and terrible at providing a good experience.

He applauds OSX at some point — coming to the conclusion that the Mac OSX APIs are genius … never mind the fact that Apple had to start over from scratch and every application needed to be rewritten (and the fact that the whole thing was inspired by the NeXT OpenStep). Maybe they are wonderful — I’ve only dabbled (but seriously, Objective C??!?). Microsoft could have done that too — but when you have the market share Microsoft has — can you truly afford to do that? No way. Hundreds of millions of people every day use legacy software on modern Windows operating systems because Microsoft made the difficult choice to keep supporting them.

As the author goes on to say, it causes the internals of Windows to be less than completely desirable as it is forced to maintain a level of compatibility with old APIs and peculiarities of older versions of Windows. Are there people working at Microsoft right now who would love to just start fresh with a clean slate? Abso-freakin-lutely. But, business needs often come first in the world of making money. Microsoft was able to keep existing products running because of the design of their OS and APIs made it possible. Apple couldn’t with OS 9 and earlier when upgrading. When they can completely virtualize a Win32 process seamlessly — then they can start fresh.

Taken alone, these are all fairly minor things. Put together, the interface is just completely shambolic. It looks amateurish. The quirks of each new interface have to be learned anew. This slap-dash approach to look-and-feel gives the impression of a platform that no one really cares about.

The author seems to believe that everyone at Microsoft should just work together and produce products at the same time on the same ship schedules — as every one should contribute the “whole” and produce things that are only good for the masses. They aren’t allowed to innovate on their own or produce something unique or better than another team. “Just stick the widget into the OS … we’ll ship when you’re ready … and we’ll happily adapt to any changes that any other team needs to make.”

If the author had chosen to research and provide facts, better understand the development environments, platform capabilities, and stick to a point, it might have been a mildly interesting read — but alas, he did not. It got my blood boiling …, hence my post. Maybe Microsoft, who couldn’t care less according the author, will nonetheless contact him to get feedback on how to build the perfect API. Clearly it can’t ever have a backwards-compatibility layer or object model … so it just has to be perfect right out the door. :-P

What is the perfect API? For rich or a reach application? Give it a little thought right now. What comes to your mind right away?