Working on GraffitiSuite

I’ve spent the last 11 years working on GraffitiSuite.  It’s been used by many developers the world over, and many large multinational corporations.  Now, we’ve built GraffitiSuiteWeb, and it’s about to get a big fix.  I just want to talk a bit more about what’s gone in to GraffitiSuite over the years.

In 2003 I found the versatile little language RealBASIC while working on a project for a customer.  I was enamored by it immediately, but there was a serious vacuüm in terms of available user interface components.  For this first project, I needed a better button class, so I put my money where my mouth was.

I wrote the first version of GraffitiButton in a couple of weeks, and it only had a small part of the amount of visual styles it would eventually come to encompass.  Over time I added more styles, and a massive amount of functionality.  It quickly took off (at least in terms of commercial components in a niche market), and required more code and more frequent updates.  GraffitiButton was the sole product for nearly a year, until another project came along that required move versatile interface components.

This was the beginning of GraffitiSuite, though not in name.  Over the next ten years, many classes were added to GraffitiSuite.  Others were deprecated and removed in they were either no longer necessary or the UI paradigms they supported were no longer desirable.  There was always a heavy trade-off, when do I work on GraffitiSuite, when do I work on projects, when do I devote time to other more human challenges like friendships?  It was a hard balance, but I managed it in such a way that resulted in what we have now.

GraffitiSuite is just as popular as ever.  As RealBASIC became REAL Studio, then Xojo, its increasing popularity has dragged GraffitiSuite in before a wider audience.  More people began to look to GraffitiSuite for a the UI components they need to build their applications.  Contracts have poured in for customer-financed development, and some of those were released by the client to make their way in to the suite.

When Xojo got true support out for custom components in Web Edition, I was excited.  I could build a whole new level of GraffitiSuite and bring customers even more ease of use!  The tests went well, so I pushed forward with full development of a GraffitiSuite Web Edition for Xojo’s excellent cloud offering.  But there was a bump in the road.

The way the first iterations were written stored the javascript code for each element in the class, and was loaded dynamically per-instance per-namespace.  This seemed to work well, so I pushed forward and released.  Then the bad things happened.  When deploying to servers, some customers were seeing javascript errors in which one or more of the scripts to be loaded were not being loaded or not being loaded in the correct order.

After dealing with the customer fallout of this issue (which was no small feat), I’ve now resolved the issue at least temporarily.  The scripts are still loaded per-instance, but namespaces had to be abandoned as part of the new method.  This new method may cause issues with memory usage, but the issue with thrown exceptions are now addressed.  The intention, eventually, is to have an even better method of loading these scripts than the current one, but I had to get something out the door.

Now, GraffitiSuite is back on track.  With this new way of creating applications in Xojo, there’s a great deal of promise for GraffitiSuite.  Eventually, we might even deprecate the desktop version of GraffitiSuite altogether, though that’s likely some distance in the future.  Now that we’re past the bumpy part of GraffitiSuite Web’s initial launch (which we always expect with new releases), we get to move on to more fun stuff like adding more features, increasing the expanse of what GraffitiSuite Web covers, and making the classes ever-more functional and friendly.

What’s hard, is dealing with all of this for what is usually a one-man development team.  While I’m not the only person who puts work in to this business, I am normally the only person who puts code in to the business (save a few occasions where it was necessary to hire someone to temporarily work on GraffitiSuite while I was otherwise engaged).  Now, looking forward, GraffitiSuite has a renewed outlook, and I have a new vigor with combining two technologies I enjoy (javascript and Xojo).  I’m happy to say that GraffitiSuite will continue to thrive beyond the perceived death of the static desktop application and live well beyond in the era of web-based applications.