Trust your gut, code with your brain.

02 Jul 15 Near Future Prediction – Impact of self driving cars

There will be very few parking lots because most cars will be self driving taxis. What will we do with all that free space?

25 Oct 14 Nikon Nikkor 35mm F/1.4 Ai-s vs Ai Comparison Review

I couldn’t find a review that compared the older 35mm Ai against the newer Ai-s and since the older one looked so cool (i like the rounded top) I picked up a both from ebay to test them myself.

The older one came with an unusable stiff focus ring, and that’s the main difference,  the age of the lens means that the newer one will just last longer. The pictures below reveal that the quality of the images are indistinguishable, even the size of the lens elements look the same. There is one difference in that the older one has a 7 blades vs 9 on the newer one, but I only shoot wide open so it doesn’t matter to me, ymmv.

The test image was shot on a nex-3n with a ZY Lens Turbo V2.


Any variance that I could see in the images was probably focus related, otherwise I see the same bokeh, CA, fringing, contrast and sharpness.


In the below product images the Ai-s is on the left and the older Ai is on the right.

side-bottom side-level side-top

The lenses were so similar that the review is short. The focus on the Ai-s was so much smoother that I’ll keep it but I still think the Ai looks cooler.

Compared to the Zeiss 35mm ZF.2 1.4 there is more romance to the picture quality but the Zeiss has micro contrast, zero haze, but more than three times the price and at least double the weight and size. I prefer the Nikkor or the Zeiss 35mm F2.

22 Feb 14 Focal Reducers Metabones Speedbooster vs. LensTurbo

I happened to have both the LensTurbo ($150) and the Metabones SpeedBooster ($400) at the same time as the A7r so I figured that was the perfect setup to directly compare them. The biggest difference when looking at the whole picture is the edge is smeared on the lens turbo and the plane of focus is curved out. The metabones has more contrast and looks sharper because of it, it’s also sharper in the corners but frankly I like the look of the smearing. These test images are pretty ugly. Head over to to see some real images made with the lensturbo.






19 Sep 13 Pentax 100mm Shoot out

I really loved my Zeiss 100m f2 macro on a 5dMkii but, after seeing my Dad use old lenses on mirorrless bodies, I decided to move to APS-C mirrorless with a focal reducer to allow full frame equivalent images with smaller equipment. So I bought all the 100mm pentax mount I could find and using a focal reducer to get full frame equivalent images took these pictures on a tripod at the same distance. Obviously this is a flawed comparison but it’s shot under the condition’s i’m most likely to use the lens which is for a full face portrait.

Pentax M SMC 100mm 2.8

Pentax M SMC 100mm 4 Macro  1:2

Pentax A SMC 100mm 2.8 Macro  1:1

Vivitar 100mm 2.8 Macro 1:1

(left to right)

Save yourself some squinting, the tiny 100mm 2.8 non macro is the sharpest and most contrasty.

At 2.8 the cheapest lens (the 100.28) is a clear winner, sharp and high contrast, with a little chromatic abberation. The Vivitar and Pentax 2.8 Macro both have low contrast, but the Pentax has less chromatic issues.

At F4 things even out but the little guy loses the chromatic abberation and wins the best picture. The 100mm F4 actually hold’s it’s own here and looks decent. The Vivitar and Pentax are much more contrasy but still have chromatic issues, I’d say the Vivitar is even a little better here.

There you go, buy up all the 100mm 2.8’s  and use extension tubes if you need macro 🙂


pentax 100mm 2.8

pentax 100mm 2.8 macro

Vivitar 100mm 2.8 macro

Pentax 100mm f4 Macro

2.8 @2.8


2.8 Vivitar @2.8


2.8Macro @2.8


2.8 @4


2.8 macro at f4 


2.8 Vivitar @4


f4 @f4


10028macro-28 10028viv-28 10028viv-4 10028-28 10028macro-4 1004-4 1004-8 10028-4

04 Feb 13 My favorite extention

Apart from linq, this extension saves me more time than any other syntactic sugar.

public static class Extension
        public static bool Like(this string str, string str1)
            if (String.IsNullOrEmpty(str) || String.IsNullOrEmpty(str1 ))
                return (String.IsNullOrEmpty(str) && String.IsNullOrEmpty(str1));
                return str.Equals(str1, StringComparison.InvariantCultureIgnoreCase);

Usage is simple.

instead of having to write:

if (str.Equals(str1, StringComparison.InvariantCultureIgnoreCase))

you can write

