Ask HN: What software/service helps you be an effective remote developer?

284 points by pearphp ↗ HN

157 comments

[ 2.9 ms ] story [ 250 ms ] thread
Shared terminal sessions using `screen` or `tmux`.
For what purpose exactly? Surely you don't have multiple developers writing code with one cursor.
It's incredibly helpful to launch a service and ensure it's running, and allow a dev to see it running in action as well. You can also have a one on one situation where a dev might want to show you how to debug a running app or something like that vs explaining where it logs error messages after they occur.
In a pair programming situation, this is very useful.

And yes, one cursor. But you can have multiple terminal sessions open on your local machine, but only be connected to one common session. That defeats the purpose of pair programming though.

You both want to be focusing on the same thing, at the same time.

For anyone looking for shared terminal sessions, I recommend wemux
I recommend tmate.
everything which helps you to communicate with your colleagues:

* skype, google hangouts, webex, zoom for 1:1 and conference style video-calls

* github/zenhub and/or atlassian jira/confluence for scm/bugtracking/codereview/backlog/agile boards etc.

especially: write comments to tickets and PRs (!) even if it often seems trivial. it helps documenting work-progess and keeps decisions for later reference. don't forget any kind of wiki for documentation

* screensharing via ... screen/tmux or vnc, teamviewer or even some videochat - not skype because of its poor image quality - to do pair-programming

* irc/slack/skype-chat/... - any kind of im for synchronous text-based chat

* good old email for everything else :)

To add to this, Webex also has excellent desktop sharing. I use it many times every day.

That said, the phone is probably the best friend of the remote developer.

WebEx always works really well. I wish it had better Linux support.
Great question

https://wakatime.com/ allows you to install a plugin in your IDE for tracking time

Virtual desktops (windows but there is a mac version - Mission Control) is great for quickly moving back and forth between work desktop (no distractions) and communication desktop (email etc)

for automated time tracking, I've found that "Timing 2" is a bit better at giving a better overview since it also tracks the things you did "around" coding such as research and whatnot. Tasks not inside IDEs.
On Windows, I can recommend ManicTime (www.manictime.com) myself. It’s free and all data is only stored locally/offline.

I’ve found it to be very useful, especially as it logs away times and the currently focused window titles. You can also set exclusions if you want.

Password manager. I recommend Enpass or 1Password.
(comment deleted)
(comment deleted)
Personally i think communications tools help me more then anything in the remote developer category. Programming tools are the same if i am in the office or not.

I have found zoom has the best screen share quality. Great for pair programming/explaining

I find it best to over communicate what you are doing to the team. "Starting on x task", "brb coffee" even of no one cares or replies it just lets people know what i am doing

I work in an agency so i use slack status with the icon of the client i am currently working on.

The company encourages the use of a service called wooboard i feel that might be a good tool to keep up with the non remote team but i struggle to actually use it my self

I don't like working from home personally. I pollute my personal space with working habits. And pollute my working habits with my activities from my living space. So for me, going away from home to work - even just a coffee shop.

If I need to be working from home I like to use pomodoro to keep me on task. Having a clear list of tasks is good. Taking notes in org-mode on the activities that I'm working on is also good. Basically anything that I would normally do to deal with complexity I need to do when I'm working at home or I end up wasting swathes of time unless I'm really well slept and on point (which I'm usually not because I work at a tiny startup)

File synchronization helps me keep documents and other data ready in both my laptop and worstation (that way I can always be on the go). Dropbox, google drive or resilio can help.

Having a remote session server ready can also be very helpful when you want to dial back home (vnc or teamviewer).

I also try to keep different users to help me focus on work on my machines, maybe even enable some kind of parental controls in the work account if you find yourself drifting away browsing the web (blocking some distracting websites).

Sure! A few of them:

1. Dropbox Paper for easy note-sharing. We've got a ton of docs we share, update, and constantly reference to

2. Appear.in - https://appear.in/ - probably the best team conference software we've used. We compared it to Slack, Skype, Hangouts (which is horrible), and a few others. Appear.in always won out, plus we can use it with contractors/clients without the need of an account. Works really well from the phone, too.

3. Org Mode - a recent addition, we've been using org mode to plan out dev sprints and story out features before putting them into PM software

4. Slack - self-explanatory

How is Dropbox Paper better than Google Docs?
It forces you to focus on content, not layout, and it has a great editing & commenting experience. Basically it's Google docs with fewer features, and then the remainder very well done. This makes it a joy to use.
Imagine if you could format Google Docs using markdown, including code fences with syntax highlighting built right in.

