Skip to content

Instantly share code, notes, and snippets.

Greasing the Skids: Building Remote Teams

In the wake of the virus that-must-not-be-named (which most people misname anyway), it seems like everyone and their cat has posted some sort of opinion or how-to on making remote work, work. This is a good thing! Working remotely, particularly full-time, is hard! I've done it for my entire career (aside from an odd 14 month office period in the middle that we shall not speak of), but more relevantly, for the past two years I've been responsible for building, managing, and enabling an entirely remote team, distributed across nine timezones. Remote teams don't just happen by installing Slack and telling everyone to work on their couch: they require a lot of effort to do correctly and efficiently. But, done right, it can be a massive multiplier on your team efficiency and flexibility.

Here's how we do it. I'm going to attempt to structure this post more towards management than engineering, and so I apologize in advance if I assume terminology or knowledge which

How to GPG as a Scala OSS Maintainer

tl;dr Generate a GPG key pair (exercising appropriate paranoia). Send it to key servers. Create a Keybase account with the public part of that key. Use your keypair to sign git tags and SBT artifacts.

GPG is probably one of the least understood day-to-day pieces of software in the modern developer's toolshed. It's certainly the least understood of the important pieces of software (literally no one cares that you can't remember grep's regex variant), and this is a testament to the mightily terrible user interface it exposes to its otherwise extremely simple functionality. It's almost like cryptographers think that part of the security comes from the fact that bad guys can't figure it out any more than the good guys can.

Anyway, GPG is important for open source in particular because of one specific feature of public/private key cryptography: signing. Any published software should be signed by the developer (or company) who published it. Ideally, consu

{"access_token":"mytoken"}
1 2
3 4
[{"fairings":null,"links":{"patch":{"small":"https://images2.imgbox.com/fc/58/9UErD3ut_o.png","large":"https://images2.imgbox.com/12/47/6uim8L1a_o.png"},"reddit":{"campaign":"https://new.reddit.com/r/spacex/comments/bd2l28/crs17_launch_campaign_thread/","launch":"https://www.reddit.com/r/spacex/comments/bjsn0v/rspacex_crs17_official_launch_discussion_updates","media":"https://www.reddit.com/r/spacex/comments/bkc4d5/rspacex_crs17_media_thread_videos_images_gifs","recovery":"https://www.reddit.com/r/spacex/comments/bjy7p5/rspacex_crs17_recovery_discussion_updates_thread"},"flickr":{"small":[],"original":["https://live.staticflickr.com/65535/46856594435_206c773b5a_o.jpg","https://live.staticflickr.com/65535/47720639872_284e49381d_o.jpg","https://live.staticflickr.com/65535/46856594755_88f1b22e50_o.jpg","https://live.staticflickr.com/65535/47720639542_1b7c1a71b0_o.jpg","https://live.staticflickr.com/65535/47720639732_e04b2a9ed7_o.jpg","https://live.staticflickr.com/65535/32829382467_087d024428_o.jpg"]},"presskit"
curl -X POST -H "Content-Type: application/vnd.precog.destination; version=1" -d "{\"name\": \"sqlserver precogtest schema foo create\", \"type\": {\"name\": \"sql-server\", \"version\": 1}, \"config\": {\"schema\": \"foo\", \"writeMode\": \"create\", \"connection\": {\"jdbcUrl\":\"jdbc:sqlserver://localhost:1433;user=SA;password=%3CYourStrong%40Passw0rd%3E;database=precogtest\"}}}" "http://localhost:55932/api/destination/"
curl -X POST -H "Content-Type: application/vnd.precog.destination; version=1" -d "{\"name\": \"sqlserver precogtest schema foo create\", \"type\": {\"name\": \"sql-server\", \"version\": 1}, \"config\": {\"schema\": \"foo\", \"writeMode\": \"create\", \"connection\": {\"jdbcUrl\":\"jdbc:sqlserver://localhost:1433;user=SA;password=<YourStrong@Passw0rd>;database=precogtest\"}}}" "http://localhost:55932/api/destination/"
curl -X POST -H "Content-Type: application/vnd.precog.destination; version=1" -d "{\"name\": \"sqlserver precogtest schema foo create\", \"type\": {\"name\": \"sql-server\"
{"foo":"name1"}
{"foo":"name2"}
{"foo":"name3"}
{"outputdata":"aa"}
{"outputdata":"bb"}
{"outputdata":"cc"}
{"outputdata2":"a2"}
{"outputdata2":"b2"}
{"outputdata2":"c2"}