<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>Josh Lambert — Work</title><link>https://joshlambert.xyz/work/</link><description>Selected work from Josh Lambert and his companies: networks, mobile apps, websites, and infrastructure built across Alabama and beyond.</description><language>en-us</language><copyright>© 2026 Josh Lambert</copyright><managingEditor>josh@lambertmail.xyz (Josh Lambert)</managingEditor><webMaster>josh@lambertmail.xyz (Josh Lambert)</webMaster><lastBuildDate>Sat, 15 Aug 2026 17:32:50 +0000</lastBuildDate><atom:link href="https://joshlambert.xyz/work/index.xml" rel="self" type="application/rss+xml"/><item><title>Ti.ModernOneSignal: Updated Push Notifications for Titanium Apps</title><link>https://joshlambert.xyz/work/ti-modernonesignal-updated-push-notifications-for-titanium-apps/</link><guid>https://joshlambert.xyz/work/ti-modernonesignal-updated-push-notifications-for-titanium-apps/</guid><pubDate>Fri, 14 Aug 2026 00:00:00 +0000</pubDate><author>josh@lambertmail.xyz (Josh Lambert)</author><description><![CDATA[<p>Push notifications are the short messages an app places on a phone&rsquo;s lock screen, and for many companies they are the main way customers come back to the app. For years, apps built with <a href="https://titaniumsdk.com" rel="noopener" target="_blank">Titanium</a> sent those messages through <a href="https://onesignal.com" rel="noopener" target="_blank">OneSignal</a>, a popular notification service, using <a href="https://github.com/williamrijksen/com.williamrijksen.onesignal" rel="noopener" target="_blank">a community add-on</a> that everyone shared. That add-on stopped receiving updates in 2020. Phones and developer tools kept changing, and the add-on fell behind. On today&rsquo;s Mac computers it fails outright: an app that uses it will not build at all, which blocks every update the company might want to ship.</p>]]></description><content:encoded><![CDATA[<p>Push notifications are the short messages an app places on a phone&rsquo;s lock screen, and for many companies they are the main way customers come back to the app. For years, apps built with <a href="https://titaniumsdk.com" rel="noopener" target="_blank">Titanium</a> sent those messages through <a href="https://onesignal.com" rel="noopener" target="_blank">OneSignal</a>, a popular notification service, using <a href="https://github.com/williamrijksen/com.williamrijksen.onesignal" rel="noopener" target="_blank">a community add-on</a> that everyone shared. That add-on stopped receiving updates in 2020. Phones and developer tools kept changing, and the add-on fell behind. On today&rsquo;s Mac computers it fails outright: an app that uses it will not build at all, which blocks every update the company might want to ship.</p>
<p>I rebuilt the add-on for today&rsquo;s tools and released the result as <a href="https://github.com/centrevilletech/Ti.ModernOneSignal" rel="noopener" target="_blank">Ti.ModernOneSignal</a>, free and open source. The Apple side now runs on a current version of OneSignal&rsquo;s software, and the Android side is brought up to date as well. I made it a drop-in replacement on purpose. An app that used the old add-on can switch to this one without rewriting any of its own code.</p>
<p>Before releasing it, I tested it the plain way. I ran it on a current iPhone simulator and a current Android emulator and confirmed that notifications arrive and open the way they always did. Version 3.1.0 is <a href="https://github.com/centrevilletech/Ti.ModernOneSignal/releases" rel="noopener" target="_blank">available on GitHub</a> now, ready for any development team to pick up.</p>
<p>Most older apps have aging parts like this one inside them, and sooner or later one of those parts stops the whole project. If your company&rsquo;s app will not build anymore, or a feature has stopped working and the original developers are gone, bring me in. I do this work as a third-party consultant: I find the part that failed, bring it up to date, and get your updates shipping again. <a href="mailto:josh.lambert@centrevilletech.com">Send me an email</a> and tell me where your app is stuck.</p>
]]></content:encoded></item><item><title>Ti.Scrollwatch: A Scrolling Fix for Titanium Android Apps</title><link>https://joshlambert.xyz/work/ti-scrollwatch-a-scrolling-fix-for-titanium-android-apps/</link><guid>https://joshlambert.xyz/work/ti-scrollwatch-a-scrolling-fix-for-titanium-android-apps/</guid><pubDate>Thu, 13 Aug 2026 00:00:00 +0000</pubDate><author>josh@lambertmail.xyz (Josh Lambert)</author><description>&lt;p>Plenty of companies still depend on mobile apps built with &lt;a href="https://titaniumsdk.com" rel="noopener" target="_blank">Titanium&lt;/a>, a tool that lets one team write an app once and run it on both iPhone and Android. Those apps carry an odd weak spot on Android. While a list on the screen is moving, the app has no way to know how far the user has scrolled. It learns where the scroll began and where it ended, and nothing in between. On iPhone the position updates the whole time, so the problem usually stays hidden until customers meet it on Android.&lt;/p></description><content:encoded><![CDATA[<p>Plenty of companies still depend on mobile apps built with <a href="https://titaniumsdk.com" rel="noopener" target="_blank">Titanium</a>, a tool that lets one team write an app once and run it on both iPhone and Android. Those apps carry an odd weak spot on Android. While a list on the screen is moving, the app has no way to know how far the user has scrolled. It learns where the scroll began and where it ended, and nothing in between. On iPhone the position updates the whole time, so the problem usually stays hidden until customers meet it on Android.</p>
<p>That missing information matters more than it sounds. It is what lets an app pin a date or section label to the top of a list, the way a calendar or news feed does. It is also what tells an app to load more items before the reader reaches the bottom. Without it, labels show the wrong section and feeds stall. Development teams usually patch around the gap with guesswork, and the guesses break whenever the content changes.</p>
<p>I built Ti.Scrollwatch to close that gap, and I released it free of charge. It is a small add-on that reports the true scroll position straight from Android itself, the moment it changes. It is open source, it works with current versions of Titanium, and a development team can <a href="https://github.com/centrevilletech/Ti.Scrollwatch" rel="noopener" target="_blank">download it from GitHub</a> and have it running in an app the same day.</p>
<p>The module went straight into real use. A nursing home chain runs a Titanium app that shows each home&rsquo;s activity calendar, the daily list of events and activities for residents and their families. On Android, the date at the top of that calendar could not keep up with the list. With Ti.Scrollwatch in place it stays pinned and correct while the list moves, and the Android app now matches the iPhone app exactly. The short recording below shows it working.</p>
<figure class="video-figure" style="max-width: 420px">
    <video controls muted loop playsinline preload="metadata" poster="/images/posts/ti-scrollwatch-a-scrolling-fix-for-titanium-android-apps/activity-calendar-poster_hu_d716ac1724bea3f0.webp" aria-label="Screen recording of an Android phone scrolling through an activity calendar, while the header for each day stays pinned at the top of the list.">
      <source src="https://joshlambert.xyz/videos/ti-scrollwatch-activity-calendar.mp4" type="video/mp4">
    </video><figcaption>The activity calendar on Android, with each day&#39;s header holding its place as the list scrolls.</figcaption></figure>
<p>If your company has an app with a problem like this one, bring me in. I work as a third-party consultant alongside your team or on my own, and this is the shape the work takes: find the real cause, fix it, and leave your people able to carry on without me. <a href="mailto:josh.lambert@centrevilletech.com">Send me an email</a> and tell me what your app is doing wrong.</p>
]]></content:encoded></item><item><title>Small Church, Big Website</title><link>https://joshlambert.xyz/work/small-church-big-website/</link><guid>https://joshlambert.xyz/work/small-church-big-website/</guid><pubDate>Sat, 08 Aug 2026 00:00:00 +0000</pubDate><author>josh@lambertmail.xyz (Josh Lambert)</author><description><![CDATA[<p>At the corner of Oak and Plowman in Montevallo, Alabama, stands the third <a href="https://standrewsmontevallo.org/" rel="noopener" target="_blank">St. Andrew’s Episcopal Church</a> that town has known. The parish has worshiped there since 1860. A tornado tore the first building down in 1873. A storm took the second in 1939. Both times the people grieved, gathered, and built again.</p>
<p>I serve on the vestry at St. Andrew’s, so this client was my own church. I was not building for a stranger’s brand guide. I was building for the room where I kneel on Sunday.</p>]]></description><content:encoded><![CDATA[<p>At the corner of Oak and Plowman in Montevallo, Alabama, stands the third <a href="https://standrewsmontevallo.org/" rel="noopener" target="_blank">St. Andrew’s Episcopal Church</a> that town has known. The parish has worshiped there since 1860. A tornado tore the first building down in 1873. A storm took the second in 1939. Both times the people grieved, gathered, and built again.</p>
<p>I serve on the vestry at St. Andrew’s, so this client was my own church. I was not building for a stranger’s brand guide. I was building for the room where I kneel on Sunday.</p>
<p><figure>
    <a class="zoom" href="https://joshlambert.xyz/images/posts/small-church-big-website/hero_hu_c6e6cfa3ae06830b.webp" aria-label="View larger image">
      <img src="https://joshlambert.xyz/images/posts/small-church-big-website/hero_hu_fa12b91ef4504b3e.webp" width="1200" height="657"
           alt="The St. Andrew’s homepage: a photograph of the congregation in the nave under wooden roof beams, framed in thin gold, with the words “Small Church, Big Joy.” in gold capitals above a purple Plan Your Visit button." loading="lazy" decoding="async">
    </a></figure></p>
<h3 id="the-problem-a-church-nobody-could-find">The problem: a church nobody could find</h3>
<p>Here is the hard truth for churches today, and it is the same truth every small business lives with. People do not find you by driving past anymore. They type a question into Google, or they ask an AI assistant, and whatever comes back becomes their short list. If you are not in that answer, you never get the visit. It makes no difference how warm your welcome is. It is the same problem I solved for <a href="https://joshlambert.xyz/work/the-picture-was-never-the-problem/">a Nashville dealmaker</a> with forty years of accomplishments that search engines simply could not see.</p>
<p>St. Andrew’s had a big welcome and a quiet website. It ran on a default WordPress theme that looked like a default WordPress theme: pink links on a cream page, tiny photos you could not click to enlarge, and a line of text reading “Last Updated: 9/18/2024” typed in by hand. It said very little about the parish, so Google and the AI assistants had very little to repeat. A church that had been rebuilt twice from rubble was invisible in the place where people actually look.</p>
<h3 id="first-make-it-look-like-the-church-it-is">First, make it look like the church it is</h3>
<p>The rebuild started with the feel of the thing. Walk into St. Andrew’s and you see brick, wood, candlelight, and stained glass. The website now looks like that too: warm parchment, deep blue, and real gold. The headings are set in letters shaped like old Roman carving. Photos sit inside golden Gothic arches. At the top of every page, in small italic type, is the greeting you would hear on Sunday: “The Lord be with you.”</p>
<p><figure>
    <a class="zoom" href="https://joshlambert.xyz/images/posts/small-church-big-website/story-section_hu_e6f1487edc69f7d9.webp" aria-label="View larger image">
      <img src="https://joshlambert.xyz/images/posts/small-church-big-website/story-section_hu_c1042ab4ba2b49f4.webp" width="1200" height="1008"
           alt="The homepage history section: a parchment background, a deep red heading reading A Parish Made and Remade, the 1939 quote from the Bishop of Alabama, and a photo of the altar inside a gold arch." loading="lazy" decoding="async">
    </a></figure></p>
<p>Even the big title on the homepage glows with a slow, gentle pulse. The note I left in the code says what I was after: candlelight, not a neon sign.</p>
<p>This matters for more than looks. A default theme tells a visitor “this is a placeholder.” A beautiful one tells them “real people care about this place.” That is brand, and churches have one whether they tend it or not.</p>
<h3 id="then-say-welcome-out-loud">Then, say welcome out loud</h3>
<p>The words got the same care as the colors. The whole site is written to the person who has never been inside, in plain language. The homepage tells the storm story straight, including the bishop who looked at the 1939 wreckage and called it a complete loss, because this parish preaches that ruin is never the final word, and it has the history to back that up.</p>
<p><figure>
    <a class="zoom" href="https://joshlambert.xyz/images/posts/small-church-big-website/worship-panel_hu_c405057b89c8c866.webp" aria-label="View larger image">
      <img src="https://joshlambert.xyz/images/posts/small-church-big-website/worship-panel_hu_5a39dea2cc5440b5.webp" width="1200" height="774"
           alt="The Holy Eucharist section: a deep blue panel with a photo of open hands, a gold heading, a warm invitation in italic type, and the Sunday schedule ruled with thin gold lines." loading="lazy" decoding="async">
    </a></figure></p>
<p>Then the site answers the questions a first-timer is actually nervous about. What should I wear? When do I stand? What happens at the rail? Will my kids be shushed? Six cards answer them one by one. The card about children ends with a line I love: “Young ones are not merely tolerated here. They are welcome.”</p>
<p><figure>
    <a class="zoom" href="https://joshlambert.xyz/images/posts/small-church-big-website/expect-medallions_hu_82c8715a6d444048.webp" aria-label="View larger image">
      <img src="https://joshlambert.xyz/images/posts/small-church-big-website/expect-medallions_hu_aa99da2e01e20618.webp" width="1200" height="1335"
           alt="Six parchment cards under the heading What to Expect, each with a photo and a short answer: Walk In Whoever You Are, Pray the Ancient Words, Kneel Together, Play Together, Linger Over Coffee, and Serve Together." loading="lazy" decoding="async">
    </a></figure></p>
<p>Hold onto that line about children. It comes back at the end of this story.</p>
<h3 id="a-map-with-a-little-joy-in-it">A map with a little joy in it</h3>
<p>St. Andrew’s keeps a food box on the sidewalk in front of the church. Anyone can take what they need, any hour, no forms and no questions. Neighbors keep more boxes stocked in Bibb County. The old site never mentioned any of it.</p>
<p>The new site gives the food boxes a page and a real map, dressed in the parish colors. The pins are gold. The St. Andrew’s pin is royal purple with a soft pulsing halo, and its card pops open on its own so the church reads as home base. Tap any pin and it gives a happy little hop, then offers turn-by-turn directions.</p>
<p><figure>
    <a class="zoom" href="https://joshlambert.xyz/images/posts/small-church-big-website/pantry-map_hu_dfc7769aabfde682.webp" aria-label="View larger image">
      <img src="https://joshlambert.xyz/images/posts/small-church-big-website/pantry-map_hu_f6ed9771b44c6f98.webp" width="1200" height="882"
           alt="The food pantry map: a parchment-toned map with numbered gold pins, the St. Andrew’s pin in purple, and an open card for the sidewalk food box reading “Out front at the sidewalk, any day, any time,” with a Get Directions link." loading="lazy" decoding="async">
    </a></figure></p>
<p>That little hop is the kind of touch most projects skip. It is also the kind people remember. And for anyone whose body disagrees with motion, every animation on the site shuts off when their device asks for calm.</p>
<h3 id="show-the-people-because-people-are-the-draw">Show the people, because people are the draw</h3>
<p>The old site’s numbers told me something useful: after the homepage, the most-read pages were the staff bios. People research people before they visit a church. So every leader got a real portrait and a real story, the kind of things you would learn over coffee in the parish hall.</p>
<p><figure>
    <a class="zoom" href="https://joshlambert.xyz/images/posts/small-church-big-website/leadership_hu_ef19067da5a59d6e.webp" aria-label="View larger image">
      <img src="https://joshlambert.xyz/images/posts/small-church-big-website/leadership_hu_36c9a9ec1ef97d70.webp" width="1200" height="800"
           alt="The Leadership page: a gold title over a photo of the church interior, with an introduction reading “We are a small parish, which means the people here are not a distant staff directory,” above a grid of portraits." loading="lazy" decoding="async">
    </a></figure></p>
<p>A new photo gallery does the same work. Egg hunts, choir Sundays, an outdoor Mass in the pines with a picnic after. It looks like what it is: a family album.</p>
<p><figure>
    <a class="zoom" href="https://joshlambert.xyz/images/posts/small-church-big-website/gallery_hu_ebc44b0dbd3ebb9.webp" aria-label="View larger image">
      <img src="https://joshlambert.xyz/images/posts/small-church-big-website/gallery_hu_ef4e05e6930f3ea.webp" width="1200" height="800"
           alt="The Parish Life gallery: a section titled Mass in the Pines with photos of an outdoor service, children sitting on pine straw for the sermon, and two congregations sharing a long picnic table." loading="lazy" decoding="async">
    </a></figure></p>
<p>I also made sure the site works for every body. Every page passes the international accessibility standard with zero errors, so screen readers, keyboards, and low-vision visitors all get the full welcome. A church that says everyone is welcome should be able to prove it.</p>
<h3 id="finally-make-sure-the-world-knows-you-exist">Finally, make sure the world knows you exist</h3>
<p>Then came the quiet work that decides whether any of the above ever gets seen.</p>
<p>Every page title now says Montevallo, so the site can show up when a neighbor searches for a church near them. The service time and street address sit in the first screenful of every page. Old links from bulletins and Facebook posts all forward to the right new page, so nothing anyone ever shared went dead. And the site speaks directly to machines as well as people: a plain summary of the parish sits at the special address AI assistants check, and every page carries data in the format Google and the chatbots quote from. When someone asks an assistant about churches in Montevallo, St. Andrew’s now has an answer on file. I have watched this work before: after the same treatment, Google, ChatGPT, and the other assistants started naming <a href="https://joshlambert.xyz/work/the-contractor-the-machines-could-not-name/">a small Alabama tower contractor</a> at or near the top of their answers.</p>
<p>Honesty about the starting line mattered, too. The old analytics claimed 178 visitors a month. About half were bots. I stripped them out and wrote down the real number, because a number you flatter is a number you cannot improve. Within weeks the site sat in the top three Google results for its own name, with a clear definition of what counts as a win: a direction request, a phone call, a visit.</p>
<p><figure>
    <a class="zoom" href="https://joshlambert.xyz/images/posts/small-church-big-website/mobile-two-up_hu_2e36ad9b590e0d16.webp" aria-label="View larger image">
      <img src="https://joshlambert.xyz/images/posts/small-church-big-website/mobile-two-up_hu_5f385ffdf22a3e76.webp" width="1200" height="871"
           alt="Two phone screens side by side: the homepage with the gold Small Church Big Joy title and purple Plan Your Visit button, and the Food Pantries page reading “Free food, any hour, any day, for anyone who needs it.”" loading="lazy" decoding="async">
    </a></figure></p>
<h3 id="one-week-later">One week later</h3>
<p>Here is the part that makes all of it worth telling.</p>
<p>One week after the new site went live, St. Andrew’s welcomed its first new guest in a good while. They had found the website. What decided them was not the gold leaf or the map. It was the words about families, the promise that children are not merely tolerated but welcome. They read that and decided on the spot that this was where they wanted to be on Sunday. And on Sunday, there they were.</p>
<p>That is the whole case for doing this work. Churches, like businesses, are trying to be found in a world full of noise. The welcome was always real. The building was always open. What changed is that a stranger with a question could finally find the answer, and the answer sounded like the people who wrote it. I suspect that being findable, by search engines and AI assistants alike, will be the catalyst for growth at St. Andrew’s for years to come.</p>
<p><strong>The site is live at <a href="https://standrewsmontevallo.org/" rel="noopener" target="_blank">standrewsmontevallo.org</a>.</strong> Come and see.</p>
<p>Does your church, ministry, or small organization have a story worth finding and a website that hides it? I would love to help. <a href="mailto:josh.lambert@centrevilletech.com">Drop me an email and let’s talk about it</a>.</p>
]]></content:encoded></item><item><title>The Picture Was Never the Problem</title><link>https://joshlambert.xyz/work/the-picture-was-never-the-problem/</link><guid>https://joshlambert.xyz/work/the-picture-was-never-the-problem/</guid><pubDate>Fri, 31 Jul 2026 00:00:00 +0000</pubDate><author>josh@lambertmail.xyz (Josh Lambert)</author><description><![CDATA[<p>Nashville runs on introductions, and for forty years <a href="https://markacleveland.com/" rel="noopener" target="_blank">Mark Cleveland</a> has been one of the people the introductions run through.</p>
<p>He helped start a barge line between Texas and Florida. He built Hobby Express and sold it. He co-founded <a href="https://www.swiftwick.com/" rel="noopener" target="_blank">Swiftwick</a> and proved you could still make a first-rate athletic sock in Tennessee. Then he built Hytch Rewards and spent years trying to talk Middle Tennessee out of driving to work alone. Six companies started from scratch and sold. More than fifty million dollars raised. Something like five thousand people in his phone.</p>]]></description><content:encoded><![CDATA[<p>Nashville runs on introductions, and for forty years <a href="https://markacleveland.com/" rel="noopener" target="_blank">Mark Cleveland</a> has been one of the people the introductions run through.</p>
<p>He helped start a barge line between Texas and Florida. He built Hobby Express and sold it. He co-founded <a href="https://www.swiftwick.com/" rel="noopener" target="_blank">Swiftwick</a> and proved you could still make a first-rate athletic sock in Tennessee. Then he built Hytch Rewards and spent years trying to talk Middle Tennessee out of driving to work alone. Six companies started from scratch and sold. More than fifty million dollars raised. Something like five thousand people in his phone.</p>
<p>These days he advises founders who are getting ready to buy a company, sell one, or grow into the next thing. That work runs on trust, and trust runs on who knows you.</p>
<p>Which is exactly where the trouble starts.</p>
<p>Everyone inside Mark’s circle knows precisely who he is. Nobody outside it can find out.</p>
<p>Picture a founder in Chattanooga. He has put nineteen years into his company. His wife thinks this might be the year to sell. He does not have Mark’s number, and he does not know anyone who does. So he does what all of us do now. He types a question into Google, or he asks an assistant. Whatever comes back becomes his short list, and he calls two or three of those names.</p>
<p>If Mark is not in that answer, Mark never gets the call. It makes no difference how good he is.</p>
<h3 id="the-picture-was-never-the-problem">The picture was never the problem</h3>
<p>Mark’s old website was not ugly. That is exactly why it is worth showing you.</p>
<p><figure>
    <a class="zoom" href="https://joshlambert.xyz/images/posts/the-picture-was-never-the-problem/before-and-after_hu_d541016787dae5.webp" aria-label="View larger image">
      <img src="https://joshlambert.xyz/images/posts/the-picture-was-never-the-problem/before-and-after_hu_21414fd28c074a6a.webp" width="1200" height="444"
           alt="Two versions of the same home page, side by side and labelled Before and After. On the left, the old site as the Internet Archive kept it in February 2026. On the right, the rebuild. Both show the headline “Build Aligned. Unleash Potential.” over a photograph of Mark in a navy jacket, above a row of numbers reading 5K&#43; business relationships, 6 companies sold, and $50M&#43; capital raised." loading="lazy" decoding="async">
    </a></figure></p>
<p>The old one is on the left, saved by the Internet Archive last February. The new one is on the right. Set side by side, you would be hard pressed to say which is better. The work that mattered here does not show up in a screenshot.</p>
<p>It had a good photo of Mark. It had a clean headline. Somebody with taste had clearly worked on it. And it was costing him business every week, for reasons nobody looking at it could see.</p>
<p>The page listed six ways to hire him. Each one was a card with a title and a little icon, and that was all you got. The sentence telling you what the service actually did was hidden on the back of the card. You had to hover your mouse over it to flip it around. On a phone, most people never found it at all.</p>
<p>Thirty-three photographs sat on that page and not one of them had a description attached. A person looking at the page saw Mark. Anything reading it saw thirty-three blanks.</p>
<p>Buried in the page was a short summary written for search engines, which is a normal thing to have. Mark’s described his life’s work in four phrases: “multiple company exits with significant value creation,” “recognized Nashville business superconnector,” and two more just like them. Nothing anybody could check. Meanwhile the man has a Governor’s award with a year on it, and that summary never mentioned it.</p>
<p>The footer still said 2025. More than a megabyte of code arrived before the first photograph did. And the whole thing sat on WordPress, where something always needs updating on a morning you have better things to do.</p>
<p>Worst of all, the page never came out and said what Mark does. Search engines and AI assistants read a page looking for exactly that. His did not say it, so they had nothing to repeat.</p>
<h3 id="say-the-work-out-loud">Say the work out loud</h3>
<p>We started by saying, in ordinary English, what somebody is actually buying, and putting it where a reader will meet it.</p>
<p><figure>
    <a class="zoom" href="https://joshlambert.xyz/images/posts/the-picture-was-never-the-problem/engagement-cards_hu_b51d005c82a90d69.webp" aria-label="View larger image">
      <img src="https://joshlambert.xyz/images/posts/the-picture-was-never-the-problem/engagement-cards_hu_8946e44c6b8f696d.webp" width="1200" height="1005"
           alt="Six cards on a navy background, each with a photo behind it, a title, a one-line promise, and a short paragraph: AI assessment and work plan, Organizational change assessment, Innovation operating system, Market research, Cost containment, and Rolling valuation analysis." loading="lazy" decoding="async">
    </a></figure></p>
<p><a href="https://markacleveland.com/#work" rel="noopener" target="_blank">Six ways in</a>, and now you can read all of them without touching anything. Cost containment hunts down wasted spend and turns it back into profit. Rolling valuation tells you what your company is worth today and what would move that number. Market research tells you who is really buying and who is not.</p>
<p>A founder reading those knows in ten seconds whether he has that problem. So does a search engine. So does an assistant summarizing the page for somebody who will never visit it.</p>
<p>The section ends with a conversation instead of a form.</p>
<p><figure>
    <a class="zoom" href="https://joshlambert.xyz/images/posts/the-picture-was-never-the-problem/talk-to-mark_hu_eab1b7c27dc89bb2.webp" aria-label="View larger image">
      <img src="https://joshlambert.xyz/images/posts/the-picture-was-never-the-problem/talk-to-mark_hu_2fba3f8a2fa935e.webp" width="1200" height="496"
           alt="A card near the bottom of the home page: a round photo of Mark above text saying six companies built and sold and more than $50 million raised mean one conversation is usually enough to surface the question your plan hasn’t answered yet, with a blue Talk to Mark button." loading="lazy" decoding="async">
    </a></figure></p>
<p>Read the last line of it: “And if he’s not the right help, he’ll say so and point you to someone who is.”</p>
<p>Every advisor on earth promises to be a good fit. Almost none of them will say out loud what happens when they are not. Saying it is worth more than another paragraph of credentials, because it answers the question a nervous founder is actually asking.</p>
<h3 id="the-proof-was-already-there">The proof was already there</h3>
<p>Nearly everyone we work with has this problem, and Mark had it badly. His proof was already sitting on that website. It simply was not reaching anybody.</p>
<p><figure>
    <a class="zoom" href="https://joshlambert.xyz/images/posts/the-picture-was-never-the-problem/awards-page_hu_7669e5e80a30f637.webp" aria-label="View larger image">
      <img src="https://joshlambert.xyz/images/posts/the-picture-was-never-the-problem/awards-page_hu_fe66fde5e1cbb565.webp" width="1200" height="750"
           alt="The Awards and Achievements page: a photo of Mark accepting the NEXT Award beside a long list of honors, each with its year, including Most Admired CEO at both Hobby Express and Swiftwick." loading="lazy" decoding="async">
    </a></figure></p>
<p><a href="https://markacleveland.com/awards-achievements-page/" rel="noopener" target="_blank">Thirty-four awards and honors</a>, every one named and dated. In Charge for transportation and logistics, three years running. Most Admired CEO from the Nashville Business Journal, three separate times at three different companies, which is far harder than winning it once. The Governor’s award for clean air. The Governor’s award for export trade. Rotarian of the Year, twice, twenty years apart.</p>
<p>All of that was sitting on the old site as two long bulleted lists. We gave it a page you can actually read, put the photograph of him accepting the NEXT Award beside it, and fed those real award names and real years into the part of the page search engines read, replacing the four fuzzy phrases that had been standing in for them.</p>
<p><figure>
    <a class="zoom" href="https://joshlambert.xyz/images/posts/the-picture-was-never-the-problem/endorsements-band_hu_469455bd60518840.webp" aria-label="View larger image">
      <img src="https://joshlambert.xyz/images/posts/the-picture-was-never-the-problem/endorsements-band_hu_e1c95127965c52e0.webp" width="1200" height="1128"
           alt="The endorsements section: nine quote cards, each with a photograph of the person, their job title, and a small LinkedIn badge that links to their profile." loading="lazy" decoding="async">
    </a></figure></p>
<p>Same story with the <a href="https://markacleveland.com/endorsements/" rel="noopener" target="_blank">endorsements</a>. Nine serious people had already written glowing things about him and signed their names to them. The CEO of Leap Partners. The COO of StyleBlueprint. A managing director at Accenture. The CEO of Becker Logistics. One of them, David Gerber, writes: “He does exactly what he says he’ll do, even when it’s hard, and that matters more than any skill set.”</p>
<p>All of it was buried at the bottom of a long page most visitors never scrolled to. Now it has its own page, and the strongest three ride along on the home page where a first-time visitor meets them. Every card keeps the face, the job title, and the link to that person’s real profile, so a stranger can leave the page and confirm it.</p>
<p><figure>
    <a class="zoom" href="https://joshlambert.xyz/images/posts/the-picture-was-never-the-problem/press-page_hu_ac287ac314746cbf.webp" aria-label="View larger image">
      <img src="https://joshlambert.xyz/images/posts/the-picture-was-never-the-problem/press-page_hu_d46b7a1ededc3888.webp" width="1200" height="750"
           alt="The Press page, showing a clipping from The Tennessean with the headline “Nashville area drivers want less traffic congestion. Here’s how to fix it within 5 years,” its date, and a summary." loading="lazy" decoding="async">
    </a></figure></p>
<p><a href="https://markacleveland.com/press/" rel="noopener" target="_blank">Press</a> works the same way. Real outlets, real dates, links that send you off the site to the article itself. None of it is Mark’s opinion of Mark, which is the entire value of it.</p>
<h3 id="then-let-people-meet-the-man">Then let people meet the man</h3>
<p>Credentials get you onto the short list. What gets you the call is somebody deciding they would like to sit across a table from you, and that is written in a completely different voice.</p>
<p><figure>
    <a class="zoom" href="https://joshlambert.xyz/images/posts/the-picture-was-never-the-problem/bio-photo-band_hu_b3449f4bf18d4e64.webp" aria-label="View larger image">
      <img src="https://joshlambert.xyz/images/posts/the-picture-was-never-the-problem/bio-photo-band_hu_b14f243e4df95000.webp" width="1200" height="730"
           alt="A section of the bio page: text about Mark’s early work in satellite systems and a barge line, next to a photo of him scuba diving over a reef, captioned “Same rules at depth: trust the team, watch the gauges.”" loading="lazy" decoding="async">
    </a></figure></p>
<p>So the <a href="https://markacleveland.com/bio/" rel="noopener" target="_blank">bio</a> became a story told in chapters, each with a real photograph and a caption. Mark diving. Mark at his podcast desk. Mark at the office. Mark speaking to a Rotary room. None of it is stock photography. Read the captions, too: “Every deal is a handshake with somebody’s life’s work.”</p>
<p>The line the whole page turns on is his own. “I’ve never been particularly interested in building an empire. I’m much more interested in building ecosystems.”</p>
<p>He also hosts <a href="https://parallelentrepreneur.com/" rel="noopener" target="_blank">The Parallel Entrepreneur</a>, where he interviews founders who are running more than one venture at a time, so the three latest episodes now sit on the home page as well. It is the same argument in audio: here is a real person, at length, thinking out loud.</p>
<p>Not one word of that ranks for a search term. All of it is why somebody picks up the phone.</p>
<h3 id="built-to-be-found-and-to-stay-found">Built to be found, and to stay found</h3>
<p>The rest is plumbing. Dull to describe, and it decides whether anything above ever gets seen.</p>
<p>Every page now tells search engines and AI assistants, in a format made for them, who Mark is, what he has won, and what he offers. We did the same thing for a tower contractor in Alabama last spring, and you can read <a href="https://joshlambert.xyz/work/the-contractor-the-machines-could-not-name/">how that turned out</a>, because Google, ChatGPT, Claude, and Grok all name that company at or near the top now. There is a plain summary of his whole career sitting at an address the AI crawlers look for, so an assistant answering a question about Nashville dealmakers has something accurate to quote. The site also tells those crawlers plainly that they are welcome, instead of leaving them to guess.</p>
<p>Every web address survived the move exactly as it was, so no link anybody has ever shared or printed went dead. Small thing to get right. Skipping it is the most common way a redesign wipes out years of accumulated search rankings overnight.</p>
<p>The site loads in about a tenth of a second, and there is no longer a piece of software sitting under it that needs patching on a morning Mark has a deal to close. And because half the world reads standing up, the phone got the same attention as the desk. Those six service cards, hidden behind a hover in the old version, sit wide open on a phone.</p>
<p><figure>
    <a class="zoom" href="https://joshlambert.xyz/images/posts/the-picture-was-never-the-problem/mobile-two-up_hu_12bbdd60ffcf9c9b.webp" aria-label="View larger image">
      <img src="https://joshlambert.xyz/images/posts/the-picture-was-never-the-problem/mobile-two-up_hu_2d66771f4efb63c0.webp" width="1200" height="850"
           alt="Two phone screens side by side: the home page with Mark’s photo and his numbers, and the service cards fully open on mobile with all their text showing." loading="lazy" decoding="async">
    </a></figure></p>
<h3 id="where-it-stands">Where it stands</h3>
<p>The site went live on the eleventh of July, and three weeks is nothing. Rankings move slowly and citations inside AI assistants move slower still. So take what follows as a progress report.</p>
<p>What can be said already: search a phrase like Nashville dealmaker and parallel entrepreneur, and both his home page and his bio come back, and the summary attached to them is built out of the new bio’s own sentences. Words written in July are already being read back to strangers.</p>
<p>Being quoted is not the same as being hired. The real scoreboard is the contact form, and that one moves on a slower clock.</p>
<h3 id="if-any-of-this-sounds-like-you">If any of this sounds like you</h3>
<p>You have probably built something real. Maybe you have run companies, or sold one, or spent thirty years becoming the person everybody in your industry calls. The people who already know you have no doubts about you at all.</p>
<p>The problem is everybody else.</p>
<p>The buyer who has never met you, the board looking for a new director, the founder trying to decide who to trust with the biggest decision of his life: all of them start the same way now, by <a href="https://joshlambert.xyz/blog/an-open-letter-to-wispa-were-losing-the-ai-search-war-and-were-helping-the-other-side-win/">asking a machine</a>. What that machine says about you is decided by what your website is willing to state plainly, and by whether a stranger can check it.</p>
<p>Most good people have a website that is prettier than it is useful. It has a nice photo and says almost nothing. Meanwhile the proof of an entire career sits in a drawer, on a LinkedIn profile nobody reads twice, or in the heads of people who are too busy to introduce you. People remember what they can see, which is an argument I have made <a href="https://joshlambert.xyz/blog/build-monuments-or-be-forgotten/">about towers</a> and which turns out to be just as true of a career.</p>
<p>Getting that written down is the work. At <a href="https://centrevilletech.com/" rel="noopener" target="_blank">Centreville Tech</a> we build personal brands and websites for people who have earned one: the story told properly, the proof laid out where a stranger can check it, the photographs that make you look like a person instead of a headshot, and the technical work underneath that puts all of it in front of the search engines and the assistants people ask now.</p>
<p>Have a look at <a href="https://markacleveland.com/" rel="noopener" target="_blank">what we built Mark</a>, including the page where a stranger can now <a href="https://markacleveland.com/contact/" rel="noopener" target="_blank">simply call him</a>. Then <a href="mailto:josh.lambert@centrevilletech.com">send me an email</a> and tell me what you have built. If I am not the right help, I will say so and point you to someone who is.</p>
]]></content:encoded></item><item><title>The Contractor the Machines Could Not Name</title><link>https://joshlambert.xyz/work/the-contractor-the-machines-could-not-name/</link><guid>https://joshlambert.xyz/work/the-contractor-the-machines-could-not-name/</guid><pubDate>Thu, 30 Jul 2026 00:00:00 +0000</pubDate><author>josh@lambertmail.xyz (Josh Lambert)</author><description><![CDATA[<p>Tower work has always been sold in hallways. An operator at a trade show gets a name from the fellow two counties over, writes a number on the back of a card, and calls it fourteen months later when the grant money lands. That is how <a href="https://vertical-axis.com/" rel="noopener" target="_blank">Vertical Axis</a> has been hired since 2018, and it worked: better than three hundred wireless providers by the company&rsquo;s own count, thousands of sites, crews in Alabama and Texas, one project standing 690 feet in the air.</p>]]></description><content:encoded><![CDATA[<p>Tower work has always been sold in hallways. An operator at a trade show gets a name from the fellow two counties over, writes a number on the back of a card, and calls it fourteen months later when the grant money lands. That is how <a href="https://vertical-axis.com/" rel="noopener" target="_blank">Vertical Axis</a> has been hired since 2018, and it worked: better than three hundred wireless providers by the company&rsquo;s own count, thousands of sites, crews in Alabama and Texas, one project standing 690 feet in the air.</p>
<p>The trouble with a hallway is that only so many people fit in it, and none of them are the county emergency manager three states away with money and a coverage gap. In 2019 he would have asked around. This year he opens an assistant and types something close to: who can build a 300-foot self-support tower in west Texas and do the radio install. Whatever comes back is his shortlist, and there is a fair chance he never sees a page of search results at all. An answer engine cannot repeat a conversation it was not in, and a company that has never written down what it does is, to that machine, a company that does not do anything. Vertical Axis had eight years of work behind it and a Facebook page in front of it.</p>
<p><figure>
    <a class="zoom" href="https://joshlambert.xyz/images/posts/the-contractor-the-machines-could-not-name/vertical-axis-home_hu_ac3c073a41bafecf.webp" aria-label="View larger image">
      <img src="https://joshlambert.xyz/images/posts/the-contractor-the-machines-could-not-name/vertical-axis-home_hu_d2f831fd01898eac.webp" width="1200" height="833"
           alt="The Vertical Axis home page: the headline “We build the towers that build networks.” in white and yellow on black, over a drone view of a crane beside a lattice tower." loading="lazy" decoding="async">
    </a></figure></p>
