How keeping perspective helps me stay focused on long term development projects.
Welcome back folks,
I threw out the first revision of the blog since it was written before I gained insight on what exactly I was accomplishing with a project. But not only that, what exactly was I doing as a blogger and tech enthusiast in mid 2023? Writing guides, talking about experiences? Who is this for and how do I write to that audience?
I started blogging because I wanted to be a part of something, a movement to share my discoveries and creative finds in the ethical hacking community. I was in a space where traditional bug bounty couldn’t justify me going onto sites or Tryhackme challenges. I found that freeform exploration of the topic and systems in place all over my town and beyond was the way to go. I felt that sense of accomplishment going back and rewriting about a system setup or a configuration guide or something that would be showcasing my work and maybe helping others get there as well.
If I were to draw a map of my aims, I’ve gone from bug bounty & security blogging to cloud systems, and onto building machines with close adherence of documentation. I took note the whole way through and ultimately ended up here. I am hoping to break down the way I’ve been doing things in such an obtuse technical manner into something more friendly and digestible. This was how I hope to recapture the topics I write about, making them more modern, cohesive and easier to follow and find.
Let me start by saying that not everything needs a gigantic computer to work. A simpler device with a slower processor, less ram, less storage, and a simpler screen might be all that you need to make a temperature monitor, for example. Computers don’t always have to be gaming, AI/ML data crunching monsters of devices. They can be small, use less power, be software driven, platform agnostic even. Most machines work when asked to, fulfil the purpose, and continue to do so ad nauseum until they need to be repaired or replaced. Even simply asking for the weather via voice and giving the user information can be done without massive processing power. This is why tiny IoT devices have a place in our daily lives.
Offhand I think my home router has a few smart lights, some plugs, and 4 phones on it just to track movements n my favorite social VR games. Why did I need those things? Because at the time, or the place, or the spaces I’m in, it made sense. I like showing my friends my body language in VR, which is how motion trackers help. I like hearing about the weather daily, which is why I used my google home while on a road trip. While anyone can get by with phones, the convenience afforded by microcomputers not only opens a whole market but lets people explore machines in weird ways we haven’t done before.
I think I can move onto this bit about how smart devices evolved. Timer based devices exist in large to small scale computing, heck there were devices that used timers to turn on and off lights well before computers came around. At this moment there is a shift in many industries towards using bigger and better computers over the small and powerful ones. I remember hearing how the once dominant Raspberry Pi may have been supplanted by many microcontroller devices for a number of reasons. I think the best direction to point is how demand is met by supply. In the June video from Mr. Beast, youtuber and engineer Jeff Geerling, along with his father, explored setting up a relay between 100 computers for a game show. [https://www.youtube.com/watch?v=BzjFK9UGS5s] The computers used were Libra Potato’s, far less powerful than the typical Raspberry Pi, but not too far out there for the typical IT specialist to pick up, read, and set out on a project in a day. Single purpose computing is a need that can be met by a specific device in a specific instance, in the right place at the right time. This finally brings me into my project, the convention badge.
In my IT career, community has been the topic that has come up most often and for marketing purposes, is something I align with closely. I enjoy working with people despite any personal or professional challenges that arise along the way. Giving forth a best effort when you have access to all the resources is a positive feeling I have searched for in other jobs and places, but I just don’t find it as rewarding anywhere else but in community meetups and conventions. Maker fairs, BSides, eSports tournaments, swap meets, all of these present unique places for unique people to come and offer up something nobody else has ever done before. Ages ago, I put an open-source video player on an old GPS, gutted the innards and put it into a badge holder to bring along to events. Right away, people started noticing, commenting, they liked the moving content, the pictures, the utility of such a thing. Surely, I couldn’t have been the only one to think of this.
I had asked myself why someone pick up a microcontroller and get started on building something with it. Is it an open development platform? Easily accessible hardware? Do they have them lying around already from kits or do they need to be ordered 1–10 at a time? Does the controller matter at the end of the day so long as the thing works for what the user made? Are they building a prop, a camera, a network, what exactly are they doing with that specific microcontroller? Better yet why pick one over another that might be better, faster or cheaper?
This is where I started documenting developments on my mastodon account. I wanted to improve on the limitations of the badge and add more things it could do. Whether it was going to a site by scanning with your phone, displaying text alongside moving names, faster startup time to not have to fuss around and tinker with things, I had to see if I could make this system better for the badge I kept bringing to events.
Now we get into the technical side, this is the part I like the most given my background. I tend to lose my readers in a sea of word salad and not breaking down the most complex parts into simpler structures. As this blog aims to be a lot more casual, I’ll try and do my best on that portion. This is all personal experience meant to teach after all. There were a lot of failures along the way, a lot of trying out different formats for videos, different input sources like the screen’s SD card reader or onboard memory. Remaining persistent, trying all my options, and exploring more concepts I didn’t know as I went was what ultimately let me design a badge that had what I wanted: video and images side by side, with room to grow into so much more. Well, that and a lot of YouTube tutorials on similar projects.
So the badge I wanted to make I wasn’t sure if I could go through and get someone to make it to put on a PCB. I knew about KiCad and how to make things on there, but I was no electrical engineer. Thankfully, a company called MakerFabs was already out there doing what I found difficult already. [https://www.makerfabs.com/] Their offerings are numerous in screens and integrated esp32 devices. I realized in hindsight I bought the wrong format screen due to this unfamiliarity. Not having worked with esp32 screen technology before, I was in for a good 30 hours of research before my understanding on the topic clicked. I was hoping to make a 1:1 swap of the board into the case I already made for the GPS video player, much like with the router project of my last blog. Had I other options, I might have taken a look at a screen with more options and an external rechargeable battery unit. Thinking about these, I’m planning to see if I could make a small or large version of the badge, given materials available.
Ambition is a good thing in moderation. In truth I want to see others walking around at events with a lot of these video playing and functional badges, all connected in some way to enhance the experience. I learned how to get graphics libraries working on these systems, how to program for them, how a GUI design tool called LVGL could make interfaces that took inputs, wrote to files, and did all kinds of computer-y things. I’m looking into ESPNow and mesh networking the devices together, as having hundreds of badges on a Wi-Fi network might be problematic for events and the users, but having the devices already connected and talking would be a lot easier to handle.
However, ambition can also lead your projects astray much like the dreaded scope creep. I was pretty set out to combine this project with a desire to learn about the topic of RISC V architecture processors. I had heard about it in my podcasts as the next big thing to replace all small computers, so I had to try this, the model was mature, right? In truth it was not, and that led me to not meet the specifications and find troubles with this project around every corner. In all though, this project has been one of the most worthwhile learning experiences I had in programming in the past 2 months (that web development class in xml databases really kicked my butt though, wow). It pays to know what your options are beforehand for a project. It would be wise to plot needs and resources along a chart just to see visually just what each device was capable of.
If folks would like to read more specifics about this badge, be sure to follow my mastodon where I give a closer dive into planning not only to make these, but to produce and sell them once I get a confident enough product for convention goers to use and enjoy as they’d like. [https://tech.lgbt/@Koko] If you like or dislike this new format for my blog, I’d also like to hear your feedback as well. Have a great day!