482 karma · joined December 25, 2016
I can't think of any other tool that hasn't given me headaches at least once a day.
Git is actually remarkable tech and its unfortunate that the prevailing hivemind opinion is that its bad.
I wouldn't say this an exclusively rails problem though. Testing was a complete nightmare, and there was so much random middlewares that were "mission critical" but no one knew what they did. And as you said, scaling was horrible. We had like a hundred servers, each running 20 unicorn instances, to serve our API at the scale we had (~5 million users or so, I forget the DAU)
That said, I'm not against the idea in principle if access to the internet is guaranteed and constant. In some places that I'm in, internet access is shoddy or just too slow for this kind of thing, and my preference there would be to work easily on a local machine without access to the internet.
One big issue I have with the proposed approach is that it's very difficult for me to see at a glance the actual compute graph. I suppose you can build some tools to visualize it from the DSL in the decorator call, but I'd much rather be able to see this directly in code, with no weird magic, so that I can very easily interpret and update it if need be.
I kind of get what this is saying, but technology evolution doesn't have to mean completely replacing said technology with something else.
I think that's one weird thing about the software field, whereby we keep moving to these shiny new things that we think are better than the tools of yesteryear, yet in the end there is only a marginal gain in productivity.
Fork and pull is an incredibly productive and powerful workflow. CI is incredibly, incredibly useful. If these things were not the case, then neither of these would be even discussed by this article. There is a reason for their success - and it's not because GitHub is the most ubiquitous code hosting service out there. Git is _actually_ pretty great. CI is _actually_ very useful and has secured codebases for decades at this point.
So if one were to proclaim the "End of CI" I really need to see a viable alternative that addresses the same problems as CI and significantly improves upon it. An incremental improvement is not enough to shift and rewrite everything - there needs to be a significant jump in ability, productivity, security, or something else in order for me (and I imagine many others) to consider it.
Common examples of this are multi-million line C++ codebases (e.g proprietary game engines) and monorepos in any language.
Running tests on my computer uses up valuable CPU cycles that I can use to work on something else while the CI servers are running my tests.
However I can see this working for small to medium sized codebases that really don't need CI for testing.
To me, I don't really see a difference between GitHub and sr.ht. Companies can start out with these "friendly" attitudes towards FOSS, but when they reel in many paying customers, they can pretty easily, and without consequence, change their policies to be more aggressive (geared towards profit) and greedy. It just seems inevitable to me.
However, decentralized hosting and governance might make it so that there can't be a hostile takeover and incorrect (relative to license) usage of FOSS code. I'm thinking something akin to IPFS but more specialized towards e.g git repository hosting.
Not sure how such hosting would be feasible in terms of breaking even between hosting costs, but a decentralized service hosting distributed VCS databases seems more along the lines of the philosophy of DVCS's in general. DVCS's in general do not have timeliness requirements (i.e your "git push" most of the time doesn't have to propagate worldwide immediately) and the other goodies that come with being on GitHub (e.g CI/CD) seem orthogonal to the actual code hosting itself, and I don't see why that can't be built separately without being part of the service.
Rails has a ton of magic, implicit behaviours, monkey patching, ERB, and so on.
Go is a touch below Java verbose, explicit, no magic, every function call can be very easily traced without having to do meta programming and code generation in your head to understand what's going on.
In my 8 years of writing Go, I would liken it the most to C, where you had to spell everything out, except without the manual memory management and the macro preprocessor.
Doing magic with Go via reflection or other implicit behaviours is generally annoying to deal with. One example is some libraries using struct tags, most of the time they work as expected, but sometimes you get some weird failure and these kinds of implicit behaviours are the culprit.
Overall, I don't rate these "all in one" frameworks highly in Go. The standard library is excellent for most applications, you only need to add some code to remove some boilerplate. For most apps that I have worked on in Go that involved web components, we maybe had to import e.g a websockets library or a more elegant routing library, but that's pretty much it.
Literally everyday there's an article that is posted that completely misunderstands cryptocurrencies and the related ecosystem. The most common critique I see on HN of this is that NFTs are garbage and rug pulls suck.
Thats like saying the modern web sucks because a couple of shitty websites are live and you got your CC stolen by phishing e-mails. It just makes no sense as an argument.
Crypto has a long, long, very long way to go but if folks truly do not believe that transferring something that we believe to have some value (i.e bitcoin, or USD, or whatever) without the need for a middleman, while also keeping your funds truly safe from external control (i.e banks, governments, and the like) then cryptocurrency is simply not for you, full stop thank you for considering it.
In the first world, the full value of such decentralization and trustlessness will never be understood until they get burned like Sri Lanka, Lebanon, Cyprus, and other countries with massive hyperinflation and complete loss of wealth (temporary or not). The daily fluctuations of BTC are literally nothing next to the hyperinflation of the Turkish Lira, the Lebanese pound, the Zimbabwean dollar, and so on.
As a side note, its getting kinda tiring to see these boring, lame takes on crypto which seem as half assed as they are uninsightful posted on HN. Lets get some moderation done on this front IMO.
We all know the dig here - Git is not simple.
Like many tools, Git has evolved significantly over the years. Git today was not like Git 10 years ago.
Also, like many replacements to existing tools and software, they always start out simple and beautiful. Then they grow in complexity to serve the domain. The reason Git is complicated - not "simple" - is mostly because version control _is_ complex.
I also don't agree that Git is hard to use. I feel it is an odd goal to try to make everything - even tools that experts use - simple to use, when they are fundamentally not simple. I feel like Git is sufficiently complex - no more than it needs to be and certainly not less.
Although in this scenario, isn't code of conduct something much more "local" that the ringleader doesn't really need to step in every time to enforce?
CoC is just something I expect everybody to enforce when needed. Having a dedicated team to do that seems odd to me. I guess you still need someone to issue bans and to wield the ban hammer, but it _should_ happen infrequently that simply informing the violator of their violation should be enough (unless they're a troll and will continue violating, in which case they can be kicked).
I'm not sure if this is a good thing or not. I for one like the fact that I can easily manage my subscriptions from inside the settings app. I cancel a subscription, and I'm guaranteed not to get double charged again. It's as easy as pie.
With every Tom Dick and Harry app linking to their own subscription and payment system, this already becomes incredibly more complex for the consumer (in this case, me).
I have already been avoiding using apps that require me to sign up manually (i.e without the "Log in with Apple" option) because it's simply inconvenient and I know one day or another each of these websites will be compromised, my e-mail leaked, as well as other payment processing info.
This just fragments the ecosystem even more and I'm quite happy to avoid such applications and stick to those that use Apple for payment processing and subscription management (if these are only the Apple related apps, e.g music, TV, etc., so be it).
Go error handling in practice actually works very well. I've been writing Go for a long time and I've never had an issue with it. It's not as fancy as Rust but it works and works well, so if it ain't broke, please don't try fixing it.