Wine Bottle Photos

So I thought I would try to take an interesting picture of some wine bottles, and a little wine rack we have in our house. It was kind of a fun little project. I think the best images were those that involved a mirror that we had near by. There is still some visual clutter in the pictures. One of the things I need to pick up are some white and black poster board sheets to use as flags. It would help to cut unwanted reflections for example.

In case you don’t know, the bottle of wine I featured is made in Italy at a small winery named after their family name, Endrizzi. That is also my wife’s name. Turns out, this vinyard is in the same area that Annie’s family is thought to come from, and they are probably relatives. Her brother got a case a couple of years ago. I think the only importer of this wine is based out of Atlanta.

DSC_3772 DSC_3770 DSC_3779

Why I think the D90 video sucks

Back of a D90 showing live view

Back of a D90 showing live view

I have been trying for a few weeks now to take some video of the girls with the D90. I have tried in a couple of homes now. It always looks poor. The reason… no auto focus. When I am trying to shoot indoors, I am always running out of light. I need to open up the lens giving me no depth of field. I used to have a old Cannon DV recorder. I don’t remember having that issue with that camera. I have a Epson Stylus 850 too, and while the video is smaller, doesn’t have the focus issue the D90 has.

So, I have the camera set, I put it into live mode so I can see the action on the back of the camera. I then spend the next few minutes asking the kids to hold still. The focus system on live view is the most ridiculous, frustrating, and useless piece of tech to be over hyped on a camera that I have ever seen. Unless you have something that is sitting/standing still, getting the green square “go ahead I’m in focus” indicator is an exercise in frustration. I was trying to get focus locked on one of my girls that was dancing in the living room, and it was often focusing on the wall behind her. She would move out of the little square, and it would lock onto the wall behind. I don’t care if it is phase detection, contrast detection, or some new futuristic sonar system, it just needs to be better.¬† Imaging Resource has more on live mode, and they are more positive, but the fastest focus times they found was 2.3 seconds. Not good enough.

This brings us to the low light issue. I am forced to use a large aperture with shallow depth of field. This means that the kids need to stay in the narrow focus plane. Ya right. The camera will not change focus when the video is capturing, so I have video where the kids float in and out of focus. Like I said before, I didn’t have this issue with a previous DV camera that only cost the price of one 3rd party lens for a DSLR.

Others seem to do OK. See video here. But, most of the video seem to be outside. I suppose that outside with a larger aperture and greater depth of field would help, but this just isn’t workable for video inside. Maybe you have a bank of flood lights you can use inside your house. Maybe you’re winters are not at -30 and dark at 4:30, but shooting outside in better light just isn’t an option right now. None of the light issue would help the ridiculously slow focus in live view though. I for one am quite disappointed. It seems like more of a gimmick than something useful.

New Java Lesson on Static Stuff

JavaI taught a new lesson this week on Static Stuff, which has been posted on this website. This is part 2 of the series Intro to Java that I have been creating. In this lesson we look at static methods and static class variables. There are several code examples to go with the lesson. The feedback in class has been pretty good. Hopefully some others will find in helpful as well.

Importance of exposure on higher ISO

I was taking pictures of the kids with my D90 and a 50mm f/1.8 inside my house. I have bad lighting. Not enough, and both compact florescent and incandescent bulbs, but that is another issue. I had forgotten that I had taken some pictures outside of Christmas lights, and had the camera set to an EV of -1. When I took a picture inside at ISO 800, it was a little dark. I realized that after to reset the EV, and decided to up the ISO to 1250. What surprised me was how much noise, even at ISO 800 I got got when I tried to up the exposure in post. The ISO 1250 exposure looks a lot less noisy, and I didn’t have to try to push the exposure back up in post.

Lily

Lily at ISO 800

13 of 365

Lily at ISO 1250



I increased the exposure, and pulled up the shadows a bit, but I couldn’t go as much as I wanted because the noise started to become an issue on her face. I think this goes to show just how important it is to get the correct exposure, especially when you are dealing with less light, and when you are using higher ISO settings.