<h3 id="specific-enough-to-be-quoted">Specific enough to be quoted</h3>
<p>Nothing vague ever gets quoted. &ldquo;Full-service tower solutions from the ground up&rdquo; is on a banner in every booth at the show, and it is worth nothing to a machine answering a real question, because it matches everybody and therefore nobody.</p>
<p>So the first weeks went into pinning down what is actually true, and the corrections ran in an unexpected direction. Marketing copy drifts upward on its own, and every claim we drafted came back from CEO Kelly Zacrep smaller. The lasers went first. &ldquo;Bringing the lasers out is last ditch effort,&rdquo; Kelly said, so laser alignment stopped being advertised and the total station took its place. There is no sweep analyzer in the trucks, so VSWR is now described as a check through the radio&rsquo;s own diagnostics. No OTDRs, so fiber verification is a light source and power meter. No spectrum analyzers, no yard, and no licensed RF engineers on staff, so the <a href="https://vertical-axis.com/services/site-design/" rel="noopener" target="_blank">site design page</a> says a partner firm is brought in when a stamp is required.</p>
<p>None of that makes the company sound bigger. All of it is why the company can be cited. A false claim is worse than a vague one, because the machine will repeat it right up to the site walk where it falls apart, and getting vouched for and then disqualified is how you lose a customer you never had.</p>
<p><figure>
    <a class="zoom" href="https://joshlambert.xyz/images/posts/the-contractor-the-machines-could-not-name/direct-embedment-monopoles_hu_9f7986e0788db0be.webp" aria-label="View larger image">
      <img src="https://joshlambert.xyz/images/posts/the-contractor-the-machines-could-not-name/direct-embedment-monopoles_hu_4e8b1a6b891b70dd.webp" width="1200" height="1658"
           alt="The Direct Embedment Monopoles page: hero headline over a stats band reading one day, 60 to 120 feet, 10 to 15 percent embedded, lower 48, above a checklist of what the build includes." loading="lazy" decoding="async">
    </a></figure></p>
<p>What replaced the banner language sounds like a foreman talking. A <a href="https://vertical-axis.com/services/direct-embedment-monopoles/" rel="noopener" target="_blank">direct embedment monopole</a> has no spread footing: the embedded steel, ten to fifteen percent of the pole&rsquo;s height, carries the overturning moment through passive earth pressure. Which matters for one reason, and the page leads with it. Four to six weeks of foundation and cure becomes one to three days from auger rig to backfill. Across fifty sites on a grant schedule, that moves somebody&rsquo;s whole program up a season. Fifteen service pages were written to that standard.</p>
<h3 id="nobody-searches-for-a-tower-contractor">Nobody searches for a tower contractor</h3>
<p>Buyers do not search for what a vendor sells. They search for what is wrong with their own week, and the words differ in every corner of this market. A utility manager is thinking about SCADA backhaul and grounding spec. A county is thinking about a 4.9 GHz ring. A tribal broadband office is thinking about NTIA deliverables and reporting deadlines. A WISP owner is thinking about margins, and about not being billed carrier rates to hang prosumer gear.</p>
<p><figure>
    <a class="zoom" href="https://joshlambert.xyz/images/posts/the-contractor-the-machines-could-not-name/services-catalog_hu_531c1562fefb112f.webp" aria-label="View larger image">
      <img src="https://joshlambert.xyz/images/posts/the-contractor-the-machines-could-not-name/services-catalog_hu_f5fecbf0f944dbfb.webp" width="1200" height="1767"
           alt="The Vertical Axis services catalog: fifteen photographed service cards under a search box and category filters, grouped into Construction, RF &amp; Equipment, and Service &amp; Maintenance." loading="lazy" decoding="async">
    </a></figure></p>
<p>So the site is two grids that cross. Fifteen services describe the work the way a crew divides it; <a href="https://vertical-axis.com/industries/wisp/" rel="noopener" target="_blank">six industry pages</a> describe the same company in each buyer&rsquo;s vocabulary, linked to each other in both directions. <a href="https://vertical-axis.com/industries/oil-and-gas/" rel="noopener" target="_blank">Oil and gas</a>, <a href="https://vertical-axis.com/industries/public-safety/" rel="noopener" target="_blank">public safety</a>, <a href="https://vertical-axis.com/industries/tribal-nations/" rel="noopener" target="_blank">tribal nations</a>, and <a href="https://vertical-axis.com/industries/municipal-broadband/" rel="noopener" target="_blank">municipal broadband</a> are not one template four times. They are the same trade explained to four people who would not recognize each other&rsquo;s terminology.</p>
<p>Underneath sits the real unit of getting found, which is not the page but the answered question. There are 378 of them: how long it takes, what happens when the soil is wrong, who files the FAA paperwork, what a change order actually covers. A buyer comparing contractors is compiling a list of worries, and whoever answered the fourth one in writing wins before the call. An assistant does the same thing, faster.</p>
<p><figure>
    <a class="zoom" href="https://joshlambert.xyz/images/posts/the-contractor-the-machines-could-not-name/service-area-map_hu_c08bceed7f3103c3.webp" aria-label="View larger image">
      <img src="https://joshlambert.xyz/images/posts/the-contractor-the-machines-could-not-name/service-area-map_hu_4604879071351698.webp" width="1200" height="783"
           alt="The Vertical Axis service area page: a dark US map with Minneapolis marked as headquarters and Birmingham and Houston as crew-ready hubs." loading="lazy" decoding="async">
    </a></figure></p>
<p>Two questions arrive on their own schedule. Whether anybody comes out this far, which the <a href="https://vertical-axis.com/service-area/" rel="noopener" target="_blank">service area page</a> answers with a map and three crew hubs, and the one asked at four in the morning by somebody whose tower is down, where the <a href="https://vertical-axis.com/emergency/" rel="noopener" target="_blank">emergency page</a> draws a line most contractors blur: take your place in the queue, or hold a retainer and have a rigged climber guaranteed on site inside four, twelve, or twenty-four hours.</p>
<h3 id="proof-a-stranger-can-check">Proof a stranger can check</h3>
<p><figure>
    <a class="zoom" href="https://joshlambert.xyz/images/posts/the-contractor-the-machines-could-not-name/streamline-internet-case-study_hu_2623f1d043f31424.webp" aria-label="View larger image">
      <img src="https://joshlambert.xyz/images/posts/the-contractor-the-machines-could-not-name/streamline-internet-case-study_hu_406ecb1259a5b823.webp" width="1200" height="1633"
           alt="The Streamline Internet case study: “Ground-break to turn-up in Hendry County” over a tower photograph, a stats band reading 4 sites, 300 ft, 20&#43;, April 1 2026, and a pull quote from the ISP’s CEO." loading="lazy" decoding="async">
    </a></figure></p>
<p>Specific claims invite the obvious question, so two projects were written up with dates, counties, and quantities. The <a href="https://vertical-axis.com/projects/streamline-internet/" rel="noopener" target="_blank">Streamline Internet</a> buildout in Hendry County, Florida is the better story because the interesting parts never appear on a drawing. A high water table meant well points running from a week before ground-break until the foundations were backfilled, with every dig and pour sequenced against the dewatering contractor&rsquo;s schedule. Florida summer meant rebar tied the day before, trucks rolling at first light, and wet cure held through the afternoon so the concrete would still make strength at twenty-eight days. Then more than twenty microwave alignments, every one clearing the path coordinator on the first sweep with no re-climbs. Service reached subscribers on the first of April. Readers here have met that network from the other side, in <a href="https://joshlambert.xyz/work/putting-streamline-internet-into-hyperdrive/">Streamline&rsquo;s marketing engagement</a>.</p>
<p>The other, <a href="https://vertical-axis.com/projects/alabama-lightwave/" rel="noopener" target="_blank">Alabama Lightwave</a>, runs back to 2018 across three central Alabama counties. In the interest of plain dealing, that is my own company and the testimonial is mine, which is why the page leans on dates and equipment rather than the compliment.</p>
<h3 id="the-names-are-the-product">The names are the product</h3>
<p><figure>
    <a class="zoom" href="https://joshlambert.xyz/images/posts/the-contractor-the-machines-could-not-name/tommy-waldrop-profile_hu_de09916bfad7438a.webp" aria-label="View larger image">
      <img src="https://joshlambert.xyz/images/posts/the-contractor-the-machines-could-not-name/tommy-waldrop-profile_hu_4120514a3b4de5ed.webp" width="1200" height="1300"
           alt="The Tommy Waldrop profile, showing the WBRC weather-camera callout and an “Off the clock” photo grid of four generations of Waldrops posing with snakes beside old trucks." loading="lazy" decoding="async">
    </a></figure></p>
<p>Blue-collar businesses are bought on people, and an anonymous crew is unciteable the same way a vague claim is. Tommy Waldrop founded the company in 2018, climbed his first tower at thirteen, came up through his brother&rsquo;s WISP in West Alabama, and has since handed over the seat and stepped out of operations. Kelly Zacrep runs it today. His <a href="https://vertical-axis.com/team/tommy-waldrop/" rel="noopener" target="_blank">page</a> is history rather than a promise about who answers the phone, down to the photograph of four generations of Waldrops posing with snakes beside old trucks in the yard at Pennington, and his niece Ryanna&rsquo;s account of the childhood behind it: &ldquo;house rule was after breakfast, you go outside. You can come back in for water or lunch, and then you go back outside until supper time.&rdquo;</p>
<p>Not a word of that ranks for a keyword, and all of it is why somebody picks up the phone. The same treatment goes to the crew running the work now, on the <a href="https://vertical-axis.com/team/" rel="noopener" target="_blank">team page</a>, and the <a href="https://vertical-axis.com/careers/" rel="noopener" target="_blank">careers page</a> is aimed at climbers and civil hands, who are the scarcest resource in this trade and who also search.</p>
<p><figure>
    <a class="zoom" href="https://joshlambert.xyz/images/posts/the-contractor-the-machines-could-not-name/safety-course-catalog_hu_c86bd2544a956f56.webp" aria-label="View larger image">
      <img src="https://joshlambert.xyz/images/posts/the-contractor-the-machines-could-not-name/safety-course-catalog_hu_49bba0c770ea6613.webp" width="1200" height="2300"
           alt="The Vertical Axis safety program page: the OWYN Safety partner block above a course catalog grouped into seven numbered domains." loading="lazy" decoding="async">
    </a></figure></p>
<p>One more page exists for the same reason. Carrier landlords will not clear a crew to climb without a current safety packet, so the <a href="https://vertical-axis.com/safety/" rel="noopener" target="_blank">safety program</a> publishes the whole catalog, sixty-odd courses a year through <a href="https://owynsafety.com/" rel="noopener" target="_blank">OWYN Safety</a>, every course named. What used to be a form somebody had to request is a page they can read at midnight while deciding whom to shortlist.</p>
<h3 id="the-plumbing-is-the-cheap-part">The plumbing is the cheap part</h3>
<p>Structured data goes out on every page. An <a href="https://vertical-axis.com/llms.txt" rel="noopener" target="_blank">llms.txt</a> index and a full-text companion let an assistant ground an answer in whole pages instead of scraps. The robots file names the citation crawlers instead of leaving them to guess. Page dates come from version history rather than a hand-typed field, so the freshness signals stay true with nobody maintaining them. Separate inboxes keep a quote, a question, and a job application out of the same pile, and first-touch attribution rides into the lead, so a year from now &ldquo;did any of this work&rdquo; has a project name on it.</p>
<p>All of that took a fraction of the effort the writing did, and it is the part everyone selling GEO wants to talk about. Markup does not make a claim true, it only makes a claim legible. Perfect JSON-LD wrapped around a banner slogan is a beautifully labeled box with nothing in it.</p>
<h3 id="what-came-back">What came back</h3>
<p>The site went up this spring and the citation work landed in the middle of July. Below is where things stand at the end of July, which is a snapshot rather than a standing claim, because results move with the week, the wording, and whoever is asking.</p>
<p><figure>
    <a class="zoom" href="https://joshlambert.xyz/images/posts/the-contractor-the-machines-could-not-name/google-ai-overview-wisp-contractor_hu_61a35a31a040e83f.webp" aria-label="View larger image">
      <img src="https://joshlambert.xyz/images/posts/the-contractor-the-machines-could-not-name/google-ai-overview-wisp-contractor_hu_6747d50bb2d8cb76.webp" width="1200" height="701"
           alt="Google’s AI Overview for “wisp tower construction contractor,” defining the category as building and servicing communication sites from empty dirt to an operational network, and naming Vertical Axis first among the key contractors, with vertical-axis.com at the top of the sources panel." loading="lazy" decoding="async">
    </a></figure></p>
<p>Ask Google for a WISP tower construction contractor and the AI Overview names Vertical Axis first among the specialists, with the site at the top of its sources. Look closer at the sentence before the list, though, because that is the part worth the whole engagement. Google explains what this kind of contractor even is by saying one &ldquo;builds and services communication sites from empty dirt to an operational network.&rdquo; The services page says: empty dirt to operational tower, one crew, one point of contact. The engine did not merely cite the page. It borrowed the page&rsquo;s sentence to define the category.</p>
<p><figure>
    <a class="zoom" href="https://joshlambert.xyz/images/posts/the-contractor-the-machines-could-not-name/google-organic-first-result_hu_3a8e27fd575c580.webp" aria-label="View larger image">
      <img src="https://joshlambert.xyz/images/posts/the-contractor-the-machines-could-not-name/google-organic-first-result_hu_c378875f338b11b7.webp" width="1200" height="797"
           alt="Google organic results for “wisp tower construction contractor,” with the Vertical Axis WISP industry page as the first organic result." loading="lazy" decoding="async">
    </a></figure></p>
<p>Underneath the summary, the <a href="https://vertical-axis.com/industries/wisp/" rel="noopener" target="_blank">WISP industry page</a> is the first organic result for the same query.</p>
<p><figure>
    <a class="zoom" href="https://joshlambert.xyz/images/posts/the-contractor-the-machines-could-not-name/google-ai-overview-who-can-i-contact_hu_9949bc01331dc253.webp" aria-label="View larger image">
      <img src="https://joshlambert.xyz/images/posts/the-contractor-the-machines-could-not-name/google-ai-overview-who-can-i-contact_hu_81febead9de8d950.webp" width="1200" height="778"
           alt="Google’s AI Overview for the question “who can i contact to be the contractor for the construction of my wisp tower,” listing Vertical Axis under Specialized WISP Builders with its phone number." loading="lazy" decoding="async">
    </a></figure></p>
<p>It holds up when the question is asked the way a person actually talks. &ldquo;Who can i contact to be the contractor for the construction of my wisp tower&rdquo; returns Vertical Axis under specialized builders, phone number attached. That is the county emergency manager from the top of this piece, and he now has a number to call.</p>
<p><figure>
    <a class="zoom" href="https://joshlambert.xyz/images/posts/the-contractor-the-machines-could-not-name/chatgpt-top-three-picks_hu_d50322ba11afa78b.webp" aria-label="View larger image">
      <img src="https://joshlambert.xyz/images/posts/the-contractor-the-machines-could-not-name/chatgpt-top-three-picks_hu_d50322ba11afa78b.webp" width="1127" height="905"
           alt="ChatGPT answering a request for the top three WISP tower contractors, ranking Vertical Axis second as the best WISP-specific specialist, citing vertical-axis.com." loading="lazy" decoding="async">
    </a></figure></p>
<p>The assistants agree. <a href="https://chatgpt.com/s/t_6a6b70e5291c819197499b499cfb7ee1" rel="noopener" target="_blank">ChatGPT</a> puts Vertical Axis in its top three as the WISP-specific specialist, and note the careful phrasing: it &ldquo;reports serving more than 300 ISPs.&rdquo; The machine repeats the claim and attributes it, which is exactly what a specific, sourced sentence buys and what a banner slogan never earns.</p>
<p><figure>
    <a class="zoom" href="https://joshlambert.xyz/images/posts/the-contractor-the-machines-could-not-name/claude-top-three-picks_hu_3a1b8c2f603f84b6.webp" aria-label="View larger image">
      <img src="https://joshlambert.xyz/images/posts/the-contractor-the-machines-could-not-name/claude-top-three-picks_hu_3a1b8c2f603f84b6.webp" width="1053" height="685"
           alt="Claude answering a request for the best WISP tower contractors nationwide, ranking Vertical Axis first and citing its 60 to 300 foot scope, FAA 7460-1 filings, and FCC Antenna Structure Registration." loading="lazy" decoding="async">
    </a></figure></p>
<p>Claude ranks it first, and reaches for the details that only exist because somebody wrote the scope out longhand: the 60 to 300 foot loading range, FAA Form 7460-1 filings, FCC antenna structure registration, a line-itemed quote inside a week.</p>
<p><figure>
    <a class="zoom" href="https://joshlambert.xyz/images/posts/the-contractor-the-machines-could-not-name/grok-best-wisp-contractor_hu_c078e7094ad01b1.webp" aria-label="View larger image">
      <img src="https://joshlambert.xyz/images/posts/the-contractor-the-machines-could-not-name/grok-best-wisp-contractor_hu_c078e7094ad01b1.webp" width="931" height="800"
           alt="Grok answering a request for the best WISP tower contractor in the US, showing it opened vertical-axis.com/industries/wisp/ during its research, then naming Vertical Axis the strongest specialized WISP tower contractor nationwide." loading="lazy" decoding="async">
    </a></figure></p>
<p>Grok is the clearest of the lot, because it shows its work. Six searches, then it opens the WISP industry page and reads it, and what comes back is that page said aloud: three hundred providers since 2018, the gear list a WISP would recognize, WISP-grade work at WISP-grade pricing, the 60 to 300 foot range, the job that should cost fifteen thousand and gets quoted at forty-eight by a carrier crew, Motorola R56, BEAD and ReConnect, 690 feet, the lower 48, crews in Alabama and Texas, mobilization inside about forty-eight hours. Not one invented detail in it.</p>
<p>None of that came from the markup. It came from the pages saying specific true things in the buyer&rsquo;s own words, which the markup then made easy to find. And being named is still not the same as being hired: the quote form is the real scoreboard, and that number takes longer to move than a citation does.</p>
<h3 id="what-it-is-for">What it is for</h3>
<p>Vertical Axis is a company of people who drive to a pasture, auger a hole, and put steel in the sky, and none of them will ever have time to think about retrieval. What they needed was for eight years of finished work to exist somewhere a stranger, or a stranger&rsquo;s assistant, could find it and repeat it accurately. Write down what is true in the buyer&rsquo;s own words, in enough detail to be quoted, with proof somebody could check and names attached, and then make it legible to the machines. Rankings follow, and so does the <a href="https://vertical-axis.com/request-a-quote/" rel="noopener" target="_blank">quote request</a> from a county nobody in the company has ever worked in.</p>
<p>If you run a business that makes something real and your website is quieter about it than your customers are, that is the work I do through <a href="https://centrevilletech.com/" rel="noopener" target="_blank">Centreville Tech</a>. Have a look at <a href="https://vertical-axis.com/about/" rel="noopener" target="_blank">what we built them</a>, then <a href="mailto:josh.lambert@centrevilletech.com">send me an email</a> and tell me what you make.</p>
]]></content:encoded></item><item><title>Starlight and Signal for Nimbus Solutions</title><link>https://joshlambert.xyz/work/starlight-and-signal-for-nimbus-solutions/</link><guid>https://joshlambert.xyz/work/starlight-and-signal-for-nimbus-solutions/</guid><pubDate>Mon, 27 Jul 2026 00:00:00 +0000</pubDate><author>josh@lambertmail.xyz (Josh Lambert)</author><description>&lt;p>Out past Durango the San Juans fall away into mesa country, and the sky at night still gets properly dark. This is the Four Corners, where Colorado meets Utah, Arizona, and New Mexico, and it is &lt;a href="https://nimbussolutions.org/" rel="noopener" target="_blank">Nimbus Solutions’&lt;/a> country. Mancos, Cortez, Dolores, Lewis, Dove Creek, Hesperus, and the canyon and ranch land between them, a landscape the national carriers have always found easier to admire than to serve. Nimbus is a founder-owned fixed wireless provider that has been wiring it since 2017. Michael Halls was born in Durango, with family roots around Mancos going back a century, and his first tower site was a barn on his great-uncle’s ranch in Webber Canyon. Nine years later the company runs its own licensed LTE and 5G network on Nokia radios, its own autonomous system, and a string of solar-powered mountain sites, some of which were hauled up game trails on someone’s back, one panel at a time.&lt;/p></description><content:encoded><![CDATA[<p>Out past Durango the San Juans fall away into mesa country, and the sky at night still gets properly dark. This is the Four Corners, where Colorado meets Utah, Arizona, and New Mexico, and it is <a href="https://nimbussolutions.org/" rel="noopener" target="_blank">Nimbus Solutions’</a> country. Mancos, Cortez, Dolores, Lewis, Dove Creek, Hesperus, and the canyon and ranch land between them, a landscape the national carriers have always found easier to admire than to serve. Nimbus is a founder-owned fixed wireless provider that has been wiring it since 2017. Michael Halls was born in Durango, with family roots around Mancos going back a century, and his first tower site was a barn on his great-uncle’s ranch in Webber Canyon. Nine years later the company runs its own licensed LTE and 5G network on Nokia radios, its own autonomous system, and a string of solar-powered mountain sites, some of which were hauled up game trails on someone’s back, one panel at a time.</p>
<p>Word of mouth built most of that, while the website stayed a four-page brochure that said almost nothing about a company with an unusual amount to say. This June Nimbus brought us in to fix it, and the engagement became the full stack: research, a new brand, a new website that folds in Michael’s own coverage map, and paid search run with an operator’s discipline. It is still going, the way this kind of work should.</p>
<h3 id="reading-eight-years-of-newsletters-first">Reading eight years of newsletters first</h3>
<p>The build started with an export of every newsletter Nimbus had sent since November 2018, 138 of them, and that archive turned out to be a company history nobody had ever assembled: the first customer reached by a point-to-point link across the family ranch, the solar repeater on Temple Hill that carried the first forty customers, the free public WiFi Nimbus stood up in Mancos when COVID sent the schools home. Out of it came a knowledge base with every claim cited to its source, and a page-by-page plan for the new site.</p>
<p>That is why the finished site sounds like Michael instead of like a template. The <a href="https://nimbussolutions.org/about/" rel="noopener" target="_blank">Our Story page</a> is built from the real history, including the line that stops you: rebuilding abandoned networks in Webber Canyon that he had first built for another company in 2008, Michael says, “Every time I go into Webber, I feel like I’m chasing ghosts.” No agency invents a line like that. It only turns up when somebody reads the archive.</p>
<p><figure>
    <a class="zoom" href="https://joshlambert.xyz/images/posts/starlight-and-signal-for-nimbus-solutions/our-story-page_hu_1447baf9f9672415.webp" aria-label="View larger image">
      <img src="https://joshlambert.xyz/images/posts/starlight-and-signal-for-nimbus-solutions/our-story-page_hu_e9db8131a0a1dd44.webp" width="1200" height="958"
           alt="The Nimbus Solutions Our Story page, headed “Our Story” over a photograph of snowy highway signs pointing toward Mesa Verde, Cortez, Silverton, and Historic Durango, above the opening of the founding history." loading="lazy" decoding="async">
    </a></figure></p>
