Andre's Blog
Perfection is when there is nothing left to take away
Crop factor vs. magnification

Crop factor is a term associated with sensors smaller than the standard 35mm film frame, which is commonly misunderstood, even by people who write for respectable sites, such as Luminous Landscape. Consider the Understanding the DSLR Magnification Factor article written by Nick Rains in 2002. In this article Nick writes:

‘Crop’ is a fairly good term – the imaging area is physically smaller. Less of the image circle projected by the lens is used, therefore it is a crop. The image remains the same size at the film plane for a given lens and subject distance – it is in no way magnified. It does, however, take up a larger proportion of the (smaller) frame and so it is easy to see why some people call it a magnifying effect.

DXO Optics Pro - looking forward to v7

I usually use several applications to edit images. I always start with Canon's Digital Photo Professional (DPP) and then use Noise Ninja, EnfuseGUI and GIMP, when I need to do selective noise reduction, tone mapping and additional editing and scaling. When I learned that DxO Labs, which maintains an awesome database of camera sensor test results, offers DXO Optics Pro v6.1.1 that does it all in one package, I decided to check it out.

Putting a compact camera to a good use

Compact cameras are commonly considered as something that is only good for holiday family pictures and party shots. While there are many technical reasons why Single Lens Reflex (SLR) cameras produce better images, quality compacts pack enough technology to capture great photographs and the attention of your audience.

std::wstringstream vs. swprintf

A few days ago a developer asked me if we intend to replace all archaic printf-style calls within the project with modern, object-oriented string stream equivalents. I heard this sentiment many times over the years, often substantiated by the fact that buffered stream operations are faster than frequent parsing of the format string. Let's test this theory and format a simple string in a loop using both methods.

Can Lumix DMC-G1 stop time at 1/125th of a second?

I was browsing the Lumix website and noticed that the shutter speed reported for an image of a hummingbird in flight was 1/125th of a second. Hummingbirds flap their wings at approximately 50 flaps per second, so I would expect the wings to show some motion blur at this shutter speed, which could be anywhere from 10% to 70% of the wing path. However, there was absolutely no motion blur in the picture.

Moving blogs to ASP.Net

This site was originally written in ASP JavaScript, which worked great, but lacked a couple of things, like being able to upload files without having to parse multipart HTTP requests. So, I decided to move the site to ASP.Net to take advantage of the new functionality offered by the .Net framework, while keeping the implementation written in JavaScript.

Panasonic DMC-ZS1 - please stop helping!

I started to see hot pixels in my good old Coolpix E5900, so I decided to buy a new camera. After much research, my choice fell on Panasonic DMC-ZS1, which was highly recommended by DPreview in their group review of compact super zoom cameras:

http://www.dpreview.com/reviews/q209grouplongzoom/page16.asp

At first, the camera felt great - the 12x optical zoom range was awesome, which is about 6x magnification, compared to the 3x optical zoom of E5900. My excitement started to evaporate quite quickly though once I learned that the camera lacks basic control over image quality.

Printing from a 32-bit IIS process on 64-bit Windows

Last week I came across a very strange problem with Windows printing - an attempt to create a printer device context through CreateDC within a 32-bit IIS worker process would fail and return NULL, but GetLastError would indicate that there was no error and there was nothing in the system or application event log to help me identify the problem.

Naturally, my first thought was that the IIS anonymous user is missing some access rights and I spent some time double-checking various permissions and privileges, but found nothing that would be relevant in this case. Suspecting that the problem lies elsewhere, I added the anonymous user to the Administrators group, which actually made things worse. Now not only CreateDC would still return NULL, but it would actually take about a minute for this call to fail!

Variable argument lists on x64

People have been reporting x64 builds of Stone Steps Webalizer crashing on Linux for about a year and even though I could see from the stack trace that the problem related to the variable argument list passed into vsnprintf, I couldn't figure out what exactly was going on because I don't have 64-bit hardware to reproduce this problem in a debugger.

The call stack always ended up in strlen called for a bad string with an invalid address, usually 0x3: