HNHacker News
TopNewBestAskShowJobs

cdoxsey

3,151 karma · joined June 7, 2011

submissionscomments
cdoxsey··on Ask HN: What has your work taught you that other people don't realize?
That almost all software is unreliable and SaaS products only work because there are engineers behind the scenes fixing it all the time.

The Wizard of Oz nails it:

"Pay no attention to that man behind the curtain"

https://youtu.be/YWyCCJ6B2WE

cdoxsey··on A Response to Hello World in Go
I don't think this is a fair summary of what I said.

These were my points:

1. Performance improvements of interactive programs below a certain threshold are imperceptible and therefore of negligible value.

2. A minimalistic program does not always lead to better performance.

3. Compilation involves trade-offs and binary size and the number of syscalls executed are not the only things that matter.

4. The syscalls emitted by these programming languages are there for a reason and provide significant value to developers and users.

I nowhere stated that memory was cheap, but I agree that CPUs are fast.

As for latency, quibble with the numbers, but I don't think a user will ever notice the few hundred microseconds difference between the Go version and the ASM version.

> But that's beside the point, which is that all these programs are doing a lot of things you didn't ask for and take megabytes to do that.

Yes. And it both doesn't matter and optimizing them away has drawbacks.

Theoretically the points in the original article could matter - writing a very simple tool with Electron for example. But the example given wasn't anything like that.

cdoxsey··on Ask HN: A New Decade. Any Predictions?
I think there's a lot of hype around Tesla and that it's not a particularly well run company. Eventually the hype dissipates and fundamental issues show themselves.

I kinda think any other car company could make the cars Tesla does more efficiently.

But then again who knows :).

cdoxsey··on Ask HN: A New Decade. Any Predictions?
One more:

1. The advent of an artificial womb will toss a wrench in the abortion debate

cdoxsey··on Ask HN: A New Decade. Any Predictions?
Here's some

1. Civil war in China

2. A new, significant non iOS/Android OS in mobile

3. Uber/Lyft will gradually shift to a unionized, national taxi company

4. Nothing significant will be done about Climate Change, and it won't matter. Some new environmental issue will be talked about instead.

5. A third political party will become significant in the US

6. There will be a major Christian missionary movement from the global south to Europe

7. VR gaming won't be much of a thing (ie like 3d movies)

8. Tesla will go out of business

9. Commonplace purchases will increasingly be made with point-of-sale loans and/or monthly leases. This will increase economic disparity (rich people will buy stuff / get better rates, poor people will rent things / can never get ahead)

10. Software development will still be a relatively specialized, niche field, with most people not knowing much about it. It won't be more "diverse"

11. Health insurance, higher education, housing and tax preparation will all still be crazy complex and expensive in the US

12. You'll finally be able to pump your own gas in New Jersey

13. Most churches will lose their tax exempt status

14. Texas will have more people than California

cdoxsey··on Ffsend – Share Files from the CLI: A Firefox Send Client Written in Rust
You could use https://github.com/rtctunnel/rtctunnel to setup a proxy over webrtc.
cdoxsey··on Grumpy Website – a blog about everything wrong with modern web & tech
This issue happens in so many places. About to press a button on a page and suddenly something loads up top and the page shifts 50px.
cdoxsey··on I moved my sites from Google Kubernetes Engine to Netlify and saved $1000 / year
$1,000/yr is definitely excessive. You can have managed Kubernetes for ~ $100/yr from Google or (recently) Digital Ocean using smaller instance types.

The point about maintenance is a good one if you're running purely static sites. K8s has a steep learning curve, though FWIW I think its probably easier than systemd and standard unix administration + puppet/chef/ansible/etc.

cdoxsey··on 2020 Cloud Report: AWS vs. GCP vs. Azure
Meltdown and Spectre did a real number on the c5 and m5 instance types.

Amazon's original fix reduced performance substantially, which lot's of people noticed, but no one knew why till the vulnerabilities were announced.

Meanwhile Google built a clever workaround which minimized the pain. It was really a mic-drop moment from Google and I wish someone would dig in deep and tell the whole story.

At this point I'm sure AWS has merged Google's patches, but it showed how much Google was investing in their GCP offerings.

cdoxsey··on Uber is dropping rates for drivers down from 80 cents/mile to 60 cents/mile
I'm paying the person I received the service from. Me handing someone extra cash is neither unfair nor unethical.