Paper does that.

I’ve been using Paper for months and it feels old and stodgy now when I open a Google Docs.

Even comparing Google Docs against itself, it fails. Slow to launch, poor search, document corruption. The only good quality is being able to plus someone a task.
I initially loved Dropbox Paper.

However, being so easy to manipulate it has become a place of braindumping. I begged my boss to separate his personal notes vs. company documents. It has gone out of hand. Tons of unattended documents that people have forgotten about.

Creating new documents and editing them has become so cheap (congrats to paper devs for managing that) that its backfiring in our case.

As for team conferencing, we used many many different tools. Recently we started using zoom.us and the quality is amazing. Much higher framerate and resolution with a better CPU usage.

My company uses hangouts almost exclusively, but I have had a chance to work with a 3rd party that uses zoom and zoom is amazing. It just works. Most conferencing software I rate on a numberline of hate. Zoom doesn't even exist on that dimension for me.
I could never get hangouts to work properly across platforms/devices. Once I had to spend 15-20 minutes with an interview candidate setting it up (it messed up on both sides) at which point, I refused to do hangouts with anyone.
Agreed. I wish my company used zoom.us. It is so painless.
We're in the process of trying to get a trial for Zoom, as we initially bought in heavily on Google Hangouts and it's proving to be a terrible UX. I know how to use it, and I've shown everyone how to setup meetings, add rooms, etc... several times now, but it never sticks.

I say "trying" to get a trial, as two people from our company have contacted Zoom multiple times, and while the initial contact is great, we just cannot get any followups. It's very frustrating, especially considering that all my dealings with Promevo have been absolutely outstanding.

Jitsi meet[1] (which you can self-host if you want) is a lot like appear.in

[1]: https://meet.jit.si/

We used this for awhile and it is OK (will get the job done) but we had much better audio/video quality with commerical solutions like GoToMeeting, WebEx and Jabber.

Would recommend if you are on a budget and need a self-hosted solution though.

Tangential question, any tips about using orgmode with a team? Right now I use it for notes at meetings (pretty much all meetings) and translating those notes into tasks with dates etc, but I haven't been able to figure out a good way to get a team to use it...
We don't use it for async collaboration. So we have one "driver" who takes the notes and when we're done and ready to move to the PM, one of us transfers the tasks. One of our devs pretty much started this trend.

Here's what it usually looks like:

* Project name

* * Large Project section [manually added point value]

* * * task name [pt value]

