| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810 |
- <!DOCTYPE html>
- <!--
- . . . . . .
- . . ...-..-| |-. .-. .-.-..-| .-.. ...-|
- ` ` '' '`-'-' '-`-`-' ' '`-'-`-`-` '`-'-
- -->
- <html lang="en" class="no-js default-scroll">
- <head>
- <meta charset="utf-8">
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
- <meta name="google-site-verification" content="kp06-RPhHu97jLQv5c7nl_jyj3wDwTBIpC_OogW-TFc">
- <meta name="description" content="David Windham">
- <meta name="author" content="David Windham">
- <title>David Windham</title>
- <link rel="canonical" href="https://davidwindham.com/">
- <meta property="og:title" content="David Windham">
- <meta property="og:description" content="Something Else">
- <meta property="og:type" content="website"><meta property="og:url" content="https://davidwindham.com"><meta property="og:site_name" content="David Windham"><meta property="og:image" content="https://davidwindham.com/og-image.jpg"><meta property="fb:app_id" content="203136806559589"><meta name="twitter:site" content="@windhamdavid"><meta name="twitter:creator" content="@windhamdavid"><meta name="twitter:title" content="David Windham"><meta name="twitter:description" content="Something Else"><meta name="twitter:image" content="img/ogt_image.jpg"><meta name="twitter:card" content="summary_large_image"><link rel="apple-touch-icon" sizes="180x180" href="img/icons/apple-touch-icon.png"><link rel="icon" type="image/png" sizes="32x32" href="img/icons/favicon-32x32.png"><link rel="icon" type="image/png" sizes="16x16" href="img/icons/favicon-16x16.png"><link rel="manifest" href="img/icons/site.webmanifest"><!--<link rel="mask-icon" href="img/icons/safari-pinned-tab.svg" color="#3f3f3f">--><meta name="msapplication-TileColor" content="#000000"><meta name="theme-color" content="#ffffff">
- <link rel="stylesheet" href="css/dw.css">
- <script type="application/ld+json">
- {
- "@context": "https://schema.org",
- "@type": "LocalBusiness",
- "name": "David Windham",
- "image": "https://davidwindham.com/img/ogt_image.jpg",
- "@id": "https://davidwindham.com/#who",
- "url": "https://davidwindham.com",
- "telephone": "803-712-3283",
- "address": {
- "@type": "PostalAddress",
- "streetAddress": "102 Glenridge Circle",
- "addressLocality": "Greenwood",
- "addressRegion": "SC",
- "postalCode": "29646",
- "addressCountry": "US"
- },
- "geo": {
- "@type": "GeoCoordinates",
- "latitude": 34.1765603,
- "longitude": -82.20454029999999
- },
- "openingHoursSpecification": {
- "@type": "OpeningHoursSpecification",
- "dayOfWeek": [
- "Monday",
- "Tuesday",
- "Wednesday",
- "Thursday",
- "Friday"
- ],
- "opens": "09:00",
- "closes": "15:00"
- },
- "sameAs": [
- "",
- "https://twitter.com/windhamdavid",
- "https://linkedin.com/in/windhamdavid",
- "https://en.wikipedia.org/wiki/User:Windhamdavid",
- "https://github.com/windhamdavid",
- "https://www.youtube.com/user/windhamdavid",
- "https://www.facebook.com/windhamdavid",
- "https://windhamdavid.tumblr.com/",
- "https://www.reddit.com/user/windhamdavid"
- ]
- }
- </script>
- </head>
- <body>
- <!-- Page loader (mirrors the WordPress theme's loader.php) -->
- <style>
- #loader { position:fixed; width:100%; height:100%; top:0; left:0; z-index:200000; background-color:#222; }
- .loading-animation { width:250px; height:250px; position:absolute; inset:0; margin:auto; }
- .loading-animation svg { position:absolute; top:0; left:0; transform-origin:center center; transition:all .3s; transform:rotateY(0deg); }
- .loading-animation path { fill:none; stroke:#fff; stroke-width:2; transition:all .3s; }
- .loading-animation .l1 path { fill:rgba(242,242,242,.1); stroke-dasharray:450; stroke-dashoffset:900; animation:LOADING1 4s linear 0s infinite; }
- .loading-animation .l2 path { fill:rgba(242,242,242,.1); stroke-dasharray:340; stroke-dashoffset:340; animation:LOADING2 3s linear 0s infinite; }
- .loading-animation .l3 path { fill:none; stroke-width:1; stroke-dasharray:33; stroke-dashoffset:33; animation:LOADING3 2s linear 0s infinite; }
- @keyframes LOADING1 { 0%{stroke-dashoffset:-900;}50%{stroke-dashoffset:0;}100%{stroke-dashoffset:900;} }
- @keyframes LOADING2 { 0%{stroke-dashoffset:340;}50%{stroke-dashoffset:0;}100%{stroke-dashoffset:-340;} }
- @keyframes LOADING3 { 0%{stroke-dashoffset:-230;}50%{stroke-dashoffset:0;}100%{stroke-dashoffset:230;} }
- .svg-wrap .l1 { animation:TURN 3s linear 0s infinite; }
- .svg-wrap .l2 { animation:TURN 2s linear 0s infinite; }
- .svg-wrap .l3 { animation:TURN 4.5s linear 0s infinite; }
- @keyframes TURN { 0%{transform:rotateY(0deg);opacity:1}25%{transform:rotateY(90deg);opacity:.6}50%{transform:rotateY(180deg);opacity:1}75%{transform:rotateY(270deg);opacity:.6}100%{transform:rotateY(360deg);opacity:1} }
- </style>
- <div id="loader">
- <div class="loading-animation">
- <div class="svg-wrap">
- <svg class="l1" width="250px" height="250px"><path d="M242.8,131.8c-0.4-29.9-22.1-50.1-48.1-50c-16.9,0-28.6,8.4-28.6,8.4s12.7-16.2,12.6-36.9c-0.2-24.7-23-47.9-52.4-47.9C97.6,5.4,71.8,26,72.3,55.5C72.6,76.3,85,90.2,85,90.2c0,0-13.9-8.7-29-8.2C16.5,83,6.6,115.8,7.3,132.9c1.2,33.4,15.4,53.8,52.7,54.2c34.2,0.4,54.9-32.3,61-43.5c1.5-9.5,0-13.9,0-13.9c-3.1,1.6-14.5,27.9-35.6,16.1c-6.8-3.8-8.8-16.7-5.2-26.3c6.3-16.9,18.3-18.7,36-40.3c6.8-8.3,8.2-13.6,8.2-13.6s1.2,5.2,7.8,13.2c17.4,21.2,30.1,23.6,36.7,40.4c4.1,10.4,1.8,23-6,26.9c-20.3,10.1-31.4-15.1-34.9-16.5c0,0-1.2,4,0.1,12.8c2.6,5.7,21.7,44.2,64,44.2C226.3,186.6,243.1,156.2,242.8,131.8z"/></svg>
- <svg class="l2" width="250px" height="250px"><path d="M124.5,154.1c0,0-10.8,37.5-12.7,41.9c-4.9,11.3-26.6,38.8-26.6,38.8s25.2-2.8,40.4-2.8c15.6,0,39.2,3.2,39.2,3.2s-22.8-28.1-27.6-39.6C135.4,191.2,124.5,154.1,124.5,154.1z"/></svg>
- <svg class="l3" width="250px" height="250px"><path d="M0.5,125a124.5,124.5 0 1,0 249,0a124.5,124.5 0 1,0 -249,0"/></svg>
- </div>
- </div>
- </div>
- <script>
- (function () {
- var HOLD = 1000, FADE = 2000, FAILSAFE = 9000, done = false;
- function hideLoader() {
- if (done) return; done = true;
- var el = document.getElementById('loader'); if (!el) return;
- el.style.transition = 'opacity ' + FADE + 'ms ease';
- el.style.opacity = '0';
- setTimeout(function () { el.style.display = 'none'; }, FADE);
- }
- function schedule() { setTimeout(hideLoader, HOLD); }
- if (document.readyState === 'complete') schedule();
- else window.addEventListener('load', schedule);
- setTimeout(hideLoader, FAILSAFE);
- })();
- </script>
- <div id="backgroundsvg"></div>
- <div id="backgroundsvg2"></div>
- <div id="backgroundsvg3"></div>
- <!-- ============================= ** HEADER ** ============================= -->
- <header id="header" class="header">
- <div class="header-ui">
- <div class="brand--nav text-end">
- <h1 class="d-none ">David Windham</h1>
- </div>
- </div>
- </header>
- <header class="header-small">
- <a href="#header" class="brand" aria-label="Back to top">
- <img class="light" src="img/dw-light.svg" srcset="img/dw-light.svg 2x" alt="David Windham logo">
- <img class="dark" src="img/dw-dark.svg" srcset="img/dw-dark.svg 2x" alt="David Windham logo">
- </a>
- <button class="hamburger" type="button" aria-label="Open Close Menu">
- <span class="hamburger-box">
- <span class="hamburger-inner"></span>
- </span>
- </button>
- <div class="header-small-menu">
- <a href="#who">Who</a>
- <a href="#what">What</a>
- <a href="#when">When</a>
- <a href="#why">Why</a>
- <a href="#how">How</a>
- </div>
- </header>
- <!-- ** TOP NAV (main-site links, opened from the brand) ** -->
- <style>
- /* variable Playfair (opsz pinned to 20) so the top nav matches the main site's nav */
- @font-face { font-family: 'Playfair Var'; font-style: normal; font-weight: 300 900; font-display: swap; src: url('fonts/playfair-display-var.woff2') format('woff2'); }
- #worknav.work-nav { height: auto; bottom: auto; min-height: 0; max-height: none; background: rgba(72,76,87,.9); backdrop-filter: blur(6px); border: 0; z-index: 990; } /* bottom:auto releases the base .offcanvas bottom:0 so it doesn't stretch full-height; z-index below .header-small (999) so the side-nav "Who" link paints on top where they overlap */
- /* .header-small is a full-width bar at z-index 999; with the top nav now at 990, its empty center would swallow clicks meant for the top-nav links. Make the bar transparent to pointer events but keep its real links/hamburger clickable. */
- .header-small { pointer-events: none; }
- .header-small a, .header-small .hamburger { pointer-events: auto; }
- #worknav .offcanvas-body { padding: 1.1rem 1rem; flex: 0 0 auto; }
- .work-nav-links { position: relative; display: flex; justify-content: center; flex-wrap: wrap; gap: 2.2rem; margin: 0; }
- .work-nav-links a { color: #fff; text-decoration: none; font-family: 'Playfair Var', 'Playfair Display', serif; font-weight: 700; font-size: 1.35rem; }
- .work-nav-links a:hover { color: #25c2a0; }
- /* floating "magic line": one shared underline that slides between the top-nav items (positioned by the script below) */
- .work-nav-underline {
- position: absolute; top: 0; left: 0; width: 0; height: 2px;
- background: #25c2a0; border-radius: 1px; opacity: 0; pointer-events: none;
- transition: left .4s cubic-bezier(0.785,0.135,0.15,0.86), width .4s cubic-bezier(0.785,0.135,0.15,0.86), top .4s cubic-bezier(0.785,0.135,0.15,0.86), opacity .3s ease;
- }
- /* sub nav (Who/What/When/Why/How): match the top-nav font + size, with a different
- underline effect — a left-to-right slide-in per item (like the main site's footer) */
- .header-small .header-small-menu a {
- font-family: 'Playfair Var', 'Playfair Display', serif;
- font-weight: 700;
- font-size: 1.35rem;
- position: relative;
- }
- .header-small .header-small-menu a::after {
- content: ''; position: absolute; left: 12px; bottom: 6px; height: 2px; width: 0;
- background: #25c2a0; transition: width .35s cubic-bezier(0.785,0.135,0.15,0.86);
- }
- .header-small .header-small-menu a:hover { opacity: 1; }
- .header-small .header-small-menu a:hover::after { width: calc(100% - 41px); }
- @media (prefers-reduced-motion: reduce) {
- .work-nav-underline { transition: opacity .3s ease; }
- .header-small .header-small-menu a::after { transition: none; }
- }
- </style>
- <div class="offcanvas offcanvas-top work-nav" tabindex="-1" id="worknav" data-bs-backdrop="false" data-bs-scroll="true" aria-labelledby="worknav-label">
- <div class="offcanvas-body">
- <nav class="work-nav-links" aria-label="Main site navigation">
- <a href="/about">About</a>
- <a href="/desk">Desk</a>
- <a href="/studio">Studio</a>
- <a href="/work">Work</a>
- <span class="work-nav-underline" aria-hidden="true"></span>
- </nav>
- </div>
- </div>
- <script>
- /* Floating "magic line" underline for the top nav (mirrors the main site): one shared
- underline slides between items on hover and rests under the current-page item.
- Positions read from offset* (layout geometry), unaffected by the offcanvas transform. */
- (function () {
- function init() {
- var nav = document.querySelector('.work-nav-links');
- if (!nav) return;
- var line = nav.querySelector('.work-nav-underline');
- if (!line) return;
- var links = Array.prototype.slice.call(nav.querySelectorAll('a'));
- if (!links.length) return;
- function rel(el) {
- var left = 0, top = 0, node = el;
- while (node && node !== nav) { left += node.offsetLeft; top += node.offsetTop; node = node.offsetParent; }
- return { left: left, top: top, width: el.offsetWidth, height: el.offsetHeight };
- }
- function place(el, show) {
- var r = rel(el);
- line.style.left = r.left + 'px';
- line.style.width = r.width + 'px';
- line.style.top = (r.top + r.height) + 'px';
- line.style.opacity = show ? '1' : '0';
- }
- function activeLink() {
- var here = location.pathname.replace(/\/+$/, '') || '/';
- var seg = '/' + (here.split('/')[1] || '');
- var exact = null, section = null;
- links.forEach(function (a) {
- var p = a.pathname.replace(/\/+$/, '') || '/';
- if (p === here) exact = a;
- if (p === seg) section = a;
- });
- return exact || section;
- }
- var active = activeLink();
- function rest() { if (active) place(active, true); else line.style.opacity = '0'; }
- links.forEach(function (a) { a.addEventListener('mouseenter', function () { place(a, true); }); });
- nav.addEventListener('mouseleave', rest);
- window.addEventListener('resize', rest);
- if (document.fonts && document.fonts.ready) document.fonts.ready.then(rest);
- rest();
- }
- if (document.readyState !== 'loading') init();
- else document.addEventListener('DOMContentLoaded', init);
- })();
- </script>
- <!-- ** TOP NAV ** -->
- <!-- ============================= ** MAIN ** ============================= -->
- <main id="main" class="main">
- <!-- ============================= ** HELLO ** ============================= -->
- <div id="hello" class="background-color dark" data-dark-bg></div>
- <section class="page-view hello d-flex align-items-center">
- <div class="container">
- <div class="row">
- <div class="col-lg-8 offset-lg-2">
- <h2 class="mb-2">David A. Windham</h2>
- <p>( 1973 - )</p>
- <h3 class="mt-5">Welcome Good People of the Internet,</h3>
- <p class="lead">I'm glad you found me.
- I, too, have a computer on a network, so here you are.
- No man is an island<sub>1</sub> even though this is mostly a one-man show<sub>2</sub>.
- I published this site as single-page professional overview so I can have fun with my <a href="/desk">personal site</a> and avoid sending potential clients navigating down the 2,000-page rabbit hole<sub>3</sub>.
- <br><br>
- Right on,
- </p>
- <svg class="img-fluid" id="signature" x="0px" y="0px" viewBox="0 0 1000 300" width="300">
- <style type="text/css">.sig-lines{fill:none;stroke:#9c9ea5;stroke-width:5;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;}</style>
- <g id="daw">
- <path class="sig-lines" d="M188.28,63.54l25,148c0,0,4.98,30.96-2,33c-6.86,2-36.28-68.04-76-98c-28.32-21.36-111.67-55.04-112-76 C23,52.5,86.83,33.5,193,33.5c28,0,203.19,7.85,192.28,71.04c-18.28,105.96-251.24,177.92-266,164c-4.28-4.04,187-59,187-59 s20.28-6.22,37.08-11.57c11.16-3.55,14.63-0.47,20.92-5.43c4.87-3.85,4.48-10.62-1-8c-8.28,3.96,9.6,7.13,13,6c6-2,13.92,4.45,18,4 c9-1,8.72-7.96,14-8c5.72-0.04,4.06,4.87,10,5c4.6,0.1,22.6-5.11,28-10c2.65-2.4,3.74-9.43,4-13c0.47-6.31-1.1-18.96-3-25 c-2.25-7.17-11.77-36.08-14-36c-1.9,0.07,1.18,37.4,3,43c2.36,7.24,10.14,35.44,14,42c1.72,2.93,5.26,8.98,8,11c1.72,1.27,8,3,8,3" />
- <polyline class="sig-lines" points="383.28,154.54 381.28,159.54 387.28,157.54 "/>
- <path class="sig-lines" d="M554.28,197.54c0,0-50-10-52-7c-3,4.5,12,18,12,18s-2.76-23.76-8.44-49c-6.34-28.17-15.57-58.16-13.56-59 c12-5,59.17,104.23,66,127"/>
- <line class="sig-lines" x1="572.28" y1="201.54" x2="569.28" y2="198.54"/>
- <path class="sig-lines" d="M603.28,163.54c0,0-4,5-4,14c0,8.85,11,27,24,26c6.07-0.47,15,0,23-8c3.25-3.25,8.41-12.79,13-13 c4.07-0.19,8.7,8.61,12,11c5.51,3.99,19.31,9.2,26,8c13.25-2.37,35-5,46-28c4.51-9.42,9.33-30.64,8-41 c-2.23-17.33-11.1-53.21-23-66c-13.02-14-28-32-68-35c-11.39-0.85-35.11,5.28-45,11c-2.75,1.59-9,6.82-9,10"/>
- <polyline class="sig-lines" points="726.28,132.54 727.28,133.54 730.28,131.54 "/>
- <path class="sig-lines" d="M739.28,162.54c0,0,6.17,19.8,12,20c3.05,0.11,4.17-8.87,7-10c4.36-1.74,12.66,6.19,17,8 c3.49,1.45,11.34,2.94,15,2c3.7-0.95,7.18-5.95,11-6c2.15-0.03,6.81,3.58,9,3c3.42-0.91,8.54-6.78,10-10 c4.55-10.02,2.15-32.19,0-44c-2.42-13.3-16-57-19-55c-3.72,2.48-0.4,42.4,3,56c1.75,7,10.14,46.8,17.28,52.14 c6.44,4.82,11.72-35.14,11.72-35.14s3.72-26.04,2-26c-3.28,0.08-6,23-6,23s-3,32-2.19,32.57c3.28,2.3,4.19-7.57,7.19-7.57 c2.81,0,4.27,5.75,8,8c5.34,3.22,12.05,5,16,5c8,0,8.85-15,14-15c5,0,15.55,12.97,23,15c11,3,14-11,14-11s21.98,11.25,43,13 c12,1,24-11,24-11s2-2-1-3"/>
- </g>
- </svg>
- </div>
- </div>
- </div>
- </section>
- <!-- ============================= ** WHO ** ============================= -->
- <div id="who" class="background-color light"></div>
- <section class="page-view who">
- <div class="container">
- <div class="row">
- <div class="col-lg-3 mt-5">
- <img class="mt-5 float-end" width="180" src="img/dw-dog.svg" srcset="./img/dw-dog.svg 2x" alt="David Windham">
- <p class="mt-1 ps-5 gaegu illustration small float-end">
- I use this for my profile everywhere. It started off as the backside of a rabbit based on a Japanese Woodblock print.
- </p>
- </div>
- <div class="col-lg-7 ps-5 pt-5">
- <h2>Who?</h2>
- <p class="lead">
- I've been a developer for almost 20 years.
- I'm detail oriented, productive, creative, and try to enjoy my work.
- I have a BA in Studio Art from The College of Charleston which is where I first got started publishing websites.
- I've worked in advertising, publishing, education, and for an assortment of business clients.
- I try to help folks make practical software decisions and good use of the web by crafting custom applications.
- </p>
- </div>
- </div>
- </div>
- </section>
- <!-- ============================= ** WHAT ** ============================= -->
- <div id="what" class="background-color dark" data-dark-bg></div>
- <section class="page-view what">
- <div class="container">
- <div class="row">
- <div class="col-lg-7 offset-lg-1">
- <h2>What?</h2>
- <p class="lead">
- I like to say that all I do is search for answers on the internet and read the documentation, but I enjoy solving challenging technical puzzles using my experience, diagnostic, and analytical abilities.
- I try to keep a limited roster of well served clients, but
- I'll certainly make an effort to be helpful however I am able.
- I'm also open to booking my time for brain storming, research, or other endeavors.
- </p>
- </div>
- <div class="col-lg-3 mt-5">
- <a class="btn btn-primary zw-logo" data-bs-toggle="modal" data-bs-target="#zw-card-modal">
- <svg id="ZW" width="80" class="img-fluid" x="0px" y="0px" viewBox="0 0 249 249">
- <path class="zw-lines" d="M124.5,0C55.7,0,0,55.7,0,124.5S55.7,249,124.5,249S249,193.3,249,124.5S193.3,0,124.5,0z M124.1,231.5 c-15.2,0-39.4,2.8-39.4,2.8s13.8-13.1,26.6-38.8c10.7-21.5,13.2-41.9,13.2-41.9v0c0,0,3.2,22.5,12.2,41.5 c12.3,25.9,27.6,39.6,27.6,39.6S139.3,231.5,124.1,231.5z M191.6,186.1c-42.3,0-59.1-27.6-64-43.2c-3-14.5-0.1-13.8-0.1-13.8 c3.5,1.5,14.7,26.7,34.9,16.5c7.8-3.9,10.1-16.6,6-26.9c-6.7-16.8-19.3-19.2-36.7-40.4c-6.6-8-7.8-13.2-7.8-13.2s-1.4,5.3-8.2,13.6 c-17.8,21.6-29.7,23.3-36,40.3c-3.6,9.6-1.7,22.5,5.2,26.3c21.1,11.7,32.5-14.5,35.6-16.1c0,0,2.1-0.7,0,13.9 c-3.9,15.4-26.8,43.9-61,43.5C22.2,186.1,8,165.8,6.8,132.4c-0.6-17,9.2-49.8,48.8-51c15.2-0.4,29,8.2,29,8.2S72.1,75.8,71.8,55 c-0.4-29.5,24.5-50.1,54-50.1s52.2,23.2,52.4,47.9c0.2,20.7-12.6,36.9-12.6,36.9s11.7-8.4,28.6-8.4c26,0,47.7,20.1,48.1,50l0,0 C242.6,155.7,225.8,186.1,191.6,186.1z"/>
- </svg>
- </a>
- <p class="mt-3 ps-5 gaegu illustration small float-start">
- This is the icon I use everywhere. It came from a card I designed for my business. The name came from our two dogs <a href="/boozie/">Zeke and Woozie</a>. ( Click to see the original )
- </p>
- </div>
- </div>
- <!-- ** ZW CARD ** -->
- <div id="zw-card-modal" class="modal fade" tabindex="-1" aria-labelledby="zw-card-modal" aria-hidden="true">
- <div class="modal-dialog">
- <div class="modal-content">
- <div class="modal-body">
- <div id="zw-card" class="click panel">
- <div class="front">
- <img onclick="flip()" src="img/card-back.png" alt="zeken woozer card front">
- </div>
- <div class="back">
- <img onclick="flip()" src="img/card.png" alt="zeken woozer card back">
- </div>
- </div>
- </div>
- </div>
- </div>
- </div>
- <!-- ** ZW CARD ** -->
- <div class="row mt-4 capabilities">
- <div class="col-lg-7 offset-lg-1">
- <div class="row">
- <div class="col-md-3">
- <h5>Strategy</h5>
- <ul>
- <li>Advertising</li>
- <li>Communication</li>
- <li>Product</li>
- <li>Research</li>
- </ul>
- </div>
- <div class="col-md-4">
- <h5>Front End</h5>
- <ul>
- <li>HTML / CSS</li>
- <li>Javascript ES6 / ES5</li>
- <li>Tailwind / Bootstrap</li>
- <li>Vue / React / Ember</li>
- </ul>
- </div>
- <div class="col-md-4">
- <h5>Dev-Ops</h5>
- <ul>
- <li>Build Automation</li>
- <li>Continuous Integration</li>
- <li>Microservices</li>
- <li>QA / Unit Testing</li>
- </ul>
- </div>
- </div>
- <div class="row">
- <div class="col-md-3">
- <h5>Design</h5>
- <ul>
- <li>Graphic</li>
- <li>Illustration</li>
- <li>Print / Layout</li>
- <li>Prototyping</li>
- <li>UI/UX design</li>
- </ul>
- </div>
- <div class="col-md-4">
- <h5>Back End</h5>
- <ul>
- <li>Go / Gorilla / Dart / Flutter</li>
- <li>Node / Express / Meteor</li>
- <li>PHP / Laravel / WordPress</li>
- <li>Python / Flask / Django</li>
- <li>Ruby / Rails / Sinatra</li>
- </ul>
- </div>
- <div class="col-md-4">
- <h5>Sys-Admin</h5>
- <ul>
- <li>Amazon / Google Services</li>
- <li>Ansible / Docker / Kubernetes</li>
- <li>Heroku / Linode / Zeit</li>
- <li>Debian / Ubuntu / CentOS</li>
- <li>Mongo / SQL / Redis</li>
- </ul>
- </div>
- </div>
- </div>
- <div class="col-lg-3">
- <div class="row">
- <h5>Management</h5>
- <ul>
- <li>Analytics / Campaign Reporting</li>
- <li>Application Monitoring / Support</li>
- <li>Backup Automation / Recovery</li>
- <li>Brand Trademark / Identity Monitoring</li>
- <li>Domain Registry / Routing / DNS</li>
- <li>Email Accounts / Hosting / Security</li>
- <li>Hardware Acquisition / Management</li>
- <li>Server Maintenance / Upgrades / Support</li>
- <li>System / Network Security</li>
- <li>Technical Support / Troubleshooting</li>
- <li>User Support / Training</li>
- </ul>
- </div>
- </div>
- </div>
- </div>
- </section>
- <!-- ============================= ** WHEN ** ============================= -->
- <div id="when" class="background-color light"></div>
- <section class="page-view when">
- <div class="container">
- <div class="row">
- <div class="col-lg-10 offset-lg-1">
- <h2 class="when">When & Where?</h2>
- </div>
- </div>
- <div class="row">
- <div class="col-lg-4 offset-md-1 mt-3">
- <p>I try to keep a flexible work schedule so that I can enjoy time away from work. I try to be efficient because productivity does not equal the amount of time I spend at my desk.</p>
- <h4 class="when mt-4">Request My Time</h4>
- <p>I book hourly sessions and I try to overlap projects in an effort to keep my schedule full. I also enjoy volunteering my time to help worthy causes and organizations.</p>
- <h4 class="when mt-4">I Work Anywhere</h4>
- <p>Although video chats are nice, I also enjoy meeting in person. I travel out of the Greenville or Charlotte International Airports.</p>
- <h4 class="when mt-4">Remote Support</h4>
- <p>I can remotely access and manage your computers and devices.</p>
- <h4 class="when mt-4">Availability</h4>
- <p>I'm available to my clients anytime and I'm always open to taking on new clients.</p>
- </div>
- <div class="col-lg-6">
- <div id='calendar'></div>
- </div>
- </div>
- </div>
- </section>
- <!-- ============================= ** WHY ** ============================= -->
- <div id="why" class="background-color dark" data-dark-bg></div>
- <section class="page-view why testimonials-section">
- <div class="container">
- <div class="row">
- <div class="col-lg-6 offset-md-1">
- <h2 class="why">Why?</h2>
- <p class="lead">
- I used to view business as a competition, but I've learned to look at it as a collaboration.
- I value the relationships and I'm always looking for a good match with my clients.
- </p>
- <div class="tesimonials mt-3">
- <div class="indicators"></div>
- <figure class="br-testimonial showing">
- <blockquote>
- "<strong>David has been a pleasure to work with</strong>.
- His patient leadership on project made it very easy on us.
- He has been very flexible in accommodating our requests.
- David's persistent support throughout development and launch was fast and consistent;
- This project would have been impossible without him"
- </blockquote>
- <figcaption class="text-end">
- <cite>Project client</cite>
- New York, NY
- </figcaption>
- </figure>
- <figure class="br-testimonial">
- <blockquote>
- "David joined our team remotely to help build and launch a client project and in less than three months we had a product ready for launch.
- David's persistent support throughout development and launch was fast and consistent. <strong>David is a strong asset for any team</strong>"
- </blockquote>
- <figcaption class="text-end">
- <cite>Contract client</cite>
- Los Angeles, CA
- </figcaption>
- </figure>
- <figure class="br-testimonial">
- <blockquote>
- "Good developers can be difficult to find, but David is amazing!
- <strong>He's an expert developer who works quickly</strong> and ultimately delivered an app that exceeded my expectations. We will definitely be working with him again."
- </blockquote>
- <figcaption class="text-end">
- <cite>Project client</cite>
- Greenville, SC
- </figcaption>
- </figure>
- <figure class="br-testimonial">
- <blockquote>
- "David has handled all of my computer needs for the last 10 years.
- He runs our company email, website, and sets up our computers. He's been very reliable and fair.
- <strong>I can only imagine how much money he has saved my company.</strong>"
- </blockquote>
- <figcaption class="text-end">
- <cite>Managed client</cite>
- Charleston, SC
- </figcaption>
- </figure>
- <figure class="br-testimonial">
- <blockquote>
- "I remember you taking apart all of the electronics in our house and never putting them back together.
- I'd imagine that you're very good at what you do.
- <strong>It makes me very happy to see you doing something you enjoy.</strong>"
- </blockquote>
- <figcaption class="text-end">
- <cite>My Mom</cite>
- Columbia, SC
- </figcaption>
- </figure>
- </div>
- </div>
- <div class="col-lg-4 mt-5 ps-5 pt-2">
- <h5>Approach</h5>
- <p>I just "take care of it". I manage, host, and maintain everything I build or install for the lifespan of the project or your business. I offer sensible consulting based on your goals and I succeed using my experience, enthusiasm, and commitment to personal service.</p>
- <h5>Advantages</h5>
- <p>I provide a single point of contact for consolidated billing, development, and support. There are no confusing automated reminders, renewals, and upgrade emails coming from your software or upstream providers. </p>
- </div>
- </div>
- <div class="row mt-3">
- <div class="col-lg-6 offset-lg-1">
- <h5>Selected Clients:</h5>
- <div class="row">
- <div class="col-md-6">
- <ul class="clients">
- <li>Use All Five Inc.</li>
- <li>The Rivers Agency</li>
- <li>Charleston Home Tour</li>
- <li>AJ Design Co.</li>
- <li>Fuzzco Inc.</li>
- <li>Harbourtowne Real Estate</li>
- <li>Charleston Trident Association of Realtors</li>
- <li>The College of Charleston</li>
- <li>Blue Ridge Electric Cooperative</li>
- <li>Self Regional Healthcare</li>
- <li>Biotherm Solutions</li>
- </ul>
- </div>
- <div class="col-md-6">
- <ul class="clients">
- <li>Pennebaker & Hegedus Films</li>
- <li>Good and Plenty Records</li>
- <li>Jerry Moran</li>
- <li>Holy City Farms</li>
- <li>Harvard Kennedy School</li>
- <li>Clemson University</li>
- <li>The Chelcum Family Foundation</li>
- <li>Morris Publishing</li>
- <li>The State Newspaper </li>
- <li>GMK Associates</li>
- <li>Nicholson, Meredith, & Anderson</li>
- </ul>
- </div>
- </div>
- </div>
- <div class="col-lg-4 ps-5">
- <h5>Experience</h5>
- <ul class="clients">
- <li>2005 - David A. Windham Consulting</li>
- <li>2011 - 2014 Clemson University</li>
- <li>2009 - 2011 Morris Communications</li>
- <li>2007 - 2009 Fuzzco Inc.</li>
- <li>2005 -> Radio Announcer, Wine Sales, Wine Steward, Waiter, Slide Library Manager, Woodworker apprentice, Pizza Delivery, Lifeguard.</li>
- </ul>
- <ul class="clients">
- <li>2003 - College of Charleston - B.A. Fine Arts</li>
- <li>1993 - Savannah College of Art and Design</li>
- <li>1991 – Chapin High School</li>
- </ul>
- </div>
- </div>
- </div>
- </section>
- <!-- ============================= ** HOW ** ============================= -->
- <div id="how" class="background-color light"></div>
- <section class="page-view services">
- <div class="container">
- <div class="row services-title">
- <div class="col-lg-5 offset-md-1">
- <h2 class="how">& How</h2>
- <h3 class="how mb-4">Can I Help?</h3>
- <p class="lead"></p>
- </div>
- </div>
- <div class="row">
- <div class="col-lg-4 offset-md-1">
- <ul class="nav nav-tabs" id="services" role="tablist">
- <li class="nav-item service">
- <a href="#create-tab" class="nav-link" data-bs-toggle="tab" data-bs-target="#create-tab" role="tab" aria-controls="create-tab" aria-selected="true">
- <i class="pulse"><span></span></i>
- <span class="numbering">01</span>
- <h4 class="how">Design, Create, & Build</h4>
- <p class="small">a new site or application.</p>
- </a>
- </li>
- <li class="nav-item service">
- <a href="#service-tab" class="nav-link" data-bs-toggle="tab" data-bs-target="#service-tab" role="tab" aria-controls="#service-tab" aria-selected="false">
- <i class="pulse"><span></span></i>
- <span class="numbering">02</span>
- <h4 class="how">Service, Repair, & Improve</h4>
- <p class="small">an existing site or application.</p>
- </a>
- </li>
- <li class="nav-item service">
- <a href="#audit-tab" class="nav-link" data-bs-toggle="tab" data-bs-target="#audit-tab" role="tab" aria-controls="audit-tab" aria-selected="false">
- <i class="pulse"><span></span></i>
- <span class="numbering">03</span>
- <h4 class="how">Audit, Advise, & Consult</h4>
- <p class="small">on best practices.</p>
- </a>
- </li>
- <li class="nav-item service">
- <a href="#manage-tab" class="nav-link" data-bs-toggle="tab" data-bs-target="#manage-tab" role="tab" aria-controls="manage-tab" aria-selected="false">
- <i class="pulse"><span></span></i>
- <span class="numbering">04</span>
- <h4 class="how">Manage, Monitor, & Host</h4>
- <p class="small">sites, applications, and campaigns.</p>
- </a>
- </li>
- </ul>
- </div>
- <div class="col-lg-6 mt-n4">
- <div class="tab-content">
- <div id="create-tab" class="tab-pane fade show active" role="tabpanel" aria-labelledby="create-tab" tabindex="0">
- <h4 class="how fw-bold">Tailored</h4>
- <p>Even though I mostly work for small clients, I provide them enterprise IT strategies. I tailor my work to the unique requirements of each project in an effort create sustainable and practical applications and designs that work for you. I focus on my core competencies and will recommend other providers when the scope of your project falls outside of them. I write a proposal and prior to starting your project and will provide you all of the source code and vector assets. I'll work alongside of your team and train staff as needed. And I will not try to reinvent the wheel to avoid recommending viable third-party services.</p>
- </div>
- <div id="service-tab" class="tab-pane fade" role="tabpanel" aria-labelledby="service-tab" tabindex="1">
- <h4 class="how fw-bold">Timely</h4>
- <p>I've learned to take service request with a timeline of 'yesterday' and I always prioritize my existing client needs over new projects. Service is the key to keeping good clients. I'm a stickler for quality and operability. I've likely already built or worked with similar products, so I'm relatively quick and I'll work to find a remedy after a diagnosis is made.</p>
- </div>
- <div id="audit-tab" class="tab-pane fade" role="tabpanel" aria-labelledby="audit-tab" tabindex="2">
- <h4 class="how fw-bold">Careful</h4>
- <p>I will carefully review and critique your existing software, applications, sites and workflow to write up an unbiased detailed report that'll give your team some actionable feedback. I'll provide references and suggestions and I'll either propose a solution or refer elsewhere for assistance.</p>
- <p class="mt-3"><a data-bs-toggle="modal" data-bs-target="#work-rules-modal" href="#work-rules-modal" role="button">Read how I work →</a></p>
- </div>
- <div id="manage-tab" class="tab-pane fade" role="tabpanel" aria-labelledby="manage-tab" tabindex="3">
- <h4 class="how fw-bold">Reliable</h4>
- <p>I provide several basic levels of monthly support based on the scale and maintenance needs of your project. I spend about a quarter of my time managing existing sites and applications. I will recommend each based solely on your project requirements and existing IT infrastructure. Each vendor offers a marketplace of products which can be integrated into your project. I'll keep your computers, sites, and applications up to speed. I'll set up a monthly service agreement with expectations and I'll provide monthly reporting on campaigns.</p>
- </div>
- </div>
- </div>
- </div>
- <!-- ** WORK RULES ** -->
- <div id="work-rules-modal" class="modal fade" tabindex="-1" aria-labelledby="work-rules-modal-label" aria-hidden="true">
- <div class="modal-dialog modal-lg modal-dialog-scrollable">
- <div class="modal-content" style="background:#fff !important;color:#232323;border-radius:6px;">
- <div class="modal-header">
- <h5 class="modal-title" id="work-rules-modal-label">How I Work</h5>
- <button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button>
- </div>
- <div class="modal-body" style="background:#fff !important;padding:1.5rem 2rem !important;">
- <p>Almost half of the work I do each year is project work for private clients while the other half is on contract for agencies and companies. As much as it sounds like fun working from home, freelancing can be a daunting work schedule because of the ups and downs involved with juggling timelines and clients. Most of my work comes from personal referrals. But when they don’t, here are some brief guidelines on how I work.</p>
- <p>1) I prefer to work on one project at a time in order to optimize my output and creative energy. Please check the calendar on my <a href="/about">about page</a> for availability because I try to schedule work up to six months in advance.</p>
- <p>2) Once you’ve contacted me with some minor details, I will schedule an interview to ask questions before providing you with an estimated cost and timeline for your project. If the proposal suits your budget, I’ll ask you to sign an <a href="/contract">Independent Contractor Agreement</a> for the work.</p>
- <p>3) In order to engage high quality clients, I charge a $500 retainer fee up front and I bill $50 per hour for any work delivered. I guarantee client satisfaction on all deliverables and will not bill for any additional hours to meet that goal. However, I will bill for any time spent consulting or training via chat, phone, or email. </p>
- <p>4) I am not a full service advertising agency as I prefer to focus on creative deliverables only. If your project goals are more suited to a full service agency I will gladly recommend one I work with. Likewise, If your project can be filled with a pre-built solution at a lower cost, I will be glad to recommend a solution for you. </p>
- <p>6) I am not interested in partnerships, shares, or equity in your company.</p>
- <p>7) Software and web development will require regular maintenance. I will support anything I build for the lifetime of the project at the same billable hourly rate. Additional features and major updates will be written up as separate contract work. </p>
- <p>8) On rare occasion, I’ve had to outsource project work to other developers under tight deadlines. I try my best not to do so, but I retain a small network of associates who can assist. </p>
- <p>9) I retain the right to reject a project when requests outside the scope of the initial contract misalign the project goals.</p>
- <p>10) I like to love my work and happy clients are what make it possible. If you are in anyway known as difficult to work with, please don’t contact me. </p>
- <p>If all of these make sense to you, please me contact me and let’s get started. </p>
- </div>
- </div>
- </div>
- </div>
- <!-- ** WORK RULES ** -->
- <div class="row py-5 bg-dw-bright bg-opacity-10">
- <div class="col-lg-10 offset-lg-1">
- <div class="row">
- <div class="col-lg-5">
- <h6 class="fw-bold ">Vendors</h6>
- <p class="mb-n2">I keep accounts with these seven vendors and between them, I can purchase and accomplish almost anything. In most cases, I prefer to cut myself out of the middle and register it to your company.</p>
- <div class="btn-group btn-group-toggle" data-toggle="buttons">
- <a href="https://www.apple.com/business/" target="_blank" rel="noopener">
- <img class="vendor-image" alt="Apple Business" src="img/vendor-apple.svg">
- </a>
- <a href="https://azure.microsoft.com/" target="_blank" rel="noopener">
- <img class="vendor-image" alt="Microsoft Azure" src="img/vendor-microsoft.svg">
- </a>
- <a href="https://cloud.google.com" target="_blank" rel="noopener">
- <img class="vendor-image" alt="Google Cloud" src="img/vendor-google.svg">
- </a>
- </div>
- <div class="mt-n5 btn-group btn-group-toggle" data-toggle="buttons">
- <a href="https://aws.amazon.com" target="_blank" rel="noopener">
- <img class="vendor-image" alt="Amazon Web Services" src="img/vendor-amazon.svg">
- </a>
- <a href="https://vercel.com" target="_blank" rel="noopener">
- <img class="vendor-image" alt="Vercel" src="img/vendor-vercel.svg">
- </a>
- <a href="https://linode.com" target="_blank" rel="noopener">
- <img class="vendor-image" alt="Linode" src="img/vendor-linode.svg">
- </a>
- <a href="https://www.akamai.com/" target="_blank" rel="noopener">
- <img class="vendor-image" alt="Akamai" src="img/vendor-akamai.svg">
- </a>
- </div>
- </div>
- <div class="col-lg-7 ps-5">
- <h6 class="fw-bold mt-2">Rates</h6>
- <p>I try to be very fair in my billing. I bill the same rate for all work and I'll log 15 minutes on an invoice. At a rate of $50/hr x 40/wk x 50 wks/yr = $100,000. To hit that goal, I try to stay productive.</p>
- <div class="row pt-3">
- <div class="col-lg-4">
- <h6>Hourly: <b>$50</b></h6>
- <ul class="pricing">
- <li>Design / Develop</li>
- <li>Service / Repair</li>
- <li>Audit / Consult</li>
- <li>Configure / Train</li>
- <li></li>
- </ul>
- </div>
- <div class="col-lg-4">
- <h6>Monthly: <b>$25-250</b></h6>
- <ul class="pricing">
- <li>Management</li>
- <li>Maintenance</li>
- <li>Monitor / Report</li>
- <li>Campaigns</li>
- </ul>
- </div>
- <div class="col-lg-4">
- <h6>Vendor: + <b>10%</b></h6>
- <ul class="pricing">
- <li>Workspace / 365</li>
- <li>CRM / IMS / ERP</li>
- <li>WAF / DBaaS / Storage</li>
- <li>SaaS / APIs / ML</li>
- </ul>
- </div>
- </div>
- </div>
- </div>
- </div>
- </div>
- </div>
- </section>
- <!-- ============================= ** MAIN ** ============================= -->
- </main>
- <!-- ============================= ** REFERENCES ** ============================= -->
- <section id="references" class="references">
- <div class="container">
- <div class="row">
- <div class="col-lg-4 offset-lg-8 my-5 fw-light small">
- References:
- <ol>
- <li><a target="_blank" href="https://en.wikipedia.org/wiki/Devotions_upon_Emergent_Occasions">Donne, John. 1624. <i>Devotions upon Emergent Occasions</i></a></li>
- <li><a target="_blank" href="https://en.wikipedia.org/wiki/Corporate_personhood">Wikipedia. 2022. Corporate Personhood</a></li>
- <li><a target="_blank" href="https://www.merriam-webster.com/dictionary/rabbit%20hole">Merriam Webster. 2022. rabbit hole n.</a></li>
- </ol>
- </div>
- </div>
- </div>
- </section>
- <!-- ============================= ** FOOTER ** ============================= -->
- <daw-footer></daw-footer>
- <script src="js/dw.js"></script>
- <!--
- <script>
- var _paq = window._paq = window._paq || [];
- /* tracker methods like "setCustomDimension" should be called before "trackPageView" */
- _paq.push(["setCookieDomain", "*.davidwindham.com"]);
- _paq.push(['trackPageView']);
- _paq.push(['enableLinkTracking']);
- (function() {
- var u="/wik/";
- _paq.push(['setTrackerUrl', u+'matomo.php']);
- _paq.push(['setSiteId', '5']);
- var d=document, g=d.createElement('script'), s=d.getElementsByTagName('script')[0];
- g.async=true; g.src=u+'matomo.js'; s.parentNode.insertBefore(g,s);
- })();
- </script>
- <noscript><p><img src="/wik/matomo.php?idsite=5&rec=1" style="border:0;" alt="" /></p></noscript>
- -->
- <script src="/embed/chrome.js"></script>
- </body>
- </html>
|