var gform;gform||(document.addEventListener("gform_main_scripts_loaded",function(){gform.scriptsLoaded=!0}),document.addEventListener("gform/theme/scripts_loaded",function(){gform.themeScriptsLoaded=!0}),window.addEventListener("DOMContentLoaded",function(){gform.domLoaded=!0}),gform={domLoaded:!1,scriptsLoaded:!1,themeScriptsLoaded:!1,isFormEditor:()=>"function"==typeof InitializeEditor,callIfLoaded:function(o){return!(!gform.domLoaded||!gform.scriptsLoaded||!gform.themeScriptsLoaded&&!gform.isFormEditor()||(gform.isFormEditor()&&console.warn("The use of gform.initializeOnLoaded() is deprecated in the form editor context and will be removed in Gravity Forms 3.1."),o(),0))},initializeOnLoaded:function(o){gform.callIfLoaded(o)||(document.addEventListener("gform_main_scripts_loaded",()=>{gform.scriptsLoaded=!0,gform.callIfLoaded(o)}),document.addEventListener("gform/theme/scripts_loaded",()=>{gform.themeScriptsLoaded=!0,gform.callIfLoaded(o)}),window.addEventListener("DOMContentLoaded",()=>{gform.domLoaded=!0,gform.callIfLoaded(o)}))},hooks:{action:{},filter:{}},addAction:function(o,r,e,t){gform.addHook("action",o,r,e,t)},addFilter:function(o,r,e,t){gform.addHook("filter",o,r,e,t)},doAction:function(o){gform.doHook("action",o,arguments)},applyFilters:function(o){return gform.doHook("filter",o,arguments)},removeAction:function(o,r){gform.removeHook("action",o,r)},removeFilter:function(o,r,e){gform.removeHook("filter",o,r,e)},addHook:function(o,r,e,t,n){null==gform.hooks[o][r]&&(gform.hooks[o][r]=[]);var d=gform.hooks[o][r];null==n&&(n=r+"_"+d.length),gform.hooks[o][r].push({tag:n,callable:e,priority:t=null==t?10:t})},doHook:function(r,o,e){var t;if(e=Array.prototype.slice.call(e,1),null!=gform.hooks[r][o]&&((o=gform.hooks[r][o]).sort(function(o,r){return o.priority-r.priority}),o.forEach(function(o){"function"!=typeof(t=o.callable)&&(t=window[t]),"action"==r?t.apply(null,e):e[0]=t.apply(null,e)})),"filter"==r)return e[0]},removeHook:function(o,r,t,n){var e;null!=gform.hooks[o][r]&&(e=(e=gform.hooks[o][r]).filter(function(o,r,e){return!!(null!=n&&n!=o.tag||null!=t&&t!=o.priority)}),gform.hooks[o][r]=e)}});
/* = 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 } } ); gform.utils.trigger( { event: 'gform/post_render', 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(); } } );} );
/* ]]> */
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!
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
I’m gonna get it! Thanks for telling.
Regards from Bern
Ruedi
Hi Joe/Drew
Will have to take a look next time i’m in the App store.
Kind regards
Richard
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!
Now I know I’ve got to go and buy an iPad. Time to quit waiting around I guess 🙂
You already got my money. Well worth the price. Plus Joe talks right to me with the touch of a button.
After getting my Ipad last December, this was the first app that I purchased. Love it and worth every penny! =)
Great stuff Drew!
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 🙂
Reallyyyyy worth having! Bought it and recommended it to all my friends.
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
Bought the book..Thought the first two books were much, much better.
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…
Looks like a great app, I don’t have an iPad yet, but I have the app for when I do get one.
Congrats Joe! Not bad for a 58-year-old dude to top iTunes app ranking. Your best is still yet to come!
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.
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! 🙂
Downloaded it and I love it !!! This would be a great feature to add to all of your future books….Thanks Joe !!
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!
I bought it! Also just read it through along with ‘Hot Shoe Diaries’ and ‘The Moment It Clicks’. All three are top notch, Joe!
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.
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.
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.
What a great app, downloading as i type.
nice blog.