Origins
The story behind OctoMY™
Origins
The personal story and motivation behind OctoMY™.
Did You Know?
OctoMY™ started because of frustration with disappointing robot software. The founder's pattern was: buy robot kit, build it excitedly, install software disappointedly, leave robot on shelf. After the third time, they thought "I could do better" - not realizing the project would take years. Sometimes the best software comes from developers scratching their own itch.
Why build OctoMY™?
In most commercial endeavors, the philosophy is simple: owners want money for minimal effort. OctoMY™ is NOT a purely commercial endeavor, so its philosophy needs more explaining.
Why would anyone take on such a large and complicated project without money as the ultimate goal?
Personal motivation
As the founder and maintainer from the start, the initial goals were simple and perhaps naive.
I decided robotics was cool. I loved programming and tinkering with electronics. What better hobby to combine the two?
After buying and playing with several robot kits, I observed a pattern:
- Find cool robot kit online, save money in anticipation
- Buy it, take it home in anticipation
- Unpack with excitement
- Build hardware with excitement
- Connect to computer with excitement
- Install software with excitement
- Realize how crappy the software is in disappointment
- Leave robot on shelf to collect dust
Conclusion: Selling a shiny robot is easy. Creating quality software for it is hard.
After the third time, I thought: "This is utter crap. I could make something better myself, how hard could it be?" (Hubris from being a veteran C programmer.)
Initial goals
- Make a better software experience for robot kits
- Learn cool robot stuff
- Show off how cool my robot was with my software
- Share with enthusiasts so they don't have to collect dust on their robots
Scope creep
After starting a small MVP to replace bad robot software, I had a nagging sensation of enormous potential. The number of possible features was staggering. I was overcome with temptation and decided to "make everything."
The wanted feature list quickly became completely unrealistic:
- Many robots and remote controls communicating in a distributed way
- Secure protocol for communication between robot(s) and control(s)
- Resilient, nimble protocol working despite adverse network conditions
- Unique robot personalities with distinct voice, eye-colors, and more
- Flexible, user-friendly actuator and sensor configuration
- Advanced features: face recognition, text-to-speech, speech recognition
- Advanced "mission planning" features
- Autonomous operation relying on identified landmarks
But I kept returning to the fact: all these features are definitely possible. The research and example code exists.
The integration problem
While hundreds of projects are scattered on the internet - implemented in different languages, on varying platforms, with varying quality - no ecosystem or platform allows them to co-exist on a single robot in a robust, performant, user-friendly manner.
The plan: Create a robot platform serving as the basis of an ecosystem where features could be added by anyone. Make good architectural decisions, create a quality standard, then implement each feature one by one.
The challenge of discipline
I am a creative person, a source of pride. However, creative people are often impatient with repetitive work.
This project needs a lot of repetitive work. Every part must be fully formed according to strict guidelines. It is tempting to skip the "boring" stuff and adventure to create fancy features.
This has nearly killed the project every day since the start. At some point it was a collection of half-done features that did not fit together well.
As I battled the terrible state of the project, I was really battling my own inability to maintain personal discipline.
After 4 years I burned out. I decided to start a commercial project to earn money to hire developers to help with OctoMY™.
Disaster and catastrophe
After a 3-year hiatus working on my commercial project, disaster struck a week before launch.
Putin invaded Ukraine. My commercial partner lived in Kyiv. Additionally, due to working 50% as a freelance consultant during Covid, I had done my taxes incorrectly for 2 years. I suddenly owed the government half a year's salary.
My launch savings vanished. I took expensive loans. My commercial venture was put on hold indefinitely. I took a full-time consulting job to survive.
Return of the phoenix
After things stabilized, after helping a friend's startup, I finally returned to OctoMY™.
My burnout was completely gone. Picking up the project where I left it was now a welcome adventure! The time away had matured me. I was more focused, dedicated, better at prioritizing, and better at disciplined development.
Design philosophy
If you're just checking out OctoMY™ for your project, you can move along. Nothing to see here.
However, if you're planning to become a contributor, this is super important.
The nature of open source
Developers know that a day job in IT often means working for a pointy-haired boss. Even in organizations with strong technical leadership, constraints affect you:
- You don't decide what features to make
- You don't decide what tools to use
- You don't pick your teammates
- You don't decide the time and resources to make it "properly"
To any company, software development is just a tool for business goals. Developers are tools to be used.
But when developers get home from work, there's a small window of opportunity between family, chores, and bedtime. Glimmering like a forgotten gemstone in the dirt, it allures many developers into the mystery of the night...
In this window, all business-world restraints dissipate. You are in full control. With the internet at your fingertips and infinite time ahead (in annoyingly small chunks), you command the mission.
Now you can make anything!
You can set goals, timelines, and constraints. You can work towards becoming a boss. But you can also pour midnight energy into perfecting 10 lines of meaningless but poetic code. You can dedicate yourself to coding as art or pure entertainment.
My midnight energy
I have decided to dedicate my midnight energy to OctoMY™, the project of my life. The main goals are fundamental:
- I want to decide what features to make
- I want to decide how to make it
- I want to decide what tools to use
- I want to pick my teammates
- I want to decide the time and resources to spend for it to be done properly
If you want to join me and become a successful contributor, I welcome you!
Philosophy principles
| Principle | Description |
|---|---|
| Complete | Stand on its own and provide a complete feature set giving value to most hobby-class robot projects |
| Nimble | Provide important bits but avoid unnecessary dependencies. Stick to one platform (Qt) for code reuse and simplicity |
| Cutting Edge | Harness modern concepts in robotics like deep learning |
| Robust | Always provide a stable version. Follow good practices for software stability |
| Social | Provide a vessel for learning about advanced topics for anyone involved |