The Mechanics and Meaning of That Ol' Dial-Up Modem Sound - <AUTHOR> http://www.theatlantic.com/technology/archive/2012/06/the-mechanics-and-meaning-of-that-ol-dial-up-modem-sound/257816/ <comment><USER2> The Dial-up modem sound is something that an entire generation will grow up today having never heard. In fact, there's probably a fair few HN'ers who've never heard it.

These sounds are normally lost forever, like the sound of a valve radio as it's valves warm up, or the sound of a vinyl record playing before or after the song.

I'd like to ask HN'ers out there, what was your favourite sound of old that's no longer common?

<comment><USER3> I wouldn't say it's my favorite, but the old Apple floppy drives were pretty nice. (You could tell if your program was loading properly by listening, a skill I used right up until hard drives got too quiet.) I remember being jealous of my friend whose Apple //c drive sounded nicer than my Apple ][e :)

I think the sounds we remember most strongly are the ones that played when we were anticipating... modem sounds, floppy loading sounds, the part of vinyl records before the music, etc.

<comment><USER4> Speak for yourself, that horrid buzzing noise when a disk was formatted or having read problems haunted my nightmares as a child.

"Aw nuts, gotta format a disk.. okay.. key in the command.." _book it from the room at high speed_

 _BUZZ BUZZ BUZZ BUZZ_

"Whew, made it out safe"

<comment><USER5> Semi-related: One of my NAS disks had, for the past few months, made a horrible high-pitched noise every so often that kept rising in intensity and ended in a screeching halt, as from nails on a blackboard.

Today, I saw a RAID warning that a drive had died. I replaced it in a hurry, as an SSD died yesterday on my main computer and I didn't want to wait around for disaster to strike a third time, and booted the NAS up and waited for the array to resync.

Relieved, I thought "well, at least I'll never hear that horrible screeching sound again, now that the drive finally failed."

Half way through the thought, I hear a familiar "nnnnnnnnnggggggg"...

I still have no idea which disk is doing that, or how long it will last.

<comment><USER6> It's probably thermal calibration; I had a couple of IBM 10K SCSI disks that used to do that every so often. It sounds like delicate electronics in pain... They lasted for years.

You might be able to get more information from querying the SMART parameters for each drive.

<comment><USER5> Huh, that's weird. It sounds like they're in agony. SMART indeed reports nothing out of the ordinary, I checked...

</comment></comment></comment></comment></comment></comment><comment><USER7> And then there was the Commodore 1670, a 300/1200 bps modem with auto-answer. Not only "with" auto-answer; with auto-answer on by DEFAULT, with settings in RAM, and with a computer that you restarted by hitting the power switch. In an era when most people had only one phone line.

A critical Commodore skill was the ability to respond to the 1670's answer tone by whistling a 300 baud originator tone, so the 1670 would "detect" carrier, then "detect" carrier drop and hang up the line. So you could talk.

</comment><comment><AUTHOR> I remember putting a de-tuned AM radio next to my TRS-80 to listen to the program's progress. I was using various algorithms to factor integers, primarily Pollard Rho, and I could tell when it was stepping and when it was GCDing by the different sounds coming from the radio. I could estimate the sizes of the numbers by the pitch, and generally make sure things were working properly.

</comment><comment><USER8> A couple of videos for us all to enjoy this saturday morn:

The Truth About Your Modem: <http://www.youtube.com/watch?v=o2j_hXHEjX4>

The Phantom of the Floppera: <http://www.youtube.com/watch?v=8pqxyhrN8Cc>

</comment><comment><USER9> Now I'm nostalgic for when I used to be able to listen and tell what speed the connection was going to be. And sad now that I've realized that I can't remember what 300 baud sounds like anymore.

</comment><comment><USER10> I'm kind of sad that my daughter won't know what a dial up modem sounds like. I can imagine the conversations now: "This is how we used to get on the internet. Can you hear those tones? That is one computer talking to another." "What, you didn't have wireless? And you had to plug your computer into the phone line? Wow Dad, you're old!"

<comment><USER11> >I'm kind of sad that my daughter won't know what a dial up modem sounds like.

Heh, why? Do you feel like you're missing out on life because you've never had to use a telegraph ? It'll definitely be very cool to show her how it used to be, but that's likely the extent of it :)

<comment><USER10> Let's just call it nostalgia. :)

</comment></comment></comment><comment><USER12> Most hams under fifty have never heard a peculiar style of sending morse code using a bug

[http://pages.suddenlink.net/wa5bdu/Vibroplex----Angle--- web....](http://pages.suddenlink.net/wa5bdu/Vibroplex----Angle---web.jpg)

known as a banana boat swing.

<http://w6mtc.org/pages/events.htm>

</comment><comment><USER13> What, nobody mentioned line printers. Dot matrix, ha! Heres) a pix of the Control Data 512. Look) at that hardware and imagine the noise it makes.

Your ears haven't lived until they've been treated to one of these puppies printing the Gettysberg Address one word per line on greenbar. The noise of the paper roaring out alone makes a glass booth mandatory!

<comment><USER6> Error writing /dev/lp0 (on fire, eh?)

</comment></comment><comment><USER14> My team made Bleeoo, a way to capture the oral history of dial-up modem sounds.

