Jake Gold
@jacob.gold
Infra eng leader, SF Bay Area. Helped launch and scale Bluesky. Prev: Nuro, Docker, Google, founder. Now working on human-centric AI. Obsessed with history, computers, and open systems. Happy to chat: bluesky@jacob.gold
created January 4, 2023
28,782 followers 3,272 following 3,602 posts
view profile on Bluesky Posts
Jake Gold (@jacob.gold)
Translation is cool but I’d pay $5-$10/mo for a “Pro” account that included just spell + grammar checking/correction on posts. I’m always posting quickly and skipping words. It would reduce the need for an edit feature. (really don’t want any kind of Pro badge or checkmark though)
Jake Gold (@jacob.gold) reply parent
Exactly. Communities done well will solicit/prompt users for content that currently goes entirely unposted.
Jake Gold (@jacob.gold) reply parent
That it's been a very long time and very obvious weaknesses in the Twitter product were never fixed. (I've got no beef with you or anyone else that may or may not agree with me)
Jake Gold (@jacob.gold) reply parent
Jake Gold (@jacob.gold) reply parent
Kinda my entire point…
Jake Gold (@jacob.gold) reply parent
We’re saying the same thing.
Jake Gold (@jacob.gold) reply parent
Okay you don’t understand something. I completely understand why you think they’re so incomparably different. I just think a good product update would convince you.
Jake Gold (@jacob.gold) reply parent
You say nobody when you mean yourself. Lots of people follow profiles on Reddit you just don’t know about it. The two apps are not fundamentally very different. Their functionality overlaps almost completely with different emphases. People use them in line at Starbucks in exactly the same way.
Jake Gold (@jacob.gold) reply parent
I’ve been on Reddit since it launched in 2005.
Jake Gold (@jacob.gold) reply parent
Every Reddit user profile is effectively a subreddit. Basically Twitter. Did adding video to Twitter make it YouTube? Did adding images make it Instagram? You’re confusing features with products. All of these social apps have many overlapping features and uses. They’re still distinctive apps.
Jake Gold (@jacob.gold)
First Lyft ride that smells like a Japanese taxi. Missing the 94 yo driver barely able to see over the hood driving like a bat out of hell but it’s still kinda nostalgic.
Jake Gold (@jacob.gold) reply parent
Are subreddits hashtags with extra steps?
Jake Gold (@jacob.gold) reply parent
I’m not dogmatic about the solution but I think a solution is necessary. I also think if it’s done well we’re not giving up anything we have now. Just adding something we don’t have. There’s no reason people can’t just post on their own profiles like they do now.
Jake Gold (@jacob.gold) reply parent
Of course? I would love Bluesky to be at least as successful as Reddit. Reddit is successful entirely because it has incredibly good retention. Twitter, and now Bluesky, have relatively poor retention.
Jake Gold (@jacob.gold) reply parent
Okay, maybe a little bit but not enough to be useful. Also, I'm definitely not interested in emulating the success of the Fediverse with Bluesky 😉
Jake Gold (@jacob.gold) reply parent
Jake Gold (@jacob.gold) reply parent
The issues were different/less crazy but the chaotic nature of Twitter was the same. No one really enjoys the disorganized chaos. Some just tolerate it better. One example: since Twitter launched users had been asking for a way to follow someone for only specific topics they were interested in.
Jake Gold (@jacob.gold) reply parent
So it's like an RSS reader? Weiiiiiiiiiiiiiird
Jake Gold (@jacob.gold) reply parent
You seem to think users will tell you how to evolve a product. That's not how it works. Users identify problems, often in confusing ways, and then you (as the app developer) develop solutions. Users are busy, don't know all the options, lack the necessary context, and it's not their damn job.
Jake Gold (@jacob.gold) reply parent
I'm much less interested in what twitter "was" than what it could have been, had it kept evolving. Twitter completely failed to achieve strong retention and mainstream adoption, the way Reddit/YouTube/Instagram did. There were posts like the following for a many years without any meaningful fixes:
Jake Gold (@jacob.gold) reply parent
I think the hashtag was a fun hack and did provide utility at the time. Lots of times these kinds of hacks/emergent behaviors are signs that a product is missing some good feature. Just like ad-hoc @ and RTs got turned into core features, so should have interest-based communities been productized.
Jake Gold (@jacob.gold) reply parent
Yes, anyone can built a new app that adds whatever functionality they want while incorporating any or all of the functionality that Bluesky already has. But, at least for now, Bluesky is the flagship atproto app with the flagship Bluesky mobile app, so adding it here is the highest impact move.
Jake Gold (@jacob.gold) reply parent
From your question it seemed like you were asking about the old days. Simple answer is that Twitter did a bad job with Communities. They didn't care or didn't understand what they were doing. It's easy to launch something that, on paper, sounds right but is way off. See: Google Video vs YouTube.
Jake Gold (@jacob.gold) reply parent
For anyone who doesn't get the reference:
Jake Gold (@jacob.gold) reply parent
Nah he's too much of a BitchX
Jake Gold (@jacob.gold) reply parent
The data is already served on a platter, it's just not as nice a platter as possible. The bad actors are often motivated by money so it's their job, and they'll jump through hoops. The good actors are often motivated by good intentions and working in their free time, so won't jump through hoops.
Jake Gold (@jacob.gold) reply parent
Yeah, exactly! Bluesky Social, PBC already runs the Relay and Jetstream which are ~100% of all events on the atproto network but the format and backfill is far from convenient.
Jake Gold (@jacob.gold) reply parent
Those people won't be deterred in any case. They manage to scrape the proprietary social apps (X, IG) very effectively which go through great lengths in trying to prevent it. atproto is designed to be a totally open network and it already is, so we just have to deal with the downsides of that.
Jake Gold (@jacob.gold) reply parent
That list is pretty long for me. If enough time passes I’m going to retire and do them all.
Jake Gold (@jacob.gold) reply parent
Yeah there is some kind of version of this already but it needs strong product support to flourish. Feeds could be enhanced to do it. They should probably play a role. But it’s probably just better to make an explicit thing to create the exact experience we need.
Jake Gold (@jacob.gold) reply parent
Jake Gold (@jacob.gold) reply parent
I think the Twitter product was good enough to compete until 2012 or so. And by then SMS wasn’t popular and they could have abandoned it and its limitations safely. I think namespaces e.g. sub-Twitters was the obvious and correct solution. For same reason subreddits made Reddit so sticky.
Jake Gold (@jacob.gold) reply parent
Yeah, I wouldn’t try to use hashtags as communities. That’s not what Reddit did either. Hashtags were an interesting hack but too minimal to solve the communities problem we had on Twitter and have inherited with Bluesky.
Jake Gold (@jacob.gold)
Someone should launch a free+paid service that provides snapshots of the atproto network. Full/monthly/weekly/daily/hourly in super convenient formats, fully hydrated JSON, SQLite, etc. There's probably some actual money to be made by offering this and it would certainly help the network grow.
Jake Gold (@jacob.gold) reply parent
Yeah, good idea, I'll definitely put more effort into explaining the rationale behind all the decisions. And maybe I'll make it easy to optimize for different trade-offs with "profiles" or something, but will have to think about it more.
Jake Gold (@jacob.gold) reply parent
I'd definitely be interested in your thoughts.
Jake Gold (@jacob.gold) reply parent
Yup, just run the different services on different ports (be sure to bind to localhost!) and have Caddy reverse proxy different domains to localhost:. (I do usually a dedicated VPS per service just to limit the blast radius and because ~$6/mo is often worth it to me)
Jake Gold (@jacob.gold) reply parent
Look at #linux or #golang (two topics I find interesting). They're far less interesting than r/linux or r/golang because they're totally unmoderated and generic. Hashtags have no culture. So hashtags just don't solve the problem. They're not fit for function. Anyway, have a good day Mike!
Jake Gold (@jacob.gold) reply parent
My claim and prediction is that desire for hashtags pointed at a real need in the core product experience but one that hashtags utterly failed to solve. Call subcommunities “Super Hashtags” if you want but we need to solve this unsolved problem for Bluesky to thrive.
Jake Gold (@jacob.gold) reply parent
Yeah hijacking hashtags could work but atproto records are easily extended. There might be better ways of doing this too but I’d want to avoid introducing any totally new component for it.
Jake Gold (@jacob.gold) reply parent
Thanks! My attitude is that you’ve got to handle SIGTERM and SIGINT properly in any case. There’s no excuse not to because it’s the only way to do fully graceful deployments. If your app gets SIGKILL’d you’re going to lose whatever transactions are in flight anyway. I probably should document it!
Jake Gold (@jacob.gold) reply parent
This is what Twitter was like when I started using it and it was a “pure” microblogging platform. It didn’t even have asymmetric Follows or Likes, or RTs, or at mentions, Lists, embedded photos or videos, etc. It was improved by adding things and then it started stagnating and usage declined.
Jake Gold (@jacob.gold) reply parent
Microblogging is just a generic term for tweeting. It doesn’t define any specific product. It didn’t define Twitter, which changed many times and added many things that were not strictly “necessary” but made the app better. Forums don’t need subforums either but it made big ones much better.
Jake Gold (@jacob.gold) reply parent
There are still web forums running since the early 2000s. That’s great and if they’re happy that’s a good thing. But I want atproto and Bluesky to fix social media for billions of people, so it no longer deranges our societies just to extract maximum ad revenue.
Jake Gold (@jacob.gold) reply parent
Yeah it’s like hashtags but fundamentally different. Forums have had categories or “sub forums” since the 80s which were far more useful than hashtags ever were. Hashtags didn’t work on Twitter precisely because they didn’t have an owner/moderators, rules, descriptions, FAQs, look and feel, etc.
Jake Gold (@jacob.gold) reply parent
Yeah, backward compatibility is a big part of it. SQLite also runs on a very wide range of environments from embedded to large servers, which makes optimal defaults pretty difficult. There’s also some Go specific things to worry about because Go programs tend to be highly parallel. Gets messy!
Jake Gold (@jacob.gold) reply parent
So not AppViews or anything, just more atproto records in repos! When you create a post for a subcommunity, you would declare that that post is intended for that subcommunity, etc. Maybe there's a better way to do this but I think this would probably work well.
Jake Gold (@jacob.gold) reply parent
One of the things that is a bit awkward about the atproto architecture is where to place "shared" things since everyone has their own repo and that's all they can touch. I'd be inclined to let people create "subcommunity" records that declare moderators, etc. So there would be a single "creator".
Jake Gold (@jacob.gold)
@sweetbee.vip was "Bsky's first OF girl" and I remember people being very excited (ahem) that the platform even seemed worth joining for her. She's been a great presence on the app since before it launched!
Jake Gold (@jacob.gold) reply parent
We’ve got that over here too! 😆 But if you’re happy over there I’m genuinely happy you have a place. Also happy if we can still chat across networks.
Jake Gold (@jacob.gold) reply parent
Oh I think I mean that the replies don’t work because the Mastodon users have to opt in to the bridge right? Could not be more impressed and happy with the work you guys have done. It’s actually the best “code not arguments” solution possible. 🙏
Jake Gold (@jacob.gold) reply parent
But there are far more real interactions on Bluesky? That's what those numbers show.
Jake Gold (@jacob.gold) reply parent
We have pure revchron feeds on Bluesky...we have any kind of feed we want!
Jake Gold (@jacob.gold) reply parent
Agree it's cool and the work on @ap.brid.gy is amazingly well done and very good for the world. But worth pointing out that I can't actually the snarky replies to my post coming from mastodon.social because the Fediverse is violently opposed to open networks...
Jake Gold (@jacob.gold) reply parent
Sure, it's not the end-all-be-all but it's a very useful way to gauge adoption. When I checked recently it seemed like the Fediverse has less than 10% of Bluesky's usage. The Fediverse is 7+ years older than Bluesky. Which I assume explains the bitterness from @gargron.mastodon.social.ap.brid.gy
Jake Gold (@jacob.gold) reply parent
We need subcommunities so those fandoms can thrive! It's just impossible to make them happen when there's no real "place" for them and it's diluted across everything else.
Jake Gold (@jacob.gold) reply parent
Bluesky should be sending out ~1 billion emails a month by now. It was the last thing I was about to work on before I left and I have to just assume everyone is too busy to get it done. Or maybe they're waiting to do it when more progress on retention has been made. Not sure!
Jake Gold (@jacob.gold) reply parent
Depends of course on what one means by "dying" but it's certainly not thriving, at least in the way many people hoped it would. Bluesky also has a long way to go but it's doing much better in almost any measurable way.
Jake Gold (@jacob.gold) reply parent
Yup. But the good news is that it is a long-term game and there's many chances remaining. But the faster the better. There's a real chance at improving social media by changing the incentives that have caused it to derange the entire world.
Jake Gold (@jacob.gold) reply parent
In my opinion, the big strategic thing to do is add subcommunities. But there are lots of important tactical things to do! A big one is to start sending out daily/weekly digest emails to help "reactivate" users that simply forgot about the app. With one-click unsubscribe so people aren't annoyed.
Jake Gold (@jacob.gold) reply parent
You can almost always feed them a custom prompt with all the docs and code examples to fix that kind of thing, if it's worth the effort. But yeah, there's a lot to be said with using what's popular for this and other reasons. I tend to be conservative on this stuff when writing code for work.
Jake Gold (@jacob.gold)
I'm so much less concerned about Bluesky's decentralization than I am with its continued growth+engagement. atproto network is already fully open with a protocol designed to lock it open. As with the internet, decentralization will come with scale. Fediverse is in serious risk of outright dying..
Jake Gold (@jacob.gold) reply parent
They're interesting and I've played with them but haven't found a case where I actually need them for any reason, at least so far. If I had to avoid a CGO dependency, I'd probably try the zombiezen/go-sqlite library because it uses modernc.org/sqlite and I do like some of the ideas from crawshaw.
Jake Gold (@jacob.gold) reply parent
@avi.im even though that post turned out to not be quite right it reminded me that I wanted to post this. So thanks! There's so many subtle issues to consider with databases!
Jake Gold (@jacob.gold)
Even though I've used Go + SQLite for many years, I still find myself wasting time on new projects. Trying to solve this problem with a transparent attempt at employing Cunningham’s Law to solicit feedback/corrections from anyone who knows better. Hopefully I'll end up with a nice little library!
Jake Gold (@jacob.gold) reply parent
did:plc should be run by an independent consortium ASAP which solves this problem in practice. And it should IMHO also be upgraded or replaced with something decentralized, at least to the degree DNS root servers are. And more DID methods should be supported.
Jake Gold (@jacob.gold) reply parent
Or you’re wrong…
Jake Gold (@jacob.gold) reply parent
I've always thought there would be something really special about Bluesky showing users (with a nice dedicated screen + visualization or something) that all of their data was already on their phone and in their direct control.
Jake Gold (@jacob.gold) reply parent
Yeah, those are very valid concerns. A standalone app could help prove out some of technical stuff (especially key management). Maybe the Bluesky app could start by doing something entirely safe, like just syncing your public repo data and letting you export it as a CAR file off your phone. 🙏
Jake Gold (@jacob.gold) reply parent
Problem w/separate app is the "power of defaults". Much harder to organize a mass rebellion if users have to download an app vs tapping Settings -> Provider -> Migrate. IMHO Bluesky ethos is to make user rebellions easy 😉 But a standalone app is important regardless and a great way to start!
Jake Gold (@jacob.gold) reply parent
On second thought, maybe it's just too controversial and this is the best we can do in the short-term. It's a great idea. I'd definitely chip in a few bucks.
Jake Gold (@jacob.gold) reply parent
That's actually already a problem, for the same reason that you can backdate a blog post on your own web site: you're the one setting the timestamp. The solution has been for AppViews (which provide an API to an app) to record the timestamp that they first saw a post on the network and trust that.
Jake Gold (@jacob.gold) reply parent
Could also be a beautiful product feature, done well. But I've never questioned your motives on this topic just disagreed about the priority, which I can genuinely see the other side of. Ultimately it'll get sorted out as Bluesky grows and independent clients develop their own infra. 🙏
Jake Gold (@jacob.gold) reply parent
Agreed, but I think it hints at a vulnerability that's exists and could be far more damaging in the future. Having sync + migration in the Bluesky app would create much more incentive for others to launch alternative PDS+AppView infra, by making switching easy instead of ~impossible for most users.
Jake Gold (@jacob.gold) reply parent
It's exactly what we need. But why not crowdfund having this added to the open source Bluesky app that almost everyone already uses? github.com/bluesky-soci...
Jake Gold (@jacob.gold) reply parent
Particularly in the (unlikely) event of the wrong people taking control of the org. There's some recourse but nothing as good as letting everyone switch to the settings screen and "one tap" migrate completely away.
Jake Gold (@jacob.gold) reply parent
Any independent entity with some technical chops and money can create an AppView today. It's not overly difficult. But without the app that 99% of users supporting migrating to another PDS (which can force its own AppView, if it wants) there's no way to mass migrate off Bluesky Social, PBC's infra.
Jake Gold (@jacob.gold) reply parent
Yeah, exactly. Right now your PDS has a copy of your data and the Bluesky app could keep a copy on your phone too. Which would make it easy to switch to a new PDS even if your old PDS is uncooperative/down/etc.
Jake Gold (@jacob.gold) reply parent
Yup, it's such an important part of atproto/Bluesky. It's half the reason atproto was created! The ActivityPub-based Fediverse completely missed this critical feature and still hasn't successfully copied it, which I wish it would. I'll be very excited when the Bluesky app to finally utilizes it.
Jake Gold (@jacob.gold) reply parent
There are other (maybe incomplete?) AppViews already and it's also already possible to use alternatives. This was always the plan. There are "bans" at various levels (PDS, client, AppView, moderation labelers) so it can get complicated to discuss scenarios but syncing can ultimately solve them all.
Jake Gold (@jacob.gold) reply parent
This is already possible for technical users but the Bluesky app doesn't have this + PDS migrations built in yet. It was discussed extensively when I was on the team but never prioritized for reasons unknown to me. IMHO, it should be added ASAP and enabled by default. github.com/FiloSottile/...
Jake Gold (@jacob.gold) reply parent
All your Bluesky data (posts, likes, follows, etc) are contained in a single file sitting on a Personal Data Server (PDS) in the cloud. The Bluesky app could actively sync that file to your phone. Then if you want to switch hosting providers, the app just syncs it to the new provider in a few min.
Jake Gold (@jacob.gold) reply parent
The network would just be down for hours/days until new AppView(s) come online. The only reason there aren't other large AppViews yet is: 1) There's no real incentive because Bluesky Social, PBC does such a great job 2) Network isn't quite big enough yet to have serious "competition" dynamics
Jake Gold (@jacob.gold) reply parent
I pray this incident will bump the priority of the Bluesky app syncing data to the phone and “one tap” PDS switching. Nothing would do more to educate users and quiet the haters.
Jake Gold (@jacob.gold) reply parent
This issue with Mississippi is already easy to route around with Bluesky but we should be prepared for worse. Everyone having their data on their phones makes it damn near impossible for anyone to stop us from having a functional network one way or another. It’s maximal decentralization.
Jake Gold (@jacob.gold) reply parent
Why will syncing prevent blocking/deleting? Because if your repo is on your phone you can just sync it to any other PDS in minutes. Data portability is one of the big things the Fediverse got wrong and atproto got right. Syncing works today but hasn’t made it into the app yet so few users do it.
Jake Gold (@jacob.gold)
Eugen could personally block/delete ~25% of active Fediverse users at any moment and they would have no recourse. Handful of other admins could block/delete another 50%+ When the Bluesky app finally supports syncing to the phone, no one can block/delete any Bluesky users under any circumstance.
Jake Gold (@jacob.gold) reply parent
There are ways you could make it so certain feeds pick up certain posts but to do subcommunities well needs UI support/other features anyway. Subcommunities should take advantage of feeds. A subcommunity could have default and pinned feeds to provide different “views” instead of just diff sorting.
Jake Gold (@jacob.gold) reply parent
Feeds are cool but aren’t a substitute for real subcommunities. Can’t post into them or style them or moderate them etc. They could be upgraded but probably easier to just create a new thing.
Jake Gold (@jacob.gold) reply parent
would
Jake Gold (@jacob.gold)
What the overly paranoid part of my brain thinks is going on when I mumble OTP passcodes to myself.
Jake Gold (@jacob.gold) reply parent
APIs don't have feelings, they're just advanced autocomplete for direct access.
Jake Gold (@jacob.gold) reply parent
It wouldn't be surprising if Elon had his own secret bot team that's juicing all the numbers and tilting things in the direction he prefers. So the cracking down here would be on *other* people's bot networks, and in fairness, most of those will be money-making spammers.
Jake Gold (@jacob.gold)
Elon: we have the most powerful AI on the planet, it can do literally anything, no one can even touch us. Also Elon: we need developers to pay to access our API because we can't stop bots from liking posts.
Jake Gold (@jacob.gold) reply parent
When it's a viable and sane choice, I find Go to be the most powerful + productive language available today. Most of the time that's what I care about more than anything else. Some other languages are more powerful. Some are more productive. None are more powerful+productive.
Jake Gold (@jacob.gold)
Selfishly, I want Go to be popular enough that it's widely supported but unpopular enough that as few of my competitors take advantage of its productivity and power as possible. My hot take is that *most* of the divide with Go is between the inexperienced+overconfident and the experienced+humbled.
Jake Gold (@jacob.gold) reply parent
Someone is wandering around a parking lot in LA frantically pressing their out-of-range key fob.
Jake Gold (@jacob.gold) reply parent
I've never felt it was strictly necessary, just precautionary. Because some people have never spent a few seconds considering the fact that just typing certain commands on a computer at work could result in prison time. I'd rather them consider this *before* doing something impulsive.
Jake Gold (@jacob.gold)
In my role, I'm always in a position of extreme trust with company systems and data. Absolutely *never* violated that trust, entirely due to my own code of ethics. When entrusting others, I find it helpful to point out (in a friendly way) that if ethics aren't enough, the fear of prison should be.
Jake Gold (@jacob.gold)
One of my favorite underrated movies is The Man From Earth (2007) David Lee Smith, Tony Todd, and John Billingsley are so good in it. More of a filmed play than a movie.