
Co-founder and CTO @missiveapp. I solve problems and try not to create too many. I also suck at guitar.
Quebec City, Canada
Joined May 2009
- Tweets6.6K
- Following453
- Followers801
- Likes484
Rafael Masson retweeted
I'm a Crystal @CrystalLanguage Core Team member and I created Kemal @crystalkemal (3.8k+ ⭐, 5M+ downloads).
I've been building Crystal tools since 2015. Now I'm working on gcry, a %100 Crystal garbage collector for Crystal. Already at ~89% of Boehm GC throughput with ~0.95x RSS.
I also maintain the entire Kemal ecosystem, run Crystal Weekly and Crystal Community, and write free books in Turkish and English.
I can't find a job right now. So I'm going full time on Crystal Open Source. I need $1,000/month to keep doing this.
If my work has helped you or your company, please consider sponsoring.
👉 github.com/sponsors/sdogruyo…
Be part of Crystal's future. 💎
#crystallang
Rafael Masson retweeted
Just noticed that @figma is using @missiveapp’s EmojiMart (missiveapp.com/open/emoji-ma…) when inserting comments 📨 🫶 🎨
Also noticed we reached 8k+ ⭐ on @github 😱
Made me realize that it was shamefully outdated 😬; we just released an update that includes Emoji v15 🫨 🫎 🪼
Rafael Masson retweeted
New to Missive? Our friends at @ProcessDriven_ are hosting a hands-on workshop on February 1, 2024 that'll guide you through collaborating on email using Missive!
🔗 Register at: processdriven.co/services/in…
Rafael Masson retweeted
“If there’s anything I see juniors often miss, it’s this. Careful, repeated, even obsessive, study of their own work. For programmers that means poring over the pull request until it’s as aesthetically pleasing as it is functionally correct.” world.hey.com/dhh/commit-to-…
Rafael Masson retweeted
I also wanted to announce that I'm launching a new product to help saxophone players keep their fingers close to the keys!!
I've been working on the R&D for a while and it's finally ready >>>> sax.greg.technology/ to get updates when we launch!
youtube.com/watch?v=BrUDYO_O…
Rafael Masson retweeted
Lots of conversations with people about Citus lately. Citus is a fascinating and advanced piece of technology, but not a one size fits all. If you're considering Citus here's the things to keep in mind.
Disclaimer-this is assuming a multi-tenant workload.
If you ever think you're going to need Citus, it's a good idea to slightly denormalize and have your tenant/customer id as a column on every table. The key is you don't want to have to join another table to get to the tenant_id/customer_id you want it there denormalized on every table.
Your primary keys will then become composite primary keys, composed of customer id + the id for that table.
For joins you'll want to make sure you also include that tenant_id as part of joins for every coloumn, not just one table, for every single table in your query you want to make sure customer/tenant id is joined.
A good thing to check for before going to production is tweak the log setting for queries that are cross shard to error. Citus has a setting for this: ALTER DATABASE postgres SET citus.multi_task_query_log_level = 'error';
The other piece is determining your node size and cluster size ahead of time, don't prematurely plan for too large of scale.
A fun interesting learning, just doing the above with customer id and joins we saw customers that were planning to migrate to Citus saw a significant performance improvement from that alone.
As for shard sizing don't stress too much on it. Determine your starting number of nodes and then create a shard count that allows you to scale to 4x that. Don't start on the smallest instance size you can find, but don't start on the largst either. With all this a goldilocks zone middle of the road for all is the way you want to go.
Once you're live watch for hot spots on shards on particular tenants, and consider rebalancing or isolating those tenants. Citus expansion of pg_stat_statements (citus_stat_statements) will show you hot spots on tenants, and then you can isolate that tenant: SELECT isolate_tenant_to_new_shard('table_name', tenant_id);
And if you want to move that large tenant to their own dedicated node: SELECT master_move_shard_placement(shard_id, source_node_name, source_node_port, target_node_name, target_node_port)
Rafael Masson retweeted
Anyone switch from Front to Missive?
If yes, was it worth it?
Key features?
They seem pretty similar, with Missive being slightly better designed, but maybe I'm missing something.
Rafael Masson retweeted
VS Code users:
1. Command + Shift + P
2. Type "sticky scroll"
3. Hit Enter
You're welcome.
Rafael Masson retweeted
Missive (@missiveapp) Migrates to Crunchy Bridge for a Big Performance Boost crunchydata.com/case-studies…
Rafael Masson retweeted
"Missive helps our team make sure emails are handled quickly and effortlessly."
Learn how @cannyHQ uses Missive to better collaborate and be productive with emails!
Read or watch the full interview with Canny Co-founder @sarahhum here 👇
missiveapp.com/stories/canny…
Rafael Masson retweeted
I love how I get to experience the true nature of my dog stoically staring at you if you drop something at my door and take a picture as a proof of delivery.
Lil’ creep is on every single one of them.
Rafael Masson retweeted
I'm really excited to announce the release of the Analog Terminal Bell. Never miss a terminal bell notification again with the Analog Terminal Bell. Go to analogterminalbell.com today to get yours!
Rafael Masson retweeted
You currently use Slack, Intercom, Gmail for #CustomerService?
We spoke with François Lanthier @the_fln, CEO of @snipcart about his experience centralizing all channels in Missive and how his team's comms have been greatly enhanced. 💪
Read more here: missiveapp.com/stories/snipc…
Rafael Masson retweeted
We recently made the switch from Intercom to @missiveapp for customer support and team's comms. We couldn't be more delighted with the results.
@the_fln tells the whole story here 👇
buff.ly/2Rk85Bk
#CustomerService
Rafael Masson retweeted
Git tip I wish I'd discovered ten years ago: if you `git config --global diff.noprefix true` it removes the silly `a/` and `b/` prefixes so that when you double-click select one to copy, you get a usable filename instead of a mangled path.
Rafael Masson retweeted
Our game The Tiny Bang Story, which Rock, Paper, Shotgun ( @rockpapershot ) listed as one of “The 25 Best Puzzle Games Ever Made”, released on the Nintendo Switch.
nintendo.com/games/detail/th…
Rafael Masson retweeted
Such an honor to be on the @syntaxfm podcast. I speak as eloquently as a 4th grader, but @wesbos & @stolinski are such gents and pros — they make it bearable 😅
You too my friend can have a JS app featured on the App Store 💪🏼
🎙syntax.fm/show/184/desktop-a…
📨 missiveapp.com
Rafael Masson retweeted
I'm going to sing the praises of @missiveapp again. Sharing founder emails & supporting each other by ghost writing them, sorting them, etc. is super valuable.
Rafael Masson retweeted
Very nice overview video of Missive. Thanks @techsmartboss! 🙂 xitter.cf/techsmartboss/status/1…
📹The Tech Smart Boss video this week is on @Missiveapp and it's one you don't want to miss.
✅Check out as we set up a new account and see what this team communication hub can do to streamline your #business -> be.smartboss.co/missive
























