HackerReposA FIELD GUIDE TO OPEN SOURCE
ProSponsor the shelf♧ 0
← Back to top all-time
jbenet
random-ideas
OPEN SOURCE2014–2023
jbenet / random-ideas

random-ideas

random ideas

4Distinct people
7Mentions
0Explicit recommenders
329GitHub stars
REPOSITORY AT A GLANCE

What to know before exploring

What it is

random ideas

GitHub

Where it is used

No documented product use has been verified yet.

What people are saying

No recommendation phrase was found in the indexed comments.

No classified warning is attached to this page. Read the discussions before treating silence as approval.

Also in these discussions

  • ipfs/ipfs · linked in 2 of the same discussions

Mentioned in the same Hacker News threads. That is not proof they are substitutes.

This week on Hacker News

Nov 7–Nov 14 UTC · Direct repository links and separately labeled related project stories. Indexed through 11/14/2026, 3:56:07 PM UTC.

No direct repository links were found in the indexed HN discussions over the past seven days. Older discussions are available below.

Mentions over time

HN mentions by year7 dated mentions

Observed mentions: 2014-05-18 05:50:58 UTC to 2023-10-05 23:07:22 UTC.

0122014-01-01 00:00:00 UTC to 2015-01-01 00:00:00 UTC (exclusive): 2 mentions; 1 submissions, 1 comments20142015-01-01 00:00:00 UTC to 2016-01-01 00:00:00 UTC (exclusive): 2 mentions; 0 submissions, 2 comments2016-01-01 00:00:00 UTC to 2017-01-01 00:00:00 UTC (exclusive): 1 mentions; 0 submissions, 1 comments2017-01-01 00:00:00 UTC to 2018-01-01 00:00:00 UTC (exclusive): 1 mentions; 0 submissions, 1 comments2018-01-01 00:00:00 UTC to 2019-01-01 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments20182019-01-01 00:00:00 UTC to 2020-01-01 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2020-01-01 00:00:00 UTC to 2021-01-01 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2021-01-01 00:00:00 UTC to 2022-01-01 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2022-01-01 00:00:00 UTC to 2023-01-01 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2023-01-01 00:00:00 UTC to 2024-01-01 00:00:00 UTC (exclusive): 1 mentions; 0 submissions, 1 comments2023

Counts come from the repository’s dated source evidence. Index cutoff: 2026-11-02 08:16:59 UTC.

View mention counts and date ranges
UTC ranges include their start and exclude their end. Select a period to filter the source evidence.
PeriodStart (UTC)End (exclusive, UTC)MentionsSubmissionsComments
20142014-01-01 00:00:00 UTC2015-01-01 00:00:00 UTC211
20152015-01-01 00:00:00 UTC2016-01-01 00:00:00 UTC202
20162016-01-01 00:00:00 UTC2017-01-01 00:00:00 UTC101
20172017-01-01 00:00:00 UTC2018-01-01 00:00:00 UTC101
20182018-01-01 00:00:00 UTC2019-01-01 00:00:00 UTC000
20192019-01-01 00:00:00 UTC2020-01-01 00:00:00 UTC000
20202020-01-01 00:00:00 UTC2021-01-01 00:00:00 UTC000
20212021-01-01 00:00:00 UTC2022-01-01 00:00:00 UTC000
20222022-01-01 00:00:00 UTC2023-01-01 00:00:00 UTC000
20232023-01-01 00:00:00 UTC2024-01-01 00:00:00 UTC101

What Hacker News says

