<?xml version="1.0"?>
<oembed><version>1.0</version><provider_name>Jonathan Dunphy</provider_name><provider_url>https://jfdunphy.com</provider_url><author_name>kerplunk</author_name><author_url>https://jfdunphy.com/index.php/author/kerplunk/</author_url><title>Projects - Jonathan Dunphy</title><type>rich</type><width>600</width><height>338</height><html>&lt;blockquote class="wp-embedded-content" data-secret="kCsU2IJOhM"&gt;&lt;a href="https://jfdunphy.com/index.php/projects/"&gt;Projects&lt;/a&gt;&lt;/blockquote&gt;&lt;iframe sandbox="allow-scripts" security="restricted" src="https://jfdunphy.com/index.php/projects/embed/#?secret=kCsU2IJOhM" width="600" height="338" title="&#x201C;Projects&#x201D; &#x2014; Jonathan Dunphy" data-secret="kCsU2IJOhM" frameborder="0" marginwidth="0" marginheight="0" scrolling="no" class="wp-embedded-content"&gt;&lt;/iframe&gt;&lt;script&gt;
/*! This file is auto-generated */
!function(d,l){"use strict";l.querySelector&amp;&amp;d.addEventListener&amp;&amp;"undefined"!=typeof URL&amp;&amp;(d.wp=d.wp||{},d.wp.receiveEmbedMessage||(d.wp.receiveEmbedMessage=function(e){var t=e.data;if((t||t.secret||t.message||t.value)&amp;&amp;!/[^a-zA-Z0-9]/.test(t.secret)){for(var s,r,n,a=l.querySelectorAll('iframe[data-secret="'+t.secret+'"]'),o=l.querySelectorAll('blockquote[data-secret="'+t.secret+'"]'),c=new RegExp("^https?:$","i"),i=0;i&lt;o.length;i++)o[i].style.display="none";for(i=0;i&lt;a.length;i++)s=a[i],e.source===s.contentWindow&amp;&amp;(s.removeAttribute("style"),"height"===t.message?(1e3&lt;(r=parseInt(t.value,10))?r=1e3:~~r&lt;200&amp;&amp;(r=200),s.height=r):"link"===t.message&amp;&amp;(r=new URL(s.getAttribute("src")),n=new URL(t.value),c.test(n.protocol))&amp;&amp;n.host===r.host&amp;&amp;l.activeElement===s&amp;&amp;(d.top.location.href=t.value))}},d.addEventListener("message",d.wp.receiveEmbedMessage,!1),l.addEventListener("DOMContentLoaded",function(){for(var e,t,s=l.querySelectorAll("iframe.wp-embedded-content"),r=0;r&lt;s.length;r++)(t=(e=s[r]).getAttribute("data-secret"))||(t=Math.random().toString(36).substring(2,12),e.src+="#?secret="+t,e.setAttribute("data-secret",t)),e.contentWindow.postMessage({message:"ready",secret:t},"*")},!1)))}(window,document);
//# sourceURL=https://jfdunphy.com/wp-includes/js/wp-embed.min.js
&lt;/script&gt;
</html><description>Projects /jonathanDunphy/ projects I work as a freelance technologist and contractor, managing everything from servers and websites to network configurations and email systems. Some of my client work is protected by contract and cannot be shared publicly, but I&#x2019;ve included a selection of personal builds, lab environments, and projects my clients have approved for display. [&hellip;]</description><thumbnail_url>https://jfdunphy.com/wp-content/uploads/2025/10/jonathan-3d-on-mac-936x1024.webp</thumbnail_url></oembed>