- further notes on task (really shouldn't be there, task should be very self-explanatory and atomic)

* Estimate

* * Pt value total for the project and estimation math.

Many of the tools that I use have already been mentioned, so I'll only mention that VPNs make me feel much better about working from coffee shops. I use EncryptMe, but most any VPN will do
Can you explain how that matters? I mean, isn't every service you use on HTTPS these days?
Sites using HTTPS are still vulnerable on a public WiFi access point if you don't use a VPN. To give an example, an attacker can perform session hijacking:

https://scotthelme.co.uk/advanced-session-hijacking/

That’s sites not using HSTS and where the user is not paying attention

I’d argue people who are thinking of using a VPN wouldn’t fall for this kind of attack.

> "where the user is not paying attention"

What signs should the user be paying attention to?

The https lock logo. If it is there the interception mentioned in the link is impossible.
How so? Effectively with a MITM attack the attacker becomes a router. Users don't connect to sites directly, the attack can be made transparent at the user level.
The only way one can MITM an https connection is by terminating the https connection at the level of the attacker and presenting an http connection to the user, hoping he won't notice the absence of the green https lock.

The attacker cannot serve to the victim a valid certificate for facebook.com unless the facebook.com private key or a CA has been compromised.

Alternatively the attacker could try a close enough domain (facebooks.com, or something) that it controls and for which it can get valid certificates, and redirect the victim hoping the user won't notice the slight difference in domain name.

Fun thing to do: block all http traffic (or even block all but https) and try to work for a day or two.

That's the best way to see how many services still relies on http at least partially.

... unfortunately

I hope it will get better and soon we all will be able to do that

(comment deleted)
GotToMeeting for group meetings/calls

Skype For Business for one-on-one company calls & PSTN calls

Skype for VoiP with external parties

Yammer for company latent awareness/news sharing

TasksInaBox for collaboration planning and task followup

Doodle for meeting scheduling

Sharepoint for document repository

Slack for communication

Toggle for time tracking - https://www.toggl.com/

Bookmark OS for bookmark sharing - https://bookmarkos.com

I gotta play with it a bit more but I think BookmarkOS might be a new favourite of mine!
Try out https://wakatime.com for automatic time tracking.
www.timelyapp.com is worth a look for automated time tracking too. Timely can track anything you work on (not just code), is a complete “time tracker” package.

Disclaimer: I work there.

Can't use this where I work because of information being sent to their servers. Even if it is just absolute paths.
Try adding this to your wakatime.cfg:

hidefilenames = true

Shameless plug: we made a screenshot tool with an extremely simple annotation system to make it easier to communicate around visual issues.

Chrome extension is available here:

https://chrome.google.com/webstore/detail/screenr/ppgaejlknk...

No HTTPS on your site http://screenr.co/?
Sorry, yes, we've just shipped a first version of that website, and https hasn't been done yet.

We'll do it asap. thanks for the reminder

Your embedded video links to a random Vimeo Staff Pick
Indeed... sigh... thanks
I'm a bit disappointed by the current comments here. "Skype" can't have been the answer the OP was looking for? It's like saying JavaScript made you a more effective programmer. No, it just made you a programmer.

I'd like to add a less conventional tool to the list:

We're currently trying out https://sneek.io, a tool that takes a mugshot every minute and shares it with the team on a panel. Most of us use it on a separate device next to their workstation/laptop. The idea is that it simulates an office environment a tiny bit. This has two great benefits: 1) you know whether someone is behind their computer. Knowing that someone is away means your IM message will not get a speedy response for sure so you won't wait for it (or maybe not even ask it). This reduces time spent in IM. Secondly, faces instead of names, text and voices somehow makes the team feel more like a team.

This concept was popularized by Sqwiggle, but they went bust. I'd be very interested to hear other people's experiences with tools like this.

By the way, anyone found a good Screenhero replacement? Slack bought them but even 2 after years in development hell their calling and sharing support is ridiculously slow and buggy. For the uninitiated, Screenhero was a tool that gives everyone their own mouse pointer in a screen sharing session. Perfect for pair programming.

Ooomph, I would absolutely hate sneek. It really feels like you're in an office.

A few key benefits of being remote for me are that:

- I don't want to sit at my desk all the time, because I like to walk to think. If you do this in an office, people tend to think I'm not working. As a remote engineer, not showing up on that screen capture tool would make it even worse.

- I don't want to have to think about how I dress or where I sit or if I lie down.

- I don't want to have the distraction of checking who's there or not.

I get the idea behind it - that you need more human contact and everything, but this looks terrible to me.

> Screenhero was a tool that gives everyone their own mouse pointer in a screen sharing session.

I haven't used it though I believe TeamPlayer[1] has the functionality.

1. https://www.dicolab.com/

We tried a tool like that, everybody hated it and we switched it off. It just felt too big brother, especially for those of us that work from home. Made people uncomfortable and wasn't actually useful.

Note: my co is ~30 devs split across two offices in different states, plus a handful of people working from home. YMMV

Unlike the others I like Sqwiggle/Sneek. It stops me feeling cut off working from home. However Sneek has real performance issues and we had great problems getting the webcam/audio working reliably across computers, so we cancelled it.
Zoom for screen sharing and conference calls. It's incredible.

https://zoom.us

Few pieces of software have caused as many kernel panics for me as zoom has. As great as it may be, I wish it were better.
We use Zoom and agree it's pretty great, but is there a similar product for doing whiteboarding remotely? Zoom's annotate thing leaves much to be desired...

Also, is there anything out there that does screensharing but with multiple cursors like Screenhero? Just did a search on HN and found this: https://news.ycombinator.com/item?id=15854137

(comment deleted)
How does Zoom compare to Skype, Teamviewer, or join.me?
As other people have noted, I’ve had issues with zoom as well.

The most stable, easiest video conference and screen sharing tool I’ve found is http://appear.in

(comment deleted)
Zoom is amazing. I particularly appreciate that I can do videoconferencing with multiple people without the fans of my MBP making a lot of noise, as it is the case with skype or appear.in
I use a tool called http://casual.pm to break larger problems down into smaller chunks. It's a mix of a todo list and a flowchart. They even allow drilling down into sub tasks which is super handy.
As a remote freelance front-end web developer I use the following to help me manage the business side of being a remote developer.

1. Cushion https://cushionapp.com/ - Super helpful freelance managing software targeted towards solo freelancers. I use it to track different projects and their invoice feature with Stripe integration is amazing.

2. RemoteLeads https://remoteleads.io/ - A newsletter that sends you free remote front-end freelance leads to your email about twice a week.

Shameless Plug: I started RemoteLeads to make it easier for myself to get those leads coming in.

What made you limit this to front-end?
Parent is apparently a frontend dev as he states in the first line.
Corporate credit card. ;) It's used to finance the tri-yearly two-to-five day meetups with the whole team in one location to work together and do more extensive longer term planning, plus 'bonding' dinners.
I use the combination of OBS, ffmpeg, and YouTube to share knowledge asynchronously with teammates.

