How many ways are there to sort GUIDs? - <AUTHOR> https://devblogs.microsoft.com/oldnewthing/20190426-00/?p=102450 <comment><USER2> I'm not sure whose fault it is that GUID string representations depend on endianness, but I blame Microsoft. I've never seen a little endian string GUID anywhere that wasn't either Windows or a standard that had heavy MS involvement.

Hey, MS, the string "0001" is the number one, or the bytes 0,1 _in that order_. It is _not_ the number two hundred and fifty six!

<comment><USER3> Or even 128 or 8

</comment></comment><comment><USER4> I never understood why GUIDs were defined as

      typedef struct _GUID {
        DWORD Data1;
        WORD  Data2;
        WORD  Data3;
        BYTE  Data4[8];
      } GUID;

rather than simply

      typedef struct _GUID {
        BYTE Data[16];
      } GUID;

I get that traditional GUIDs have an internal structure, but it's entirely different than the struct (60-bit timestamp, 4-bit version, 16-bit sequence number, 48-bit MAC address).

<comment><USER5> It's divided exactly as it is in string representation: 4 bytes time_low, 2 bytes time_mid, 2 bytes time_hi_and_version and then: other stuff - 8 bytes.

<comment><USER4> But the string representation has five fields, not four.

There might be an interesting story in tracing the history of GUIDs through the ages...