I will try to get a better controlled test of taking pictures at different ISO’s, the correct exposure,¬† and the D90 in the future.

Moving Pictures via Javascript

Ok, I had promised to let anyone know that happened to be reading before Christmas, that I would talk about the collage script that I am using on the Christoper Ward Photography site. I am using the lytebox script when you click on an image, but the collage image that moves the pictures around the screen is all mine.

You can get the html source from that page. Here is the Javascript and the CSS files that are used. You can use this code, but please leave the Javascript comment header with my name on it.

/*
	collage javascript
	
	You are free to use this script provided you include this header

	Created by Chris Ward
	veggie2u@cyberward.net
	http://www.cyberward.net/blog/
*/

function Collage(pName) {
	this.name = pName;
	this.state = "closed";
	Collage.list[Collage.quantity] = this;
	Collage.quantity += 1;
}

Collage.prototype.open = function() {
	Collage.closeAll();
	for( i=0; i < this.endPoints.length; i++ ) {
		$image = this.name+'img'+(i+1);
		new Effect.Move($($image), { x:this.endPoints[i][0], y:this.endPoints[i][1], mode: 'absolute' });
	}
	this.state = "open";
}

Collage.prototype.close = function() {
	for( i=0; i < this.endPoints.length; i++ ) {
		$image = this.name+'img'+(i+1);
		new Effect.Move($($image), { x:this.startPoint[0], y:this.startPoint[1], mode: 'absolute' });
	}
	this.state = "closed";
}

Collage.prototype.swap = function() {
	if( this.state == "closed" ) {
		this.open();
	} else {
		this.close();
	}
}

Collage.closeAll = function() {
	for( i=0; i < Collage.quantity; i++ ) {
		var $aCollage = Collage.list[i];
		if( $aCollage.state == "open" ) {
			$aCollage.close();
		}
	}
}

function doOnLoad() {
	$$('img.collageImg').each(function(s) {
		s.show();
	});
	collage1.swap();
}

Collage.quantity = 0;
Collage.list = new Array();

var collage1 = new Collage("g1");
collage1.endPoints = [ [280, 80], [300, 180], [400,100], [580,120], [500,200], [280,400], [340,320], [540,290], [480,380], [620, 440] ];
collage1.startPoint = [4, 60];

var collage2 = new Collage("g2");
collage2.endPoints = [ [220, 100], [360, 120], [280,220], [300,390], [380,300], [580,100], [500,180], [470,420], [560,330], [660, 420] ];
collage2.startPoint = [4, 180];

var collage3 = new Collage("g3");
collage3.endPoints = [ [280, 80], [240, 230], [400,100], [460,180], [280,400], [340,320], [540,290], [600, 400], [580, 130], [480,380] ];
collage3.startPoint = [4, 300];

var collage4 = new Collage("g4");
collage4.endPoints = [ [280, 80], [300, 230], [400,100], [540,120], [580,200], [340,400], [280,320], [480,290], [540,380], [700, 110], [650, 350] ];
collage4.startPoint = [4, 420];
body {
	background: black;
	margin:0;
	padding:0;
	height:100%;
}

#albums {
	position:absolute;
	top:10px;
	left:20px;
}

#about {
	position:absolute;
	top:530px;
	left:10px;
}

#about img {
	border:0;
}
#about a {
	text-decoration:none;
}

#title {
	position:absolute;
	top:10px;
	left:220px;
}

#collages {
	background-image:url("./images/albums_background.png");
	position:absolute;
	left:0;
	top:0;
	width: 180px;
	height: 100%;
	margin-top:0px;
	margin-bottom:0px;
}
#collages img {
	margin: 10px;
}

#content {
	margin-left:180px;
	color:white;
}
#content img {
	border:0;
	display:block;
	margin-left:auto;
	margin-right:auto;
}