<h3 id="a-site-the-color-of-a-colorado-night">A site the color of a Colorado night</h3>
<p><figure>
    <a class="zoom" href="https://joshlambert.xyz/images/posts/starlight-and-signal-for-nimbus-solutions/nimbussolutions-home_hu_2a263547435fb8d9.webp" aria-label="View larger image">
      <img src="https://joshlambert.xyz/images/posts/starlight-and-signal-for-nimbus-solutions/nimbussolutions-home_hu_4e9caaae5725f20c.webp" width="1200" height="833"
           alt="The Nimbus Solutions homepage, with the headline “Fast, local internet. No contracts, no runaround.” over a photograph of the Mesa Verde cliff dwellings, with Customer Portal and Get Fast Internet buttons in the nav." loading="lazy" decoding="async">
    </a></figure></p>
<p>The old brochure got twenty-two pages to replace its four, and a brand worth keeping. The design came out of what the Four Corners actually looks like after sunset: a black page over a real night-sky photograph, one teal accent and nothing else, square corners, a tall condensed face for headings and a serif for the body. The spec lives at a <a href="https://nimbussolutions.org/brand" rel="noopener" target="_blank">living style-guide page</a> with a machine-readable twin, so the site can grow for years without drifting. The homepage opens on Mesa Verde and the slogan that carries the whole pitch: fast, local internet, no contracts, no runaround. The copy is aimed at people the company will see at the grocery store, which is why it mentions, plainly, that about 95 percent of support issues get resolved over the phone.</p>
<p>Each of the six towns got a landing page of its own, and each page got a watercolor of that town at night, the Milky Way overhead and the porch lights on. A search for internet in Dolores lands on a page that is unmistakably about Dolores, painted like somewhere you would want to live, rather than on a generic coverage grid.</p>
<p><figure>
    <a class="zoom" href="https://joshlambert.xyz/images/posts/starlight-and-signal-for-nimbus-solutions/dolores-town-page_hu_2255b57831a33bd8.webp" aria-label="View larger image">
      <img src="https://joshlambert.xyz/images/posts/starlight-and-signal-for-nimbus-solutions/dolores-town-page_hu_66850ef710098e7e.webp" width="1200" height="958"
           alt="The Nimbus Solutions town page for Dolores, Colorado, with a watercolor of the town at night under the Milky Way, and a “The short version” box answering immediately: yes, Nimbus serves Dolores, with gigabit wireless live in town." loading="lazy" decoding="async">
    </a></figure></p>
<p>Those town pages are also where the site speaks to machines. Every page opens with a plain-language answer box, carries question-and-answer markup, and the whole site is summarized in a machine-readable digest, because a growing share of “who has internet in Dolores” questions are now asked to an AI assistant rather than typed into a search box. When somebody asks their assistant who serves Montezuma County, Nimbus intends to be the answer with sources.</p>
<h3 id="prices-on-park-signs-and-the-fine-print-in-plain-english">Prices on park signs, and the fine print in plain English</h3>
<p><figure>
    <a class="zoom" href="https://joshlambert.xyz/images/posts/starlight-and-signal-for-nimbus-solutions/plans-and-pricing_hu_bda67c5e0f4e7e50.webp" aria-label="View larger image">
      <img src="https://joshlambert.xyz/images/posts/starlight-and-signal-for-nimbus-solutions/plans-and-pricing_hu_e8dcc9e617133fec.webp" width="1200" height="958"
           alt="The Nimbus Solutions plans page, showing four cards: Foothills at $50 for up to 50 Mbps, Mesa at $75 for up to 100 Mbps marked Most Popular, Summit at $95 for 300 to 800 Mbps, and a custom Business &amp; Enterprise tier." loading="lazy" decoding="async">
    </a></figure></p>
<p>Most rural providers hide their prices behind a quote form. Nimbus publishes everything. The plans are named for the country they serve, Foothills, Mesa, and Summit, and the Summit tier is gigabit-class wireless, 300–800 Mbps, live today in Dolores, Lewis, and Mancos. Out here that last mile travels through the air, and in rural Colorado that is the stronger hand. This is country that breaks buried line: frost heave, washouts, spring storms, and the backhoe that never called 811 all find fiber eventually, and a cut in a canyon can take a valley down for days while somebody digs. Nothing about a wireless link is lying in the ground waiting to be broken. Nimbus matches the performance and skips the failure modes, and the site says so without blinking.</p>
<p>Every plan also carries a proper FCC Broadband Facts label, the nutrition-label disclosure most small providers treat as a nuisance, presented here like it belongs. Below the cards sits a section titled “The fine print, in plain English,” which is exactly what it says. The prices themselves live in one data file that feeds every page that mentions them, so the homepage and the plans page can never drift apart. The same honesty rule covers the homepage testimonials: real Google reviews, quoted word for word, names attached, and the site’s own guidelines forbid editing them.</p>
<p><figure>
    <a class="zoom" href="https://joshlambert.xyz/images/posts/starlight-and-signal-for-nimbus-solutions/broadband-facts-label_hu_a4b0a32ac19887f1.webp" aria-label="View larger image">
      <img src="https://joshlambert.xyz/images/posts/starlight-and-signal-for-nimbus-solutions/broadband-facts-label_hu_54a1068374b4d0f7.webp" width="1200" height="958"
           alt="The Broadband Facts label for the Mesa plan, an FCC-style disclosure showing the $75 monthly price, the $200 one-time install, no equipment or termination fees, typical speeds and latency, and unlimited data." loading="lazy" decoding="async">
    </a></figure></p>
<h3 id="the-map-that-answers-the-only-question-that-matters">The map that answers the only question that matters</h3>
<p>Every ISP website exists to answer one question: can you reach my house? For a fixed wireless network in canyon country the honest answer depends on terrain, and terrain is exactly what a ZIP-code coverage list throws away. The customer who gets told yes on Monday and no by the installer on Friday is a customer lost for ten years.</p>
<p>So instead of a static blob on a flat map, the site carries an interactive 3D coverage map, and the map is Michael’s own build. It drapes satellite imagery over real elevation data, marks all 33 tower sites, and overlays radio propagation modeled over that terrain for every one of them, so the coverage you see thins out behind ridgelines the same way the actual signal does. You can tilt the whole Montezuma Valley and watch the modeled signal pool in the places where people actually live. Only the operator of the network could have made this, and it shows.</p>
<p><figure>
    <a class="zoom" href="https://joshlambert.xyz/images/posts/starlight-and-signal-for-nimbus-solutions/coverage-map-3d_hu_2f22848e13ffd16d.webp" aria-label="View larger image">
      <img src="https://joshlambert.xyz/images/posts/starlight-and-signal-for-nimbus-solutions/coverage-map-3d_hu_3f5f5a2947504381.webp" width="1200" height="833"
           alt="The Nimbus Solutions interactive coverage map, a 3D satellite view of Southwest Colorado with modeled signal strength draped in green over the terrain, tower markers across the Montezuma Valley, and a legend reading 33 tower sites, modeled over terrain." loading="lazy" decoding="async">
    </a></figure></p>
<p>Under the search box sits a county-GIS address index, 58,541 addresses strong, so a resident can start typing and pick their own house from the list. The map flies to the rooftop, checks the point against the modeled coverage, and renders a verdict: in coverage, with a button that carries the address straight into an order, or not yet, with a button that reaches a person instead.</p>
<p>Folding his engineering into our site never felt like a handoff, because there was not one. Michael and our team were linked in a shared Slack group the whole way through, his map and our pages moving together, questions answered in minutes rather than meeting cycles, until the finished site reads like one hand built it. The map now sits on the coverage page and on every town page, tuned to each town, founder-led work in the same key as everything else Nimbus does. No Upwork listing or big-city agency collaborates with a wireless operator at that level; the shared vocabulary alone takes years to earn, and we have it because we run a WISP ourselves.</p>
<p><figure>
    <a class="zoom" href="https://joshlambert.xyz/images/posts/starlight-and-signal-for-nimbus-solutions/coverage-check-mancos_hu_48d1814126cd97fb.webp" aria-label="View larger image">
      <img src="https://joshlambert.xyz/images/posts/starlight-and-signal-for-nimbus-solutions/coverage-check-mancos_hu_acf5f2c656f001d9.webp" width="1200" height="833"
           alt="The coverage checker returning a verdict for 299 N Main St in Mancos: a teal banner reading “Your address is in Nimbus coverage” with a Get started button, above the 3D map with the address pinned among the towers." loading="lazy" decoding="async">
    </a></figure></p>
<h3 id="ads-drawn-inside-the-coverage-line">Ads drawn inside the coverage line</h3>
<p>Two days after the site settled, six tightly scoped Google Search campaigns went live: brand terms, the core towns, the wider footprint, the competitors, the business track, and the agricultural work that makes Nimbus unusual among WISPs. The discipline matters more than the launch. Ads run only inside geography Nimbus can genuinely serve, drawn as circles around real coverage rather than county lines, and the copy obeys the same brand rules as the site, so the word gigabit appears only where gigabit is actually sold. Conversion tracking was wired through before the first dollar was spent, phone calls included, and the account gets audited against a written changelog rather than a monthly glance. Inside the first two weeks the tracking was already attributing conversions to campaigns, and when one sensible-looking search term started burning money at auction, the audit caught it and shut it off. That is the difference between running ads and watching them.</p>
<h3 id="why-it-holds-together">Why it holds together</h3>
<p>Each piece makes the others worth more. The research gave the website its voice, and the website gives the ads somewhere worth sending a click. The coverage map keeps the promise the ads make, because nobody gets invited to order at an address the network cannot reach. And the whole thing is instrumented, so the question “did any of this bring in subscribers” gets a real answer instead of a hopeful one. It is also not finished, because networks grow: a new tower changes the map, a new town needs its watercolor, and somebody has to be in the ad account every week. Nimbus runs its network with the same appetite for building, incidentally: the core stack behind those towers includes <a href="https://joshlambert.xyz/work/simplifying-the-core-introducing-rapid5gs/">Rapid5GS</a>, which readers of this site have met before.</p>
<p>This is the work I sell through <a href="https://isphyperdrive.com/" rel="noopener" target="_blank">ISP Hyperdrive</a>, the fractional CMO practice for wireless internet providers: the <a href="https://isphyperdrive.com/services/website-development/" rel="noopener" target="_blank">website</a>, the research, the <a href="https://isphyperdrive.com/services/ad-spend-management/" rel="noopener" target="_blank">advertising</a>, and the ongoing care, measured against the cost of winning one more subscriber. Streamline Internet was <a href="https://joshlambert.xyz/work/putting-streamline-internet-into-hyperdrive/">the first full engagement</a>; Nimbus is the proof it travels. If you run a wireless provider whose website undersells the network behind it, the whole stack is on <a href="https://isphyperdrive.com/pricing/" rel="noopener" target="_blank">the pricing page</a>, month to month, à la carte or together. Have a look, then <a href="mailto:josh.lambert@centrevilletech.com">send me an email</a> and tell me about your market.</p>
]]></content:encoded></item><item><title>Putting Streamline Internet Into Hyperdrive</title><link>https://joshlambert.xyz/work/putting-streamline-internet-into-hyperdrive/</link><guid>https://joshlambert.xyz/work/putting-streamline-internet-into-hyperdrive/</guid><pubDate>Mon, 27 Jul 2026 00:00:00 +0000</pubDate><author>josh@lambertmail.xyz (Josh Lambert)</author><description>&lt;p>Drive west out of Naples on a two-lane road and the subdivisions thin out, then the citrus starts, and then you are in Hendry County, where the land is flat and green and the cattle outnumber the cell towers. This is &lt;a href="https://streamlineisp.com/" rel="noopener" target="_blank">Streamline Internet’s&lt;/a> country. LaBelle, Port LaBelle, Felda, Fort Denaud, and the long gridded lanes of Golden Gate Estates on the Collier edge, all of them places the national carriers looked at once, ran the numbers on, and left alone. Streamline is a locally owned fixed wireless provider that decided to stay. A small antenna goes on the house, it finds a clear line to a tower, and the internet arrives where fiber will never reach. It also keeps arriving on the days that matter, when the wind is up and the water is rising and there is nothing strung between the poles to come down.&lt;/p></description><content:encoded><![CDATA[<p>Drive west out of Naples on a two-lane road and the subdivisions thin out, then the citrus starts, and then you are in Hendry County, where the land is flat and green and the cattle outnumber the cell towers. This is <a href="https://streamlineisp.com/" rel="noopener" target="_blank">Streamline Internet’s</a> country. LaBelle, Port LaBelle, Felda, Fort Denaud, and the long gridded lanes of Golden Gate Estates on the Collier edge, all of them places the national carriers looked at once, ran the numbers on, and left alone. Streamline is a locally owned fixed wireless provider that decided to stay. A small antenna goes on the house, it finds a clear line to a tower, and the internet arrives where fiber will never reach. It also keeps arriving on the days that matter, when the wind is up and the water is rising and there is nothing strung between the poles to come down.</p>
<p>Good networks do not sell themselves, though. Since the winter of 2026 we have run Streamline’s marketing operation: the website, a second site that answers the county’s questions before Streamline ever comes up, the mobile app, the availability check underneath all of it, and the social presence that carries the lot into the feed. It is the first full engagement under <a href="https://isphyperdrive.com/" rel="noopener" target="_blank">ISP Hyperdrive</a>, the fractional CMO practice I run for wireless internet providers, and it is still going. What follows is where things stand this summer rather than a finished monument. Towns get added, campaigns get cut, the app grows features, and the next thing is usually already in the queue.</p>
<h3 id="the-website-that-had-to-sell">The website that had to sell</h3>
<p><figure>
    <a class="zoom" href="https://joshlambert.xyz/images/posts/putting-streamline-internet-into-hyperdrive/streamlineisp-home_hu_7dc03f216a971a0a.webp" aria-label="View larger image">
      <img src="https://joshlambert.xyz/images/posts/putting-streamline-internet-into-hyperdrive/streamlineisp-home_hu_de4d7e978ff52c80.webp" width="1200" height="833"
           alt="The Streamline Internet homepage, with the headline “Fast, reliable internet for Hendry County and Golden Gate Estates” above a Check Availability button and a photograph of tower radios looking out over Port LaBelle." loading="lazy" decoding="async">
    </a></figure></p>
<p>Most ISP websites are brochures with a phone number at the bottom. Somebody who is ready to buy at nine o’clock on a Sunday evening gets a form, a promise that someone will be in touch, and two days to change their mind. <a href="https://streamlineisp.com/" rel="noopener" target="_blank">StreamlineISP.com</a> was built to close that gap.</p>
<p><strong>A neighbor can buy internet without talking to anyone.</strong> <a href="https://streamlineisp.com/check-availability/" rel="noopener" target="_blank">Type an address</a>, find out in a second or two whether Streamline can actually reach the house, pick a plan, choose an installation window from a calendar showing real openings, and it is booked. The whole path is four short steps, and a household that makes up its mind on Sunday night has a date on the books before bed.</p>
<p><figure>
    <a class="zoom" href="https://joshlambert.xyz/images/posts/putting-streamline-internet-into-hyperdrive/check-availability-wizard_hu_7823360a8bab25ae.webp" aria-label="View larger image">
      <img src="https://joshlambert.xyz/images/posts/putting-streamline-internet-into-hyperdrive/check-availability-wizard_hu_196cd23c488edfcd.webp" width="1200" height="917"
           alt="The Streamline check availability page, showing step one of four with the question “Where do you need service?” and an address field above a photo of a technician mounting an antenna on a Florida home." loading="lazy" decoding="async">
    </a></figure></p>
<p>The calendar took longer to get right than everything around it. Booking an install is nothing like booking a table. Crews work in arrival windows, one job eats more than its own hour, and a Thursday that looks wide open at breakfast is full by lunch. An off-the-shelf date picker will cheerfully sell somebody a slot that does not exist, and then the first thing a new customer learns about their provider is that it does not keep its word. So the calendar offers only what the crews can truly cover, in windows that match how they actually work, and it closes a day the moment that day fills. By the time the order goes through, the job is assigned and the slot is held.</p>
<p><strong>Streamline can tell which marketing brought which customer.</strong> At most providers this is a shrug. The office knows roughly how many people called and roughly what was spent, and connecting the two is guesswork. Here the trail a customer took to reach the order form travels with them into the customer record, so months later, when somebody asks whether a campaign brought in anybody, the answer comes back with names on it.</p>
<p>Around that path sits the rest of the case for going local. <a href="https://streamlineisp.com/coverage/" rel="noopener" target="_blank">Coverage by town</a>, plans and pricing, a business track, a discount for the teachers, nurses, deputies, and public employees who hold the county together, and a shelf of plain-language articles for the person weighing Streamline against Starlink, satellite, cellular home internet, or the cable company they already resent. Those comparison pieces are written to be genuinely useful even to a reader who ends up choosing somebody else. Rural customers have a long memory for being handled.</p>
<h3 id="a-second-front-door-the-hendry-county-buyers-guide">A second front door: the Hendry County buyer’s guide</h3>
<p>Nobody wakes up wanting to read an ISP’s website. They wake up wanting to know why the Zoom call froze, whether the speed they pay for is the speed they need, or how the local outfit compares to the dish the neighbor just bolted to his roof. Those questions get typed into a search box long before anyone types a brand name, and a provider’s own site is a poor place to go looking for a straight answer about that provider.</p>
<p>So Streamline got a second property to meet them there. <a href="https://hendrycountyinternet.com/" rel="noopener" target="_blank">HendryCountyInternet.com</a> is a buyer’s guide for the county, on its own domain, with its own look and its own voice.</p>
<p><figure>
    <a class="zoom" href="https://joshlambert.xyz/images/posts/putting-streamline-internet-into-hyperdrive/hendry-county-internet-home_hu_a17f1fb93bb59a7f.webp" aria-label="View larger image">
      <img src="https://joshlambert.xyz/images/posts/putting-streamline-internet-into-hyperdrive/hendry-county-internet-home_hu_e2702bd4e256ab03.webp" width="1200" height="958"
           alt="The Hendry County Internet homepage, headed “Internet in Hendry County, Florida” over a watercolor of the Caloosahatchee at sunset, with cards for Locations, Services, Problems, Comparisons, and Guides." loading="lazy" decoding="async">
    </a></figure></p>
<p>It does not look like a Streamline microsite, which is deliberate. The design came out of what Hendry County actually is: sugar cane and citrus, cattle, canals, Lake Okeechobee, and the families who work the land around it. Cane green, lake blue-gray, soil brown, a warm clay accent, a steady serif, and a watercolor of the river at sunset. Quiet, warm, and not trying to sell anything on first contact.</p>
<p>Ninety-two pages sit behind that homepage, and each one answers a question somebody really asks. The guides handle the plain ones: how much speed a household actually needs, what ping means, where to put a router, what to do the minute service drops. Problem pages take the symptom the way a person would say it out loud, so there are pages for buffering, for lag, for the connection dropping, for Zoom freezing, for no signal in the back bedroom, for weather knocking everything out. Comparison pages set the local provider beside AT&amp;T, CenturyLink, HughesNet, Starlink, T-Mobile, Verizon, and Xfinity. Then most of it exists again at the town level, so somebody searching about a problem in LaBelle lands on a page about that problem in LaBelle rather than a generic one.</p>
<p><figure>
    <a class="zoom" href="https://joshlambert.xyz/images/posts/putting-streamline-internet-into-hyperdrive/hendry-county-internet-comparison_hu_b346a46397999ee7.webp" aria-label="View larger image">
      <img src="https://joshlambert.xyz/images/posts/putting-streamline-internet-into-hyperdrive/hendry-county-internet-comparison_hu_e01a5ca6b738726f.webp" width="1200" height="958"
           alt="The Hendry County Internet comparison page for Streamline Internet versus Starlink in LaBelle, showing a Streamline call-to-action card mid-article and a “What matters in LaBelle” section beneath it." loading="lazy" decoding="async">
    </a></figure></p>
<p>Every page leaves a door open. The invitation on each one speaks to the page it sits on, naming the problem the reader came in with or the town they live in, and it leads to a check that tells them what is available at their address. The pages are also marked up so that search engines, and increasingly the AI assistants people now ask instead of searching, can work out who serves this county and what they are like.</p>
<p>A single site trying to be both the salesman and the encyclopedia tends to do neither job well. Split in two, the county guide earns trust with people who are not shopping yet, and the main site closes the ones who are. Awareness builds on one domain, orders land on the other, and both keep growing. The same pattern travels to the next market a provider enters.</p>
<h3 id="streamline-scout-in-the-palm-of-the-county">Streamline Scout, in the palm of the county</h3>
<p><figure>
    <a class="zoom" href="https://joshlambert.xyz/images/posts/putting-streamline-internet-into-hyperdrive/streamline-scout-screens_hu_e363ef0d62e6d6a1.webp" aria-label="View larger image">
      <img src="https://joshlambert.xyz/images/posts/putting-streamline-internet-into-hyperdrive/streamline-scout-screens_hu_4d7432161821db5f.webp" width="1200" height="642"
           alt="Four screens of the Streamline Scout app: the network status list showing Felda, Fort Denaud, Golden Gate Estates north and south, the Hendry County EOC, LaBelle, and Port LaBelle all online; the live camera views screen; the Scout Pass credential; and the More menu with account, outage reporting, and chat." loading="lazy" decoding="async">
    </a></figure></p>
<p>A provider that shows up once a month as a bill is easy enough to leave when somebody knocks with a cheaper offer. <strong>Streamline Scout</strong> was built to give customers a reason to open the app in between, free with service, live on the <a href="https://apps.apple.com/us/app/streamline-scout/id6769928215" rel="noopener" target="_blank">App Store</a> and <a href="https://play.google.com/store/apps/details?id=com.streamlineisp.scout" rel="noopener" target="_blank">Google Play</a> since June. It runs on <a href="https://titaniumsdk.com/" rel="noopener" target="_blank">Titanium SDK</a>, the open source framework stewarded by the <a href="https://tidev.io/" rel="noopener" target="_blank">TiDev foundation</a> where I serve as chairman, so one small team keeps the iPhone and Android versions moving together. The same <a href="https://isphyperdrive.com/services/mobile-app-development/" rel="noopener" target="_blank">white-label tower camera app</a> now ships for other providers under their own brand.</p>
<p>The cameras are the reason people download it. Streamline already owns the high ground, so cameras went up on it. Felda looks out from three hundred feet above the volunteer fire department. LaBelle takes in the courthouse square and the Caloosahatchee corridor from the tower behind the courthouse. Port LaBelle watches the flat country north of town. In a county that spends five months a year with one eye on the sky, a live view of the horizon earns its place on the home screen.</p>
<p><figure>
    <a class="zoom" href="https://joshlambert.xyz/images/posts/putting-streamline-internet-into-hyperdrive/streamline-scout-camera-detail_hu_98fd5ebb2963a786.webp" aria-label="View larger image">
      <img src="https://joshlambert.xyz/images/posts/putting-streamline-internet-into-hyperdrive/streamline-scout-camera-detail_hu_85ba05f407397386.webp" width="1200" height="1272"
           alt="The Streamline Scout camera detail screens for LaBelle and Felda, each showing the live view, local government and sponsor blocks, and a written description of what the camera looks out over." loading="lazy" decoding="async">
    </a></figure></p>
<p>Network status is the less glamorous half and probably the more valuable one. Every site is listed with its current state, the Hendry County Emergency Operations Center among them. When something goes down, the customer sees it before they dial, and what they see is a company that already knows. Providers lose far more goodwill to silence during an outage than to the outage itself.</p>
<p>The rest is ordinary and necessary. A Scout Pass marks the holder as a customer or a first responder. Reporting an outage, reaching a real person in chat, and getting into the account are each one tap away, which is roughly the whole difference between an app people keep and an app people delete.</p>
<h3 id="the-social-presence-around-it">The social presence around it</h3>
<p>A website and an app are places people arrive. <a href="https://isphyperdrive.com/services/social-media-management/" rel="noopener" target="_blank">Social</a> is the part that goes out and finds them, and in a county this size that means Facebook first, Instagram second, and a voice that sounds like a neighbor rather than a carrier.</p>
<p>The steady work is unglamorous: a content calendar, graphics that look like the brand, replies to comments written by an actual person, reviews encouraged rather than begged for, and outage and maintenance news posted while it is still news. When a storm takes a site down, a post within the hour buys more goodwill than a month of promoted content, because it tells the county that somebody is awake and paying attention.</p>
<p>The campaign side is where the discipline shows. Ads run only where Streamline can genuinely serve, which sounds obvious and is routinely gotten wrong, and they get audited weekly instead of at month end, so a campaign that starts wasting money on a Tuesday is caught that week rather than three weeks later. Over the summer that discipline shut down several campaigns that were spending real money and producing no installs, and moved the attention to the two that were working.</p>
<p>Streamline is fixed wireless and the advertising says so plainly, because in Southwest Florida that is the stronger hand. The last mile here travels through the air. Nothing runs down the street and into the yard, so there is nothing for a backhoe to find, nothing strung on poles for a hurricane to drag down, and no road to trench open before a neighborhood gets service back. Every tower carries three independent feeds and sits on battery with generators behind it, which is how the network stays up through the week that takes everybody else down. A good part of the marketing job is telling that story properly, because the incumbents have spent twenty years teaching rural Florida that one particular technology is the only real internet, and out here it is frequently the fragile one.</p>
<h3 id="can-you-reach-my-house">Can you reach my house?</h3>
<p>Every one of those doors leads back to the same question, and it is the one a rural ISP has always answered worst. Coverage on a fixed wireless network is not a polygon and it is certainly not a ZIP code. It is a list of homes with a clear shot at a tower. Meanwhile the neighbor typing into the box has no idea the county calls their road CR 78 while the post office calls it Fort Denaud Road, and a fair share of them will spell LaBelle wrong.</p>
<p>Getting that right turned out to be worth building properly. Roughly twenty thousand serviceable addresses sit behind the availability check, and a sloppy, half-remembered, misspelled address still lands on the right house in a few thousandths of a second.</p>
<p><figure>
    <a class="zoom" href="https://joshlambert.xyz/images/posts/putting-streamline-internet-into-hyperdrive/address-validator-test-lookup_hu_e22adb963776c622.webp" aria-label="View larger image">
      <img src="https://joshlambert.xyz/images/posts/putting-streamline-internet-into-hyperdrive/address-validator-test-lookup_hu_bc0b3c0603f88499.webp" width="1200" height="373"
           alt="An availability check: the query “500 s main street, labell fl 33935” returns Available: Yes, matched to “500 S MAIN ST, LABELLE, FL 33935” at 99% confidence, in 6 ms." loading="lazy" decoding="async">
    </a></figure></p>
