Exploring AI and its Surrounding Technologies
In recent years, my main focus has been on the business aspects of running a software company. However, I have always been a computer geek at heart, using Qubes as my daily driver and spending weekends hacking a multi-site secure network with pfSense firewalls.
When it comes to programming, I have managed to articulate my ideas and to put together proofs of concept for others to develop with what I know of JavaScript and AWS.
You can do pretty much anything with just JavaScript lambdas, API Gateways and DynamoDB tables.
A few months ago, I made a decision to venture into the realm of Artificial Intelligence, a field I had always approached with skepticism. But true to my nature, I chose to embrace the challenge with my characteristic intensity and passion.
My grasp of AI's capabilities, limitations, and risks has improved since I began learning so many new technologies, and this has been a humbling experience. I still have a long way to go before claiming complete understanding, but the more I learn, the more excited I become about the opportunities it presents.
As I wait for the latest Hugging Face Llama 2 models to download and compile llama.cpp with the correct settings to support the GPUs in my Machine Learning computer, allowing me to test if I can run a 70B model with only 4 GPUs, I take a moment to reflect not only on the AI technology itself but also on the surrounding technologies that I had to learn to get up to date.

Keeping up with Change
Working in the computer industry means keeping up with new technologies and ways to do things. But in most cases, we do so within our comfort zone, and we are very reluctant to change in fundamental areas.
This could be considered a healthy skepticism; however, after a while, that healthy skepticism starts clouding our ability to see massive changes in technology happening right in front of us.
Add to that a comfy job with a good salary, and we are stuck with our way of doing things, convincing ourselves that we are up to date with just a few changes here and there.
I programmed in Java for over 15 years, and for a long time, I maintained that it was the best language for everything, or at least, for what I needed. Then I discovered JavaScript, which for years I have defended as the language for real fearless programmers.
Python? Yeah, I heard about it a while back, but who needs Python if there is JavaScript?
Python
Java and JavaScript, along with their ecosystems (and variants), are still suitable for many things, but are they the right tools for prototyping? What about AI? I am not prepared to say that Python is the best for building actual AI applications, but I can confidently say it is the best language for understanding AI and prototyping.
Initially, I started by looking at JavaScript libraries, but then quickly realized that if I wanted to get up to speed with AI rapidly, I needed to learn Python, and I am not a quick learner.
So, not only did I have to learn a paradigm-shifting new technology, but I also had to get up to speed with a new language and its ecosystem to grasp AI.
GitHub Copilot
I've received some help from GitHub Copilot, an AI-powered tool for assisting programmers that analyzes their code and predicts their intentions.
Yeah, I started playing with ChatGPT and was surprise and entertained by its responses.
But my ‘holy sh!t moment’ came when interacting with GitHub's Copilot.
By seeing and experiencing how easy it is to predict our programming intentions with the right context and knowledge, I realized the potential of Generative AI and Large Language Models in actual real scenarios.
And I've got an assistant to learn Python. In a very short time, I have been able to build simple applications that have allowed me to experiment with actual LLMs.

Being proficient in Python, I was able to benefit from the Python Ecosystem.
Python ecosystem
Python is more than just another scripting language; it is the language of choice for developers working in Artificial Intelligence and Machine Learning, and an extensive ecosystem and libraries have been built them.
As I began my experimentation, I needed a way to load a dataset in csv format. I initially started looking for a csv library. However, with just a little more research, I discovered Pandas, a powerful data analysis library. As I continued my research, I also found that the demos and training materials were based on Jupyter, an interactive tool that allows the combination of notes, code, and data.
I made significant progress by quickly creating scripts to test my ideas. However, I began to wonder what it would take to develop an interactive tool where I could test and refine my prompts without dealing with UI libraries and components. That's when I discovered Gradio, a tool that allows you to create simple web applications for prototyping.

I wonder where I would be if I had continued to believe that you can achieve almost anything using only JavaScript lambdas, API Gateways, and DynamoDB tables.
I am at a point where I can say and I have the right toolset to experiment on the ideas I have on how to apply AI to real life scenarios.
I have still a lot more to learn, but I am very happy with my progress 🙂
Continuing the journey
The last few months have been an incredible ride. In just this short period, I have experimented with more tools, platforms, and libraries than I had in the previous five years.
I can't help but wonder, where have I been while all this technology was being developed?
The rapid pace at which AI is developing is truly overwhelming, and at times, the potential impact of it on our lives keeps me awake at night. However, I choose to maintain a positive attitude and firmly believe that, despite the risks, it's wiser to embrace the challenge than to hide away from it.
I'm glad to see that we can now focus on building solutions that actually bring value, instead of just figuring out technology details.
I am continuing this journey of learning more about AI and the opportunities it will bring, with curiosity to continue learning and openness to always be aware of what I don't know.
But also with skepticism towards what I learn, to maintain a good perspective between what I see, what I think, and what I actually know, as we often quickly dismiss what we see or blindly trust whatever is said when it fits our preconceptions, without proper reasoning or examination.
P.S. Hugging Face Llama 2 models downloaded, but still stuck in getting llama.cpp to recognize my GPUs…
And yes, I’ve got a little bit of help from ChatGPT to tune this article.