if (
And not have to worry about null exceptions.


22 Jan 12 Star light

When you experiment with materials, even just play with them, their properties expand your outlet for creative expression. This doesn’t happen when you simply watch them on TV, you need to really use them to learn their characteristics, how they bend, stretch, stick, reflect, and sound. Such is the case with cardboard, spray adhesive, tinfoil and tape. I’ve used these ingredients to build several DIY ringlights and Tent Soft boxes.


So here is new twist, a light mod that sprays light out like a star against a wall. The basic construction is a strip of card with slits in it wrapped in a ‘U’ shape surrounding a toilet roll coated in foil with a flash mount made of popsicle sticks. The band-aid wrapper is the result of using my finger to guide the leatherman saw blade (not all experiments are a success).

My first impulse was to stick it behind peoples heads and make them look like they had decended from the heavens, then i gelled it to give it a more party look. Here is what it looks like, now go forth and extrapolate the possibilities!

16 Jan 12 Razor DropDownList With Descriptions From An Enum Using Extentions, Generics, and Reflection.

A good test of a web framework is to see how it handles select boxes.  It requires managing the list, the selected item across several states,  be easily styled, be easily ajax-ed, and connect to a data store.

I like using Enums for static data, but they are a bit limited without a description value, you end up with select options labeled “ItemName ” instead of  “Human Friendly Item Name”.

Binding an enum to a dropdown is well documented. Adding descriptions to enums is also well documented.  Here is a way to have enums with descriptions into a dropdown.


Your Enum

 public enum ProjectRoles { [Description(“Descision Maker”)]DescisionMaker, Researcher, [Description(“Project Manager”)]ProjectManager };


The Razor

 @Html.DropDownListFor(model => model.YourRole, EnumUtils.ToSelectList<ContactModel.ProjectRoles>(Model.YourRole.ToString()));


This function will turn your enum into an IEnumerable<SelectListItem>

public static IEnumerable<SelectListItem> ToSelectList<T>(string selectedvalue)
if (!typeof(T).IsEnum) throw new ArgumentException(“T must be an enumerated type”);
return Enum.GetValues(typeof(T))
.Select(x => new SelectListItem()
Value = x.ToString(),
Text = (typeof(T)
.GetCustomAttributes(typeof(DescriptionAttribute), false)
.FirstOrDefault() ?? new DescriptionAttribute(x.ToString())
Selected = x.ToString() == (selectedvalue ?? “”)


Of course shortly after finishing this I found a great post on StackOverflow about making html helpers which results in an even prettier finish in razor, but requires a few extra helpers.

05 Jan 12 Obscure Tags

Ever used the definition list tag?  Me neither, yet it’s fully supported in all the browsers.

  1. <dl>
  2.   <dt>Coffee</dt>
  3.     <dd>– black hot drink</dd>
  4.   <dt>Milk</dt>
  5.     <dd>– white cold drink</dd>
  6. </dl>

turns into this:

– black hot drink
– white cold drink

From w3schools: ” The <dl> tag defines a definition list. The <dl> tag is used in conjunction with <dt> (defines the item in the list) and <dd> (describes the item in the list).”

Well now i’ve used it.


05 Jan 12 Cross Domain Resource Sharing

CORS was really part of the inspiration for ServerCyde.  AJAX is cool, it lets you make the web more responsive, but it only connects to the site that you built.  If you wanted to consume the services of a third party then you would have to proxy it over your server or compromise on the functionality that you can offer.  As more and more digital services get turned into API services (life graphs, url minification, image manipulation,  data storage…) browsers will evolve to allow greater interconnectedness without sacrificing security. Right now each browsing is either trying their own implementation out (is it netscape vs IE all over again) or at some stage op implementing CORS standards, or web sockets. In the mean time I wanted a solution that worked now and supported all of the HTTP verbs so I had to implement one myself.

What it came down to was simple enough. Hidden iFrames and window.href polling. You see, when you open a site in an iframe the parent can only read the URL if the domains match. So what i did was have my server redirect back to your domain with a token in the URL that you could use to make a plain JSONP request for the data.  This model, works in every browser, lets you POST with cookies, and even allows a connection to stay open for a COMET implementation.

You can check it out in action here:

Get the code from GitHub here:

And see a presentation of it’s implementation, that I delivered to JavascriptMN at Refactr in November.

05 Jan 12 Tools of the trade – A would be review.

Do you think that you could tell the difference in the work of a mechanic using a thumb adjustable wrnch vs. one using a voice activated wrench? Better yet, could you tell if a painting was done with a horse hair bush or a cow hair brush? The same is true for photography. I’ve seen creative genius take better photos with an iPhone than I’ll probably ever get with my percision engineered German glass wielding 21megapixel beast of a camera. Why? Not because I’m not a creative genius (Ii’m not) and not because I don’t go to pretty places (I do).  I don’t get as great an image because most of the time i’m a pervert, that is to say, I spend more time fantasizing about the technical aspects of the equipment than actually using it.  It’s a bad habit, I know, and I’m working on it. It’s not entirely my fault, I’m just a victim of marketing that has taught me to obsess about my tools so that I buy better ones.

So now that you know that I know that equipment doesn’t translate into the quality of a product (I’ve built better websites using my phone than my friend could build on his MBPro). We can indulge in the relative (and insanely marginal) differences between camera companies. Actually I’ve changed my mind, this post has made me realize that if I really want to break the habit and start taking better pictures then I have to stop being a perv.  The end. Go take some pictures with whatever camera you have.  Go paint even if all you have is a wall and some crayons (unless you are my kids, then do not color the wall please.)  Go write a book, you don’t need a better typewriter, you don’t need a sharper pencil, you need to write.  Now.