Ravelin's engineering team writes about Go, databases like DynamoDB and BigTable, security, and engineering practice at a fraud-detection company.
HN cites it for its Go channel overhead benchmarks and its critical take on DynamoDB use cases.
> I bring up PL/I here on HN occasionally just as an example and lesson in programming language design.
PL/I influenced B, which influenced C, which influenced so many things that literally every person on HN has used a language influenced by C. You're out here talking down to people like "you whippersnappers don't know what you're doing" when you're literally decades behind the curve.
and besides, check out lambda-the-ultimate.org, that's a community more specifically oriented at programming language design. And no, they don't talk about PL/I either.
> A broad point about PL/I is that its structures are nearly as useful as the .Net style classes but with much faster and simpler addressing. In programming language design, that's a little point to keep in mind.
Go has this, Rust has this, lots of languages have this. Language that give the developer the ability to control how their data structures are laid out in memory are not a revelation, we know about them. That's not a new or lost feature, you just have your head buried so far in the sand that you are incapable of viewing anyone that came after you as knowing anything.
https://syslog.ravelin.com/go-and-memory-layout-6ef30c730d51
https://doc.rust-lang.org/reference/type-layout.html
And besides, Go was co-designed by Ken Thompson, who invented B, which was strongly influenced by, drumrollllll please, PL/I!!! Your dedication to not listening to people has robbed you of knowing about things that you would probably…
Ravelin | Software Engineers | London, UK | Full-time | Onsite
A post Series A tech startup building a fraud detection and prevention platform.
We are hiring for a number of Engineering Positions:
* Fullstack (Mid/Senior): https://ravelin.workable.com/j/86F7A0B946
* Devops (Junior/Mid): https://ravelin.workable.com/j/AF0D7439DE
* VP Engineering: https://ravelin.workable.com/j/2F0648699E
* Senior Backend: https://ravelin.workable.com/j/55ADB73093
* Senior Javascript: https://ravelin.workable.com/j/3F5E58D416
Tech stack includes:
Golang, GCP; Linux; NoSQL/BigTable; PostgreSQL; Zookeeper; ElasticSearch; Bigquery; distributed, highly available microservices; CI/CD.
For more information on stack see: https://syslog.ravelin.com/ravelin-technology-stack-1e957a469388
Apply through the links above or email cathy@ravelin.com
The biggest problem I'm aware of with DynamoDB is the hot key / partition issue[1]. Throughout is distributed evenly across nodes, you can't control how many nodes you have, so you always have a node that's hot either temporarily or permanently and so you end up having to over provision all your nodes to be able to handle that hot case, which ends up costing far more than alternatives. What's your take on this? This is the chief reason I avoid DynamoDB, which in theory would be a good fit for some of my problems.
[1] https://syslog.ravelin.com/you-probably-shouldnt-use-dynamodb-89143c1287ca
Channels come with significant overhead [1]. While that is fine (or unavoidable) when communicating between goroutines, in single threaded code that iterates some custom container you don't want a channel.
That is why stdlib map and vector have their own range magic, but as library author this isn't available to you. That is the point of the proposal.
[1] https://syslog.ravelin.com/so-just-how-fast-are-channels-anyway-4c156a407e45
Channels introduce a ton of overhead (https://syslog.ravelin.com/so-just-how-fast-are-channels-anyway-4c156a407e45?gi=6bf63d1d1bfc), plus concurrency issues, and termination concerns (they are essentially a resource leak). It's nice that you can iterate channels, but they're a terrible iteration protocol.
Cool, well done. Hope the idea gets picked up by a few more developers here.
If you don't mind I'm just just pasting the URL into a comment to make it a link:
https://syslog.ravelin.com/2fa-is-missing-a-key-feature-c781c3861db