Kukuruku Hub is a site that translates and republishes technical articles on programming, math, hardware and algorithms into English.
HN links it for posts on lock-free data structures and comonads, but commenters complain that translated articles often fail to credit the original authors.
I think your comment is touching on two different points, in my view.
> Until something breaks, and you have to go through all the configs and try to fix it.
This is solved by understanding the language and the tools you are using. I see so many people screw up a react app because they don't know javascript. They take the same smorgasbord approach to languages and tools they have used in the past (like jQuery) and apply it to react. React is really a frontend framework for javascript developers, not a frontend framework for creative types (like Misko originally slated angular to be) If people would just take the time to learn the actual language they are using, it would make these other tools easier to grok. This is software development. It is suppose to be hard. Take the time to learn your tools.
> I’ve seen https://kukuruku.co/post/hello-real-world-in-php-in-2017/ far too often.
I always wonder why people elect to use a heavy set of opinionated tools to solve simple problems. I understand the point the blog post is trying to make, but again, it's like taking a highly set of specialized tools and complaining when it is difficult to do the simple things, when all you needed was a hammer. React is a UI library first and foremost. You can take it, inject it into your page, and use it. You shouldn't add the bells and whistles until your complexity grows to the point where it makes sense to use it. I tell people to ask themselves this question all the time, "Are you sure you…
> Maybe an experienced C++ coder can destroy my preconceptions :)
- Generally C++ uses the OS-level package manager, like rpm or dpkg. It's not cross-platform and it doesn't have a nice interface in the source code (#include is... unfortunate), but there is a nice solution here if your organization has the discipline and tooling expertise to make it work.
- Template metaprogramming isn't bad to use at all. Everyone uses it every time they construct a vector<>. It takes a lot of skill to write, though, and unfortunately even users of TMP can end up with nasty and bloated compiler errors. Hopefully this will be addressed by "concepts" in forthcoming versions of C++, but it might be a while before that filters down to stable C++ compilers and libraries.
- The real issue that should scare you is something called "undefined behavior". It's very easy to do subtle things that cause you programs to break in weird and hard to debug ways. Nasty side effects that could theoretically include any side effect. Like saving garbage to your production database. By doing something as innocuous as overrunning an array.
https://kukuruku.co/post/undefined-behavior-and-fermats-last-theorem/
https://stackoverflow.com/questions/367633/what-are-all-the-common-undefined-behaviours-that-a-c-programmer-should-know-a
There are tricks and tools to avoid undefined behavior, but I find that most C++ engineering orgs don't prioritize the tooling (linters, UB sanitizers, etc.) needed to let engineers…
thanks to both gpderetta and chrisseaton for their insightful replies. as i was looking for more sources of information, i stumbled upon this:
http://kukuruku.co/hub/cpp/transactional-memory-history-and-development
where we see a large number of folks trying and eventually giving up on tm both in h/w and s/w implementations e.g. sun tried adding tm support to their sparc(rock)-v9 processor, but after oracle bought them, the project was shelved for “This processor had two astonishing features: it was incredibly low and consumed plenty of energy. It was so hot that they had to hang 12 inches of cooling fans so that processor wouldn’t overheat. It would have been insane to continue this project.”
to me at least, it seems that optimistic-reads with in-place pessimistic writes and automatic retries a.k.a weakly-atomic-update-in-place (raison d'être for tm) is the biggest torpedo in tm's direction.
for example, assume we have :
---x---x---x---x---x---x---x---x---x
bool owning_obj = false;
some_obj x = new some_obj();
/* txn-0 */
atomic {
owning_obj = true;
}
int z = x.some_value;
---x---x---x---x---x---x---x---x---x
/* txn-1 */
atomic {
if (!owning_obj)
x.some_value = 12314;
}
---x---x---x---x---x---x---x---x---x
ok, so now we have a problem :), specifically : although txn-1 would rollback, because the value of owning_obj is changed, but it is too late. the other thread using x (txn-0) will see a constantly changing…
I think that when you're publishing translations then, at a minimum, you should make clear at the top of the page that it is a translation, provide a link to the original, and include the author's name or username. You should also make a good faith effort to seek permission from the author.
If the article you're translating was itself translated from an original source, then "author" here means author of the original material. The latter would seem like an obscure edge case, except that some of the translations you published actually were that.
We want solid content on HN, so I'd like to find a way to have these posts not be a problem. No doubt the community will scrutinize future posts, so we may have this discussion again, but for now we won't ban the site if you do the above.
Original articles, of course, are more than fine. One problem with grey-area tactics is that they make your whole site look shady. Readers will think that all your articles must be hijacks, whether they are or not. To pick one example that was posted to HN, who wrote http://kukuruku.co/hub/mobiledev/mobile-typography? It's not clear whether this content was created for your site or stolen from elsewhere; besides which, readers want to know the names of the authors they're reading.
If you attribute everything clearly and prominently, this should go a long way toward clearing things up.
Hasty Edit: Googling reveals that you copied the mobile typography content from…
Please ban them, this is absolutely unacceptable. The original author put hard work into his writing, and I still don't see any credit in a majority of their translations. They have published 14 articles in total without any credits going to the original author. It's definitely not the type of news I would expect to be associated with a "hacker". I do not see any links to the original source at http://kukuruku.co/hub/cpp/lock-free-data-structures-introduction
They are stealing content.
Another user (leephillips) posted the following about their posts: "I went to the site and left a comment complaining about how they stole your article. They deleted the comment, and you still aren't credited. Does HN have a blacklist of sites that steal content or publish only blogspam? I think they should consider it." - https://news.ycombinator.com/item?id=7754641
I won't say anything as to what is good progress vs. reinventing the wheel. For the purpose of this discussion, I don't think it matters much; if employers expect you to code using React/Angular/Bootstrap/whatever, it doesn't matter if you think those are inherently good progress on previous tech or not.
And there are definitely software devs working in fields that change more slowly. But if you take web development as we frequently do around here, e.g. the joke article posted yesterday about "Hello world" in PHP does provide some good examples of stuff that's changed dramatically in the last five years.
https://kukuruku.co/post/hello-real-world-in-php-in-2017/