{"$schema":"https://ejfox.com/schema/page-twin@1.json","kind":"blog_tag","url":"https://ejfox.com/blog/tag/hardware","json_url":"https://ejfox.com/blog/tag/hardware.json","generator":"ejfox.com/json-twin@1","data":{"tag":"hardware","count":5,"posts":[{"slug":"2025/using-radios","title":"How To Use Radios","date":"2025-11-08T20:19:34.000Z","type":"post","dek":"In which we learn to use radios to the best of our ability","modified":"2025-11-08T20:22:13.000Z","tags":["communication","radio","tech","howto","hardware"],"toc":[{"text":"How To Use Radios","slug":"how-to-use-radios","level":"h2","children":[{"text":"Good vs Bad Comms: Lessons from Video Games","slug":"good-vs-bad-comms-lessons-from-video-games","level":"h3","children":[]},{"text":"Radio Discipline in the Wild","slug":"radio-discipline-in-the-wild","level":"h3","children":[]},{"text":"The Sub-Skills: Why You Need to Practice Being Calm","slug":"the-sub-skills-why-you-need-to-practice-being-calm","level":"h3","children":[]},{"text":"From Simulation to Reality: Why Gaming Skills Transfer","slug":"from-simulation-to-reality-why-gaming-skills-transfer","level":"h3","children":[]},{"text":"How to Actually Practice This","slug":"how-to-actually-practice-this","level":"h3","children":[]}]}],"metadata":{"dek":"In which we learn to use radios to the best of our ability","date":"2025-11-08T20:19:34.000Z","modified":"2025-11-08T20:22:13.000Z","tags":["communication","radio","tech","howto","hardware"],"gear":["moletta-lionsteel-folding-black-knife"],"words":1377,"images":0,"imageDetails":{"total":0,"cloudinary":0,"withDimensions":0},"links":0,"codeBlocks":0,"headers":{"h2":1},"toc":[{"text":"How To Use Radios","slug":"how-to-use-radios","level":"h2","children":[{"text":"Good vs Bad Comms: Lessons from Video Games","slug":"good-vs-bad-comms-lessons-from-video-games","level":"h3","children":[]},{"text":"Radio Discipline in the Wild","slug":"radio-discipline-in-the-wild","level":"h3","children":[]},{"text":"The Sub-Skills: Why You Need to Practice Being Calm","slug":"the-sub-skills-why-you-need-to-practice-being-calm","level":"h3","children":[]},{"text":"From Simulation to Reality: Why Gaming Skills Transfer","slug":"from-simulation-to-reality-why-gaming-skills-transfer","level":"h3","children":[]},{"text":"How to Actually Practice This","slug":"how-to-actually-practice-this","level":"h3","children":[]}]}],"type":"post","slug":"2025/using-radios"}},{"slug":"projects/flipper-generative-art","title":"Flipper Generative Art","date":"2025-01-15T05:00:00.000Z","type":"post","tags":["flipper","hardware","device","generative","art"],"toc":[],"metadata":{"title":"Flipper Generative Art","date":"2025-01-15T05:00:00.000Z","category":"Hardware","featured":true,"url":"https://github.com/ejfox/flipper-generative-art","tech":["Flipper Zero","C","Floyd–Steinberg Dithering","Embedded"],"state":"deployed","ai-involvement":"ai-assisted","tags":["flipper","hardware","device","generative","art"],"words":213,"images":5,"imageDetails":{"total":5,"cloudinary":5,"withDimensions":0},"links":5,"codeBlocks":0,"headers":{},"toc":[],"type":"post","slug":"projects/flipper-generative-art"}},{"slug":"projects/flipper-space-calculators","title":"Flipper Space Calculators","date":"2025-01-20T05:00:00.000Z","type":"post","tags":["flipper","hardware","device","science"],"toc":[],"metadata":{"title":"Flipper Space Calculators","date":"2025-01-20T05:00:00.000Z","category":"Hardware","featured":false,"url":"https://github.com/ejfox/flipper-space-calculators","tech":["Flipper Zero","C","Embedded"],"state":"deployed","ai-involvement":"ai-assisted","tags":["flipper","hardware","device","science"],"words":147,"images":2,"imageDetails":{"total":2,"cloudinary":2,"withDimensions":0},"links":2,"codeBlocks":0,"headers":{},"toc":[],"type":"post","slug":"projects/flipper-space-calculators"}},{"slug":"projects/pixel-canvas","title":"Pixel Canvas","date":"2026-05-27T04:00:00.000Z","type":"post","draft":false,"tags":["hardware","device","dataviz","quantified-self"],"toc":[{"text":"How it works","slug":"how-it-works","level":"h2","children":[]}],"metadata":{"title":"Pixel Canvas","date":"2026-05-27T04:00:00.000Z","category":"Hardware","featured":true,"draft":false,"tech":["ESP32-S3","Arduino","LovyanGFX","Bash","REST API"],"state":"doing","ai-involvement":"ai-assisted","tags":["hardware","device","dataviz","quantified-self"],"words":532,"images":13,"imageDetails":{"total":13,"cloudinary":13,"withDimensions":0},"links":13,"codeBlocks":0,"headers":{"h2":1},"toc":[{"text":"How it works","slug":"how-it-works","level":"h2","children":[]}],"type":"post","slug":"projects/pixel-canvas"}},{"slug":"projects/websdr-vcv","title":"WebSDR VCV","date":"2025-08-01T00:00:00.000Z","type":"post","tags":["audio","radio","hardware"],"toc":[],"metadata":{"title":"WebSDR VCV","date":"2025-08-01T00:00:00.000Z","category":"Hardware","featured":false,"url":"https://github.com/ejfox/websdr-vcv","tech":["C++","VCV Rack","Cardinal"],"state":"deployed","ai-involvement":"ai-assisted","tags":["audio","radio","hardware"],"words":120,"images":2,"imageDetails":{"total":2,"cloudinary":2,"withDimensions":0},"links":2,"codeBlocks":0,"headers":{},"toc":[],"type":"post","slug":"projects/websdr-vcv"}}]},"_links":{"self":"https://ejfox.com/blog/tag/hardware.json","html":"https://ejfox.com/blog/tag/hardware","tag_page":"/tag/hardware.json"}}