Whenever I need to document a particularly complex task or procedure, I record a 10 mins screencast and explain the process + show the steps. Any screen capture tool would do, but I find OBS to be very good and versatile https://obsproject.com/

But who wants to watch a 10 min video, with slow sections, typing and "ummm" pauses? Why not compress the information into 6.66min instead? Using the following command will speedup the video as if the user is watching at 1.33x:

    ffmpeg -i "$1"  -filter_complex "[0:v]setpts=0.6666666666666*PTS[v];[0:a]atempo=1.5[a]" -map "[v]" -map "[a]" "tmp-$1"
    # Delay audio of $1 by 60ms to fix discrepancy caused by above step
    ffmpeg -i "tmp-$1" -itsoffset 0.06 -i "tmp-$1" -map "0:0" -map "1:1" -acodec copy -vcodec copy  "faster-$1"
    rm "tmp-$1"  # cleanup tmp file
After that I upload the video to youtube as "unlisted" and share the link so my teammates can check the video whenever they have time. It's as effective a communication medium as having a meeting, but communication is async. Example use cases: git rebase tutorials, documenting devops procedures, code walkthroughs. (edited to provide also the command to fix 60ms delay)
Trivial quibble: I think you meant 1.5× rather than 1.33×?
Why would you assume that?
The algebra was wrong. If you do something in 66.66% of the time, you do it a 50% faster (i.e. 1.5x). Perhaps it is easier to see it with the case of reducing 10 minutes to 5 minutes. It is 2x faster, not 1.5x faster.
Apologies, apparently I can't read. I thought you were suggesting people would not speed up video x1.33
You're right, I guess for 1.33x you'd need the first line to be

    ffmpeg -i "$1"  -filter_complex "[0:v]setpts=0.75*PTS[v];[0:a]atempo=1.333333333333[a]" -map "[v]" -map "[a]" "tmp-$1"
I'm curious of ways to trim a video down to 'stuff happening', similar to how a voice-activated tape recorder works. One way might be to take clips of a certain length, with no user input and speed them up since these will usually be waiting on a progress bar.
One can modify video playback speed on youtube, so one could also leave the choice to speed up or not to the recipient.
That's true, but I think very few bother to change the speed so I'm making the sped-up version as the default.

Perhaps 1.5x is too much (as in the example above), but I think 1.33x speedup would not be noticeable. People just think I drank a lot of coffee and talk fast.

If YouTube player had more speed options keyboard shortcuts like https://chrome.google.com/webstore/detail/video-speed-contro... then I probably wouldn't touch the source.

I'm veering slightly in topic and only sharing personally, but I actually make a conscious effort to slow down when I am sharing something with other people. In my youth I used to race through all kinds of speech assuming the other person was on the same wavelength (and maybe also some anxiety I was wasting people's time). Recording classes that I currently teach has made me super-aware of bad patterns, which also include completing sentences with "but..." - assuming the unstated alternative is obvious, and using pronouns later in paragraphs like "so we are able to tell this is out of scope" when I really should be saying something like "...so we are able to tell that the doSomething() function is out of scope" to be explicitly clear. Definitely a big mindfulness challenge for me not to fall back into my default mannerisms.
For screen-cap/video instructions, I also try to take a little extra time* but towards making it concise/brief.

* If the instructions are worth making, more time will be spent viewing them than producing them.

I try to get the whole video in one take to save editing but I'll do multiple takes to try to get it right/succinct. I consider the first one a draft/rehearsal (though if it works out, great!).

This still doesn't take very long (even when using a small area of the screen to save file size), and viewers should find it easy to pause or back up a few seconds.

This is all for step by step style instructions rather than heavy conceptual teaching, though.

Also, for documentation it sometimes works even better to make a looping, animated GIF of a single step and then inline that with a text description.

I use Loom to create instantly shareable screen casts:

https://www.useloom.com

Full disclosure: I’m the founder. But I’m also an engineer and our team has a non-trivial percent of remote people. This thing has truly made my life easier at work.