7 sources
Since posting this, I've discovered that IPFS has something it calls Merkle-DAGs. A Block-Chain is a chain of blocks where there is one valid previous block and one valid next block. A Block-Tree is a chain of blocks where there is one single valid previous block, and multiple valid next blocks. A Block-DAG is a chain of blocks where there are multiple valid next blocks and multiple valid previous blocks, with the constraint that you can not form cycles. They are analogues to linked-lists, trees, and directed-acyclic-graphs but with chained hashes. From the Merkle-DAG article on the IPFS page: > Merkle DAGs are similar to Merkle trees, but there are no balance requirements, and every node can carry a payload. In DAGs, several branches can re-converge or, in other words, a node can have several parents. What's interesting here is that a Me
Read the rest
rkle Tree is a valid Merkle DAG, since a node can _optionally_ include a data payload. So a blockchain, a blocktree, and a blockdag are all also Merkle-DAGs. Merkle-DAG is a kind of unifying structure that can be used to model all of them. It's really quite clever. https://docs.ipfs.tech/concepts/merkle-dag/ This appears to have been coined in 2014: https://github.com/jbenet/random-ideas/issues/20 However the term blockchain dates back to at least 2008. A blockchain might be a Merkle-DAG but a Merkle-DAG is not a blockchain.
In Where does my computer get the time from?
> Good to see other people are inventing AppFS ( http://appfs.rkeene.org/ ) :-) I'll take the construction "other people are inventing <the thing i invented some time ago>" to mean that you think you came up with this first, or at least prior to Nix or IPFS. And thus ":-)" to be a bit sarcastic and unhappy, instead of genuinely happy. Similar times: * http://appfs.rkeene.org/web/timeline?c=78c60b0c9e7da1c9&unhi... * https://gist.github.com/jbenet/8f000606f2009495c56177f6ca2c1... * https://github.com/ipfs/ipfs/commit/8004db75262fcd29399d6c7f... * https://github.com/jbenet/random-ideas/issues/19 * i think the Nix people probably came up with this way before either of us * and i am willing to bet everything that at least 100 other people (maybe thousands) have came up with this exact same idea over a decade before any of us... In fact, most
Read the rest
of the best "original ideas" in the IPFS body of work were probably first discovered decades prior. I repeatedly see people succumbing to sadness over multiple discovery. It shouldn't be sad, it should be a happy event, as it confirms our own thoughts and presents an opportunity for collaborations. :) Further thoughts here: https://gist.github.com/jbenet/8f000606f2009495c56177f6ca2c1...
In Distributing NixOS with IPFS
jbenet here. We're all very excited about the dev interest in gx and ipfs! thanks! we did not expect attention on it this soon! Please check it out, try it, and give us feedback! Please know though that things are still super early, and very rough! We do not think our pkg mgment efforts are UX ready for end users who want something strictly better today. But they are ready for early adopters who want to think or hack on them with us. In fact, we are now self-hosting go-ipfs in gx! https://github.com/ipfs/go-ipfs Something to bear in mind: we are building infrastructure you can rely on long term, with decentralization, flexibility, and futureproofing from the ground up. We want our protocols and tools to survive independent of fragile organizations or fragile routing. We can't take many shortcuts (like depending on centralizing agents), be
Read the rest
cause we want something rock solid to last for decades. This means it takes us a lot longer to build high perf and high quality UX, because there's a lot more to do. More work, but it is all achievable. The rough edges will disappear as we improve the tooling. Even today, gx is amazingly simple and powerful, and already does much for dependability. It's worth mentioning other package management tooling we're working on too: * NPM + IPFS - https://github.com/diasdavid/registry-mirror and other repos. This is an effort to improve how NPM works with IPFS * pacman + ipfs - https://github.com/ipfs/notes/issues/84 - this is a super rough way to show how to add ipfs support to a package manager through FUSE. it's not the best way, but it works! * also, we <3 nix, and cool stuff coming in the future there :) We have LOTS in development and store for the package manager communities. It's a very exciting time. Please join us at https://github.com/ipfs/ipfs and #ipfs and #gx on freenode IRC. And, if anyone wants to work on "Hypermodular Programming" with us, see https://github.com/jbenet/random-ideas/issues/27 and ping me :)
In Gx: A package management tool built around IPFS
Every few months, someone builds a site like this. It lasts for a few days (or weeks) at best before it's shutdown due to legal pressure or sheer cost for the owner. I'm going to ignore the piracy aspect of this site (since I don't support copyright infringement) and just talk about the implementation. This site is connecting to a centralized service to fetch the torrent data. It's not P2P, it's easy to censor, and it likely won't be around for long. What we really need is a true P2P implementation of BitTorrent in the browser. I'm working on just such a project: WebTorrent (http://webtorrent.io). You can see a demo here: https://instant.io Here is a link to watch Sintel (Creative Commons 3.0): https://instant.io/#c6642b73cf82dc52b5d538fabfdf9c8e3d9e850f WebTorrent is powered by WebRTC, the de-facto standard for connecting two peers in th
Read the rest
e web browser. It even works in desktop apps (via Electron or NW.js) and mobile apps (via embedding the webrtc.org library). With WebRTC, we can connect all types of endpoints (desktop, web, mobile) directly and completely P2P. This is the underlying transport that all future P2P protocols should be built upon. Right now, the primary limitation of WebTorrent in the browser is that you can't just paste in any random magnet uri or .torrent file and have it work. The torrent must be seeded by a WebRTC-capable client, i.e. webtorrent-hybrid (https://github.com/feross/webtorrent-hybrid) or https://instant.io. We plan to build a desktop client (soon!) that can connect to normal BitTorrent peers, as well as WebRTC peers. These long-running peers will ensure there's lots of content available in the network that the shorter-running web peers can access. This is the vision: All torrent clients (desktop, web, mobile) talking directly to each other. If you're interested in learning more about the idea of "WebRTC everywhere", here are some links: https://github.com/webrtcftw/goals/issues/1 https://github.com/jbenet/random-ideas/issues/13
In Popcorn Time in Your Browser
Please never ever ever implement a Merkle tree as you did in https://github.com/jbenet/random-ideas/issues/20 . This is vulnerable to the same trivial collision attack as the original Gnutella THEX proposal. EDIT: also, please implement non-power-of-2 leaf node Merkle trees as power-of-2 lead node trees with the rightmost leaves containing the hashes of the zero length array, that way the final block along with its hash chain to the root provides a cryptographic proof of file length. This prevents denial-of-service mischief where a malicious server claims a given resource is terabytes large and a poorly written client starts allocating TB of disk space on a filesystem that doesn't support sparse files.
In IPFS is a new peer-to-peer hypermedia protocol
Joe and I are thinking similarly :D I'm going to dump some ideas here. --- # JRFC 27 - Hyper Modular Programming System (moving it over to https://github.com/jbenet/random-ideas/issues/27) Over the last six months I've crossed that dark threshold where the desire of building a programming language has become an appealing idea. Terrifyingly, I _might_ actually build this some day. Well, not a language, a programming _system_. The arguments behind its design are long and will be written up some day, but for now I'll just dump the central tenet and core ideas here. ## > Hyper Modularity - write symbols once ### An Illustration You open your editor and begin to write a function. The first thing you do is write the ([mandatory](https://code.google.com/p/go-wiki/wiki/CodeReviewComments#Do...) [doc comment](http://golang.org/doc/effective_go.ht
Read the rest
ml#commentary) describing what it does, and the type signature (yes, static typing). As you write, [your editor suggests](http://npmsearch.com/?q=factorial) lists of functions [published to the web](npmjs.org) (public or private) that match what you're typing. One appears promising, you inspect it. The editor loads the code. If it is exactly what you were going to write. You select it, and you're done. If no result fits what you want, you continue to write the function implementation. You decompose the problem as much as possible, each time attempting to reuse existing functions. When done, you save it. The editor/compiler/system parses the text, analyzes + compresses the resulting ASG to try to find "the one way" to write the function. This representation is then content addressed, and a module consisting of the compresses representation, the source, and function metadata (doc string, author, version, etc) is published to the [(permanent) web](http://ipfs.io/), for everyone else to use. ### Important Ideas - exporting a symbol (functions, classes, constants, ...) is the unit of modularity (node) - system centered around writing _functions_ and writing them once (node) - stress interfaces, decomposition, abstraction, types (haskell) - use doc string + function signatures to suggest already published implementations (node, Go) - content address functions based on compressed representations - track version history of functions + dependents (in case there are bug fixes, etc). (node) - if a function has a bug, can crawl the code importing it and notify dependents of bugfix. (node, Go) - use static analysis to infer version numbers: `<interface>.<implementation>` (semver inspired) - when importing, you always bind to a version, but can choose to bind to `<interface>/<implementation>` or just `<interface>` - e.g. `factorial = import QmZGhvJiYdp9Q/QmZGhvJiYdp9Q` (though editors can soften the ugly hashes) (node + ipfs) - all modules (functions) are written and published to the (permanent) web (public or private) - when importing a function, you import using its content address, and bind it to an explicit local name (`foo = import <function path>` type of thing) - the registry of all functions is mounted locally and accessible in the filesystem (ipfs style) - _hyper modular_ means both to "very modular" and "modules are linked and on the web" Note: this system is not about the language, it is about the machinery and process around producing, publishing, finding, reusing, running, testing, maintaining, auditing, bugfixing, republishing, and understanding code. (It's more about _the process of programming_, than _expressing programs_). This means that the system only expresses constraints on language properties, and might work with modified versions of existing languages.
In “The Mess We're In” by Joe Armstrong at Strange Loop [video]

MAKE YOURSELF AT HOME

A few shortcuts

/
Search the collection
?
Open this guide
Esc
Close dialogs and navigation

Your saved repositories and interests stay in this browser.