<p>Most lookups never involve AI at all. When one is genuinely ambiguous and a model helps sort it out, the model is still not the authority: whether a house can be served always comes from Streamline’s own records. That distinction is worth the trouble it took, because the alternative is telling somebody yes and then sending a technician to stand in their driveway a week later and take it back. Few things cost a provider a customer faster, and it is a customer they never actually had.</p>
<p>The same answer serves the website, the app, and the county guide, which is the useful thing about building the hard part once.</p>
<h3 id="why-it-works-better-as-one-engagement">Why it works better as one engagement</h3>
<p>Every piece here leans on another. The order path is only as good as the availability answer underneath it, and that answer is worth getting right because four different front doors all ask the same question. The county guide catches people who are still describing a symptom rather than shopping for a brand, and hands them along when they are ready. The app gives the social feed something worth following, and the feed sends people back to the site. Knowing where each customer came from closes the loop, so the advertising gets judged on installs instead of clicks.</p>
<p>Split that work across three vendors and the seams show up in the customer’s experience. Kept together, a small ISP in a county most people only drive through ends up running a marketing operation well out of proportion to its size.</p>
<p>It also does not stop, which is the part that separates a marketing department from a project. Somebody is in the ad account every week, in the feed most days, and in the codebase whenever the network reaches a town it could not reach before. Streamline turns on new sites and the coverage pages, the campaign geography, the county guide, and the app’s tower list all have to follow. Ranking for a town takes months of consistent work rather than one good launch. A build handed over and walked away from starts decaying the day it ships, and everyone in this industry has inherited one of those from a previous agency.</p>
<p>That is the idea behind <a href="https://isphyperdrive.com/" rel="noopener" target="_blank">ISP Hyperdrive</a>: the website, the social, the ad spend, the mobile app, and the local news partnership, run as an ongoing engagement by people who operate a wireless ISP themselves and measure all of it against the cost of winning one more subscriber. Streamline is the proof that it holds together.</p>
<p>If you run a wireless internet provider and you are tired of stitching four vendors into something that almost works, the whole stack is on <a href="https://isphyperdrive.com/pricing/" rel="noopener" target="_blank">the ISP Hyperdrive pricing page</a>, sold à la carte or together, month to month, with ad spend billed at cost. Have a look, then <a href="mailto:josh.lambert@centrevilletech.com">send me an email</a> and let’s talk about your market.</p>
]]></content:encoded></item><item><title>Connecting the Comeback: Powering Birmingham’s New Amphitheater</title><link>https://joshlambert.xyz/work/connecting-the-comeback-powering-birminghams-new-amphitheater/</link><guid>https://joshlambert.xyz/work/connecting-the-comeback-powering-birminghams-new-amphitheater/</guid><pubDate>Mon, 23 Jun 2025 00:00:00 +0000</pubDate><author>josh@lambertmail.xyz (Josh Lambert)</author><description><![CDATA[<p>When Birmingham’s brand-new Coca-Cola Amphitheater was preparing to host its <a href="https://www.wbrc.com/2025/06/23/fans-other-states-countries-visit-coca-cola-amphitheater-first-show/" rel="noopener" target="_blank">debut show with comedian Matt Rife</a>, one critical piece was running late: the internet connection.</p>
<p><figure>
    <a class="zoom" href="https://joshlambert.xyz/images/posts/connecting-the-comeback-powering-birminghams-new-amphitheater/Screenshot-2025-06-23-at-10.43.42_AM-1024x516_hu_587d2bb807147670.webp" aria-label="View larger image">
      <img src="https://joshlambert.xyz/images/posts/connecting-the-comeback-powering-birminghams-new-amphitheater/Screenshot-2025-06-23-at-10.43.42_AM-1024x516_hu_587d2bb807147670.webp" width="1024" height="516"
           alt="Aerial view of the new Birmingham Coca-Cola Amphitheater under construction, showing the steeply terraced bowl of empty stadium seats and a section of standing-room area." loading="lazy" decoding="async">
    </a></figure></p>
<p>Although preparations began well in advance and the venue team stayed proactive, the scheduled fiber delivery faced unforeseen delays and wasn’t ready in time for the opening weekend. For a major new venue preparing to host its first show, that kind of gap isn’t just inconvenient, it’s critical.</p>]]></description><content:encoded><![CDATA[<p>When Birmingham’s brand-new Coca-Cola Amphitheater was preparing to host its <a href="https://www.wbrc.com/2025/06/23/fans-other-states-countries-visit-coca-cola-amphitheater-first-show/" rel="noopener" target="_blank">debut show with comedian Matt Rife</a>, one critical piece was running late: the internet connection.</p>
<p><figure>
    <a class="zoom" href="https://joshlambert.xyz/images/posts/connecting-the-comeback-powering-birminghams-new-amphitheater/Screenshot-2025-06-23-at-10.43.42_AM-1024x516_hu_587d2bb807147670.webp" aria-label="View larger image">
      <img src="https://joshlambert.xyz/images/posts/connecting-the-comeback-powering-birminghams-new-amphitheater/Screenshot-2025-06-23-at-10.43.42_AM-1024x516_hu_587d2bb807147670.webp" width="1024" height="516"
           alt="Aerial view of the new Birmingham Coca-Cola Amphitheater under construction, showing the steeply terraced bowl of empty stadium seats and a section of standing-room area." loading="lazy" decoding="async">
    </a></figure></p>
<p>Although preparations began well in advance and the venue team stayed proactive, the scheduled fiber delivery faced unforeseen delays and wasn’t ready in time for the opening weekend. For a major new venue preparing to host its first show, that kind of gap isn’t just inconvenient, it’s critical.</p>
<p>With only a few days to go, my team stepped in and solved this connectivity challenge.</p>
<p>Using an existing DIA circuit with ample bandwidth at a nearby downtown high rise in Birmingham, we established a wireless link to the amphitheater rooftop using bonded 6GHz and 5GHz point-to-point microwave. A secure VPN tunnel extended the connection back to the <a href="https://alabamalightwave.com/" rel="noopener" target="_blank">Alabama Lightwave</a> Montgomery network core and <a href="https://mgmix.net/" rel="noopener" target="_blank">MGMIX</a>, preserving IP space consistency and full routing control.</p>
<figure class="gallery">
  <div class="gallery__row"><a class="zoom" href="https://joshlambert.xyz/images/posts/connecting-the-comeback-powering-birminghams-new-amphitheater/Screenshot-2025-06-23-at-12.41.59_PM-1002x1024_hu_642a56c45adf92f4.webp" aria-label="View larger image" style="flex-grow: 0.9784735812133072;"><img src="https://joshlambert.xyz/images/posts/connecting-the-comeback-powering-birminghams-new-amphitheater/Screenshot-2025-06-23-at-12.41.59_PM-1002x1024_hu_bd340936ade87dda.webp" width="1000" height="1022" alt="Two stacked parabolic backhaul dishes on a rooftop pole, aimed across the downtown Birmingham skyline under a winter overcast sky." loading="lazy" decoding="async"></a><a class="zoom" href="https://joshlambert.xyz/images/posts/connecting-the-comeback-powering-birminghams-new-amphitheater/Screenshot-2025-06-23-at-12.44.49_PM-937x1024_hu_ffec3278f2803ec2.webp" aria-label="View larger image" style="flex-grow: 0.9149130832570905;"><img src="https://joshlambert.xyz/images/posts/connecting-the-comeback-powering-birminghams-new-amphitheater/Screenshot-2025-06-23-at-12.44.49_PM-937x1024_hu_285e2ba8fccdae.webp" width="1000" height="1093" alt="Young Alabama Lightwave technician in a hard hat flashing a peace sign inside an open warehouse loading dock at the amphitheater build site." loading="lazy" decoding="async"></a><a class="zoom" href="https://joshlambert.xyz/images/posts/connecting-the-comeback-powering-birminghams-new-amphitheater/Screenshot-2025-06-23-at-12.43.36_PM-1-1024x766_hu_2677105b04769757.webp" aria-label="View larger image" style="flex-grow: 1.3368983957219251;"><img src="https://joshlambert.xyz/images/posts/connecting-the-comeback-powering-birminghams-new-amphitheater/Screenshot-2025-06-23-at-12.43.36_PM-1-1024x766_hu_1b2c380c84d52b3.webp" width="1000" height="748" alt="Articulated boom lift extended toward the rafter trusses inside the Birmingham Amphitheater at night, lit by overhead floodlights." loading="lazy" decoding="async"></a><a class="zoom" href="https://joshlambert.xyz/images/posts/connecting-the-comeback-powering-birminghams-new-amphitheater/Screenshot-2025-06-23-at-12.44.38_PM-1024x915_hu_8b63721756f515cc.webp" aria-label="View larger image" style="flex-grow: 1.1185682326621924;"><img src="https://joshlambert.xyz/images/posts/connecting-the-comeback-powering-birminghams-new-amphitheater/Screenshot-2025-06-23-at-12.44.38_PM-1024x915_hu_b8a2045f48e8f24a.webp" width="1000" height="894" alt="Blue Genie articulated boom lift extended toward the corrugated-metal exterior of the Birmingham Amphitheater on a cloudy afternoon." loading="lazy" decoding="async"></a><a class="zoom" href="https://joshlambert.xyz/images/posts/connecting-the-comeback-powering-birminghams-new-amphitheater/Screenshot-2025-06-23-at-12.41.50_PM_hu_dc7bf43b3202996c.webp" aria-label="View larger image" style="flex-grow: 0.9823182711198428;"><img src="https://joshlambert.xyz/images/posts/connecting-the-comeback-powering-birminghams-new-amphitheater/Screenshot-2025-06-23-at-12.41.50_PM_hu_387a41f36d5931c6.webp" width="1000" height="1018" alt="Pair of parabolic backhaul radios mounted on a rooftop balcony rail above a downtown Birmingham skyline view at golden hour." loading="lazy" decoding="async"></a>
  </div></figure>

<p>The facility needed fast and reliable internet, and we delivered, with real-world bursts hitting 700 mbps during testing to public speed test servers, using gear we sourced and deployed on short notice.</p>
<p>The internet went live just in time, and the show didn’t miss a beat. It’s a powerful reminder of what wireless can do: deliver fast, dependable connectivity when traditional options fall short. In moments where speed matters and fiber just can’t get there fast enough, wireless steps up and gets the job done.</p>
<p>We were not alone in getting this connection online. Several good community citizens and vendors stepped up to make this happen:</p>
<div class="mediatext mediatext--left"><figure class="mediatext__media"><a class="zoom" href="https://joshlambert.xyz/images/posts/connecting-the-comeback-powering-birminghams-new-amphitheater/dba_hu_ccdc23cb4067ce91.webp" aria-label="View larger image"><img src="https://joshlambert.xyz/images/posts/connecting-the-comeback-powering-birminghams-new-amphitheater/dba_hu_ccdc23cb4067ce91.webp" width="427" height="448" alt="Logo for DBA, a yellow circular badge featuring a stylized black panda inside a circle and bold &#39;DBA&#39; lettering below." loading="lazy" decoding="async"></a></figure><div class="mediatext__text prose flow">
    Big thanks to <a href="https://x.com/knewter" rel="noopener" target="_blank">Josh Adams</a> at <a href="https://dbadbadba.com/" rel="noopener" target="_blank">DBA</a> for facilitating access and key introductions when time was tight. His support helped us move fast and stay on track.
  </div>
</div>

<p>Additionally we’d be remiss if we didn’t call out the rock solid response time from key vendors in making this happen. You’re in good hands with any of these folks:</p>
<ul>
<li>Marc Negri at <a href="https://www.cticonnect.com/" rel="noopener" target="_blank">CTIConnect</a> for quickly getting us the 6GHz radios we needed for this link.</li>
<li><a href="https://broadbandnow.com/Eagle-Internet-Services" rel="noopener" target="_blank">Eagle Internet / BDA</a> for lending 5GHz radios they had on the shelf for this project.</li>
<li>Ruben Pate at <a href="https://www.cahabamachine.com/" rel="noopener" target="_blank">Cahaba Machine</a> in Centreville for rushing the build of custom non-penetrating roof mounts.</li>
<li>Reed Matte from a local fiber provider for same-day response time assisting with a rushed site walk.</li>
<li>Anthony Polsinelli at <a href="https://carbonnetworksolutions.com/" rel="noopener" target="_blank">Carbon Network Solutions</a> for rushing the network engineering services needed to establish the connection.</li>
<li><a href="https://flyteccomputers.com/" rel="noopener" target="_blank">Flytec Computers</a> for fast order processing and overnighting of the NetPoint dishes.</li>
</ul>
<h3 id="another-beat-in-birminghams-comeback-pulse">Another Beat in Birmingham’s Comeback Pulse</h3>
<p>The Coca-Cola Amphitheater isn’t just a new venue. It’s a signal. Like <a href="https://protectivestadium.com/" rel="noopener" target="_blank">Protective Stadium</a>, <a href="https://topgolf.com/us/" rel="noopener" target="_blank">Top Golf</a>, the <a href="https://www.wbrc.com/2025/03/13/urban-supply-development-set-bring-new-life-birminghams-parkside-district/" rel="noopener" target="_blank">revitalization of Parkside</a>, and the <a href="https://innovationdepot.org/" rel="noopener" target="_blank">Innovation Depot</a>’s tech-forward momentum, it’s part of a broader story, a city shaking off the dust and building something better.</p>
<p>Birmingham is no longer quietly transforming behind the scenes. It’s stepping into the spotlight, backed by real investment in culture, commerce, and community. The amphitheater brings world-class entertainment downtown, but more importantly, it brings people together. Residents, visitors, creators, and builders, all sharing in the energy of a city that knows its best days are still ahead.</p>
<p><figure>
    <a class="zoom" href="https://joshlambert.xyz/images/posts/connecting-the-comeback-powering-birminghams-new-amphitheater/AdobeStock_588014770-1024x682_hu_45408e6c0ef30f68.webp" aria-label="View larger image">
      <img src="https://joshlambert.xyz/images/posts/connecting-the-comeback-powering-birminghams-new-amphitheater/AdobeStock_588014770-1024x682_hu_45408e6c0ef30f68.webp" width="1024" height="682"
           alt="Aerial photo of downtown Birmingham, Alabama at sunset, with the Wells Fargo Tower and other office towers reflected in the orange-streaked sky." loading="lazy" decoding="async">
    </a></figure></p>
<p>And we want to give a <a href="https://www.livenation.com/" rel="noopener" target="_blank">heartfelt thanks to Live Nation</a> for investing in that future. This venue is a gift to the city, and we’re proud to call them neighbors and collaborators in Birmingham’s comeback.</p>
<h3 id="connectivity-is-part-of-the-foundation">Connectivity Is Part of the Foundation</h3>
<p>Behind every thriving event, venue, and moment in Birmingham, there’s infrastructure working behind the scenes. Reliable connectivity is part of that foundation. As the city grows, so does the need for fast, flexible, and resilient internet that keeps up with the pace of progress.</p>
<p>Whether through fiber, microwave, or what’s next, the goal is the same: to support a Birmingham that’s more connected, more capable, and more ready than ever.</p>
<h3 id="need-fast-dependable-internet-for-an-upcoming-event-or-project">Need fast, dependable internet for an upcoming event or project?</h3>
<p>If you’re up against a tight deadline or a tough location, I can help. I have the network, experience, and tools to deliver real solutions when others can’t. <a href="mailto:josh.lambert@centrevilletech.com">Drop me an email and let’s talk</a>.</p>
]]></content:encoded></item><item><title>Lightwave LINK Mobile App Lands In Central Alabama</title><link>https://joshlambert.xyz/work/lightwave-link-mobile-app-lands-in-central-alabama/</link><guid>https://joshlambert.xyz/work/lightwave-link-mobile-app-lands-in-central-alabama/</guid><pubDate>Wed, 14 May 2025 00:00:00 +0000</pubDate><author>josh@lambertmail.xyz (Josh Lambert)</author><description><![CDATA[<p>In an age where digital technology is reshaping how we live, work, and communicate, the need for local connection and community has never been stronger. People are looking for ways to feel grounded, to see and support what’s happening around them. At Alabama Lightwave, we recognize that broadband isn’t just about speed, it’s about bringing people together.</p>
<p><figure>
    <a class="zoom" href="https://joshlambert.xyz/images/posts/lightwave-link-mobile-app-lands-in-central-alabama/AL-logo-on-white-1024x227_hu_738d0d729bc56ba1.webp" aria-label="View larger image">
      <img src="https://joshlambert.xyz/images/posts/lightwave-link-mobile-app-lands-in-central-alabama/AL-logo-on-white-1024x227_hu_738d0d729bc56ba1.webp" width="1024" height="227"
           alt="Alabama Lightwave Inc. logo, a yellow lightning-bolt &lsquo;A&rsquo; icon next to the black &lsquo;ALABAMA LIGHTWAVE, Inc.&rsquo; wordmark." loading="lazy" decoding="async">
    </a></figure></p>]]></description><content:encoded><![CDATA[<p>In an age where digital technology is reshaping how we live, work, and communicate, the need for local connection and community has never been stronger. People are looking for ways to feel grounded, to see and support what’s happening around them. At Alabama Lightwave, we recognize that broadband isn’t just about speed, it’s about bringing people together.</p>
<p><figure>
    <a class="zoom" href="https://joshlambert.xyz/images/posts/lightwave-link-mobile-app-lands-in-central-alabama/AL-logo-on-white-1024x227_hu_738d0d729bc56ba1.webp" aria-label="View larger image">
      <img src="https://joshlambert.xyz/images/posts/lightwave-link-mobile-app-lands-in-central-alabama/AL-logo-on-white-1024x227_hu_738d0d729bc56ba1.webp" width="1024" height="227"
           alt="Alabama Lightwave Inc. logo, a yellow lightning-bolt &lsquo;A&rsquo; icon next to the black &lsquo;ALABAMA LIGHTWAVE, Inc.&rsquo; wordmark." loading="lazy" decoding="async">
    </a></figure></p>
<p>We’re a locally owned and operated internet service provider delivering fast, reliable broadband to homes and businesses across Bibb, Chilton, and Choctaw Counties in Alabama. As the CEO of Alabama Lightwave, I’m proud to help lead a team that’s building more than just a network, we’re building infrastructure that supports real, local impact.</p>
<p>We recently launched a new mobile app called <strong>Lightwave LINK</strong>, designed to deepen the bond between Alabama Lightwave and the communities we serve. This app gives users access to high-definition (1080p) weather camera feeds from towers across our coverage area, offering a real-time, on-the-ground look at local conditions.</p>
<p>At the time of this writing, three camera sites are live and streaming in <strong>Centreville</strong>, <strong>Jemison</strong>, and <strong>Woodstock</strong>. Today, a team is installing a fourth camera in <strong>McCulley Hill</strong> (near West Blocton), with a fifth planned for <strong>Eoline</strong> later this afternoon. Our goal is ambitious: <strong>200 camera locations</strong> across Alabama over the next two years.</p>
<p><figure>
    <a class="zoom" href="https://joshlambert.xyz/images/posts/lightwave-link-mobile-app-lands-in-central-alabama/Screenshot-2025-05-14-at-10.28.46_AM-1024x369_hu_eaed8012ced18f3d.webp" aria-label="View larger image">
      <img src="https://joshlambert.xyz/images/posts/lightwave-link-mobile-app-lands-in-central-alabama/Screenshot-2025-05-14-at-10.28.46_AM-1024x369_hu_eaed8012ced18f3d.webp" width="1024" height="369"
           alt="Three Lightwave LINK tower preview cards, showing Centreville&rsquo;s e911 dispatch tower, Jemison&rsquo;s Church Street water tank, and Woodstock&rsquo;s GPWB water tank." loading="lazy" decoding="async">
    </a></figure></p>
<h3 id="supporting-first-responders--military-personnel">Supporting First Responders &amp; Military Personnel</h3>
<p>Access to Lightwave LINK is <strong>completely free</strong> for all Alabama Lightwave customers, and we’re going a step further. The app is also available at <strong>no cost</strong> to <strong>all active duty military personnel</strong> and <strong>first responders</strong> in our service areas, including:</p>
<ul>
<li>Police Officers</li>
<li>Firefighters</li>
<li>EMTs and paramedics</li>
<li>EMA personnel</li>
<li>Peace officers at local correctional facilities</li>
</ul>
<p>This ensures that those on the front lines, whether serving their country or their community, can access vital visual information regardless of their internet provider.</p>
<h3 id="changing-the-game-for-severe-weather-coverage">Changing The Game For Severe Weather Coverage</h3>
<p>We’ve partnered with <strong>WBRC FOX6 News</strong> in Birmingham and their Chief Meteorologist <strong>Wes Wyatt</strong> to extend the impact of the Lightwave LINK network. Through this collaboration, <strong>the general public</strong> also benefits from our camera system. WBRC’s app will include updated thumbnail images from the camera network, and their meteorologists have <strong>full 1080p live access</strong> for use in broadcasts and severe weather coverage.</p>
<p>This partnership allows critical visual data from our tower cameras to reach thousands of Alabamians during weather emergencies, providing a new layer of public safety and awareness.</p>
<p><figure>
    <a class="zoom" href="https://joshlambert.xyz/images/posts/lightwave-link-mobile-app-lands-in-central-alabama/Screenshot-2025-05-14-at-12.49.41_PM-1024x575_hu_e71cad1e3e760e61.webp" aria-label="View larger image">
      <img src="https://joshlambert.xyz/images/posts/lightwave-link-mobile-app-lands-in-central-alabama/Screenshot-2025-05-14-at-12.49.41_PM-1024x575_hu_e71cad1e3e760e61.webp" width="1024" height="575"
           alt="Lightwave LINK weather-cam screenshot showing downtown Centreville, Alabama under a bright sky, branded with First Alert Weather and Alabama Lightwave overlays." loading="lazy" decoding="async">
    </a></figure></p>
<h3 id="historical-lookout-photo-archival">Historical Lookout Photo Archival</h3>
<p>In addition to live monitoring, the Lightwave LINK camera network will also maintain a <strong>historical archive of still images</strong>, a visual time capsule capturing local skylines, storms, and seasonal change. It’s a small way we’re preserving the unique character of our communities for future generations.</p>
<h3 id="lightwave-link-architecture">Lightwave LINK Architecture</h3>
<p>The Lightwave LINK app has several components that make everything work.</p>
<ol>
<li>iOS and Android Mobile Application</li>
<li>Camera FFMPEG Proxy Server</li>
<li>Link Admin Panel</li>
<li>Link Station Panel</li>
</ol>
<p>The Lightwave LINK mobile application was built with Titanium SDK – a mobile development framework targeting both iOS and Android from a single unified JavaScript codebase. <a href="https://titaniumsdk.com/" rel="noopener" target="_blank">Titanium SDK</a> is maintaned by the non-profit <a href="https://tidev.io/" rel="noopener" target="_blank">TiDev foundation</a> where I serve as chairman – <a href="https://www.bibbvoice.com/2022/05/01/titanium-mobile-development-software-finds-a-new-home-in-central-alabama/" rel="noopener" target="_blank">based right here in Alabama</a>.</p>
<p><figure>
    <a class="zoom" href="https://joshlambert.xyz/images/posts/lightwave-link-mobile-app-lands-in-central-alabama/Screenshot-2025-05-14-at-10.18.31_AM-1024x434_hu_dd48ceb0f8077a42.webp" aria-label="View larger image">
      <img src="https://joshlambert.xyz/images/posts/lightwave-link-mobile-app-lands-in-central-alabama/Screenshot-2025-05-14-at-10.18.31_AM-1024x434_hu_dd48ceb0f8077a42.webp" width="1024" height="434"
           alt="Five iPhone screens of the Lightwave LINK mobile app: tower views, the Jemison camera detail, network status by site, an active Link Pass, and the More menu." loading="lazy" decoding="async">
    </a></figure></p>
<p>The camera streams are powered by the <a href="https://ffmpeg.org/" rel="noopener" target="_blank">open-source <strong>FFmpeg</strong> library</a>. A dedicated server connects to each camera’s RTSP feed, remuxing the video into <strong>HLS (HTTP Live Streaming)</strong> format, which enables smooth, browser-based playback without the need for special plugins.</p>
<p><a href="https://ffmpeg.org/" rel="noopener" target="_blank"><figure>
    <a class="zoom" href="https://joshlambert.xyz/images/posts/lightwave-link-mobile-app-lands-in-central-alabama/FFMPEG_LOGO-1024x309_hu_393be903c4edb7f5.webp" aria-label="View larger image">
      <img src="https://joshlambert.xyz/images/posts/lightwave-link-mobile-app-lands-in-central-alabama/FFMPEG_LOGO-1024x309_hu_393be903c4edb7f5.webp" width="1024" height="309"
           alt="FFmpeg open-source video toolkit logo, with the green 3D &lsquo;Z&rsquo; mark beside the bold black &lsquo;FFmpeg&rsquo; wordmark." loading="lazy" decoding="async">
    </a></figure></a></p>
<p>To manage Lightwave LINK users, we developed a custom admin panel for our support staff. It provides an intuitive interface for tasks like adding or removing users, onboarding TV station partners, uploading overlay graphics, and monitoring platform usage, all without digging through log files or complex database queries. Names and phone numbers in the below screenshot changed to protect customer privacy:</p>
<p><figure>
    <a class="zoom" href="https://joshlambert.xyz/images/posts/lightwave-link-mobile-app-lands-in-central-alabama/Screenshot-2025-05-14-at-1.35.12_PM-1024x518_hu_41ee86830eca17cd.webp" aria-label="View larger image">
      <img src="https://joshlambert.xyz/images/posts/lightwave-link-mobile-app-lands-in-central-alabama/Screenshot-2025-05-14-at-1.35.12_PM-1024x518_hu_41ee86830eca17cd.webp" width="1024" height="518"
           alt="Screenshot of the Lightwave LINK admin web console&rsquo;s User Management page, listing customer phone numbers, pass tiers, and validity dates with edit and Remove Pass actions." loading="lazy" decoding="async">
    </a></figure></p>
<p>We also built a custom software application specifically for TV stations using the Lightwave LINK camera network. It enables fast access to live camera feeds through both a grid view and an interactive 3D map, ensuring that during critical events like tornado outbreaks, meteorologists can immediately identify and display the most relevant camera angles, without wasting time searching manually.</p>
<p><figure>
    <a class="zoom" href="https://joshlambert.xyz/images/posts/lightwave-link-mobile-app-lands-in-central-alabama/Screenshot-2025-05-14-at-2.34.10_PM-1024x807_hu_40fae108e73624a1.webp" aria-label="View larger image">
      <img src="https://joshlambert.xyz/images/posts/lightwave-link-mobile-app-lands-in-central-alabama/Screenshot-2025-05-14-at-2.34.10_PM-1024x807_hu_40fae108e73624a1.webp" width="1024" height="807"
           alt="Map view of the Lightwave LINK Station Viewer, showing labeled tower pins scattered across a satellite map of Bibb and Chilton counties." loading="lazy" decoding="async">
    </a></figure></p>
<p><figure>
    <a class="zoom" href="https://joshlambert.xyz/images/posts/lightwave-link-mobile-app-lands-in-central-alabama/Screenshot-2025-05-14-at-1.49.16_PM-743x1024_hu_a4fb6ae13fba71b4.webp" aria-label="View larger image">
      <img src="https://joshlambert.xyz/images/posts/lightwave-link-mobile-app-lands-in-central-alabama/Screenshot-2025-05-14-at-1.49.16_PM-743x1024_hu_a4fb6ae13fba71b4.webp" width="743" height="1024"
           alt="Lightwave LINK Station Viewer detail page for the Centreville tower, showing the daytime webcam view, location coordinates, sponsor block, and a small camera thumbnail." loading="lazy" decoding="async">
    </a></figure></p>
<p>The web components of Lightwave LINK were developed using a combination of <strong>PHP</strong> and <strong>JavaScript</strong>, with <strong>MariaDB</strong> chosen as the backend database for its proven reliability and performance. For hosting, we selected <strong>Akamai</strong> as our proxy server provider, leveraging the low-latency connection between our <a href="https://mgmix.net/" rel="noopener" target="_blank">network core in Montgomery</a> and Akamai’s Atlanta data center to ensure fast, responsive service.</p>
<figure class="gallery">
  <div class="gallery__row"><a class="zoom" href="https://joshlambert.xyz/images/posts/lightwave-link-mobile-app-lands-in-central-alabama/Screenshot-2025-01-01-at-9.05.51_PM_hu_1a70735650ad853b.webp" aria-label="View larger image" style="flex-grow: 0.9345794392523364;"><img src="https://joshlambert.xyz/images/posts/lightwave-link-mobile-app-lands-in-central-alabama/Screenshot-2025-01-01-at-9.05.51_PM_hu_185f2f92857cd783.webp" width="1000" height="1070" alt="Logo of the Titanium SDK on a dark background, with a red interlocking &#39;T&#39; star mark above the wordmark &#39;Titanium SDK.&#39;" loading="lazy" decoding="async"></a><a class="zoom" href="https://joshlambert.xyz/images/posts/lightwave-link-mobile-app-lands-in-central-alabama/Akamai_hu_63424098b0ec6cd3.webp" aria-label="View larger image" style="flex-grow: 2.277904328018223;"><img src="https://joshlambert.xyz/images/posts/lightwave-link-mobile-app-lands-in-central-alabama/Akamai_hu_88dfb59295324acb.webp" width="1000" height="439" alt="Akamai Technologies logo, with a curving blue stream wave above the orange &#39;Akamai&#39; wordmark." loading="lazy" decoding="async"></a><a class="zoom" href="https://joshlambert.xyz/images/posts/lightwave-link-mobile-app-lands-in-central-alabama/php_hu_2cabb8a2f0d7bcc8.webp" aria-label="View larger image" style="flex-grow: 1.7094017094017093;"><img src="https://joshlambert.xyz/images/posts/lightwave-link-mobile-app-lands-in-central-alabama/php_hu_6d61aa1c3965184f.webp" width="1000" height="585" alt="Official PHP logo, the lowercase &#39;php&#39; wordmark in white inside an oval slate-blue badge." loading="lazy" decoding="async"></a><a class="zoom" href="https://joshlambert.xyz/images/posts/lightwave-link-mobile-app-lands-in-central-alabama/mariadb_hu_64c34125b50b6db3.webp" aria-label="View larger image" style="flex-grow: 1;"><img src="https://joshlambert.xyz/images/posts/lightwave-link-mobile-app-lands-in-central-alabama/mariadb_hu_8f494bc211f1373a.webp" width="1000" height="1000" alt="MariaDB logo, a white seal silhouette on a dark navy rounded square with the &#39;MariaDB&#39; wordmark beneath." loading="lazy" decoding="async"></a>
  </div></figure>

<h3 id="planned-feature-updates-for-lightwave-link">Planned Feature Updates For Lightwave LINK</h3>
<p>We’re actively working on new capabilities to enhance the Lightwave LINK experience, including:</p>
<ul>
<li><strong>Air Quality Monitorin</strong>g: Real-time air quality data sourced from our network of street-level microcells across the coverage area.</li>
<li><strong>Built-in Live Chat Support</strong>: Native in-app chat, eliminating the need for a Facebook Messenger account to reach our support team.</li>
<li><strong>Time Machine for Camera Feeds</strong>: Browse and share archival images from our weather cameras, perfect for looking back at major weather events or scenic moments.</li>
<li><strong>Community Photo Feed</strong>: A social stream featuring user-nominated snapshots from the Lightwave LINK camera network with support for LIKES and COMMENTS just like Facebook or other social networks.</li>
<li><strong>In App Speedtest:</strong> Run speed tests directly within the app using Alabama Lightwave’s on-network SpeedTest servers, providing a smooth and integrated Speedtest experience compared to third-party testing tools.</li>
</ul>
<h3 id="software-available-for-license-with-custom-modifications">Software Available For License With Custom Modifications</h3>
<p>In addition to leading <a href="https://alabamalightwave.com" rel="noopener" target="_blank">Alabama Lightwave</a>, I run <a href="https://centrevilletech.com" rel="noopener" target="_blank">Centreville Tech</a>, where I design mobile apps, build web platforms, and advise ISPs nationwide on technology and marketing strategies that help them stand out and grow.</p>
<p>Lightwave LINK is available for license with full customization. The platform’s standout feature, <strong>live weather cameras powered by your tower network</strong>, offers something fiber-only providers can’t easily replicate. Combined with in-app support and local engagement tools, it helps create a customer experience that drives loyalty and word-of-mouth.</p>
<p>If you’re ready to set your ISP apart with features your competitors can’t easily replicate, <a href="mailto:josh.lambert@centrevilletech.com">send me an email</a> and let’s talk.</p>
<hr>
<p><strong>Author’s note, July 1, 2026.</strong> The white-label camera platform behind Lightwave LINK is now available to every WISP through <a href="https://isphyperdrive.com/" rel="noopener" target="_blank">ISP Hyperdrive</a>, my fractional CMO practice for wireless internet providers. We deploy the app under your brand, broker the local news partnership for your tower cameras, and run the marketing stack around it.</p>
]]></content:encoded></item><item><title>Simplifying the Core: Introducing Rapid5GS</title><link>https://joshlambert.xyz/work/simplifying-the-core-introducing-rapid5gs/</link><guid>https://joshlambert.xyz/work/simplifying-the-core-introducing-rapid5gs/</guid><pubDate>Mon, 14 Apr 2025 00:00:00 +0000</pubDate><author>josh@lambertmail.xyz (Josh Lambert)</author><description><![CDATA[<p>One of the hardest parts of building a private LTE or 5G network is getting a functional network core up and running. In mobility parlance, this core is known as the EPC (Evolved Packet Core) or 5GC (5G Core), and it’s essentially the <em>brain</em> of a cellular network.</p>
<p>This “brain” handles all the essential functions that make a modern mobility network possible. A few key responsibilities include:</p>
<ol>
<li><strong>Authorizing subscriber devices</strong> to connect to the network.</li>
<li><strong>Allocating IP addresses</strong> and managing routing information for subscribers.</li>
<li><strong>Handling Quality of Service (QoS)</strong> for user traffic.</li>
<li><strong>Managing mobility</strong>, such as handovers between towers or roaming onto other LTE/5G networks.</li>
</ol>
<p>Unlike traditional wireless you may be used to where the radios run embedded software to manage their access point name, password, QOS, etc like the wireless routing running in your home right now – in the mobility world, the radios themselves are “dumb”. Instead of on-device management of these functions, they’re all offloaded to the RAN and CORE. Rapid5GS is focused on making the CORE part of the LTE/5G deployment <strong>FAST</strong> and <strong>SIMPLE</strong> – just like setting up a router is for your home or business.</p>]]></description><content:encoded><![CDATA[<p>One of the hardest parts of building a private LTE or 5G network is getting a functional network core up and running. In mobility parlance, this core is known as the EPC (Evolved Packet Core) or 5GC (5G Core), and it’s essentially the <em>brain</em> of a cellular network.</p>
<p>This “brain” handles all the essential functions that make a modern mobility network possible. A few key responsibilities include:</p>
<ol>
<li><strong>Authorizing subscriber devices</strong> to connect to the network.</li>
<li><strong>Allocating IP addresses</strong> and managing routing information for subscribers.</li>
<li><strong>Handling Quality of Service (QoS)</strong> for user traffic.</li>
<li><strong>Managing mobility</strong>, such as handovers between towers or roaming onto other LTE/5G networks.</li>
</ol>
<p>Unlike traditional wireless you may be used to where the radios run embedded software to manage their access point name, password, QOS, etc like the wireless routing running in your home right now – in the mobility world, the radios themselves are “dumb”. Instead of on-device management of these functions, they’re all offloaded to the RAN and CORE. Rapid5GS is focused on making the CORE part of the LTE/5G deployment <strong>FAST</strong> and <strong>SIMPLE</strong> – just like setting up a router is for your home or business.</p>
<p>While several commercial core solutions exist, they are often expensive and complex, requiring specialized expertise to deploy and maintain. High-end options from companies like Nokia and Microsoft are powerful and flexible, but they come with a price tag that puts them out of reach for most smaller operators in the commercial and government sectors.</p>
<p>Open-source alternatives like <strong><a href="https://open5gs.org/" rel="noopener" target="_blank">Open5GS</a></strong> and <strong><a href="https://magmacore.org/" rel="noopener" target="_blank">Magma</a></strong> offer significant promise, but they come with steep learning curves. It took me several days, plus some outside help, to get Open5GS delivering internet access to actual customer devices. I’m still in the process of building a reliable Magma environment.</p>
<h2 id="enter-rapid5gs">Enter Rapid5GS</h2>
<p><a href="https://rapid5gs.com" rel="noopener" target="_blank">Rapid5GS</a> was born from the lessons I learned while deploying Open5GS in the real world. Every time I figured out a key setup step or tricky configuration to get Open5GS functional for subscriber traffic, I turned it into a Bash script and added it to the Rapid5GS installer.</p>
<p>Once the installation was automated and reliable, I shifted focus to usability. I started adding scripts to simplify common tasks and make the platform approachable for users without deep Linux experience. Some of the features now include:</p>
<ul>
<li><strong>Viewing connected access points</strong> and their latency.</li>
<li><strong>Viewing attached subscriber devices</strong> and the APNs they’re using.</li>
<li><strong>Restarting all core services</strong> with a single command.</li>
<li><strong>Tailing key logs</strong> (MME, SMF) to simplify troubleshooting.</li>
</ul>
<p>The theme here is <em>ease of use</em>. Even the supported Linux distributions, <a href="https://www.debian.org/" rel="noopener" target="_blank">Debian</a> and <a href="https://ubuntu.com/" rel="noopener" target="_blank">Ubuntu</a>, were chosen because they’re beginner-friendly, with excellent documentation and community support.</p>
<p><figure>
    <a class="zoom" href="https://joshlambert.xyz/images/posts/simplifying-the-core-introducing-rapid5gs/install-1024x1024_hu_4e7f8d4ff77f589c.webp" aria-label="View larger image">
      <img src="https://joshlambert.xyz/images/posts/simplifying-the-core-introducing-rapid5gs/install-1024x1024_hu_4e7f8d4ff77f589c.webp" width="1024" height="1024"
           alt="Terminal screenshot of the Rapid5GS installation menu, showing options to check requirements, configure, and install MongoDB, Node.js, Open5GS, and the Web UI." loading="lazy" decoding="async">
    </a></figure></p>
<p><figure>
    <a class="zoom" href="https://joshlambert.xyz/images/posts/simplifying-the-core-introducing-rapid5gs/control-1024x1024_hu_a3f46905e91a7bc1.webp" aria-label="View larger image">
      <img src="https://joshlambert.xyz/images/posts/simplifying-the-core-introducing-rapid5gs/control-1024x1024_hu_a3f46905e91a7bc1.webp" width="1024" height="1024"
           alt="Terminal screenshot of the Rapid5GS Control Panel menu with options to view EPC throughput, eNB and UE status, and live-tail the MME and SMF logs." loading="lazy" decoding="async">
    </a></figure></p>
<p><strong>Current Limitations</strong></p>
<ul>
<li>NAT’ing of customer traffic directly on the core is the only networking configuration supported today out of the box.</li>
<li>Two Ethernet interfaces (management and customer traffic) required and the installer is opinionated about which Open5GS services will be binded to said interfaces. This isn’t in direct user control yet during the setup process.</li>
<li>There’s no way to access subscriber units yet attached to the core without setting up manual NAT ip port forwards on the core itself.</li>
</ul>
<p><strong>Planned Features</strong></p>
<ul>
<li>Support for IP pool allocation from upstream routers instead of on-core NAT.</li>
<li>A cloud-based controller.</li>
<li>Latency monitoring of customer UEs.</li>
<li>Watchdog processes to restart failed services.</li>
<li>Enhanced firewalling.</li>
<li>A dedicated web UI beyond the glitchly default Open5GS web UI.</li>
</ul>
<p><strong>Open Source and Growing</strong></p>
<p>Rapid5GS is fully open-source under the GPLv3 license, and the project website, <a href="https://rapid5gs.com" rel="noopener" target="_blank">rapid5gs.com</a>, includes documentation and the one-line install command to get started.</p>
<p>A list of known-supported eNBs and UEs can be found on the Rapid5GS website. Running the core is confirmed to work on this used <a href="https://www.ebay.com/sch/i.html?_nkw=Lenovo&#43;ThinkCentre&#43;M710q&amp;_sacat=0&amp;_from=R40&amp;_trksid=p2332490.m570.l1313" rel="noopener" target="_blank">$70 mini computer for sale on eBay</a> if you add an additional USB ethernet interface to it. Yes, that’s right, you can run a mobility core on a used mini computer. Open5GS is amazing!</p>
<p><figure>
    <a class="zoom" href="https://joshlambert.xyz/images/posts/simplifying-the-core-introducing-rapid5gs/image-1024x675_hu_c581b6860cf9235e.webp" aria-label="View larger image">
      <img src="https://joshlambert.xyz/images/posts/simplifying-the-core-introducing-rapid5gs/image-1024x675_hu_c581b6860cf9235e.webp" width="1024" height="675"
           alt="Terminal screenshot of Rapid5GS&rsquo;s EPC Throughput Monitor showing live WAN, MGMT, and uplink/downlink Mbps bars for the connected eNB." loading="lazy" decoding="async">
    </a></figure></p>
<p>I’m thrilled to share Rapid5GS with the world and plan to keep expanding it over the coming weeks and months. <a href="https://github.com/joshualambert/rapid5gs/pulls" rel="noopener" target="_blank">Contributions are welcome</a>, whether it’s code, documentation, or feedback.</p>
<p>Check out the <a href="https://rapid5gs.com" rel="noopener" target="_blank">Rapid5GS website by clicking here</a>, or check out the <a href="https://github.com/joshualambert/rapid5gs" rel="noopener" target="_blank">source code for Rapid5GS</a> by clicking here.</p>
<hr>
<p><strong>Author’s note, July 15, 2026.</strong> This post is the origin story. If what you are actually planning is a build, the practical companion is my <a href="https://joshlambert.xyz/rapid-deployment-lte/">Rapid Deployment LTE</a> guide, which walks the whole path in order: the core first with Rapid5GS, tested Nokia AZQC radios from The Edge Mile, and a professional crew on the tower.</p>
]]></content:encoded></item><item><title>Building The Bibb Voice: A Local News Site for Bibb County</title><link>https://joshlambert.xyz/work/website-for-the-bibb-voice/</link><guid>https://joshlambert.xyz/work/website-for-the-bibb-voice/</guid><pubDate>Fri, 28 Feb 2025 00:00:00 +0000</pubDate><author>josh@lambertmail.xyz (Josh Lambert)</author><description><![CDATA[<div class="mediatext mediatext--left"><figure class="mediatext__media"><a class="zoom" href="https://joshlambert.xyz/images/posts/website-for-the-bibb-voice/Screenshot-2025-02-27-at-6.20.38_PM_hu_30ef76969320a8c1.webp" aria-label="View larger image"><img src="https://joshlambert.xyz/images/posts/website-for-the-bibb-voice/Screenshot-2025-02-27-at-6.20.38_PM_hu_30ef76969320a8c1.webp" width="462" height="546" alt="Promotional graphic for The Bibb Voice with brush-script title and the tagline &#39;Community News, Digital Age,&#39; over a photo of a person at a laptop holding a smartphone." loading="lazy" decoding="async"></a></figure><div class="mediatext__text prose flow">
    One of America’s founding principles was the <a href="https://constitution.congress.gov/browse/essay/amdt1-9-1/ALDE_00000395/" rel="noopener" target="_blank">The Freedom Of The Press</a> – the idea that government was supposed to be, by design, accountable to it’s citizenry, was truly revolutionary.
  </div>
