{"$schema":"https://ejfox.com/schema/page-twin@1.json","kind":"blog_tag","url":"https://ejfox.com/blog/tag/tools","json_url":"https://ejfox.com/blog/tag/tools.json","generator":"ejfox.com/json-twin@1","data":{"tag":"tools","count":4,"posts":[{"slug":"projects/cloudinary-backup-tool","title":"Cloudinary Backup Tool","date":"2025-01-15T05:00:00.000Z","type":"post","modified":"2025-08-13T15:58:10.000Z","tags":["tools","photography"],"toc":[],"metadata":{"title":"Cloudinary Backup Tool","date":"2025-01-15T05:00:00.000Z","github":"https://github.com/ejfox/cloudinary-backup-tool","tech":["Tauri","Rust","TypeScript","Vite"],"modified":"2025-08-13T15:58:10.000Z","tags":["tools","photography"],"words":87,"images":3,"imageDetails":{"total":3,"cloudinary":3,"withDimensions":0},"links":3,"codeBlocks":0,"headers":{},"toc":[],"type":"post","slug":"projects/cloudinary-backup-tool"}},{"slug":"projects/photography-tools","title":"EXIF Printer","date":"2024-04-01T04:00:00.000Z","type":"post","modified":"2025-08-13T15:20:07.000Z","tags":["photography","tools"],"toc":[],"metadata":{"title":"EXIF Printer","date":"2024-04-01T04:00:00.000Z","modified":"2025-08-13T15:20:07.000Z","tech":["Photography","EXIF","Print Design","Web Design","Camera Metadata"],"state":"deployed","aiInvolvement":"ai-assisted","tags":["photography","tools"],"words":132,"images":2,"imageDetails":{"total":2,"cloudinary":2,"withDimensions":0},"links":3,"codeBlocks":0,"headers":{},"toc":[],"type":"post","slug":"projects/photography-tools"}},{"slug":"robots/someday/ejfox-news","title":"ejfox.news Phase 1: Core Development Plan","date":"2024-11-05T17:00:28.000Z","type":"post","modified":"2024-11-08T21:19:49.000Z","tags":["development","projects","tools"],"toc":[{"text":"ejfox.news Phase 1: Core Development Plan","slug":"ejfoxnews-phase-1-core-development-plan","level":"h2","children":[{"text":"Overview","slug":"overview","level":"h3","children":[]},{"text":"Technical Stack","slug":"technical-stack","level":"h3","children":[]},{"text":"Development Phases","slug":"development-phases","level":"h3","children":[]},{"text":"Success Criteria","slug":"success-criteria","level":"h3","children":[]},{"text":"Won't Do (MVP)","slug":"wont-do-mvp","level":"h3","children":[]},{"text":"Next Steps After MVP","slug":"next-steps-after-mvp","level":"h3","children":[]},{"text":"Emergency Contacts","slug":"emergency-contacts","level":"h3","children":[]},{"text":"Deployment URLs","slug":"deployment-urls","level":"h3","children":[]}]},{"text":"ejfox.news Phase 2: Social Layer & Enhanced Reading","slug":"ejfoxnews-phase-2-social-layer--enhanced-reading","level":"h2","children":[{"text":"Overview","slug":"overview-1","level":"h3","children":[]},{"text":"New Technical Components","slug":"new-technical-components","level":"h3","children":[]},{"text":"Development Phases","slug":"development-phases-1","level":"h3","children":[]},{"text":"Success Criteria","slug":"success-criteria-1","level":"h3","children":[]},{"text":"Won't Do (Phase 2)","slug":"wont-do-phase-2","level":"h3","children":[]},{"text":"Migration Notes","slug":"migration-notes","level":"h3","children":[]},{"text":"Monitoring","slug":"monitoring","level":"h3","children":[]},{"text":"Rollout Strategy","slug":"rollout-strategy","level":"h3","children":[]},{"text":"Emergency Procedures","slug":"emergency-procedures","level":"h3","children":[]}]},{"text":"ejfox.news Launch Burndown List","slug":"ejfoxnews-launch-burndown-list","level":"h2","children":[{"text":"Technical Readiness","slug":"technical-readiness","level":"h3","children":[]},{"text":"Content Readiness","slug":"content-readiness","level":"h3","children":[]},{"text":"Launch Infrastructure","slug":"launch-infrastructure","level":"h3","children":[]},{"text":"Friend Launch Prep","slug":"friend-launch-prep","level":"h3","children":[]},{"text":"Documentation","slug":"documentation","level":"h3","children":[]},{"text":"Pre-Launch Final Check","slug":"pre-launch-final-check","level":"h3","children":[]},{"text":"Launch Day Schedule","slug":"launch-day-schedule","level":"h3","children":[]},{"text":"Success Metrics","slug":"success-metrics","level":"h3","children":[]},{"text":"Emergency Contacts","slug":"emergency-contacts-1","level":"h3","children":[]},{"text":"Recovery Procedures","slug":"recovery-procedures","level":"h3","children":[]}]}],"metadata":{"date":"2024-11-05T17:00:28.000Z","modified":"2024-11-08T21:19:49.000Z","share":true,"tags":["development","projects","tools"],"words":2106,"images":0,"imageDetails":{"total":0,"cloudinary":0,"withDimensions":0},"links":0,"codeBlocks":0,"headers":{"h2":3},"toc":[{"text":"ejfox.news Phase 1: Core Development Plan","slug":"ejfoxnews-phase-1-core-development-plan","level":"h2","children":[{"text":"Overview","slug":"overview","level":"h3","children":[]},{"text":"Technical Stack","slug":"technical-stack","level":"h3","children":[]},{"text":"Development Phases","slug":"development-phases","level":"h3","children":[]},{"text":"Success Criteria","slug":"success-criteria","level":"h3","children":[]},{"text":"Won't Do (MVP)","slug":"wont-do-mvp","level":"h3","children":[]},{"text":"Next Steps After MVP","slug":"next-steps-after-mvp","level":"h3","children":[]},{"text":"Emergency Contacts","slug":"emergency-contacts","level":"h3","children":[]},{"text":"Deployment URLs","slug":"deployment-urls","level":"h3","children":[]}]},{"text":"ejfox.news Phase 2: Social Layer & Enhanced Reading","slug":"ejfoxnews-phase-2-social-layer--enhanced-reading","level":"h2","children":[{"text":"Overview","slug":"overview-1","level":"h3","children":[]},{"text":"New Technical Components","slug":"new-technical-components","level":"h3","children":[]},{"text":"Development Phases","slug":"development-phases-1","level":"h3","children":[]},{"text":"Success Criteria","slug":"success-criteria-1","level":"h3","children":[]},{"text":"Won't Do (Phase 2)","slug":"wont-do-phase-2","level":"h3","children":[]},{"text":"Migration Notes","slug":"migration-notes","level":"h3","children":[]},{"text":"Monitoring","slug":"monitoring","level":"h3","children":[]},{"text":"Rollout Strategy","slug":"rollout-strategy","level":"h3","children":[]},{"text":"Emergency Procedures","slug":"emergency-procedures","level":"h3","children":[]}]},{"text":"ejfox.news Launch Burndown List","slug":"ejfoxnews-launch-burndown-list","level":"h2","children":[{"text":"Technical Readiness","slug":"technical-readiness","level":"h3","children":[]},{"text":"Content Readiness","slug":"content-readiness","level":"h3","children":[]},{"text":"Launch Infrastructure","slug":"launch-infrastructure","level":"h3","children":[]},{"text":"Friend Launch Prep","slug":"friend-launch-prep","level":"h3","children":[]},{"text":"Documentation","slug":"documentation","level":"h3","children":[]},{"text":"Pre-Launch Final Check","slug":"pre-launch-final-check","level":"h3","children":[]},{"text":"Launch Day Schedule","slug":"launch-day-schedule","level":"h3","children":[]},{"text":"Success Metrics","slug":"success-metrics","level":"h3","children":[]},{"text":"Emergency Contacts","slug":"emergency-contacts-1","level":"h3","children":[]},{"text":"Recovery Procedures","slug":"recovery-procedures","level":"h3","children":[]}]}],"type":"post","slug":"robots/someday/ejfox-news"}},{"slug":"robots/someday/smallweb-with-cloudflare-on-vps","title":"Setting up Smallweb with Cloudflare Tunnel and Caddy","date":"2024-12-08T20:13:29.000Z","type":"post","modified":"2024-12-08T22:46:33.000Z","tags":["development","infrastructure","tools"],"toc":[{"text":"Setting up Smallweb with Cloudflare Tunnel and Caddy","slug":"setting-up-smallweb-with-cloudflare-tunnel-and-caddy","level":"h2","children":[{"text":"Stack Overview","slug":"stack-overview","level":"h3","children":[]},{"text":"Configuration Steps","slug":"configuration-steps","level":"h3","children":[]},{"text":"Key Learnings & Notes","slug":"key-learnings--notes","level":"h3","children":[]},{"text":"Verification","slug":"verification","level":"h3","children":[]},{"text":"Final Result","slug":"final-result","level":"h3","children":[]}]}],"metadata":{"date":"2024-12-08T20:13:29.000Z","modified":"2024-12-08T22:46:33.000Z","share":true,"tags":["development","infrastructure","tools"],"words":393,"images":0,"imageDetails":{"total":0,"cloudinary":0,"withDimensions":0},"links":0,"codeBlocks":6,"headers":{"h2":1},"toc":[{"text":"Setting up Smallweb with Cloudflare Tunnel and Caddy","slug":"setting-up-smallweb-with-cloudflare-tunnel-and-caddy","level":"h2","children":[{"text":"Stack Overview","slug":"stack-overview","level":"h3","children":[]},{"text":"Configuration Steps","slug":"configuration-steps","level":"h3","children":[]},{"text":"Key Learnings & Notes","slug":"key-learnings--notes","level":"h3","children":[]},{"text":"Verification","slug":"verification","level":"h3","children":[]},{"text":"Final Result","slug":"final-result","level":"h3","children":[]}]}],"type":"post","slug":"robots/someday/smallweb-with-cloudflare-on-vps"}}]},"_links":{"self":"https://ejfox.com/blog/tag/tools.json","html":"https://ejfox.com/blog/tag/tools","tag_page":"/tag/tools.json"}}