.collageImg {
	border: 1px solid white;
}

.collageThumb {
	opacity:0.4;filter:alpha(opacity=40);
	border: 1px solid white;
}

#g1img1, #g1img2, #g1img3, #g1img4, #g1img5, #g1img6, #g1img7, #g1img8, #g1img9, #g1img10, #g1img11 {
	position: absolute; top: 60px; left: 4px;
}
#g1img11 {
	opacity:0.4;filter:alpha(opacity=40);
}

#g2img1, #g2img2, #g2img3, #g2img4, #g2img5, #g2img6, #g2img7, #g2img8, #g2img9, #g2img10, #g2img11 {
		position: absolute; top: 180px; left: 4px;
}
#g2img11 {
		opacity:0.4;filter:alpha(opacity=40);
}

#g3img1, #g3img2, #g3img3, #g3img4, #g3img5, #g3img6, #g3img7, #g3img8, #g3img9, #g3img10, #g3img11 {
		position: absolute; top: 300px; left: 4px;
}
#g3img11 {
		opacity:0.4;filter:alpha(opacity=40);
}

#g4img1, #g4img2, #g4img3, #g4img4, #g4img5, #g4img6, #g4img7, #g4img8, #g4img9, #g4img10, #g4img11, #g4img12 {
		position: absolute; top: 420px; left: 4px;
}
#g4img12 {
		opacity:0.4;filter:alpha(opacity=40);
}

The way that it is implemented is pretty simple. In order to make this work, I relied on a naming convention. Lets look at one image:


The id of the image is set to g1 for 'gallery 1', img1 for 'image 1'. If you look at the html, I had to add this logical id to every image. This is a very tedious process. There is also the code for lytebox, namely the rel="lytebox[one]" to launch the lytebox script when the image is clicked, and link all the 'one' galleries together. The other thing on this line is the style="display:none;" part. This bugs me, but it appears to be a css limitation I can't get around. Because all the images are stacked, they all appear in turn as they are downloaded without this. If I put this style in the css, then javascript can't turn it back on! It has to be an inline style. I would love to hear a solution for this.

Then we have one more line from the html file to look at.


This line is the last line in each gallery, and is the last image repeated. This is the one that will not move, and forms the thumbnail for the gallery. Via css, the transparency is lowered when the collage is out. This image contains the onClick call to move the images.

Now onto the javascript. Look at this bit of code that defines a collage:

var collage1 = new Collage("g1");
collage1.endPoints = [ [280, 80], [300, 180], [400,100], [580,120], [500,200], [280,400], [340,320], [540,290], [480,380], [620, 440] ];
collage1.startPoint = [4, 60];

This defines gallery 1 ("g1"). All those numbers are the end points for where each image will be when the collage is expanded. Again, this is a pain, and it can be confusing which image you are adjusting when changing the numbers.

So lets look at the open function:

Collage.prototype.open = function() {
	Collage.closeAll();
	for( i=0; i < this.endPoints.length; i++ ) {
		$image = this.name+'img'+(i+1);
		new Effect.Move($($image), { x:this.endPoints[i][0], y:this.endPoints[i][1], mode: 'absolute' });
	}
	this.state = "open";
}

This is pretty simple. Once I found the Effect.Move() function of scriptaculous, this simply loops over the images in the gallery, and tells the Move function to move the images from where it is (stacked with the others), to the endpoint. The close is similar. It moves the images from where they are (the endpoints) to the start point that was defined in the gallery definition.

The rest of the script is pretty simple. The other methods show all the images (doOnLoad), or set up the swap.

What could be improved? A lot. I don't like defining the galleries and the images through the id field. The user of the collage js has to have intimate knowledge of how the script works in order to set it up. Not only that, but you need matching elements defined in CSS correctly. Having the end point definitions in the js is a pain too. Would would be better, is to come up with a way to have the javascript scan the html and look for images to use, much like how lytebox does it via the rel attribute. Well, guess what? That is exactly what I am working on!