</div>

<p>In an age where social media and fake news causes bad information to spread at breathtaking rates, local news is more important than ever in preserving the founding principles of the land I call home. <strong>Good local journalism has not just the power to hold government in check – but also the power to keep a citizenry informed and educated.</strong></p>]]></description><content:encoded><![CDATA[<div class="mediatext mediatext--left"><figure class="mediatext__media"><a class="zoom" href="https://joshlambert.xyz/images/posts/website-for-the-bibb-voice/Screenshot-2025-02-27-at-6.20.38_PM_hu_30ef76969320a8c1.webp" aria-label="View larger image"><img src="https://joshlambert.xyz/images/posts/website-for-the-bibb-voice/Screenshot-2025-02-27-at-6.20.38_PM_hu_30ef76969320a8c1.webp" width="462" height="546" alt="Promotional graphic for The Bibb Voice with brush-script title and the tagline &#39;Community News, Digital Age,&#39; over a photo of a person at a laptop holding a smartphone." loading="lazy" decoding="async"></a></figure><div class="mediatext__text prose flow">
    One of America’s founding principles was the <a href="https://constitution.congress.gov/browse/essay/amdt1-9-1/ALDE_00000395/" rel="noopener" target="_blank">The Freedom Of The Press</a> – the idea that government was supposed to be, by design, accountable to it’s citizenry, was truly revolutionary.
  </div>
</div>

<p>In an age where social media and fake news causes bad information to spread at breathtaking rates, local news is more important than ever in preserving the founding principles of the land I call home. <strong>Good local journalism has not just the power to hold government in check – but also the power to keep a citizenry informed and educated.</strong></p>
<p>With that in mind, it was my honor and joy to be part of the founding team for <a href="https://www.bibbvoice.com/" rel="noopener" target="_blank">The Bibb Voice</a>. Through this website, we brought a much-needed new source of local journalism to my community.</p>
<p><strong>My direct contributions and responsibilities included:</strong></p>
<ul>
<li>Provisioning and configuration of a <a href="https://www.akamai.com/" rel="noopener" target="_blank">Akamai VPS</a> to host the website.</li>
<li>Installation and configuration of the <a href="https://wordpress.org/" rel="noopener" target="_blank">WordPress CMS</a>.</li>
<li>Performance optimization and configuration of the <a href="https://wp-rocket.me/" rel="noopener" target="_blank">WP Rocket</a> plugin.</li>
<li>SEO optimizations to ensure good syndication of articles in <a href="https://news.google.com" rel="noopener" target="_blank">Google News</a> and other news aggregators.</li>
<li>Setup of ad distribution mechanisms on the website to track views, clicks, and other performance metrics.</li>
</ul>
<figure class="gallery">
  <div class="gallery__row"><a class="zoom" href="https://joshlambert.xyz/images/posts/website-for-the-bibb-voice/Screenshot-2025-01-01-at-9.06.04_PM_hu_f81a682a92ecf1a9.webp" aria-label="View larger image" style="flex-grow: 2.1459227467811157;"><img src="https://joshlambert.xyz/images/posts/website-for-the-bibb-voice/Screenshot-2025-01-01-at-9.06.04_PM_hu_a90fdd18550a989c.webp" width="1000" height="466" alt="Logo of WordPress.org, the white circled W glyph with the WordPress.org wordmark on a dark slate background." loading="lazy" decoding="async"></a><a class="zoom" href="https://joshlambert.xyz/images/posts/website-for-the-bibb-voice/Akamai_hu_63424098b0ec6cd3.webp" aria-label="View larger image" style="flex-grow: 2.277904328018223;"><img src="https://joshlambert.xyz/images/posts/website-for-the-bibb-voice/Akamai_hu_88dfb59295324acb.webp" width="1000" height="439" alt="Akamai Technologies logo, with a curving blue stream wave above the orange &#39;Akamai&#39; wordmark." loading="lazy" decoding="async"></a><a class="zoom" href="https://joshlambert.xyz/images/posts/website-for-the-bibb-voice/Screenshot-2025-02-27-at-6.42.59_PM_hu_52d06090f81fadec.webp" aria-label="View larger image" style="flex-grow: 1.1655011655011656;"><img src="https://joshlambert.xyz/images/posts/website-for-the-bibb-voice/Screenshot-2025-02-27-at-6.42.59_PM_hu_fa956b8b72c376b1.webp" width="1000" height="858" alt="Google News logo, three offset news-card pages in red, yellow, and green behind a blue card with a white &#39;G&#39; and content lines, above the &#39;Google News&#39; wordmark." loading="lazy" decoding="async"></a>
  </div></figure>

<p><strong>The website has experienced significant reach and been part of numerous breaking news events over the years</strong>. It’s operated will minimal downtime and scaled with traffic demand without issues. Everything’s just “hummed along” – the way a website should!</p>
<p>Do you need help setting up a news website for your organization configured for significant traffic demand? I can help! <a href="mailto:josh.lambert@centrevilletech.com">Drop me an email and let’s figure out how to make it happen</a>.</p>
]]></content:encoded></item><item><title>Website for Repair On The Square</title><link>https://joshlambert.xyz/work/website-for-repair-on-the-square/</link><guid>https://joshlambert.xyz/work/website-for-repair-on-the-square/</guid><pubDate>Thu, 27 Feb 2025 00:00:00 +0000</pubDate><author>josh@lambertmail.xyz (Josh Lambert)</author><description><![CDATA[<div class="mediatext mediatext--left"><figure class="mediatext__media"><a class="zoom" href="https://joshlambert.xyz/images/posts/website-for-repair-on-the-square/file-1024x1024_hu_7d4af3777b02de65.webp" aria-label="View larger image"><img src="https://joshlambert.xyz/images/posts/website-for-repair-on-the-square/file-1024x1024_hu_7d4af3777b02de65.webp" width="1024" height="1024" alt="Repair On The Square Centreville circular logo, reading &#39;Mobile Devices and Computers, Repair on the Square, Centreville&#39; in black on white." loading="lazy" decoding="async"></a></figure><div class="mediatext__text prose flow">
    <strong>REPAIR BEFORE REPLACE</strong> – this is something near and dear to my heart in an age of mass-consumerism and waste. The fact that we can get new life out of electronics by replacing a screen or a charging port is magic and a call-back to the American ideals of good stewardship and old-fashioned ingenuity.
  </div>
</div>