If you feel like Uber is doing something wrong there's a trivial solution. Just pay your driver more.

Sure it doesn't solve Uber's problems, it doesn't change the behavior of anyone else, but it does solve your personal culpability. (If you feel you have such culpability)

cdoxsey··on Uber is dropping rates for drivers down from 80 cents/mile to 60 cents/mile
Lyft and Uber allow you to tip your driver. If you feel like they're not payed a sustainable wage, why not voluntarily give them more money?

I suspect a significant number of riders are pretty well off. Why not be exceedingly generous? Tip the driver 10 or 20$.

cdoxsey··on Ask HN: Best Alternative to TravisCI?
We recently did a switch to buildkite.com. It's a bit unusual in that its a cloud-based UI attached to agents running on your own infrastructure. If that's an option, it may be worth a look (they do provide a cloudformation template for AWS)

Featurewise:

- good support for updating status in github

- haven't tried Jira

- it supports artifacts which can be stored in s3

- you can use docker to build most programming languages and there are plugins for some functionality

- you can also install additional things on your worker nodes which could be available when you run your build

All in all its probably less-featureful and will require a bit more setup, but it gives you more control.

I have also used Google's cloudbuild for personal things and like it OK. It uses cloud-builders: https://cloud.google.com/cloud-build/docs/cloud-builders. If you set it up right its pretty fast.

cdoxsey··on Senators ask why vendors sell voting machines with ‘known’ vulnerabilities’
> Voter ID laws were designed explicitly to suppress minority votes and have been struck down time and again by the courts. They were not designed to solve a legitimate issue, because there is no evidence that rampant voter fraud exists in the US[0].

That is not what motivates many people who care deeply about this issue. Its partisan spin used to malign a contrary view. Believe it or not many Republicans are not racists hell-bent on denying minorities the right to vote. I know it seems impossible, but some Republicans even are minorities.

> What does exist, however, are coordinated ballot-harvesting efforts designed to unduly influence the outcome of elections, as was witnessed in NC-9 in this past election. But again, the GOP doesn't seem to be very concerned about this specific issue.

A lot of Republicans in California complained about ballot harvesting.

FWIW I agree that voter fraud not a major problem. And neither is vote hacking.

Both sides play footsie with these issues and its dangerous as it undermines the credibility of the system as a whole. If you believe elections are stolen or democracy is dead, then the American government is illegitimate. How long till we're advocating ignoring its laws, or overthrowing the regime.

Another civil war is the last thing we need in this country.

A slightly corrupt system that we collectively pretend is pristine is far better than the alternative.

cdoxsey··on Senators ask why vendors sell voting machines with ‘known’ vulnerabilities’
Its not true that "that only one of the two major American political parties is even feigning interest at fixing what is clearly a vulnerable system".

Apparently some Republicans support this bill. I bet there are some Democrats that don't support the bill.

Partisan reductionism presents an overly simplistic view of a complex phenomena.

And bills don't represent ideology anyway. They often have unintended consequences. Politicians might be interested in fixing a "vulnerable system" while rejecting a particular bill for some other reason. For example: Voter ID.

cdoxsey··on Senators ask why vendors sell voting machines with ‘known’ vulnerabilities’
This isn't true.

The Secure Elections Act was introduced by a Republican: https://www.congress.gov/bill/115th-congress/senate-bill/226....

cdoxsey··on Working for a startup makes less sense, unless you are into the mission
Working for a startup absolutely makes sense.

The unstated assumption here is that you have a pile of offers from Amazon, Google, Microsoft, etc along with some from startups and you have to make a decision about which to go with.

I suppose my experience might be unusual, but I don't think that's typical. You've got an offer on the table, and your choice is to go with it, or reject it and hope you're given an offer by some other company.

I've seen it go both ways. Maybe the next week you do see the better offer. Or maybe 3 months later and a few dozen rejections later you've got nothing to show for it.

So you take what you're given.

cdoxsey··on Yes, Python Is Slow, and I Don’t Care
Except it doesn't scale. Amazon, Google and Netflix (the companies referenced before this quote) can't run their applications on a single machine. Distributed programming is unavoidable at scale.

Also there's a big difference between throughput and latency. Networking might introduce a longer delay than a CPU call, but if each one of those calls does significantly more work, the overall performance of the system can increase.

