Tuple: Pair Programming Tool for macOS
tuple.app
tuple.app
I’d highly recommend checking it out.
You can share screen and keyboard and work on the same codebase as if looking at the same screen and having a keyboard one for each. Audio worked extremely well. Did not use video for long because the fans spun on (2017 MBP). Without it, resource consumption was reasonable.
Made us super-productive back then. Can definitely recommend it.
How do you solve that problem?
IMO this is the right way to do pair programming. It tends to bring everyone up to speed with the latest tools, and it keeps eccentrics out of the weeds. It's not to everyone's taste, of course. But neither is pair programming.
Snowflake behavior is being the person who just can't use the terminal if it isn't "set -o vi" keys. Or insisting that Caps Lock be mapped to Ctrl/Esc/etc.
Or that people are sharing a physical keyboard and having this problem at all. You can pair program with more than one keyboard.
I guess you can call keyboards snowflakey too, but I don’t see why anyone should dictate what keyboard I use in my own home.
"I can only be productive in emacs" doesn't fly, unless you happen to be paired with the rare snowflake that feels similarly.
My team standardized on JetBrains. Even if someone is unfamiliar with the IDE, pairing gets them up to speed fast. Humans can learn any dev environment.
Suggestion: market this to remote teams regardless of whether they do "pair programming" per se!
In my last job we had our team spread out over continents and time zones and home-offices and office-offices: bandwidth for meetings was super unpredictable.
Thus anything with a live video component was hit-or-miss, and if you had something very technical to discuss, you often had to sync up to make sure everyone was reading the same page on Jira or whatever.
I realize your tool is probably only for 1:1 conferencing, but even then, I think it could be compelling to have really good screen sharing with some annotation and the resolution control. Even if (especially if) it's only going to be used by two people at a time.
(Maybe this needs a different kind of license though. If I have 10 people on a team and expect 5 of them will use it but I don't know in advance which 5 or when...)
Also I would absolutely want something like this in a startup, even for managers, just to be able to go over stuff like AWS consoles (shudder) together.
[edit: grammar]
But the audio connection seems to keep going for a few seconds after you close the pairing screen. Could be seriously embarrassing if someone utters something after thinking they've ended the call.
I'm pretty sure this isn't true, but if you can reproduce it, please do let me know and we'll fix asap! ben@tuple.app.
Lol I'm not lying to you! I almost always hear an end-of-call sigh from the other person that I'm sure they aren't expecting to broadcast because they think they've ended the call, but nothing embarrassing yet!
I'll try to screen-record my next interaction and show you. I think the problem is closing the window shuts down the screen link but not the whole pairing session, but people don't realise they need to separately end the call.
Sorry, didn't mean to imply you were :)
> I think the problem is closing the window shuts down the screen link but not the whole pairing session, but people don't realise they need to separately end the call.
Ah hah! This is totally it. Closing the screen share does not end the call (intentionally). I can decide I don't want to see your screen any more, but still want to talk to you. Definitely a debatable design decision, though. It actually used to work the other way.
Do you support Linux and Windows? Not yet! We're Mac-only for now. If you'd like to hear when we launch support for those OSs, please drop your email in this form.
If you have something in beta or coming soon, you should update it to send people to that more actionable link instead.
The best improvement was the clunky 'observer'-party that wasn't easily able to become the 'driver'. I think I actually received a reply on that one, plainly stating that it's a well-known issue that's being actively worked on, and not long after it began working seamlessly. I was about to ask about shortcuts, as moving the mouse to the menubar to temp-mute (or hang-up at end of call) can be a bit awkward if your screen is the one being shared--I just looked and there are Hotkey settings, just no defaults. Great stuff.
There used to be some issues where leaving Tuple running for days/weeks(?) sometimes could have it consuming CPU while idling. I don't recall the OS-version specifics, but I've got into the habit of exiting and restarting it every day or so. The problems may have been fixed but I haven't tried leaving it running to find out. If there's a way of submitting diagnostics specifically for these sorts of issues, I'd like to know.
It all it's as close to a perfect product as I use on a daily basis. Even with one team member's internet that can get slow at times, dropping to 1080p makes the text a bit chunky but still readable and able to follow along.
Love Tuple, use it daily. It really is the best for pairing.
The one thing that is annoying for me and can probably find out myself, but I think it maps cmd-a to something so I can't use it to select all.
If, however, you only see that problem when Tuple is running or call is active, let me know and we'll look into it.
Also, Tuple is waaay better than what we use when interviewing people with. Maybe some sort of hot seat feature where we could get people to download Tuple and interview/pair with them there.
Move SSO to the $25/user plan.
https://news.ycombinator.com/item?id=29673713
Table stakes security practices for a new business getting started right shouldn’t require a jump to $10K a month.
As far as a screenshot for product? Not sure, it really stays out of the way which I like but that makes it difficult to convey visually. Which you seem to have realized :)
I realize that watching a video is maybe how a lot of product companies wish potential customers made decisions, but much like an elevator pitch, if I can't scroll the website and have a glance at what the product looks like, I ain't gunna watch a vidya bud.
We don't pair program as a regular thing, but we have junior engineers on our team, and often when they need help, or we're working through some bit of architecture, etc. I'll pair with them. Tuple is the best tool I've found for doing that (remotely). I'm not teaching full time any more, but if I were, I'd absolutely be using Tuple to do remote 1:1 sessions for that as well.
Finally, I've interacted with Ben, the CEO of Tuple, and came away with a great impression of him and what he's trying to do.
We use it because the latency is the best compared to other pairing tools, and it has the best UX for remote pairing.
We even use it for pairing when we have people in the same room, and we need two people on their own machines.
Who is using this? What do you use it for? I don't mean to be facetious, I have just never been exposed to pair programming in a professional space.
In a 30-year career, I’ve pair-programmed under 100 times. Usually to get someone up to speed on a confusing part of the code base.
In fact, I’d go as far as to say that if pair programming is a recurrent need, you need one or more of better engineers, better documentation, or better code reviews.
I don't see it as only as a need to unblock someone. It's a great way learn and share from in a junior:senior dynamic, and also speaking strictly remotely, a nice way to socialize
Instead, build a chrome/firefox extension that allows 'pushing' a tab into the pair's browser session. I find something good, I right click on the tab and click " Send to Pair" or similar.
Only a few days left! I'm so excited :D
At work our project uses macs and most devs have also macs, but some have Linux personal computers and we can't pair from home with them using tuple
Using Linux, I, and one other, was therefore not able to participate in a lot of work. Coworkers would pair with others because of familiarity, and because between macos and linux, there was more friction.
This caused a severe schisma in an already disfunctional team.
Management then disallowed tuple, because it was making things worse. But the practice continued. I quit. Not because of Tuple, but the entire distinction, of which Tuple was an ingredient.
The choice to not support an important part of the developer community is understandable from technical perspective. But socially, in times of isolation, home offices etc, it is doing harm out there.
My point is that any company that makes a co-operation product, but which excludes a demography from co-operating, should know they are causing harm.
Imagine if slack excludes Android. Or Google Meet excludes Apple devices. That is not only a poor product, it causes minorities to be excluded. Or divides the companies or teams using it. This is what Tuple is doing.
I'm blaming both Tuple for not including Windows and Linux up-front, just as well as management adopting such tech that has these clear limitations.
In this practical case, the Linux (and Windows) users joined later into an "mac-only" team. Tuple, however, was the major cop-op tech: they refused Slack, accidentally used Telegram (!?) and email, and when using Google Meet all engineers refused to turn on webcams. So as a non-Tuple-using person you were really kept out of the loop.
Genuinely asking, why would I want to run video streaming if I can just send small amount of text deltas.
Edit: and as I suspected, on second pass on the homepage it's right there in the middle in the purple bar. And it does seem like it's "TeamViewer but for developers". I suppose in the spirit of 'pair programming' that makes sense, but I'm not sure how streaming an entire desktop is better than streaming only application state if you just want to work together on the same thing.
And if all you're sharing is deltas, how do you discuss existing code interactively? Can you also share text selections and/or mouse movements?
Also: other editors could implement the same protocol perhaps, it would be cool.
[0] https://szymonkrajewski.pl/drawio-real-time-collaboration-in... here it says it doesn't show the cursor, but a new update does
Which works across platforms too.. which is nice.
It’s the only thing I’ve tried and it works pretty nicely.
Based on that cost structure, if it saves the average user 15 minutes per month then it has paid for itself.
I make this argument solely because when it comes to developer/professional tools, tens of dollars per month is a fairly trivial cost.
Additionally, as others have mentioned, I think some of the issue is the lack of a free or low cost personal tier that has some set of restrictions. What those would be for an arbitrary pairing tool I don't know, but it feels really pricey if I just want it available for one-off pairings.
Now, personally, I could sign my OSS project up for a free version, but since I don't need (or want, lol) to pair with most contributors, that feels a bit wrong.
Unfortunately Teams, while terrible, is sufficiently usable that I don't see being able to persuade my current environment to adopt Tuple either.
I think, if I actually paired outside of work, I'd be willing to spend $5-$10/month just for casual non-commercial use. I'm not sure when I'd ever take advantage of such a pricing tier, sadly.
In any case, Tuple is really great. For us, I think it would become a no-brainer if it had a seat-based model. e.g., we pay for 4 pairing seats a month, and a max of 4 developer can use Tuple at any given time.
Automatically bumps to the $25 price if you go over.
A limited free trial can be good. But if you make it cheaper or free now, it's way harder to go back up In Price than it is to cut price later.
- an idea of how much bandwidth it’s currently using or needs. I often find if I’m on a patchy connection it’s unclear how changing the settings will have an effect - make the video face stuff more prominent, especially for multiple monitors. I work 100% remote so when pairing I like to put my Co-workers full size on my second screen while I work on the primary screen, which helps us feel more connected.
I'll also offer one related piece of feedback: the "calling" metaphor for initiating a session is quite awkward. Compared to Zoom, where you share a link/code once and then you're free to join/leave the room, in Tuple you have to ask the other person to call you every time you drop; this in particular does not play well with the forced version upgrades -- you ask the other person to call you out-of-band, and you answer, except oops, you need to upgrade Tuple, so you upgrade and restart Tuple, and now Tuple has forgotten about the last call so now you have to ask the other person to call you out-of-band again! This is a UX wart that I'd love to see fixed!
Improving webcams (a lot), URL-based rooms, and never having a call interrupted by a required update are all on my list for next year.
With Microsoft M365 and Google Workspace available for startups, it’s a serious shame sites want to make you store additional credentials with them instead of getting started on security right leveraging SSO.
- https://support.google.com/a/answer/60224?hl=en
Kudos to SaaS offerings like Pipedrive CRM for including SSO from the basic plans, and to Azure for recognizing that:
- https://docs.microsoft.com/en-us/azure/active-directory/saas...
Managing AAA isn’t only for Enterprises at $10K a month. It’s for 3 devs in a garage too.
As an added bonus were able to understand and solve a bug that's been plaguing us for weeks now in our first session :-)
I really like how it just stays out of the way.
I threw out the link to the rest of my team to see if others will try it out as I want our team to get more comfortable with pairing.
Well done and congrats on building a focused sustainable product!
Some constructive feedback: could not get my webcam (canon eos utility) working. But tbh nothing big because we never use Webcams.