<p><a href="https://repaironthesquare.com/" rel="noopener" target="_blank">Repair On The Square</a> is a device repair shop based on the <a href="https://www.cityofcentreville.com/" rel="noopener" target="_blank">Historic Centreville Town Square</a> that specializes in repairs of iPhone, iPad, Android, and other small electronics devices. They can repair screens, charge ports, swollen batteries, broken microphones, and more.</p>]]></description><content:encoded><![CDATA[<div class="mediatext mediatext--left"><figure class="mediatext__media"><a class="zoom" href="https://joshlambert.xyz/images/posts/website-for-repair-on-the-square/file-1024x1024_hu_7d4af3777b02de65.webp" aria-label="View larger image"><img src="https://joshlambert.xyz/images/posts/website-for-repair-on-the-square/file-1024x1024_hu_7d4af3777b02de65.webp" width="1024" height="1024" alt="Repair On The Square Centreville circular logo, reading &#39;Mobile Devices and Computers, Repair on the Square, Centreville&#39; in black on white." loading="lazy" decoding="async"></a></figure><div class="mediatext__text prose flow">
    <strong>REPAIR BEFORE REPLACE</strong> – this is something near and dear to my heart in an age of mass-consumerism and waste. The fact that we can get new life out of electronics by replacing a screen or a charging port is magic and a call-back to the American ideals of good stewardship and old-fashioned ingenuity.
  </div>
</div>

<p><a href="https://repaironthesquare.com/" rel="noopener" target="_blank">Repair On The Square</a> is a device repair shop based on the <a href="https://www.cityofcentreville.com/" rel="noopener" target="_blank">Historic Centreville Town Square</a> that specializes in repairs of iPhone, iPad, Android, and other small electronics devices. They can repair screens, charge ports, swollen batteries, broken microphones, and more.</p>
<p>I worked with the team at Repair On The Square to design and launch a website aligned with their brand guidelines and logo, showcasing their business offerings in a modern, polished way. My responsibilities included:</p>
<ul>
<li>Provisioning of a web server and WordPress to run the website.</li>
<li>Customization of the theme to match their logo and style guide.</li>
<li>Integration with Slack to feed business inquiry forms to their internal Slack group.</li>
<li>Authored all landing page and other website copy.</li>
<li>Selection of stock photos that supported the copy.</li>
<li>Setup of Facebook Ads to push people to the different website landing pages based on targeted geofences.</li>
<li>Worked with videographer on production of a website promotional video.</li>
</ul>
<p>My CMS of choice for this website was <a href="https://wordpress.org/" rel="noopener" target="_blank">WordPress</a>, hosted on top of a custom-tuned <a href="https://www.akamai.com/" rel="noopener" target="_blank">Akamai</a> VPS server. Integration with Slack was done using <a href="https://www.make.com" rel="noopener" target="_blank">Make.com</a> allowing leads to quickly land on the technician’s desk without needing to dig through emails.</p>
<figure class="gallery">
  <div class="gallery__row"><a class="zoom" href="https://joshlambert.xyz/images/posts/website-for-repair-on-the-square/Screenshot-2025-01-01-at-9.06.04_PM_hu_f81a682a92ecf1a9.webp" aria-label="View larger image" style="flex-grow: 2.1459227467811157;"><img src="https://joshlambert.xyz/images/posts/website-for-repair-on-the-square/Screenshot-2025-01-01-at-9.06.04_PM_hu_a90fdd18550a989c.webp" width="1000" height="466" alt="Logo of WordPress.org, the white circled W glyph with the WordPress.org wordmark on a dark slate background." loading="lazy" decoding="async"></a><a class="zoom" href="https://joshlambert.xyz/images/posts/website-for-repair-on-the-square/Akamai_hu_63424098b0ec6cd3.webp" aria-label="View larger image" style="flex-grow: 2.277904328018223;"><img src="https://joshlambert.xyz/images/posts/website-for-repair-on-the-square/Akamai_hu_88dfb59295324acb.webp" width="1000" height="439" alt="Akamai Technologies logo, with a curving blue stream wave above the orange &#39;Akamai&#39; wordmark." loading="lazy" decoding="async"></a><a class="zoom" href="https://joshlambert.xyz/images/posts/website-for-repair-on-the-square/make_hu_7948d4c45065734e.webp" aria-label="View larger image" style="flex-grow: 2.8328611898016995;"><img src="https://joshlambert.xyz/images/posts/website-for-repair-on-the-square/make_hu_3187294e51583c14.webp" width="1000" height="353" alt="Make.com logo, with three white slanted bars and the lowercase &#39;make&#39; wordmark on a deep purple background." loading="lazy" decoding="async"></a>
  </div></figure>

<p><strong>The website has been a customer generation engine for Repair On The Square</strong>. Throughout the day, Slack “dings” with inquires from new customers, keeping the repair technician busy and profitable.</p>
<p>Do you need help building a sales-focused website for your organization? I can help! <a href="mailto:josh.lambert@centrevilletech.com">Drop me an email and let’s figure out how to make it happen</a>.</p>
]]></content:encoded></item><item><title>React Mobile: A Personal Safety App Built on Titanium</title><link>https://joshlambert.xyz/work/react-mobile-safety-app/</link><guid>https://joshlambert.xyz/work/react-mobile-safety-app/</guid><pubDate>Sat, 22 Feb 2025 00:00:00 +0000</pubDate><author>josh@lambertmail.xyz (Josh Lambert)</author><description><![CDATA[<p><strong>Press a button, get help. It’s that simple.</strong></p>
<p>React Mobile, founded in 2011, was a mobile safety app designed to make it fast and simple to get help when you need it. Simply press the discrete wearable bluetooth button paired to your phone, and a preset list of emergency contacts will be sent a text message and email with your location.</p>
<p><figure>
    <a class="zoom" href="https://joshlambert.xyz/images/posts/react-mobile-safety-app/ReactSidekickThumbnailsmall-1024x764-1_hu_acb6bf6b8c5fdb59.webp" aria-label="View larger image">
      <img src="https://joshlambert.xyz/images/posts/react-mobile-safety-app/ReactSidekickThumbnailsmall-1024x764-1_hu_acb6bf6b8c5fdb59.webp" width="1024" height="764"
           alt="React Sidekick promo image: a young woman tapping the React Sidekick wrist mount, an iPhone showing the I&rsquo;m-Fine, Follow-Me, and SOS interface, and the Bluetooth panic-button puck." loading="lazy" decoding="async">
    </a></figure></p>]]></description><content:encoded><![CDATA[<p><strong>Press a button, get help. It’s that simple.</strong></p>
<p>React Mobile, founded in 2011, was a mobile safety app designed to make it fast and simple to get help when you need it. Simply press the discrete wearable bluetooth button paired to your phone, and a preset list of emergency contacts will be sent a text message and email with your location.</p>
<p><figure>
    <a class="zoom" href="https://joshlambert.xyz/images/posts/react-mobile-safety-app/ReactSidekickThumbnailsmall-1024x764-1_hu_acb6bf6b8c5fdb59.webp" aria-label="View larger image">
      <img src="https://joshlambert.xyz/images/posts/react-mobile-safety-app/ReactSidekickThumbnailsmall-1024x764-1_hu_acb6bf6b8c5fdb59.webp" width="1024" height="764"
           alt="React Sidekick promo image: a young woman tapping the React Sidekick wrist mount, an iPhone showing the I&rsquo;m-Fine, Follow-Me, and SOS interface, and the Bluetooth panic-button puck." loading="lazy" decoding="async">
    </a></figure></p>
<p>I worked with the team at React Mobile to develop the initial version of the mobile application before the <a href="https://joshlambert.xyz/work/react-mobile-hotel-dispatch-center/">company pivoted into the hotel wearables space</a>.</p>
<p><strong>The app’s debut feature set included:</strong></p>
<ul>
<li>Support for iOS and Android</li>
<li>Ability to add emergency contacts with photos, email, and SMS notification contact methods.</li>
<li>Pairing of the “Sidekick” bluetooth wearable.</li>
<li>Sign-In via Facebook</li>
<li>Live web console to view user’s location in real-time.</li>
<li>Email and SMS message notification alerts.</li>
</ul>
<p><a href="https://www.kickstarter.com/projects/robbmonkman/the-react-sidekick-changing-the-way-people-call-fo" rel="noopener" target="_blank">The first versions of React Mobile was funded by a successful Kickstarter campaign that you can check out by clicking here.</a></p>
<p>The React Mobile Sidekick was covered by <a href="https://www.wgrz.com/" rel="noopener" target="_blank">WGRZ, a NBC affiliated news outlet in Buffalo, New York</a>.</p>
<div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;">
      <iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen" loading="eager" referrerpolicy="strict-origin-when-cross-origin" src="https://www.youtube.com/embed/8N18zuNv_0Q?autoplay=0&amp;controls=1&amp;end=0&amp;loop=0&amp;mute=0&amp;start=0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" title="YouTube video"></iframe>
    </div>

<p>I built the app using the open source <a href="https://titaniumsdk.com" rel="noopener" target="_blank">Titanium Mobile framework</a> targeting both iOS and Android devices. I leveraged the <a href="https://sendgrid.com/en-us" rel="noopener" target="_blank">SendGrid</a> service to handle sending of emails, and <a href="https://www.twilio.com/en-us" rel="noopener" target="_blank">Twilio</a> to handle SMS message notifications.</p>
<figure class="gallery">
  <div class="gallery__row"><a class="zoom" href="https://joshlambert.xyz/images/posts/react-mobile-safety-app/Screenshot-2025-01-01-at-9.05.51_PM_hu_1a70735650ad853b.webp" aria-label="View larger image" style="flex-grow: 0.9345794392523364;"><img src="https://joshlambert.xyz/images/posts/react-mobile-safety-app/Screenshot-2025-01-01-at-9.05.51_PM_hu_185f2f92857cd783.webp" width="1000" height="1070" alt="Logo of the Titanium SDK on a dark background, with a red interlocking &#39;T&#39; star mark above the wordmark &#39;Titanium SDK.&#39;" loading="lazy" decoding="async"></a><a class="zoom" href="https://joshlambert.xyz/images/posts/react-mobile-safety-app/blog-sendgrid_hu_e2fcba4b1342112a.webp" aria-label="View larger image" style="flex-grow: 1.7761989342806395;"><img src="https://joshlambert.xyz/images/posts/react-mobile-safety-app/blog-sendgrid_hu_501dba2c7af21349.webp" width="1000" height="563" alt="Twilio SendGrid logo, with a stacked-square envelope mark and the white &#39;SendGrid&#39; wordmark on a navy background." loading="lazy" decoding="async"></a><a class="zoom" href="https://joshlambert.xyz/images/posts/react-mobile-safety-app/twilio-logo-6a141664f35a78e9ac08eed627c2a859_hu_fa524f0deafe36c6.webp" aria-label="View larger image" style="flex-grow: 3.225806451612903;"><img src="https://joshlambert.xyz/images/posts/react-mobile-safety-app/twilio-logo-6a141664f35a78e9ac08eed627c2a859_hu_f4db49923f20172e.webp" width="1000" height="310" alt="Twilio logo, with the four-dot face icon (two red, two gray) inside a gradient gray circle next to the red &#39;twilio&#39; wordmark." loading="lazy" decoding="async"></a>
  </div></figure>

<p>My roll in development of this mobile application caused me to get deeply embedded in the Titanum mobile development community. As a result, <a href="https://www.bibbvoice.com/2022/05/01/titanium-mobile-development-software-finds-a-new-home-in-central-alabama/" rel="noopener" target="_blank">I helped bring Titanum’s on-going maintenance and organization structure into a 501c3 non-profit founded right here in Alabama</a>. I now serve as chairman of the Titanium foundation and have helped keep the framework actively maintained through management of open-source community contributors and corporate support.</p>
<p>Do you need help developing a mobile application like <a href="https://www.reactmobile.com/" rel="noopener" target="_blank">React Mobile</a>? I’ve built a number of them and can help! <a href="mailto:josh.lambert@centrevilletech.com">Drop me an email and let’s get in touch.</a></p>
]]></content:encoded></item><item><title>DNA S.A.M.M.I.E. Freight Visibility Platform</title><link>https://joshlambert.xyz/work/dna-s-a-m-m-i-e-freight-visibility-platform/</link><guid>https://joshlambert.xyz/work/dna-s-a-m-m-i-e-freight-visibility-platform/</guid><pubDate>Sat, 22 Feb 2025 00:00:00 +0000</pubDate><author>josh@lambertmail.xyz (Josh Lambert)</author><description><![CDATA[<p><a href="https://dnasam.com/" rel="noopener" target="_blank">DNA S.A.M.M.I.E.</a> is a logistics and freight management platform designed to provide unparalleled visibility of cargo movement during the shipment lifecycle.</p>
<p>Traditionally, freight visibility involves tons of emails, phone calls, and other manual processes to determine where cargo is as it moves from factory to final destination. It’s a messy process prone to data entry failures and other mistakes. A headache for all involved!</p>
<p>I worked with the team at <a href="https://dnasupplychain.com/" rel="noopener" target="_blank">DNA Supply Chain</a> to build a solution to this problem from the ground up.</p>]]></description><content:encoded><![CDATA[<p><a href="https://dnasam.com/" rel="noopener" target="_blank">DNA S.A.M.M.I.E.</a> is a logistics and freight management platform designed to provide unparalleled visibility of cargo movement during the shipment lifecycle.</p>
<p>Traditionally, freight visibility involves tons of emails, phone calls, and other manual processes to determine where cargo is as it moves from factory to final destination. It’s a messy process prone to data entry failures and other mistakes. A headache for all involved!</p>
<p>I worked with the team at <a href="https://dnasupplychain.com/" rel="noopener" target="_blank">DNA Supply Chain</a> to build a solution to this problem from the ground up.</p>
<p>S.A.M.M.I.E provides a tracking solution that offers complete end-to-end visibility of where cargo is with the freshest possible data from multiple sources.</p>
<p><strong>This means a user can see things like:</strong></p>
<ul>
<li>Current location of the container.</li>
<li>Original Arrival Date, and A.I. Predicted Arrival Date of the container to the final destination.</li>
<li>All attachments that go with the shipment such as ISF, Bill of Lading, and more with one click.</li>
<li>PO Number</li>
<li>AND MORE</li>
</ul>
<p><strong>In addition to all of the visibility, the platform also offers several industry-leading features to interact with DNA during the shipment process including:</strong></p>
<ul>
<li>Email notifications as the shipment progresses.</li>
<li>Ability to “Request Update” directly from the tracking portal so that the human responsible for the shipment can put eyes on everything and make sure the data is as fresh and accurate as possible.</li>
<li>Ability to “Mark as Hot” causing a shipment to stand out from others on the sheet, making it easier to track shipments in the portal that are high priority.</li>
<li>Ability to show/hide what columns appear on the tracking sheet.</li>
<li>Ability to export the sheet contents to Excel or PDF.</li>
<li>Ability to cause shipments with delays to blink red when a an exception event occurs.</li>
<li>AND MORE.</li>
</ul>
<p><a href="https://sales.dnasam.com/sammie-introduction/" rel="noopener" target="_blank">You can click here to read more about DNA S.A.M.M.I.E and see a real-time demo on the DNA website.</a></p>
<p>My team and I developed nearly all S.A.M.M.I.E features and in the process learned a significant amount about how the freight forwarding and logistics space operates. We leveraged a combination of <a href="https://www.php.net/" rel="noopener" target="_blank">PHP</a>, <a href="https://en.wikipedia.org/wiki/JavaScript" rel="noopener" target="_blank">JavaScript</a>, and <a href="https://jquery.com/" rel="noopener" target="_blank">jQuery</a> to bring S.A.M.M.I.E to life. A designer worked directly for me along with several engineers under my direction throughout the development process. <strong>All of them executed with excellence.</strong> This combination of expertise allowed us to build something truly special in the logistics/freight space. I’m proud of all involved and look forward to build more things like this!</p>
<figure class="gallery">
  <div class="gallery__row"><a class="zoom" href="https://joshlambert.xyz/images/posts/dna-s-a-m-m-i-e-freight-visibility-platform/php_hu_2cabb8a2f0d7bcc8.webp" aria-label="View larger image" style="flex-grow: 1.7094017094017093;"><img src="https://joshlambert.xyz/images/posts/dna-s-a-m-m-i-e-freight-visibility-platform/php_hu_6d61aa1c3965184f.webp" width="1000" height="585" alt="Official PHP logo, the lowercase &#39;php&#39; wordmark in white inside an oval slate-blue badge." loading="lazy" decoding="async"></a><a class="zoom" href="https://joshlambert.xyz/images/posts/dna-s-a-m-m-i-e-freight-visibility-platform/62a76aadbd73a4af5c5d4fc5_hu_aaa6a06abb2ac968.webp" aria-label="View larger image" style="flex-grow: 1.183431952662722;"><img src="https://joshlambert.xyz/images/posts/dna-s-a-m-m-i-e-freight-visibility-platform/62a76aadbd73a4af5c5d4fc5_hu_7a57565e0de576f3.webp" width="1000" height="845" alt="Official JavaScript logo, the bold black &#39;JS&#39; on a yellow square." loading="lazy" decoding="async"></a><a class="zoom" href="https://joshlambert.xyz/images/posts/dna-s-a-m-m-i-e-freight-visibility-platform/image_hu_c4ba694203f92b92.webp" aria-label="View larger image" style="flex-grow: 1;"><img src="https://joshlambert.xyz/images/posts/dna-s-a-m-m-i-e-freight-visibility-platform/image_hu_988a17c3c023369.webp" width="1000" height="1000" alt="Lottie open-source animation library logo, with a teal flowing script that spells &#39;Lottie&#39; on a white background." loading="lazy" decoding="async"></a>
  </div></figure>

<p>Do you operate in the freight/logistics space and need a competent engineering consultant to help you build something like this? <a href="mailto:josh.lambert@centrevilletech.com">I can help! Jump in my email and let’s talk.</a></p>
]]></content:encoded></item><item><title>CareAR Assist Interactive Web Demo</title><link>https://joshlambert.xyz/work/carear-assist-interactive-web-demo/</link><guid>https://joshlambert.xyz/work/carear-assist-interactive-web-demo/</guid><pubDate>Sat, 22 Feb 2025 00:00:00 +0000</pubDate><author>josh@lambertmail.xyz (Josh Lambert)</author><description><![CDATA[<p><a href="https://carear.com" rel="noopener" target="_blank">CareAR</a>, a division of <a href="https://www.xerox.com/" rel="noopener" target="_blank">Xerox</a>, is an augmented reality software company with the motto to “Make Expertise Accessible”. They do this through their proprietary mobile application which connects field technicians to experts at their home office. Both the technician and remote expert are able to interact together in real-time over live-stream video from the work site where they can collaborate to solve challenges that the technician would struggle to solve independently without assistance.</p>]]></description><content:encoded><![CDATA[<p><a href="https://carear.com" rel="noopener" target="_blank">CareAR</a>, a division of <a href="https://www.xerox.com/" rel="noopener" target="_blank">Xerox</a>, is an augmented reality software company with the motto to “Make Expertise Accessible”. They do this through their proprietary mobile application which connects field technicians to experts at their home office. Both the technician and remote expert are able to interact together in real-time over live-stream video from the work site where they can collaborate to solve challenges that the technician would struggle to solve independently without assistance.</p>
<p>I recently worked with the team at CareAR to build an <a href="https://carear.com/ar-remote-assistance/" rel="noopener" target="_blank">interactive demo for their Assist product</a> that lives on the Assist landing page. This allows potential customers of CareAR to get an idea of exactly how Assist works and how it could benefit them in a highly interactive and responsive way.</p>
<p><strong>Watch a screen-recording of this interactive tool below:</strong></p>
<p>To implement this, animations were developed using <a href="https://www.adobe.com/products/aftereffects.html" rel="noopener" target="_blank">Adobe After Effects</a> that replicated the in-app features of Assist where motion graphics were required. These were embedded in the page using a combination of JavaScript and <a href="https://airbnb.io/lottie/" rel="noopener" target="_blank">Lottie</a>. Other animations such as the “screen capture” and “screen share” tools were replicated using jQuery animations and HTML5 video embedding.</p>
<p>The end-product was shipped as a WordPress plugin that enabled the web team to embed this demo anywhere they wanted it within the Divi Page Builder utilized for the website. Simply paste the short code within the page, and it would load all graphics and scripts needed for the demo in a clean and fully mobile responsive fashion.</p>
<figure class="gallery">
  <div class="gallery__row"><a class="zoom" href="https://joshlambert.xyz/images/posts/carear-assist-interactive-web-demo/Screenshot-2025-02-22-at-3.45.45_PM_hu_81d55616ebc4336e.webp" aria-label="View larger image" style="flex-grow: 1.6420361247947455;"><img src="https://joshlambert.xyz/images/posts/carear-assist-interactive-web-demo/Screenshot-2025-02-22-at-3.45.45_PM_hu_a35d6f501e5762aa.webp" width="1000" height="609" alt="Animated splash for the CareAR demo, with bouncing icons and the &#39;CareAR&#39; identity introducing an interactive walkthrough." loading="lazy" decoding="async"></a><a class="zoom" href="https://joshlambert.xyz/images/posts/carear-assist-interactive-web-demo/Adobe_After_Effects_CC_icon.svg__hu_831921b41d24fc41.webp" aria-label="View larger image" style="flex-grow: 1.0256410256410255;"><img src="https://joshlambert.xyz/images/posts/carear-assist-interactive-web-demo/Adobe_After_Effects_CC_icon.svg__hu_946e17e6182b82f1.webp" width="1000" height="975" alt="Adobe After Effects CC app icon, the purple &#39;Ae&#39; monogram on a dark navy rounded square." loading="lazy" decoding="async"></a><a class="zoom" href="https://joshlambert.xyz/images/posts/carear-assist-interactive-web-demo/image_hu_c4ba694203f92b92.webp" aria-label="View larger image" style="flex-grow: 1;"><img src="https://joshlambert.xyz/images/posts/carear-assist-interactive-web-demo/image_hu_988a17c3c023369.webp" width="1000" height="1000" alt="Lottie open-source animation library logo, with a teal flowing script that spells &#39;Lottie&#39; on a white background." loading="lazy" decoding="async"></a>
  </div></figure>

<p>This interactive demo has served CareAR as a powerful communication tool to convert visitors landing on the page to leads that would be interesting in purchasing Assist for their organization.</p>
<p>Do you need help building an interactive demo for a tool like Assist on your website? I can help! <a href="mailto:josh.lambert@centrevilletech.com">Drop me an email and let’s figure out how to make it happen</a>.</p>
]]></content:encoded></item><item><title>TUTR Mobile App</title><link>https://joshlambert.xyz/work/tutr-mobile-app/</link><guid>https://joshlambert.xyz/work/tutr-mobile-app/</guid><pubDate>Fri, 21 Feb 2025 00:00:00 +0000</pubDate><author>josh@lambertmail.xyz (Josh Lambert)</author><description><![CDATA[<div class="mediatext mediatext--left"><figure class="mediatext__media"><a class="zoom" href="https://joshlambert.xyz/images/posts/tutr-mobile-app/DefaultIcon_hu_f23f5bd4ea628624.webp" aria-label="View larger image"><img src="https://joshlambert.xyz/images/posts/tutr-mobile-app/DefaultIcon_hu_f23f5bd4ea628624.webp" width="1024" height="1024" alt="TUTR app icon, a white globe latitude/longitude grid with the &#39;TUTR&#39; wordmark stamped over the equator on a sky-blue background." loading="lazy" decoding="async"></a></figure><div class="mediatext__text prose flow">
    <strong>UBER meets tutoring.</strong> That was the idea behind TUTR, a startup based out of Tuscaloosa, Alabama focused on making the tutoring experience smooth and fast – just like hailing a ride from the convenience of your smartphone
  </div>
</div>

<p>For students needing help with an upcoming test or study project – the app was simple to use. Create an account using the TUTR mobile app, sign in via SMS code, link a payment method. Once done, a map view is presented showing online nearby tutors filtered by skillsets the student requested. Pick a tutor and request assistance, and the tutor would respond with their price and terms. Once the student and tutor session started, they could chat in the app, share a white board, or share location to coordinate an in-person tutoring session.</p>]]></description><content:encoded><![CDATA[<div class="mediatext mediatext--left"><figure class="mediatext__media"><a class="zoom" href="https://joshlambert.xyz/images/posts/tutr-mobile-app/DefaultIcon_hu_f23f5bd4ea628624.webp" aria-label="View larger image"><img src="https://joshlambert.xyz/images/posts/tutr-mobile-app/DefaultIcon_hu_f23f5bd4ea628624.webp" width="1024" height="1024" alt="TUTR app icon, a white globe latitude/longitude grid with the &#39;TUTR&#39; wordmark stamped over the equator on a sky-blue background." loading="lazy" decoding="async"></a></figure><div class="mediatext__text prose flow">
    <strong>UBER meets tutoring.</strong> That was the idea behind TUTR, a startup based out of Tuscaloosa, Alabama focused on making the tutoring experience smooth and fast – just like hailing a ride from the convenience of your smartphone
  </div>
</div>

<p>For students needing help with an upcoming test or study project – the app was simple to use. Create an account using the TUTR mobile app, sign in via SMS code, link a payment method. Once done, a map view is presented showing online nearby tutors filtered by skillsets the student requested. Pick a tutor and request assistance, and the tutor would respond with their price and terms. Once the student and tutor session started, they could chat in the app, share a white board, or share location to coordinate an in-person tutoring session.</p>
<figure class="gallery">
  <div class="gallery__row"><a class="zoom" href="https://joshlambert.xyz/images/posts/tutr-mobile-app/findatutor-571x1024_hu_bd548a2ea6b1c97.webp" aria-label="View larger image" style="flex-grow: 0.5577244841048522;"><img src="https://joshlambert.xyz/images/posts/tutr-mobile-app/findatutor-571x1024_hu_767752f084e7000a.webp" width="1000" height="1793" alt="iPhone screenshot of the TUTR app&#39;s Find a Tutor map showing pins around Centreville, with Sophia Marinova selected three miles away and Report and Text Tutor actions." loading="lazy" decoding="async"></a><a class="zoom" href="https://joshlambert.xyz/images/posts/tutr-mobile-app/howdiditgo-571x1024_hu_9e9f331c5bb92c8d.webp" aria-label="View larger image" style="flex-grow: 0.5577244841048522;"><img src="https://joshlambert.xyz/images/posts/tutr-mobile-app/howdiditgo-571x1024_hu_bdc0f0633e58d263.webp" width="1000" height="1793" alt="iPhone screenshot of the TUTR app&#39;s session feedback view: a 3-of-5 star rating for tutor Sophia Marinova, a &#39;How did it go?&#39; comment field, and a &#39;Pay $1&#39; button." loading="lazy" decoding="async"></a>
  </div></figure>

<p>The TUTR platform handled all of the complexity of payment management, vetting tutors, enforcing safety rules, etc, ensuring a safe, secure, and productive experience for all users on the platform.</p>
<h2 id="my-role-on-the-project">My Role On The Project</h2>
<p>I led the mobile development team supervising backend engineers, designers, and QA professionals in development of the TUTR mobile application. I also handled a significant amount of programming inside the mobile app itself. Contributing both leadership and engineering skills, we built from the ground up a cross-platform iOS/Android mobile application with all the features requested during the development process.</p>
<p><strong>We developed features that included:</strong></p>
<ul>
<li>SMS-based sign in flow.</li>
<li>Payment processing via Stripe.</li>
<li>Integration with the <a href="https://about.bramble.io/" rel="noopener" target="_blank">Bramble</a> platform to allow users to share a whiteboard and other resources within the TUTR app.</li>
<li>Real-time sharing of location data.</li>
<li>Rich chat functionality with push notifications, typing indicators, etc.</li>
<li>Integration with <a href="https://www.mailgun.com/" rel="noopener" target="_blank">Mailgun</a> for sending emails that made it to the inbox for all marketplace related communications such as resetting passwords, payment receipts, etc.</li>
<li>Setup and provisioning of servers on <a href="https://www.linode.com/" rel="noopener" target="_blank">Linode</a> to support platform activities.</li>
</ul>
<p>The app was built using the cross-platform <a href="https://titaniumsdk.com" rel="noopener" target="_blank">Titanium mobile framework</a> and JavaScript along with the referenced 3rd party services to deliver a rich marketplace experience to our users.</p>
<figure class="gallery">
  <div class="gallery__row"><a class="zoom" href="https://joshlambert.xyz/images/posts/tutr-mobile-app/Screenshot-2025-01-01-at-9.05.51_PM_hu_1a70735650ad853b.webp" aria-label="View larger image" style="flex-grow: 0.9345794392523364;"><img src="https://joshlambert.xyz/images/posts/tutr-mobile-app/Screenshot-2025-01-01-at-9.05.51_PM_hu_185f2f92857cd783.webp" width="1000" height="1070" alt="Logo of the Titanium SDK on a dark background, with a red interlocking &#39;T&#39; star mark above the wordmark &#39;Titanium SDK.&#39;" loading="lazy" decoding="async"></a><a class="zoom" href="https://joshlambert.xyz/images/posts/tutr-mobile-app/Stripe-wordmark-blurple-large_hu_1a66cee4df22de3d.webp" aria-label="View larger image" style="flex-grow: 1;"><img src="https://joshlambert.xyz/images/posts/tutr-mobile-app/Stripe-wordmark-blurple-large_hu_a75f20a31b0577fa.webp" width="1000" height="1000" alt="Stripe payment logo, the lowercase &#39;stripe&#39; wordmark in vivid Blurple purple on a white background." loading="lazy" decoding="async"></a><a class="zoom" href="https://joshlambert.xyz/images/posts/tutr-mobile-app/07a08343-1584376739545_hu_14eb629b29953d3.webp" aria-label="View larger image" style="flex-grow: 1.3333333333333333;"><img src="https://joshlambert.xyz/images/posts/tutr-mobile-app/07a08343-1584376739545_hu_229cbd61bd971854.webp" width="1000" height="750" alt="Bramble math-tutoring logo, a hand-drawn ink wordmark &#39;bramble&#39; next to a stylized blackberry icon." loading="lazy" decoding="async"></a>
  </div></figure>

<p>Does your organization need help building a mobile app like this? I can help! <a href="https://joshlambert.xyz/contact/">Drop me an email and let’s make it happen.</a></p>
]]></content:encoded></item><item><title>Haven Today Website Player</title><link>https://joshlambert.xyz/work/haven-today-website-player/</link><guid>https://joshlambert.xyz/work/haven-today-website-player/</guid><pubDate>Fri, 21 Feb 2025 00:00:00 +0000</pubDate><author>josh@lambertmail.xyz (Josh Lambert)</author><description><![CDATA[<p>The Haven of Rest, a Christian radio program started by Paul Myers, has been broadcast across the globe since 1934 delivering listeners a message of encouragement, hope, and redemption.</p>
<p>Now operating under the name “<a href="https://haventoday.org" rel="noopener" target="_blank">Haven Today</a>” – the program reaches older and newer listeners alike not just on the radio, but also via podcasts, their website, and <a href="https://joshlambert.xyz/work/haven-today-mobile-app/">the mobile app</a>.</p>
<p>I worked with the team at Haven to rebuild the audio player for there website. The new audio player enables those following their ministry to listen to the daily Haven program directly on the website without needing to install software or download files.</p>]]></description><content:encoded><![CDATA[<p>The Haven of Rest, a Christian radio program started by Paul Myers, has been broadcast across the globe since 1934 delivering listeners a message of encouragement, hope, and redemption.</p>
<p>Now operating under the name “<a href="https://haventoday.org" rel="noopener" target="_blank">Haven Today</a>” – the program reaches older and newer listeners alike not just on the radio, but also via podcasts, their website, and <a href="https://joshlambert.xyz/work/haven-today-mobile-app/">the mobile app</a>.</p>
<p>I worked with the team at Haven to rebuild the audio player for there website. The new audio player enables those following their ministry to listen to the daily Haven program directly on the website without needing to install software or download files.</p>
<p>The new player integrated directly with the existing audio library on the WordPress website. This way, when a specific program was opened in the player, the player could also display the related recommend resource that went along with it. This allowed listeners to easily locate and purchase said resource, enriching their experience while also driving more financial support towards the ministry. A win for all involved!</p>
<p>The new player was developed using the <a href="https://wordpress.org" rel="noopener" target="_blank">WordPress</a> APIs, <a href="https://github.com/serversideup/amplitudejs" rel="noopener" target="_blank">AmplitudeJS</a>, and <a href="https://en.wikipedia.org/wiki/JavaScript" rel="noopener" target="_blank">JavaScript</a>.</p>
<figure class="gallery">
  <div class="gallery__row"><a class="zoom" href="https://joshlambert.xyz/images/posts/haven-today-website-player/Screenshot-2025-01-01-at-9.06.04_PM_hu_f81a682a92ecf1a9.webp" aria-label="View larger image" style="flex-grow: 2.1459227467811157;"><img src="https://joshlambert.xyz/images/posts/haven-today-website-player/Screenshot-2025-01-01-at-9.06.04_PM_hu_a90fdd18550a989c.webp" width="1000" height="466" alt="Logo of WordPress.org, the white circled W glyph with the WordPress.org wordmark on a dark slate background." loading="lazy" decoding="async"></a><a class="zoom" href="https://joshlambert.xyz/images/posts/haven-today-website-player/amplitude_hu_bc8a299b29a7622.webp" aria-label="View larger image" style="flex-grow: 3.0120481927710845;"><img src="https://joshlambert.xyz/images/posts/haven-today-website-player/amplitude_hu_c6e24d43cb6da669.webp" width="1000" height="332" alt="Amplitude product analytics logo, with a circled &#39;A&#39; waveform glyph beside the blue &#39;Amplitude&#39; wordmark." loading="lazy" decoding="async"></a><a class="zoom" href="https://joshlambert.xyz/images/posts/haven-today-website-player/image_hu_c4ba694203f92b92.webp" aria-label="View larger image" style="flex-grow: 1;"><img src="https://joshlambert.xyz/images/posts/haven-today-website-player/image_hu_988a17c3c023369.webp" width="1000" height="1000" alt="Lottie open-source animation library logo, with a teal flowing script that spells &#39;Lottie&#39; on a white background." loading="lazy" decoding="async"></a>
  </div></figure>

<p>Does your organization need help building something like this for your website? I can help! <a href="mailto:josh.lambert@centrevilletech.com">Drop me an email and let’s make it happen.</a></p>
]]></content:encoded></item><item><title>Choose Healthy Challenge Mobile App</title><link>https://joshlambert.xyz/work/choose-healthy-challenge-mobile-app/</link><guid>https://joshlambert.xyz/work/choose-healthy-challenge-mobile-app/</guid><pubDate>Fri, 21 Feb 2025 00:00:00 +0000</pubDate><author>josh@lambertmail.xyz (Josh Lambert)</author><description><![CDATA[<div class="mediatext mediatext--left"><figure class="mediatext__media"><a class="zoom" href="https://joshlambert.xyz/images/posts/choose-healthy-challenge-mobile-app/ChooseHealthLogo_hu_bf9b87e3e0564535.webp" aria-label="View larger image"><img src="https://joshlambert.xyz/images/posts/choose-healthy-challenge-mobile-app/ChooseHealthLogo_hu_bf9b87e3e0564535.webp" width="748" height="941" alt="Choose Healthy Challenge logo, two blue figures jumping under a red heart inside a shield with the wordmarks ‘Choose,’ ‘Healthy’ (in red script), and ‘Challenge.’" loading="lazy" decoding="async"></a></figure><div class="mediatext__text prose flow">
    The Choose Healthy Challenge was a mobile-app based game designed to encourage healthy living habits, <a href="https://en.wikipedia.org/wiki/Gamification" rel="noopener" target="_blank">putting gamification theory to work</a>, in a way that makes people happier and healthier.
  </div>
</div>