My favorite is here: [http://bleeoo.com/videos/31c92a10-c228-012e-7578-12313d09290...](http://bleeoo.com/videos/31c92a10-c228-012e-7578-12313d09290e)

The main site has many more.

</comment><comment><USER15> There's an anotated diagram of a V.32 (9600 bps) connect at <http://www.3amsystems.com/wireline/hmo-v32.htm>

</comment><comment><USER16> A cool song based on modem sounds: <http://www.youtube.com/watch?v=i3VzSv4ErEg>

</comment><comment><USER17> I wonder why it was necessary for consumer modems to make these sounds. It's not really useful for debugging, so in the end it was just an annoying sound. Yes, I know you could often turn it off, but as far as I know the sound was always turned on by default.

<comment><USER18> For what its worth, you definitely could identify the data rate before windows would report it. I used to listen and when I heard it connect at 26400, Id disconnect and retry until I heard and saw 33.6 or better. Not all of those trunklines were created equal back then.

<comment><USER19> Man I remember those good times. 14400..meh....but 33.6!!! Whoo! 56k modems were a pipe dream. We have it good these days.

<comment><USER18> I swear my practical peripherals 14.4kbps external modem was faster than my 28.8 and 33.6 at actual throughput (error correction maybe?). Never did the 56k analog.. went 128k ISDN. Having bonded channels was awesome. No cool analog sounds on that though...

</comment></comment></comment></comment><comment><USER20> skrillex

</comment><comment><USER21> ATM0</comment>


Alabama Has the Worst Poverty in the Developed World, U.N. Official Says - <AUTHOR> http://www.newsweek.com/alabama-un-poverty-environmental-racism-743601 <comment><USER2> I am sure that this news article has absolutely nothing to do with the special election on Dec 12th between Moore and Jones for Senate.

<comment><USER3> And if it is a "3rd world" state, why aren't people jumping to donate and help and aid them?

"Cuz 'rednecks." The only group you're allowed to prosecute on TV, media, and public discourse.

But if liberals were running in and giving free aid, and helping lives, those people would start to like liberals.

I mean, when we help people in Ghana, do we check to make sure they don't have any conflicting political values? When we aid Syria, have we checked to make sure they're there aren't any nationalists and racists?

I'd love to hear an actual rebuttal, but I guess I'll have to settle for downvotes from people who can't. I guess bigotry is okay when it's people you hate.

<comment><USER4> > But if liberals were running in and giving free aid, and helping lives, > those people would start to like liberals.

Not to put to fine a point on it but the #1 criticism I hear from my GOP friends is that Liberals want too much of our tax money to go to welfare programs. Who do you think benefits from those welfare programs?

As a study of human nature it is fascinating. These people don't benefit from tax breaks, they don't even have enough money to be taxed. They do benefit from the social welfare programs. Yet they consistently vote for the party that gives out the tax breaks. It makes no sense.

One possible explanation is the fear that the liberals will give away the jobs to immigrants and oversees workers. I don't have a good answer for those people, I wish I did.

> "Cuz 'rednecks." The only group you're allowed to prosecute on TV, media, > and public discourse.

Except for muslims, immigrants, citizens of countries we don't like, LGBT people... and liberals. Turn on Fox, it is 3 hours of liberal bashing. Clearly they are "allowed" to do that, no one is stopping them.

Seriously, I'm not even a liberal. I'm a Libertarian. But anyone can see the holes in your arguments.

<comment><USER5> The rich, who benefit from tax breaks, spend copiously on issues that influence the poorest' votes. Abortion, religion, military, immigration, homophobia. Emotional issues that influence deeply those who lack critical thinking skills. And so the poor vote against their own interest, consistently. It's classic neuropsychology.

</comment></comment></comment></comment><comment><USER6> Unfortunate headline. Would expect to see it changed.

Growing up I spent a few years in Alabama. Not at all surprised by any of this, but it's not "the worst in the United States", or the developed world, by any stretch.

Not that it's a competition, but census data would put a couple of states (I believe consistently Louisiana, West Virginia, & Arkansas) below Alabama in median household income.

<comment><USER7> It's not about how poor or rich the state is, but what percentage of people live in poverty. The poverty definition used is living for less than 50% of median income in the area (in this case state) so it's more of an income inequality measure.

<comment><USER8> That seems like a gameable metric. Encourage the 5/10/50/100 highest-income individuals to establish their primary residence someplace else (in this case other state) and things will look very positive comparative-equality-wise.

<comment><USER9> As the GOP slashes federal spending, you'll see that.

</comment></comment></comment></comment><comment><USER10> Article has a picture of a falling down house. But guess what, it's a house!

Go look under an overpass in San Francisco to see even more dire poverty and even less chance of self obtaining minimum standards of living (i.e food and basic shelter) as cost of shelter is so far removed from potential income.

But probably stating California has worst poverty in developed world doesn't support the underlying motive of the article.

Incidentally, Alabama does have a lot of poverty and isn't a place most of would be comfortable living due to social climate. Which is a real shame because I find it to be quite a beautiful state, at least the areas I've seen.

</comment><comment><USER11> I would have thought Mississippi but it doesn't surprise me that it's in the South. Huntsville has some defense work and I know there's a Mercedes plant (in Vance, I had to look that up). But I can't think of anything else in the state.

[https://www.careerinfonet.org/oview6.asp?soccode=&id=&nodeid...](https://www.careerinfonet.org/oview6.asp?soccode=&id=&nodeid=12&stfips=01&from=State)

<comment><USER12> Redstone Arsenal/NASA/Aerospace in Huntsville

Mercedes in Vance.

Hyundai in Montgomery

Honda in Talladega

Toyota in Madison

Airbus Mobile

</comment></comment><comment><USER13> well thats clearly untrue, because when adjusted for cost of living, California has a higher poverty rate[1]

[1][http://www.politifact.com/california/statements/2017/jan/20/...](http://www.politifact.com/california/statements/2017/jan/20/chad- mayes/true-california-has-nations-highest-poverty-rate-w/)

</comment><comment><USER14> Some data from the study mentioned in the Newsweek fluff piece: [https://qz.com/879092/the-us-doesnt-look-like-a-developed- co...](https://qz.com/879092/the-us-doesnt-look-like-a-developed-country/)

<comment><USER15> > _The US has the second-highest rate of poverty among rich countries (poverty > here measured by the percentage of people earning less than half the > national median income_

That is a preposterous way to compare poverty between countries. By this definition, an American can make more money than a Frenchmen, but the former will be counted as poor and the latter not. And I reckon that we'd fair much better than the EU as a single entity under this standard.

Measuring food security by obesity rates is also dumb. Americans are fat because food is incredibly abundant, we have a cultural preference for junk food, and we are physically lazy. That says absolutely nothing about the availability of healthy food.

We are unhealthy individuals, but our health care system is the absolute best at treating diseases. We pay a lot for it because we're the only developed country where the health care industry isn't a _monopsony_ (single or oligarchic purchaser).

Our child mortality and life expectancy are conflated with a large immigrant population and the existence of an underclass. If you equalize the results for diversity, America does just as well as the other developed countries.

And it is absurd to compare the entire US to tiny countries like Denmark or even medium sized ones like France. If you broke the US into regions, you'd probably get different results. I bet New England and the Pacific Northwest would be at the top of many of those categories.

Basically, this data is framed with a conclusion in mind and doesn't account for how big, diverse, and unique the United States.

<comment><USER16> >That is a preposterous way to compare poverty between countries.

My guess is it's a quick way to compare while factoring differences in the cost of living. The idea is that the absolute differences between the countries might not mean much given differences in cost of living, so you compare relative difference inside a country. I can't defend it vigorously, but that's my guess.

>Our child mortality and life expectancy are conflated with a large immigrant population and the existence of an underclass. If you equalize the results for diversity, America does just as well as the other developed countries.

"Hmm, if we cut out of our statistics the points that draw it down, it will bring our average up." That seems like cooking the books. Shouldn't we include those who bear the brunt of externalities in society? Is that exactly what they are looking for here?

<comment><USER17> > My guess is it's a quick way to compare while factoring differences in the > cost of living.

How does using _national_ median income factor in the difference in the cost of living between states?

<comment><USER16> Point taken. While I also feel like delineating by regions in the US might be smart to some extent, the states are somewhat coupled to each other due to federal programs and such. But yeah, you're probably right about it not helping since states have widely varying cost of living.

Regardless, even if you do delineate by geography, excluding populations within a population is still "lipping your bad statistics to push up your mean.

</comment></comment></comment></comment></comment><comment><USER18> Apparently they hadn't made it as far west as Mississippi yet

</comment><comment><USER19> Headline is slightly misleading:

>A United Nations official investigating poverty in the United States was shocked at the level of environmental degradation in some areas of rural Alabama, saying he had never seen anything like it in the developed world.

i.e., the worst poverty _the official had ever seen_ in the developed world, not the worst according to some comprehensive study.

<comment><USER20> >i.e., the worst poverty the official had ever seen in the developed world, not the worst according to some comprehensive study.

Well I'm sure the fine folks of Alabama will sleep better at night knowing this.

<comment><USER19> Well, the choice would have been for the article to have a factual title or get flagged off the front page. HN seems to have chosen the second option.

</comment></comment></comment><comment><USER21> I remember seeing somewhere that they mostly rely on Mountain Dew for hydration and even feed it to the baby, so bad that they have early tooth decay issues. Apparently the amount of people living in trailer parks is huge and constantly growing.

Troubling when you think that this is happening in the US. I saw that kind of situation in central america.

<comment><USER22> From what I remember and what I can find, that was something that was particularly found in Appalachia, not Alabama (see this article[0]). A quick check on Google maps shows that Alabama is about as far from Appalachia (in West Virginia) as London, UK, is from Hamburg, Germany. So I think it's a stretch to say they're in the same geographic area.

[0] - [https://www.npr.org/sections/thesalt/2013/09/12/221845853/mo...](https://www.npr.org/sections/thesalt/2013/09/12/221845853/mountain- dew-mouth-is-destroying-appalachias-teeth)

<comment><USER11> About half of Alabama is Appalachian.

[https://www.arc.gov/images/appregion/AppalachianRegionCounti...](https://www.arc.gov/images/appregion/AppalachianRegionCountiesMap.pdf)

</comment></comment></comment><comment><USER23> <sigh> More politics on Hacker News. Tiring.

<comment><USER24> Although the "signal to noise" of HN political discussions is so good compared to everywhere else.

Question: is there another community that has high-quality discussions on political issues? Would love to find one.</comment></comment>


PHP Next Generation - <AUTHOR> http://www.php.net/archive/2014.php#id2014-05-27-1 <comment><USER2> Speaking as someone who's hit the barriers of PHP performance for many years, this is a good start.

But I wish it was done a little nicely from the community point of view (the >4gb strings stuff).

I'm considerably less talented than Dmitry and I spent several months of my life trying to unsuccessfully write a JIT for PHP - most of what stopped me was the rest of the Zend engine itself.

While I was maintaining PHP-APC, I spent many weeks trying to write a basic block JIT for php, when Zend is using the CGOTO core (FYI, if you are still using APC, switch to Zend OpCache).

This would compile code which didn't have any jumps into a native chunk and swap out the opcode's handler location into my native chunk.

The little I did actually do ended up being fairly involved assembly rewrites of the inner loop.

[http://notmysock.org/blog/php/optimising- ze2](http://notmysock.org/blog/php/optimising-ze2)

No matter what I did, the issues of the bytecode organization (the ->result reference) and the lack of type verifiability in the code generation resulted in me slowly throwing away every prototype somewhere between the for loop and running the default benchmark.php.

I haven't read through all the changes yet, but IMHO the Zend engine will be an absolute pain to deal with until we get to type inference/verifiability into the bytecode format so that integers get integer register ops in the JIT instead of always being zval_* based.

But a cleanup was due. And a faster VM (either HHVM or PHPng++) is good news for the regular PHP users.

</comment><comment><USER3> Pierre Joye from Microsoft started a big refactor in the open (make string length size_t everywhere) meanwhile Dmitry Stogov of Zend worked in total secret on an even bigger refactor which is phpng, completely ignoring the size_t work (also known as 64 bit). A feud in PHP Internals followed not the first heated debate there... that mailing list is very useful as a textbook example of how not to run an open source community. At the end, Pierre have decided it's better to cooperate and now [http://news.php.net/php.internals/74352](http://news.php.net/php.internals/74352) there's a vote that seems to pass and so on top of phpng size_t is also coming.

<comment><USER4> Most disheartening is the way Zeev Suraski pleaded for votes against the size_t/int64 patch in a mail[1] titled _" A call for help (urgent)"_ because, I quote, it _" negates months of hard work"_. That was only a few days after Zend's secret project had been uncovered.

The size_t/int64 refactor has been going through several iterations and RFCs since 2013.

[1]: [http://news.php.net/php.internals/74268](http://news.php.net/php.internals/74268)

<comment><USER5> Why? Months of hard work can surely negate months of other hard work.

<comment><USER6> Sure, but it seems pretty irrational to suddenly say 'Hey guys, we've been working on this code without telling anyone, so this community project that people have been working on for months should be abandoned'.

They could have been integrating the changes in their code as they went, and then launched with 'Hey, we have this cool new project, including the optimization work that people have been doing'. Instead, they kept their work secret, knowing that their work was incompatible with another large refactor that people were contributing to, and then said 'hey, abandon all the work you were doing because who cares'.

</comment></comment></comment></comment><comment><USER7> There's some seriously missing context to this post. It sounds like they are responding to some expectations posted elsewhere, but they don't link to what they're responding to. Or perhaps it's an update to something announced earlier, but they don't link to the past announcement. It's not clear what PHPng's relationship, if any, is to 5.5 or 5.6 in this post.

Anyone have any pointers to the conversation they are participating in with this post?

(mavci's link is an O'Reilly summary of the state of the PHP ecosystem and I didn't see any mention of PHPng.)

UPDATE: Perhaps this link is what started the confusion the php.net post appears to be trying to address: [http://grokbase.com/p/php/php- internals/1455aesx7r/phpng-%04...](http://grokbase.com/p/php/php- internals/1455aesx7r/phpng-%04refactored-php-engine-with-big-performance- improvement)

<comment><USER8> This is a recently published article which suggests that PHPNG is an upgrade to the Zend Engine designed to compete with HHVM: [http://www.sitepoint.com/php-fights-hhvm-zephir- phpng/](http://www.sitepoint.com/php-fights-hhvm-zephir-phpng/)

<comment><USER7> Yes, this is exactly what I was looking for. Thanks, rjknight. Someone visiting php.net without knowing the context would be seriously confused by this post (as I was).

</comment></comment></comment><comment><USER9> Isn't Hack the PHP of the future, aviable today? For me it seems with hack there are no excuses anymore to still use php. I'd be glad if someone tell me some downsides of hack, it seems to good to be true. And how do the JITs compare?

<comment><USER10> you're probably interested in the downsides of HHVM, not Hack. Hack is really just a PHP frontend built on top of HHVM. HHVM is the JIT.

\- it runs really well on expensive, FB hardware. there's no consideration given to anything else (performance-wise) in development. that's not to say it's slow, but it works best on 64GB servers with fat SSDs.

\- it's a huge moving target when it comes to php5 compatibility -- there are a few intentional inconsistencies and a lot of unintentional ones. fixes for zend incompatibilities have a whack-a-mole effect: the typical patch fixes one inconsistency and introduces a few more.

\- bad documentation and bad code quality

\- it is open-source, but only in the most superficial sense. it's really an FB internal project, so good luck making any changes that help you but don't help FB

it's still better than zend PHP, and, to be fair, most of the incompatibilities are in cases where zend behaves stupidly. source: i was an HHVM contributor. (edited to space out my ascii list)

<comment><USER11> I half disagree with the third point - the documentation is certainly lacking (I recently used Redis on an HHVM site, and the adaptor had no documentation that it even existed; just read the source to figure it out), but it's a new- ish, fast-moving project, so that's not too surprising.

The code quality, however, isn't 'bad' by any stretch of the imagination. The FB team managing it is very knowledgeable about PHP internals, and are appropriately strict about determining what zend-compatibility fixes to commit. Their code's overall quite well-written, which makes me care a whole lot less about how poorly it's documented.

<comment><USER10> depends on what you define as good quality. it's efficient code, but it's sparsely commented, and a style nightmare.

<comment><USER12> Odd. If I recall correctly, there was even a detailed FB PHP coding style guide in the HHVM Git repo; that was afterwards removed though - I don't know why.

</comment></comment></comment></comment></comment><comment><USER13> Also "The new PHP" [http://programming.oreilly.com/2014/03/the-new- php.html](http://programming.oreilly.com/2014/03/the-new-php.html)

</comment><comment><USER14> I think it will be great if PHP's internal developers start focusing on HHVM.

From comments it seems like some people are afraid that FB will keep driving HHVM project in it's own way. But this fact is dependent on contribution. FB may loose grip on HHVM if If people outside FB start contributing more on it.</comment>


Go-style defer() implementation for C - <AUTHOR> https://github.com/google/honggfuzz/blob/master/honggfuzz.h#L333 <comment><USER2> I gathered two methods-- one for gcc, another for clang-- and crammed them into a set of macros that require no special compiler flags almost two years ago: [https://github.com/jeffwalter/defer/blob/master/include/defe...](https://github.com/jeffwalter/defer/blob/master/include/defer.h)

<comment><AUTHOR> The clang code requires -fblocks/-lBlocksRuntime too, and I was a bit quicker :)

[https://github.com/google/honggfuzz/commit/a9db9ddc2e24d157a...](https://github.com/google/honggfuzz/commit/a9db9ddc2e24d157a754fb964be3908e4d876790)

<comment><USER2> I read your 2016 as 2017; guess that what being sick for a few days does to the brain. And it doesn't require you pass those options: [https://imgur.com/a/Hymj9](https://imgur.com/a/Hymj9) (clang-900.0.39.2)

<comment><AUTHOR> I'm not sure how that'd be possible. It uses blocks (^) so it requires blocks with clang, no?

I've changed my macro to yours, and compiled with clang (3.9)

      CC=clang-3.9 make clean indent depend all

      clang-3.9 -c -O3 -D_GNU_SOURCE -Wall -Werror -Wframe-larger-than=131072 -Wno-format-truncation -I. -std=c11 -I/usr/local/include -Wextra -Wno-override-init -funroll-loops -D_FILE_OFFSET_BITS=64 -D_HF_LINUX_INTEL_PT_LIB -Wno-initializer-overrides -Wno-unknown-warning-option -Wno-gnu-empty-initializer -Wno-format-pedantic -Wno-gnu-statement-expression -D_HF_ARCH_LINUX  -o cmdline.o cmdline.c
      In file included from cmdline.c:23:
      In file included from ./cmdline.h:28:
      ./honggfuzz.h:357:40: error: blocks support disabled - compile with -fblocks or pick a deployment target that supports them
      static inline void defer_cleanup(void (^*b)()) {
                                           ^
      cmdline.c:68:5: error: blocks support disabled - compile with -fblocks or pick a deployment target that supports them
        defer {
        ^
      ./honggfuzz.h:364:39: note: expanded from macro 'defer'
            __attribute__((unused)) void (^defer_varname(__COUNTER__))() = ^
                                          ^
      cmdline.c:68:5: error: blocks support disabled - compile with -fblocks or pick a deployment target that supports them
      ./honggfuzz.h:364:72: note: expanded from macro 'defer'
            __attribute__((unused)) void (^defer_varname(__COUNTER__))() = ^
                                                                           ^
      3 errors generated.
      Makefile:266: recipe for target 'cmdline.o' failed
      make: *** [cmdline.o] Error 1

PS. Hm.. maybe that's the clang version you're using (900)?

<comment><USER2> Maybe?

        Apple LLVM version 9.0.0 (clang-900.0.39.2)
        Target: x86_64-apple-darwin16.7.0
        Thread model: posix
        InstalledDir: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin

        ProductName:    Mac OS X
        ProductVersion: 10.12.6
        BuildVersion:   16G1114

</comment></comment></comment></comment></comment><comment><USER3> See also [https://oded.blog/2017/10/05/go-defer-in- cpp/](https://oded.blog/2017/10/05/go-defer-in-cpp/)

<comment><AUTHOR> Tho, in C++ I guess almost everybody would use a scoped variable with its desctructor using lambda.</comment></comment>


Anyons: Physicists find best evidence yet for long-sought 2D structures - <AUTHOR> https://www.nature.com/articles/d41586-020-01988-0 <comment><USER2> >"And other teams have probed a different property that makes anyons an intermediate between fermions and bosons. Fermions obey the Pauli exclusion principle: no two fermions can ever occupy the same exact quantum state. But bosons have no such restrictions.

 _Anyons are in the middle_ — they do bunch, but not as much as bosons do, as an experiment described in April in Science reported [2]."

<comment><USER3> Instead of picking up a phase of -1 (like Fermions) or 1 (like Bosons), swapping Anyon's around has to be represented by a unitary operation which results in a superposition state (I don't fully understand this myself). The swapping unitary is universal for quantum computing. Hence proposals to use the "braiding" of anyons (re: shunting them around on guides) to build a quantum computer. They can in theory move around as much as they want and so long as they don't swap no operation is effectively performed. Hence they are thought to be a robust choice of qubit. Actually building them has proven very hard in practice. AFAIK most researchers think it is a dead end.

</comment></comment><comment><USER4> If I recall correctly, Microsoft has gone all-in on topological quantum computing as an alternative to the superconducting loops preferred by Google and IBM. I'm really hoping their work pans out, since it would mean a lot for our future abilities to create large error-corrected quantum circuits.

<comment><USER5> This is accurate. As far as I can tell, this work is akin to discovering the Josephson effect for superconducting qubits. Still a lot of work to be done to figure out how to braid anyons or build better anyons, etc.

TBH I didn't even expect anyone to find them at all for another few decades, so this result is pretty cool.

</comment></comment><comment><USER6> Flatlanders?

<comment><USER7> It reminds me of the holographic entities in Greg Egan's "Diaspora".</comment></comment>


Vooza is the mobile web app you never know you wanted - <AUTHOR> http://www.vooza.com/

<comment><USER2> A website about a mobile app that won't load on my android phone. How quaint. You'd think they would have tested the site on a few devices...

</comment><comment><USER3> ...and I still dont know I want it even after looking at their page. ...Next...

</comment><comment><USER4> Nice promo page. Now, what the hell is it?

<comment><USER5> More details to be revealed soon! Go ahead and sign up on the email list to get updates.</comment></comment>


Setting the Record Straight on Bloomberg BusinessWeek's Erroneous Article - <AUTHOR> https://aws.amazon.com/de/blogs/security/setting-the-record-straight-on-bloomberg-businessweeks-erroneous-article/ <comment><USER2> Dupe of [https://news.ycombinator.com/item?id=18140617](https://news.ycombinator.com/item?id=18140617) which is also a dupe of some other post

</comment><comment><USER3> Deny, deny, deny until the evidence is undeniable... then it'll either be "we were cooperating with X government request" or "sorry, a recent investigation has shown that we were wrong". There's simply no advantage to them admitting that a large portion of their hardware is backdoored with no fix.

<comment><USER4> There's a massive advantage for Apple to be upfront about security breaches.

They are using privacy as a major product differentiator. If people stop trusting Apple it's going to cause direct impact to their bottom line.

<comment><USER3> Not security breach specific, but remember when Apple continuously denied that they purposefully slow down old iPhones, then eventually admitted to it? [http://www.patentlyapple.com/patently-apple/2018/02/apple- ch...](http://www.patentlyapple.com/patently-apple/2018/02/apple-changes-the- timeline-of-disclosure-to-customers-about-slowing-iphones-and-contradicts-tim- cooks-public-statement.html)</comment></comment></comment>


Show HN: Android library to show Gmail like tiles with text - <AUTHOR> https://github.com/amulyakhare/TextDrawable

<comment><USER2> Nice. I'll definitely run the sample to see how well it works on an actual device, but the screenshots look promising.</comment>


Show HN: Bell+Cat – A database in your browser. Saves to Google Drive - <AUTHOR> https://bellpluscat.com/ <comment><AUTHOR> I'm really into being organized at work. Also a fan of using the cloud for everything. I keep my files in Google Drive and use 1Password for keeping track of all my accounts.

What I don't enjoy is using a separate service for every little thing. One for todo's, a different one for CRM, etc. Also not a fan of spreadsheets. I just can't get them to do what I want. I was looking for something simple like a database in my browser. Something with tables and columns that I could customize to fit my use-case. I'm a bit of a builder so I built it. It's exactly what I needed and use it daily to organize everything.

Will do a little write up soon on how I use it for a personal CRM with my exported Linked contacts. It's really easy to use the "Import" function to get my data into Bell+Cat

</comment><comment><USER2> Can you talk better about which technologies you have used to build it? :)

<comment><AUTHOR> It's almost entirely in Elm Lang. I choose Elm since in addition to making me more productive, I can ensure that Bell+Cat is rock solid and minimizes bugs.</comment></comment>


Science Breaks Free – Startup Portrait #1: Microryza - Jackson-Solway https://medium.com/startup-portraits/dcf0ba20b679 <comment><AUTHOR> A good way to get publicity.

But it's obvious that the idea of using a residential apartment (won't even get into zoning etc.) and a living quarters that cramped isn't a long term solution to a business.

Nice gimmick but I would question if this were replicated 100 times how many setups like these would yield positive results as opposed to the obvious problems with living like this and working in close quarters.

Add: With respect to what I said about "long term" yes it's obvious that it's short term but it seems as if the hype makes it out to be a mid term solution

"The team claims the environment helps them make decisions fast, and I got the feeling they wouldn't have it any other way"

...rather than just a curiosity.

<comment> Jackson-Solway The photographer here...

I completely agree it's not a long term solution, but I got the feeling from being with the team for two days that it might work in the mid term. The situation wouldn't be right for the vast majority of founders, but the team gets along better than any I've worked with.

The biggest downside is probably the impact on recruiting for senior employees, especially folks from academia. There might be bigger cultural issues with those types of people though.

</comment></comment><comment><USER2> Perhaps this is how Foxconn might be like for Chinese factory workers. Working in a shitty place, but working hard towards a better future.

<comment><USER3> Working in a shitty place? That place looks _awesome_! I would love to work in a place like this.

<comment><USER4> So, some things to consider when doing this:

Who am I working with? Am I comfortable with those same people having free access to my person and belongings while I sleep?

Do I trust these folks not to do something stupid that could damage the capital while partying? (I once had somebody spill a beer into an SGI workstation because we were using an apartment as an office, and one of our dudes threw a party.)

Can we deal with the weird interpersonal dynamics that spring up in a group of mixed sexes that is also collaborating on a business--presumably the same one paying rent?

Do I have a place I can go to to get away from work/home if needed on a reliable basis? Is it going to cost me all my money?

<comment><USER5> Microryza employee here. The majority of us were friends from before Microryza, so there was a lot of trust already going into it.

<comment><USER4> Similar story with our current living situation.

I think that having a community is very important in making any business venture--I would be unsurprised to see this emerge as a pattern in entrepreneurial ventures for folks our age.

</comment></comment></comment></comment></comment><comment><USER6> That's a large one-bedroom apartment.

</comment><comment><USER7> Can you turn this into a reality show? I'd watch.

<comment> Jackson-Solway Photographer here again...

Haha—the idea has already come up!

Stills are a little easier though, and probably more importantly, they're way less intrusive than full-on filming. There's just something nerve-wracking about knowing everything you do is being recorded. I wouldn't want to subject a team to that.

I'll also note that we nailed down expectations right at the beginning for what was on and off the record. I have a bunch of much goofier pictures, for example, that won't be getting out ;)</comment></comment>


Your tax dollars at work: local cops now paid with federal money to troll IRC - <AUTHOR> http://arstechnica.com/tech-policy/2012/10/your-tax-dollars-at-work-local-cops-now-paid-with-federal-money-to-troll-irc <comment><USER2> Due to an uptick in violent crime, the St Louis police department last month enacted a policy of not sending anyone out to investigate crimes like stolen cars or auto break-ins (and taking reports over the phone instead), because they needed more cops on the street dealing with crimes against people.

That was after one weekend where a 22 year old woman was shot and killed over an iPhone, in addition to several other armed robberies.

You'd think whoever was in charge of awarding this grant would look critically at the situation here in STL and think "gee, this money would be better spent putting cops on the streets fighting crime, rather than behind desks looking for intellectual property infringements."

<comment><USER3> I live in one of the better parts of STL and a woman was killed only 4 blocks from my apartment a few weeks ago. It's definitely becoming more and more of a problem here.

<comment><USER4> I live in one of the better parts of San Francisco and a man was killed by an ex-coworker about two blocks from my apartment about 15 years ago. At the time there was a lot of hysteria, but as it turns out it hasn't happened since and so was a freak occurrence rather than an indicator of a trend.

<comment><USER5> So it was a situation wholly unlike that of St. Louis? Cool.

<comment><USER4> No, just that one instance doesn't make a trend.

</comment></comment></comment></comment></comment><comment><USER6> Many years ago, I earnt a little extra cash as security at large rock concerts. It was not my scene, and I was frankly just standing around. I clearly remember stopping a suspicious clean cut man in his mid forties, wearing ironed jeans and matching denim jacket... In a stadium of 20,000 long haired students in dirty black t-shirts.

He flipped a warrent card at me an angrily said "drugs squad" I hoped our boys in blue also had people who could pass for real - and I suspect the same for any local cops hanging around on IRC. They will stand out like 40 year olds in pressed denim.

<comment><USER7> It's probably difficult to recruit teenage goths and turn them into good narcs.

I imagine he was just there to go for low hanging fruit and was not worried about being a bit conspicuous, probably just nab people who can be seen passing little bags full of white powder between people , in a big enough crowd people aren't going to be able to notice everyone around them anyway.

<comment><USER8> _> It's probably difficult to recruit teenage goths and turn them into good narcs._

It's easy. Bust a teenager for possession of narcotics, then offer them a choice between years behind bars, and acting as an informant busting drug dealers.

See: [http://www.newyorker.com/reporting/2012/09/03/120903fa_fact_...](http://www.newyorker.com/reporting/2012/09/03/120903fa_fact_stillman)

</comment></comment></comment><comment><USER9> "We have seen—far too often—that IP crimes are not victimless. Not only can they devastate individual lives and legitimate businesses, they also undermine our nation's financial stability, can jeopardize the health of our citizens, and even threaten our national security."

Really? I'd love to see them name three examples - bonus points if the company was trying to adapt and evolve and innovate instead of clinging to a pre- internet business model.

<comment><USER10> _bonus points if the company was trying to adapt and evolve and innovate instead of clinging to a pre-internet business model._

I agree with your basic point, but I really hate this argument -- it's a "blame the victim" justification. Companies deserve to have their IP stolen because they aren't adapting to technology that makes it easier for IP to _be_ stolen?

<comment><USER11> When your whole business model is based on government granted and government enforced monopolies, you have very little right to complain IMHO.

<comment><USER12> Name one (legitimate) business that doesn't rely on government enforcement at some point. If you think about it, you'll find that even subway buskers can operate with the confidence that their hat full of quarters and singles won't get stolen from under their noses. Stores everywhere allow prospective customers everywhere free, direct, and anonymous access to merchandise, confident that if any prove to be thieves, they can delivered into the hands of people with the legal right to inflict serious damage on their life prospects.

Given that not everyone is good, you'll find that "giving people (in general) a reason to buy" comes down to carrots for most and sticks for some. If you fail to get that balance right, your losses will drive you out of business.

Of course, society can't tolerate merchants who hunt down, attack, torture, maim, or kill transgressors. Nor can it tolerate the existence of crime syndicates that will handle this dirty work for a price (offered willingly or otherwise). So we've come to a pretty good arrangement where the labor involved in "giving people a reason to buy" gets divided between the private businessperson, who focuses on carrots like a more competitive product / service / price, and the State, which handles the stick.

Assuming that the State, in turn, remains generally accountable to the people, this arrangement works well. What doesn't work well is telling one group of producers "sorry bitches, but technology has changed and now you need to adapt" while glossing over the subtext that the "adaptation" you're referring to is the invention of a business model that's all carrots and no sticks. In a market where everyone else still gets the benefit of legal protection, this is both unique and unreasonable.

That doesn't mean IP businesses don't need to adapt at all, or that they should be given special consideration that retards the general progress of the arts and sciences. But how they do this depends largely on whether or not they receive legal support in situations where they are faced with jerks who refuse to pay.

<comment><USER13> >>Name one (legitimate) business that doesn't rely on government enforcement at some point.

That's not what he said. It's a matter of scale. Surely every company benefits from the government at some point. But some companies have their _entire_ business model dependent on government aid. I'm not talking about having the government as a customer, mind you. I'm talking about companies that became monopolies _only because_ their lobbyists convinced lawmakers to protect their businesses.

<comment><USER12> "I'm talking about companies that became monopolies only because their lobbyists convinced lawmakers to protect their businesses."

Don't be ridiculous. No American media company is, or is ever likely to become, a monopoly. What they depend on is a limited set of property rights in products they make or buy. That's very different from being a actual monopoly.

</comment></comment></comment></comment></comment></comment><comment><USER14>
      > Not only can they devastate individual lives and
      > legitimate businesses, they also undermine our
      > nation's financial stability, can jeopardize the
      > health of our citizens, and even threaten our
      > national security.

[citation needed]

</comment><comment><USER15> "Let content producers pay for their own enforcement" - this might be a good method to get companies paying a sensible rate of tax in each country where they operate rather than allowing companies to use semi-legal tax avoidance loopholes.

<comment><USER16> Might also be a good way to restock the public domain in the face of virtually unlimited copyright terms, if the holder of those rights became responsible to determine whether the cost of continued protection is worth it for a given work.

</comment></comment><comment><USER17> Searching/trawling, not trolling.

Still corrupt, as success is measured by "increased prosecution", not "decreased piracy", which means they have just incentivized an entrapment+framing program. SL PD could make a fortune by pirating IP and arresting some of their customers.

<comment><USER18> The meaning of "to fish by trailing a lure or baited hook from a moving boat" far predates the internet version of the word "troll". This is correct, metaphorical usage.

<comment><USER19> You are definitely confusing the word _troll_ , "A mythical, cave-dwelling being depicted in folklore as either a giant or a dwarf, typically having a very ugly appearance." (OED), with the word _trawl_ : "1 an act of fishing with a trawl net or seine or 2. a thorough search". The parent comment actually mentioned trawling in his post, too, as a alternative Ars could've used.

<comment><USER20> You found troll(1) in the OED.

Now find troll(2).</comment></comment></comment></comment>


A Single Session of Exercise Alters 9,815 Molecules in Our Blood - <AUTHOR> https://www.nytimes.com/2020/06/10/well/move/a-single-session-of-exercise-alters-9815-molecules-in-our-blood.html <comment><USER2> Gosh, Mr. Peepers, that's a lot of molecules!</comment>


Show HN: Pingr – Uptime Monitoring - <AUTHOR> https://pingr.io <comment><USER2> I saw this product earlier on HN. I use uptimerobot but it always looked a bit too simple to me.

So I just subscribed to the trial of pingr.io. It looks very complete. Also the early bird option is appealing.

There was a small bug and the founder already shipped a fix, on a Sunday. He definitely knows the hustle.

What's cool: it can also check for keywords and headers. I guess I could also use basic auth with it. Perfect to check on my backups, which are a behind a basic auth.

<comment><AUTHOR> Thank you!

Indeed, it was a bug.

I work on this product every day, and bugs is like an alarm for me, these I try to fix ASAP.

</comment></comment><comment><USER3> Seems expensive compared to something like uptimerobot

<comment><AUTHOR> Pricing was always a pain for me.

My excuse is that I include all features in all plans.

If you need to monitor 1 site and its SSL certificate it'll be 7$/mo for uptime robot. Or if you need to setup custom headers etc.

I take the pain away, like any feature is included and I'm going to constantly improve it.

But yeah, Uptimerobot is kind of big player on the market</comment></comment>


Namebench: Google's 20% Project To Find The Fastest DNS Server - <AUTHOR> http://www.techcrunch.com/2010/01/01/namebench-google-dns/ <comment><AUTHOR> direct link to namebench: <http://code.google.com/p/namebench/>

</comment><comment><USER2> 143% Faster than your current primary DNS server

Yep, that'll do me ! I'm use dnrd <http://dnrd.sourceforge.net/> caching DNS

So I plugged in the fatsest three servers from the returned list and ran it again : 399% Faster than your current primary DNS server

dnrd is slowing me down !

I did some tweaking and got it better but still dnrd using the fastest servers is slower overall but I guess it's not getting to do any caching.

Also namebench identifies errors and hijacking so fully recommended.</comment>


Youtual.com – a mutual YouTube experience - <AUTHOR> http://youtual.com <comment><USER2> Looks like an alternative to TogetherTube ([https://togethertube.com/](https://togethertube.com/)), just nowhere near as polished at this point in time.

<comment><AUTHOR> thx for your comment towercap. its good to see some alternatives.

</comment></comment><comment><USER3> This is a nice simple tool. Not sure why people are being so critical.

<comment><AUTHOR> thx for your comment Torgo. every comment/criticism is important for me as the developer. have a nice day..

</comment></comment><comment><USER4> why not [http://www.heartbeat.tm/room#9sy3A3pQJ7o](http://www.heartbeat.tm/room#9sy3A3pQJ7o)

<comment><AUTHOR> heartbeat.tm is soo complicated adin234.

</comment></comment><comment><USER5> Totally indecipherable what this is ...

<comment><AUTHOR> I don't agree with you rajacombinator. Some people using youtual at the moment without any extra instruction except the info button on homepage. there is only two option: create or join. but thx for your valuable comment.

</comment></comment><comment><USER6> just looking at the home page.. Did a 12 year old make this?

<comment><AUTHOR> no. u'r welcome.</comment></comment>


The Worst Tweeter in Politics Isn't Trump - <AUTHOR> https://fivethirtyeight.com/features/the-worst-tweeter-in-politics-isnt-trump/ <comment><USER2> As usual, 538 does a great job at applying statistics and data to explosively controversial political figures.</comment>


The "OSI Model": There's no such thing. What they taught you is a lie - <AUTHOR> https://twitter.com/erratarob/status/1166451306183254016 <comment><USER2> > OSI wanted a "connection-oriented network layer", one that worked like the > telephone system, where every switch in between the ends knows about the > connection. The Internet is based on a "connectionless network layer".

Pretty sure ISO/OSI was pushing for CLNP which is "connectionless network protocol."

<comment><USER3> Spot on. Being there at they time, the OSI folks made much of the fact that because of their well defined layers, any of the higher levels could run over a connection-oriented or connectionless without change.

In theory. We never really found out for sure.

</comment></comment><comment><USER4> There are better networking models out there [0] and at least some books use them. Including some popular ones like "Top Down Approach" by Kurose and Ross.

0: [https://en.wikipedia.org/wiki/Internet_protocol_suite#Layer_...](https://en.wikipedia.org/wiki/Internet_protocol_suite#Layer_names_and_number_of_layers_in_the_literature)

</comment><comment><USER5> The thing that helped my understanding the most was opening wireshark and just observing.

</comment><comment><USER6> the original leaky abstraction</comment>


Ask HN: How do people learn technologies fast? - <AUTHOR>

I keep on reading blogs and tweets about how somebody just sat through few days, learned a new technology and hacked together a new project in a weekend. It is simply unfathomable for me. I recently was studying WPF and it took me a whole of 3 months to get a good understanding of some basics and almost two projects to appreciate it (over all 2 years!).
I am currently trying to learn Angular and getting into understanding a project in Javascript/PHP. It seems to be taking forever (2 months and counting) and I am just starting to understand the basics. I feel bad updating to my boss that I am still learning. I am not able to show any valuable progress.
How do people learn and do things so fast? Or am I slow or is there any technique by which I can also improve significantly my speed of learning?
Thanks... <comment><USER2> I increasingly find little novel in programming technologies (at least those that make their way out of the academic research labs into the hands of real- world developers). I've already learned enough languages and frameworks and libraries that most new programming tools I encounter I can quickly size up as, "Oh, this is just like X only with A instead of B".

In short, the more of this sort of stuff you learn, the easier it tends to get to learn yet more. You might find some study of formal programming language theory useful, as being able to refer to language constructs by name could make it easier to categorize and compare & contrast them in your mind.

<comment><AUTHOR> Can you share how long you have been a programmer? Also can you give pointers like books or courses (coursera) for studying formal programming language theory?

<comment><USER2> Hmm, I started programming around 1991, but didn't take it seriously until around 1997.

I haven't gone through this class, but it appears to cover the basics of programming language topics: [https://www.udacity.com/course/cs262](https://www.udacity.com/course/cs262)

And I like this book: [http://mitpress.mit.edu/books/essentials-programming- languag...](http://mitpress.mit.edu/books/essentials-programming-languages)

You can get much, much deeper into this topic, but skimming the surface a bit was really all I was suggesting, unless you have interest in programming language design in particular.

<comment><AUTHOR> Thanks for the links. Is "Structure and Interpretation of Computer Programs" from MIT press similar to essentials programming language?

<comment><USER2> There is some overlap. EOPL naturally focuses on, and goes deeper into, programming language design topics, but SICP covers it some as well. Chapter 4, especially:

[http://mitpress.mit.edu/sicp/full-text/book/book- Z-H-25.html...](http://mitpress.mit.edu/sicp/full-text/book/book- Z-H-25.html#%_chap_4)

</comment></comment></comment></comment></comment><comment><USER3> Personally, I don't spend my time learning, I spend my time making. For instance, recently I wanted to learn a frontend framework. After a lot of debate I picked Ember having never used it before.

I knew I wanted to use it for our dashboard so I built it whilst constantly looking through the docs and various tutorials whilst I hacked things together and learnt as I went. It was completed within 2 weeks and then I just refactored. Had I sat down with a book or a course before hand it would've taken quite a lot longer to get to the point where I thought I could make something.

<comment><AUTHOR> I personally get stuck or end up using the wrong constructs in the wrong places. Like I might use controllers(angular) for more than its intended purpose or in place where something else might be more appropriate. This is why I am afraid of getting into making before I get a fare handle on the basics.

</comment></comment><comment><USER4> I'm in the same boat you are - learning new stuff is hard and feels like its impossible to get anywhere. It's taken me over a year to release the simplest of android apps.

I think, though, that its a lot like learning programming languages. Once you get one, you get similar ones easily. I hope so, anyway.</comment>


Insanity Wins as Appeals Court Overturns Google's Fair Use Victory for Java APIs - <AUTHOR> https://www.techdirt.com/articles/20180327/10431439512/insanity-wins-as-appeals-court-overturns-googles-fair-use-victory-java-apis.shtml <comment><USER2> Holy moly, is this still the case about like a 10 line chunk of code? And it's still going on? I can't believe Oracle hasn't gotten more bad press for this. What an obvious moneygrab attempt... Hopefully this will be overturned again by someone with a bit more brains as it has terrible implications for other work done in the past couple of decades.

<comment><USER3> > Holy moly, is this still the case about like a 10 line chunk of code?

62 class headers. Because Android and Java have a compatible API.

In the progress of this ridiculous case, APIs have been found to be non- copywritable, up until the CAFC got involved. Judges with expert testimony, and expert experience have repeatedly said they are not able to be copywrited. On all four fair-use factors.

CAFC then gets the case and removes jury testimony, and overturns previous decisions through things such as saying Android is opensource, it is commercial in the same manner that Napster was.

Despite Android's API have different subclasses, methods, and body, the CAFC did not believe that they altered the "expressive content" of Java's API.

Whoever ran this trial doesn't seem to grasp the bare basics of code.

</comment></comment><comment><USER3> Reading through why CAFC suddenly decided a differing implementation wasn't transformative, ignoring several juries and judges, makes me think that CAFC would rule that clang's pragmas that are compatible with GCC must also be a copyright violation.

The court's definition _makes no sense_.

</comment><comment><USER4> Wow, enough mockery and name-calling?

I am actually with Oracle on this whole thing. Calling Android "fair use" is the insane argument, as legal experts have said. Fair use is a narrow exemption, not meant to apply to huge corporations and commercial products. Android is a commercial product; Google even tried to argue that! Google is not akin to a library performing a public service by making Android. Android is not Java "criticism, comment, news reporting, teaching (including multiple copies for classroom use), scholarship, or research." (The fact that senior people at Google seem to honestly believe that Android would have to at least be a little more of a profit center to be impeachable on copyright grounds is straight out of an HBO script.)

Google's own engineers didn't think it would be legal to copy Java and "scrub the J word" (actual quote) without licensing from Oracle. The emails are damning. They knew it wouldn't be a "clean-room reimplementation" of the APIs, and it wasn't. Also, the Java "API" includes the entire behavior of the standard library. Whether or not APIs are copyrightable (a gray area to be sure), I think it's misleading to compare the Java APIs to other examples of "interfaces." In any case, Oracle showed that portions of code were either copy-pasted or heavily "recollected," so I say they did their job showing they have a real case. They don't deserve to be mocked.

<comment><USER3> > Calling Android "fair use" is the insane argument, as legal experts have > said.

Every step of this case, until CAFC, showed the _opposite_ of that, that Android met all four requirements, which is more than enough. That would seem far from insane.

> In any case, Oracle showed that portions of code were either copy-pasted or > heavily "recollected," so I say they did their job showing they have a real > case.

They didn't. They showed only that the _definitions_ were the same. Not the methods, subclasses, nor body. Only the API.</comment></comment>


Ask HN: Swift tips on Snapchat feeback? - <AUTHOR> Hey,
So I recently starts doing mini tutorial / snapstorms on snapchat (@rustywicket) would love some feedback on what you think would be good topics to cover.
Started after finding stories to be a great way to learn after watching fitness tips etc.. as it was short and to the point.
Any feedback / advice would be great! <comment><USER2> I've been trying to dig into Vapor as my Swift framework, but having trouble understanding even some of the basics.

<comment><AUTHOR> Awesome i'll add that to the list!

Can you see Swift becoming a force for the web?

<comment><USER2> Yeah for sure, I feel it's one of the most promising frameworks out there, looking at how many github stars they have compared to their time in existence, I'm not the only one who thinks so either :)</comment></comment></comment>


Ask PG: Hardware-Software Hybrid Stratup - <AUTHOR>

Internet of Things is changing the way we categorize startups. Its bridging the gap between Hardware and Software and more and more new companies are trying to work on the eco-system, then focusing only on the Hardware or software. What has been YC's experience and willingness to incubate startups working in that space.<p>Also does YC give more cash and time to startups building hardware. <comment><USER2> YC accepted the guys who did the Pebble watch back when it was the InPulse for Blackberry.

There are also hardware specific incubators and accelerators. Most hardware base startups will have some software component

</comment><comment><USER3> saurabhpalan, what are your thoughts on the internet of things?

<comment><AUTHOR> Internet of Things is inevitable. Its a human tendency to try to connect with everything around them. It started with telephones and then emails, mobile phones, social networks...now that we have established a means of communication between at least half of the worlds population, via one of the above mentioned technology, its time to start connecting our house, cars and even pets.

I think there is going to be a Pandora (ref to movie Avatar) like reality where everything is connected, but in case of humans the 'Eywa' will be 'Internet'.</comment></comment>


OpenCV 3.2 - <AUTHOR> http://opencv.org/opencv-3-2.html <comment><USER2> To me, OpenCV is one of the great success stories among open source libraries. (Granted, I have strong bias because it's one I've been exposed to fairly often.)

It has managed survive and thrive through many changes of the kind that often derail community software projects: multiple changes in corporate stewardship, multiple API evolutions, change of main language from C to C++...

OpenCV is an excellent example of how a large project primarily driven by corporate developers can effectively incorporate community contributions and cutting-edge research. Many other frameworks of this scale either are entirely roadmapped through corporate development processes (e.g. WebKit, Android) or have went through some kind of existential crisis when balancing the commercial and non-commercial interests (e.g. Node.js).

Thanks to OpenCV contributors for the past 16 years, looking forward to the next!

</comment><comment><USER3> Can anyone recommend a good book/website about OpenCV that:

\- is for a _total noob_ in the field of computer vision/image recognition/...

\- explains all (or most of) the algorithms etc. in OpenCV (they often have weird names, telling nothing to a noob)

\- explains and explores inner workings (mechanism) of each algorithm, as well as their parameters, ideally with explanatory illustrations

\- has code examples and example use cases (also illustrated)?

<comment><USER2> For a total noob, the amount of APIs in OpenCV is completely overwhelming. Studying them all is like trying to read through the entire Windows API: you'll definitely learn something, but the amount of detail will obscure the high-level specifics of how you might actually build something using these blocks.

I would suggest picking a project that seems simple enough, and trying to build that in your favorite language that has good OpenCV bindings available.

For motivation, you might want to try something that operates on live video. It's really fun to see your work come to life when you wave your hand in front of the webcam. Many of the older algorithms in OpenCV are highly optimized and will run amazingly fast on modern hardware, so that would also nudge your project towards learning the older essential methods.

(Sorry that I don't have any more specific recommendations on books!)

</comment></comment><comment><AUTHOR> ChangeLog: [https://github.com/opencv/opencv/wiki/ChangeLog](https://github.com/opencv/opencv/wiki/ChangeLog)

</comment><comment><USER4> Some really great new introductions to the library.

Specifically I'm excited about the GOTURN implementation [1]. I'll be interested to see how quickly it works on different devices and how it's implemented. I'm also curious how big that is unpacked with all dependencies optimized.

[1][http://docs.opencv.org/master/d7/d4c/classcv_1_1TrackerGOTUR...](http://docs.opencv.org/master/d7/d4c/classcv_1_1TrackerGOTURN.html)

</comment><comment><USER5> I wrote a guide for setting up Python 3.6 and OpenCV 3.2 with PyEnv on macOS Sierra [https://medium.com/p/6ebcebd6193e](https://medium.com/p/6ebcebd6193e)

</comment><comment><USER6> One of my favorite libraries of all time, one that I used to create my first autonomous vision based robot in university. Such a good time!</comment>


Which hashing algorithm is best for uniqueness and speed? - <AUTHOR> http://programmers.stackexchange.com/questions/49550/which-hashing-algorithm-is-best-for-uniqueness-and-speed/145633#145633 <comment><USER2> MurmurHash2, which is pretty great, has some issues:

"MurmurHash2_x86_64 computes two 32-bit results in parallel and mixes them at the end, which is fast but means that collision resistance is only as good as a 32-bit hash. I suggest avoiding this variant."[1]

Murmurhash3 has a 128-bit variant, which might be more along the lines of what he's looking for (the original post mentions SHA256).

1: <http://code.google.com/p/smhasher/wiki/MurmurHash3>

<comment><USER3> Computing two 32-bit results in parallel and mixing them at the end does NOT mean collision resistance is only as good as a 32-bit hash. For that, you need to compute ONE 32-bit result, then transform it into a 64-bit result.

<comment><USER4> Depends whether the two 32-bit hashes are correlated with each other. If there is no correlation then a pair of 32-bit hashes is no more likely to collide than a single 64-bit hash. But this is difficult to achieve, and you should not assume (for example) running the same algorithm twice with different initial states will produce uncorrelated hashes.

<comment><USER3> Very true.

</comment></comment></comment></comment><comment><USER5> Question: say you use a hash which returns a 32-bit integer. If you were actually implementing a hash table, would you need to declare a structure with 2^32 elements? `int buckets[2^32]`? This seems unwieldy!

Would an actual hash table only use, say, the first 10 bits or something of a hash function (int buckets[1024]) to make it less sparse (albeit increase collisions?)

If you decide you want more buckets later on, would you have to re-hash everything in your array and move it to a new, bigger one?

<comment><USER6> Yeah, you've pretty much got it. A common alternative to masking bits off of the hash is to take hash modulo the size of the table as the index (although you have to be careful with a modulo strategy, so as not to introduce a bias towards certain table slots).

There are strategies to make the resize not be so expensive. Wikipedia's page on Hash Tables covers this at <http://en.wikipedia.org/wiki/Hash_table#Dynamic_resizing>

[edit: clarity in the first paragraph]

<comment><USER7> If the hash function is _any good_ , simply bitwise-and enough bits from the hash and use that as the index. (It's a modulo too, but simply modulo(2^x).)

Using 2's powers generally fits nicely with programming on binary computers. It also has the nice quality of producing number of slots that are always 2's powers and you can shove those naturally for example into a single memory page.

</comment></comment></comment><comment><USER8> FNV despite much popularity is a relatively poor quality hash. Murmur2 has a major flaw, hence Murmur3. CRC32 is slow. Not mentioned in the post, but if you're thinking Fletcher or Adler, they have terrible distribution. For a fast 32-bit hash, much better to go with Bob Jenkin's one-at-a-time hash ([http://en.wikipedia.org/wiki/Jenkins_hash_function#one- at-a-...](http://en.wikipedia.org/wiki/Jenkins_hash_function#one-at-a-time)) which is simpler than Murmur3 and displays much better avalanche characteristics than the other hashes.

<comment><USER9> According to this site[1], CrapWow seems to be the best in raw performance: [http://www.team5150.com/~andrew/noncryptohashzoo/CrapWow.htm...](http://www.team5150.com/~andrew/noncryptohashzoo/CrapWow.html) (Crap8 in second place and Murmur3 in third place - one at a time performs quite badly in this guys benchmarks)

Performance graphs: <http://www.team5150.com/~andrew/noncryptohashzoo/speed.html>

[1] <http://www.team5150.com/~andrew/noncryptohashzoo/>

<comment><USER10> What about its randomness compared to Murmur2/3?

</comment></comment></comment><comment><USER11> Why don't I see any mentions of the latest research? There are people out there that do this for a living people!

<comment><USER12> I find stuff like this terribly interesting, so please elaborate. Any journal or so that is recommended for someone curious?

<comment><USER11> I'm not active in the field right now, so I can't give specifics (the comment was more borne out of frustration with people putting in so much effort 'reinventing the wheel' in an academic sense).

But if I was you, I'd start with Knuth (he, as another commenter mentioned, covers hashes in great detail), head to the references, and then use Google Scholar to find well-cited recent articles that reference the important papers mentioned there.

<comment><USER13> Unfortunately though, a lot of the papers that turn up in Google Scholar are behind paywalls. It is _very_ expensive to get hold of academic papers if you don't work/study somewhere with an institutional licence (anything from $10 upwards per paper).

<comment><USER11> Yup, that's the world of academic publishing unfortunately. A tip: often you can get a 'preprint' copy of the paper from one of the authors' websites. Probably not strictly legal, but it does happen a lot.

</comment></comment></comment></comment></comment><comment><USER14> If you think this is the sort of answer that Stack Overflow should strive for, note that the author edited it too many times and it fell into "Community Wiki" status. Until this was reverted in a manual process, the author didn't receive any points for his answer.

<comment><USER15> Well, not entirely. Reverting the CW restores the rep, subject to daily rep limit. The answer's been given 3 separate bounties (100, 100,50) which are not affected by CW.

<comment><USER14> 1) It still required manual intervention from a moderator.

2) I'm certainly not an expert on how SE distributes its points, but the moderator comment in the related meta post ([http://meta.programmers.stackexchange.com/questions/3527/rem...](http://meta.programmers.stackexchange.com/questions/3527/remove- cw-status-for-this-answer-hashing-algorithms-testing-by-ian-boyd)) states "I don't think there is a way to refund the reputation the answer gained while it was CW [...]"

</comment></comment></comment><comment><USER16> Why did he omit the standards (MD5 and SHA1) from the comparison?

<comment><USER17> These are not cryptographic hashes. Comparison would be unfair as cryptographic ones are rather slow . These are used in structures like Hash tables or Bloom Filters etc. they need to be very fast and provide reasonable randomness (low collision). Bu their collision rates are very high comparing to say SHA1.

<comment><USER18> >@Orbling, for implementation of a hash dictionary. So collisions should be kept to a minimal, but it has no security purpose at all. – Earlz

SHA-1 is very fast though so it is a good point for comparison.

<comment><USER19> SHA-1 was designed as a cryptographic hash functions, they are puprposely slow. No, SHA-1 is not as fast as functions from the article.

<comment><USER20> You've got it backwards; cryptographic hash functions are designed to be as fast as possible without giving up their cryptographic properties. If you need a slow hash (e.g. for password storage), you use something like bcrypt that's designed to be slow.

</comment></comment></comment></comment></comment><comment><USER21> Donald Knuth's Art of Computer Programming Volume 3 has an excellent exposition on hash functions and hash tables in general. If you can get yourself a copy I would highly recommend the read.

</comment><comment><USER22> Found these by coincidence, might be interesting to some of you.. (can't speak to the content)

[http://blog.aggregateknowledge.com/2011/12/05/choosing-a- goo...](http://blog.aggregateknowledge.com/2011/12/05/choosing-a-good-hash- function-part-1/) [http://blog.aggregateknowledge.com/2011/12/29/choosing-a- goo...](http://blog.aggregateknowledge.com/2011/12/29/choosing-a-good-hash- function-part-2/) [http://blog.aggregateknowledge.com/2012/02/02/choosing-a- goo...](http://blog.aggregateknowledge.com/2012/02/02/choosing-a-good-hash- function-part-3/)

</comment><comment><USER23> Honest question: why not use 2-3 different hash algorithms to minimize collisions if you are simply after uniqueness (e.g.: verifying that a downloaded file is correct)?

As for hash tables, can't you guarantee uniqueness by using only reversible operations? I remember reading a lengthy post about this on HN, but can't find the link anymore.

<comment><USER24> > As for hash tables, can't you guarantee uniqueness by using only reversible > operations?

This is called a perfect hash and its appropriateness depends on the input data.

The problem is that the problem domains where hashes are practical are where a very large space of inputs needs to fit into a finite number of buckets such that lookups are fast.

For that to work with a perfect hash, you need an infinite number of buckets which needs infinite space.

<comment><USER25> A perfect hash is able to avoid collisions when given the set of all possible keys in advance; it is not related to reversibility. The latter contradicts the very idea of a hash function, and would conceptually be a lossless compression technique.

<comment><USER24> Any reversible hash would be a perfect hash - not the other way around. That's all I'm saying.

That said, there's nothing in the definition of hash functions that require them to be compressing or non-reversible - although they would typically have to be to be useful.

<comment><USER25> I agree with the first point, but I think compressing and non-reversible are necessary conditions for a given function to be called a hash function; if they weren't, any mathematical function would do, wouldn't it?

One could see a hash function as an (extremely) lossy compression method. However, lossy compression only makes sense when you can exploit features of the domain, e.g., psychoacccoustics with sound, or characteristics of human vision with photos; perceptual hashes come to mind here.

<comment><USER24> It's really quite simple. Perfect hashes exists and are hashes. Perfect hashes do not, as a matter of definition, compress. They typically aren't reversible, because it's not an useful feature for a hash, but they could be - and if nothing else, they can always be deterministically brute forced (as they have no collisions), which is a (very bad) form of reversibility.

It's not meaningful to study hashes as compression, since compression is by definition reversible.

</comment></comment></comment></comment></comment></comment><comment><USER26> I wish he provided the architecture he ran on. Nehalem and later cores have crc32 instructions that are quite zippy.

</comment><comment><USER27> Very interesting, thanks for sharing.

"CRC32 collisions: codding collides with gnu". At first I read "coding" and I was all "haha this must be an easter egg of the implementation".

<comment><USER28> The irony is that codding [British English] means a practical joke or trick on someone. :)

</comment></comment><comment><USER29> How do folks generally take an autoincrementing database ID and generate a hash to be used "in public" when trying to avoid revealing obviously serial numbers? I don't think I need something airtight, in fact in one system we just multiplied/divided by a 4 digit prime number. While this worked fine, it seemed a little loose.

<comment><USER30> HASH(<id> \+ "static string pad") is how I imagine most people do it. Depends how much you care about a dedicated attacker figuring out that ID.

If this is a thing you're going to use a lot, I'd probably just add a database column and give each record a random unique "public ID" -- then there is literally no connection between the public ID and the private one..

</comment></comment><comment><USER8> If you're doing 32-bit hashes in Javascript and are willing to trade a bit, then a 31-bit hash may be at least an order of magnitude faster due to VM implementation: [https://groups.google.com/d/msg/v8-users/zGCS_wEMawU/6mConTi...](https://groups.google.com/d/msg/v8-users/zGCS_wEMawU/6mConTiBUyMJ)

</comment><comment><USER31> There is a python wrapper for murmur3 here : <http://stackoverflow.com/a/5400389>

</comment><comment><USER32> More tests: <http://www.strchr.com/hash_functions>

</comment><comment><USER33> Going by just the subject, maybe a perfect hash function generated with eg. GNU gperf?

</comment><comment><USER34> isn't slow better in this case? I mean if it's fast to generate, it's fast to crack, right?

<comment><USER35> > isn't slow better in this case?

No, guy's looking for a hash table hash, not a cryptographic one. For a hash table you're looking for low collisions and high throughput (so your hash table is fast) first and foremost.

<comment><USER20> Even for cryptographic hashes, fast is what you want most of the time. Look at it this way: when you connect to a web site via SSL, all the data you send will be hashed for authentication. Do you really want this to be slow?

<comment><USER36> Cryptographic hashes should be as fast as possible while not sacrificing collision resistance. Hashtable hashes should be as collision resistant as possible while not sacrificing speed.

Sort of anyway.</comment></comment></comment></comment>