cdoxsey··on Descartes was wrong: ‘a person is a person through other persons’ (2017)
> Accepting that others are vital to our self-perception is a corrective to the limitations of the Cartesian view.

This brought to mind John Calvin's Institutes. In the first chapter he suggests that knowledge consists primarily of two parts: knowledge of self and knowledge of God, and oddly, the best way to know oneself is to know God:

> If, at mid-day, we either look down to the ground, or on the surrounding objects which lie open to our view, we think ourselves endued with a very strong and piercing eyesight; but when we look up to the sun, and gaze at it unveiled, the sight which did excellently well for the earth is instantly so dazzled and confounded by the refulgence, as to oblige us to confess that our acuteness in discerning terrestrial objects is mere dimness when applied to the sun. Thus too, it happens in estimating our spiritual qualities. So long as we do not look beyond the earth, we are quite pleased with our own righteousness, wisdom, and virtue; we address ourselves in the most flattering terms, and seem only less than demigods. But should we once begin to raise our thoughts to God, and reflect what kind of Being he is, and how absolute the perfection of that righteousness, and wisdom, and virtue, to which, as a standard, we are bound to be conformed, what formerly delighted us by its false show of righteousness will become polluted with the greatest iniquity; what strangely imposed upon us under the name of wisdom will disgust by its extreme folly; and what presented the appearance of virtuous energy will be condemned as the most miserable impotence.

In particular the concept of the Image of God has profound consequences for the way you think about dignity and human personhood.

I recently watched Won't You Be My Neighbor, the documentary about Fred Rogers, and was struck by the way he treats an interacts with people, not as means to some end, but as ends in themselves, with real dignity and respect.

It was counter-cultural at the time, but boy is it strange now. It feels like everything is outrage and disingenuousness. We treat people like tokens of their tribe, with pure contempt and toss them aside like their worthless and inhuman.

Maybe Calvin was on to something.

cdoxsey··on Firefox Send: Free encrypted file transfer service
https://file.pizza/
cdoxsey··on The State of Caching in Go
> Thus, they don't tend to mature more than the specific use case they get written for, provided they are still being maintained.

This is all a bit abstract. There are plenty of go libraries which are suitably mature for production use. For example Google's cloud libraries or Amazon's AWS libraries. There's a platform for communication of issues and releases: Github. I guess I haven't really had an issue with it... The only problem I've had is the messiness of versioning, but there's been solutions to that for a long time (godep, govendor, glock, etc...)

> To the second point about per-thread caching, Go does not expose threads to end-users. So, there's no concept of thread-local. What you're describing results in lock striping, which has contention issues as described in the post.

Sorry for the confusion. I did not mean thread-local variables. I meant breaking up your workload across mutiple goroutines so that you don't have to use shared state.

For example suppose you receive a message with an org ID. You start 8 workers, all data for (id % 8 == 0) goes to worker 0, (id % 8 == 1) goes to worker 1, and so on.

Each worker maintains a local map of data and no mutex is needed to coordinate access, because only one goroutine can use the data at a time. So there's no lock-striping and no contention issues.

This is the recommended approach for Go concurrency:

> Do not communicate by sharing memory; instead, share memory by communicating.

I understand that this sort of approach doesn't work for every problem, there's not always an easy way to split up the data like this (you might end up with hotspots for example). But I feel like that conclusion needs to come after a bit of reflection, instead of reflexively reaching for a global object + mutex. (Not saying that's what you guys are doing... just a common issue I've seen working on distributed systems with developers new to Go)

cdoxsey··on The State of Caching in Go
Go has lots of packages. They are easily discoverable on godoc.org or just some googling.

There is a cultural skepticism about the overuse of packages. There are occasions where the STD lib copied a function instead of adding an import for example. Like many things in Go this pushback is needed but sometimes goes too far.

But maybe single function packages in npm we're a bad idea.

Anyway caching is a mixed bag in my opinion. Local per-thread caching is often better than a global cache as it avoids contention. It's also trivial to implement with a map and requires no special coordination.

It does require rethinking how you design a solution to a problem. FWIW that design process tends to lead you down a better direction anyway for producing distributed systems.

For example one giant, randomly distributed Kafka topic with a global redis db for a cache is probably a lot worse off than a system with more predictable data locality on the consumers.