<p>The concept behind this app was simple: encourage the user to take an action that benefits their physical health, nutritional health, and emotional health, <strong>every single day</strong>.</p>]]></description><content:encoded><![CDATA[<div class="mediatext mediatext--left"><figure class="mediatext__media"><a class="zoom" href="https://joshlambert.xyz/images/posts/choose-healthy-challenge-mobile-app/ChooseHealthLogo_hu_bf9b87e3e0564535.webp" aria-label="View larger image"><img src="https://joshlambert.xyz/images/posts/choose-healthy-challenge-mobile-app/ChooseHealthLogo_hu_bf9b87e3e0564535.webp" width="748" height="941" alt="Choose Healthy Challenge logo, two blue figures jumping under a red heart inside a shield with the wordmarks ‘Choose,’ ‘Healthy’ (in red script), and ‘Challenge.’" loading="lazy" decoding="async"></a></figure><div class="mediatext__text prose flow">
    The Choose Healthy Challenge was a mobile-app based game designed to encourage healthy living habits, <a href="https://en.wikipedia.org/wiki/Gamification" rel="noopener" target="_blank">putting gamification theory to work</a>, in a way that makes people happier and healthier.
  </div>
</div>

<p>The concept behind this app was simple: encourage the user to take an action that benefits their physical health, nutritional health, and emotional health, <strong>every single day</strong>.</p>
<p>The app made it simple to quickly document these activities. For example, did you go for a walk? Open the app and grab a selfie of yourself making this happen. Every time you documented one of these healthy activities, your health tracker would update and reflect that on your personal dashboard. This would give you that positive reinforcement to build a streak of healthy activities over a multi-day period. Snapchat-style user engagement here, but without the algorithm brain melt.</p>
<p>As you earned points from doing healthy activities, you climbed a leaderboard competing against others in the Birmingham area that were also taking part in the Choose Healthy Challenge. These points counted as “prize entries” making you eligible to win prizes at the end of the Choose Healthy Challenge.</p>
<h2 id="my-role-on-the-project">My Role On The Project</h2>
<p>I led the mobile development effort to bring this app to life writing all of the mobile app code to make this possible. The app was built on the open-source <a href="https://titaniumsdk.com/" rel="noopener" target="_blank">Titanium framework</a> leveraging JavaScript and cross-platform technologies. The app was successfully deployed on both the Apple Appstore and Google Play store for the duration of the Choose Healthy Challenge.</p>
<figure class="gallery">
  <div class="gallery__row"><a class="zoom" href="https://joshlambert.xyz/images/posts/choose-healthy-challenge-mobile-app/Screenshot-2025-01-01-at-9.05.51-PM_hu_1a70735650ad853b.webp" aria-label="View larger image" style="flex-grow: 0.9345794392523364;"><img src="https://joshlambert.xyz/images/posts/choose-healthy-challenge-mobile-app/Screenshot-2025-01-01-at-9.05.51-PM_hu_185f2f92857cd783.webp" width="1000" height="1070" alt="Logo of the Titanium SDK on a dark background, with a red interlocking &#39;T&#39; star mark above the wordmark &#39;Titanium SDK.&#39;" loading="lazy" decoding="async"></a><a class="zoom" href="https://joshlambert.xyz/images/posts/choose-healthy-challenge-mobile-app/JavaScript-logo-1024x1024_hu_cf6b41caa9b2334.webp" aria-label="View larger image" style="flex-grow: 1;"><img src="https://joshlambert.xyz/images/posts/choose-healthy-challenge-mobile-app/JavaScript-logo-1024x1024_hu_f339baaee86b1adc.webp" width="1000" height="1000" alt="Official JavaScript logo, the bold black &#39;JS&#39; on a yellow square." loading="lazy" decoding="async"></a>
  </div></figure>

<p><strong>Do you need help building a mobile app from the ground up? I can help!</strong> Having shipped a number of apps for iOS and Android over the years, I’m intimately familiar with the challenges that come from building one from scratch to scale. <a href="mailto:josh.lambert@centrevilletech.com">Drop me an email and let’s chat. Happy to help bring your app vision to life!</a></p>
]]></content:encoded></item><item><title>Automating WooCommerce &amp; Oracle for KATI Sportcap &amp; Bags</title><link>https://joshlambert.xyz/work/automating-woocommerce-oracle-for-kati-sportcap-bags/</link><guid>https://joshlambert.xyz/work/automating-woocommerce-oracle-for-kati-sportcap-bags/</guid><pubDate>Fri, 21 Feb 2025 00:00:00 +0000</pubDate><author>josh@lambertmail.xyz (Josh Lambert)</author><description><![CDATA[<div class="mediatext mediatext--left"><figure class="mediatext__media"><a class="zoom" href="https://joshlambert.xyz/images/posts/automating-woocommerce-oracle-for-kati-sportcap-bags/KatiLogo-1400x560-1-1024x410_hu_870200f38fb5be83.webp" aria-label="View larger image"><img src="https://joshlambert.xyz/images/posts/automating-woocommerce-oracle-for-kati-sportcap-bags/KatiLogo-1400x560-1-1024x410_hu_870200f38fb5be83.webp" width="1024" height="410" alt="KATI Sportcap &amp; Bag wordmark logo, set in a heavy black sans-serif with ‘kati’ on top and ‘SPORTCAP &amp; BAG’ beneath." loading="lazy" decoding="async"></a></figure><div class="mediatext__text prose flow">
    <a href="https://katisportcap.com/" rel="noopener" target="_blank">KATI Sportcap &amp; Bags</a> is a wholesale distributor for caps, bags, and accessories. Their website has been a long-term, vital sales channel for retailers looking to source high-quality promotional and decorated apparel products.
  </div>
</div>

<p>While WordPress and WooCommerce provided a solid foundation for their online sales platform, WooCommerce lacked native integration with KATI’s back-office system out of the box. KATI needed seamless, <strong>bi-directional synchronization</strong> between their e-commerce store and their Oracle back-office system.</p>]]></description><content:encoded><![CDATA[<div class="mediatext mediatext--left"><figure class="mediatext__media"><a class="zoom" href="https://joshlambert.xyz/images/posts/automating-woocommerce-oracle-for-kati-sportcap-bags/KatiLogo-1400x560-1-1024x410_hu_870200f38fb5be83.webp" aria-label="View larger image"><img src="https://joshlambert.xyz/images/posts/automating-woocommerce-oracle-for-kati-sportcap-bags/KatiLogo-1400x560-1-1024x410_hu_870200f38fb5be83.webp" width="1024" height="410" alt="KATI Sportcap &amp; Bag wordmark logo, set in a heavy black sans-serif with ‘kati’ on top and ‘SPORTCAP &amp; BAG’ beneath." loading="lazy" decoding="async"></a></figure><div class="mediatext__text prose flow">
    <a href="https://katisportcap.com/" rel="noopener" target="_blank">KATI Sportcap &amp; Bags</a> is a wholesale distributor for caps, bags, and accessories. Their website has been a long-term, vital sales channel for retailers looking to source high-quality promotional and decorated apparel products.
  </div>
</div>

<p>While WordPress and WooCommerce provided a solid foundation for their online sales platform, WooCommerce lacked native integration with KATI’s back-office system out of the box. KATI needed seamless, <strong>bi-directional synchronization</strong> between their e-commerce store and their Oracle back-office system.</p>
<h2 id="how-i-helped">How I Helped</h2>
<p>I engineered and programmed a <strong>custom integration bridge</strong> between WooCommerce and their preexisting Oracle back-office using PHP, webhooks, and system CRONs to provide the automation they required.</p>
<figure class="gallery">
  <div class="gallery__row"><a class="zoom" href="https://joshlambert.xyz/images/posts/automating-woocommerce-oracle-for-kati-sportcap-bags/channels4_profile_hu_3a38fca163ce4d93.webp" aria-label="View larger image" style="flex-grow: 1;"><img src="https://joshlambert.xyz/images/posts/automating-woocommerce-oracle-for-kati-sportcap-bags/channels4_profile_hu_8422fd4c13241716.webp" width="1000" height="1000" alt="Oracle APEX logo, the white ‘ORACLE’ wordmark above ‘APEX’ on a brick-red square background." loading="lazy" decoding="async"></a><a class="zoom" href="https://joshlambert.xyz/images/posts/automating-woocommerce-oracle-for-kati-sportcap-bags/php_hu_2cabb8a2f0d7bcc8.webp" aria-label="View larger image" style="flex-grow: 1.7094017094017093;"><img src="https://joshlambert.xyz/images/posts/automating-woocommerce-oracle-for-kati-sportcap-bags/php_hu_6d61aa1c3965184f.webp" width="1000" height="585" alt="Official PHP logo, the lowercase ‘php’ wordmark in white inside an oval slate-blue badge." loading="lazy" decoding="async"></a>
  </div></figure>

<p>This integration made KATI’s online operations seamless within WooCommerce. Working hand in hand with their existing web development team, I eliminated all manual processes and ensured painless synchronization:</p>
<ul>
<li>Product SKUs entered into the Oracle back-office would import automatically into WooCommerce.</li>
<li>Stock levels from the Oracle back-office would synchronize, bi-directionally, with the website.</li>
<li>Orders placed on the website would feed into the Oracle APEX back-office automatically.</li>
<li>Previous customer account order history from the Oracle back-office would display seamlessly within the customer website.</li>
</ul>
<p><strong>Thanks to this integration, KATI could take advantage of a modern e-commerce framework like WooCommerce without having to upend their existing back-office processes and operations.</strong> This means they could stay focused on growth, customer experience, and seamless wholesale distribution, and not on manual processes and headaches.</p>
<p><figure>
    <a class="zoom" href="https://joshlambert.xyz/images/posts/automating-woocommerce-oracle-for-kati-sportcap-bags/WooCommerce-Logo-1024x506_hu_fd1d1f65e60c1d03.webp" aria-label="View larger image">
      <img src="https://joshlambert.xyz/images/posts/automating-woocommerce-oracle-for-kati-sportcap-bags/WooCommerce-Logo-1024x506_hu_fd1d1f65e60c1d03.webp" width="1024" height="506"
           alt="WooCommerce logo, the white ‘Woo’ inside a purple speech bubble above the bold ‘COMMERCE’ wordmark." loading="lazy" decoding="async">
    </a></figure></p>
<p><strong>Need a custom e-commerce solution that works with your enterprise software?</strong> Let’s build it. <a href="mailto:josh.lambert@centrevilletech.com">Drop me an email and we’ll build something customized to your exact needs.</a></p>
]]></content:encoded></item><item><title>Planet Fundraiser Mobile App</title><link>https://joshlambert.xyz/work/planet-fundraiser-mobile-app/</link><guid>https://joshlambert.xyz/work/planet-fundraiser-mobile-app/</guid><pubDate>Thu, 20 Feb 2025 00:00:00 +0000</pubDate><author>josh@lambertmail.xyz (Josh Lambert)</author><description><![CDATA[<div class="mediatext mediatext--left"><figure class="mediatext__media"><a class="zoom" href="https://joshlambert.xyz/images/posts/planet-fundraiser-mobile-app/planet-fundraiser_hu_a316bacf15598b6c.webp" aria-label="View larger image"><img src="https://joshlambert.xyz/images/posts/planet-fundraiser-mobile-app/planet-fundraiser_hu_a316bacf15598b6c.webp" width="364" height="364" alt="Planet Fundraiser app icon, a stylized white planet with a heart at center on a sky-blue background." loading="lazy" decoding="async"></a></figure><div class="mediatext__text prose flow">
    Planet Fundraiser was a mobile app, developed right here in Alabama, designed to make supporting local charities as easy as snapping a photo.
  </div>
</div>

<p><strong>Local businesses were the rock star for this app and made the giving effort possible.</strong> Customers shop like they normally do, take a picture of their receipt, and scan it into the Planet Fundraiser app. Once the receipt is scanned, a customer is then prompted to select a charity to donate a portion of their purchase to. The concept was often described in the marketing as <em>“Shop, Snap, Give!”.</em></p>]]></description><content:encoded><![CDATA[<div class="mediatext mediatext--left"><figure class="mediatext__media"><a class="zoom" href="https://joshlambert.xyz/images/posts/planet-fundraiser-mobile-app/planet-fundraiser_hu_a316bacf15598b6c.webp" aria-label="View larger image"><img src="https://joshlambert.xyz/images/posts/planet-fundraiser-mobile-app/planet-fundraiser_hu_a316bacf15598b6c.webp" width="364" height="364" alt="Planet Fundraiser app icon, a stylized white planet with a heart at center on a sky-blue background." loading="lazy" decoding="async"></a></figure><div class="mediatext__text prose flow">
    Planet Fundraiser was a mobile app, developed right here in Alabama, designed to make supporting local charities as easy as snapping a photo.
  </div>
</div>

<p><strong>Local businesses were the rock star for this app and made the giving effort possible.</strong> Customers shop like they normally do, take a picture of their receipt, and scan it into the Planet Fundraiser app. Once the receipt is scanned, a customer is then prompted to select a charity to donate a portion of their purchase to. The concept was often described in the marketing as <em>“Shop, Snap, Give!”.</em></p>
<p><a href="https://www.youtube.com/watch?v=RuwB6onx1Io" rel="noopener" target="_blank">Local news station CBS42 covered the app concept nicely</a>. You can also see a walk-through of the app in the video below:</p>
<div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;">
      <iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen" loading="eager" referrerpolicy="strict-origin-when-cross-origin" src="https://www.youtube.com/embed/RuwB6onx1Io?autoplay=0&amp;controls=1&amp;end=0&amp;loop=0&amp;mute=0&amp;start=0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" title="YouTube video"></iframe>
    </div>

<p>Only businesses participating on the Planet Fundraiser platform were eligible for the charity give-back. The idea here was to drive consumer behavior and push them towards shopping at businesses that made the decision to support charity efforts in their operating budgets over other businesses that didn’t.</p>
<h2 id="my-role-on-the-team">My Role On The Team</h2>
<p>As the Lead Mobile Developer for Planet Fundraiser, I managed the mobile engineering team, working closely with designers and developers, as well as shipping code of my own, to build the application from the ground up. The app was developed using the Titanium framework, which allowed cross-platform development from a single unified JavaScript codebase.</p>
<figure class="gallery">
  <div class="gallery__row"><a class="zoom" href="https://joshlambert.xyz/images/posts/planet-fundraiser-mobile-app/Screenshot-2025-01-01-at-9.05.51-PM_hu_1a70735650ad853b.webp" aria-label="View larger image" style="flex-grow: 0.9345794392523364;"><img src="https://joshlambert.xyz/images/posts/planet-fundraiser-mobile-app/Screenshot-2025-01-01-at-9.05.51-PM_hu_185f2f92857cd783.webp" width="1000" height="1070" alt="Logo of the Titanium SDK on a dark background, with a red interlocking &#39;T&#39; star mark above the wordmark &#39;Titanium SDK.&#39;" loading="lazy" decoding="async"></a><a class="zoom" href="https://joshlambert.xyz/images/posts/planet-fundraiser-mobile-app/JavaScript-logo-1024x1024_hu_cf6b41caa9b2334.webp" aria-label="View larger image" style="flex-grow: 1;"><img src="https://joshlambert.xyz/images/posts/planet-fundraiser-mobile-app/JavaScript-logo-1024x1024_hu_f339baaee86b1adc.webp" width="1000" height="1000" alt="Official JavaScript logo, the bold black &#39;JS&#39; on a yellow square." loading="lazy" decoding="async"></a>
  </div></figure>

<p>My experience with Titanium development on the Planet Fundraiser project would eventually lead to a more significant roll inside the Titanium development ecosystem. I took on a leadership role as chairman of the <a href="https://tidev.io" rel="noopener" target="_blank">TiDev Foundation</a>, the 501c3 non-profit organization responsible for maintaining the Titanium framework today. <a href="https://www.bibbvoice.com/2022/05/01/titanium-mobile-development-software-finds-a-new-home-in-central-alabama/" rel="noopener" target="_blank">You can learn more about that by clicking here.</a></p>
<p><strong>Do you need help building a mobile app from the ground up? I can help!</strong> Having shipped a number of apps for iOS and Android over the years, I’m intimately familiar with the challenges that come from building one from scratch to scale. <a href="mailto:josh.lambert@centrevilletech.com">Drop me an email and let’s chat. Happy to help bring your app vision to life!</a></p>
]]></content:encoded></item><item><title>ResultWorx TMS Solution</title><link>https://joshlambert.xyz/work/resultworx-tms-solution/</link><guid>https://joshlambert.xyz/work/resultworx-tms-solution/</guid><pubDate>Tue, 18 Feb 2025 00:00:00 +0000</pubDate><author>josh@lambertmail.xyz (Josh Lambert)</author><description><![CDATA[<p>A Transportation Management System (TMS) is a vital component of modern freight logistics. Without this essential software, businesses lack critical visibility into the real-time location of their drivers and cargo. I can’t imagine operating in the freight and logistics industry without it!</p>
<p>In 2011, I collaborated with the team at <a href="https://resultworx.com/" rel="noopener" target="_blank">ResultWorx</a>, a division of <a href="https://biscomputer.com/" rel="noopener" target="_blank">BIS Computer Solutions</a> based in Los Angeles, California, to develop the first proof-of-concept version of the ResultWorx TMS platform, <a href="https://load-logix.com/" rel="noopener" target="_blank"><em>Load-Logix</em></a>. This project laid the foundation for a powerful solution designed to streamline freight management and improve operational efficiency.</p>]]></description><content:encoded><![CDATA[<p>A Transportation Management System (TMS) is a vital component of modern freight logistics. Without this essential software, businesses lack critical visibility into the real-time location of their drivers and cargo. I can’t imagine operating in the freight and logistics industry without it!</p>
<p>In 2011, I collaborated with the team at <a href="https://resultworx.com/" rel="noopener" target="_blank">ResultWorx</a>, a division of <a href="https://biscomputer.com/" rel="noopener" target="_blank">BIS Computer Solutions</a> based in Los Angeles, California, to develop the first proof-of-concept version of the ResultWorx TMS platform, <a href="https://load-logix.com/" rel="noopener" target="_blank"><em>Load-Logix</em></a>. This project laid the foundation for a powerful solution designed to streamline freight management and improve operational efficiency.</p>
<p><figure>
    <a class="zoom" href="https://joshlambert.xyz/images/posts/resultworx-tms-solution/TruckboardTMS_hu_9c5804689c8c74ba.webp" aria-label="View larger image">
      <img src="https://joshlambert.xyz/images/posts/resultworx-tms-solution/TruckboardTMS_hu_c4e54002773c222c.webp" width="1200" height="696"
           alt="Screenshot of the ResultWorx Driver Tracking dashboard, with a North American Google map of available drivers on the right and a recent activity feed below." loading="lazy" decoding="async">
    </a></figure></p>
<p>The first version of this software was designed <strong>completely bespoke around an individual freight broker’s requirements</strong> building out the feature set they required in their day-to-day operations, functions they were previously tracking with Excel and old-fashioned pen-and-paper.</p>
<p><strong>Those features included but were not limited to:</strong></p>
<ul>
<li>Map view of all available and unavailable drivers in the TMS.</li>
<li>Live real-time newsfeed of driver availability as users throughout the organization updated the driver database.</li>
<li>Ability to “cover” a driver to keep another operator from communicating with or updating driver information if a specific back-office operator was already working with the driver. (You can see this in the screenshot, where in the news feed, the record is blocked from updates.)</li>
<li>Integration with GPS and automated calling systems to determine a driver’s location, whether or not they have a smartphone. <strong>This eliminates the need for back-office employees to manually call drivers for location updates.</strong></li>
<li>Rich reporting to drill down based on truck type, location, availability, desired destination, and more.</li>
</ul>
<p>Technologies utilized in development of this initial TMS application included <a href="https://en.wikipedia.org/wiki/JavaScript" rel="noopener" target="_blank">JavaScript</a>, <a href="https://www.php.net/" rel="noopener" target="_blank">PHP</a>, and the <a href="https://developers.google.com/maps" rel="noopener" target="_blank">Google Maps API</a>.</p>
<figure class="gallery">
  <div class="gallery__row"><a class="zoom" href="https://joshlambert.xyz/images/posts/resultworx-tms-solution/js_hu_4c79f3933f026657.webp" aria-label="View larger image" style="flex-grow: 1;"><img src="https://joshlambert.xyz/images/posts/resultworx-tms-solution/js_hu_3df02219bac82b57.webp" width="1000" height="1000" alt="Official JavaScript logo, the bold black ‘JS’ on a yellow square." loading="lazy" decoding="async"></a><a class="zoom" href="https://joshlambert.xyz/images/posts/resultworx-tms-solution/php_hu_2cabb8a2f0d7bcc8.webp" aria-label="View larger image" style="flex-grow: 1.7094017094017093;"><img src="https://joshlambert.xyz/images/posts/resultworx-tms-solution/php_hu_6d61aa1c3965184f.webp" width="1000" height="585" alt="Official PHP logo, the lowercase ‘php’ wordmark in white inside an oval slate-blue badge." loading="lazy" decoding="async"></a><a class="zoom" href="https://joshlambert.xyz/images/posts/resultworx-tms-solution/googlemaps_hu_79454d96d8c1e057.webp" aria-label="View larger image" style="flex-grow: 1.2406947890818858;"><img src="https://joshlambert.xyz/images/posts/resultworx-tms-solution/googlemaps_hu_fe914ee9afe6e23.webp" width="1000" height="806" alt="Google Maps logo, a multicolored teardrop pin with a white center above the ‘Google Maps’ wordmark." loading="lazy" decoding="async"></a>
  </div></figure>

<p>The Load-Logix platform would eventually spin off into a standalone SaaS platform after my time at BIS and is now used by multiple customers in the management of their freight and logistics operations.</p>
<p>Does your organization need help building something like this? I can help! <a href="https://joshlambert.xyz/contact/">Drop me a DM and let’s make it happen.</a></p>
]]></content:encoded></item><item><title>React Mobile Dispatch Center</title><link>https://joshlambert.xyz/work/react-mobile-hotel-dispatch-center/</link><guid>https://joshlambert.xyz/work/react-mobile-hotel-dispatch-center/</guid><pubDate>Mon, 17 Feb 2025 00:00:00 +0000</pubDate><author>josh@lambertmail.xyz (Josh Lambert)</author><description><![CDATA[<p>Keeping hotel employees safe has been a priority in the industry for years now. Starting as far back as at least 2016, regional authorities including the <a href="https://en.wikipedia.org/wiki/Initiative_Measure_124_%28Seattle%29" rel="noopener" target="_blank">City of Seattle began passing laws requiring panic buttons to be furnished to hotel workers</a>. These buttons provided employees a discrete and fast way to notify security and emergency personnel when critical security situations required their involvement.</p>
<p><figure>
    <a class="zoom" href="https://joshlambert.xyz/images/posts/react-mobile-hotel-dispatch-center/React_Device_Photo_2-678x381-1_hu_e1cf789ed3799140.webp" aria-label="View larger image">
      <img src="https://joshlambert.xyz/images/posts/react-mobile-hotel-dispatch-center/React_Device_Photo_2-678x381-1_hu_e1cf789ed3799140.webp" width="678" height="381"
           alt="Hotel housekeeping staff member smiling and presenting her React Mobile panic-button keychain, with a hotel guest room behind her." loading="lazy" decoding="async">
    </a></figure></p>]]></description><content:encoded><![CDATA[<p>Keeping hotel employees safe has been a priority in the industry for years now. Starting as far back as at least 2016, regional authorities including the <a href="https://en.wikipedia.org/wiki/Initiative_Measure_124_%28Seattle%29" rel="noopener" target="_blank">City of Seattle began passing laws requiring panic buttons to be furnished to hotel workers</a>. These buttons provided employees a discrete and fast way to notify security and emergency personnel when critical security situations required their involvement.</p>
<p><figure>
    <a class="zoom" href="https://joshlambert.xyz/images/posts/react-mobile-hotel-dispatch-center/React_Device_Photo_2-678x381-1_hu_e1cf789ed3799140.webp" aria-label="View larger image">
      <img src="https://joshlambert.xyz/images/posts/react-mobile-hotel-dispatch-center/React_Device_Photo_2-678x381-1_hu_e1cf789ed3799140.webp" width="678" height="381"
           alt="Hotel housekeeping staff member smiling and presenting her React Mobile panic-button keychain, with a hotel guest room behind her." loading="lazy" decoding="async">
    </a></figure></p>
<p>These buttons, when pressed, send emergency alerts to the on-call security team showing them a map view of where the security incident occurred down to the specific hotel room. No need to guess or scramble when seconds matter most.</p>
<p>I worked with the team at React Mobile to develop the first version of the Dispatch Center application. It connected with backend APIs to receive emergency alerts, plot them on to a Google Map, presented information about the specific room where the event occurred, and which employee needed help.</p>
<p><figure>
    <a class="zoom" href="https://joshlambert.xyz/images/posts/react-mobile-hotel-dispatch-center/153146890_hu_da8737e259fbd4b0.webp" aria-label="View larger image">
      <img src="https://joshlambert.xyz/images/posts/react-mobile-hotel-dispatch-center/153146890_hu_da8737e259fbd4b0.webp" width="562" height="421"
           alt="Render of the React Mobile Dispatch Center desktop view with an active SOS pin on a Seattle Google map, paired with an iPhone running the I’m-Fine companion app and a Bluetooth panic-button puck." loading="lazy" decoding="async">
    </a></figure></p>
<p>The initial version I developed was in the form of a desktop application that ran on Windows, Mac, and Linux from an easy-to-use installer. The application utilized native push notifications to escalate the application to the top of the window stack when an emergency event occurred, making sure an end-user binging YouTube videos wouldn’t lose sight of a critical event. Additionally, support was included to play a loud emergency alert siren that could be configured on and off based on organization preference and requirement.</p>
<p>Technologies utilized in development of this application included <a href="https://getbootstrap.com/" rel="noopener" target="_blank">Bootstrap</a>, <a href="https://en.wikipedia.org/wiki/JavaScript" rel="noopener" target="_blank">JavaScript</a>, <a href="https://www.electronjs.org/" rel="noopener" target="_blank">Electron</a>, and <a href="https://nodejs.org/en" rel="noopener" target="_blank">Node.JS</a>.</p>
<figure class="gallery">
  <div class="gallery__row"><a class="zoom" href="https://joshlambert.xyz/images/posts/react-mobile-hotel-dispatch-center/node_hu_feee0ea7f6325be1.webp" aria-label="View larger image" style="flex-grow: 1.6835016835016836;"><img src="https://joshlambert.xyz/images/posts/react-mobile-hotel-dispatch-center/node_hu_aff1300f6bd40d2b.webp" width="1000" height="594" alt="Node.js logo, with the dark ‘node’ wordmark beside a green hexagonal ‘JS’ badge." loading="lazy" decoding="async"></a><a class="zoom" href="https://joshlambert.xyz/images/posts/react-mobile-hotel-dispatch-center/electron_hu_589efe038b32bad4.webp" aria-label="View larger image" style="flex-grow: 1.7482517482517483;"><img src="https://joshlambert.xyz/images/posts/react-mobile-hotel-dispatch-center/electron_hu_df5235bbcf46925b.webp" width="1000" height="572" alt="Electron framework logo, a teal atom orbital glyph beside the wordmark ‘Electron’ on a slate background." loading="lazy" decoding="async"></a><a class="zoom" href="https://joshlambert.xyz/images/posts/react-mobile-hotel-dispatch-center/bootstrap_hu_37791e01e45d16ce.webp" aria-label="View larger image" style="flex-grow: 1.658374792703151;"><img src="https://joshlambert.xyz/images/posts/react-mobile-hotel-dispatch-center/bootstrap_hu_c8621ce3fde689ea.webp" width="1000" height="603" alt="Bootstrap framework logo, a white capital ‘B’ inside a purple curly-brace badge on a soft blue gradient." loading="lazy" decoding="async"></a>
  </div></figure>

<p>The React Mobile Dispatch Center made national news several times as it was rolled out across major cities:</p>
<ul>
<li><a href="https://www.kcra.com/article/norcal-hotel-working-to-help-workers-with-panic-buttons/23000377" rel="noopener" target="_blank">NorCal hotel working to help workers with panic buttons (KCRA)</a></li>
<li><a href="https://www.chicagotribune.com/2018/06/07/chicago-hotels-roll-out-panic-button-systems-to-protect-housekeepers-from-sexual-harassment/" rel="noopener" target="_blank">Chicago hotels roll out panic-button systems to protect housekeepers (Chicago Tribune)</a></li>
<li><a href="https://www.wjcl.com/article/in-reversal-hotel-industry-to-back-panic-buttons-for-workers/22995817" rel="noopener" target="_blank">In reversal, hotel industry to back panic buttons for workers (WJCL)</a></li>
</ul>
<p>Does your organization need help building something like this? I can help! <a href="https://joshlambert.xyz/contact/">Drop me a DM and let’s make it happen.</a></p>
]]></content:encoded></item><item><title>Gate Agent Mobile App</title><link>https://joshlambert.xyz/work/gate-agent-mobile-app/</link><guid>https://joshlambert.xyz/work/gate-agent-mobile-app/</guid><pubDate>Fri, 03 Jan 2025 00:00:00 +0000</pubDate><author>josh@lambertmail.xyz (Josh Lambert)</author><description><![CDATA[<p>High school football games are a classic American experience, bringing communities together to cheer on their local athletes. Who doesn’t love watching these kids develop both their athletic talent and good sportsmanship at the same time?</p>
<p><figure>
    <a class="zoom" href="https://joshlambert.xyz/images/posts/gate-agent-mobile-app/logo_hu_adc737f5cdad362a.webp" aria-label="View larger image">
      <img src="https://joshlambert.xyz/images/posts/gate-agent-mobile-app/logo_hu_adc737f5cdad362a.webp" width="1000" height="341"
           alt="TouchdownTix wordmark logo, with “Touchdown” in royal-blue serif italics next to a hand-drawn red “Tix” ticket icon." loading="lazy" decoding="async">
    </a></figure></p>