I found some 1987 code dealing with UUIDs here: [https://stuff.mit.edu/afs/athena/astaff/project/opssrc/quota...](https://stuff.mit.edu/afs/athena/astaff/project/opssrc/quotasrc/src/ncs/nck)

They seem to have originated as a 64-bit "uid"s:

        struct uid_t {
            u_long clockh;
            u_int clockl: 4;
            u_char extra: 8;
            u_long node: 20;
        };

Then the 1987 version seems to have been something like this (with the reserved field ignored in the string representation!)

        struct uuid_$t {
            u32 time_high;
            u16 time_low;
            u16 reserved;
            u8 family;
            u8 host[7];
        }

And I guess that's pretty close to the current struct...

<comment><USER4> And to complete the story, I'm guessing that that old struct likely got serialized in the DCE protocol as dword/word/word/bytes, so the struct layout remained unchanged to maintain compatibility, even as the definition of an UUID evolved...

</comment></comment></comment></comment><comment><USER6> I'm struggling to understand the use case. The article offers "keys in an ordered map" or "binary search" \- but the idea of a binary search is that the order of the elements is inherently _meaningful_ , like the floors of a building, weights, rankings, etc. GUIDs are _meaningless_ by design, so there must be some underlying property that you're actually interested in searching. And in that case, why not use that property as the key to the collection?

Is there another use case here that I'm missing?

<comment><USER7> Often UUIDs are used as keys to things...

And these things are often stored in databases...

And usually the database puts them into a btree internally, because that's how tables are stored.

The moment you have any kind of load on such a table, your performance goes to hell. This is because the inserts are going to happen all over the place, and the way tables are stored definitely prefers appends.

So a common word of wisdom is to have an auto-increment primary key, and the uuid indexed! Ugh what a work around.

A better way is to discover ULIDs, which are like UUIDs but with the high-bits including a timestamp. This turns inserts into, approximately, appends. Much nicer!

[https://github.com/ulid/spec](https://github.com/ulid/spec) is fairly recent, but the 'trick' has been used for years. I've build gazillion-row databases where all the data sources have, independently, used this same high-bits-are- timestamp trick. So even though I didn't see it discussed and called ULID until fairly recently, its a very old and well-known trick in some circles.

Once you have ULIDs and you know you have UILDs, a lot of database type tasks become easier because the ID encodes a creation date. I've found myself adding AND id BETWEEN to queries, and using them as a partition key, and using them to DELETE old data etc, and various other admin stuff that the original creators of the table never thought about.

<comment><USER8> > Often UUIDs are used as keys to things...

IMO most data in DBs has a natural key. Why add a fake key? If it's to enforce uniqueness then that uniquness is spurious because it's a GUID which has no meaning to the data to which it's attached eg. you could have the same row 10000000 times but falsely uniquified with a different GUID.

Only exceptions I've encountered to my 'natural key' claim are addresses, which are a sod to canonicalise (in fact, seemingly impossible, I'd welcome any pointers).

Also UUIDs are bloody big keys, so fattening up tables and impairing disk/memory bandwidth. This matters if you have gazillion-row DBs, surely? I dealt with a near-billion row DB and shaving a few bytes off a row would matter to us bigly.

For the sake of argument I'll assert that you should never use UUIDs as keys, but please feel free point out where I'm wrong.

> This is because the inserts are going to happen all over the place, and the > way tables are stored definitely prefers appends.

This is opposite to my understanding in that an append to a table causes insertion hotspot which can be bottlenecks for insertion-heavy work. If it's inserting at random places there's no hotspot. I suppose updates scattered all over the btree could cause much more random disk activity though, do you mean that?

> So a common word of wisdom is to have an auto-increment primary key, and the > uuid indexed! Ugh what a work around.

Oh god no! Quite agree.

[stuff about ULIDs] I'd really like to understand what you're doing overall. It just sounds just wrong, though I'm sure that's down to me not understanding your use case.

<comment><USER7> Its easy to create plausible scenarios where things have UUID IDs.

For example, your classic customer database. Each customer has an ID.

Its hard to find a natural key for something as simple as a customer...

If you have a very narrow customer base then perhaps the company has a VAT number or something that seems natural. But get an international customer, or simply have problems getting people to enter those kind of details, gets unworkable fast.

And then I suppose the 'trading name' is another natural identifier, except they can change.

Hell, we've all experienced systems that have used the email address as a natural key, and all the resulting pain as those change.

Just today, in fact, I had trouble with a jetbrains subscription when I used my company's new domain name to register something and it created a new account for me. Ugh. Can't work out how to link them, just because I changed the email address on the pay page instead of the account page. Jetbrains, we expect better of you!

So, anyway, its normal to go with an auto-increment.

But, then, the modern web site you've just built exposes that id to the customer, and you've just leaked how many customers you have!

So modern best practice is to only expose UUIDs in public APIs.

And I'm saying, go with ULIDs instead. Your database will thank you.

<comment><USER8> I'm going to clarify something; I said most data has a natural key then when presented with this and other examples I seemed to have backed away from that. I hope this makes sense...

In the real world of atoms etc. there's no natural abstraction, including unique IDs (keys). These are all creations of ours.

In my line(s) of work, someone's invented and allocated a key for most items by the time it's reached me - people have SSN/NI numbers, planes will have some identifier, ships have IMOs, machine parts have unique part numbers (when combined with their suppliers' ID), geographical areas have postcodes/zipcodes, and all that.

So for me, someone's done that work already; a 'natural key' is available and I can rely on it. It's always been there, except for a few things such as addresses.

For you, willvarfar, customer numbers have to be created. So I made a wide assertion without thinking it through based just on my experience.

</comment></comment></comment></comment></comment><comment><USER9> The portions of a UUID/GUID have meaning, there isn't just one version, though the display as a string is relatively consistent. The sorting often will sort on the timestamp portion of UUID v1, there are variants of a GUID (COMB or Combined Guid or Sequencial UUID, etc) that are meant where a portion of the values are sequencial like v1, and the rest is mostly random like v4.

SQL is optimized for the portion that is timestamp based when using v1 algorithms, because it results in better indexing performance. It's also why there's a sequencial id option with SQL server.

Other systems/databases will sort the raw bytes differently, other languages/platforms will use different arrangements. IIRC MongoDB's JS API actually has like 3-4 different serialization options because of these inconsistencies between languages/platforms.

Edit:

[https://codingsight.com/combguid-generation-of-sql-server- fr...](https://codingsight.com/combguid-generation-of-sql-server-friendly- guid-values-in-net-applications/)

NOTE: sequencial id's are not quite the same, they're part of the auto insert so that they are ensured sequencial... this is the best indexing option for SQL Server, though a COMB is probably easiest for applications. Other dbms will structure them differently, so best do figure out your serialization strategy based on your db.

<comment><USER10> Here is a more recent post with benchmarks of different GUID algorithms in SQL Server, the author has a different outcome. In his benchmarks about index fragmentation, COMBGuid is not really much better than normal GUIDs. [http://microsoftprogrammers.jebarson.com/benchmarking- index-...](http://microsoftprogrammers.jebarson.com/benchmarking-index- fragmentation-with-popular-sequential-guid-algorithms/)

<comment><USER9> It does look like the sequencial ids (not the combs) does about 50% better overall, and the comb from nhibernate does about 10% better than just random uuids .. this is in terms of paging and indexes.. total time to run the test isn't bad, but that's just the insert time. If you're generating from your application layer and storing in SQL Server, looks like the best option is UuidCreateSequential.

</comment></comment></comment><comment><USER11> Here is a great related article I can recommend: [https://www.percona.com/blog/2014/12/19/store-uuid- optimized...](https://www.percona.com/blog/2014/12/19/store-uuid-optimized- way/)

</comment><comment><USER12> Check out ULID, lex-sort by time built in. It's super cool

<comment><USER13> Or try KSUID [0]. K-Sortable Unique IDs. I'm not affiliated, just easy to code from scratch and sortable.

[0] - [https://github.com/segmentio/ksuid](https://github.com/segmentio/ksuid)

</comment></comment><comment><USER14> So, a GUID is not actually a UUID? The article refers to endians, but I don't see endian referenced in the UUID spec (rfc4122).</comment>


Show HN: Personal recommendations are a foundation of our social relationships - <AUTHOR> https://medium.com/world-of-recommendo/why-personal-recommendations-are-the-foundation-of-our-social-relationships-c52edfc47125

<comment><USER2> Interesting, but does this fit here? What's new about recommendations? And what's technical?

<comment><AUTHOR> Well, we know that most of the posts here are technical and our submission doesn't look like that. But the background of the linked blogpost is an app, which provides a completely new way to make the most out of evangelism marketing. Especially for the small business sector.

<comment><USER3> It's a good post for HN. But does it fit ShowHN?

[https://news.ycombinator.com/showhn.html](https://news.ycombinator.com/showhn.html)

> Show HN is for something you've made that other people can play with. HN > users can try it out, give you feedback, and ask questions in the thread.

> A Show HN needn't be complicated or look slick. HN users are comfortable > with work that's at an early stage.

> If your work isn't ready for people to try out yet, please don't put "Show > HN" in the title. Once it's ready, come back and share it then.

> For example, blog posts, email signups, and fundraisers can't be tried out, > so they don't count as Show HNs.

<comment><AUTHOR> Oh, sorry for that mistake. We will take care of it for the next submissions. But the app behind the blogpost is already available in the app store. :)

<comment><USER2> Could you post the link if it is already available? I'd like to test and give feedback.

<comment><AUTHOR> Sure, here is the link to the app store. We're ready for feedback. :) [https://itunes.apple.com/en/app/recommendo/id932405753?mt=8](https://itunes.apple.com/en/app/recommendo/id932405753?mt=8)</comment></comment></comment></comment></comment></comment>


Ask HN: Developer Log Or Journal - wh-uws

So I got the idea in my head now that I want to keep a journal of the things I work on everyday so I'll have a record of what I get done and was working on as opposed to having to either dig through commit messages or the issue tracker.
Anybody know of any good software or websites specifically for this kind of thing?
I'm currently just using a google doc <comment><AUTHOR> free account at www.wordpress.com? it can be set to private.

There's also a free portable journal called Red Book</comment>


Is Working Full-time Bad for our Brains? - <AUTHOR> http://www.bbc.com/capital/story/20160714-is-full-time-work-bad-for-our-brains?ocid=fbfut <comment><USER2> Dupe. Discussion going on here: [https://news.ycombinator.com/item?id=12114681](https://news.ycombinator.com/item?id=12114681)</comment>


Gender is not a spectrum (2016) - <AUTHOR> https://aeon.co/essays/the-idea-that-gender-is-a-spectrum-is-a-new-gender-prison <comment><AUTHOR> > And if we extend the analogy to gender, we see that being non-binary > gendered is actually the norm, not the exception.

That's interesting, but I think it's sophistry taken a bit too far.</comment>


WayTools Textblade - <AUTHOR> https://waytools.com/products/textblade/1/trailer

<comment><USER2> Stuff like this always makes me so mad: [http://i.imgur.com/lFfYh2N.png](http://i.imgur.com/lFfYh2N.png)

I'll provide the alt text for that image: "Please view with Chrome, Firefox, or Safari" and the background image is an Android web view, and also a Link Bubble that opened after the _first_ popup happened.

I can assure you, having visited their crummy website, that the content was not so magical that anyone else should bother opening Chrome.

</comment><comment><USER3> Okay, it looks interesting, but what on earth is this talking about?

> _Unprecedented Computing Power_

> A network of 4 computers with 100X the processing power of legacy devices > drives advanced software intelligence. TextBlade runs for a month with > advanced Bluetooth Low Energy, and fast-charges on any USB port in just > minutes, without cords of any kind. [...]

Huh?

</comment><comment><USER4> Looks wonderful! I've ordered one just now, but I'm incredibly disappointed to find after clicking 'order' that I'm not expected to receive it until the end of March.

* Update * -- if you watch _all_ of the videos, it eventually shows you that it's not shipping right away.

</comment><comment><USER5> if nothing else, the charger looks quite cool. [https://waytools.com/store/showroom/info/nanocharger/tablet](https://waytools.com/store/showroom/info/nanocharger/tablet)</comment>


From the Wirecutter: The best consumer-grade SSD (for most people) - <AUTHOR> http://arstechnica.com/gadgets/2015/04/from-the-wirecutter-the-best-consumer-grade-ssd-for-most-people/

<comment><USER2> This is a chart from a HNler that compares the currently available SSDs in a nice way:

[http://www.productchart.com/ssd_drives/](http://www.productchart.com/ssd_drives/)

<comment><USER3> this site shows them in a better way

[http://forre.st/storage#ssd](http://forre.st/storage#ssd)

though atm it appears to have mis-scraped the price on some of them..

</comment></comment><comment><USER4> Why was the Wirecutter's link not submitted instead? [http://thewirecutter.com/reviews/best- ssds/](http://thewirecutter.com/reviews/best-ssds/)

<comment><USER5> Why was this submitted at all? There are affiliate links to Amazon, for the "recommended" products.

<comment><USER6> The Wirecutter as shown (to me, at least) that it can be impartial in its judgement of goods. To retain this impartiality, they don't run ads -- they do however link with affiliate links. The saving grace, however, is that most products among a category are sold at Amazon, so the comparison among them should not be affected at all.

I as a reader don't feel their decision on quality is at all influenced by what is on or not on sites with affiliate payouts.

</comment></comment></comment><comment><USER7> i've been running Samsung 840 Pro 256GB drives for the last several years, they're excellent. Will be getting an 850 Pro for next build.

<comment><USER8> He is recommending EVO. Given 840 EVO has problems with read performance deterioration for old data and the fact that Samsung doesn't even acknowledge similar problems with 840 non-EVO (I have one in an ultrabook I don't use too often and was shocked to see <10MB/s read performance on old data as well), I would be very very wary to buy any EVO in the future. We will see if Samsung actually fixed these issues in 850 EVO or they will appear as well.

<comment><USER7> i wouldn't touch an EVO series drive for any data that mattered. EVOs use TLC NAND which is not worth giving up MLC endurance for a few $ in savings, imo.

<comment><USER9> Hence "consumer-grade"

<comment><USER7> their non-pro drives used to be just "830" or "840" previously and classed as "consumer grade" but still MLC.

then they came out with the less durable TLC (EVO) and killed off non-pro MLC drives, re-branding the inferior EVO as the consumer drive.

they also make SLC (enterprise) drives.

<comment><USER8> 840 was the first TLC quickly superseded by 840 EVO.</comment></comment></comment></comment></comment></comment>


Why men are attracted to women with small feet  - <AUTHOR> http://www.newscientist.com/article/dn19118-why-men-are-attracted-to-women-with-small-feet.html <comment><USER2> 22 year old gay male here--I chose right, left, right, right. For the women, I thought the right faces looked happier and more engaging. I was pretty confident in my answers except for #2, the first male in the series. I think the transparent hair across the forehead was skewing my reaction.

If heterosexual males and females preferred the left images far more often, it's strange that I would have chosen the right for both. I wonder if these results are typical for my subgroup, and if so, why?

Gotta love having hardwired sexual preferences for a non-reproductive orientation! It's like asking whether you prefer carburetors or fuel injection on your bumper car. :)

<comment><USER3> What do you mean with 4 choices, and a male? I just found two faces on the article and I tried to follow the links but didn't see where these 4 options are.

<comment><USER4> The popup when you enter the page isn't actually spam, and isn't actually some customer satisfaction thing. It took me a few minutes to figure that out, though.

<comment><USER5> Obligatory: <http://xkcd.com/570/>

Heterosexual male, picked all four left, although only the first was obvious for me.

</comment></comment></comment></comment><comment><USER6> _"Women with smaller feet have prettier faces, at least according to the men who took part in this study. So do women with longer thigh bones and narrower hips, as well as women who are taller overall."_

Seems odd because short women usually don't have large feet (at least from my experience).

My wife is only 4'11" but has small feet.

</comment><comment><USER7> I thought the right face was more attractive - it looks "warmer" (nicer, friendlier) than the left one. I must be doing something wrong, like preferring women with whom I would like to be friends. ;-)

<comment><USER8> I agree. The one on the left seems to have the hallmarks of objective attractiveness, but I could much more easily see myself spending time with the one on the right.

<comment><USER9> Perhaps it's because the right looks more "human". The over compositing will result in attractive features, but it also seems like it can have an almost uncanny valley effect where it's rejected for being too perfect.

<comment><USER8> I can see that being true, but they're both composites. I don't know, the left one is what I'd call "hot", though it's not really attractive to me. The right one seems to fit "cute" much better.

</comment></comment></comment></comment><comment><USER10> This article makes no mention that preference might reflect contemporary culture and times.

<comment><USER11> I think the underlying assumption is that by selecting traits that one has relatively little control over (foot size, thigh length, etc.), then showing participants a physically unrelated trait (i.e. the face), that they're somehow insulating from contemporary culture.

One could still make the critique that contemporary culture values as attractive traits that are correlated with these other markers, whereas other cultures and times do not, but that argument starts getting a little convoluted itself.

Keep in mind that this work hasn't yet been published (just reported at a conference), so the actual paper will probably be a bit more careful about claims that they make.

</comment></comment><comment><USER12> Is it just me or do the two women's morphed faces not seem to be lit exactly the same? The right morph seems to have been photographed in harsher light.

</comment><comment><USER13> The difference in the space between lower lip in chin is great, also, the one on the right seems to have a squarer jaw, and less-highly-arched eyebrows, along with paler lips. Wider neck too.

In summary, the one on the right looks more like a man. Personal opinion, but I think I've provided some evidence to support it.

</comment><comment><USER14> Let's say I told you that one of these two women had acromegaly. Which would you pick? The one on the right, most likely. She would also have large feet due to her acromegaly. I suspect that growth hormone (not acromegaly per se) is the link that explains their findings.

</comment><comment><USER15> What about men who couldn't date a girl with a beautiful face that also had large feet?

This article doesn't spend much time talking about why men are attracted to small feet.

</comment><comment><USER16> Key quote:

> _Atkinson's explanation makes sense, says David Perrett, a psychologist at > the University of St. Andrews, UK, who studies facial attractiveness. Since > faces and bodies are shaped by the same hormones, he says, you should be > able to predict the attractiveness of one body part by looking at another._

So it is (perhaps obviously) not so much the small feet but the overall physiology, bone structure etc., they tend to be indicative of.

</comment><comment><USER17> Of those two facial morphs, I wonder which people would think had the higher IQ?

<comment><USER18> Agreed - as with the men (sex vs. long term mate), there are alternate survey questions that would be interesting.

IMHO, the "less attractive" one looks more athletic.

<comment><USER17> So, you think the one on the right would have a lower IQ? Yeah, she looks more athletic, but I think she'd have the higher IQ too. Maybe that's just me.

<comment><USER19> I think the parents were alluding to the unconscious deduction many many people have been shown to make- that more attractive people are smarter.

<comment><USER17> It's funny how things have changed since when I was a kid in the 1960s. Back then, attractive people were generally thought NOT to be smart because they were more social than unattractive (average-looking) people. I hold this belief to this day and in my personal life it has been rarely wrong.

<comment><USER19> At least in the US, that was hot on the heels of a lot of great scientists, and the nation's pride (the moon landing) was an absolute triumph of the brainy types.

I wasn't alive back then, but I've always gotten the impression attractive people were seen as less intelligent as a direct backlash from scientists and other brainy things being 'in'.

</comment></comment></comment></comment></comment></comment><comment><USER20> With only eight faces per morph, I'm not entirely convinced that there's enough data points here. But perhaps there were a lot more pictures involved in the actual study than we're being shown here.

</comment><comment><USER21> This reminds me of another study that found that a child of a smoking mother is more likely to end up in prison than that of a non-smoker.

Correlation is not a causation.

<comment><USER22> Did you read the article? What are you claiming is the wrongly attributed cause here? They didn't claim small feet cause pretty faces. They speculated on potential root causes that might affect feet and faces at the same time, but they certainly didn't say they proved any cause.

<comment><USER21> > What are you claiming is the wrongly attributed cause here?

They offer a theory that explains their findings, but I am unconvinced their findings are accurate. The sample size of 60 is just too small to average out such subjective parameter as attractiveness, which among other things greatly depends on non-physiological parameters such as lighting during a photo shoot, or a facial expression.

For example, if the girl on the right were to pout just a bit, or had darker hair, or if her hair were darker, or if she was wearing a different color, the preferences might've fallen her way instead. There are other variable parameters affecting the selection that have nothing to do with the bone structure or hormones.

</comment></comment></comment><comment><USER23> Ok more and more HN is reedit. Yes I flag, no I shouldn't comment but enough please !

</comment><comment><USER24> I'm sure there are a few really bad sexist jokes in reply to the title. I'll refrain from airing them here.</comment>


Back in the Day: Unix, Minix and Linux - <AUTHOR> https://www.linuxjournal.com/content/back-day-unix-minix-and-linux <comment><USER2> Articles like this always make me feel like I missed out on all the geek going on in the late 70s, 80s, and early 90s. Of course I was a toddler when Xerox PARC was demonstrating their UI to Steve Jobs, and was in middle school when Linus was posting about his "(free) operating system (just a hobby, won't be big and professional like gnu) for 386(486) AT clones."

So as I enter mid-life, I realize just how much I missed either not being old enough, not paying attention enough, or not having the means to get in the game. These stories of tech history, if nothing else, provide motivation for those, like myself, to get into the game and work on something useful -- and most of all something fun.

<comment><USER3> Better to ask what you can be part of now than worrying about what you missed.

The shape of computing has changed a bit since then but there's still a lot of very interesting work now and going forward.

But I totally get it... I've felt that way before about tech and music. In the case of music I spent so many years only paying attention to rock from the 70's, 80's and 90's and telling myself music was dead now, but it is not... it's just different and needs to be discovered.

</comment></comment><comment><USER4> I got on board with Slackware[0] 3 for 80386. Tried Minix a couple of times, also FreeBSD, OpenBSD, NetBSD, etc. Linux killed them due to community. Among other luminaries I met with Jon 'Maddog' Hall[1] a couple of times around 2000-2001, once in Sydney and once in Taiwan. We had various discussions, and I recall he said Linux was going to be "huge" in embedded. In 2008, Android happened. Fast forward another 10 years and now I am in China running a hardware company, and we're yet to see an open mobile offering. Even as my company have migrated from Linux to smaller microcontrollers for most tasks, and as computing and electronics at all layers continue to seep in to the rest of society causing massive changes (social networking, consumer-first walled garden devices, connected TV, mobile payment, everything-aaS etc.) on unsuspecting, status-quo industries, it's interesting to reflect on the continued significance of Linux's culture in shaping the technical community.

I don't in any way miss the hardware and bandwidth limitations of those days... but sometimes not having a billion examples on tap forced you to engage more deeply or distinctly with system fundamentals.

[0] Today I am a supporter of Gentoo (IMHO the 'spiritual successor' to Slackware) and NixOS.

[1] [https://en.wikipedia.org/wiki/Jon_Hall_(programmer)](https://en.wikipedia.org/wiki/Jon_Hall_\(programmer\))

</comment><comment><USER5> "Since nowadays GNU without Linux isn't hugely helpful, it's basically just been assimilated into core Linux and just about every distro of Linux includes GNU utilities or GNU versions of common UNIX-born tools."

Nowadays, _GNU compiler collection_ with or without Linux can be hugely helpful. e.g., it's basically just been assimilated into "core BSD" and just about every distribution compiles with GCC.

Even in the case of one "distro" where it was recently removed from "core" and replaced with clang, it is still easily added back from the ports/packages collection.

<comment><USER6> AFAIK freebsd has depricated gcc in favour of clang, and openbsd as well. Not sure about netbsd - I think there was some experiments with pcc?

<comment><USER7> Yeah well, but clang still has ugly corners. Take for example recent FPU bug on FreeBSD i386. GCC does not have it.

</comment></comment></comment><comment><USER8> I see that Linux and MacOS run Unix dervied kernels.

I dont see how Windows does so. Its heritage is more along the line of VMS.

[https://www.itprotoday.com/compute-engines/windows-nt-and- vm...](https://www.itprotoday.com/compute-engines/windows-nt-and-vms-rest- story)

Unless he means the Windows Subsystem for Linux but it is my understanding that it is not runing a Linux kernel, but mapping to the Windows (NT) kernel.

<comment><USER9> Didn't windows used to distribute BSD code? The old EULAs used to mention the regents of berkley. Was that the Windows kernel or some network stack?

<comment> m-i-l Yes, the Windows TCP/IP stack was from BSD. I'm not sure if the code is still in Windows, but I think it is still configured via an etc/hosts file. I believe the BSD licence was preferable to Microsoft (as it was to Apple who based OSX on BSD). The networking stack was supposedly better on BSD than Linux too, but I'm not sure how correct that is (but I did hear that the software company I set up a website for in the mid 1990s switched from Linux to NetBSD pretty much as soon as I left for that reason).

</comment></comment></comment><comment><USER10> I love historical pieces about technology. There's so much new and shiny all the time in tech, it's nice to reflect on where we've been.

Makes me want to re-watch Bryan's talk at Monktoberfest a few years ago on oral tradition in tech: [https://www.youtube.com/watch?v=4PaWFYm0kEw](https://www.youtube.com/watch?v=4PaWFYm0kEw)

<comment><USER11> Here are a couple of good places to start.

[https://www.computerhistory.org/timeline/computers/](https://www.computerhistory.org/timeline/computers/)

[https://archive.org/search.php?query=xerox](https://archive.org/search.php?query=xerox)

Change the previous query to any company or research institute, e.g. Burroughs, Apple, ETHZ, Borland and so forth.

<comment> yjftsjthsd-h Network; TCP or something

</comment></comment></comment><comment><USER12> > PARC had computers where multiple programs were on the screen simultaneously > in "windows", and there was a pointer device used to control them—so cool. > Doug Englebart was inspired too; he went back to Stanford Research Institute > and invented the mouse to make control of those windows easier.

Is that right? Doug Englebart invented mouse in 1963. Unlikely PARC had any windowing system capable machine around that period.

UPDATE: PARC was founded 1970. So the influence should definitely be inversed.

<comment><USER13> Yes, it's completely backwards. [http://worrydream.com/EarlyHistoryOfSmalltalk/](http://worrydream.com/EarlyHistoryOfSmalltalk/) [https://www.youtube.com/watch?v=oKg1hTOQXoY](https://www.youtube.com/watch?v=oKg1hTOQXoY)

</comment></comment><comment><USER14> That was an awesome article. Fun to read.

</comment><comment><USER15> What makes the minix operating system special?

<comment><USER16> MINIX was special because the book was used in many universities to teach operating system principles.

MINIX also one of the few affordable Unix-like operating systems you could run on your own PC, and it came with full source (except for the compiler)

Linus was running MINIX when he created Linux.

And finally there the famous discussion by Linus and Andy Tanenbaum (the creator of MINIX) about how operating systems should be structured.

<comment><USER17> Minix also runs Intel Management Engine in ring -3 on every CPU where it is enabled. That makes it one of the most deployed OS in the world.

<comment><USER18> Although this is Minix3 AFAIK which is quite different from the original Minix, with more BSD derived code, and designed for production not teaching.</comment></comment></comment></comment>


What Data Crunchers Did for Obama - <AUTHOR> http://www.businessweek.com/technology/content/jan2009/tc20090123_026100.htm?chan=top+news_top+news+index+-+temp_top+story <comment><USER2> Interesting, but it reads more like a PR hit for Spotlight Analysis than a meaningful piece on the use of data analysis in political campaigns.</comment>


3DNes – Play NES games in 3D (Firefox only) - <AUTHOR> http://3dnes.com/ <comment><USER2> after flappy bird, another display of great gamedev talent coming out of Hanoi, Vietnam</comment>


Raddit: An open source alternative to Reddit - <AUTHOR> https://raddit.me/ <comment><USER2> Eh it's not really a general purpose reddit clone, it was written by users of /r/anarchism as an alternative platform for discussion because they lost faith in the reddit administration. You can see this in the design of the site, with a larger focus on democratic decision making and an intolerance for any bigoted or racist communities. If voat was the alt-right's reddit alternative then raddit is the lefts.

<comment><USER3> Are anarchists considererd left wing? Anarchists and especially anarcho- capitalists have a lot of overlap with libertarians. If you talk to a serious anarchist, they sound like they are against big government and other authority structures. The far left is suppsed to be communist, which seems the opposite of anarchy.

<comment><USER2> All anarchists are left wing, the majority of which are communist (some are mutualist). Anarchism has always been an anti-capitalist movement (I guess it's fairer to say, it's an anti-unjust hierarchy movement), it's only been co-opted by propertarians ("anarcho"capitalist) in the past 50 years. And even then, that's largely localized to America, outside of America libertarians have always been anarchists (communist anarchists that is).

You should read Pyotr Kropotkins "The Conquest of Bread" and Alexander Berkman's "What is Communist Anarchism?" if you'd like to know more about anarcho-communist ideology. Or if you'd like to know more about mutualism (essentially a workers run system with a market), then check out the works of Joseph Proudhon.

I'd also argue that anarcho-capitalism and right-libertarianism are not anarchist in any sense, as they uphold the inherently hierarchical system of capitalism.

<comment><USER4> I think you have a fairly narrow view of anarchism.

> I'd also argue that anarcho-capitalism and right-libertarianism are not > anarchist in any sense, as they uphold the inherently hierarchical system of > capitalism.

In what way is capitalism hierarchical, except in an ad hoc way that is constantly redefined based on the current needs of the people interacting?

<comment><USER5> Capitalism is more about a few controlling the means of production than it is about market activity. People tend to think of it as a market economy but it's really about who has power and reaps it's rewards.

<comment><USER6> Actually what you're describing is just the fact that the word "capitalism" is used to mean markedly different things by different groups of people, which makes it a bad word to use in discussions between people with different perspectives.

Karl Marx's definition of "capitalism" is very different from Ayn Rand's definition of "capitalism". And both of them are very different from the "capitalism" that describes the economy as it actually exists in the present day.

</comment></comment></comment></comment></comment></comment><comment><USER7> I wonder if these people are aware that they didn't need to write a Reddit clone?

Why would you write a Reddit clone in PHP when Reddit itself is a perfectly fine open source Python project? Is their license not permissive enough?

[https://github.com/reddit/reddit](https://github.com/reddit/reddit)

<comment><USER8> Reddit is kind of a pain to run at small scale because it has so many dependences: [https://github.com/reddit/reddit/wiki/Dependencies](https://github.com/reddit/reddit/wiki/Dependencies).

</comment></comment><comment><USER9> I've said it in the last post about this site, but I'll say it again here regardless.

This site makes the same mistakes as a lot of other 'alternative' social networks or systems, in that it offers nothing for people who aren't interested in talking about politics or the problems on the original site.

It's entirely a hard left wing community laser focused on discussing American politics. There's virtually no discussion of more everyday topics there (like games, TV, movies, music, sports, etc), especially not in a way that doesn't cram politics into everything.

So people who don't care about political discussions or agree with your political views won't join this. Because there's nothing there that Reddit or independent forums on their favourite subjects don't do much better.

<comment><USER10> This.

An alternative to reddit would let you make dossiers: related news stories a little like some subreddit megathread do for huge news. So you could follow a developing story for multiple months or years. Have links to aggregate articles by authors, news site, area or protagonists.

A simple example of use: check r/science about old health breakthrough on mice and see if it fizzled or not or how advanced the human trials are.

</comment></comment><comment><USER11> You know why Reddit and Twitter became some toxic environments? Because they're not designed for healthy community development. And neither is this. It's a mindless clone and it already looks like it's turning toxic.

<comment><USER6> If there's one neologism I'd love to get rid of, it's the use of "toxic" to describe speech that you dislike. It's all over this thread.

Think about what the metaphor of "toxicity" does for speech. By all means, you can find speech to be disagreeable, or annoying, or factually or morally wrong. I read all sorts of things that I disagree with, and some that I find actively annoying. But the metaphor of "toxicity" implies something more -- that these ideas are actually dangerous, and some kind of public health hazard. If something is "toxic" then you don't just dislike it, you need to actively protect yourself from being contaminated with it, and it activates your disgust reflexes. After all, better to be safe than sorry when it comes to toxins, right?

Basically, the idea that ideas can be "toxic" seems to be a roundabout way of inviting censors to come in and save us all from the danger of having to read things that we don't like.

Let's ditch the word "toxic" for things that aren't actually harmful chemicals, and learn to deal with the fact that things we don't like on the internet are best dealt with by _not reading them_.

<comment><USER12> > best dealt with by not reading them

If A is discussing with B their plans for my murder, or creating fictional dossiers of alleged crimes of mine and sending them to police and my employer, or sharing compromising photos without my consent, then _ignoring them_ does not work.

Less hyperbolically, it's only safe to ignore the speech of others against you so long as it has no chance of having an effect. Whether that's through legislation or street violence.

Toxicity is exactly the right word for hate speech, because it can cause hate to spread out in ways that cause real injury or death.

<comment><USER13> You can't just try and smudge the line between speech integral to criminal conduct and defamation and other speech. The way we avoid sliding down the slope is by requiring an _immediate_ demonstrable harm - any fuzzy argument of the "can cause" variety is too easily applied.

</comment></comment></comment></comment><comment><USER14> With that name so close to Reddit, I expect you'll get a trademark infringement notice shortly.

<comment><USER15> Could probably fall under trade dress infringement too.

</comment></comment><comment><USER16> It didn't take long before your site was taken over by political extremists

<comment><USER2> It was built by anarchists to be an explicitly anti-capitalist community

</comment></comment><comment><USER17> Raddit is a terrible name....

Lets name our product confusingly similar to the original, even though we claim the original is terribly flawed: "Don't eat at Joeys, most of the food contains poisons, eat at Joeez!"

</comment><comment><USER18> Code is Symphony based and can be found here:

[https://gitlab.com/edgyemma/raddit-app](https://gitlab.com/edgyemma/raddit- app)

<comment><USER19> *Symfony

</comment></comment><comment><USER20> Why is it so difficult for a forum to accommodate different political views? Is this a problem of human nature?

The idea of a uncensored reddit it a good one, but the first thing I see going to the page is an administrator complaining that they apparently cannot effectively ban "nazis".

[https://raddit.me/f/lobby/6159/we-re-being-brigaded-by- nazis...](https://raddit.me/f/lobby/6159/we-re-being-brigaded-by-nazis-with- too-much-time-on-their)

From the comments I've read here, it definitely seems as though the site has the typical heavy handed administration banning opinions it disagrees with.

Why can't any of these sites just allow people of all political ideologies to post? 4Chan is the only site I can think of which has never had censorship of this sort. Why is this such a difficult thing to accomplish?

</comment><comment><USER21> Isn't Reddit already open source?

[https://github.com/reddit/reddit](https://github.com/reddit/reddit)

<comment><USER22> Components are, but no, not any more.

[https://www.reddit.com/r/changelog/comments/6xfyfg/an_update...](https://www.reddit.com/r/changelog/comments/6xfyfg/an_update_on_the_state_of_the_redditreddit_and/)

</comment></comment><comment><USER23> Hey mods can we rename this to "an alternative to reddit" Given the link has nothing to do with hacking or how the site was created or a link to the source

<comment> King-Aaron > Given the link has nothing to do with hacking or how the site was created

Let me draw your attention to:

\- Wind Energy Is One of the Cheapest, and It's Getting Cheaper (scientificamerican.com)

\- Fish are eating lots of plastic (washingtonpost.com)

\- A ten-day camel trek through the Australian outback (themonthly.com.au)

\- A Japanese Pen Maker Anticipated the Fountain-Pen Renaissance (bloomberg.com)

And thus discard your issue as not relevant

<comment><USER24> I think his point was that the title indicates it's an open source reddit clone but the content is nothing about the open sourceness of it or how it was created, whereas the articles that you point out are I assume true to their titles.

He wasn't saying it shouldn't be on here because it's not hackery, just it should have it's title renamed

</comment></comment></comment><comment><USER25> Uhhh... there's already a radd.it which is a nice viewer for reddit videos. people might get confused (or are these related?)

update: radd.it _just_ shutdown. hmmm...

<comment><USER26> This is interesting. I'm interested to know how this all occurred.

This statement is from here [http://radd.it/farewell.html](http://radd.it/farewell.html):

"Why? Some of the reasons are personal but many have to do with reddit. A few months after I finished working on this site, I had what I can only describe as a spiritual awakening. I now see how reddit is just a part of a far-larger deception designed to keep us blind and afraid. I no longer want to play any part in it. If you'd like to know more, I made a vid explaining things further."

<comment><USER27> I followed the link at the bottom, and checked out the top stickied post on the subreddit it linked to and... wow. This guy seems a bit off his rocker:

>"Can you spell 'buisness' for me?"

>Spell it with me, people. B-U-I-S-N-E-S-S. This word comes from the Dutch root word of 'buis' meaning 'pipe' as in a a process or workflow. "Business" is quite obviously busy-ness. Most demons will never admit this to be true or even entertain the thought.

>You'll hear things like "Doesn't work make you busy?" Yes it does, but that doesn't explain how you could get the pronunciation of 'buis-ness' from 'busi- ness'.

\-----

>This is the question I asked when my 'mother' was suddenly at my house back in California. (I was wrong about her being a 'clone' though.) She could not answer 'yes' to the question so I just kept asking it.

>Yes or no, are you my biological mother? "What? Why would you ask that?" It's a simple question. Are you my biological mother? "I don't understand why you'd even ask me that!" Yes or no-- "YES!!" You must wait for the question. Are you my biological mother?

(Hope I formatted this correctly)

</comment></comment></comment><comment><USER27> I like the idea, but the admins are... troubling.

I appreciate that they're banning nazis, brigaders, and people spamming bigotry and gore, but they're straight up wishing violence on these people. It's one thing to think "Wow, you're a dick and I hope you die" and another to openly admit it and let it influence your decisions.

Thanks, but no thanks.

</comment><comment><USER28> Personally, I would love to see something like Lobsters [0] made general purpose. It's very HN like, but I love the ability to tags posts with multiple tags so that a single topic of conversation can belong to multiple subreddit- like communities. I've always wished that HN would co-opt that tagging. It seems like the best of both worlds (general front page and targeted communities) and naturally aides discoverability of interesting communities.

[0] [https://lobste.rs/](https://lobste.rs/)

<comment><USER29> Whoa lobsters is really cool. Probably the best/most promising reddit alternative I've seen because it's not taken over by some kind of extreme faction of some form.

</comment></comment><comment><USER30> Was hoping this was going to be a better performing clone of voat, not an even more restrictive platform.

</comment><comment><USER31> > bigotry - intolerance toward those who hold different opinions from oneself.

</comment><comment><USER32> I really think the future is a decentralized model that rewards its users for content creation.

[https://steemit.com](https://steemit.com) is what I believe will replace reddit.

</comment><comment><USER33> There is already an open source reddit clone created from the same reasons [https://voat.co](https://voat.co) and it's far superior.

<comment><USER34> I like Raddit's design more, also Symfony over .NET.

</comment></comment><comment><USER35> Reddit is already (mostly) open-source, I think: [https://github.com/reddit/reddit](https://github.com/reddit/reddit)

<comment><USER36> They recently announced that this is going to be archived and no longer receive updates.

[https://www.reddit.com/r/changelog/comments/6xfyfg/an_update...](https://www.reddit.com/r/changelog/comments/6xfyfg/an_update_on_the_state_of_the_redditreddit_and/)

</comment></comment><comment><USER37> Wasn't this made by Mackenzie Child in 2014? [https://youtu.be/7-1HCWbu7iU](https://youtu.be/7-1HCWbu7iU)

<comment><USER37> Or maybe it has the same name

</comment></comment><comment><USER38> So glad this is PHP! What is node.js used for? Could I go without it?

<comment><USER39> Webpack, looks like. Only if you don't want a frontend?

</comment></comment><comment><USER40> The communities already there appear to be as toxic as reddit, so good job. I guess.

<comment><USER41> In my experience it's pretty easy to find non-toxic reddit communities. Most smaller subreddits for specific things are actually pretty nice.

<comment><USER42> But you need to be aware that's the recommended way to use Reddit.

A lot of big subs and even some default ones are extremely toxic, propagandist and authoritarian.

</comment></comment></comment><comment><USER43> Side topic: In the USA, what is the legal precedent for business competitors having a very similar name?

If I name my social network for race car drivers "Racebook, Inc.", and my logo is a blue square with a white "r" on it,

am i opening myself up to legal trouble?

<comment><USER44> Remember Twitter and Twitpic? I imagine raddit is not okay.

<comment><USER45> Twitpic got bullied, it didn't lose in a court of law.

</comment></comment></comment><comment><USER46> If they did that because they lost trust in the reddit administration then I think that a distributed approach would be much more fitting instead of making yet another reddit clone. In fact, NNTP would be probably exactly what they want.

<comment><USER47> They're like the opposite of voat, they split because reddit wasn't authoritarian enough for them. They want to dictate what can be said and who can contribute. A distributed approach wouldn't work.

</comment></comment><comment><USER48> I think we found the website of the "alt-left"</comment>


Do 320kbps mp3 files really sound better? Take the test - <AUTHOR> http://www.noiseaddicts.com/2009/03/mp3-sound-quality-test-128-320/ <comment><USER3> Asking which file sounds "better" is meaningless; some distortions sound good. The proper way to do this is an ABX test, where you compare both to a known original, and ask which sounds _more like the original_.

<comment><USER4> Do you have any links?

<comment><USER5> I may not disclose full details, but one of the engineers that made particular widely used audio decoder said that they've left the bug whose symptoms were slight high frequency noise.

It was widely reported to sound "better" than other "by the book" implementations.

</comment></comment></comment><comment><USER6> This is meaningless. Statistically meaningful tests are performed using ABX testing methods (<http://en.wikipedia.org/wiki/ABX_test>) with high-quality equipment. And, yes, many people have trained ears (and brains?) that can easily distinguish the artifacts made by the MP3 compression even in 320kbps. See this ([http://listening- tests.hydrogenaudio.org/sebastian/mp3-128-1...](http://listening- tests.hydrogenaudio.org/sebastian/mp3-128-1/results.htm)) as an example of an ABX test.

As for me, with my current medium-quality headphones, I can't distinguish between the original and an 128kbps mp3.

<comment><USER7> So if you end up listening to the music with your medium-quality headphones, it doesn't matter whether it's 128kbps or 320kbps.

<comment><USER6> Yes. For _me_, using _my headphones_, it doesn't matter. Everyone's experience is unique, as it depends on various factors.

</comment></comment></comment><comment><USER8> The difference is tiny but just about audible.

To my ears _neither_ sounded like a good quality recording and I think that's what made it so hard to tell the difference. Even with cheap speakers, it's easy to spot compression artifacts in poorly encoded audio but in these samples the drum tracks on both sound "mashed". That might be an instrumental trait but it sounds more like a production or postprocessing error to me.

</comment><comment><USER9> Much more interesting test:

[http://www.codinghorror.com/blog/2012/06/the-great- mp3-bitra...](http://www.codinghorror.com/blog/2012/06/the-great-mp3-bitrate- experiment.html)

And the outcome:

[http://www.codinghorror.com/blog/2012/06/concluding-the- grea...](http://www.codinghorror.com/blog/2012/06/concluding-the-great- mp3-bitrate-experiment.html)

<comment><USER3> Again, not an ABX test. No wonder the first file did best - it sounded most like the first file. You can't do listening tests without a labelled original to compare to.

</comment></comment><comment><USER10> Do the test with Thelonius Monk.

I didn't think I was an audiophile, until I noticed a crispness missing from some of my jazz. I encode at 320kbps out of paranoia now, but what's an extra few megabytes per album?

FYI if anyone is using Google Music, turn on HTML5 audio (via labs). I swear there is a perceptible improvement.

</comment><comment><USER11> And the audiophile loons start appearing in the comments: "on high end gear you can hear the difference between a factory and a copied CD.".

No. You can't, sir.

<comment><USER12> Basic DSP knowledge tells us that a digital audio copy is exactly the same quality as the original.

Also, testing the difference between 128kbps and 320kbps MP3s over and over again is like drinking warm beer all the time to make sure it's really worse than the cold one.

<comment><USER13> Audio CD is an old technology. It doesn't have advanced error correction method. With poor quality CD-R, it's true that the quality is not the same.

<comment><USER11> Excluding from skipping and audible glitches that doesn't sound plausible.

i.e. copying an audio CD can create gross errors but not a more subtle change in audio quality (loss of dynamics/frequencies etc).

If you disagree could you point me towards some evidence?

</comment></comment></comment></comment><comment><USER14> Yup, tested this before. Also with quite good hardware (sound card, circumaural quality headphones), between 128kbps and 192 you're already not sure whether there a difference or not, but anything above 192 is really wasted effort.

<comment><USER15> 128kbit sounds so poor that I get a headache from listening to it. There is a tinnyness and high pitched squeal that is like a drill through my head. Maybe it's like using a 14" monitor - if you're so used to hearing low bitrate, it may be hard to notice better quality when you hear it occasionally.

</comment></comment><comment><USER16> Bad choice for the sample. I however still picked #1. Choose a song with bass, and mids. The difference between 128kbps and 320kbps will become painfuly obvious.

</comment><comment><USER11> 192kbs VBR with a good encoder. There's been countless tests and this is indistinguishable to the vast majority of listeners (teens might have a slight edge as the ability to hear high frequencies diminishes with age).

I don't have time to dig up citations but check out the Hydrogen Audio forums and other sane, non-cranky-audiophile, evidence based sources.

<comment><USER15> I would say that 192kbit (2 pass, VBR) is the minimum bitrate that one should encode music. I can pick lower than this without trying. I do struggle to hear more than 192kbit, except occasionally at the high end. In reality, disk is so cheap that I encode in flac. I'd rather keep myself future proof. Let's just say that my entire cd collection is smaller than 2 bluray rips at 1080p.

</comment></comment><comment><USER17> A 10-second sample misses the point of HQ v. LQ: a very few sections of most albums will sound better at HQ. The vast, vast majority of songs will sound the same. The point isn't that HQ is a little better most the time, it's that some of the time it is much better.

LTJ Bukem - Watercoulours comes to mind as a great example of the phenomenon.

</comment><comment><USER18> Very interesting. This then set me off reading about ABX testing for longer than I wish to admit. For those looking to try some ABX testing between 320kbps and 128kbps mp3 files, this is the best in-browser one I've found so far: <http://mp3ornot.com/>

</comment><comment><USER19> If you have quality headphones I don't think it's very hard. On earbuds, or laptop speakers, almost impossible. Put it on a real stereo and you will also be able to.

Perhaps the fact that music is now being produced and optimized to sound good on tinny speakers is altering what we perceive to be a "good sound."

<comment><USER20> I think the difference was noticeable even on laptop speakers.

</comment></comment><comment><USER21> Laptop speakers: Nope. High Quality Headphones: Maybe. Loud sound system in a crowded club: Definitely.

Also just because one track sounds acceptable at 192, doesn't mean another will. The only way to make sure tracks have the same 'opportunity' to sound good is to throw away less information.

</comment><comment><USER22> I picked the higher one correctly. Though, the difference is barely audible on my laptop (MacBook Pro aka worthless DAC, but quite ok Sennheiser microphones).

Personally I like lossless for practical reasons (e.g. conversions without quality loss).

<comment><USER23> > Personally I like lossless for practical reasons (e.g. conversions without > quality loss).

That was the clincher for me. At first my music collection was a mish-mash of different bitrates. I converted the whole lot to the LAME V2 preset (~192kbps VBR) a la the mp3 scene standard, then no sooner had I done that than the standard changed to V0 (~245kbps).

Screw it, I figured. Storage is cheap. Might as well go lossless.

</comment></comment><comment><USER24> It's just the audio sample is not complex enough to hear the difference, from the encoder POV.

Try doing the same test with some orchestra recording or any metal band of your preference, even 320 vs lossless would be noticable.

</comment><comment><USER25> At work, with crappy Microsoft LifeChat LX-3000 there's a barely noticeable difference. Can't tell which is which anyway. Need to try at home with a proper setup.

</comment><comment><USER26> I cheated... the first one took a bit more to buffer, so I inferred it was the highest bitrate.

Anyway, with the cheap headset I have at work, yeah, I didn't notice any difference.

</comment><comment><USER27> I would argue this song is terrible for this test. I usually can instantly tell the difference between 320 and 128 kbps, but I wasn't able to with this test.

<comment><USER28> It might be my bad quality headphones, but the song for me was so distorted on the 128kbps that I heard the difference in less than a second.

</comment></comment><comment><USER29> Obviously for the author's signal source, the original CD sound tracks (sampled at 44.1 KHz * ) would limit the importance of a change from 128 to 320 kbps.

* Corrected units

<comment><USER3> No, this is wrong. CDs are sampled at 44.1khz with 16-bit samples, making for (calculates) 706kbps. And that's ignoring stereo.

<comment><USER29> The depth of the sample doesn't get around the Nyquist-Shannon sampling limitation. This means resampling a 44.1 KHz * recording at a higher bit rate is pointless.

To be specific, a 44.1 KHz sampling rate provides a bandwidth of 22.05 KHz, period, full stop.

[http://en.wikipedia.org/wiki/Nyquist%E2%80%93Shannon_samplin...](http://en.wikipedia.org/wiki/Nyquist%E2%80%93Shannon_sampling_theorem)

<http://en.wikipedia.org/wiki/Sampling_rate>

A quote: "The full range of human hearing is between 20 Hz and 20 kHz.[3] The minimum sampling rate that satisfies the sampling theorem for this full bandwidth is 40 kHz. The 44.1 kHz sampling rate used for Compact Disc was chosen for this and other technical reasons."

* Corrected units

<comment><USER30> I believe you're messing up the units here.

\- The sampling rate, measured in kHz, for CD tracks is 44.1 kHz (not kbps), which determines the frequency range. Nyquist-Shannon applies to this.

\- The bit-depth, number of bits/sample, determines the SNR of the signal, but has no effect on the frequency range. A typical audio CD has a bit depth of 16.

\- The bit-rate, measured in kbps, is (sampling_rate * bit_depth * channel_count). So for an audio CD, this would be 441000 * 16 * 2 = 1411200 bps = 1411.2 kbps.

<comment><USER29> > The sampling rate, measured in kHz, for CD tracks is 44.1 kHz (not kbps) ...

Yes, corrected, thank you. The original point stands -- the higher resampling rates are increasingly pointless.

> The bit-depth, number of bits/sample, determines the SNR of the signal ...

Yes, and is thought to be the source of the much-remarked, subtle difference between vinyl album music and CD music. But no one knows for sure.

> The bit-rate, measured in kbps, is (sampling_rate * bit_depth * > channel_count). So for an audio CD, this would be 441000 * 16 * 2 = 1411200 > bps = 1411.2 kbps.

True. Unfortunately, these numbers may motivate people to argue for higher and higher MP3 sampling rates, ignoring the fact that the original temporal sampling rate severely limits the usefulness of these efforts.

<comment><USER3> >The original point stands -- the higher resampling rates are increasingly pointless.

If we were talking about _sampling_ rates it would. But we're not, we're talking about _bit_ rates.

Any MP3 of a CD, whether 128kbps, 192kbps, 320kbps or something else, will still have a _sample_ rate of 44.1kHz. Resampling at 128kHz would indeed be stupid and pointless, and would also result in a much larger file than the original CD. That is not what mp3 does; it takes your email@example.com CD bitstream, and gives you a compressed bitstream that will, when decompressed, give you another email@example.com bitstream which sounds similar. The bitrate measures the size of this compressed bitstream, and therefore gives an indication of how much information (in the technical sense) you must have discarded to form it. But it's entirely unrelated to the sampling rate - <USER2> can't even say bitrate = sampling rate * bit depth when we're talking about a compressed bitstream.

</comment></comment></comment></comment></comment></comment><comment><USER31> Should test against lossless.

Bus driver - imaginary places has really fast rapping, as mp3 its almost impossible to understand, on lossless you can grok it.

</comment><comment><USER5> You just need to focus on percussion to get it right - it's much more complex frequency-wise.

I personally break even at V2.

<comment><USER32> You're right. That's what I ended up focusing on after a few listens and chose the correct answer, which could probably be attributed to being an ex pro drummer. Most people were probably focusing on the vocals, not at all attuned to what quality percussion sounds like, which is why more people chose the wrong answer. One might even go far as to say that more people think vocals sound better at 128 than 320.

<comment><USER5> That's also why I spent more than half my budget on percussion in equipping my ex garage band.

And that's also why you can see Jack White playing a $50 guitar and no drummer without some serious dough investment in their equipment.

</comment></comment></comment><comment><USER33> Looks like I chose the higher one but you are right, hardly any difference.

</comment><comment><USER34> Terrible test case</comment>


E Programming Language: Write Secure Distributed Software - <AUTHOR> http://wiki.erights.org/wiki/Main_Page <comment><USER2> C and C++ are both powerful languages but D brings some new things to the table. Then there's E, innovative yes, but why use E when we have F, or better, F#? Personally, I've used G for a couple years now but I am betting the future on the H language.

Some people are already skipping ahead to using K, but the guys I'm most scared by are those who only use R.

<comment><USER3> I'm disappointed that we have more letters to go before we get to the best language ever developed. I'll probably be retired by then.

<comment><USER4> I'm disappointed that Z is already here and it's only incremental updates to Bash.

</comment></comment></comment><comment><USER5> For those wondering, this is Mark Miller, you probably know him from JavaScript as he invented promises and wrote the prototype for the popular Q library before Kris made it more ergonomic.

Edit: this is also a nice read [http://www.erights.org/talks/thesis/](http://www.erights.org/talks/thesis/)

Some of his current work is about allowing safe execution in JavaScript, see: [https://github.com/FUDCo/proposal-frozen- realms/](https://github.com/FUDCo/proposal-frozen-realms/) and [http://www-cs- students.stanford.edu/~ataly/Papers/sp11.pdf](http://www-cs- students.stanford.edu/~ataly/Papers/sp11.pdf)

</comment><comment><USER6> For what it's worth, capnproto's RPC protocol is based on this. ([https://capnproto.org/rpc.html](https://capnproto.org/rpc.html))

<comment><USER7> Not just that -- Mark Miller, designer of E, is also an advisor to Sandstorm.io, the parent project of Cap'n Proto:

[https://sandstorm.io/about#advisors](https://sandstorm.io/about#advisors)

Cap'n Proto is very much E's distributed programming concepts "ported" to other languages, and Mark helped me get the details right.

Interestingly, E takes a very different approach from standard distributed systems practices today. Most distributed programming today emphasizes stateless servers performing idempotent operations on a monolithic datastore. Stateful servers are considered too hard to get right. What E did is actually provide the vocabulary needed to be able to reason about stateful servers, so you _could_ get them right. Stateful servers are able to achieve massively better performance, especially in terms of latency, because they don't need to hit persistent storage for every single operation. You obviously need some way to deal with machine and network failures, but E provides that.

</comment></comment><comment><USER8> Outside of its security model, E is an interesting language to study because of its actor/object system. Objects live in 'vats', an actor with a local stack and an event loop thread/process. Objects can sequentially/locally communicate with each other in the same vat, but have to communicate as actors between vats.

AmbientTalk took it a few steps further, with a concept of near and far references, future pipelining, reflection etc.

 _edit: Oops, E already had near /far references and promises. AmbientTalk does add more on the reflection/meta-programming side of things and features for mobile ad-hoc networks such as object discovery._

<comment><USER9> The near and far references and promise pipelining were already in E, unless I'm misunderstanding -- I've only read one paper on AmbientTalk.

<comment><USER8> Yes, you are indeed right.

</comment></comment></comment><comment><USER10> I quickly scan the book it is suggested "Walnut" but I didn't grasp why, or how E is "secure" somebody can help?

<comment><USER5> E is written by Mark Miller and is based on "capability theory". In E you can prove a piece of code is safe and capabilities are more explicit.

<comment> nv-vn How do these proofs work if code has IO? For example, if I read a number from the command line, how can I know that it's within a certain range? I'm only very familiar with this type of thing through languages with explicit IO (Idris, F* to an extent), so I'm interested in seeing how it works in languages with implicit side effects.

<comment><USER9> For telling if a number's in a range, it has contracts (called guards).

Effects like I/O have to be explicit: code that wants to do I/O has to be passed an object that can do I/O, it doesn't get any such objects by default at the time it's loaded. Besides this means of control ('capability security') there's also an 'auditors' mechanism for static analysis, e.g. to require some code to have no side effects.

(I'm not endorsing the GP comment; it's not how I would've phrased things. The auditing mechanism does enable proofs, but it was relatively new and experimental, compared to the core capability-security ideas.)

Added: [http://erights.org/talks/auditors/index.html](http://erights.org/talks/auditors/index.html)

</comment></comment></comment></comment><comment><USER11> Oh wow, I was just reading about this yesterday in Coders At Work[0]. Douglas Crockford[1] worked on this at a company that was trying to do some distributing computing work in the 90s-00s. They originally based it off the JVM but SUN had issues with that so they turned it more in to what he described as a scripting language "which is what we have today."

[0]: [http://www.amazon.com/Coders-Work-Reflections-Craft- Programm...](http://www.amazon.com/Coders-Work-Reflections-Craft- Programming/dp/1430219483) [1]: [http://javascript.crockford.com/](http://javascript.crockford.com/)

<comment><USER12> So in the beginning Electric Communities was going to do large-scale, distributed virtual worlds (think MMORPGs as shopping malls...) with real security. The original plan was to use Joule, but negotiations didn't work out and while waiting around a couple of engineers created a reasonable subset in this new language called java. This subset eventaully because the original E language. Crock was the slides and presentations guy of the core team, so after knowing him for a while as mostaly a non-coder it was odd to see him pop up again and have such a big impact on the javascript world.

</comment></comment><comment><USER13> Wasn't E a somewhat popular Amiga PL?

<comment><USER14> Yes, the AmigaE compiler written by Wouter van Oortmerssen.

There's a 'portable' version available for several platforms.

[http://cshandley.co.uk/portable/](http://cshandley.co.uk/portable/)

</comment></comment><comment><USER15> I think I'll stick with Elixir.</comment>


Google Keep – Your thoughts, wherever you are on the App Store - <AUTHOR> https://itunes.apple.com/us/app/google-keep-your-thoughts/id1029207872?mt=8&ref=producthunt <comment><USER2> It's about time. One of the large gripes which pushed me back to Android from iOS was the lack of Keep!</comment>


Microsoft Bob Rides Again - <AUTHOR> http://www.pcmag.com/article2/0,2817,2345619,00.asp

<comment><USER2> To be honest I actually kind of like office 2007 especially the improvements to organization, to be honest I have to use word 2003 at school and have 2007 at home and when I'm working at school some things seem so much harder than they have to be. The hardest part is that we were all used to the old version and layout that a new ui seems counter intuitive and I'll agree that when I first started using it I didn't like it and was angry at the new interface. But after some use I have found that the ribbon system works well for me.

Some hard things for 2007: turning on the analysis tool pack in excel and probably quite a bit more if you weren't using shortcuts and used the top menu for everything.

This just shows that people don't like change especially when they use something so much, not that office 2007 was a flop.

</comment><comment><AUTHOR> Version for Mac ("It's UI salad") at: <http://stevenf.tumblr.com/post/101550689/office-2010-preview></comment>


Top Five Articles in Data Mining - <AUTHOR> http://www.dataminingblog.com/top-five-articles-in-data-mining/

<comment><USER2> might also want to check out the best papers in KDD (the top data mining conference)

<http://jeffhuang.com/best_paper_awards.html#kdd></comment>


Show HN: AWS EC2 On-demand vs. Reserved Interactive Price Comparison - <AUTHOR> http://promptcloud.com/ec2-ondemand-vs-reserved-instance-pricing.php

<comment><USER2> This is simple but excellent. AWS should have graphs like that on their calculator page to help people decide how long it will take for their investment in a reserved instance to get ahead of on-demand (or another reserved instance plan).

<comment><USER3> Perhaps it's pessimistic of me to say so, but I doubt Amazon wants you to be able to appreciate the price relationship with quite this degree of immediacy. Sure, the data is there for you to plot yourself or use a third-party tool such as the OP's. But if you naively select an on-demand instance (the default) where a dedicated instance would be more advantageous for you, Mr. Bezos is made a tiny bit happier.

<comment><USER4> Maybe, but the heavy reserved instances come with a required hourly commitment. If you buy one, you have to pay the 24/7 hourly usage fee regardless of whether you're actually running a server. That strikes me as the bigger "gotcha."

<comment><AUTHOR> There is one more "gotcha" if you dig deeper. That is the drop in EC2 prices and Amazon in general has been vague about passing on the benefits of price drop to old reservations ( <https://forums.aws.amazon.com/message.jspa?messageID=325153> ) . We even thought about adding speculative price drop and then do the comparison, but dropped the idea. It will be interesting to hear the take of HN community on this ..

</comment></comment></comment></comment><comment><USER5> I'm not sure how these calculations are correct - I have eu-west-1 set up, and the price for 1yr heavy reserved is fixed. But the AWS pricing still has an hourly rate against it. The final cost looks right, but the initial cost (eg., taking out the reservation but never running the instance) should just be the setup cost I think?

<comment><USER6> When you reserve an instance, it doesn't entirely eliminate the hourly cost to run it. What you are essentially doing is paying a large chunk up-front in exchange for a _heavily_ discounted hourly rate, which ends up saving you money by the end of your 1 - 3 year contract.

<comment><USER5> Isn't that what I'm saying? That the cost should increase, albeit at a much more gradual rate, from the start of the term to the end?

<comment><AUTHOR> Heavy utilization reservation is different. See this page [http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/InstanceS...](http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/InstanceStorage.html)

Quote from the page above " Light and Medium Utilization Reserved Instances also are billed by the instance-hour for the time that instances are in a running state; if you do not run the instance in an hour, there is zero usage charge. Partial instance-hours consumed are billed as full hours. Heavy Utilization Reserved Instances are billed for every hour during the entire Reserved Instance term (which means you're charged the hourly fee regardless of whether any usage has occurred during an hour). "

<comment><USER5> Full marks for demonstrating that the AWS pricing schedule can continue to hold surprises :-)

</comment></comment></comment></comment></comment><comment><USER7> Is there any plans on making this tool accessible? I'm a screen reader user and the sliders don't appear to work with Firefox and Jaws.

<comment><AUTHOR> Sorry for not looking into it earlier, but our own expertise in UI is limited, will seek help and try to fix it ASAP.

</comment></comment><comment><USER6> I like the idea, it's just a bit difficult to use for what I'm getting out of it. Simple things like making clear what the "number of days" slider means (it didn't take long to figure it out, but I had to use the context to draw my conclusion). I'm used to seeing my instances in the typical "t1.micro, m1.small, m1.medium, etc" format, so I was a bit thrown off by the "Instance Category" dropdown.

It would also be nice to have values on the x axis of the graph so I can see exactly when certain thresholds are crossed - as of right now I'm just assuming that the max x-value is my specified days * 24.

Again, cool idea, but I'd be more inclined to hit up the AWS Cost Calculator (<http://calculator.s3.amazonaws.com/calc5.html>). It's ugly, but it allows me to quickly add many resources from all of the AWS services for a total monthly cost.

<comment><AUTHOR> Thanks for the feedback. We are doing the "t1.micro, m1.small .."translation right now. (Edit : changes pushed)

X axis value seems to be some browser issue. On some browsers it shows up only at reduced zooms. Will fix it.

Also, we are not trying to replace AWS cost calculator. It was more like putting our own dog food out to answer the question, that at what point/usage is the reserved instance better than on demand.

</comment></comment><comment><USER8> Cool tool. One suggestion, in the dropdown where you list the types of instances, can you append the abbreviations that AWS uses (e.g. M1-small, M2-medium, M3-large). I'm sure I'm not alone in referring to instances by those codes rather than their full names, which I seem to always forget.

<comment><AUTHOR> Thanks for the feedback, doing it. Will upload the new version in 20 min or so.

Edit : changes pushed.

</comment></comment><comment><USER9> Also useful: [http://mikekhristo.com/ec2-ondemand-vs-reserved-instance- sav...](http://mikekhristo.com/ec2-ondemand-vs-reserved-instance-savings- calculator/)

<comment><USER10> glad to see this still helps folks =)

</comment></comment><comment><USER4> If you're taking feature requests, it'd be really handy to see pricing breakdowns for Windows instances as well. They have a different breakeven point than the Linux ones.

<comment><AUTHOR> Sure, will add it in a couple of days. Wanted to get feedback from the community before adding more use cases.

</comment></comment><comment><USER11> That very cool, something that many of us will find useful.

Feedback: The top bar folds over when the browser window is resized (looks like anything less than 1024 px). The page then starts to overlap on itself blocking out content at the top.

How did you code up the graphing part? HTML5?

</comment><comment><USER12> Sweet project :) The page layout seems to break for windows narrower than about 900 pixels, though.

<comment><AUTHOR> Thanks for the feedback. We'll fix that soon :)

</comment></comment><comment><USER13> This is a nice tool, another one (and a point of comparison/inspiration) is at <http://whichinstance.com>.

EDIT: fixed autocorrect

</comment><comment><USER14> For 30 days 24hr scenario, "Total cost of instance" graph is showing bogus numbers on the iPad. Let me know if you are unable to replicate and need a screenshot.

<comment><AUTHOR> Yes that will be good, please send the screenshot to info "ta" promptcloud.com

<comment><USER14> Done.

</comment></comment></comment><comment><USER15> Check this out as well: <http://www.awsnow.info/#ec2>

</comment><comment><USER16> It would be interesting to see the current spot instance price plotted as well.

<comment><USER17> I recently made an app to graph spot prices:

<http://ec2price.com/>

</comment></comment><comment><USER18> The sliders dont work on mobile.

<comment><AUTHOR> Which browser are you using ? we tested on quite a few combinations but might have missed some.

<comment><USER19> fails for me with android chrome beta 28.0.1500.21 on android 4.2.2</comment></comment></comment>


Snowden Still Missing as Plane Full of Journalists Lands in Cuba - <AUTHOR> http://m.theatlanticwire.com/national/2013/06/edward-snowden-still-missing-plane-full-journalists-lands-cuba/66555/

<comment><USER2> He is in the crew area of the plane, not passenger area?</comment>


PicoC: A very small C interpreter - <AUTHOR> https://github.com/zsaleeba/picoc <comment><USER3> Hi, author here. When I started writing PicoC it was mostly because I was thinking about how small AppleSoft BASIC was back in the day and I was curious how small you could make a C implementation. I also had in mind to use it for robotics/drone scripting on STM32 processors which have about 64KB of RAM.

PicoC runs ok in 64KB although it is a bit cramped. I like that you can write scripts in C on the actual device without needing a host computer of any kind. It's also been fairly popular for embedding as a scripting language in desktop applications, mostly because it's small and easy to integrate. It's really designed for scripting so don't expect it to be fast though.

<comment><USER4> Hey zik, has anyone tried getting it running through emscripten? It would be very cool to have interactive C purely client side in browser. Could make some cool c based jsbin like hosting websites from that.

<comment><USER5> Given it's written in C, it seems like a direct port to Javascript might be a much better option.

<comment><USER6> Any particular reason for that?

<comment><USER5> A lot of c will translate very simply to JavaScript and any parsing or string manipulation will be insanely easier.

<comment><USER6> How can parsing and string manipulation be easier than just compiling C to Javascript using Emscripten? The interpreter already works in C. Wouldn't translating it manually to Javascript be extra effort?

<comment><USER5> Parsing and string manipulation are (hugely) easier in Javascript than C. Compiling the interpreter to Javascript via Emscripten is certainly easier than translating to Javascript -- but porting C to Javascript should still be very easy.

</comment></comment></comment></comment></comment></comment></comment><comment><USER7> Shameless self promotion of my work in progress C compiler [https://github.com/andrewchambers/cc](https://github.com/andrewchambers/cc) which is attempting to create a modern cross platform C compiler.

One of my goals is to make the entire toolchain rapid to port and hack on. I am pretty sick of gcc and llvm taking 20 mins just to build from source.

I would love to find serious collaborators.

<comment><USER8> I am all in favor of hacking for studying and fun. But for practical reasons - are you familiar with Bellard's tcc?

<comment><USER9> The last time I checked, tcc lacked even a simple AST. This led to some pretty weird emitted code (such as swapping parameters on the stack.) Implementing an AST is not hard, just push and pop nodes on a stack. It also makes a nice front-end/back-end interface.

<comment><USER7> Eliminating memory allocations made tcc extremely fast, They use a value stack rather than an AST. I just think an AST is a bit easier to follow because it means the parser has less code generation logic embedded in it.

<comment><USER9> No malloc/free necessary. Just pile up nodes on a stack, then "deallocate" to any saved position.

</comment></comment></comment></comment></comment><comment><USER10> I have used this to bring a form of scripting to the graphic calculator I used and hacked on during my high school years. I think this really shines on embedded systems: it's quite easy to map existing syscalls and functions to PicoC functions with minimal overhead, more complex things like struct passing are supported, and memory addresses can be accessed directly just like with "real" compiled C (something that has upsides and downsides, but I like this kind of freedom a lot, and as far I know, other scripting languages like Lua don't support it).

Unfortunately, function pointers aren't supported, and it's 10x slower than equivalent compiled C, if not more, and perhaps slower than Lua (and we aren't even talking about LuaJIT). There also appear to be some issues yet to be dealt with, as can be seen on the previous project page at Google Code: [https://code.google.com/p/picoc/issues/list](https://code.google.com/p/picoc/issues/list)

<comment><USER6> > more complex things like struct passing are supported, and memory addresses > can be accessed directly just like with "real" compiled C (something that > has upsides and downsides, but I like this kind of freedom a lot, and as far > I know, other scripting languages like Lua don't support it).

Not Lua itself, but at least Luajit's FFI does: [http://luajit.org/ext_ffi.html](http://luajit.org/ext_ffi.html)

</comment></comment><comment><USER11> Obligatory nitpick: C libraries should be careful to prefix all exposed identifiers, to minimize the risk of collision. But when you include picoc.h, which is careful to do this, you also get interpreter.h, which... is not.

<comment><USER11> While I'm on the subject the same also goes for header include guards - <USER2> you get a conflict, it's actually quite annoying to track down. (Not least because it's such a rare occurrence that you probably won't expect it and will likely end up on a wild goose chase at some inconvenient moment.)

I stopped using the file name at all in my include guards a few years ago, and use a GUID instead. For example:

        #ifndef HEADER_6AFF21D71B5B43DEB079AA612E4118B4
        #define HEADER_6AFF21D71B5B43DEB079AA612E4118B4

        #endif//HEADER_6AFF21D71B5B43DEB079AA612E4118B4

Also consider the use of #pragma once - though as far as I can tell, this (still) isn't ISO, so I've decided to avoid it.

<comment><USER12> > Also consider the use of #pragma once - though as far as I can tell, this > (still) isn't ISO, so I've decided to avoid it.

Depends on your target platform. GCC, clang/LLVM, Visual C++, and many proprietary compilers all support it. What platform are you targeting that doesn't support it?

Because if you're writing any non-trivial useful code, it's highly likely that your code is not pure ISO C; you're using some library with support for various platforms, or a system call interface, or some other interface to a real system. Once you do that, universal portability no longer applies, so you might as well think about which specific target platforms you care about.

<comment><USER11> Good question - probably the main reason (and you don't have to agree that it's a good one) is that I'd never have to think about it again ;)

</comment></comment></comment></comment><comment><USER13> When I read "very small C" I'm reminded of the BD Software C compiler I used about 35 years ago for the 8080/Z80 and CP/M.

It was relatively complete K&R C except for no floating point support. It comfortably ran in under 64K bytes of memory. That's 64 kilobytes, or as they now say kibibytes!

It was quite fast to compile. It was also quite fast to run, since it generated true object code, no run-time interpreter needed.

It's now open source and public domain. [http://www.bdsoft.com/resources/bdsc.html](http://www.bdsoft.com/resources/bdsc.html)

<comment><USER14> As I recall BDS stood for "Brain Damaged Software", a joke made by Leor Zolman, the author. Leor had not taken a compiler construction class, so it's not a recursive descent parser and can be confused by overly complex expressions. It also wrote the generated code into the memory that held the source, expecting that the generated code took fewer bytes than the source it was replacing.

</comment></comment><comment><USER15> c4 remains the master class in minimal interpreted C implementations:

[https://github.com/rswier/c4](https://github.com/rswier/c4)

It's (of course) less complete than PicoC, but it might be the single most useful introduction to compiler construction I've read.

<comment><USER16> Rather enjoyed flicking through that. I wish there was more of an overview for those of us who haven't thought about this stuff for a few years.

<comment><USER15> I recommend: just read and reread, commenting it as you go, until it all makes sense.

It's written in a very limited dialect of C --- most notably, it doesn't use structs --- because it compiles itself. The expression parser in particular would be clearer with structs rather than array offsets. But once you realize that's why it's so gnarly in places, it's straightforward to mentally translate.

It's a very simple design: a simple lexer with a "pull" API (next()) feeds a precedence-climbing expression parser that spits out bytecode for a simple stack machine.

If you grok expr(), you grok the whole thing.

<comment><USER16> Alight then, I will - though I may have to come back to you if I get stuck :) (I haven't written anything in C for about 15 years)

</comment></comment></comment></comment><comment><USER17> Some time back i used picoc to write c programming visualizer. Such a tool is possible only with picoc.

[http://dev.pointers.io/#filename=test4.c](http://dev.pointers.io/#filename=test4.c)

<comment><USER18> This is kinda great; I've thought about having something like it for "running" (simulating) embedded code on a PC, where the compiler just ignores (or asks the user for a value) when hitting anything that isn't available on the host pc (registers, etc).

</comment></comment><comment><USER19> Do people who use this call it "peacock" or "pico see"?

<comment><USER20> When I first saw it I thought "pico see".

The "peacock" interpretation is funny and went unnoticed by me. Cheers!

</comment></comment><comment><USER21> More than 20 years ago, I used a C interpreter called EiC.

Hmm, someone tried to resurrect it on SourceForge a couple of years ago, it seems, but it's dead again.

[http://sourceforge.net/projects/eic/](http://sourceforge.net/projects/eic/)

Someone threw it on GitHub:

[https://github.com/kungfooman/EiC-C- Interpreter](https://github.com/kungfooman/EiC-C-Interpreter)

PDF of doc [2009]:

[http://www.mirrorservice.org/sites/downloads.sourceforge.net...](http://www.mirrorservice.org/sites/downloads.sourceforge.net/e/ei/eic/eic/doc/EiC.pdf)

</comment><comment><USER22> Ah! This is very cool! Strangely enough, I was looking for something exactly like this and staring down having to write my own. Perfect!

</comment><comment><USER23> Nice!

No pointers to functions, I see.. not nitpicking, just playing :) I like what you've done here. I'm going to have to go through the code and hopefully learn something new.

</comment><comment><USER24> Can it interpret itself?

<comment><USER3> Unfortuately not - it uses a few C tricks which its implementation doesn't support. You could probably make it self-hosting with a little effort but I can't even imagine how slow the interpreter-within-an-interpreter would be!</comment></comment>


Glyphosate increases cancer risk by 41%, study says - <AUTHOR> https://www.cnn.com/2019/02/14/health/us-glyphosate-cancer-study-scli-intl/index.html <comment><AUTHOR> "Glyphosate, an herbicide that remains the world's most ubiquitous weed killer, raises the cancer risk of those exposed to it by 41%, a new analysis says.

Researchers from the University of Washington evaluated existing studies into the chemical — found in weed killers including Monsanto's popular Roundup — and concluded that it significantly increases the risk of non-Hodgkin lymphoma (NHL), a cancer of the immune system."

</comment><comment><USER2> No mention of absolute risk?</comment>


LBRY: a decentralized, community-owned YouTube alternative – AMA - <AUTHOR> https://np.reddit.com/r/IAmA/comments/50tyub/were_the_nerds_behind_lbry_a_decentralized/ <comment><USER2> Someone beat you to posting: [https://news.ycombinator.com/item?id=12418081](https://news.ycombinator.com/item?id=12418081)</comment>


It's going to break so just launch it - <AUTHOR> http://www.thepitch.co/Blog/View/2

<comment><USER2> Agree Zack. Sometimes you just need to throw it out there and see what sticks. Better to find and correct the bugs sooner rather than later.</comment>


The Impotence of Zuckerberg - <AUTHOR> https://medium.com/@generativist/the-impotent-zuckerberg-2e2a58b5f679 <comment><USER2> the content of that story violates the rules of Medium. It is using harassment by calling him impotent (and not in a metaphorical way).

<comment><USER3> I was under the impression that Zuckerberg had children. How then can calling him impotent be anything but metaphorical?

In any case, this is clearly not harassment for a very simple reason: it is not directed at Zuckerberg. Even were Zuckerberg to be hurt by these claims, he is unlikely to see them without seeking them out, and so won't be harmed by them.

<comment><USER2> I guess it really depends on what definition of impotent you use. To quote the author: "He's impotent because he is captive to something else." linking to another article by the author about how skynet (well the idea of it) is becoming a reality.

This author has quite a few posts that make some very strange and out there claims.</comment></comment></comment>