Not so stars on ice

I was able to get out to take some pictures on the local ice rink the other day. My daughter was at dance at the rec center, so I wandered over and took some pictures of some folks playing hockey and broomball. I was surprised that I had enough light at night. The big overhead lights pump out quite a bit of light. I was amazed that with the sun down, there was more light outside in these rinks (maybe it is the reflected light off the ice) than inside at the basketball gym that I have tried to take pictures. Still, there was a bit of bluring in the hands. If I could have kept my 2.8 lens on there wouldn’t have been any, but I felt I needed my zoom, and that isn’t nearly as fast. I found out that it wasn’t so easy to get good images. I could use practice I guess. Anyway, here are some of the images.

The CornerThe PassFaceoffRunning the rinkPut me in coachGoalie

New Header Images

I couldn’t take it any longer and made the time. I finally got some new header images up. I no longer have that ugly blue bar that was showing up on the right side of the images. I took the opportunity to put up new images as well. I think that a couple of them were there before, but most of them are new, and there are more of them. I think I need a drink.

WordPress 2.7 Upgrade Complete

Wordpress LogoI have finished the upgrade to WordPress 2.7. This took awile, as I wanted to make sure that my theme and the plugins I was using would work.

The theme is working fine now. There were a few things I needed to do. First was fix up the comments. The new wordpress supports threaded comments, but my theme did not. Now it does. Also, Pages didn’t allow comments, and didn’t show when the page was created which I wanted. Oh yea, I added gravitars, the little pictures beside the posters post.

I switched the download plugin as noted earlier, and that was a big pain. When I tried to get it running on the updated site, I couldn’t activate the plugin. In the end I found out that it must have been corrupted files in the file transfer. I reinstalled it from a new zip, and reapplied my changes, and now it works.

So… the only thing really missing is the images at the top of the page. I really need to get those updated. With the gap there, it kinda looks like crap.

Found new File Download Manager

I found a new plugin that I will use when I move to WordPress 2.7, which should be soon. It is called Drain Hole. This is a pretty spiffy plugin. It allows you to create different “holes” or folders to contain downloads. These folders can have different permissions assigned to them. The individual files can be versioned, although the file name appears to need to be the same. You can then use tags on your page to reference the files. One of the really interesting things is that it makes use of templates for those tags. So you can create a template to display a file, or list of files. You use a different set of tags in these templates that reside inside your own theme folder. I like this idea. I am already trying to think of ways to use it ouside of this plugin.

While playing with this plugin I discovered a bug. I couldn’t update/save the attributes for a file. I was trying to assign a custom icon, and the display name, but nothing would stick. Hunting this down I found out why php debugging, especially ajax calls really sucks. Anyway, I finally discovered what the issue was; a variable that was not initialized. It must be the particular combination of WordPress (2.7), PHP(4.5), and MySql(5.0) that I was playing with, because I can’t belive that this doesn’t work for everyone that uses this plugin.

Turns out that the developer has a tracker, so I created a bug with my solution. I am going to be moving to this from the Download Manager plugin I was using.

Nikon D90 and the CHA

I took a SD card (4gig Sandisk Extreme III SDHC) out of my computer, and back into my camera, and I instead of a shot count in the LCD on the top of the camera, I got the letters CHA. What the? I headed to google, and “d90 CHA” brought back a ton of hits. This was not some weird isolated incident. Most were saying it had something to do with the memory card, and that if formated in camera, it would correct it’s self. Since I always format every time I put the card back in, that’s what I tried to do. I usually use the shortcut buttons, but they didn’t work. I then went to the menu, and it the camera seemed to take a long time to format. When it was finished, I still had CHA in the LCD. I took the card out, put it back in, and now the shot count said there were 27 pictures left. Weird. I tried the format again through the menu, and this time it only took a second, and appeared to work. We’ll see how this card holds up. I should mark it so I know which one it is.