Skip to main content

Adventures with a Nikkor H 28mm f3.5

I wanted to find out what all this hoopla about old manual lenses was about, so I went looking for one. Apparently old manual lenses aren't THAT cheap, or else my definition of cheap is about a standard deviation below the mean. However, I did find a manual lens that fit my budget. Apparently the Nikon 28mm f3.5 isn't as hot an item as some other lenses.

The lens I got is older than I am, but in better condition. Nikon ended the run of this version of the lens in 1971. It's a non-Ai lens with the metering prong taken off (which makes it worthless for a collector, I guess). This suited me for two reasons: it made it cheap and it meant I could fit it on my D5100 (I read that you can fit the lens on the camera even with the prongs, but I don't believe it - the flash housing juts over the camera mount pretty closely, and I suspect the prongs would foul verified- the flash housing is JUST high enough that the prongs don't foul.). I inspected the lens for fungus and dust by shining a flashlight through the front and rear elements, and found the lens to be remarkably clean. There were no streaks on the front element.

The D5100 is a 'entry level camera' so it doesn't have a body motor. This turns a range of AF-D lenses into badly designed manual focus lenses. However, it also does not have the Ai-tab that allows higher end Nikons, like the D7100, to meter with Ai lenses. This allows the D5100 to accept non-Ai (or pre-Ai) lenses.

Now I understand what those coots mean when they rave about old manual lenses. AF-S and AF-D lenses are designed around an internal or body motor. You want the lens focus to zip from one end to the other as fast as possible. So you design the focus system to go from infinity to closest focal point with as little twist of the barrel as possible (called throw). Also, you want the motor to have as little resistance as possible, so you make the focusing ring as loose and light as possible. This sucks for manual focus.

Firstly, you have to be very delicate when you turn the focusing ring because you zip past the focus point really quickly. Secondly, if you breathe at the wrong moment, you lose your focus, because the ring is so loose (I'm looking at you 50mm f/1.8 AF-D). I use the red dot to confirm focus and I have to keep twiddling the ring to settle on the correct focus point, as if I'm some kind of CDAF algorithm.

(As a side note, I'm annoyed that the D5100 doesn't show the rangefinder when in full manual mode. You can't shoot a non-Ai lens in S or A mode, fair enough. But you get the rangefinder in those modes! I just can't understand this design decision).

A true manual focus lens, like this one, is very pleasant. The focus ring is damped. You have to push a little to move it, but it feels good and solid. Next, the throw is huge: a full 180 degrees. I was focusing and brought a subject into focus, and I tried to move beyond the focus point as I was used to, but I kept turning and turning and the subject did not go out of focus for what seemed like an eternity.

I kind of knew about these two quantities but I did not realize how big a deal they would be for shooting and getting in-focus shots. I've had disheartening experiences with the 50/1.8 AF-D and my experience with this 28mm is very different, where I always nailed the focus and got really bright, contrasty shots.

However, though I began to rave like the other coots, technically speaking, the better results I got from the manual focus lens is due to a complex mixture of factors and the comparison is not exactly fair. The main thing is that, once you have f1.8 you want to use it ALL THE TIME. So naturally, with the 50mm 1.8 wide open and trying to manual focus, I get a bunch of out of focus shots. I have much better images when I stop down to 3.5 or so. The 28mm lens starts out at 3.4 and is much wider, so that itself gives me a large DoF that masks any slop in focusing.

I was wowed by how sharp and contrasty the images from this lens were wide open. I'm used to hearing that one needs to stop down the lens a bit, and the largest aperture is really just there for low-light situations. However, a factor to consider here is that this is a 'FX' lens (from a time when everything was FX) used on a DX body. The engineers worked hard to get the center of the lens sharp and contrasty, the edges are probably more flawed, but I don't get to see that. Another score for the 'entry-level' camera...

I guess a real test would be for me to find a manual focus 50mm f1.8 or 1.4 and then compare my 50mm AF-D with that. Hmm, where is that piggy-bank?

Comments

Popular posts from this blog

A note on Python's __exit__() and errors

Python's context managers are a very neat way of handling code that needs a teardown once you are done. Python objects have do have a destructor method ( __del__ ) called right before the last instance of the object is about to be destroyed. You can do a teardown there. However there is a lot of fine print to the __del__ method. A cleaner way of doing tear-downs is through Python's context manager , manifested as the with keyword. class CrushMe: def __init__(self): self.f = open('test.txt', 'w') def foo(self, a, b): self.f.write(str(a - b)) def __enter__(self): return self def __exit__(self, exc_type, exc_val, exc_tb): self.f.close() return True with CrushMe() as c: c.foo(2, 3) One thing that is important, and that got me just now, is error handling. I made the mistake of ignoring all those 'junk' arguments ( exc_type, exc_val, exc_tb ). I just skimmed the docs and what popped out is that you need to return True or...

Store numpy arrays in sqlite

Use numpy.getbuffer (or sqlite3.Binary ) in combination with numpy.frombuffer to lug numpy data in and out of the sqlite3 database: import sqlite3, numpy r1d = numpy.random.randn(10) con = sqlite3.connect(':memory:') con.execute("CREATE TABLE eye(id INTEGER PRIMARY KEY, desc TEXT, data BLOB)") con.execute("INSERT INTO eye(desc,data) VALUES(?,?)", ("1d", sqlite3.Binary(r1d))) con.execute("INSERT INTO eye(desc,data) VALUES(?,?)", ("1d", numpy.getbuffer(r1d))) res = con.execute("SELECT * FROM eye").fetchall() con.close() #res -> #[(1, u'1d', <read-write buffer ptr 0x10371b220, size 80 at 0x10371b1e0>), # (2, u'1d', <read-write buffer ptr 0x10371b190, size 80 at 0x10371b150>)] print r1d - numpy.frombuffer(res[0][2]) #->[ 0. 0. 0. 0. 0. 0. 0. 0. 0. 0.] print r1d - numpy.frombuffer(res[1][2]) #->[ 0. 0. 0. 0. 0. 0. 0. 0. 0. 0.] Note that for work where data ty...