Tweets from the Desktop

Tweet Tray Windows

On a chilly Friday night in Tokyo, I sat down in an attempt to solve a simple problem of mine: Why can’t I tweet from my system tray? It was obviously very specific, but I had recently migrated back to Windows 10 (thanks to a friend) and was missing the action on macOS, where by using Twitter’s OS integration, you could compose a Tweet anywhere from the Desktop.

Give or take a few months of work and finally I had little app running on my laptop named Tweet Tray. Here’s the original tweet sent out asking for help to test the alpha version.

Within a month of releasing it open source on Github Tweet Tray saw over 2,000 downloads, was the #3 Product of the Day over on Product Hunt and was graciously written about on both Windows Central and Windows Forest.

Naturally the postive response was a happy moment, if not a slightly overwhelming one. More importantly though it helped greatly to validate some mental constraints of mine which were crucial to the project from the very start.

Tweet Tray Figma

Know your scope

One thing in the past I had been incredibly guilty of was coming up with a pretty decent idea and then over-scoping it into oblivion such that it either becomes so complex that it’s no longer interesting or rather it’s own complexity takes priority rather than ensuring the original idea is actually executed on faithfully. Thankfully, Tweet Tray was different.

I could’ve gotten overly invested and built an entire grandious Twitter client, i.e. better than Twitter or [insert third party Twitter app here]. Had I done it well I’m sure it would’ve been well received since at the time of start development Twitter had just deprecated their own macOS client. In the end though what helped was starting with a “do X with/from Y”-type statement, as opposed to “do X but faster/better than Z”, which kept the goal pretty objective from the start. Allow the user to send a Tweet, yup, that’s it.

Pick your battles (technically)

The core technology of Tweet Tray was based in Javascript, with the help of a few open source frameworks. Most of these frameworks were choices based off prior knowledge to ensure as much time was spent on solving the problem, not getting bogged down in other things. A huge shoutout to the maintainers of the Electron React Boilerplate which helped get up to speed on so much, so quickly. Saving me probably months of work.

Electron was great as it allowed me to build a pseudo-native experience fast. It was perfect really, I was able to iterate at very little extra development cost. The framework may have issues such as bundle size and memory usage, but they weren’t enough to compromise the convenience, as again, my focus was on delivering and executing. Semantic arguments could wait.

Why React? Well it was just my go-to front end framework of choice at that moment. I’m sure there’s a lot of valid reasons why Vue, Angular or even vanilla Javascript would’ve been better, but it’s what I knew. I also appreciated how it forced me design the UI in a very atomic way so that the components were simple to build.

Embrace open source

I’d never really thought much about open source software before Tweet Tray and don’t really have a profound reason why I decided to start caring about it here. However, I’m sure glad I did. Not only is free software important for inclusivity but it helps give others an outlet to build something that can easily benefit a wider audience. This was a good lesson for myself to learn as it forced me to take breaks, step back from the work to be done and understand that sharing helps foster much greater ideas.

By taking this back seat many folks in the community eventually helped to contribute localization strings, which was never one of my original features but it became clear that this project wouldn’t be complete without being more accessible to those around the world. Thanks to the input of others, as of the latest release, Tweet Tray supports 8 languages and is still open to more contributions.

Tweet Tray macOS

It’d be almost criminal to not individually mention Riomar Mccartney for his extensive contributions to Tweet Tray. Specifically for providing a wicked set of app icons (below) which helped to give Tweet Tray some of it’s own personality. Emlyn Hughes also, who was a huge help in fixing a lot of Linux specific issues and added proxy support for those in countries who don’t have easy access to Twitter.

Tweet Tray Figma Icons

With a final note on open source the decision to pursue it also allowed me the opportunity to learn about test driven development and build pipelines. CircleCI it turned out had a free tier for their integration service which meant there were basically zero barriers for me to set up and run unit test checks via Github. Zero barriers other than time of course, but at this point it felt like a worthwhile investment.

In closing

Hopefully putting down my thoughts on the page in some way inspires you to finally execute on an idea which has been rattling around in your head. Feel free to get in touch if you have any questions about this project, Electron or something else.

Before I go I just wanted to give a few extra thanks to some folks who, indirectly, inspired me to make this idea a reality. Rasmus, Yoshua, Justin, Alex and Doug.