<?xml version="1.0" encoding="utf-8"?><feed xmlns="http://www.w3.org/2005/Atom" ><generator uri="https://jekyllrb.com/" version="3.10.0">Jekyll</generator><link href="zcshiner.github.io/feed.xml" rel="self" type="application/atom+xml" /><link href="zcshiner.github.io/" rel="alternate" type="text/html" /><updated>2026-05-25T19:57:10+00:00</updated><id>zcshiner.github.io/feed.xml</id><title type="html">Portfolio</title><author><name>© 2026 Zachary Shiner</name></author><entry><title type="html">Radio-Synchronized Bedside Clock</title><link href="zcshiner.github.io/projects/bedside-atomic" rel="alternate" type="text/html" title="Radio-Synchronized Bedside Clock" /><published>2024-10-01T00:00:00+00:00</published><updated>2024-10-01T00:00:00+00:00</updated><id>zcshiner.github.io/projects/bedside-atomic</id><content type="html" xml:base="zcshiner.github.io/projects/bedside-atomic"><![CDATA[<p><img src="/images/clock_pretty.jpg" alt="Hero shot of the finished clock" class="post-img-full" /></p>

<p>I designed and manufactured my own radio-synchronized bedside clock after growing frustrated with the available off-the-shelf options. I wanted something simple and handsome that would keep perfect time without looking like a science project.</p>

<p>What I ended up designing is a from-scratch clock that synchronizes with the WWVB atomic time broadcast signal from NIST in Colorado. It features a custom enclosure, my own electronics, and firmware written from the ground up. While it was built to solve a personal problem, it turned into a broad exercise in mechanical design, embedded software, PCB layout, RF integration, and even small-batch manufacturing.</p>

<p><img src="/images/clock_final_internals.jpg" alt="Clock with lens cover removed" class="post-img-full" /></p>

<h2 id="motivation">Motivation</h2>

<p>I began the project with a simple goal: replace my aging bedside clock with something better. Specifically, I wanted something that:</p>

<ul>
  <li>Had a clear and legible display that was readable without glasses at night</li>
  <li>Looked clean, intentional, and purposeful on my nightstand</li>
  <li>Was always accurate</li>
</ul>

<p>To my surprise, I couldn’t find any commercial options that met my needs. Most “atomic clocks” on the market were designed for wall mounting, and the handful of tabletop clocks that did exist were either unattractive, expensive, or cluttered with irrelevant features like projecting the time on the ceiling.</p>

<p>So I decided to build my own.</p>

<h2 id="time-accuracy">Time Accuracy</h2>

<p>There are a few methods for automatically setting the time on a device. You can:</p>

<ul>
  <li>Connect it to the internet</li>
  <li>Give it a GPS antenna</li>
  <li>Synchronize with WWVB</li>
</ul>

<p>The thought of adding another Internet connected device to my home was unappealing to me. It would mean managing Wifi credentials and device security – things I’m not an expert on – especially when there were other equally good options available. I also had concerns that my nightstand, being not immediately next to a window, would get poor GPS reception. Because of these considerations, I decided to explore the radio synchronization method.</p>

<h2 id="proof-of-concept">Proof of Concept</h2>

<p><img src="/images/clock_poc_board.jpg" alt="Proof of concept breadboard with WWVB receiver, Arduino, and 7-segment display" class="post-img-right" /></p>

<p>I began by breadboarding a basic proof of concept. I used the <a href="https://www.universal-solder.ca/product/everset-es100-wwvb-bpsk-atomic-clock-starter-kit/">ES100-mod WWVB</a> receiver module, connected to an Arduino and a Holtek HT16K33 display driver. My first step was using the provided example code to receive and display the time on a quad-digit, 7-segment LED module.</p>

<p>After proving out the basic idea, I identified and incorporated a larger format display with dedicated AM/PM and alarm indicator LEDs. This would be the only display so the alarm indicators were reinterpreted as cues to the time sync status.</p>

<div style="clear:both"></div>

<h2 id="industrial-design">Industrial Design</h2>

<p><img src="/images/clock_inspiration_newgate.png" alt="Newgate Space Hotel clock used as design reference" class="post-img-left" /></p>

<p>My early concepts were inspired by modernist and mid-century table clocks—clean shapes with subtle curves and minimal interactions. I built a lil mood board to guide the aesthetic direction and even asked AI to help me with inspiration.</p>

<div style="clear:left"></div>

<p><img src="/images/clock_inspiration_ai.png" alt="AI-generated clock design inspiration" class="post-img-right" /></p>

<p>I eventually landed on a design direction I liked and started to build out a 3D model in SolidWorks. Although I planned to 3D print the housing, I designed it as if it would be injection molded. This means uniform wall thickness, consideration for draft angles, and planning for parting lines. I prioritized curvature continuity using splines, and validated the surface quality using zebra stripe analysis. The final design features a shallow curved bezel that smoothly transitions to a more rectangular rear panel that housed the buttons.</p>

<p>A downside of using a radio time signal is the clock only knows what time it is, unlike GPS that also knows where it is. This means that you need a way to input your current timezone as well as if you follow daylight savings time rules (looking at you Arizona). Therefore this design has 4 total inputs: Time Zone, DST, as well as an Hour and Minute adjust for getting the time right before a synchronization happens. More on that later.</p>

<p>Internally, the layout required careful planning to make efficient use of space. The final configuration split the electronics across two PCBs: a front-facing board for the display, WWVB receiver, and main microcontroller. Then a rear board for the user controls and a very modern USB-C connector. Between the two would be the chapstick-sized 60khz ferrite antenna.</p>

<h2 id="firmware">Firmware</h2>

<p>Everything was written in C++ and structured around a central timekeeping task. Initially, I made the mistake of storing local time and modifying the clock state directly for daylight saving time and time zone offsets. This ended up being a terrible way to keep track of time and led to inconsistent states or repeat DST transitions.</p>

<p>In the final design, the system maintains UTC as its internal clock reference. Local time is calculated and displayed dynamically after evaluating the state of the rear switches and the DST bits that are broadcast as part of the WWVB signal.</p>

<p>It was a huge accomplishment to watch the DST transition happen in real time and correctly this past March (yes I stayed up for it).</p>

<p>One interesting quirk of WWVB: it’s a 60 kHz longwave signal and propagates best at night, especially here on the East Coast. You can blame the ionosphere. This means a good time sync really only happens during “dark path” hours. A pair of Hour and Minute adjust buttons allow the time to be set at power up and before a good time sync takes place.</p>

<h2 id="pcb-design">PCB Design</h2>

<p>This was my first ever PCB design and I used KiCad to create the schematic and board layout. I designed the board to accept a small-format Arduino (an Adafruit <a href="https://www.adafruit.com/product/3677">Itsy Bitsy</a>) and included the following:</p>

<ul>
  <li>HT16K33 LED driver</li>
  <li>Bidirectional 5V to 3.3V level shifting for the ES100 module</li>
  <li>Some basic filtering to hopefully keep the supply voltage free from 60Hz harmonics</li>
</ul>

<p><img src="/images/clock_pcb_v1_schematic.png" alt="Version 1 PCB schematic in KiCad" class="post-img-full" /></p>

<p>A little design trick that I am proud of is using a pair of diodes to form a 4-2 encoder. This let me read the 4 position Time Zone slider switch with just two signal lines.</p>

<p>With reasonable confidence in my design and a nod of approval from an Electrical Engineering buddy of mine, I ordered PCBs from the internet and patiently awaited their arrival.</p>

<h2 id="first-testing">First Testing</h2>

<p>Once my boards arrived I set off to assemble them. Doing SMD assembly was another “first” for this project and I rapidly learned that this is <em>not</em> something I enjoy. Nonetheless I am extremely happy with how the assembly turned out.</p>

<p><img src="/images/clock_assembly_1.jpg" alt="Assembled v1 PCB on the bench" class="post-img-full" /></p>

<p><img src="/images/clock_assembly_2.jpeg" alt="Close-up of hand-soldered SMD assembly" class="post-img-right" /></p>

<p>I did a thorough round of testing of this prototype board on the bench. Reception was great, timekeeping was accurate, all the buttons worked as they should and the supply voltage filtering seemed to be effective.</p>

<p>That is until I assembled the clock inside the enclosure. While the system functioned reliably on the bench, reception failed entirely once the antenna was enclosed in the 3D printed housing.</p>

<p>This kicked off a long debugging process. I considered whether the 3D printed plastic (possibly containing carbon black pigment) was shielding the signal, whether the PCB ground plane blocked reception, or whether cable routing introduced interference. I even tried wrapping the board in foil.</p>

<div style="clear:both"></div>

<p><img src="/images/clock_debugging_1.jpg" alt="Debugging the antenna reception issue" class="post-img-full" /></p>

<p>The root cause turned out to be antenna placement. Moving the antenna physically further from the microcontroller seemed to solve the problem. This insight forced a redesign of the enclosure to accommodate the new antenna position. I experimented with a few different layouts and variations on the industrial design until I arrived at something acceptable. The final result was a cleaner, more visually balanced layout that I’m ultimately very pleased with.</p>

<p><img src="/images/clock_debugging_2.jpg" alt="Testing antenna placement configurations" class="post-img-full" /></p>

<p>This final enclosure was 3D printed from matte gray PLA, and I laser-cut a smoked acrylic lens (#2074) to diffuse the display. This specific material has ~36% light transmittance which is sufficient to hide the digits when off, but fully readable when backlit.</p>

<p><img src="/images/clock_debugging_3.jpg" alt="Final enclosure design with repositioned antenna" class="post-img-full" /></p>

<p>The result looked and felt like a real product. It’s been on my nightstand for months now, and it’s worked flawlessly.</p>

<p>But wait, there’s more!!</p>

<h2 id="version-2-chip-down-redesign">Version 2: Chip-Down Redesign</h2>

<p>Once I had a solid v1, I couldn’t resist starting on version 2. The enclosure remained essentially the same, but I wanted to push the electronics further. Specifically, I wanted to design a board that directly integrated a microcontroller, what my <em>advisors</em> call a “chip down” approach, rather than relying on a commercial Arduino board.</p>

<p>For this V2 I made the following changes:</p>

<ul>
  <li>Directly integrated ATmega32U4 and supporting circuitry</li>
  <li>USB 2.0 support on the rear housing connector (instead of just power)</li>
  <li>Piezo buzzer for UI feedback</li>
  <li>12/24 hour toggle button</li>
  <li>Future support for dual antennas</li>
</ul>

<p><img src="/images/clock_pcb_v2_schematic.png" alt="Version 2 PCB schematic in KiCad" class="post-img-full" /></p>

<p><img src="/images/clock_v2_assembly.jpeg" alt="Version 2 professionally assembled board" class="post-img-right" /></p>

<p>This was also the first time I had a board assembled professionally. After hand-soldering my first design, I realized how time-consuming surface mount assembly is. This time I used a contract manufacturer to assemble the boards.</p>

<p>I did make one small mistake. I’m using the Arduino Leonardo bootloader on this board and I accidentally wired two signals into the pins that would otherwise drive the board’s TX/RX LEDs. I decided not to modify the bootloader and instead added a few bodge wires to the board to move those signals to unused pins.</p>

<div style="clear:both"></div>

<h2 id="final-thoughts">Final Thoughts</h2>

<p>This project has been deeply rewarding for me. It pushed my skills across hardware, firmware, and product design. It ultimately yielded a result that I use every single day.</p>

<p>I’m already thinking about version 3. Maybe I’ll add a battery backup, maybe I’ll add some RGB LEDs, Who knows!</p>

<h2 id="references">References</h2>

<ul>
  <li>I’ve got my code posted here <a href="https://github.com/zcshiner/Bedside_Atom">https://github.com/zcshiner/Bedside_Atom</a></li>
  <li>I’m using Universal Solder’s <a href="https://universal-solder.ca/product/canaduino-es100-mod-wwvb-bpsk-atomic-clock-receiver-module/">ES100-MOD</a> WWVB Receiver</li>
</ul>

<p>I might consider selling a board and housing kit if there’s interest. Drop me a line if that’s something you would like.</p>]]></content><author><name>© 2026 Zachary Shiner</name></author><category term="projects" /><summary type="html"><![CDATA[An accurate tabletop clock that stays in sync with WWVB]]></summary><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="zcshiner.github.io/images/clock_pretty.jpg" /><media:content medium="image" url="zcshiner.github.io/images/clock_pretty.jpg" xmlns:media="http://search.yahoo.com/mrss/" /></entry><entry><title type="html">Olympus 35 RC Restoration</title><link href="zcshiner.github.io/projects/olympus-35-rc-restoration" rel="alternate" type="text/html" title="Olympus 35 RC Restoration" /><published>2024-07-01T00:00:00+00:00</published><updated>2024-07-01T00:00:00+00:00</updated><id>zcshiner.github.io/projects/olympus-35-rc-restoration</id><content type="html" xml:base="zcshiner.github.io/projects/olympus-35-rc-restoration"><![CDATA[<p><img src="/images/olympus-35rc-hero.jpg" alt="Olympus 35 RC" /></p>

<p>I restored a 70s film camera that I purchased at an estate sale. The Olympus 35 RC suffers from a know corrosion issue in the electrical system. To restore the camera, I performed a partial disassembly and replaced damaged wiring. I fabricated replacement light seals and reassembled the camera.</p>

<div class="post-img-grid">
  <img src="/images/olympus-35rc-disassembly.jpg" alt="Disassembly" />
  <img src="/images/olympus-35rc-light-seal-fabricated.jpg" alt="Remanufactured Light Seal" />
  <img src="/images/olympus-35rc-seal-installed.jpg" alt="Seal Installed" />
  <img src="/images/olympus-35rc-reassembly.jpg" alt="Reassembly" />
</div>]]></content><author><name>© 2026 Zachary Shiner</name></author><category term="projects" /><summary type="html"><![CDATA[Full restoration of a 1970s rangefinder camera, including rewiring and fabricated light seals]]></summary><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="zcshiner.github.io/images/olympus-35rc-hero.jpg" /><media:content medium="image" url="zcshiner.github.io/images/olympus-35rc-hero.jpg" xmlns:media="http://search.yahoo.com/mrss/" /></entry><entry><title type="html">ANTHEM Distal Femur Fracture System</title><link href="zcshiner.github.io/projects/anthem-distal-femur-fracture-system" rel="alternate" type="text/html" title="ANTHEM Distal Femur Fracture System" /><published>2021-01-01T00:00:00+00:00</published><updated>2021-01-01T00:00:00+00:00</updated><id>zcshiner.github.io/projects/anthem-distal-femur-fracture-system</id><content type="html" xml:base="zcshiner.github.io/projects/anthem-distal-femur-fracture-system"><![CDATA[<p><img src="/images/anthem-hero.jpg" alt="ANTHEM Distal Femur Fracture System" class="post-img-full" /></p>

<p>The ANTHEM® Distal Femur Fracture System offers anatomically contoured plates in a comprehensive set to treat a variety of distal femur fractures.</p>

<p>I lead the development of most of the high-accuracy percutaneous targeting instrumentation for this system.</p>

<p><strong>Product Page:</strong> <a href="https://www.globusmedical.com/products/anthem-distal-femur-fracture-system/">Product Overview</a></p>

<div class="post-img-grid post-img-grid-wide">
  <div class="video-embed">
    <iframe src="https://www.youtube-nocookie.com/embed/sY36V-Qr1JE?rel=0" title="ANTHEM Distal Femur Fracture System" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen="" loading="lazy"></iframe>
  </div>
  <img src="/images/anthem-img2.jpg" alt="ANTHEM targeting instrumentation" />
  <img src="/images/anthem-img3.jpg" alt="ANTHEM targeting instrumentation detail" />
  <img src="/images/anthem-img4.jpg" alt="ANTHEM targeting instrumentation assembly" />
  <img src="/images/anthem-img5.jpg" alt="ANTHEM system components" />
  <video src="/images/anthem-overview.mp4" controls="" playsinline="" style="width:100%;border-radius:3px;"></video>
</div>]]></content><author><name>© 2026 Zachary Shiner</name></author><category term="projects" /><summary type="html"><![CDATA[Instrumentation for an orthopedic fracture fixation system]]></summary><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="zcshiner.github.io/images/anthem-hero.jpg" /><media:content medium="image" url="zcshiner.github.io/images/anthem-hero.jpg" xmlns:media="http://search.yahoo.com/mrss/" /></entry><entry><title type="html">Woodworking</title><link href="zcshiner.github.io/projects/woodworking" rel="alternate" type="text/html" title="Woodworking" /><published>2018-01-01T00:00:00+00:00</published><updated>2018-01-01T00:00:00+00:00</updated><id>zcshiner.github.io/projects/woodworking</id><content type="html" xml:base="zcshiner.github.io/projects/woodworking"><![CDATA[<p><img src="/images/woodworking-hero.jpg" alt="Woodworking" /></p>

<p>In 2018 I designed and fabricated a coffee table. I adapted plans from a woodworking magazine and modeled the design in Fusion 360. I used the equipment and expertise at Philadelphia Woodworks in Manayunk, PA to transform rough-cut hardwood lumber into a beautiful piece of furniture. The table is constructed from cherry, features soft-close drawers made from poplar, and minimizes the use of screws.</p>

<div class="post-img-grid post-img-grid-wide">
  <img src="/images/woodworking-cad-model.png" alt="CAD Model" />
  <img src="/images/woodworking-first-cuts.jpg" alt="First Cuts" />
  <img src="/images/woodworking-mortise-layout.jpg" alt="Mortise Layout" />
  <img src="/images/woodworking-glueup-table-back.jpg" alt="Glueup of Table Back" />
  <img src="/images/woodworking-table-back-tenon-cuts.jpg" alt="Table Back Tenon Cuts" />
  <img src="/images/woodworking-side-test-fits.jpg" alt="Side Test Fits" />
  <img src="/images/woodworking-glueup-tabletop.jpg" alt="Glueup of Tabletop" />
  <img src="/images/woodworking-clamped-tabletop.jpg" alt="Clamped Tabletop" />
  <img src="/images/woodworking-final-assembly-frame.jpg" alt="Final Assembly of the Frame" />
  <img src="/images/woodworking-drawer-supports.jpg" alt="Drawer Supports" />
  <img src="/images/woodworking-installed-drawers.jpg" alt="Installed Drawers" />
</div>]]></content><author><name>© 2026 Zachary Shiner</name></author><category term="projects" /><summary type="html"><![CDATA[Cherry coffee table with soft-close poplar drawers, designed in Fusion 360]]></summary><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="zcshiner.github.io/images/woodworking-hero.jpg" /><media:content medium="image" url="zcshiner.github.io/images/woodworking-hero.jpg" xmlns:media="http://search.yahoo.com/mrss/" /></entry><entry><title type="html">Alarm Muffler</title><link href="zcshiner.github.io/projects/alarm-muffler" rel="alternate" type="text/html" title="Alarm Muffler" /><published>2016-06-07T00:00:00+00:00</published><updated>2016-06-07T00:00:00+00:00</updated><id>zcshiner.github.io/projects/alarm-muffler</id><content type="html" xml:base="zcshiner.github.io/projects/alarm-muffler"><![CDATA[<p><img src="/images/alarm-muffler-hero.jpeg" alt="Alarm Muffler" /></p>

<p>I invented a sound deadening accessory that was inspired by an anechoic chamber. We originally had a need for an internal tool to quiet the alarm on the product during testing and calibration. The alarm only had two volume settings: off and very loud. There was an internal contest for who could reduce the sound level the most. My design reduced the sound pressure level twice as much as the next competing design. It ended up being so useful that it was turned into a commercial accessory. The Alarm Muffler is manufactured from injection molded ABS. It’s prominently featured in many training videos online and available for purchase <a href="https://www.grainger.com/product/INDUSTRIAL-SCIENTIFIC-Alarm-Muffler-Alarm-Muffler-52HP60">at Grainger</a>.</p>

<div class="post-img-grid post-img-grid-wide">
  <img src="/images/alarm-muffler-cad-model.jpg" alt="Early CAD model in Creo" />
  <img src="/images/alarm-muffler-acoustic-pyramids.jpg" alt="Internal Acoustic Pyramids" />
  <img src="/images/alarm-muffler-spl-readings.jpg" alt="SPL Readings" />
  <img src="/images/alarm-muffler-tooling-1.jpg" alt="Tooling" />
  <img src="/images/alarm-muffler-tooling-2.jpg" alt="Tooling" />
  <img src="/images/alarm-muffler-for-sale.png" alt="For sale" />
  <video src="/images/alarm-muffler-molding-trial.mp4" controls="" playsinline="" style="width:100%;border-radius:3px;"></video>
</div>

<div class="video-embed">
  <iframe src="https://www.youtube-nocookie.com/embed/VhJXhBcBhBM?rel=0" title="Alarm Muffler" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen="" loading="lazy"></iframe>
</div>]]></content><author><name>© 2026 Zachary Shiner</name></author><category term="projects" /><summary type="html"><![CDATA[Injection-molded sound deadening accessory for gas detectors, sold commercially at Grainger]]></summary><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="zcshiner.github.io/images/alarm-muffler-hero.jpeg" /><media:content medium="image" url="zcshiner.github.io/images/alarm-muffler-hero.jpeg" xmlns:media="http://search.yahoo.com/mrss/" /></entry><entry><title type="html">Stewart Platform</title><link href="zcshiner.github.io/projects/stewart-platform" rel="alternate" type="text/html" title="Stewart Platform" /><published>2015-05-01T00:00:00+00:00</published><updated>2015-05-01T00:00:00+00:00</updated><id>zcshiner.github.io/projects/stewart-platform</id><content type="html" xml:base="zcshiner.github.io/projects/stewart-platform"><![CDATA[<p><img src="/images/stewart-platform-hero.jpg" alt="The finished Stewart Platform" class="post-img-full" /></p>

<p>I built a Stewart platform as a final project in my senior elective class: ME 445 Microcomputer Interfacing for Mechanical Engineers. A Stewart Platform is a six degree of freedom manipulator commonly used in motion simulators and positioning applications. Six independent computer-controlled actuators work together to precisely control the position of a platform. The platform and demonstration software was designed to simulate wave-like motion that a helipad-equipped vessel might experience while at sea. The simulated motion was used as part of a research project to train quadcopter landing algorithms for maritime use.</p>

<div class="post-img-grid post-img-grid-wide">
  <div class="video-embed">
    <iframe src="https://www.youtube-nocookie.com/embed/kFUClV3Ajeg?rel=0&amp;autoplay=1&amp;mute=1" title="Stewart Platform" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen="" loading="lazy"></iframe>
  </div>
  <img src="/images/stewart-platform-01.jpeg" alt="CAD Model" />
  <img src="/images/stewart-platform-02.jpeg" alt="Stewart Platform" />
  <img src="/images/stewart-platform-03.jpeg" alt="Stewart Platform" />
  <img src="/images/stewart-platform-04.jpeg" alt="Stewart Platform" />
  <img src="/images/stewart-platform-05.jpeg" alt="Stewart Platform" />
  <img src="/images/stewart-platform-06.jpeg" alt="Base Plate Fabrication" />
  <img src="/images/stewart-platform-07.jpeg" alt="Stewart Platform" />
  <img src="/images/stewart-platform-08.jpeg" alt="Stewart Platform" />
  <img src="/images/stewart-platform-09.jpeg" alt="Stewart Platform" />
  <img src="/images/stewart-platform-10.jpeg" alt="Stewart Platform" />
  <img src="/images/stewart-platform-11.jpeg" alt="Stewart Platform" />
  <img src="/images/stewart-platform-12.jpeg" alt="Stewart Platform" />
  <img src="/images/stewart-platform-13.jpeg" alt="Stewart Platform" />
</div>]]></content><author><name>© 2026 Zachary Shiner</name></author><category term="projects" /><summary type="html"><![CDATA[Six degree of freedom motion simulator for maritime quadcopter landing research]]></summary><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="zcshiner.github.io/images/stewart-platform-hero.jpg" /><media:content medium="image" url="zcshiner.github.io/images/stewart-platform-hero.jpg" xmlns:media="http://search.yahoo.com/mrss/" /></entry></feed>