From Idea To Reality with AI

Tech Insight: How We Start Off

In this post I wanted to give an extremely high-level overview of how I kicked this off, from a technical perspective. For some background, I am a network engineer by trade. I've had a rewarding career so far. I've gone from working swing shifts in the NOC to leading some high profile projects, and I love solving problems. 

When I finally picked up the 3D printing hobby, it really just meshed with everything I'd been doing to date. I love finding tech solutions to problems while advancing professional skills. 

My home lab is relatively robust to the point where I had to write a startup/shutdown procedure for my wife, detailing how to gracefully shut down an ESXi server and power off a UPS. I use open-source home automation as much as I can get away with. I love finding new tools to solve problems and make things easier.   

Tying It In

How this translates into 3D printing is that all of this development became an extension of the fun I had learning to 3D print effectively. We are fortunate to live in an age of giants. Software developers, systems engineers, data scientists, you name it. All of these people building technology to make our lives easier. I humbly stand on their shoulders and leverage tech to make my life easier. That is one of the beauties of open-source software, it's people working together to make lives easier. 

By nature, I am a lazy man. To quote Robert Heinlein in Time Enough for Love, "Progress doesn't come from early risers—progress is made by lazy men looking for easier ways to do things". Well, I am that man. 

I got tired of walking a USB drive to a printer, so I did some reading and figured out how to have a Raspberry Pi effectively be a print server. I got tired of making minute changes in Fusion360 to my models, so I discovered parametric modeling. I got tired of having to click "Modify" and go down and select "Change Parameters" so I figured a web interface would be nice. 

All of this led me to the idea for Lunar Prototypes. 


The Idea

Fiddling around with ChatGPT quickly taught me the potential it has. I am not a programmer. I'm a pretty good troubleshooter, and I have a solid network and systems engineering background. But I have always viewed software development as an unknowable black box, practiced only by ultra smart wizards who were constantly irritated with me and my ridiculous firewall rules.

Idea -> ????? -> Results
The idea came when a friend got me into parametric modeling. The ability to change parameters for a model got me thinking about the flexibility in design. I was designing a baby gate mount for a banister. The banister was tapered so I needed it to be a different diameter at the top than the bottom. 

The Spark

This was all pretty easy but while designing it I thought "what if someone else wanted to do this?" I think that was the question I asked ChatGPT. I loaded the question up with details about the software I was using and the guidelines I wanted it to have such as security, user friendly, adhere to industry best practices, etc. 

It dutifully laid out a plan I could barely understand and started throwing around words like API, oAuth, Python, CDNs, Git, and CI/CD. Most of these were vaguely familiar to me at best, so I had a lot of catching up to do if I was going to get anywhere with this. 



Proof of Concept

Idea -> A lot of work -> Results
I spent the next few weeks reading up on all of these new to me topics and started to get an idea that this could actually work. I bounced ideas off it and hammered out a project plan. I tested and researched various open-source software products and eventually landed on a set I thought stood a chance of actually working. Then I set about putting it all together. 

Starting From Scratch

We broke the problem down into manageable chunks. There was the website, the API, and the add-in for Fusion360. We broke the goals down into actually achievable ones. Proof of concept, MVP, the future. 

We built an API in Python using Flask, Docker, and a LOT of troubleshooting. We built the add-in using Python, the very detailed Fusion360 API documentation, and a LOT of troubleshooting. We built a simple website using Bootstrap Studios and a LOT of cursing. 

Eventually we got to the point where we could edit a single Fusion360 file from the website and have it return the modified STL file to the site. This was it, it could be done! But proving it could be done turned out to be the easiest part. 



Minimum Viable Product

At this point I'd proven it was possible to achieve the goal, and decided I wanted to keep going. What was next? Well, everything, really. The hard part, as it turned out. I had to develop something that not only fit my idea of customizing models from a website but was actually capable of being shown to others on a larger scale. 

To do this, I had to figure out how it would work in the real world. This meant understanding security, scalability, resource utilization, cloud infrastructure, message queues, user experience. The list goes on, and on, and on. 

Turns out, all those software wizards are just that. Wizards. So are the project managers, DevSecOps people, security people, networking people, web developers, you name it involved in bringing something like this to life. 

Results -> A lot more work -> Something Useable
This next part was hard. Months and months of cul-de-sacs, dead ends, troubleshooting, false starts, reading, testing, failing. My goal was to set a scalable foundation for a service, build a website with a catalog of my designs, make sure it's secure, and provide a decent user experience at the same time. 

Finally Getting Somewhere


I think I've achieved at least some of those, the website works, I can showcase my designs, I think the content and software structure is... okay. But it's hard to tell when you're talking to an AI chat bot that seems to constantly be a yes bot. I could, and probably should, write an entire blog post on prompt engineering, though I suspect I have way more to learn than I could educate. 

But, after navigating all of these pitfalls, I hit a point where the system was doing what I wanted, looked more or less the way I wanted, and most of the boxes on the project plan were checked off. I had some friends do some basic testing, and they provided some pretty positive feedback, as well as a handful of issues, and that pretty much leads us up to where we are now. 




Where We Are Now

I've left out ages of development, trial and error, troubleshooting, you name it. I'd be happy to go into the details, but this is just an overview. What we're starting out with is, hopefully, useful. 

Starting Systems Architecture

Through this development journey I have learned so much about systems, software, development, and technology. Overall, what I most learned was respect. Respect for all the developers out there who do this for real, far more skilled than I ever could. 

Next Steps

Next steps clearly are do some real-life testing and some code reviews from people that aren't AI. Also, next steps are feedback from people like you. If you've read this long, certainly some part of this has been interesting. Was it the journey from nothing to a product? Was it the details of the systems architecture? 

It would be great if you could comment and share your stories of AI software development, thoughts on the technologies I've chosen, and any other insight into this wild world of (theoretically) not really needing to know how to do anything other than ask the right questions and troubleshoot. 

This blog is about learning, and I'm eager to learn from your experience, share struggles, and with any luck, inspire you to build something too.  

Comments

Popular posts from this blog

Layered Learning

Original 3D Printing Setup for Lunar Prototypes