Hugh Jass Message 🗣
Thursday, April 19, 2018 :: Tagged under: engineering projects culture works. ⏰ 3 minutes.
Hey! Thanks for reading! Just a reminder that I wrote this some years ago, and may have much more complicated feelings about this topic than I did when I wrote it. Happy to elaborate, feel free to reach out to me! 😄
The song for this post is 200%, by Akdong Musician.
Unbelievably, I followed through on a threat to do a project the other day. I present to you hughjassmessage.com.
What is it? A clone of bigassmessage.com, correctly dubbed "the most useful site on the Internet." I use(d) it all the time to to send links like these to my friends. It's a bit like Let Me Google That For You (example) in that it's a troll-ish and fun wrapper around messages you might want to send your friends.
Why clone it? Because I love it, while also having a few critiques:
-
It's backend isn't always up. Often (like, as I'm typing this) I'm unable to create new Big-Ass Messages.
-
Load time: according to its author, people have submitted tens of millions of messages! This is cool! But the underlying datastore is taking a bit longer to fetch them from the URL hashes, so when you load a message, you're greeted by a placeholder "BIG-ASS MESSAGE," which removes the initial shock (and therefore, fun!) of sending this to your friends.
-
Querystring option: like Let Me Google That For You, I felt like it would be handy to generate a link without having to make a call to a specific datastore. I might add proper short IDs like BAM does, but right now you can call it with either
q=<MESSAGE>
in plaintext, orr=<MESSAGE>
for rot13. -
Obscured URLs: if you ask someone to click a url called
bigassmessage.com
, there's a bit less surprise in what they're getting. So while I have both hughjassmessage.com and hugeassmessage.com, generated URLs point tohjm.wtf
, so your friends won't see it coming until it hits them.
Behind the scenes
In a case of massive overkill, I used Phoenix for this, and am hosting it on a LightSail instance. It doesn't have a datastore yet, but I might put SQLite behind it and push backups to S3.
It's The World's Simplest App: the embiggening of the text happens with client-side JavaScript, so without a datastore, this app is pretty much a single static file + rot13. So why use Phoenix? A few reasons, but the main one is that I'd like to commit to finally learning a full-featured framework for once. My work at companies has put me on microframeworks like Express and Flask, which certainly make it easy to host an endpoint, but you always end up writing a ton of middleware (input validation, logging, asset minification, etc.) and I would love to be surrounded by something with opinions, finally.
Dropwizard was a favorite for a while, but even it makes certain basic things hard, and I'm not feeling in a Java mood recently.
I find Elixir strange. That will pass, but its syntax is a bit sugary for my tastes. I'm finding tools like Distillery, Mix, and Hex delightful to use.
Let's Encrypt is such a blessing.
I avoided Docker. It's a small personal project, so it's a "pets, not cattle" model: if I lose the instance, I'd have to manually re-install Elixir, nginx, and the like. You don't need city food inspectors in your personal kitchen when cooking yourself dinner, and so your stuff probably doesn't need anything more than a pet server anyway 😛
Have fun! And ping me if you run into any bugs! 😄
Thanks for the read! Disagreed? Violent agreement!? Feel free to join my mailing list, drop me a line at , or leave a comment below! I'd love to hear from you 😄