cdoxsey··on Austin Is Building a Mini Silicon Valley
I have lived in NYC and Austin and I grew up in southern Alabama. Austin is much hotter in the summer. It's nearly as humid as Mobile but tack on 10 degrees.

Average humidity during the summer: Austin: 90% Mobile: 100% Miami: 100% NYC: 54%

It's not even close.

Maybe its because people are outside more in NYC and don't have a car readily available with AC torqued to full blast? Or less buildings have AC / the subway is oppressive?

cdoxsey··on Austin Is Building a Mini Silicon Valley
Austin is very hot in the summer. The average high is nearly 100 degrees in July and August: https://www.usclimatedata.com/climate/austin/texas/united-st...

Miami is 90 degrees. And Austin is humid too.

And there's no comparison to NYC, which isn't even usually above 90 degrees.

cdoxsey··on Move to Pull Consumer Protection Rule Heightens Debate over Payday Lending
Regulators also have incentives. In particular the rise of crony-capitalism in the US means that regulations end up becoming a cudgel to stifle competition as a form of rent-seeking from the government.

It's the baptist and bootlegger problem: https://en.wikipedia.org/wiki/Bootleggers_and_Baptists

> "Such a coalition makes it easier for politicians to favor both groups. ... [T]he Baptists lower the costs of favor-seeking for the bootleggers, because politicians can pose as being motivated purely by the public interest even while they promote the interests of well-funded businesses. ... [Baptists] take the moral high ground, while the bootleggers persuade the politicians quietly, behind closed doors."

cdoxsey··on You Don’t Need All That Complex/Expensive/Distracting Infrastructure
Please at least use a managed database. Treat that linode box like it might disappear at any moment. It is so easy to shoot yourself in the foot with a database and lose everything.

Also FWIW configuring Linux machines manually over SSH and building and deploying your code too it, isn't always easier. Make sure you write everything you did down, because in 6 months you will completely forget how you built this thing, where it was deployed, etc...

cdoxsey··on Reconstructing Twitter's Firehose
If you need access to Twitter data you should sign up for a developer account and contact them. It's expensive but not prohibitively so for a company that needs Twitter data to do business.

For academic research Twitter offers products which dramatically reduce the amount of data you need to consume via the full search API or historical powertrack.

cdoxsey··on K3s – Lightweight Kubernetes
So you're suggesting we use BEAM instead of Kubernetes?

So just rewrite all our code in Erlang, including off the shelf products we didn't write?

Then use some other technology to deploy the software, configure the machine, come up with a way to do service discovery, attach block devices to nodes, and automatically provision new machines based on resource usage?

It doesn't make sense yet it's seemingly repeated on every thread about Kubernetes.

The Erlang community should celebrate technologies like Kubernetes, Mesos, or any other number of resource scheduling systems because they're finally the industry taking seriously the problems addressed by Erlang.

cdoxsey··on K3s – Lightweight Kubernetes
I'm not afraid of specialized tools. For example I've used RabbitMQ which I believe is written in Erlang.

We run it in Kubernetes in both our CI environment and locally so we can use the same configuration for both. It runs a dozen microservices and saves us a lot of devops time.

In our CI environment it's nice for a developer to roll out a new copy of the services from a different branch for testing, and because of the autoscaler nodes are dynamically provisioned when needed, and then removed when the test environment is destroyed. That's pretty nice functionality you get basically out of the box. On EKS anyway. There are some occasional rough edges, but I think the decision to use k8s for this makes sense...

At some point we'll migrate prod too.

Kubernetes has a lineage as well... Based on the Borg project at Google.

I guess I'm not seeing why these things are being compared. Aren't they solving different problems?

cdoxsey··on K3s – Lightweight Kubernetes
Are you talking about Go, the language this is written in?

Go's concurrency features are formally specified, are not ad-hoc (they are a major feature of the language, and the product of multiple language design iterations) and are certainly not bug-ridden.

Or are you talking about using Kubernetes to manage workloads on machines?

How does Erlang solve running my python webapp or my SQL database on my ec2 nodes, or in the case of this project, on an IoT device.

cdoxsey··on How Discord Scaled Elixir to 5M Concurrent Users (2017)
You called me a "clueless dev".
← PreviousPage 2 of 13Next →