HN user

jtolds

1,141 karma
  github.com/jtolio
  m.olio.lol/@jt
  linkedin.com/in/jtolds
  jtolio.com

  storj.io
[ my public key: https://keybase.io/jtolds; my proof: https://keybase.io/jtolds/sigs/uDCvyjeMM1tXjf3jh_obXuYNnRS8gwMAPjTUY85To8Y ]
Posts37
Comments137
View on HN
www.jtolio.com 5mo ago

A "Pure Go" Linux Environment, Written by Claude, Inspired by Fabrice Bellard

jtolds
4pts1
www.storj.io 2y ago

Lensm, a tool for viewing disassembly

jtolds
156pts17
www.jtolio.com 3y ago

Just update rules between neurons

jtolds
3pts0
www.storj.io 4y ago

Lensm, a Tool for Viewing Disassembly

jtolds
10pts1
www.storj.io 5y ago

Storj – Technical Disclosures

jtolds
1pts0
thenewstack.io 5y ago

We Built an Open Source Drop-In Replacement for gRPC

jtolds
2pts1
www.jpost.com 5y ago

Genetic changes could be behind long terms Covid symptoms

jtolds
1pts0
storj.github.io 5y ago

DRPC: A full replacement for gRPC in under 3kloc

jtolds
10pts2
www.econlib.org 5y ago

Hsieh-Moretti on Housing Regulation: A Gracious Admission of Error – Econlib

jtolds
2pts1
arxiv.org 5y ago

Dissolving the Fermi Paradox (2018)

jtolds
1pts1
news.ycombinator.com 6y ago

Launch HN: Tardigrade–Decentralized Cloud Storage with Client-Side Encryption

jtolds
10pts4
medium.com 6y ago

Architecting a Decentralized GitHub Backup

jtolds
3pts0
arxiv.org 7y ago

A Generalised Solution to Distributed Consensus

jtolds
3pts0
storj.io 7y ago

(Proof-Of-) Replication Is Bad for Decentralized Storage, Part 2: Churn and Burn

jtolds
2pts0
medium.com 7y ago

A free and open internet is vital and is under siege

jtolds
12pts4
storj.io 7y ago

Replication is bad for decentralized storage, part 1

jtolds
7pts4
storj.io 7y ago

Storj releases 90 page v3 white paper

jtolds
36pts4
storj.io 7y ago

Open Source Revenue Models in the Cloud Era

jtolds
15pts1
github.com 8y ago

Git-treesame-commit: Create commits that match the file tree of another commit

jtolds
1pts0
www.infoq.com 8y ago

Metrics Collection from Large Scale IoT Deployments at Vivint

jtolds
1pts0
innovation.vivint.com 8y ago

Time-series histograms with Rothko – metrics collection for large deployments

jtolds
10pts1
goc.vivint.com 8y ago

Learn how to build and train a machine learning model from scratch

jtolds
31pts2
goc.vivint.com 8y ago

Learn how to implement Hindley-Milner type inference – Vivint's Game of Codes

jtolds
9pts0
goc.vivint.com 8y ago

Vivint's Game of Codes week long programming challenge ($20k in prizes)

jtolds
13pts1
innovation.vivint.com 8y ago

Introduction to Reed-Solomon and Berlekamp-Welch

jtolds
110pts27
www.jtolds.com 9y ago

Whiteboard problems in pure Lambda Calculus

jtolds
200pts41
www.jtolds.com 9y ago

Writing Advanced Web Applications with Go

jtolds
4pts1
github.com 10y ago

Monkit: Tracing and metrics library for Go

jtolds
5pts0
www.jtolds.com 10y ago

Go channels are bad

jtolds
298pts153
github.com 10y ago

Lecat: letsencrypt-enabled socat-lite – the easiest way to get ssl

jtolds
5pts0

I replied to your comment on my website, but for posterity here, yes, I do think you did a good job for the part about exiting when bestScore > 100. There's nitpicks, but this is fine! It makes sense, and nice use of a select over a send.

I did expect that this exercise would come after the first one though, and doing this on top of a solution to the first exercise is a bit harder. That said, I also don't mean to claim either are impossible. It's just tough to reason about.

Seriously! This caused such a ruckus when I posted this 9 years ago. I lost some professional acquaintanceships over it! Definitely a different reception.

the complaints about channels have largely been received and agreed upon by experienced Go developers. Channels are still useful but they were way more prominent in the early days of Go as a solution to lots of problems, and nowadays are instead understood as a sharp tool only useful for specific problems.

As the author of the post, it's really gratifying to hear that this is your assessment nowadays. I agree, and while I'm not sure I had much to do with this turn of events (it probably would have happened with or without me), curbing the use of channels is precisely why I wrote the post. I felt like Go could be much better if everyone stopped messing around with them. So, hooray!

Author of the post here, I really like Go! It's my favorite language! It has absolutely nailed high concurrency programming in a way that other languages' solutions make me cringe to think through (await/async are so gross and unnecessary!)

If you are intending to do something that has multiple concurrent tasks ongoing at the same time, I would definitely reach for Go (and maybe be very careful or skip entirely using channels). I also would reach for Go if you intend to work with a large group of other software engineers. Go is rigid; when I first started programming I thought I wanted maximum flexibility, but Go brings uniformity to a group of engineers' output in a way that makes the overall team much more productive IMO.

Basically, I think Go is the best choice for server-side or backend programming, with an even stronger case when you're working with a team.

Adding an atomic counter is absolutely a great solution in the real world, definitely, and compare and swap or a mutex or similar totally is what you want to do. In fact, that's my point in that part of the post - you want an atomic variable or a mutex or something there. Other synchronization primitives are more useful than sticking with the CSP idea of only using channels for synchronization.

Hi! No, I think you've misunderstood the assignment. The example posits that you have a "game" running, which should end when the last player leaves. While only using channels as a synchronization primitive (a la CSP), at what point do you decide the last player has left, and where and when do you call close on the channel?

When someone says "20 years of doom predictions haven't come true", I charitably assumed that claim was about scientific consensus predictions, but perhaps I can't assume that everyone shares knowledge of what that is.

So far, all data says that the climate scientists are dead on and have been very accurate: https://eps.harvard.edu/files/eps/files/hausfather_2020_eval...

What doom predictions from the last 20 years haven't come true? If someone says that doom hasn't happened yet, I guess what I want to say is that they haven't waited long enough.

I think the climate scientists are frustrated and giving up. https://www.nytimes.com/2022/03/01/climate/ipcc-climate-scie.... My initial link was an attempt to show where the Overton window is regarding the experts in this field, more than anything else. This comment is probably not the right place to bring someone up to speed with the climate science field when they can Google it themselves.

How can this be such a top-voted answer? What?

Without even going into the unsubstantiated assertion with #1, your comment on number 3 shows a dramatic misunderstanding of how compounding effects work. You can't use the last 20 years to linearly project like this. It is true that most scientists agree that humanity will likely not go completely extinct, but it is also true that most scientists agree that many, many individual humans will be impacted. It is tough to say just exactly how humans will be impacted, but think famine, war, major societal upheaval.

Here's a citation if it helps: https://academic.oup.com/bioscience/article/71/9/894/6325731

As a customer of Storj, this isn't something you'll need to worry about. We're integrated with Stripe and take credit cards and invoices. We will also take STORJ token if you want.

If you are looking to provide storage space to the network as a storage node operator, then your nearest reputable exchange should do the trick.

Certainly there are differing opinions about cryptocurrency in general.

In terms of "does the math work", you're absolutely right that charging $7/TB and paying $20/TB to our storage node operators is not sustainable. But it shouldn't be a surprise that this was an intentional early subsidy to grow the supply side of the network. In an open system like ours, you see these business dynamics, whereas you might just not see them otherwise.

To be fully transparent, we are working to reduce that subsidy now that we're hitting scale. You can see some of our conversations with our storage node operator community about this on our forum: https://forum.storj.io/t/announcement-changes-to-storj-node-.... You can also see full network stats here: http://stats.storjshare.io/

Storj + Fastly is genuinely a pretty good combo. There are certainly some things Fastly does that we don't do (besides being more specifically a CDN, they also have compute@edge, etc). We have a good relationship with Fastly (e.g. https://docs.fastly.com/en/guides/log-streaming-storj-dcs)

But yeah, I don't know how the Nix Foundation is getting their Fastly traffic paid for, maybe that's in/out of scope. Certainly they should keep Fastly if it makes the overall thing cheaper. Having a distributed origin (us) to dedicated edge cache (Fastly) makes for a strong distribution story.

Cloudflyer (https://www.cloudflyer.io/) offers free migrations from S3 to Storj. Storj is $4/TB/mo, $7/TB egress. It's decentralized storage, so the base functionality has CDN-like performance (no Cloudfront needed), and you don't need to pay extra for multiregion redundancy.

I jumped on the Nix Foundation Matrix to try and help them directly, but for anyone reading this thread, Storj might be able to cut a zero off your storage costs. Check us out!

Full disclosure - I work for Storj. https://www.storj.io/

Python Programming for the Absolute Beginner (https://smile.amazon.com/Python-Programming-Absolute-Beginne...) has you make a game at the end of every chapter with the concepts you've learned so far. I've bought this book for a number of people, though perhaps Automate the Boring Stuff with Python: Practical Programming for Total Beginners (https://smile.amazon.com/gp/product/1593275994/) is better if you don't want to make games.

Hi Jim!

For our hosted S3 Gateway (called the Gateway MT), we have more details about how it works on this page: https://www.storj.io/disclosures, in the section titled "Encryption for Gateway MT"

The summary is that while the S3 gateway does have temporary access to unencrypted data during transit by protocol necessity, the S3 gateway does not keep the keys necessary to do this outside of the context of a request.

HashBackup is also great!

Hey! Chief Architect at Storj here.

Data on Storj is by default end-to-end encrypted with keys only the data owner controls (with optional support for sharing features). Only the data owner can decide who to share the keys with and who can see the data. Put another way, Storj can’t access data without the data owner sharing keys and access!

However, if the owner shares the encryption keys and provides access to others, it can be further distributed by others. Storj does not allow illegal content per our terms of use and conditions. If someone has stored potentially illegal content and shared it with others, law enforcement may seek to obtain information by way of a subpoena, warrant, or other legal process. As you probably know since you're reading this thread, often such inquiries are confidential and the recipients may be prohibited from disclosing their existence.

If you're interested in our encryption and security design decisions, there are a lot more details over at https://www.storj.io/disclosures. Glad you're all paying such detailed attention!