<p>TouchdownTix, an Alabama company, serves schools in this space through development of a custom ticket sales platform. Their goal is to reduce service fees while also making the ticket purchase experience super stream-lined both for customers, and the school volunteers or staff running the games.</p>]]></description><content:encoded><![CDATA[<p>High school football games are a classic American experience, bringing communities together to cheer on their local athletes. Who doesn’t love watching these kids develop both their athletic talent and good sportsmanship at the same time?</p>
<p><figure>
    <a class="zoom" href="https://joshlambert.xyz/images/posts/gate-agent-mobile-app/logo_hu_adc737f5cdad362a.webp" aria-label="View larger image">
      <img src="https://joshlambert.xyz/images/posts/gate-agent-mobile-app/logo_hu_adc737f5cdad362a.webp" width="1000" height="341"
           alt="TouchdownTix wordmark logo, with “Touchdown” in royal-blue serif italics next to a hand-drawn red “Tix” ticket icon." loading="lazy" decoding="async">
    </a></figure></p>
<p>TouchdownTix, an Alabama company, serves schools in this space through development of a custom ticket sales platform. Their goal is to reduce service fees while also making the ticket purchase experience super stream-lined both for customers, and the school volunteers or staff running the games.</p>
<p><figure>
    <a class="zoom" href="https://joshlambert.xyz/images/posts/gate-agent-mobile-app/AdobeStock_5592118081-1024x683_hu_c2dd20b8653e5279.webp" aria-label="View larger image">
      <img src="https://joshlambert.xyz/images/posts/gate-agent-mobile-app/AdobeStock_5592118081-1024x683_hu_c2dd20b8653e5279.webp" width="1024" height="683"
           alt="Friday-night high school football photo of a wide receiver in black and gold leaping for a one-handed catch as a defender in white and yellow Bruins jerseys closes in." loading="lazy" decoding="async">
    </a></figure></p>
<p>I worked with the team at TouchdownTix to develop a custom mobile app for validating ticket sales at the gate. This app was fairly basic, allowing school staff to sign in with either a username and password or a QR code, then scan tickets to determine if they are valid. If the app determined the ticket was valid, it marked the ticket as used so attendance could be measured after the game is over.</p>
<p>This app was developed using a combination of JavaScript and the <a href="https://titaniumsdk.com" rel="noopener" target="_blank">Titanium SDK</a>. It runs on both iOS and Android.</p>
<figure class="gallery">
  <div class="gallery__row"><a class="zoom" href="https://joshlambert.xyz/images/posts/gate-agent-mobile-app/Screenshot-2025-01-01-at-9.05.51-PM_hu_1a70735650ad853b.webp" aria-label="View larger image" style="flex-grow: 0.9345794392523364;"><img src="https://joshlambert.xyz/images/posts/gate-agent-mobile-app/Screenshot-2025-01-01-at-9.05.51-PM_hu_185f2f92857cd783.webp" width="1000" height="1070" alt="Logo of the Titanium SDK on a dark background, with a red interlocking “T” star mark above the wordmark “Titanium SDK.”" loading="lazy" decoding="async"></a><a class="zoom" href="https://joshlambert.xyz/images/posts/gate-agent-mobile-app/JavaScript-logo-1024x1024_hu_cf6b41caa9b2334.webp" aria-label="View larger image" style="flex-grow: 1;"><img src="https://joshlambert.xyz/images/posts/gate-agent-mobile-app/JavaScript-logo-1024x1024_hu_f339baaee86b1adc.webp" width="1000" height="1000" alt="Official JavaScript logo, the bold black “JS” on a yellow square." loading="lazy" decoding="async"></a>
  </div></figure>

<p>Need something like this for your business? I can help you build it! <a href="https://joshlambert.xyz/contact/">Drop me a DM and let’s chat.</a></p>
]]></content:encoded></item><item><title>Partners Experience for Command Alkon</title><link>https://joshlambert.xyz/work/partners-experience-for-command-alkon/</link><guid>https://joshlambert.xyz/work/partners-experience-for-command-alkon/</guid><pubDate>Thu, 02 Jan 2025 00:00:00 +0000</pubDate><author>josh@lambertmail.xyz (Josh Lambert)</author><description><![CDATA[<p>I recently wrapped up development of a new custom WordPress plugin for my friends at Command Alkon. This plugin is used to power the <a href="https://partners.commandalkon.com/manufacturer-partners/" rel="noopener" target="_blank">Manufacturer</a> and <a href="https://partners.commandalkon.com/industry-partners/" rel="noopener" target="_blank">Industry</a> partner pages on their website. This enables leads on the site to search-and-filter Command Alkon partner companies.</p>
<figure class="gallery">
  <div class="gallery__row"><a class="zoom" href="https://joshlambert.xyz/images/posts/partners-experience-for-command-alkon/Screenshot-2025-01-01-at-6.49.36-PM-1024x736_hu_1157028f9d82f3ff.webp" aria-label="View larger image" style="flex-grow: 1.3908205841446453;"><img src="https://joshlambert.xyz/images/posts/partners-experience-for-command-alkon/Screenshot-2025-01-01-at-6.49.36-PM-1024x736_hu_df735ca4c5e47a28.webp" width="1000" height="719" alt="Screenshot of the Command Alkon Partners directory after searching “Concre,” showing logo cards for Bradley Concrete, CESI, Concrete Equipment Supply, Concrete Machinery Corporation, Concrete Plants Inc, Odisa Concrete, and Southern Concrete Machinery." loading="lazy" decoding="async"></a><a class="zoom" href="https://joshlambert.xyz/images/posts/partners-experience-for-command-alkon/Screenshot-2025-01-01-at-6.49.49-PM_hu_112796beacc9da83.webp" aria-label="View larger image" style="flex-grow: 0.8598452278589854;"><img src="https://joshlambert.xyz/images/posts/partners-experience-for-command-alkon/Screenshot-2025-01-01-at-6.49.49-PM_hu_b6282ffa10d797b.webp" width="1000" height="1163" alt="Command Alkon Partners directory filter sidebar with a “Clear All Filters” button and a list of region options including North America, Central America, South America, Australia, and Brazil." loading="lazy" decoding="async"></a>
  </div></figure>

<p>JavaScript was used for the filter and search functionality as opposed to server-side logic allowing user interactions to be zippy and fast. Results load in milliseconds and allow potential customers to quickly identify partner companies they utilize in their course of business that would have connections to the Command Alkon software suite. Custom styling was used to deliver a sleek experience on desktop, tablet, and smartphone devices.</p>]]></description><content:encoded><![CDATA[<p>I recently wrapped up development of a new custom WordPress plugin for my friends at Command Alkon. This plugin is used to power the <a href="https://partners.commandalkon.com/manufacturer-partners/" rel="noopener" target="_blank">Manufacturer</a> and <a href="https://partners.commandalkon.com/industry-partners/" rel="noopener" target="_blank">Industry</a> partner pages on their website. This enables leads on the site to search-and-filter Command Alkon partner companies.</p>
<figure class="gallery">
  <div class="gallery__row"><a class="zoom" href="https://joshlambert.xyz/images/posts/partners-experience-for-command-alkon/Screenshot-2025-01-01-at-6.49.36-PM-1024x736_hu_1157028f9d82f3ff.webp" aria-label="View larger image" style="flex-grow: 1.3908205841446453;"><img src="https://joshlambert.xyz/images/posts/partners-experience-for-command-alkon/Screenshot-2025-01-01-at-6.49.36-PM-1024x736_hu_df735ca4c5e47a28.webp" width="1000" height="719" alt="Screenshot of the Command Alkon Partners directory after searching “Concre,” showing logo cards for Bradley Concrete, CESI, Concrete Equipment Supply, Concrete Machinery Corporation, Concrete Plants Inc, Odisa Concrete, and Southern Concrete Machinery." loading="lazy" decoding="async"></a><a class="zoom" href="https://joshlambert.xyz/images/posts/partners-experience-for-command-alkon/Screenshot-2025-01-01-at-6.49.49-PM_hu_112796beacc9da83.webp" aria-label="View larger image" style="flex-grow: 0.8598452278589854;"><img src="https://joshlambert.xyz/images/posts/partners-experience-for-command-alkon/Screenshot-2025-01-01-at-6.49.49-PM_hu_b6282ffa10d797b.webp" width="1000" height="1163" alt="Command Alkon Partners directory filter sidebar with a “Clear All Filters” button and a list of region options including North America, Central America, South America, Australia, and Brazil." loading="lazy" decoding="async"></a>
  </div></figure>

<p>JavaScript was used for the filter and search functionality as opposed to server-side logic allowing user interactions to be zippy and fast. Results load in milliseconds and allow potential customers to quickly identify partner companies they utilize in their course of business that would have connections to the Command Alkon software suite. Custom styling was used to deliver a sleek experience on desktop, tablet, and smartphone devices.</p>
<p>I anticipate that Command Alkon and their partner businesses will see significant value from marketing how they help each other, pushing new sales and opportunities towards all those involved in the partner program. <strong>A win for everybody!</strong></p>
<p>Need something like this for your business? <a href="https://joshlambert.xyz/contact/">Drop me a line.</a></p>
]]></content:encoded></item><item><title>Haven Today Mobile App</title><link>https://joshlambert.xyz/work/haven-today-mobile-app/</link><guid>https://joshlambert.xyz/work/haven-today-mobile-app/</guid><pubDate>Thu, 02 Jan 2025 00:00:00 +0000</pubDate><author>josh@lambertmail.xyz (Josh Lambert)</author><description><![CDATA[<p>The Haven of Rest, a Christian radio program by Paul Myers, has been broadcast across the globe since 1934, delivering listeners a message of encouragement, hope, and redemption.</p>
<p>Now operating under the name “<a href="https://haventoday.org" rel="noopener" target="_blank">Haven Today</a>,” the program reaches older and newer listeners alike, not just on the radio, but also through podcasts, their website, and the mobile app.</p>
<p>I worked with the team at Haven to build them a cross-platform mobile app for iOS and Android, replacing a previous version that had bugs and other usability issues. My responsibilities included taking designs from their in-house designer in Adobe XD and converting them into a fully functional mobile application.</p>]]></description><content:encoded><![CDATA[<p>The Haven of Rest, a Christian radio program by Paul Myers, has been broadcast across the globe since 1934, delivering listeners a message of encouragement, hope, and redemption.</p>
<p>Now operating under the name “<a href="https://haventoday.org" rel="noopener" target="_blank">Haven Today</a>,” the program reaches older and newer listeners alike, not just on the radio, but also through podcasts, their website, and the mobile app.</p>
<p>I worked with the team at Haven to build them a cross-platform mobile app for iOS and Android, replacing a previous version that had bugs and other usability issues. My responsibilities included taking designs from their in-house designer in Adobe XD and converting them into a fully functional mobile application.</p>
<p>The backend for the app was built on top of their existing WordPress website and used the WordPress API and a custom plugin to expose all of the data that makes the Haven app tick to the mobile app.</p>
<p>The app itself was built using the open-source Titanium framework. With Titanium, you’re able to build apps for both iOS and Android from a single unified codebase. This helped keep the development costs under control and made it possible to build a bespoke app from the ground up, customized for their unique demographic and business requirements.</p>
<figure class="gallery">
  <div class="gallery__row"><a class="zoom" href="https://joshlambert.xyz/images/posts/haven-today-mobile-app/Screenshot-2025-01-01-at-9.05.51-PM_hu_1a70735650ad853b.webp" aria-label="View larger image" style="flex-grow: 0.9345794392523364;"><img src="https://joshlambert.xyz/images/posts/haven-today-mobile-app/Screenshot-2025-01-01-at-9.05.51-PM_hu_185f2f92857cd783.webp" width="1000" height="1070" alt="Logo of the Titanium SDK on a dark background, with a red interlocking ‘T’ star mark above the wordmark ‘Titanium SDK.’" loading="lazy" decoding="async"></a><a class="zoom" href="https://joshlambert.xyz/images/posts/haven-today-mobile-app/Screenshot-2025-01-01-at-9.06.04-PM_hu_f81a682a92ecf1a9.webp" aria-label="View larger image" style="flex-grow: 2.1459227467811157;"><img src="https://joshlambert.xyz/images/posts/haven-today-mobile-app/Screenshot-2025-01-01-at-9.06.04-PM_hu_a90fdd18550a989c.webp" width="1000" height="466" alt="Logo of WordPress.org, the white circled W glyph with the WordPress.org wordmark on a dark slate background." loading="lazy" decoding="async"></a>
  </div></figure>

<p>Need an app like this for your business or non-profit? I can help! <a href="https://joshlambert.xyz/contact/">Drop me a line and let’s chat.</a></p>
]]></content:encoded></item><item><title>Carbon Calculator for CareAR</title><link>https://joshlambert.xyz/work/carbon-calculator-for-carear/</link><guid>https://joshlambert.xyz/work/carbon-calculator-for-carear/</guid><pubDate>Thu, 02 Jan 2025 00:00:00 +0000</pubDate><author>josh@lambertmail.xyz (Josh Lambert)</author><description><![CDATA[<p><a href="https://carear.com" rel="noopener" target="_blank">CareAR</a>, a division of <a href="https://www.xerox.com/" rel="noopener" target="_blank">Xerox</a>, is an augmented reality software company with the motto to “Make Expertise Accessible”. They do this through their proprietary mobile application which connects field technicians to experts at their home office. Both the technician and remote expert are able to interact together in real-time over live-stream video from the work site where they can collaborate to solve challenges that the technician would struggle with independently without assistance.</p>]]></description><content:encoded><![CDATA[<p><a href="https://carear.com" rel="noopener" target="_blank">CareAR</a>, a division of <a href="https://www.xerox.com/" rel="noopener" target="_blank">Xerox</a>, is an augmented reality software company with the motto to “Make Expertise Accessible”. They do this through their proprietary mobile application which connects field technicians to experts at their home office. Both the technician and remote expert are able to interact together in real-time over live-stream video from the work site where they can collaborate to solve challenges that the technician would struggle with independently without assistance.</p>
<p><figure>
    <a class="zoom" href="https://joshlambert.xyz/images/posts/carbon-calculator-for-carear/Telecom-Assist22-modem-float-cropped.jpg_hu_b851f4899a0cbfc5.webp" aria-label="View larger image">
      <img src="https://joshlambert.xyz/images/posts/carbon-calculator-for-carear/Telecom-Assist22-modem-float-cropped.jpg_hu_b851f4899a0cbfc5.webp" width="900" height="552"
           alt="CareAR remote-assistance demo: a hand holding a phone with the AR overlay “Unplug this coax cable” pointing at a cable modem on a wooden table." loading="lazy" decoding="async">
    </a></figure></p>
<p>This technology has provided tremendous value in the manufacturing, telecom, IT service, and healthcare industries saving thousands of man hours and truck-rolls from needing to happen.</p>
<p>In addition to the cost saving measures CareAR has delivered to their customers, there’s also a <a href="https://carear.com/sustainability/" rel="noopener" target="_blank">significant cut in carbon emissions</a> for organizations that deploy this technology.</p>
<p>I worked with the team at CareAR to develop an embedded carbon calculator for their website. This tool allows visitors to model how CareAR can help their organization cut carbon emissions and save money at the same time based on their truck roles, job site distance, and fuel used in dispatch.</p>
<p>The calculator was developed as a custom <a href="https://wordpress.org" rel="noopener" target="_blank">WordPress</a> plugin that was built to support the Divi theme on the website. Form values were connected to their <a href="https://business.adobe.com/products/marketo.html" rel="noopener" target="_blank">Adobe Marketo</a> platform making it easy for CareAR staff to connect with visitors interested in the CareAR service offering.</p>
<figure class="gallery">
  <div class="gallery__row"><a class="zoom" href="https://joshlambert.xyz/images/posts/carbon-calculator-for-carear/marketo-an-adobe-company-vector-logo_hu_e32413cdf0b2dd9e.webp" aria-label="View larger image" style="flex-grow: 1.7985611510791366;"><img src="https://joshlambert.xyz/images/posts/carbon-calculator-for-carear/marketo-an-adobe-company-vector-logo_hu_22910d64534d0e6.webp" width="1000" height="556" alt="Marketo logo, with a stack of three purple bars next to the dark navy “Marketo” wordmark and the tagline “An Adobe Company.”" loading="lazy" decoding="async"></a><a class="zoom" href="https://joshlambert.xyz/images/posts/carbon-calculator-for-carear/Screenshot-2025-01-01-at-9.32.46-PM_hu_cca139995af64f76.webp" aria-label="View larger image" style="flex-grow: 1.663893510815308;"><img src="https://joshlambert.xyz/images/posts/carbon-calculator-for-carear/Screenshot-2025-01-01-at-9.32.46-PM_hu_d9f0720666a0b685.webp" width="1000" height="601" alt="Elegant Themes logo, the lowercase “elegant” wordmark in dark gray with a magenta starburst above the “g,” and the word “themes” beneath in light gray." loading="lazy" decoding="async"></a><a class="zoom" href="https://joshlambert.xyz/images/posts/carbon-calculator-for-carear/Screenshot-2025-01-01-at-9.06.04-PM_hu_f81a682a92ecf1a9.webp" aria-label="View larger image" style="flex-grow: 2.1459227467811157;"><img src="https://joshlambert.xyz/images/posts/carbon-calculator-for-carear/Screenshot-2025-01-01-at-9.06.04-PM_hu_a90fdd18550a989c.webp" width="1000" height="466" alt="Logo of WordPress.org, the white circled W glyph with the WordPress.org wordmark on a dark slate background." loading="lazy" decoding="async"></a>
  </div></figure>

<p>Does your marketing team need something like this on your website? I can help! <a href="https://joshlambert.xyz/contact/">Drop me a DM and let’s make it happen.</a></p>
]]></content:encoded></item><item><title>A Holler for Your Dollar</title><link>https://joshlambert.xyz/work/a-holler-for-your-dollar/</link><guid>https://joshlambert.xyz/work/a-holler-for-your-dollar/</guid><pubDate>Wed, 26 Jul 2023 00:00:00 +0000</pubDate><author>josh@lambertmail.xyz (Josh Lambert)</author><description>&lt;p>It’s a fast-paced world for online content creators. Alas, one thing remains a constant: uncertainty. The preferences of a creator’s fanbase can change with the wind, and the demands of content platforms hosting creators is always evolving. It’s an ever-changing area where content creators must be agile in order to stay relevant and financially sustainable.&lt;/p>
&lt;p>A new tool has emerged forging another way for content creators to monetize their work. With Holler, fans can directly support their favorite content creators through purchase of a shout-out, up to 10 words, on their podcast or live-stream. Proceeds from sales of these shout-outs will appear swiftly in a creators’ linked bank account with minimal friction or delay.&lt;/p></description><content:encoded><![CDATA[<p>It’s a fast-paced world for online content creators. Alas, one thing remains a constant: uncertainty. The preferences of a creator’s fanbase can change with the wind, and the demands of content platforms hosting creators is always evolving. It’s an ever-changing area where content creators must be agile in order to stay relevant and financially sustainable.</p>
<p>A new tool has emerged forging another way for content creators to monetize their work. With Holler, fans can directly support their favorite content creators through purchase of a shout-out, up to 10 words, on their podcast or live-stream. Proceeds from sales of these shout-outs will appear swiftly in a creators’ linked bank account with minimal friction or delay.</p>
<p>On-boarding for a creator to join the Holler platform is quick and easy. Within just 10 minutes of registration and linking a bank account, a creator can start harnessing the potential of Holler to fund their creative endeavors. Each creator receives a unique, customizable URL like <strong><a href="https://holler.baby/josh" rel="noopener" target="_blank">holler.baby/josh</a></strong>, ready to be shared across their various social channels and streams for shout-out-sales.</p>
<p><figure>
    <a class="zoom" href="https://joshlambert.xyz/images/posts/a-holler-for-your-dollar/Holler_Screenshot2-1024x499_hu_bb9ee8562fded8be.webp" aria-label="View larger image">
      <img src="https://joshlambert.xyz/images/posts/a-holler-for-your-dollar/Holler_Screenshot2-1024x499_hu_bb9ee8562fded8be.webp" width="1024" height="499"
           alt="Screenshot of Josh Lambert’s Holler.tv creator profile, advertising a 10-word podcast shoutout for $150 with a “Book Now” button under his Twitter handle." loading="lazy" decoding="async">
    </a></figure></p>
<p>With Holler, creators remain in full control of their content. The platform includes an easy-to-use management tool for incoming shout-out purchases, allowing a creator to approve or reject a Holler request at their discretion. This allows a creator to ensure the integrity of their content while also directly engaging with their fan base.</p>
<p>My friend, Chris Macho, envisioned and founded Holler, leading all of the business and design decisions for the platform. Andrei Zobnin, one of my associates at <a href="https://centrevilletech.com" rel="noopener" target="_blank">Centreville Tech</a>, handled the code and development roles for this project building everything from the ground up in order to match the design specifications from Chris. Leonard Smith, a friend of mine over at Acorn Web Consultants, handled the work necessary to get Holler into a containerized environment (Docker!) so we’re setup to scale as the platform grows. I handled the technology architecture, planning, and project management responsibilities. Everybody mentioned here was a dream team, and it was a pleasure working with them to see this through to a shipped working product.</p>
<figure class="gallery">
  <div class="gallery__row"><a class="zoom" href="https://joshlambert.xyz/images/posts/a-holler-for-your-dollar/1524759598340_hu_634c7d7edb059644.webp" aria-label="View larger image" style="flex-grow: 1;"><img src="https://joshlambert.xyz/images/posts/a-holler-for-your-dollar/1524759598340_hu_486fb76bf6c1fb57.webp" width="1000" height="1000" alt="Black-and-white profile photo of Chris Macho, a bearded, bald creator in sunglasses and a black t-shirt against a textured concrete wall." loading="lazy" decoding="async"></a><a class="zoom" href="https://joshlambert.xyz/images/posts/a-holler-for-your-dollar/CUZuzvgD_400x400-1_hu_1ec65e7904063c0f.webp" aria-label="View larger image" style="flex-grow: 1;"><img src="https://joshlambert.xyz/images/posts/a-holler-for-your-dollar/CUZuzvgD_400x400-1_hu_6ba11591fdbc2f42.webp" width="1000" height="1000" alt="Black-and-white headshot of Josh Lambert, a young man with long blonde hair smiling in a button-up plaid shirt and blazer against a white brick wall." loading="lazy" decoding="async"></a><a class="zoom" href="https://joshlambert.xyz/images/posts/a-holler-for-your-dollar/andrei_hu_b0c90f9243aa04fb.webp" aria-label="View larger image" style="flex-grow: 1;"><img src="https://joshlambert.xyz/images/posts/a-holler-for-your-dollar/andrei_hu_d81687c1dd606c75.webp" width="1000" height="1000" alt="Black-and-white window-light photo of Andrei Zobnin, a bearded young creator in glasses, looking off-frame from a balcony with a hillside village beyond." loading="lazy" decoding="async"></a><a class="zoom" href="https://joshlambert.xyz/images/posts/a-holler-for-your-dollar/T02DWBLPG-U03FEJS7J-d84e62f8037a-512_hu_5ed13ae403bce512.webp" aria-label="View larger image" style="flex-grow: 1;"><img src="https://joshlambert.xyz/images/posts/a-holler-for-your-dollar/T02DWBLPG-U03FEJS7J-d84e62f8037a-512_hu_cba10344ac06f85a.webp" width="1000" height="1000" alt="Black-and-white photo of Leonard Smith, an older bearded man with glasses smiling against a softly blurred outdoor background." loading="lazy" decoding="async"></a>
  </div></figure>

<p>I’m thrilled to announce that content creators will begin listing themselves on the platform starting this week. We’re excited to ship Holler and believe it will have a positive influence for the shows and content we all consume.</p>
<p>Should you have a question about Holler or are needing assistance developing your own software project, I can help! Send me a note to <a href="mailto:josh@lambertmail.xyz">josh@lambertmail.xyz</a>. I’m always thrilled to make a new friend.</p>
<p>Are you a creator looking for a new way to support your content? You should join Holler! <a href="https://holler.baby/sign-up" rel="noopener" target="_blank">You can sign-up by clicking here</a>.</p>
]]></content:encoded></item><item><title>It’s a Twister! It’s a Twister!</title><link>https://joshlambert.xyz/work/its-a-twister-its-a-twister/</link><guid>https://joshlambert.xyz/work/its-a-twister-its-a-twister/</guid><pubDate>Tue, 13 Jun 2023 00:00:00 +0000</pubDate><author>josh@lambertmail.xyz (Josh Lambert)</author><description>&lt;p>The 1939 Metro-Goldwyn-Mayer film “The Wizard Of Oz” embedded unforgettable images of tornadoes and their dangers into my childhood memory. This cinematic portrayal highlights the power of visual representation in understanding severe weather conditions.&lt;/p>
&lt;p>Meteorologists across the nation have realized the effectiveness of visualizing weather events. Seeing is believing, a live camera view of active danger in a community can be exactly what it takes to have a tornado warning taken seriously.&lt;/p></description><content:encoded><![CDATA[<p>The 1939 Metro-Goldwyn-Mayer film “The Wizard Of Oz” embedded unforgettable images of tornadoes and their dangers into my childhood memory. This cinematic portrayal highlights the power of visual representation in understanding severe weather conditions.</p>
<p>Meteorologists across the nation have realized the effectiveness of visualizing weather events. Seeing is believing, a live camera view of active danger in a community can be exactly what it takes to have a tornado warning taken seriously.</p>
<h3 id="rise-of-the-weather-cameras">Rise of the Weather Cameras</h3>
<p>As internet access has become more widespread, there’s been a significant increase in the installation of permanent weather cameras. These new views provide those covering severe weather a powerful communication tool for getting warnings out and having them taken seriously. WBRC, a television station covering the Birmingham/Tuscaloosa/Anniston area, operates 22 of these at the time this article was written based on the views available from their website. You can <a href="https://www.wbrc.com/weather/cams/" rel="noopener" target="_blank">click here</a> to see pictures from the different camera views they have right now.</p>
<p>Recently I had the opportunity to work with WBRC’s Chief Meteorologist Wes Wyatt on the installation of two new severe weather cameras for their SkyVision network. One of these cameras is situated on the 911 dispatch tower on our town square. The other is located at Adair Tire in Gardendale, Alabama. Check out the gorgeous view from the camera operating here in Centreville:</p>
<p><figure>
    <a class="zoom" href="https://joshlambert.xyz/images/posts/its-a-twister-its-a-twister/CentrevilleCamera-1024x576_hu_ec59347623834c1b.webp" aria-label="View larger image">
      <img src="https://joshlambert.xyz/images/posts/its-a-twister-its-a-twister/CentrevilleCamera-1024x576_hu_ec59347623834c1b.webp" width="1024" height="576"
           alt="Lightwave LINK webcam still labeled ‘Dispatch Tower / Centreville,’ showing a calm afternoon panorama over the wooded Bibb County, Alabama hills." loading="lazy" decoding="async">
    </a></figure></p>
<p>My responsibilities for this job were identifying the equipment necessary to mount and cable these cameras. Additionally, I handled securing internet access at these two locations and making the cameras accessible via a closed internet tunnel to the WBRC studio.</p>
<p>Since getting the Centreville camera online, we’ve had a number of close calls with tornadoes. Each time a tornado has threatened my town, the surreal experience of seeing the danger on live TV stirred awe, some fear, fascination, but mostly a profound appreciation for weather camera technology available today. Wes and his staff at WBRC display these views and show the public what is concerning and what isn’t. They can show when there’s evidence of a funnel trying to drop, or perhaps how close lightning is and the importance of getting indoors away from it.</p>
<h3 id="what-does-it-take-to-get-a-weather-camera-online">What does it take to get a weather camera online?</h3>
<p>The ingredients for a camera site like this aren’t particularly complex. You need a good quality camera, we used the <a href="https://store.icrealtime.com/ICIP-2501HD-IR" rel="noopener" target="_blank">ICIP-2501HD-IR</a>. You’ll also need the necessary mounting hardware to attach this to something like a pole or tower leg.</p>
<p>As far as cabling goes, I used <a href="https://store.ui.com/us/en/collections/uisp-accessories-cabling/products/uisp-cable-carrier" rel="noopener" target="_blank">Ubiquiti’s Carrier Class</a> outdoor cable terminated with <a href="https://store.ui.com/us/en/collections/uisp-accessory-tech-poe-surge-protection/products/uisp-connector-shd" rel="noopener" target="_blank">Ubiquiti Tough Connectors</a>. Surge protection was added to this link for lightning and ESD events using Ubiquiti’s <a href="https://store.ui.com/us/en/collections/uisp-accessory-tech-poe-surge-protection/products/ethernet-surge-protector" rel="noopener" target="_blank">ETH-SP-G2</a>. The camera itself was powered using a <a href="https://store.ui.com/us/en/collections/unifi-switching-utility-hi-power-poe/products/us-8-150w" rel="noopener" target="_blank">Unifi POE switch</a>.</p>
<p>Good internet access and the parts listed above represent the essentials needed to host a weather camera. Of course there’s also the logistics of getting tower climbers and the necessary insurance and certifications on hand to get one of these installed. Depending on the proposed location for a camera, you might also have to navigate securing a lease for a tower site. But this isn’t required if instead you’re mounting on something like a rooftop.</p>
<h3 id="what-about-making-a-camera-view-available-from-the-public-internet">What about making a camera view available from the public internet?</h3>
<p>If you have access to a server, you can use a tool such as FFMPEG to convert the camera’s video stream into a format that will enable playback in the browser. For the view above, I setup a Debian Linux server and installed FFMPEG into it. Once FFMPEG was installed, the following command was used to login to the camera, capture the stream data, then convert it to a browser format that can be played back on any device without plugins or special software. Or without even needing to login!</p>
<pre tabindex="0"><code>ffmpeg -rtsp_transport tcp -max_delay 5000000 -v info -i rtsp://SECRETUSERNAME:SECRETPASSWORD@XX.XX.XX.XX:554 -c:v libx264 -b:v 1000k -vf scale=-1:720 -r 24 -crf 23 -c:a copy -bufsize 1835k -pix_fmt yuv420p -flags -global_header -hls_time 4 -hls_list_size 10 -hls_flags delete_segments -start_number 1 /var/www/html/video.m3u8^C
</code></pre><p>With this in place, you can create a basic HTML page with a video player to stream this in any browser. The HTML source code I use for mine is on a <a href="https://gist.github.com/joshualambert/2f08154d508fe3bf5a4e7a1d13f5dc6a" rel="noopener" target="_blank">Github Gist</a> here if you’re interested.</p>
<h3 id="should-you-help-bring-a-weather-webcam-to-your-own-community">Should you help bring a weather webcam to your own community?</h3>
<p>From where I sit, the advantage of having a local weather camera is clear. With the continued progress of technology, it’s never been easier to pull the logistics together necessary to get a weather camera online. The hardware costs are also reasonable and in reach for most businesses and governments. If you’re a local business owner or government representative with access to a high point in your town, consider the significant benefits of bringing a weather camera to your community. I’m <a href="mailto:josh@lambertmail.xyz">available for hire</a> to guide you through this process if you need assistance.</p>
]]></content:encoded></item></channel></rss>