When you work at IT company where things like competing in a 16 meter freestyle swimming race in a kiddy size pool occur, interesting ideas tend to surface
We were planning on throwing an after-work beer day in a backyard of our office building, celebrating the International Beer Day, and decided to promote our company’s new t-shirt design
Just 24 hours away from the party start, we’ve realized that, since we’re already inviting a bunch of friends over, why not allow them to vote for a t-shirt design they like best and have that one eventually printed in a larger series
As some of us do have the ability to overcomplicate simple things efficiently, we’ve reckoned writing some code to back the voting process
Bundle
Plan was quite straightforward – have a tablet (which we had lying around the office not doing much) to show two colors without any context in full screen (immersive), representing the two t-shirt designs, add 10 seconds cooldown between votes (so that tipsy people with butter fingers won’t spam their favorite design recklessly), have that vote marshaled and sent to a server that runs a simple API written in Golang, one that accepts POST requests, validates them over Basic Auth (never enough security for a crucial project like this), counts votes, adds some potentially interesting text to it and sends that bundle as a tweet, only to be displayed on Twitter feed running on a TV mounted near the beforementioned tablet and neatly placed between the two hanged t-shirt prototypes
Expectation
Ex{planations,cuses,ceptions}
As mentioned, the nutshell of the idea was conceived one day before the party, but actual development started about 2 Minutes to Midnight on the very same day, so tomorrow on the T-day, we’ve realized we were lacking dev status for our company’s Twitter account, which would grant us their API access…
Also, due to time constraints, code quality of our solution was shitty (if there was more time – it would still be shitty… OH SHUT UP!)
Getting approval from Twitter apparently isn’t something one gets on short notice (we’ve tried), so we were forced to take the alternate route
Reality
Twitting part (alongside additional content fetch) on Golang side was replaced with direct HTML templating – thankfully, A Wild colleague / friend Appears – Mr Nemanja C, Frontend dev and UX design guru jumped in and orchestrated entire UI part of the app
Since t-shirt designs had a retro 80’s throwback, we’ve decided that the best way to present results would be with an era appropriate, fighting style layout – a VS-like screen with a animated ‘Thank you’ appearing after each vote, alongside a slightly enlarged t-shirt that has more votes
All patched up – running behind npm’s live-server with iptables re-routing (live-server doesn’t take kindly to port 80, and it would be lame to reside on something like 3000), hence –
After all the beer
All systems are a go!
Choose wisely
Screenshot of 3 secs post vote
Frontend IRL
Backend IRL
Vote was a success (after a few beers we like to believe that it was) and it did produce a winner
Go Yellow Matori!
Two of us responsible for the entire shebang patted ourselves on the backs, gave each other a high five and destroyed all evidence this ever happened
Except Android code… and frontend code… aaand Golang code… sigh