Kukuruku Hub
kukuruku.co · Group blog · on HN since 2014
Kukuruku Hub is a site that translates and republishes technical articles on programming, math, hardware and algorithms into English.
What HN saysHN links it for posts on lock-free data structures and comonads, but commenters complain that translated articles often fail to credit the original authors.
40HN people shared it
22linked it in comments
154stories submitted
4.7Kstory points
3 years agolast shared
2014people per year2026
Most-shared posts
- 1“Hello, (real) world” in PHP in 20175 people · 175 points · first shared 2017 · 141 comments on HN
- 2Lock-free Data Structures: Atomicity and Atomic Primitives3 people · 79 points · first shared 2014 · 10 comments on HN
- 3Lock-free Data Structures Part 1 – Introduction3 people · 69 points · first shared 2014 · 17 comments on HN
- 4Cellular Automata Using Comonads3 people · 5 points · first shared 2014 · discussion on HN
- 5N-Th Fibonacci Number in O(n)3 people · 3 points · first shared 2019 · discussion on HN
- 6USB Killer2 people · 511 points · first shared 2015 · 190 comments on HN
- 7The Collapse of the Unix Philosophy2 people · 490 points · first shared 2017 · 592 comments on HN
- 8I Do Not Know C: Short quiz on undefined behavior (2015)2 people · 363 points · first shared 2015 · 178 comments on HN
- 9Automatic Algorithms Optimization via Fast Matrix Exponentiation (2015)2 people · 104 points · first shared 2018 · 18 comments on HN
- 10Using the Quick Raise of Matrices to a Power to Write a Fast Interpreter2 people · 102 points · first shared 2014 · 28 comments on HN
- 11How I built my first Android Game2 people · 58 points · first shared 2015 · 19 comments on HN
- 12A MIDI Player on Eight Floppy Drives2 people · 52 points · first shared 2015 · 16 comments on HN
- 13Transactional Memory: History and Development2 people · 50 points · first shared 2014 · 14 comments on HN
- 14Interpreting when Compiling, or an Alternative Understanding of Lambdas in C++112 people · 50 points · first shared 2014 · 4 comments on HN
- 15Automatic Algorithms Optimization via Fast Matrix Exponentiation2 people · 46 points · first shared 2015 · 6 comments on HN
What HN people wrote when they linked it
skazka16 · 2017-03-12
No one has mentioned https://kukuruku.co/. We translate popular and interesting tech articles to English. We are also working on letting users write and publish their own posts.
boothead · 2015-09-30
Convolution is a comonad. http://kukuruku.co/hub/haskell/cellular-automata-using-comonads
I love it when there's a nugget of rigor behind things like this that can be pulled out and applied elsewhere!
bmh100 · 2015-04-20
Fotran can be a pain to write, but it can lead to very efficient programs, especially with the incorporation of advanced math kernels like ATLAS or MKL. Of course, CUDA will lead to 10x-40x boost in GEMM performance in certain algorithms as well. If you have a very matrix heavy hot loop, or could possibly represent an algorithm as a matrix operation [1], it might be worth your time to write some modern Fortran [2].
[1]: http://kukuruku.co/hub/algorithms/using-the-quick-raise-of-matrices-to…
[2]: http://fortranwiki.org/fortran/show/Fortran+2008
sbahra · 2014-05-20
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
bajsejohannes · 2014-05-16
Looks like this one is as well: https://news.ycombinator.com/item?id=7753166
(copy of http://habrahabr.ru/post/220841/)
And this one that showed up recently:
http://kukuruku.co/hub/cpp/lock-free-data-structures-basics-atomicity-…
(copy of http://habrahabr.ru/company/ifree/blog/195948/)
So that appears to be kukuruku's business model: Take articles from habrahabr, translate them (poorly) into English and publish them.
It's great that we get to see content that was previously only available in Russian, but I wish they would show more openly what they were doing. (I did actually wonder why their articles didn't have an author)
signa11 · 2016-01-29
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-developmen…
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…
h43k3r · 2015-04-07
http://kukuruku.co/ - Mainly on Engineering.
Avshalom · 2023-11-06
maksimum · 2019-07-28
A similar neat O(log(n)) solution https://kukuruku.co/post/the-nth-fibonacci-number-in-olog-n/
fxj · 2019-04-09
This blog gives you a taste of J for mere mortals. After reading that I at least understood the gist behind J:
https://kukuruku.co/post/j-can-be-readable/
nayuki · 2018-07-23
Another article on the HN front page also talks about computing Fibonacci numbers quickly.
"Automatic Algorithms Optimization via Fast Matrix Exponentiation (2015)" ; https://news.ycombinator.com/item?id=17592359 ; https://kukuruku.co/post/automatic-algorithms-optimization-via-fast-ma…
i0nutzb · 2017-06-17
Not a real answer, but more like some food for thought:
https://kukuruku.co/post/do-not-learn-frameworks-learn-the-architectur…
kuschku · 2017-03-27
> And besides, create-react-app solves that.
Until something breaks, and you have to go through all the configs and try to fix it.
I’ve seen https://kukuruku.co/post/hello-real-world-in-php-in-2017/ far too often.
sillysaurus3 · 2017-03-21
USB nuke
Do you actually have one? I searched for a bit but it doesn't seem like they're sold.
https://kukuruku.co/post/usb-killer/
semi-extrinsic · 2017-03-13
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/
rawnlq · 2016-11-04
The fast exponentiation algorithm actually generalizes:
http://kukuruku.co/hub/algorithms/automatic-algorithms-optimization-vi…
Vendan · 2016-02-03
Pretty sure you could make a "plain old regular" usb cable that would do similar. Maybe you should go back to RS-232? You should also beware of just about any usb device you see, as it could be a http://kukuruku.co/hub/diy/usb-killer in disguise
stared · 2014-12-30
jacquesm · 2014-05-16
A similar thing was done to another article from Habrahabr.ru.
Compare:
http://habrahabr.ru/company/ifree/blog/219201/
With:
http://kukuruku.co/hub/cpp/lock-free-data-structures-introduction
The favicon also looks a bit familiar.
'made for hn'.
humanrebar · 2017-05-26
> 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-und…
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…
treehau5 · 2017-03-27
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…
dang · 2014-05-20
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…