var gform;gform||(document.addEventListener("gform_main_scripts_loaded",function(){gform.scriptsLoaded=!0}),window.addEventListener("DOMContentLoaded",function(){gform.domLoaded=!0}),gform={domLoaded:!1,scriptsLoaded:!1,initializeOnLoaded:function(o){gform.domLoaded&&gform.scriptsLoaded?o():!gform.domLoaded&&gform.scriptsLoaded?window.addEventListener("DOMContentLoaded",o):document.addEventListener("gform_main_scripts_loaded",o)},hooks:{action:{},filter:{}},addAction:function(o,n,r,t){gform.addHook("action",o,n,r,t)},addFilter:function(o,n,r,t){gform.addHook("filter",o,n,r,t)},doAction:function(o){gform.doHook("action",o,arguments)},applyFilters:function(o){return gform.doHook("filter",o,arguments)},removeAction:function(o,n){gform.removeHook("action",o,n)},removeFilter:function(o,n,r){gform.removeHook("filter",o,n,r)},addHook:function(o,n,r,t,i){null==gform.hooks[o][n]&&(gform.hooks[o][n]=[]);var e=gform.hooks[o][n];null==i&&(i=n+"_"+e.length),gform.hooks[o][n].push({tag:i,callable:r,priority:t=null==t?10:t})},doHook:function(n,o,r){var t;if(r=Array.prototype.slice.call(r,1),null!=gform.hooks[n][o]&&((o=gform.hooks[n][o]).sort(function(o,n){return o.priority-n.priority}),o.forEach(function(o){"function"!=typeof(t=o.callable)&&(t=window[t]),"action"==n?t.apply(null,r):r[0]=t.apply(null,r)})),"filter"==n)return r[0]},removeHook:function(o,n,t,i){var r;null!=gform.hooks[o][n]&&(r=(r=gform.hooks[o][n]).filter(function(o,n,r){return!!(null!=i&&i!=o.tag||null!=t&&t!=o.priority)}),gform.hooks[o][n]=r)}});
/* = 0;if(!is_postback){return;}var form_content = jQuery(this).contents().find('#gform_wrapper_1');var is_confirmation = jQuery(this).contents().find('#gform_confirmation_wrapper_1').length > 0;var is_redirect = contents.indexOf('gformRedirect(){') >= 0;var is_form = form_content.length > 0 && ! is_redirect && ! is_confirmation;var mt = parseInt(jQuery('html').css('margin-top'), 10) + parseInt(jQuery('body').css('margin-top'), 10) + 100;if(is_form){jQuery('#gform_wrapper_1').html(form_content.html());if(form_content.hasClass('gform_validation_error')){jQuery('#gform_wrapper_1').addClass('gform_validation_error');} else {jQuery('#gform_wrapper_1').removeClass('gform_validation_error');}setTimeout( function() { /* delay the scroll by 50 milliseconds to fix a bug in chrome */ }, 50 );if(window['gformInitDatepicker']) {gformInitDatepicker();}if(window['gformInitPriceFields']) {gformInitPriceFields();}var current_page = jQuery('#gform_source_page_number_1').val();gformInitSpinner( 1, 'https://joemcnally.com/wp-content/plugins/gravityforms/images/spinner.svg', true );jQuery(document).trigger('gform_page_loaded', [1, current_page]);window['gf_submitting_1'] = false;}else if(!is_redirect){var confirmation_content = jQuery(this).contents().find('.GF_AJAX_POSTBACK').html();if(!confirmation_content){confirmation_content = contents;}jQuery('#gform_wrapper_1').replaceWith(confirmation_content);jQuery(document).trigger('gform_confirmation_loaded', [1]);window['gf_submitting_1'] = false;wp.a11y.speak(jQuery('#gform_confirmation_message_1').text());}else{jQuery('#gform_1').append(contents);if(window['gformRedirect']) {gformRedirect();}}jQuery(document).trigger("gform_pre_post_render", [{ formId: "1", currentPage: "current_page", abort: function() { this.preventDefault(); } }]); if (event && event.defaultPrevented) { return; } const gformWrapperDiv = document.getElementById( "gform_wrapper_1" ); if ( gformWrapperDiv ) { const visibilitySpan = document.createElement( "span" ); visibilitySpan.id = "gform_visibility_test_1"; gformWrapperDiv.insertAdjacentElement( "afterend", visibilitySpan ); } const visibilityTestDiv = document.getElementById( "gform_visibility_test_1" ); let postRenderFired = false; function triggerPostRender() { if ( postRenderFired ) { return; } postRenderFired = true; jQuery( document ).trigger( 'gform_post_render', [1, current_page] ); gform.utils.trigger( { event: 'gform/postRender', native: false, data: { formId: 1, currentPage: current_page } } ); if ( visibilityTestDiv ) { visibilityTestDiv.parentNode.removeChild( visibilityTestDiv ); } } function debounce( func, wait, immediate ) { var timeout; return function() { var context = this, args = arguments; var later = function() { timeout = null; if ( !immediate ) func.apply( context, args ); }; var callNow = immediate && !timeout; clearTimeout( timeout ); timeout = setTimeout( later, wait ); if ( callNow ) func.apply( context, args ); }; } const debouncedTriggerPostRender = debounce( function() { triggerPostRender(); }, 200 ); if ( visibilityTestDiv && visibilityTestDiv.offsetParent === null ) { const observer = new MutationObserver( ( mutations ) => { mutations.forEach( ( mutation ) => { if ( mutation.type === 'attributes' && visibilityTestDiv.offsetParent !== null ) { debouncedTriggerPostRender(); observer.disconnect(); } }); }); observer.observe( document.body, { attributes: true, childList: false, subtree: true, attributeFilter: [ 'style', 'class' ], }); } else { triggerPostRender(); } } );} );
/* ]]> */
Glyn Dewis says
Hey Drew,
Thanks for the ‘heads up’ re the LIFE App; definitely my next App purchase.
All the best to you all,
Glyn
ps> Lovin’ the new blog design; great work!
Scott Dixon says
Hi Joe (and Drew),
Just wanted to say that I downloaded the LIFE iPad app and love it. Great to hear Joe talk his way through techniques. It’s brilliant and perfectly suited to the iPad. Keep up the great work,
Scott
Ruedi says
I’m gonna get it! Thanks for telling.
Regards from Bern
Ruedi
richard Hales says
Hi Joe/Drew
Will have to take a look next time i’m in the App store.
Kind regards
Richard
Daithà says
Just a quick observation on the new blog design… I find the links (yellow text) very hard to read against the white background. Might just be me, but I think they could do with being darkened slightly. Otherwise it looks great!
Tim Skipper says
Now I know I’ve got to go and buy an iPad. Time to quit waiting around I guess 🙂
Scott Shoemaker says
You already got my money. Well worth the price. Plus Joe talks right to me with the touch of a button.
Bryan Geonzon says
After getting my Ipad last December, this was the first app that I purchased. Love it and worth every penny! =)
Johan Sopiee says
Great stuff Drew!
Tomasz Brodecki says
I’m with Daithà here — the links are just too bright and they are even harder to read on a CRT…
Even a slight shift in the CSS, like from #ffbc58, that they are now, to #ffb34e, would fix the problem.
Anyway, can’t wait to have a look at the app. And I hope to see more of Joe’s books in this form in the future 🙂
Nuno Quinteira says
Reallyyyyy worth having! Bought it and recommended it to all my friends.
Tom says
Joe, the blog looks just wonderful but I’m really, really proud of you regarding the iPad application.
You SO deserve this! All those in the studio deserve this! All those back home deserve this! Good for you bud.
Tom
Jim says
Bought the book..Thought the first two books were much, much better.
schralp says
You already got my money for the book. Would be nice to see the app for a nice discount (or free). Someone’s really got to figure out a model where we’re not paying for content twice (my only gripe about the iPad). A few have: NG, Economist…
carson says
Looks like a great app, I don’t have an iPad yet, but I have the app for when I do get one.
Louis Pang says
Congrats Joe! Not bad for a 58-year-old dude to top iTunes app ranking. Your best is still yet to come!
Pierre Vignau says
For an intro on digital photography, the book is just great. It’s really aiming at the people “getting into it” but I still learned a few things. And being a fan, I got it because I already own the previous two and i’m on the waiting list for the next one. It’s kind of like the blog as Joe writes in his humourous and friendly style.
BTW, I got the app, not the paper one. I really appreciate the integration of text, images, videos and sound recordings. All photo books should be like that. Great work by Joe and his team.
Norbert Dabkowski says
I’m sure the app is great! And I’m really looking forward to reading the book, too!
And the blog looks good, on my monitor the orange-ish letters of the links are readable… 🙂
Thanks again for your enlightening blog! 🙂
Al Buyck says
Downloaded it and I love it !!! This would be a great feature to add to all of your future books….Thanks Joe !!
ButchM says
I’ve been working as a full time pro since 1977 … and I love the app (I received several App Store gift cards for the holidays and this was one of the first purchases I made) … even though there is a general focus on the basics, there are lessons and solid advice for those who may already have a good foundation …
The design, flow and functionality of the app is marvelous … and goes a long way in my efforts to save a few trees which was my goal in investing in an iPad …
Joe, would love to see some of your other books offered in such a package … well done!
Tim says
I bought it! Also just read it through along with ‘Hot Shoe Diaries’ and ‘The Moment It Clicks’. All three are top notch, Joe!
David Parkes says
Bought the app and have been enjoying it thoroughly. The use of video and audio throughout the piece is a welcome addition.
One concern however is that it appears that the text is incomplete. With my copy, in the Color section, when you get to the page immediately following the picture of the African-American gentlemen wrapped in the American flag, the final sentence of the page reads “You can use the same colors” and then I swipe to the next page and it’s the beginning of the next section “Temperature and Schemes”. Clearly there’s at least one page missing. Any chance this can be corrected?
In advance, thanks for looking into this.
Jackie Smith says
I’ve just bought it, and quite sincerely, $14.99 is not so much for an entire life book. It’s really worth taking a look.
Lyn says
I would love, love to have this – can’t you do one for Android (I have a Sony S Tablet)? I’m just not into Apple products.
darren says
What a great app, downloading as i type.
santa says
nice blog.