
About
Introduction
I’ve always enjoyed programming from the first moment I ever typed code. I was amazed at the lightning-like speed that even the old slow PC I was working on could run through code.
Through years of learning different programming languages, I wrote numerous personal project programs just for myself. Some programs I wrote over and over again as I learned new programming techniques or when learning a new language. There was a custom database program that I fully re-wrote at least six different times. It started out as a console program written with Perl and ended up as a fully professional .NET WinXP program.
Professional Work
When I got hired as a programmer, I was immediately assigned hard problems to solve. They gave me four different problems to work on right away. The first one was described as “we’re not sure if it’s possible but it seems like it should be”. The second one was described as a bit of a pipe dream, and they admitted that they were not even sure that there was any solution to be found at all. The final two problems were both described as probably impossible, but they just thought they would ask.
Within a day or two I had plans that I was confident would work for the first two problems. I designed, developed and delivered full solutions to the first two problems over the next few weeks. After that I started working on the other two problems, which turned out to both be solved by one large solution. I was pretty proud of myself (an unusual thing for me) that I was able to solve each challenge.
Years later, my boss jokingly admitted that only the first task was “real”. As in, the only the first task was something they expected me to solve. He said that the second task he gave was basically a test to find at what point I would fail; he had previously assigned this second problem to other programmers twice before, and all of them failed to solve it. I also found out over time that the other two problems I had solved with a single large solution are typically solved by software that cost hundreds of thousands of dollars. That’s why they just let me keep working on it through years. I ended up fully digitizing the entire workflow for the company.
Why Start Chat Crafters... Now?
I first started playing with AI when OpenAI released ChatGPT 3.5. Within days I was learning the Application Programming Interface (API) provided by OpenAI so I could incorporate their AI chat models into my own projects. At the time my mind was exploding with new ideas for tools and projects to work on. I didn’t know what I would end up building, but I felt it was time to start working on a project or two for public release.
At the time, there was no .NET library available for the OpenAI API. So, I wrote my own .NET 8.0 library for the API. By the time I had it done there were 2-3 other .NET libraries already available and only a month or two later OpenAI themselves released their own Software Development Kit (SDK) for .NET. Because an SDK comes with a library and a lot more, there was no reason for me to release my .NET library.
That’s how it went for most of the tools I built around that time. Each of them was quickly replaced by new features in the OpenAI API and other chat models that were released over the months. However, even as ideas were squashed by OpenAI’s new offerings, I felt I was on the cusp of coming up with a great idea for… something.
I started Chat Crafters as a company (LLC) so I could take care of all the business parts of supporting a well-produced software package. I felt that this was the foundation point to start with, mostly just in case I found myself in the position of being ready to release something and wanting to charge for it.
The Idea Behind "Rook"
While working on different AI programming projects, I wanted to use a local LLM server instead of eating up OpenAI API credits just for testing different chatbots. So, I updated the library and Service to optionally use any “custom server” that supports an OpenAI compatible API for chat LLMs. With that I started using LM Studio to run LLM models locally on my own PC. Then I was free to test and play all I wanted without paying for tokens, and I had a lot of fun coming up with fun AI character personality types to chat with.
After a while, I had a few Windows programs that could do every basic AI chatbot function and feature that I wanted. Then, I started wondering if there were any Android apps available that did the same thing. I was surprised to find that there don’t seem to be any currently available (March 2025). That’s when I decided to write my own.
Practicality, Control, Performance, Craftsmanship
Software should say what it does and do what it says. Software should follow the path of least user astonishment. Software architecture, code structure, individual statements and data types should only be as big or complex as is needed. Software should be built with all end users and all possible future developers and code maintainers in mind at all times.
That’s all there is to it.