A Brief History of SynaTree
Sometimes people ask me how I got into the software development business, or how I have always managed to find projects that seem unusual or a little unconventional, and I think it has a lot to do with the unique path I’ve taken through the industry, which still informs my approach to software design and architecture today.
I was always interested in computers, since the earliest ages, experimenting with BASIC on my family’s Apple IIc computer, learning HTML and JavaScript for the first time while away at camp for the summer.
By the time I got to high school, I had already been paid small amounts here and there to work on web pages for family friends, which somehow gave me the confidence to approach an internship at GlaxoSmithKline Pharmaceuticals; an opportunity that I learned about from a classified ad posted in my High School’s guidance counsellor’s office, and was probably better suited to recent college grad than a 16-year-old.
It was at GSK that I first learned Perl, TCL/TK, Bash scripting, polished my C++ skills and began my long affiliation with PHP. The independence I enjoyed there convinced me that I should try to come back the next year not as an intern but as a vendor under the name of my own business. It was also at GSK where I learned to love computer programming as it applies to science, which is still my favorite area of focus today. I love highly technical problems in fields that demand deep research and problems that reward careful thought.
It would be a few years until I got a chance to work on that kind of project again, unfortunately; I had to pass through a wilderness of exploitative clients and ill-conceived ideas of my own before coming out the other side, a story that I find is common to many independent software professionals.
Those earliest experience did establish in my mind the supremacy of the web browser as a user interface. Even back then, long before web applications really existed, it was clear to me that one person, working alone, could create an elaborate user interface by skipping over all of the difficult parts of Windows programming and using HTML and CSS and JavaScript instead. In the 20 years since, the dominance of the web UI is now unquestioned.
For lack of any other name to call what I enjoyed doing, I began to present myself as a web developer, and I did some websites for small businesses and almost made a living at it for a few years. My love of technical problems led me to try again and again to develop Content Management Systems, either entirely of my own making, or based upon existing products (sorry, Joomla!). As the content management approach became more and more common, design became more and more important too. I remain proud of some (…some…) of my designs to this day, but I was never really a graphic designer per se.
I was beginning to get a little burned out on web design when I first learned about Yii, and around the same time, the Raspberry Pi. Yii breathed new life into my consulting business, because it allowed me to build complicated applications from the database layer up, and quickly make these systems operational. I loved the Raspberry Pi from the start, but for a few years I didn’t have any great brainstorms for how I could use it, beyond the “toy” examples that others had already established.
Luckily, I had the opportunity to work on a long term project with a great client who wanted to use the Raspberry Pi as the basis for a Casino Management System, which gave me the chance to work with the full breadth of my skill developed over many years in a single project — there was extensive Linux OS work to be done, there was web design, there was web application development, and there was a need to learn several new languages and techniques. Most of all, there was extensive software architecture to work out; licensing schemes, transport mechanisms, fault tolerance, remote control, and big data concerns. It was during this project that I first became familiar, and later quite experienced, with Python, web sockets, SQLite, and Redis.
As time has gone on, some tools have faded in importance as others have become more critical. When I started, JavaScript was an unreliable scripting language that worked best in Internet Explorer 4.0. Today, JavaScript (ECMAScript) has increasingly become the lingua franca of all computer systems. On the other hand, while I've spent so many years developing a deep mastery of PHP, today I use PHP less than ever before. In this industry it’s so important to update your tools every now and again, as new platforms, languages, and techniques emerge continuously. Today I switch between a host of languages and technologies depending on the problem I’m solving.
Today I’m leaning hard into the Internet of Things, because my experiences throughout all of these years has only reinforced my core believe that hard problems need solving, and that the web still provides the best UI around. IoT projects often involve hard science issues, such as working with sensors, and often present novel problems like getting large amounts of data over poor quality connections, or training AI algorithms to recognize real-world circumstances, and I still find these problems to be the most rewarding.
Together with my growing team, I hope to continue to tackle the hardest problems with clients who want and need a true partner for the long term.