Making a Neural Synthesizer Instrument - <AUTHOR> https://magenta.tensorflow.org/nsynth-instrument <comment><USER3> This is interesting, although the results are underwhelming IMO. I actually had the same idea - finding the latent space of instrument sounds and using that for synthesis - a couple of years back. After countless hours of research I managed to turn it into a commercial software instrument called "GalaXynth" [1]. For me at least, it turned out that the "automatic" latent space (i.e. discovered by autoencoding) isn't that interesting musically, therefore I turned to hand-designing the latent space, which was a gargantuan task that I'm not sure I would do over again if I knew how hard it would be. Anyway if anyone is interested in this type of thing you should get in touch!

[1] [https://heartofnoise.com/products/galaxynth/](https://heartofnoise.com/products/galaxynth/)

<comment><USER4> No Linux version? :-(

<comment><USER3> It's on my todo-list! But as I understand it from other devs, the market for commercial audio software on linux is pretty small.

</comment></comment></comment><comment><USER5> I mean, it's a cool project, but I'm not sure the latent space between statistically learned sound representations is that interesting for music... For speech synthesis I can see the applications.

For musical sound generation I think there is still room for new discovery with physically modeling sounds, like these guys are doing - [http://www.ness.music.ed.ac.uk/](http://www.ness.music.ed.ac.uk/). You can morph between physically modeled instrument sounds too, and it's all realtime. Complex physical models tend to have too many parameters for human performers to control so maybe neural networks could be used there to learn to control the params and their interaction in a meaningful way for musical sound production.

Also, since WaveNet is computationally so intensive, training and re- constructing sounds sample by sample, at 16k per second at 8bits turns out to be pretty heavy going - let alone 44khz/16bit. So to make it realtime this implementation is basically interpolating in a grid of pre-rendered wavetables to morph between instruments, right?

<comment><USER6> I think Yamaha made a physics based synthesizer. Only a few were produced because they were expensive and hard to master. Can't remember the name though.

</comment></comment><comment><USER7> The idea is cool, but the execution is lacking. My expectation is that if you turn the slider fully to one or the other side, you would get a perfectly clear representation of that instrument. In reality, you get this dirty synthetic sound no matter what and the result of blending them together is always "dirty" and they all sound similar in the end.

I understand that it is hard to encode the sound into these parameters and get near perfect decoding, but maybe that's the next step?

<comment><USER8> I think they just compressed too much due to computational constraints. They say that themselves. However, there is always a question of rate control in these autoencoder methods, and also the error function. In the original paper they don't seem to use a very good perceptual error function.

</comment></comment><comment><USER9> Biggest missing part of the article is the "Music" promised in the title.

In other words: I was hoping to hear a musical composition or performance using samples generated by WaveNet.

I think a better, more realistic title for the article would be more like "Generating Experimental Sounds Using WaveNets" or similar. Even the authors inclusion of animal sounds in the generation made this more of a novelty and not really useful for actual musical sound generation.

Would be interesting to compare this approach with other "Less neural-net-y" approaches, like combining samples in the frequency domain and mixing samples over time.

<comment><USER10> We reverted the submitted title "Make music with WaveNets" to that of the article.

<comment><USER9> Wow, thanks

</comment></comment></comment><comment><USER11> 'Neural audio synthesis' really misses the point. This is just the same technique applied to emulating real instruments, which is already a massively well solved problem, and unlikely to result in any significant improvement.

Music synthesis, on the other hand, is an unsolved hard problem. For example, producing harmonic accompaniment to a hummed melody, or rendering a given chord sequence in different musical styles, or making a drummer that can pick up where someone's beatboxing left off..any of these have the potential to reach a huge audience.

Synthesizing real instruments basically says 'we know nothing about this space and are going to ignore all the works that's already been done in it.'

<comment> jay-anderson > This is just the same technique applied to emulating real instruments, which > is already a massively well solved problem

I disagree. Most instrument synthesis techniques that I've heard don't yet approach real physical instruments. I say let them try using these techniques to an old problem and see if they can get any improvements.

Automated musical expression and improvisation are also active areas of research. (One interesting example: [https://www.youtube.com/watch?v=qy02lwvGv3U](https://www.youtube.com/watch?v=qy02lwvGv3U) \- though I wonder how much it is listening and responding vs how much is pre- programmed.)

<comment><USER11> Inability to get a particular sound you want in a well-equipped audio production studio is not a problem in 2017.

<comment> jay-anderson I have never heard emulation of a physical instrument that matched the real thing. For instance movie studios hire musicians to fill in full orchestras for that reason. If they could get the same result without the musician I'm sure they would.

</comment></comment></comment></comment><comment><USER12> Seems like a neat-ish idea, but the resulting samples are very meh. Not high fidelity sound.

If you really want to see the interesting stuff going on with software synthesizers, I'd strongly suggesting checking out Steve Duda's Serum[1] wavetable synthesizer, or Sonic Charge's Synplant[2], a "genetic" synthesizer.

Steve Duda's elite master class is also super fascinating, if you've got the time! [3]

1: [https://www.xferrecords.com/products/serum](https://www.xferrecords.com/products/serum)

2: [https://soniccharge.com/synplant](https://soniccharge.com/synplant)

3: [https://www.youtube.com/watch?v=MOUkI5hH2HY](https://www.youtube.com/watch?v=MOUkI5hH2HY)

</comment><comment><USER13> this is awesome. this is the kind of thing that spawns entire genres of music that didn't exist before. a lot of the demos sound terrible but as the modulation and drum examples allude to, it's going to be super weird and interesting when more disparate sources are interpolated. I can't wait to figure out how to "break" this.

<comment><USER11> If you think hard enough you can probably come up with 10 music tech projects that had similar awesome promise and never delivered on it. Really, it's not like we're short of ways to make new weird timbres or timbres that are oddly redolent of others..but if weird is all you need, you can just buy a modular and be half-way to outer space already. As you know there, there's typically a vast waste of sonically uninteresting space in between the sweet spots - <USER2> reason I've become suspicious of synths whose primary claim is the broadness of the sound palette, because that promises endless tweaking for ultimately unsatisfying results.

<comment><USER13> i think what is appealing to me is the idea of playing unexpected combinations of sounds of one another. and it's the drum example in particular that really caught me.

you can certainly make weird sounds with existing synths, but interpolating rhythmic sound with a harmonic sound is different to me in that the resulting thing is more rooted in a musical context and can work with other non-neural elements more easily.

for example, once you get some sort of intuition for how sounds might meld, you could compose a "beat" made up of samples (maybe drum sounds, maybe not) in the "left" side that is tailored to interact in certain ways against the "right" (i'm referencing the UI in the abelton video).

people might trade their "seed" sounds, or they might keep them close to the vest!

probably you could use max msp to do stuff like this already but i'm imagining that the "left" sound itself being thought of like an intuitive signal processing algorithm.

it's like second order sampling. you can find pieces of audio and, rather than use them directly, as today, you can create a third sound that probably can't be deconstructed back to the original.

might not birth a top-level genre like sampling did hip hop, but i think once someone puts it together the right way, and once processing power allows them to go beyond some the limitations described, it will really open some new avenues

<comment><USER11> But you can do this already using tools like Tassman or one of the many spectral convolution/resynthesis tools. And if you have sufficient money to throw at analog or sufficient computing power to run a large digital modular tools like Reactor (or any number of others) you can do so many wild things with bandpass filters and envelope followers as modulation sources. I have a Nord Modular sitting next to me and realistically that and a sampler offer more timbral possibilities than can be explored in a single human lifetime.

I don't want to just piss on this, of course any new technology is interesting. But synthesizing novel timbres is just not a big deal in 2017. 'Just imagine what's possible' is still a great marketing line, but anyone waiting on some new technology to make sounds that nobody has ever heard before is suffering from a failure of imagination rather than a limitation of technology.

think of it this way, I could probably hop over to my local biohacking lab and find some way to map audio data onto DNA, modify it, and read it back out again using CRISPR. It would definitely be possible to encode audio information in DNA form. You know perfectly well it won't automatically give you more 'organic' or 'natural' sound despite the novel fact of doing the computation on a biological substrate, and you also know perfectly well that it would be marketed that way, just like almost every other synth is marketed on the basis of its wild creative possibilities.

It's like showing off your new graphic manipulation software with a picture resembling the Mona Lisa. You're selling some basic tools, but people are buying into the idea that having the tools will endow them with increased artistic ability. In reality everyone likes the new tool or filter you've come up with, it spreads rapidly to the point of over-familiarity, and then becomes fairly standard in future toolkits after the novelty has worn off.

</comment></comment></comment></comment><comment> jay-anderson Synthesized musical instruments never sound quite right (the best I've heard are the vienna symphonic library: [https://www.vsl.co.at/en](https://www.vsl.co.at/en)). While that doesn't appear to be the goal of this specific work, some of the wavenet approaches seem like they could be used towards that end. Even if this requires rendering the audio for an instrument slower than real time it would be a nice achievement if it can improve the quality. (Studio musician jobs I think are safe for quite a while still.)

<comment><USER14> Most instruments can make a wide range of different sounds, and players can move smoothly between the different sounds by playing the instrument in different ways.

This is really a kind of morphing. You can capture examples of each kind of sound with sampling, but you can't capture the performance morphing. Even if you could, there's no good way to perform the morphing with a typical synth keyboard, which only allows for velocity and maybe aftertouch - possibly poly AT for a handful of models.

So these huge sample sets have started using rule-based systems to try to add the morphing, or at least to make sample choices, in a context-sensitive way. This kind of works, up to a point, but it's not as good as the real thing.

As a side effect, sampling has driven jobbing composers, especially in Hollywood, towards an industry standard mechanical and repetitive orchestral sound.

It sounds orchestra-like, but it's a narrow and compressed version of all the colours an orchestra is capable of. If you compare it to the work of master orchestrators - Ravel, Stravinsky, Puccini - it's not hard hear just how flat and colourless these scores are.

A good ML model of an orchestral instrument would be a very useful thing, because it would make it possible to think about breaking out of the sampling box. But there aren't enough people with enough of a background in both ML and music to make this likely.

Sadly, I think it's more likely we'll get even more compressed and narrow representations, with even more of the subtlety and expressive range removed.

<comment><USER15> Modern virtual instruments are capable of much more than what standard Hollywood soundtracks might make you think.

1) Performance morphing. We have moved from straightforward sampling to hybrid sampled/synthesized approaches. It will never be as good as the real thing, but it already allows for richer performances than what a boring player would do. Here is an example of a virtual clarinet (Sample Modeling Clarinet). I sequenced many variables separately to demonstrate: vibrato depth, vibrato speed, legato and portamento speed, growl, pressure and accent on the attack.

[http://007ee821dfb24ea1133d-f5304285da51469c5fdbbb05c1bdfa60...](http://007ee821dfb24ea1133d-f5304285da51469c5fdbbb05c1bdfa60.r16.cf2.rackcdn.com/SWAM%20clarinet.mp3)

2) Extended techniques. Competition has encouraged virtual instrument publishers to go for the unusual stuff, and fill whatever niche hasn't been filled yet. For example I recently acquired a library specialized in extended cello technique (Jeremiah Pena Mystic). I used it in the soundtrack of a no- budget short film, here's an excerpt of the cello part:

[http://007ee821dfb24ea1133d-f5304285da51469c5fdbbb05c1bdfa60...](http://007ee821dfb24ea1133d-f5304285da51469c5fdbbb05c1bdfa60.r16.cf2.rackcdn.com/part2_mcell.mp3)

Anyways, I agree that Hollywood soundtracks have been converging to standardized styles, and sampling may be to blame historically, but it is hardly a limiting factor anymore. If anything, it should now encourage creativity as it partly removes the fear of wasting massive resources when your experimental score ends up sounding like crap at the recording session.

<comment><USER16> It's not purely the sampling that's doing it to Hollywood: In some fashion, it's the heavily-derisked blockbuster formula to blame, and technology comes along for the ride.

Tony Zhou's Every Frame A Painting [0] offered a take on how the tendency is to work very closely to a temp track and then ask for something identical, which of course can only get you increasingly similar sounds. Dan Golding responded to this by adding some nuance, noting that temp tracks have always been in use, so the answer has to be a little more complicated, and he points back to the technology. [1] I would say that the technology is just a piece of the puzzle; you can order in a different type of sound and get it, whether or not you're using a computer-heavy approach. That's aptly demonstrated by the variety seen in indie games, for example. This is a problem that movies have made for themselves by being focused on fitting everything to a formula. The occasional film does slip through that has a great score that draws on something bigger than other films(for one example: Scott Pilgrim vs the World).

[0] [https://www.youtube.com/watch?v=7vfqkvwW2fs](https://www.youtube.com/watch?v=7vfqkvwW2fs) [1] [https://www.youtube.com/watch?v=UcXsH88XlKM](https://www.youtube.com/watch?v=UcXsH88XlKM)

</comment></comment></comment></comment><comment><USER17> They should try to incorporate ideas of sound generation from samples which were established long ago, patented and then the area completely forgotten. Patents have since then expired.

[https://en.wikipedia.org/wiki/Karplus%E2%80%93Strong_string_...](https://en.wikipedia.org/wiki/Karplus%E2%80%93Strong_string_synthesis)

This algorithm works wonderfully for guitars (there are improvements to it too). There was a synth 20 decades ago, if not more, I believe, that mimicked all of the wind instruments extremely well (you had a pipe through which you could blow and a keyboard to choose the sounds).

Unfortunately the whole area seems to be abandoned due to patents on algorithms.

Looks wonderful that WaveNets are producing something so well, although the sound still needs improvement.

<comment><USER15> The list of software synths using and expanding on this algorithm piles up pretty high and is still rising. Perhaps you don't hear the name a lot because most of these plugins don't explicitly say so in their descriptions and marketing (although many do). The more common term is physical modeling, which basically implies Karplus-Strong and more advanced delay lines, waveguides, etc. as underlying algorithms. For example, Applied Acoustics Systems has been researching and publishing this kind of software synth for maybe 20 years. Native Instruments has also made a bunch of stuff clearly using Karplus- Strong, including patches for their popular Reaktor synth. Heck, I've made plugins using this algorithm myself.

I find pure physical modeling has been stagnating though, hybrid approaching with sample-based synthesis seem more promising right now. This is what Sample Modeling has been doing and their results are impressive.

<comment><USER17> How does the performance of algorithms hold? I'm seeing all these old reports of how it's computationally difficult, yet can't find any performance reviews on new hardware. Not mentioning FPGAs or whatever else.

</comment></comment></comment><comment><USER18> If you take synth sounds as inputs you can just mix the parameters without any neural net and get the same result...

Sadly does not sound new at all.

</comment><comment><USER19> Check out the artist TCF. He claims his songs are all algorithmically generated using neural nets. Wicked sounds.

</comment><comment><USER20> Very disappointed i cant blend cats and dogs

</comment><comment><USER21> This is a little over my head. Could you please explain how to use it?</comment>


Hammertime - <AUTHOR> https://chancejs.com/time/hammertime.html <comment><AUTHOR> Hammertime is the name given to a Unix time with milliseconds. Which is the same as saying the number of milliseconds since 1970. It has finer granularity than a normal Unix timestamp and thus is often used in realtime applications.

According to startup lore, Hammertime was coined by a startup whose founder had an interesting interaction with M.C. Hammer. There was no name given to "Unix time with milliseconds" and while brainstorming ideas (because Unix time with milliseconds is a confusing mouthful), someone suggested Hammertime and it stuck.</comment>


Introducing Nile.js, a Peer-To-Peer Live Video Streaming Library - <AUTHOR> https://github.com/gitsummore/nile.js <comment><AUTHOR> We built Nile.js, a peer-to-peer live video streaming library designed to handle scaling. Our library uses WebTorrent, a distributed file delivery protocol inspired by BitTorrent and built with WebRTC. We chose WebTorrent as our means of broadcasting the stream because video streams can get progressively stronger as more peers join the stream. This also makes it a better fit than implementing typical WebRTC peer connections due to the approximately 10 to 20 connection limit per peer that WebTorrent has been able to mitigate.

How we use WebTorrent to stream First, torrent files used by WebTorrent are immutable, making it less than ideal for live streaming. To emulate streaming, we take the video stream and split it into clips that are distributed to viewers through their own generated torrent files.

Once the WebTorrent client begins to seed, a magnet link (an identifier in the form of a string) is generated. We propagate the magnet to the viewing peers through a series of WebSocket and WebRTC connections. The magnet is first passed to a Node/Express server which is connected to a limited number of WebSockets. The server emits the magnet to the initial WebSocket connections which pass the magnet along through WebRTC peers in a linked list structure. After receiving the magnet, each viewer client will begin to leech (download) and seed (upload) the stream.

Considerations Because of the linked list structure of our WebSocket to WebRTC connection, if a peer disconnects, the chain would be broken. Our library is designed to automatically reconnect on service disruptions. The disconnected webRTC peer will open a WebSocket connection with server, where it will be reassigned to a new WebSocket peer.

If there are only a few peers viewing the stream, initial upload speed is highly dependent on the broadcaster's bandwidth and network speed, creating a major bottleneck. To offset this poor initial performance, we allowed the broadcaster enough time to send each peer enough data to view without missing a second. From this experience, we further acknowledge the effectiveness of combining peer-to-peer delivery with a CDN, a la Peer5, to handle the spectrum of low to high numbers of viewers.

Problems As we rack up the number WebTorrent seeds on the broadcaster side, there seems to be a client side memory leak which eventually causes the browser to crash. We've checked the CPU and memory usage but have found no error messages or anomalies.

Unsuccessful approaches that we have taken to solve the issue: Server side seeding in place of client side seeding Seeding in web workers Seeding in iframes Destroying WebTorrent client on each new seed Destroying WebTorrent file on each new seed

One solution that we have found, is browser specific. If using Chrome Canary to test the library, it seems to run indefinitely. If anyone in the open source community is able to provide some insight, please make a pull request on our GitHub repo.

Conclusion As a proof of concept, we would like other developers to try our library and leave feedback on how we can improve the project or even build upon it. Come check us out at our website, GitHub and npm.</comment>


Hash indexes are faster than btree indexes? - <AUTHOR> http://amitkapila16.blogspot.com/2017/03/hash-indexes-are-faster-than-btree.html <comment><USER2> This is buried in a few other comments, but it bears repeating as it's perhaps far more important than any performance gains you'd receive from hash indexes over btree... Hash indexes are not crash safe and not WAL logged. This means if you're running with high availability or even using something for disaster recovery like WAL-E[1] and need to recover your database your index would not be in a working state after recovery. Instead you'd need to reindex that data.

For any real production database hash indexes should be used with extreme caution if used at all.

[1]. [https://github.com/wal-e/wal-e](https://github.com/wal-e/wal-e)

<comment><USER3> This seems to be mentioned in the very first sentence of the article:

> PostgreSQL supports Hash Index from a long time, but they are not much used > in production mainly because they are not durable.

And there's a good reason for bringing them up anyway in the second sentence:

> Now, with the next version of PostgreSQL, they will be durable.

<comment><USER4> Saying "they are not durable" downplays the extent of how non-durable they are. That kind of "non-durability" needs flashing neon signs prominently featuring very large arrows, pointing at the specifics, not _four vague words_.

<comment><USER5> why are they not durable? why shouldn't you use them for big tables? For example for PRIMARY KEY lookups, I never ask for a range of PRIMARY KEYs, so why not use a hash?

I think I'm missing the important point.

<comment><USER6> Durability (the D in ACID) means that if the power goes out or somebody kill -9s it, the database will be in a consistent state and anything that was committed was in fact committed. In current and previous versions of PostGres, pulling the plug at the wrong time could leave hash indexes in an inconsistent state. That's fixable by deleting and recreating the index but the time required to do so is proportional to the table size. In the next version of PostGres, it won't be a problem and hash indexes can be used.

In the case of a primary key, a row is inserted or deleted but the power goes out before the hash index is updated. When the power comes back, the hash index still points to rows were deleted and is missing rows that were inserted.

</comment></comment></comment></comment></comment><comment><USER7> Something that the article does not mention: equality operations are cheaper with hash indexes than btree because less data pages need to be fetched. This is good particularly on columns with a high cardinality.

</comment><comment><USER8> Hash indexes have other benefits than just algorithmic complexity too: traversing and updating tree structures requires a lot of pointer chasing, so in cases where your btree index might not fit well in a reasonable level of cache (L3 etc), then this means paging stuff in and out of memory a lot, which can get very expensive very quick.

And also with updates to hash tables (e.g. transactional workloads), they're very quick, versus btree updates require traversing the tree structure.

<comment><USER9> Hash table updates are quick until you have to rehash.

Rehashing can be done in the background, but then you had added code complexity, you'll be doing significantly more I/O during the rehashing (did you think about rehashing when sizing your machines?) and in pathological cases, you can run out of hash table space before the resize is complete. Now what?

<comment><USER10> Postgres hash indexes use linear hashing, which effectively means that rehashing/expansion is done incrementally: [https://en.wikipedia.org/wiki/Linear_hashing](https://en.wikipedia.org/wiki/Linear_hashing)

</comment></comment></comment><comment><USER11> Question for the Postgres developers who I know are lurking around here ...

What's the disk usage of hash indexes v.s. regular btrees?

Does it depend on the underlying type or is it a fixed size regardless of the key fields?

How's this compare to the poor man's hash index, i.e. BTREE(HASH(keys...))?

 _EDIT: I got curious so I ran a test of building btrees vs hash indexes. This is done on 9.6 (not HEAD with the new WAL logging supported hash indexes). Looks like the sweet spot is when the key size is around 20 bytes. After that the fixed size of the hash index gives it a win (on space usage) v.s. the btree which would have to repeatedly store the key values._

        CREATE TABLE IF NOT EXISTS hash_test_results (
          key_size    int,
          btree_size  bigint,
          hash_size   bigint
        );

        CREATE OR REPLACE FUNCTION pg_temp.test_hash_index(p_key_size int)
        RETURNS void
        AS
        $BODY$
          DROP TABLE IF EXISTS index_test;
          CREATE TABLE index_test as select lpad('' || x, p_key_size, '0') AS a FROM generate_series(1,100000) x;
          CREATE INDEX index_test_ix_btree ON index_test USING btree (a);
          CREATE INDEX index_test_ix_hash ON index_test USING hash (a);

          INSERT INTO hash_test_results
            (key_size, btree_size, hash_size)
          SELECT
            p_key_size AS key_size,
            (SELECT pg_relation_size(c.oid) FROM pg_class c WHERE c.relname = 'index_test_ix_btree') AS btree_size,
            (SELECT pg_relation_size(c.oid) FROM pg_class c WHERE c.relname = 'index_test_ix_hash') AS hash_size;
        $BODY$
        LANGUAGE SQL;

        SELECT pg_temp.test_hash_index(x * 8) FROM generate_series(1, 16) x;

        => SELECT
          key_size,
          pg_size_pretty(btree_size) AS btree_size,
          pg_size_pretty(hash_size) AS hash_size
        FROM hash_test_results;
         key_size | btree_size | hash_size
        </comment><comment>----+</comment><comment></comment><comment>+</comment><comment>-----
                8 | 3104 kB    | 4112 kB
               16 | 3992 kB    | 4112 kB
               24 | 4880 kB    | 4112 kB
               32 | 5792 kB    | 4112 kB
               40 | 6648 kB    | 4112 kB
               48 | 7592 kB    | 4112 kB
               56 | 8464 kB    | 4112 kB
               64 | 9352 kB    | 4112 kB
               72 | 10 MB      | 4112 kB
               80 | 11 MB      | 4112 kB
               88 | 12 MB      | 4112 kB
               96 | 13 MB      | 4112 kB
              104 | 14 MB      | 4112 kB
              112 | 15 MB      | 4112 kB
              120 | 15 MB      | 4112 kB
              128 | 16 MB      | 4112 kB

<comment><USER12> I'm not a Postgres specialist but, if memory serves, when joining 2 tables the entire hash must be loaded on 1 side (typically the smaller side, of course).

<comment><USER11> You're mixing up hash joins with hash indexes.

<comment><USER12> I know they're different things, but isn't the main reason to do hash indexes in a relational db to then to a hash join?

More to the point: even if you're just talking indexes you can't load/use half a hash table, so wouldn't the point also apply to isolated use of a hash table.

I know it's not what was asked for, just a related point.

<comment><USER11> > I know they're different things, but isn't the main reason to do hash > indexes in a relational db to then to a hash join?

I think the primary use case is O(1) lookup by key, i.e. similar to how key/value stores work.

I'm not aware of the planner being able to reuse an existing hash index to perform a hash join. AFAIK the hash buckets are created on the fly. That does sound like a cool idea though.

> More the point, even if you're just talking indexes you can't load/use half > a hash table, so wouldn't the point also apply to isolated use of a hash > table.

What do you mean by half a hash table?

<comment><USER12> Thanks for this clarification

>> What do you mean by half a hash table?

What I'm trying to get across is my impression that you don't have to load an entire B-tree index into memory to use it... you can _traverse_ it. Whereas a hash index can't be "streamed" or traversed like that, you have to use the whole thing.

I read some papers on hash indexes and hash joins several months ago, and know little about the Postgres specifics... just wanting to wrap my head around it, so please help me understand if I'm off base with this.

<comment><USER12> >> That means you don't load it into memory at all, you just jump to Bucket[Hash(KEY)] and then check there for KEY (it may or may not be there due to false positives and the bucket being full).

Right, of course. You're making me realize this really _is_ my confusion between hash indexes and hash joins. The issue I'm thinking of is all about dynamically constructed hash joins. Sorry, you called it right from the start but it took me a minute to see... thanks for helping talk through it.

</comment></comment></comment></comment></comment></comment></comment><comment><USER13> What does durable mean in the context of a Postgres index? I can sort of guess but from the way it's used here it seems like it has a well know definition. A quick google search (on my phone) returned this article a few times but not much to else that explains it.

<comment><USER14> Durable in the ACID sense, or specifically that write operations go through the WAL (write-ahead log, i.e. a journal), with all the consequences this brings (both durability and replication).

Before this work was done, hash indexes could literally be corrupted by power outages, etc.

<comment><USER13> Oh right, that's scary! In the case of corruption would the index just be rebuilt (I realise that's a big problem with big indexes) or would it just silently corrupt query output?

<comment><USER15> Caution

Hash index operations are not presently WAL-logged, so hash indexes might need to be rebuilt with REINDEX after a database crash if there were unwritten changes. Also, changes to hash indexes are not replicated over streaming or file-based replication after the initial base backup, so they give wrong answers to queries that subsequently use them. For these reasons, hash index use is presently discouraged.

That is the warning in the current version of Postgres about hash indexes.

</comment></comment></comment></comment><comment><USER16> How do they work for range retrievals ?

EDIT: Isn't that the point of btree ?

<comment><USER17> No range lookups. No order by speedups. One thing that I can see Hash Indexes being really useful for is people who use UUID primary keys. Pretty much the only thing you do with a UUID is equality anyways, so if Hash Index is faster than btree, it makes sense to use that instead.

<comment><USER18> Until you hit the problem of needing to iterate over your table (batches).

As far as I can tell, the only real way to do efficient iteration over postgres tables is to continually bound ID at either end and then take an offset. (SELECT * from <foo table> where id > <largest id from last batch> limit 10). With btrees on UUID you get lexicographic ordering here I imagine, so it'll work. With hash indexes no dice.

Cursors don't end up working out because if you kill long-running queries or idle connections (which most websites should, in production) you'll kill applications using cursors. With pgbouncer, at least, reading from cursors doesn't seem to bump idle timeouts.

<comment><USER19> Surely hash indexes have some stable ordering you can order by, even if its meaning is obtuse.

<comment><USER20> Presumably, hash indexes are based on hash tables underneath, which don't generally have a stable ordering, even an obtuse one. (Any write could cause the underlying table to get resized, which will cause the contents to get re- ordered.) _Perhaps_ if you can guarantee that writes aren't happening, they might, but I don't think this is generally applicable to most people's use case.

(but range queries / being able to iterate are generally why I prefer btrees, unless I have a good reason. Keep in mind that the O(log n) on B-trees is log with a _huge_ base — it's not power of two. It takes very few disk reads for a b-tree to find its query; it's just not the O(1) of a hash table.)

<comment><USER19> Ah, yes I see now.

</comment></comment></comment></comment></comment></comment><comment><USER21> These articles drive me crazy when they don't mention the testing process. Yes, he is using a "server class" machine, but did he disable the features on a hardware level that would skew the test. Answer: probably. I'll assume he did some sort of clear to makes sure that the data wasn't cached on the hard drive or assume that all the reads were in memory. I can't even tell if he ran the test over several iterations.

It isn't that I am doubting the results, but without some trail on how to get the results I can't make this useful information. For example if I were architecting a system and was using this as information I have no idea if I run this in a VM that I need enough memory to get these results.

<comment><USER22> Did you read the article?

Quote:

To start with let us see the impact of work done to improve the performance of hash indexes. Below is the performance data of the pgbench read-only workload to compare the performance difference of Hash indexes between 9.6 and HEAD on IBM POWER-8 having 24 cores, 192 hardware threads, 492GB RAM.

The workload is such that all the data fits in shared buffers (scale factor is 300 (~4.5GB) and shared_buffers is 8GB).

And chart itself says it is a median of 3 5 minute runs.

<comment><USER21> I believe I did.

Why would I assume that Concurrent runs == Seperate Runs or that other caching mechanisms aren't in place or really anything. Computers do really odd things trying to optimize and making assumptions that your system is the same over a period of 30 minutes when you don't even know it is the same 30 minutes is concurrent. There is all sorts of stuff that gets in the way of performance tests and I would like to know how it is mitigated. Again, I am sure there is proper process, but why wouldn't know want to know what that is?

</comment></comment></comment><comment><USER23> Great news if they will really make hash indexes durable! That will allow some interesting new developments, such as O(1) efficient lookups regardless of table size. This in turn will make it easier and more appealing to build graph databases using Postgres.

<comment><USER24> Yes, they are durable now in the master branch.

</comment></comment><comment><USER25> I'm still dubious of any micro benchmark that says "x is better than y" since these are often not real world work loads.

Tuning/optimization starts with using the right schema.

<comment><USER26> Hash indexes are "the right way" to speed-up index lookups.

They aren't used in Postgres because their implementation there has many problems. One of them is that they are slower than the theoretically suboptimal B-trees. In the process of fixing those problems, people will compare both indexes many times.

</comment></comment><comment><USER27> Okay, maybe so, but this benchmarking was done against POWER8 architecture, and not many people are running that. How does it stack up on x86_64?

</comment><comment><USER28> The problem with hashes is that they offer a likelihood of collision which in practice and for very large sets, does happen.

Trees don't and are easier to reason about and prove. Esp. Important for critical systems or projects on massive scales,ud want a tree ADT on that Mars rover.

That's the gist of my conversation with my algorithms tutor about why my use of hashing to solve problems, while correct, is flawed.

I did get the points for those exercises and my lower bounds were alot better than what was demanded, but the problem lies in the fact that it's not guaranteed.

</comment><comment><USER29> Would be interesting if postgres started supporting sorted keys, like HBase.

</comment><comment><USER30> How they do show sorted data when not having a tree, but hashes?

</comment><comment><USER12> Unless you need to fetch items in order, for some reason.

<comment><USER17> Which is a nice side effect if you can trust the order of your primary key.</comment></comment>


Drake: you can use it now - <AUTHOR> http://blog.factual.com/drake-1-0-1-you-can-use-it-now

<comment><AUTHOR> I love this bit about the humility within the Clojure community:

\</comment><comment></comment><comment></comment><comment>

Well, I was bragging to Alan about a Drake release, which I was calling 0.2.0. Alan rolled his eyes. He was like, "Considering the conventions put forth by Semantic Versioning, and considering that Drake has been in production at this company as well as other companies for years now, why not call it version 1 already?" I pushed back a bit, by surveying two existing open source Clojure projects I know of:

Aleph, Zach Tellman's notorious asynchronous library for Clojure, is currently versioned 0.4.x. Keep in mind it's been in production at Factual and other serious minded shops for years now. I asked Zach when he plans to cut a 1.0.0 and his reply started, "Each minor release has been effectively a ground-up rewrite…".

Riemann, Kyle Kingsbury's network event stream processing system written in Clojure, also enjoys prime time adoption in various production environments. And yet it's versioned 0.2.x. I asked Kyle if he plans to cut a 1.0.0:

Kyle: Naw, I don't think it's 1.0 material yet. :-)

me: What would it take to justify a 1.0 ??

Kyle: API stability, a bunch of protocol enhancements, dropping a bunch of deprecated stuff, performance stuff, bunch of bugfixes, disk persistence, maybe determinism & a better stream compiler…

me: when will the madness end !?

Kyle: Probably never? Or, like, we could say that a tool may be sufficiently stable for a job while not being finished yet. :-/</comment>


Why email loses out to popular apps in China - <AUTHOR> https://www.bbc.com/worklife/article/20200707-why-email-loses-out-to-popular-apps-in-china <comment><AUTHOR> Email has never been huge in China, and it's down to a combination of cultural factors and timing.

In May 2008 I was teaching at a private English school in Yangshuo, a small town in southern China. It is an idyllic place to study, with limestone hills, known as karst, decorating the riverine landscape. When they finished their course my adult students told me to download QQ, a Chinese desktop application much like MSN Messenger, to keep in touch.

I asked them to register on Facebook (it was unblocked in China then), add me as a friend and also leave their email addresses. A few did but they were hard to remember, because they often looked something like this: email@example.com. I thought these email addresses were slightly odd, but back then it was not so unusual to have peculiar email addresses even in the UK.

Years later, I found myself in Beijing working as a freelance journalist and copywriter. I would hardly ever do business with my Chinese clients over email. Often, I would receive copywriting work on my smartphone, via the hugely popular Chinese messaging app WeChat. Once I'd completed it, I would then send it back and also get paid over WeChat. The whole process felt miraculous, such was the speed and mobile efficiency.

In many Western countries, email still reigns supreme, especially at work. In both the US and the UK, email is the most popular online activity, drawing 90.9% and 86% of internet users respectively. In both the US and the UK, using email tops other online activities such as browsing for information about goods and services, internet banking, consuming digital videos or audio and using social media.

But in China, it's a different picture. Deloitte's 2018 China Mobile Consumer Survey showed that Chinese people checked their email 22% less than users globally. Instead WeChat is dominant; some 79.1% of smartphone owners are regular users of the app, while 84.5% of people who use messaging apps in China use WeChat. And that preference extends into the office: the 2017 WeChat user behaviour report compiled by Penguin Intelligence, a research arm of Tencent (which created WeChat), found that almost 88% of 20,000 people surveyed used WeChat in their daily work communication. Phones, SMS and fax were used by 59.5%. Email was a distant third on 22.6%.

Eva Hsu, who runs a digital branding business, is Taiwanese and spent some of her youth living in the US. She's been working in Shanghai for six years. For her foreign clients, Hsu says she communicates via email and LinkedIn, but for her Chinese clients it's a different story. "Chinese clients tend to use WeChat and send files on WeChat as the main way of communication," she says.

Late adopters

With over a billion users in China, WeChat is a super app that is ubiquitous. But the reasons why Chinese people prefer communicating over a platform such as WeChat may have been formed years earlier. In 1999, newly-established Chinese technology company Tencent released a product called QQ, based on the popular desktop instant messaging programme ICQ, which was owned by AOL.

At the time, there were only 1.2 computers per 100 people in China, according to the World Bank. By contrast, there was one computer for every two people in the United States. But as the 2000s progressed internet cafes sprang up across China and were quickly embraced by young people. QQ became a key reason for the cafes' popularity, as it provided entertainment with features such as games, music and an early Chinese social network where people could post micro-blogs. Compared to email, QQ offered more interaction, with the ability to create avatars, for example, and instant messaging.

In their 2008 book Supertrends of Future China, co-authors James Yuann and Jason Inch noted that it was impractical for young Chinese to be without a QQ or MSN account. It "is almost like what Westerners would think of somebody without a driver's license", they wrote. Senior executives would list their QQ numbers on business cards and businesses would have their own QQ accounts.

By 2012 QQ had 798 million monthly active users, but WeChat, also created by Tencent and released in 2011, would go on to become the most popular communication tool in China, just as smartphones would go on to replace desktop computers as China's main computing device.

Matthew Brennan, a Briton who has worked in China since 2004 and is a consultant on Chinese digital innovation, says that having an email address in the UK is part of your identity as it's required to register for many online services. In China, however, mobile apps often take precedence and it is possible to do all your online transactions once you are logged into an app with multiple functionality such as WeChat or Alipay (created by online retail giant Alibaba) You can book an appointment, pay for shopping and message your friends all within a single app.

Instant messaging

Zhong Ling, assistant professor of economics at the Cheung Kong Graduate School of Business, believes WeChat fits into the Chinese working culture. "WeChat, as a messaging platform, demands less formal working time than email," she says. "This informality makes people more likely to respond instantaneously… the demand for [an] immediate response is motivated by the cultural and business environment in China."

Zhong observes that the boundaries between people's work and personal lives are weaker in China. "As a result, employers and managers often send out work inquiries or tasks outside of normal working hours and prefer not to wait until the next business day for a trivial reply." She adds that for conversations which require multiple rounds of interaction, WeChat is faster than email.

However, the flipside of this is that workers are under pressure to respond at all hours. While WeChat is ready for short, rapid responses, email has a clunkier interface, Brennan says. The way a platform is built influences how we communicate and there are subtle but noticeable effects when it comes to platforms such as Facebook, WhatsApp or indeed WeChat. "There can be an expectation for a more timely response for [instant] messaging," says Brennan. "So even if you receive a message on the weekend, you need to reply."

In Anglo-centric countries such as the UK, US, Canada, Australia and New Zealand, email retains the etiquette of an analogue age. The "Dear X" greetings and formal sign-offs – "Best regards" – and so on, reveal vestigial ties to letter writing. But in many Asian countries, the instantaneous and informal nature of messaging apps appears preferable.

Alan Casey, a partner at consultancy firm Prophet which has offices across Asia, says he and his multinational team believe chat apps are far more relevant than email in Asia than Western markets. "Many countries like China and SEA [South East Asia] have leapfrogged the computer age and gone straight to mobile connectivity," says Casey. "This has led to massive uptake of social platforms whether it be Facebook, WeChat, Line, KakaoTalk, Zalo, etc."

Doing business

In China, besides WeChat, business apps serve the needs of larger corporations or those requiring more work and productivity-focused features. Platforms such as Alibaba's DingTalk and ByteDance's Lark, as well as the business version of WeChat – WeChat Work – offer features such as document sharing and online editing, payroll, workplace compliance and a higher level of privacy. DingTalk allows users to see in real time if someone has read a message and, if not, users can send a push to prompt them to do so.

Thirty-year-old Hailan Jia is a public relations manager for a Chinese cryptocurrency trading company. She moved from her native Beijing to Plymouth in southwest England in 2018 to be with her partner. In the UK, she says, online services are more scattered. "You buy certain products on Amazon; groceries on apps; and book appointments on websites, which all require email or Facebook, unlike China where you use your WeChat account [for everything]," she says. Having to constantly check her email is something Hailan has had to get used to. "In China I never check email so I don't have expectations of people to respond to email and I don't stay on email for entertainment."

But this doesn't mean Chinese people aren't using email at all. Many do have an email address but check it far less regularly than their American or European counterparts. Brennan says that in the larger cities, like Beijing and Shanghai, there will be more alignment with international standards.

One of my old students in Yangshuo, Leely Wang, was one of the few who left me her email address when she finished her studies. We kept in touch via email for a time, before lapsing. She's now 30 years old and living in Guangdong in southern China working at a lighting company. I found her on WeChat a couple of years ago, which is how we now converse.

I ask her if she still uses the email address we used to keep in touch. "Which one is it?" She asks, laughing. "I had so many: 163, 126 and MSN," she says, referring to different email providers. She now checks her email rarely, and has difficulty remembering when she last checked in. "I use WeChat the most; I don't use QQ often, but sometimes I will," she says.

For Wang, and many other Chinese people, WeChat forms an integral part of daily life and email now seems a quaint leftover from the past.</comment>


Show HN: Paroxython - recommend Python exercises based on algorithmic features - <AUTHOR> https://github.com/laowantong/paroxython#readme <comment><AUTHOR> I've been teaching programming with Python at various levels for the last 15 years. Over time, the exercises, examples, algorithmic patterns I accumulated for these courses became so numerous that I started to have trouble finding my way around: which ones to present in which course, in which order, at which time, and with which expected benefits?

I developed a tool to help me answer these questions, and more generally to rethink the structure and content of my curriculum. After a few years of tinkering with a rough implementation of these ideas, I decided to rewrite it from scratch with the hope of making it useful to my colleagues, and anyone facing the same issues: this is how Paroxython was born.

How can you use it? In a preliminary step, you make it tag your collection of educational Python programs. Then, whenever you want, based on the things your students already know, the concepts you intend to make them discover or practice, and those you wish to introduce later (or never), it recommends you a list of programs roughly ordered by increasing learning costs.

To all of you who are going back to school in, and despite, these difficult times, I wish you a year filled with beautiful human and pedagogical experiences.</comment>


Strangest of All: An anthology of astrobiological science fiction [pdf] - <AUTHOR> https://europeanastrobiology.eu/onewebmedia/Strangest%20of%20All%20Anthology%20of%20Astrobiological%20SF.pdf <comment><AUTHOR> Strangest of All, developed in cooperation of the European Astrobiology Institute and scientist and editor Julie Nováková, is an anthology of astrobiology-themed science fiction stories aimed to both entertain and educate. It takes you on a journey to encounter life in the universe, as imagined in SF stories by award-winning authors, and our chances of finding it outside of the Earth, detecting it remotely, learning its limits and more in original nonfiction essays following each story. The book contains reprint science fiction stories by G. David Nordley, Geoffrey Landis, Gregory Benford, Tobias S. Buckell, Peter Watts and D. A. Xiaolin Spires, and a bonus story by the editor.

[https://europeanastrobiology.eu/onewebmedia/StrangestofAll.p...](https://europeanastrobiology.eu/onewebmedia/StrangestofAll.pdf)</comment>


Show HN: Rwtxt – a space for reading and writing text - <AUTHOR> https://github.com/schollz/rwtxt <comment><USER2> Related:

* [http://txti.es/](http://txti.es/)

* [http://telegra.ph/](http://telegra.ph/)

* [https://txt.fyi/](https://txt.fyi/)

* [https://tgr.am/](https://tgr.am/)

* [https://verbatim.link/](https://verbatim.link/)

* [https://www.pastery.net/](https://www.pastery.net/)

* [http://ix.io/](http://ix.io/)

* [https://commentpara.de/](https://commentpara.de/)

<comment><USER3> Yes, but on first glance (without a lot of digging) at the links here, only Pastery seems to be open source (ix.io says it will be...someday), and Pastery (as nice as it is--thanks for that link) is for a different purpose (exchange of code snippets).

Rwtxt looks like a nice, simple, markdown-based, easily self-hostable, open- source, personal notes wiki. Nice work! If there are others that more or less match this description (self-hosted, open-source, private notes repository), I'd be interested.

<comment><USER4> Shameless plug, I made one that uses an AWS Lambda and S3 and encrypts everything before it gets sent over the wire. You can view a live version of it here ([https://todos.md/](https://todos.md/)) or view the source here ([https://github.com/Prefinem/TODOS.md](https://github.com/Prefinem/TODOS.md))

EDIT: grammar hurts

<comment><USER3> "Shameless"? So you shamelessly help me, and I'll shamelessly thank you. (It looks interesting, too.)

<comment><USER5> Agreed. I think this 'shameless' before posting a project of yours that answers or is related to the question/topic at hand is... wrong? People shouldn't feel shame plugging their work and so, it would follow, 'shameless' is unnecessary.

Edit: Not to attack the poster. The poster is following societal convention, basically.

</comment></comment></comment></comment></comment><comment><USER6> Hmm, so... You've rediscovered the roots of the wikiwikiweb ([https://en.m.wikipedia.org/wiki/WikiWikiWeb](https://en.m.wikipedia.org/wiki/WikiWikiWeb)) ?

Nice. Wish more of the web was still like this, really...

</comment><comment><USER7> Nice! I like these small self-contained Go projects with their own web server (thinking about adding a Tor front and changing go-sqlite3 to an encrypted version for easy, safe at-home use). Easy, self-hosted websites is how the true decentralized web will come about (at least while we wait for the tech to share resources catches up).

If I could make one request, refactor the code a bit so that I could import it as a lib and use it on my own configured Go HTTP server. All that code in the main package is not very reusable if, say, I wanted to serve this as a net/http.Handler in a separate path.

<comment><USER8> That refactor would be really nice.

Maybe I'll send a PR this weekend :)

<comment><USER8> Just opened PR#12:

[https://github.com/schollz/rwtxt/pull/12](https://github.com/schollz/rwtxt/pull/12)

Now we'll find out if schollz is receptive :D

<comment><AUTHOR> I love it! Will include it soon.

<comment><USER7> And I piggy-backed off of it: [https://github.com/schollz/rwtxt/pull/15](https://github.com/schollz/rwtxt/pull/15)

</comment></comment></comment></comment></comment><comment><USER9> [https://rwtxt.com/public/list](https://rwtxt.com/public/list)

I love that feeling when something collaborative is brand new and everyone is testing the waters.

<comment><AUTHOR> My intention was that public should not be indexable/searchable. I fixed this.

However, if you really want private stuff, use a domain. Someone could still guess the URL of stuff on the public domain.

</comment></comment><comment><USER10> This is beautiful. Thank you for making and sharing!

My own setup is a NextCloud-storage directory hierarchy where I write notes using MDWiki [1]. This lets me continue recording my thoughts even when I'm offline.

[1] [https://dynalon.github.io/mdwiki/#!index.md](https://dynalon.github.io/mdwiki/#!index.md)

<comment><AUTHOR> Thanks.

I appreciate you sharing your solution too - its very clever!

</comment></comment><comment><USER11> I was wondering how to save text without sign-up and then realized that the url slug generated from the first line is the "login". Although no password implies no authentication. I can't help smiling seeing the slug becomes a unique id when I put "test" at the first line. I smiled even wider when I visited the "test" page. This is some interesting shit!

<comment><AUTHOR> Thanks :)

</comment></comment><comment><USER12> Been using this for a week and its intensely useful. I personally use this for tracking interesting posts / comments I come across HN. Market research on some major up coming purchases. And sharing notes with my sibling helping out with reviewing assignments. This has now become my goto choice over google docs for non-sensitive information. (Do not mean to imply I trust google docs with sensitive information).

It works beautifully on all of my screens (phone and laptop) syncs across all of my devices (I actually like refreshing the page manually. Don't ask why.) And the gorgeous text only interface is just too tempting to write.

I am personally promoting this within my circles.

THANK YOU !!!

Here's the above text on rwtxt: [https://rwtxt.com/public/been-using-this-for- a-week-and-its-...](https://rwtxt.com/public/been-using-this-for-a-week-and- its-intensely-useful)

</comment><comment><USER13> This editor is kickass: [https://michelson.github.io/dante2](https://michelson.github.io/dante2)

And this is a medium self hosted with dante2: [https://github.com/michelson/dante- stories](https://github.com/michelson/dante-stories)

</comment><comment><USER14> This is great, I wanted to able to edit hastebin/pastebin without login and it solves this exact problem. Since the link is not that easily guessable, content integrity should not be a problem.

<comment><AUTHOR> Thanks. If you really want to keep things to yourself you can log into a domain - anything you do in a domain is not public, by default (though you can toggle this).

</comment></comment><comment><USER15> This is pretty awesome! Nice and clean, and a simple responsive WebUI.

I was thinking about doing something similar to this recently, but with different names:

Captain's Log and Captains Blog

You'd toggle Captain's Blog, which would forward it on to a configured static page generator and display it for you.

</comment><comment> 52-6F-62 How many languages have syntax highlighting?

I noticed Javascript and Python do, but I wasn't getting anything for others.

It works great, but watch out for those public pages. It's wide open to spam presently.

It's nice and no frills, though.

<comment><AUTHOR> Right now I think just Javascript, Python and Go. I'm using prism.js for highlighting and I haven't figured out a smart way to deliver the CSS without bundling all of them.

In the future I'd just like to replace it with server-side highlighting.

</comment></comment><comment><USER16> Was this inspired by [http://txti.es/](http://txti.es/)? Looks awfully similar.

<comment><AUTHOR> It is based off [https://cowyo.com](https://cowyo.com), which was based off [https://shrib.com](https://shrib.com) ...which was based off something else presumably.

<comment><USER17> jottit.com was the original Aaron Swartz project

</comment></comment></comment><comment><AUTHOR> I don't know if you'll ever see this, but whoever is writing the haikus on rwtxt, you are amazing! I absolutely love them.

</comment><comment><USER18> This reminds me a lot of txti.es. The difference seems to be that this allows anyone to edit a post (in the public domain).

</comment><comment><USER19> I've been missing this sort of thing since the maintainer of notepad.cc shut it down...

</comment><comment><USER20> This is really cool! I am definitely going to mess around with this later.

</comment><comment><USER21> Like the idea. Just about 1-day and 3hours late.

I've reworked my website/blog (vuejs) completely using a similar minimalistic approach.

[https://leonardofed.io](https://leonardofed.io)

</comment><comment><USER22> How is this different from something like C2?

<comment><USER23> Have you been to C2 recently? It's now a web app that load only if you have JavaScript activated. Pretty sad.

At least this one works well on text browsers, and pages load fast without the need for a spinner.

<comment><USER22> I was an actual admin for C2 once. I'm talking about the original software design.

Yeah, it's archived now. But it's essentially the same software but doesn't... even credit the concept of wikis in any way? It seems quite bad to not credit wikis in any way here.

<comment><USER23> Oh, you were an admin of C2? That's cool!

Yeah this new service is definitely a wiki.

</comment></comment></comment></comment><comment><USER24> This is freaking awesome.

</comment><comment><USER25> Hey I'm a HUMAN, not a cow to be milked by someone.

I do write text, our information is mostly textual. But I need it manageable, organize with file taxonomy, structure taxonomy and full-text/fuzzy search. Something like org-mode. Something that I can post on the web if I like, but certainly not such a limited notebook.

Sorry, IMVHO many create applications just to write them, not to really use them nor to reason about a task they want to solve/automatize efficiently.</comment>


Apple Wins Ruling in New York iPhone Hacking Order - <AUTHOR> http://www.nytimes.com/2016/03/01/technology/apple-wins-ruling-in-new-york-iphone-hacking-order.html?ref=technology&_r=0 <comment><USER2> This is the second article from NY Times that is slightly biased in favor of the FBI. The first was _" Apple's Privacy Fight Tests Relationship With White House"_ [1]

From the article,

> denied the United States government's request that Apple extract data from > an iPhone

This is oversimplified and a biased viewpoint. Apple has extracted data from phones in the past for the DOJ. This case is different. Apple is being asked to put its stamp of approval on special software that breaks the phone's security features.

> Timothy D. Cook, has refused to comply with a federal court order to help > break into the phone, saying that he needs to protect the data of all > customers

Oversimplified, again. _Apple_ has filed a long brief detailing many of their objections, including a breach of their first amendment rights, claiming what the FBI is asking is compelled speech. [2]

> Both the F.B.I. and Apple have called for Congress to step in to help settle > the question of when law enforcement should get access to citizens' private > data

Apple certainly hasn't called for a new law. No new law is needed to support their position. Cook has said that _if_ a debate needs to take place, it should happen in Congress where the public has a voice. [3]

> While judges around the country have signed at least 70 orders at the > request of the government compelling Apple to access data on phones, this > was the first time that a judge and Apple have pushed back.

Again, oversimplifying and muddying the issue. Those other orders were under _different circumstances_. Apple had direct access to data in those cases, and did not need to create signed software that circumvents their security mechanisms in order to comply.

> During the case, Judge Orenstein said he found it puzzling that Apple had > not previously resisted the use of the All Writs Act, including in other > cases where Apple had complied with the order.

No mention of Apple's response here. Given Judge Orenstein's 50 page ruling in Apple's favor [4], one can only imagine that Apple told the Judge they had direct access to data in those cases, but did not have it for the NY drug case, and that the judge later came to understand that answer.

> Ultimately, Judge Orenstein argued that the government couldn't use the All > Writs Act to ask Apple to help extract information from a device because > that request falls under a different law, the Communications Assistance for > Law Enforcement Act, or Calea.

The judge did _not_ say that the request falls under CALEA. Rather, he explicitly stated that CALEA does not apply to Apple in this case over the course of 20 pages [4]. He even says that Congress' omission of a statute in CALEA that would include Apple in this case does _not_ mean that Congress did not consider including such a circumstance, and therefore, Congress _intentionally_ chose not to create such a restriction,

 _I therefore conclude that what the government seeks here is "to have the court give it authority that Congress chose not to confer."_ [4]

> "From a technical, legal standpoint, it doesn't really have much of an > effect in the California districts," Mr. Berg said.

I doubt that. It is not binding, but common sense tells you that the San Bernardino magistrate will read the NY drug case's memorandum.

[1] [http://www.nytimes.com/2016/02/27/technology/apples- privacy-...](http://www.nytimes.com/2016/02/27/technology/apples-privacy- fight-tests-relationship-with-white-house.html)

[2] [https://www.techdirt.com/articles/20160225/15240333713/we- re...](https://www.techdirt.com/articles/20160225/15240333713/we-read- apples-65-page-filing-calling-bullshit-justice-department-so-you-dont-have- to.shtml)

[3] [http://abcnews.go.com/WNT/video/exclusive-apple-ceo-tim- cook...](http://abcnews.go.com/WNT/video/exclusive-apple-ceo-tim-cook-sits- david-muir-37174976)

5:15

Tim Cook: _If there should be a law that compels us to do it, it should be passed out in the open, and the people of America should get a voice in that. The right place for that debate to occur is in Congress._

[4] [http://blogs.reuters.com/alison- frankel/files/2016/02/appleb...](http://blogs.reuters.com/alison- frankel/files/2016/02/applebrooklyn-2.29.16order.pdf)</comment>


Text Based Business Game in Bash - <AUTHOR> https://github.com/lucaswhitaker22/bash_cafe <comment><AUTHOR> Hello! I am a 16 year old who just got into programming. I am fairly new, but I have been trying to learn Bash. I thought a fun project I can attempt is to to make a small text based game based on "Lemonade Stand" from the late 70s. I created a very simple version (works, most of the time) and put it on Github. It would be great if you guys can maybe take a look, give me some feedback (I know my code will be revolting, but hope to learn how to improve it) or even contribute!

I am actively working on it, adding new stuff every few days. It is still in it's really early stages, and I plan to make it something much much bigger then this. I would really appreciate it if you guys can watch the repository and give it a star. It would mean a lot!</comment>


He came to the U.S. for a beard competition. Law enforcement was waiting - <AUTHOR> https://www.washingtonpost.com/news/morning-mix/wp/2017/10/05/he-came-to-the-u-s-for-a-beard-competition-law-enforcement-was-waiting/ <comment><USER2> paywall

<comment><USER3> Mirror:

He was in the country because of his beard.

It was hard to miss, a showstopper, holy-man thick and dropping to his belly button. When Gal Vallerius stepped off a plane from France last month in Atlanta, he was on his way to the 2017 World Beard and Moustache Championships in Austin. It was his first trip to the United States.

But the 38-year-old Frenchman did not make it. Federal authorities were waiting on the ground at the airport, ready to pounce on the accused dark Web drug dealer they knew as "OxyMonster."

According to court documents filed this week, Vallerius was taken into custody in late August. His laptop was searched, yielding a Tor browser to access the dark Web and $500,000 worth of bitcoin. And there were other clues linking Vallerius to the "OxyMonster" accounts on Dream Market, a Pirate Bay-style online black market.

After an initial appearance in a Georgia federal court, the accused drug trafficker was transferred to Miami, where he faces a charge of conspiracy to distribute controlled substances. The arrest comes follows a wave of similar prosecutions from the U.S. Department of Justice, where Attorney General Jeff Sessions has made dark Web crime a high priority.

Vallerius is not accused of merely using dark websites to traffic drugs. According to an affidavit filed by an Drug Enforcement Administration agent, Vallerius also acted as "an Administrator, Senior Moderator, and Vendor on Dream Market, playing a critical role in supporting daily illicit transactions between buyers and vendors."

The court affidavit states investigators had been poking around Dream Market since early 2016. Earlier this year, investigators noted a list of administrators and moderators on a Dream Market forum. "OxyMonster" was listed as a senior moderator.

Further searches on the account showed "OxyMonster" was selling OxyContin and Ritalin on the site, with "60 prior sales and five star reviews from buyer," the records note. "In addition, his profile stated that he ships from France to anywhere in Europe." Gal Vallerius. (via New York Daily News video)

It was not difficult for investigators to discover "OxyMonster's" identity. The account featured a digital "tip jar" for bitcoins. Agents then "conducted analysis of the incoming and outgoing transactions from that bitcoin address and learned that 15 out of 17 outgoing transactions from the 'OxyMonster' tip jar went to multiple wallets controlled by French national" Gal Vallerius.

Armed with the name, investigators found Instagram and Twitter accounts for Vallerius. They compared the writing style from the social media accounts with "OxyMonster's" prose on Dream Market. "Agents discovered many similarities in the use of words and punctuation" including "the word 'cheers;' double exclamation marks; frequent use of quotation marks; and intermittent French posts," the affidavit states.

The documents with the court, however, do not indicate whether investigators actually purchased drugs from the account. The affidavit, however, notes that law enforcement knew Vallerius was coming to the United States for the beard competition. They were waiting.

Court records indicate the defendant has yet to make an appearance in Miami. According to the Miami Herald, Vallerius is among a half-dozen other deep Web prosecutions in the South Florida court in the past year.</comment></comment>


Widespread Rights Violations in Policing of Occupy Movement - <AUTHOR>

From a new report by the Protest and Assembly Rights Project, which includes civil liberties experts from law clinics at NYU, Fordham, Harvard, and Stanford:
[A]cross the United States, abusive and unlawful protest regulation and policing practices have been and continue to be alarmingly evident. This report follows a review of thousands of news reports and hundreds of hours of video, extensive firsthand observation, and detailed witness interviews. In New York City, some of the worst practices documented include:
•  Aggressive, unnecessary and excessive police force against peaceful protesters,
       bystanders, legal observers, and journalists
•  Obstruction of press freedoms and independent legal monitoring
•  Pervasive surveillance of peaceful political activity
•  Violent late-night raids on peaceful encampments
•  Unjustified closure of public space, dispersal of peaceful assemblies, and kettling
       (corralling and trapping) of protesters
•  Arbitrary and selective rule enforcement and baseless arrests
•  Failures to ensure transparency about applicable government policies
•  Failures to ensure accountability for those allegedly responsible for abuses
These practices violate assembly and expression rights and breach the U.S. government's international legal obligations to respect those rights. In New York City, protest policing concerns are extensive and exist against a backdrop of disproportionate and  well-documented abusive policing practices in poor and minority communities outside of the protest context.
http://www.chrgj.org/projects/suppressingprotest.pdf <comment><USER2> Why is this on HN?

<comment><AUTHOR> Civil liberties. And the report is made possible by youtube and smart phones.

Not relevant?</comment></comment>


Create a professional resume in minutes- cvlogin.com - <AUTHOR> https://cvlogin.com <comment><AUTHOR> Cvlogin has a goal of helping everyone to create easy to read, beautiful and professional CV's effortlessly. Cvlogin is absolutely free and it's simplistic, one-click design enables users to create beautiful, professional CV's in minutes. CV's can be downloaded as PDF files or shared as open or password protected links. Relevant information can be imported from Facebook and social accounts.</comment>


tmux v2.5 Released - <AUTHOR> https://raw.githubusercontent.com/tmux/tmux/2.5/CHANGES <comment><AUTHOR>
        * Reset updated flag when restarting #() command so that new output is properly
          recognised. GitHub issue 922.

        * Fix ECH with a background colour.

        * Do not rely on the terminal not moving the cursor after DL or EL.

        * Fix send-keys and send-prefix in copy-mode (so C-b C-b works). GitHub issue
          905.

        * Set the current pane for rotate-window so it works in command sequences.

        * Add pane_mode format.

        * Differentiate M-Up from Escape+Up when possible (that is, in terminals with
          xterm(1) style function keys). GitHub issue 907.

        * Add session_stack and window_stack_index formats.

        * Some new control mode notifications and corresponding hooks:
          pane-mode-changed, window-pane-changed, client-session-changed,
          session-window-changed.

        * Format pane_search_string for last search term while in copy mode (useful
          with command-prompt -I).

        * Fix a problem with high CPU usage and multiple clients with #(). GitHub issue
          889.

        * Fix UTF-8 combining characters in column 0.

        * Fix reference counting so that panes are properly destroyed and their
          processes killed.

        * Clamp SU (CSI S) parameter to work around a bug in Konsole.

        * Tweak line wrapping in full width panes to play more nicely with terminal
          copy and paste.

        * Fix when we emit SGR 0 in capture-pane -e.

        * Do not change TERM until after config file parsing has finished, so that
          commands run inside the config file can use it to make decisions (typically
          about default-terminal).

        * Make the initial client wait until config file parsing has finished to avoid
          racing with commands.

        * Fix core when if-shell fails.

        * Only use ED to clear screen if the pane is at the bottom.

        * Fix multibyte UTF-8 output.

        * Code improvements around target (-t) resolution.

        * Change how the default target (for commands without -t) is managed across
          command sequences: now it is set up at the start and commands are required
          to update it if needed. Fixes binding command sequences to mouse keys.

        * Make if-shell from the config file work correctly.

        * Change to always check the root key table if no binding is found in the
          current table (prefix table or copy-mode table or whatever). This means that
          root key bindings will take effect even in copy mode, if not overridden by a
          copy mode key binding.

        * Fix so that the history file works again.

        * Run config file without a client rather than using the first client, restores
          previous behaviour.

        * If a #() command doesn't exit, continue to read from it and use its last full
          line of output.

        * Handle slow terminals and fast output better: when the amount of data
          outstanding gets too large, discard output until it is drained and we are
          able to do a full redraw. Prevents tmux sitting on a huge buffer that the
          terminal will take forever to consume.

        * Do not redraw a client unless we realistically think it can accept the data -
          defer redraws until the client has nothing else waiting to write.</comment>


Show HN: Gathio, an easy way to share events for those of us without Facebook - <AUTHOR> http://gath.io <comment><USER2> Very interesting approach, I like the simple, no brainer way to create and share events.

Quick feedback:

\- The date and time picker is a bit small to use on mobile, especially the sliders. Also it would be nice to have the end date/time follow the start date/time + a given average duration (1 or 2 hours), saves a bit of tapping around.

\- When posting an event URL on Slack, it only shows the description of gath.io, and not a summary of the event, which would be a nice UX touch.

Do you have plans to make it open source ?

Good job !

</comment><comment><AUTHOR> It's just a very little Node thing I made in a serious bout of procrastination, but I'm surprised I've not seen anything like it around before - general, quick to use, easy to share, doesn't try to snoop on you. I'm sure it already exists in lots of forms, and I'd love comments and criticisms because it's one of the first things I've really coded (which is mildly exhilarating).</comment>


Introduction to HAProxy ACLs - <AUTHOR> https://www.haproxy.com/blog/introduction-to-haproxy-acls/ <comment><USER2> HAProxy has been and continues to be one of my favorite tools because of features like this. Stuff where you might have to start digging around, say, arcane and fragile Apache rewrites, becomes a series of surprisingly readable functional-like statements that make reasoning about the implications of those statements easy. Even for HAProxy newbies, they can get going really fast and have the confidence that their changes aren't going to lead to major breakage because of its readability.

Just today I deployed some haproxy acls to transparently partition traffic for new API features off of a customer's main legacy application onto a dedicated cluster of API machines. It still surprises me just how easy doing something like that is. The most difficult part of that process was remembering the business logic--to append a query string value that that API expected to see in the request for this part of the migration. This is completely unlike munging around Apache rewrites and hoping that you didn't leave off a 'L' and make it start looping, or forget to append the query string, stuff like that.

I think that if you work with anything web-facing, regardless of the scale, you'd be well served by learning even HAProxy's most basic features and building from there. You'd be astounded at how far you can get with even a basic configuration.

<comment><AUTHOR> Yep. Obviously I'm a fan of HAProxy based on my post history - but it truly is one of those transformational tools you only come across a few times during a career.

It's basically one of those tools you end up looking for problems for it to solve it's so elegant. I have my HAProxy hammer, and everything is a nail!

Cannot give Willy and team more kudos!

<comment><USER2> I am the same way, I advocate a lot for replacing legacy LBs (F5? Citrix? blech) and software not really suited for LB functions, a la Apache, with HAProxy. It's working out well so far.

Combine that with a nice network and a tasty [EI]GP and be in pure web-serving bliss (of which I've only worked on two networks with that kind of design forethought, which is a shame).

<comment><USER3> What do you mean by nice network?

<comment><USER4> Based on the E/IGP comment, I'd guess they mean a routed layer 3 network that can speak routing protocols down to the host level. As opposed to the big ol flat networks that get pushed around frequently

</comment></comment></comment></comment></comment><comment><USER5> I absolutely love HAProxy ACLs. I use them to rewrite LetsEncrypt requests to another destination so I can cleanly request certificates on the proxy host without downtime or configuring backends or backend servers.

I've also recently migrated one proxy from Traefik to HAProxy, previously I had two proxies, one with T and one with HAP, for different IP ingests, now it's one HAP. Though I don't have failover since the networking in LXC seems to dislike multiple interfaces on the same subnet and doesn't seem to like HAProxy trying to listen on specific interfaces either, that'll have to move to VMs. (I need separated frontends with separate IPs)

The easy part there is that I fully automated HAProxy deployment including certificates with ansible, so moving from container to VM will be a breeze.

Lastly, performance is amazing. I've never had HAProxy even hiccup, even when I got DDoS'd at some point HAProxy held up like a champ.

<comment><USER6> Any losses from Traefik now that you're fully HAP?

<comment><USER5> I didn't rely on T's docker integration, that would have been a loss, I guess. HAP has much better behaviour though, T tended to buffer requests a lot which lead to several times in which either T crashed or the host system started swapping like crazy because the server had balooned to a few gigabytes memory.

</comment></comment></comment><comment><USER7> I switched from nginx to HAProxy for my internal reverse-proxying needs and it is excellent, the configuration is a bit more verbose but it handles every app (including WebSockets, weird RPC, cookies etc) with ease.

</comment><comment><USER8> Shameless self-plug[0] on porting a basic HAProxy Use-case to Envoy[1]

It might give you an insight how Istio et al are doing their magic through Envoy.

This is my first Tech-post, any comments are appreciated.

[0] [https://learn.cybus.io/lessons/envoy- primer/](https://learn.cybus.io/lessons/envoy-primer/)

[1] [https://www.envoyproxy.io/](https://www.envoyproxy.io/)

edit: formatting

</comment><comment><USER9> Damn. All these years and I never realized anonymous/inlined ACLs were possible.

</comment><comment><USER10> anyone tried Traefik?

[https://github.com/containous/traefik](https://github.com/containous/traefik)

Thinking of using it for a new home based reverse proxy solution over HAProxy

<comment><USER11> It's cool, but it's HTTP/HTTPS only, I believe.

<comment><USER12> It lists "Websocket, HTTP/2, GRPC ready" under Features

<comment><USER5> HAProxy can do TCP traffic, I do that to proxy SMTP and SSH into backend servers where they are needed.

</comment></comment></comment></comment><comment><USER13> I use HAProxy through PF-Sense to route external traffic to my internal network over SSL behind the firewall. It's been painless and great.

</comment><comment><USER14> There are some strange and obvious errors in this post. Don't get me wrong I appreciate the post and I did learn some stuff, but do some proofreading.

> 192.168..122.3 Is this some new IP format I'm not aware of?

> acl evil path_beg /evil > acl evil path_beg /evil This is the same line > twice to demonstrate a logical OR (I guess one is supposed to be path_end)

<comment><USER15> Thanks for pointing this out. We have corrected this.

</comment></comment><comment> VvR-Ox Thank you for sharing this, I think many ppl are happy for every example and code snippet they can get.

The configuration hassle with HAProxy however let me switch to nginx and traefik in the meantime...</comment>


Principles for a Contract for the Web - cezar-augusto https://contractfortheweb.org/ <comment><AUTHOR> It's interesting to compare with the Declaration of Independence of Cyberspace: [https://www.eff.org/cyberspace- independence](https://www.eff.org/cyberspace-independence)

</comment><comment><USER2> Who decide what's best in humanity? Who decide what's civil discourse? I guess those in power. So, go away.

</comment><comment><USER3> Interestingly, in the beginning they talk about "internet", and later switch to "the web".

</comment><comment><USER4> This contract is very funny with the GDPR tracking cookie notice at the bottom

<comment><USER5> And Google and Facebook on the forefront of privacy commitments.

Foxes are in charge of the hen house.

</comment></comment><comment><USER6> Hard to take anything like this seriously with Facebook's logo on there.

<comment><USER7> Facebook and Google. Does either organization "Respect consumers' privacy and personal data So people are in control of their lives online"?

<comment><USER3> At least, Google allows you to download your data.

</comment></comment></comment><comment><USER8> This so-called "contract" uses the language of compromise: different interests each making about equal concessions in order to achieve some collective greater good.

Yet the substance isn't there. One party gets away with only the sort of instructions a toddler usually hears: go out and have fun, be the best you can be!

Yeah, that's the category of users/citizen. I'm sure even the vacuous promises asked of users will find plenty of outrage here, because for some reason "respecting civil discourse and human dignity" is taken as a scandalous attack on the _real_ victims of everything that happened since enlightenment, namely young white men who just want enrich the marketplace of ideas with innovative new anti-semitic memes and HRC rape fantasies.

But in any case it's a meaningless promise because there's no way to nudge those opposing such notions of decency towards compliance. The real world has the old neighbour's stern look of disapproval as a low-intensity intervention to corral people into what's considered manners, or decency, or legal. That, plus mechanisms of reputation, and the difficulty of choosing one's company as freely as one does online has traditionally ensured norms of behaviour. None of those mechanisms has managed the jump online.

To suggest something that would actually make for a substantial contribution by users, here's an idea that you will hate, which sort-of proofs my point: users should, at least in principle, be willing to tolerate some advertisement. As in: not animated, not obscuring content, with tracking limited to maybe some broad categories, and not consuming more bandwidth than appropriate. "willing to accept" should include, for example, some efforts by ad blockers to automatically categorise ads and selectively block harmful and annoying ads.

I'm somewhat certain that ads follow the 80/20 rule, and blocking just 20% could give users all they actually want while preserving at least the theoretical chance for ad-financed journalism.

This would seem to be rather meaningful, considering societies life and die with the quality and availability of information. And contrary to some utopian fantasies in the mold of the Cluetrain Manifesto, the web has not actually lead to the emergence of a suitable replacement for a paid journalist to schlepp to city council every morning.

I know many regard ad blocking as an act of self-defense. And I agree, at least in principle, maybe not quite with the overly dramatic testimonials of grievous personal harm. Adtech has just gone too far, and thereby provoked this sort of arms race in the first place.

To find a better equilibrium, those two sides would need to find a way to deescalate, which would require some sort of tacit agreement, or a sequence of tit-for-tat disarmament. But that's quite hard to pull of for two amorphous group with no relevant mechanisms or structures for coordination.

I dunno... Maybe some sort of contract?</comment>


Q: Why Monogamous Marriage? A: Lower crime, higher economic growth - <AUTHOR> http://dl.dropbox.com/u/5317066/2012-heinrich-puzzlemarriage.pdf

<comment><AUTHOR> ""The anthropological record indicates that approximately 85 per cent of human societies have permitted men to have more than one wife (polygynous marriage), and both empirical and evolutionary considerations suggest that large absolute differences in wealth should favour more polygynous marriages. Yet, monogamous marriage has spread across Europe, and more recently across the globe, even as absolute wealth differences have expanded. Here, we develop and explore the hypothesis that the norms and institutions that compose the modern package of monogamous marriage have been favoured by cultural evolution because of their group-beneficial effects—promoting success in inter-group competition. In suppressing intrasexual competition and reducing the size of the pool of unmarried men, normative monogamy reduces crime rates, including rape, murder, assault, robbery and fraud, as well as decreasing personal abuses. By assuaging the competition for younger brides, normative monogamy decreases (i) the spousal age gap, (ii) fertility, and (iii) gender inequality. By shifting male efforts from seeking wives to paternal investment, normative monogamy increases savings, child investment and economic productivity. By increasing the relatedness within households, normative monogamy reduces intra-household conflict, leading to lower rates of child neglect, abuse, accidental death and homicide. These predictions are tested using converging lines of evidence from across the human sciences.""</comment>


Ask HN: What's the most important software in the world? - <AUTHOR> Currently and in the future <comment><USER2> The one running my son's insulin pump.

<comment><USER3> You're making the point here. It's the software that makes our lives significantly better, which is the most important one.

However, as software is everywhere, the original question is the same thing as "what physical invention" is the most important one?

From one standpoint this could be something like the wheel or electrical light, i.e. Bios, compiler or a network stack in the software world. Or, something way more personal, like health care related software for the loved ones or some more profane stuff.

To make the question even less tangible, software in general can be replaced more easily than physical things, most of the time.

</comment></comment><comment><USER4> The most important software I've seen is Excel. Almost every new application I see is trying to replace excel in some domain or the other.

<comment><USER5> +1. And I think most of the software that try to replace it somehow fails.

</comment></comment><comment><USER6> The Perl on nuclear warheads that aren't exploding.

[http://www.foo.be/docs/tpj/issues/vol2_1/tpj0201-0004.html](http://www.foo.be/docs/tpj/issues/vol2_1/tpj0201-0004.html)

</comment><comment><USER7> *nix based operating systems.

</comment><comment><USER8> Leaving highly classified and for whom kinda questions aside, I must say it's the software that the good guys SWIFT ([http://swift.com](http://swift.com)) use to run the global financial network.

The SWIFT Network has no real alternatives and entire countries teeter towards bankruptcies when they're banned from using it.

The last time the US banned Iran, Iran reportedly lost $100M; everyday!

[Edit] Spellings and URL

<comment><USER9> Probably that is why big economies are after crypto networks. Ripple is a close alternative for the SWIFT network.

</comment></comment><comment><USER10> The TCP/IP stack in the BSD everybody copied from around the time win 95 was being developed.

</comment><comment><USER11> Whatever "Operations Plan 8044" is supported by / implemented in:

[https://en.wikipedia.org/wiki/Nuclear_weapons_of_the_United_...](https://en.wikipedia.org/wiki/Nuclear_weapons_of_the_United_States#Command_and_control)

<comment><USER12> highly classified stuff, but in its day likely a FORTRAN implementation, the OPLAN is not simply a computer program but is a heuristic of human operations that is modified depending on current intelligence briefs, and asset deployment and distribution. The ARPANET [DARPANET] was a major part of this.

</comment></comment><comment><USER13> The relational database.

</comment><comment><USER12> in my opinion the most important software is actually firmware, that means the BIOS

[https://en.wikipedia.org/wiki/BIOS](https://en.wikipedia.org/wiki/BIOS)

the successor UEFI im not so happy about but it can be tamed, it seems to be a binary blob thin edge of wedged between the firmware and the OS.

[https://en.wikipedia.org/wiki/Unified_Extensible_Firmware_In...](https://en.wikipedia.org/wiki/Unified_Extensible_Firmware_Interface)

</comment><comment><USER14> I'm not by any means an Android fan, but I have to admit that AOSP has done more to make computing accessible to almost everyone in the world than any other platform.

</comment><comment><USER15> I had a teach who once was reviewing the history of computing. She explained how time sharing was invented in the 1960s. The ability for a computer to do more than one thing at a time, was a HUGE improvement.

</comment><comment><USER16> Any network protocol implementation.

</comment><comment><USER17> I'd go for software running power stations. Without power we're fucked.

</comment><comment><USER18> The Linux kernel

</comment><comment><USER19> For whom?

</comment><comment><USER20> In the future ,General task automation and artificial common sense

</comment><comment><USER21> Online Banking

</comment><comment><USER22> Whatever sewage is running electronic voting machines and vote tabulators.

</comment><comment><USER23> Web servers.

</comment><comment><USER24> Bios

</comment><comment><USER25> GIT

</comment><comment><USER26> Facebook and gmail and Google search are the most important softwares.</comment>


Discover Unique And Real Life Challenges On Youdare App - <AUTHOR> https://play.google.com/store/apps/details?id=com.minglemind.youdare&hl=en_GB

<comment><AUTHOR> YouDare is an amazing Android app which let you dive into the real-world with dares that you thought in your mind. With this app, you can create dare and select from 6 unique characters, each with their own skills and ready to accept a new challenge in your life. Upload your dare pictures and videos and reflect your story to the world.</comment>