Skip to main content

First impressions of Nikon D40

Obtained this as refurbished from Adorama for $375 with 18-55mm DX AF-S lens. Adorama shipped it for free and it arrived overnight (NY to MA). Its declared as refurbished but the body is blemish free. I would say this is a new camera (unless some one soaked the interior in dust/water/acid etc). There is a 90 warranty from Nikon on both lens and body.

From the exif information on the pictures I see that the camera has about 2600 shutter actuations, and the serial number has two dots punched in at the start and end. According to this page those dots indicate Nikon has refurbished the camera.

I found a few dust specks on the viewfinder. (Aiming at the sky and looking around the field of view). I remember on the old Nikons, that my uncle had, you could pop-off the pentaprism and clean it all out, but I don't think you can do that here.

The camera with this lens weighs about as much as my Nikon F65 (or N65), which is to say, less than a kilo.

The battery needs to be charged, but it had enough juice to go through the initial set up. It prevented me from taking any pictures though. Battery is charging, owner is pretending to do data analysis.

Things to do when battery charges (other than go grocery shopping)
  1. Look for dead/hot pixels on sensor
  2. Take shots at different ISO levels to see noise
  3. Evaluate exposure modes
  4. Look for dead/hot pixels on display LCD
  5. Evaluate auto focus accuracy
Things to buy:
  1. Plastic protector for the LCD screen
  2. UV filter (as protection) for the DX lens
PS. Sorry Ben, but I decided I wanted to see if the price premium on DSLRs was worth it over point and shoots. If I find 6 MP too restricting I might upgrade in a few years...

Comments

  1. I'm looking forward to following your review of the D40... I'm still torn between the D40 and the D60 or to wait till the D3000 is released

    ReplyDelete
  2. Delighted to hear that you are pleased with your new refurbished Nikon from Adorama - but if you ever have a query or concern regarding an order from Adorama Camera - or AdoramaPix - please don't hesitate to contact me directly.

    Sincerely

    Helen Oster
    Adorama Camera Customer Service Ambassador

    helen.oster@adoramacamera.com
    www.adorama.com

    ReplyDelete
  3. Hi Nick,

    I looked at a lot of people's opinions of these three cameras. The summary I took away from all these opinions was that

    1. 6MP was good enough, even for reasonable sized enlargements (If you print at 300 dpi you can get 10"x6.6" with no upsampling. If you print at 150 dpi you can get 20"x13.2")
    2. 6MP on this size sensor gave good low light sensitivity and noise compared to 10MP on the same size sensor.
    3. The D40 was small and light

    One of my constraints was price, and when I found this particular deal I went for the D40 with little hesitation.

    I am an amateur photographer. The only other cameras I can compare it to are my film Nikon F65 and my digital P&S Canon A510. So far I have not made any prints from the images, just looked at them on the computer. But I have to say, after a weekend on the beach with it I am very happy with the D40.

    Best
    -Kaushik

    ReplyDelete
  4. Hi Helen,

    Thanks for your note. I am impressed at how you keep up with Adorama references on the web! (I have seen your comments on dpreview)

    I am very happy with Adorama's service so far, and I have ordered a few more things from you.

    Best
    -Kaushik

    ReplyDelete

Post a Comment

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...