Protip: include which operating systems/browsers you support and what kind of application it is (on the landing page). Without signing up, I can't see if I can even use it. Guessing this is either a Mac app, or a Chrome extension, neither will work for me on Ubuntu and Firefox.
Yeah definitely Diggan. Unfortunately, it is a Chrome extension. We absolutely need to redo our homepage. It could be a lot better

Also, I'm working on a desktop app for you soon! Hopefully we can hit the Firefox extension ecosystem as well, considering how awesome quantum seems!

Is this a free or paid service? I can’t find a pricing page on mobile.
Signed up for Loom last week and it's pretty awesome! I like the fact that it's one click to record/upload/host. The embedded video of the speaker is cool too. My team is currently working on a set of internal training videos using it.
Hey, I do that, too, but just OBS, YouTube, and private videos with explicit sharing.

Also, the unfortunately named but really useful asciinema (careful pronouncing it!) is a great tool if the other person is hands-on and the entire demo is going to be about a terminal session.

Can you do audio with asciinema?
I don't think so, but I usually see people just typing notes for the viewer either directly on the command line (and then erasing them) or as # comments.
No.

It's just a json file with timestamps. I suspect the original authors would not want to move away from this simplicity.

Remote work use cases like yours are the reason my cofounder and I created Outclip (https://checkoutclip.com). The advantages of Outclip over the OBS + ffmpeg + Youtube workflow are twofold:

1. No overhead of managing files and uploading: you can record and share webcam videos and screencasts without leaving the Outclip webapp.

2. Better privacy than unlisted videos: Outclip has a group feature, where only logged in group members have access to videos.

We're 100% focused on making remote work better by enabling teams to communicate through video clips. Check us out at https://checkoutclip.com.

(comment deleted)
On the subject of "ums" - does anyone know if there's a tool out there to automatically remove ums and uhs from spoken audio?

Seems like it'd be a useful and comparatively doable problem to solve.

Train yourself not to do it. It's not that hard, and it will go a long way in improving your communication.

Record 30 seconds without ums. If you failed, do it again. Then increase the time. Stop if you fail to much/can't concentrate, try again tomorrow. Recording yourself is the perfect opportunity to train.

Like @ndh2 has stated, train yourself to not do it. Otherwise, your spoken audio files will be fine, but your conversations in team meetings over webex or conference calls will still have it, and it would be annoying everyone else (if it's a lot) and you wouldn't know about it because no-one is going to tell you.

Also, if you start to edit the ums out, you will quickly get tired of wasting time on doing this, and would train yourself to not do it yourself. I went through this exercise after recording youtube screencasts that are 5 to 10 mins long, and wasting about 30 minutes editing out my ums and ahems.

This is good advice, but one question: why is the default assumption here that I'm the only person I ever record?

I'm pretty good at not um-ing too frequently (20 years of public speaking will do that), but I can't exactly require all my guests for podcasts or interviews, for example, first rigorously train themselves for months!

> why is the default assumption here that I'm the only person I ever record?

Because your question was in response to OPs statement regarding screenrecording, and in that, OP is talking about video and audio for recordings he/she does, not of group meetings.

> Whenever I need to document a particularly complex task or procedure, I record a 10 mins screencast and explain the process + show the steps

Source: OP.

Total digression, but I participate in Toastmasters and there is a role in every meeting known as the 'Ah-Counter'. Every time someone uses a filler like um, ah, er, like, and, etc. they ring the bell to bring it to the speaker's attention. It supports individuals in being mindful about what they're saying and the fillers they are using.

There's something funny about contrasting this idea and yours but I'm having trouble putting it into words. Something about technology rendering solid communication skills obsolete in a subset of cases

Sounds like we need to combine both ideas and create an ah-counter for videos instead of an ah-remover.
'screen -x' is my favourite. Has been there for ages.
Slack for the noisy chat.

GitHub issues for taggable discussions.

Zoom.us for calls and beer hangouts.

Google Docs for collaborative writing.

Screenhero for pairing/reviewing together.

Screenhero is dead and I have not found a viable alternative yet.
Screenhero is in slack now, so... Pay up?
We paid for screenhero before they stopped charging. Last I heard, it was not as good as it once was now that it is part of slack. That aside, my work looked at going to slack and it was shot down vs staying with hipchat for a few reasons. Partly the cost of slack itself and partly the cost of chat bot rework (we have an unhealthy coupling of chat bots to hipchat that make it hard to migrate them to slack apparently). The bot(s) handle pr workflows, build jobs, internal service disruption comms, paging, and more.