If Silverlight were installed just as often as Flash, would you use it over Flash? - <AUTHOR>

If not, why? <comment><USER2> Do not want Silverlight.

Want javascript.

By the way, why don't you have a blog? You post some interesting stuff to your twitter sometimes, but it would take a few hours at most to set up a Wordpress site.

<comment><AUTHOR> I have little patience for writing long blog posts. And I suspect most people have little patience for reading them.

In a way, twitter is a great equalizer, rewarding ideas over writing ability.

<comment><USER3> How about Posterous then?

</comment></comment></comment><comment><USER4> It'd be a toss up, but I've been surprised by Silverlight. The recent implementation of Netflix streaming has been working without a hitch for me on Mac, and I like some of the concepts they've worked into Silverlight-- most notably the dynamic language support for things like IronPython.

The idea that I can code Python clientside, even .NET-ly, makes me happier. I haven't done much yet there, but it does raise my curiosity to avoid hacking around with Flex/ActionScript.

</comment><comment><USER5> I think people probably would.

But I am of the opinion that Flash is slowly but surely dying in favour of JavaScript and related technologies. Flash still has its niche for streaming audio and video and a few other things that would be otherwise be a pain to write, but they don't really justify the existence of Silverlight which has largely marketed itself as "a better Flash".

<comment><USER6> This isn't entirely correct. If you're just talking about enhancing a web page, then ok sure Javascript is more widely used. However, if you're talking about building Rich Internet Applications, Flex is many lightyears ahead of what JavaScript has to offer.

<comment><USER7> How so? I mean, what can you accomplish with Flex that you can't also accomplish with modern javascript frameworks?

<comment><USER8> Try out some of the example applications at <http://degrafa.org/samples/> and try to guess how long it would take you to write those samples using modern javascript frameworks vs how long it would take to write using Flex/Flash.

<comment><USER5> Sure. But comparatively few of those samples represent things that you would actually want to use in the real world, while there is a lot of overly shiny eye-candy, poor user interfaces and non-native widgets - things that Flash has always been notorious for.

Flash has always served a niche for what HTML and JavaScript can't easily do; the problem is that over time this is diminishing, and it's looking like over the long term Canvas and SVG will be one more nail in the coffin.

</comment></comment></comment></comment></comment><comment><USER9> I'd use neither. Both go against the open nature of the web.

<comment><USER10> It used to be a nightmare for viewing videos on the web.

This site needed Real, that site needed QuickTime, some other site needed Windows Media, and yet another site needed Some Bullshit Player 4 which only ran on Windows 98 on a good day.

<comment><USER11> Apple must have the last website that still requires a plugin, Quicktime, to view videos on their web pages. This seems odd since most of the videos are marketing related, and they are making it _harder_, not easier, to be marketed to. It doesn't matter how good the quality of quicktime is (if it is better), it's not a video if I can't watch it.

</comment></comment></comment><comment><USER12> Never. The web was built on open standards, if we let somebody put a toll booth we're screwed.

<comment><USER13> what toll booth? Silverlight's implementation is open enough that the Mono project was able to clone it with moonlight. You can serve it from any server, too, not just IIS. In fact my buddy is serving it off of Apache.

<comment><USER6> I think you need to go back and look up the definition of 'open standard'. Someone figuring out how to reverse engineer one company's product implementation does not make that either 'open' or a 'standard'. What's needed is a written specification that is not subject to the whims of any single company and that anyone who wants to can build an implementation of.

</comment></comment></comment><comment><USER14> I would ditch either or both of them in favor of a functional open-source media environment.

js + svg + ogg OR whatever

If you want me to take sides in your standards war give me something worth fighting for. Freedom.

<comment><USER15> __rolls eyes __I thought we were talking about watching video online not ending world hunger or tibetan oppression.

<comment><USER16> You know, transmitting video has proven to be a pretty important tool for fighting world hunger and various kinds of oppression; when it's possible to see the problems other people are experiencing, it's a lot easier to empathize with them. So it might not be a great idea to let one company decide how our video-transmitting technology is going to work and who gets to use which parts of it.

To be more concrete, imagine:

"The video you have selected ("russians_in_tskhinvili_getting_shelled.wmvx") is not viewable in your region ("Georgia"). Please contact your system vendor for a software upgrade if this region is not correct."

"New Adobe Explosion 2012 offers video content providers a usage-tracking feature, which provides accurate statistics on the age and gender breakdown of their viewing audience, enabling video content providers to micro-target advertising content. *Information about users' identities will not be disclosed except pursuant to an order from a court in one of the following jurisdictions: United States, China, India, Saudi Arabia, or Germany.)"

"The United States Trade Representative is pleased to announce a new accord with Brazil, addressing both American media companies' concerns related to rampant Brazilian internet piracy and the new Brazilian military government's concerns related to subversive content from overseas. Under the accord, effective starting 2Q 2011, only properly licensed video codec software from Adobe, Microsoft, or Apple will be permitted in Brazil."

"We're sorry, but the license for the software that created this audio file ("Grandpa Telling Us About His Mother.flvx") has expired. Please contact the content provider to request that they renew their license in order to access the content."

</comment></comment></comment><comment><USER7> Definitely Silverlight. I generally avoid Microsoft products, but the .NET framework trumps AIR any day.

<comment><USER17> Except that in silverlight you can't use the whole of .net, just a subset.

<comment><USER13> The .net framework that is included with silverlight has pretty much anything you would ever possibly need when running inside a sandboxed environment.

</comment></comment></comment><comment><USER18> I would pick Flash for a number of reasons.

It has a lot better x-platform support for it's IDEs. This is important because if you are creating anything at all rich you are going to have designer and coders working on your stuff. Constraining them to a single platform reduces the amount of people who would be willing to work on it.

Flash also now has Flex which allows you to code and compile. Depending what you are doing this is great to have designers and developers on the same project.

Finally people are used to building stuff using the Flash IDE. While Silverlight might be the best thing since sliced bread I'd rather use a technology I know I can just find a contractor for in about 10 minutes.

</comment><comment><USER19> If I were to choose the lesser evil of the two. I thinki it would be Flash. As it seems more "open" than Silverlight. I mean look at the amazing piece of software that is HaXe and the slew of true 3D flash applications on the internet.

IMHO I never knew what Flex is all about. Even going to their website it seems a bit vague to me. Learning MXML adds a layer of complexity that I'm not willing to work with. AIR OTOH seems promising though.

<comment><USER8> MXML is to HTML as ActionScript is to JavaScript.

</comment></comment><comment><USER20> No. MS is not as committed to the OSX platform as Adobe. Look at what happened to the Mac versions of MSN Messenger and Internet Explorer.

</comment><comment><USER21> Would microsoft provide a binary for the iPhone? How about my custom browser on my odd cpu?

</comment><comment><USER22> yes

</comment><comment><USER17> I'm using it at work and absolutely hate it: if feels unfinished in almost every aspect. Try to use it yourself to do something nice and not simplicistic and you'll see it yourself.

Now it appears that only Microsoft's evangelist and members of the silverlight team are using it. All the blog postings/tutorials are posted by these people.

I feel that if a technology is naturally good you'll want to use it yourself, but this requires an army of payed bloggers to be pushed down the throats of developers.

Also, what problem is silverlight trying to solve? I feel it's trying to solve the i-dont-know-html problem in the end... well, i dont have it.

</comment><comment><USER23> Not unless I need some feature in Silverlight or Flash that can't be accomplished by Javascript or Javascript based Framworks (e.g. Cappuccino). I just don't see the point of putting my users through the pain of installing them.</comment>


For Pearson, Common Core Is Private Profit - <AUTHOR> http://america.aljazeera.com/opinions/2015/3/for-pearson-common-core-is-private-profit.html <comment><USER2> High-quality open-source text books covering the Common Core Material would be an incredible "force for good"...

<comment><USER3> I agree, but not just textbooks, also lesson plans and workbooks.

The problem is that if Pearson makes the test and the test results are the most important metric for teachers and administrations, then they are compelled to use the materials from Pearson because they will be more effective at teaching to the test.

I'm opposed to extensive standardized testing, but if it is mandated, then it should be written and administered by a government agency, not a private company.

</comment></comment><comment><USER4> Newsflash: every time the government buys a roll of toilet paper, a private company profits. That is not, by itself, a valid criticism. If there was evidence that the private companies are charging more than what it would cost states to do things themselves, that might be a criticism, but that's not what is being alleged here.

And frankly, I'd rather have, e.g., Pearson certifying teachers in New York than have a government agency, which would inevitably fall into the pocket of teachers' unions, doing that.

<comment><USER5> Who do they think sold all of the pre-Common-Core textbooks and assessments? Pearson, obviously.

</comment></comment><comment><USER6> The headline should be rewritten: "Dominant Education Publishing Company Continues To Publish Education Materials"

<comment><USER7> "Dominant Education Publishing Company" benefits from continuously changing standards. A history book might be good for ~5-10 years unless standards change. Then suddenly they get to print new books for every student.

<comment><USER6> They already do this every couple of years, if I recall correctly. It has nothing to do with Common Core. It's just plain old greed.

<comment><USER8> How does Pearson induce their customers to buy their revised textbooks?

If the newer books do not bring value, why do the customers purchase them?

<comment><USER6> I think this story by Richard Feynman might help illustrate it:

[http://www.textbookleague.org/103feyn.htm](http://www.textbookleague.org/103feyn.htm)

</comment></comment></comment></comment></comment><comment><USER9> This is not unique to Pearson. I do grant writing for nonprofit and public agencies, and I've worked on all sorts of education projects, including numerous projects for school districts, Head Start, Early Head Start, and Universal Pre-Kindergarten (UPK—it's an NYC program). For most of these projects, funders require applicants to identify the curriculum(s) that'll be used. The curriculums themselves are hundreds, sometimes thousands, of pages of stuff like this:

 _3\. The Buildings Study; (a) Investigating the Topic; Day 5; Investigation 3: What are buildings made of? What makes them strong? Vocabulary: English: Characteristics. Spanish: Caracteristicas. Large Group: Opening Routine: "Sing a song and talk about who's here." Poem: "A Building My Size." Use Might Minutes 49, "A Tree My Size."_

(From _The Creative Curriculum: For Preschool: Featuring the Buildings Study_.)

I'll stop now. These things are always faintly ridiculous, but they're mandated, so people produce them, and others use them. I have a shelf sitting next to me.

A lot of funders will list validated curriuclums, so you have to chose from this, and only a relatively small number of companies are in the game. Those that are, from what I've heard on the grapevine, also spend a lot of money and time and energy taking people out to dinner and doing the sort of stuff you might've seen on _Mad Men_. It's a hard business but can also be a very profitable one.

The teachers on the front lines know all this stuff is bogus. The basics of reading, writing, and math haven't changed substantially in decades. Everyone knows that great teachers aren't great teachers because they've mastered "Common Core" or "The Buildings Society."

But most of these decisions get made deeply underground, and no one sees them. Common Core has for whatever reason become a politically popular thing to hate, but if you drill down to find each state's standards, they won't be any better.

In some ways not much has changed since Richard Feynman wrote "Judging Books by Their Covers" ([http://www.textbookleague.org/103feyn.htm](http://www.textbookleague.org/103feyn.htm)) decades ago. The big publishers all know this stuff. Even the Al Jazeera article is only seeing a shadow from the main event.

EDIT: For more on UPK in particular see [http://blog.seliger.com/2015/01/11/trying-to-give-away- unive...](http://blog.seliger.com/2015/01/11/trying-to-give-away-universal- pre-kindergarten-upk-or-early-head-start-ehs). Some outsiders are aware of how this stuff works, but it's not overtly corrupt and it's not sexy enough to be newsworthy most of the time.

<comment><USER10> Each state's standards _are_ the Common Core. They are literally the same thing; the name "common core" simply refers to the effort to align the standards from state to state. Why? Because the basics of reading, writing, and math are the same in every state.

State alignment of standards is common. You may have heard of the Uniform Commerical Code or the Uniform Building Code, which are other examples.

Even the states whose governors are rejecting Common Core for political reasons are putting in place new state standards that are not substantially different from Common Core. But since national conservative organizations have latched onto the name Common Core for their fundraising, the name has become messy for conservative governors. But the concept of standards in education is still very popular.

And standards are not the same thing as curricula. The standards define what students should learn; curricula define how students will learn that. The two are constantly conflated, which is not helpful to either.

<comment><USER11> Unfortunately if you have too stringent of standards, the curriculum to teach it becomes implicitly standardized as well. If you mandate too many things, then there is no room for the teachers to make any decisions based on their knowledge of the class itself, and you may as well use a robot instead. This problem is looming right now as common core has been mandating more and more things from teachers.</comment></comment></comment>


All .sm domains registered with 101domain suspended? - <AUTHOR> https://twitter.com/journali_sm/status/1194378274354450436 <comment><AUTHOR> OP here. Currently dead in the water. The domain has been paid for through February and on auto-renew.

And this isnt making me feel too great: [https://puri.sm/posts/the-great- purism-dns-outage-of-2018/](https://puri.sm/posts/the-great-purism-dns-outage- of-2018/)

</comment><comment><USER2> All services for .SM domains are back up at 101domain.com now. Thank you for your patience! - 101domain</comment>


YHackers: Click that "New" link - <AUTHOR> Lately, I've noticed that some really good submissions aren't making it to the homepage.
Help bring back great articles -- once or twice a day, hit the new link at the top and see if there is anything worth upmodding!
It'll only take a minute and can really help what makes it to the homepage! <comment><USER3> You know, I had a thought about this - why not make it an option to show me the 5 most recent new submissions on the bottom of the index page (e.g., the top 25 plus 5 latest). It's not a perfect solution, but at least I'll be aware it's there.

I understand that could lead to some nasty gaming of the system though, just the first idea I thought of.

<comment><USER4> or a little DSL for us to specify what we wanted on our homepage.

      (def homepage (page
                      (top 10)
                      (newest 5)))

<comment><USER5> I'm planning to start letting people use code snippets to customize stuff, actually.

<comment><USER6> Can we customize the ranking algorithm? Pretty please?

</comment></comment></comment></comment><comment><USER7> Perhaps some kind of incentive should be introduced?

One way could be to reward "early promoters", eg. give karma to the first users that up-vote a story, which later makes it to the front page or reaches a certain number of votes.

<comment><USER8> That would make karma even more of a "guess who the average person would think the average person would think would win a beauty contest" game.

<comment><USER9> That's a "Keynesian beauty contest" for anyone who's interested.

( <http://en.wikipedia.org/wiki/Keynesian_beauty_contest> )

<comment><USER3> Thanks! That is _awesome_

</comment></comment></comment></comment><comment><USER10> Over a week ago, I put in a feature request to give users a karma point daily just for visiting the New page:

<http://news.ycombinator.com/item?id=433004>

Another idea is simply to display the number of new stories submitted since you last visited the New page:

      new (26) | threads | comments | leaders | jobs | submit

Edit: A third, less obtrusive option is to use an asterisk:

      new* | threads | comments | leaders | jobs | submit

Perhaps it only appears when a given number of new stories have been submitted since you last looked at the page. Like, say, 20. Possibly user-configurable.

<comment><USER11> I really like this idea to put a number next to new, making it feel like an inbox. People will end up clicking it based on their need to "empty the inbox" built up from email management.

<comment><USER12> DEAR GOD NO! Please don't do this, most of us already have enough inboxes.

The only thing I like about non-time-series sites like HN is that it just isn't in their nature to ever be something inbox-like. It's the sole saving grace of having a voting system, especially with vote-ranked threaded discussion -- it keeps it from ever being something I have to "catch up with" regularly.

<comment><USER10> An actual inbox requires many clicks to clear all unreads, assuming you actually read them. What I'm proposing clears all unreads with one click.

Alternatively, just have an asterisk to indicate that there are new submissions you haven't checked out yet:

      new* | threads | comments | leaders | jobs | submit

That's probably the most minimalist incentive you can give to increase New pageviews, and fairly easy to implement. (Edit: updated the original post with this suggestion.)

</comment></comment></comment></comment><comment><USER13> This could be solved by using the one-box method that Reddit uses - make the top of the home page a new story without regards to popularity. I like that feature a lot.

Let's be real - people are going to do what's in their best interest - <USER2> what is good for the community. So, let's not count on people to vote and go to the New page. I think it's better to count on software engineering here, instead of social engineering.

<comment><USER14> What about the following idea: Always take the top-story off the front page and instead only show it on the "new" page? So the front page remains very useful, but if you want to look for the very top story, you also have to take a look at the new ones. Couldn't this be an adjustment to better "pivotize" the signal/noise problem?

(Addition: It may be better to take the two (or three) most popular stories.)

</comment></comment><comment><USER15> The more I think about alternative solutions, the more the present, conservative (less vulnerable to being gamed) approach. The occasional reminder (like this one) is helpful: I know I get used to just scanning the front page. As a compromise: what about a "new" that was set apart (in color, location, etc.) a little to act as a reminder?

</comment><comment><USER16> If you are on twitter (or use RSS), <http://twitter.com/newsycombinator> alerts you of the top 5 _new_ stories each hour ("the algorithm is just the top 5 items from the RSS feed every hour" - <http://twitter.com/riklomas/status/1093938010>)

<comment><USER17> This is the top 5 homepage stories from the RSS, not the newest ones

I can happily build another bot for newest stories though, if anyone would be interested...

</comment></comment><comment><USER18> Additional rss feeds for { top newest active } may help users implement a diy solution. I think right now it's limited to just top.

Also I think the appropriate location to discuss this is <http://news.ycombinator.com/item?id=363>

</comment><comment><USER19> I didn't even know it was there. I'll keep it in mind now. In fact, I don't understand half of the features of hn, and I've been using it for more than a month. There really should be a user guide or FAQ or something.

</comment><comment><USER20> Not that this site needs to be like Reddit, but it pseudo randomly shows one of the new submissions as a separate first item on the front page. Something like this might be roughly equivalent to putting the newest 5 at the bottom of the front page though given that this site has a much smaller user base.

</comment><comment><USER21> The reason for the the lack of really good stories is the recent arrival of large crowds.

And pleading with them won't help, things are just averaging out. That's the key word _average_.

This has happened to every single great social news site I've enjoyed.

Anyone know what the next slashdot/reddit/HN is yet?

</comment><comment><USER22> >Lately, I've noticed that some really good submissions aren't making it to the homepage

This could simply be a direct result of the change in the "new" section's S2N ratio. There's simply a lot more crap in that queue than there has been previously.

</comment><comment><USER23> I don't ever promote because in the last month or so, when I am logged in to HN, each page load takes about 20-35 seconds.

That kind of performance keeps me logged out. Can someone shed some light on why it is so slow?

</comment><comment><USER24> I agree, it's been a bit slow lately. But, I'll be happy to see HN slow that to have it run into the ground like reddit and so forth.

</comment><comment><USER25> Or you could check all the new postings with RSS.

<http://news.ycombinator.com/rss>

<comment><USER3> That shows you every article that makes the front page, it does not show you articles that people have just submitted. An RSS feed for all submissions might be nice, but refreshing the new page every 30 minutes or so is also sufficient. Since they roll down in order you don't lose your place, but the front page articles "jump" into whatever place the algorithm determines, which is why I prefer to read the front page via RSS.

<comment><USER26> The RSS shows every submission which gets at least one up vote. So most spam doesn't make it to the RSS, but a lot of other cruft can pass through depending on if at least one person liked it.

At least, that's how I've seen it play out.

<comment><USER5> The RSS file is a snapshot of the frontpage. Sometimes 2 points is enough to get onto the frontpage, but not always.

</comment></comment></comment></comment><comment><USER27> Yes, please do!

<comment><USER28> Really... what did you think you were going to accomplish by choosing that user name?

<comment><USER8> The account was registered 211 days ago. Was _this_ the opportunity they were waiting for?

<comment><USER9> Based on her profile it seems to just be her initials. Maybe she saw that pg was taken and appended an underscore?

<comment><USER28> Oh... silly me :-).

</comment></comment></comment></comment></comment><comment><USER29> If you removed the voting links on the front pages, I think that might help solve the problem.</comment>


Paul Bucheit: Sprint is cheap, it would be interesting if a large tech company bought them - <AUTHOR> http://friendfeed.com/e/cf2ddc91-7d3f-4303-b7a3-6c14667ad2ae/Sprint-has-lost-90-of-its-value-in-the-past-few/

<comment><USER2> I would like Google to buy sprint (of course the understood meaning of this statement) ; but I bet MSFT or YHOO wouldn't let that happen without a anti trust case :(</comment>


Age Labeling - <AUTHOR> https://www.tyroway.com/blog/age-labeling/ <comment><USER2> The thing about this though is that age labeling is not the only thing that's going on, it's not just internal. Age labeling when done by others (recruiters, company policy, etc) is age discrimination, and can actually prevent entry into the tech industry. For a lot of people it's not that age is a number, it's that age is yet ANOTHER number, one they also can't do anything about.

The internalization is hard too, to be honest. For a lot of people going back to school or changing careers (especially in the tech industry), it can be much harder to stay motivated when others are in a completely different stage of life than you.</comment>


Switching to Firefox, Concerned with UBlock Origin Changes - <AUTHOR> https://www.reddit.com/r/AdviceAnimals/comments/aj3k83/when_i_read_that_google_has_proposed_changes_to/eet9kc6/ <comment><USER2> I recommend others to switch to Firefox on their Android devices as well especially since you can install add-ons like UBlock origin. A couple years ago it was almost unusable, but this past year they have really stepped up their game and I haven't used Chrome mobile since.

<comment><USER3> But if you still want a fast Browser , try Kiwi Browser. Perf optimized chromium with build in adblock and night mode (100% black Websites on my amoled screen)

</comment></comment><comment><USER4> Hopefully more people do. We can't let the web become dominated by Chromium or we'll be back to the days of "This site only works in IE6! Please change your browser to the ONE that we support / tested with."

</comment><comment><USER5> The one add-on I'm going to cling to for the rest of forever is the Google search link fixer. It makes clicking on a result instant.

<comment><USER6> I think the reason Google does this is to prevent the site you're landing on from knowing what you searched for through the HTTP Referer header.

<comment><USER7> That header is the user-agent's decision, I consider it an anti-user feature. Google (like most search engines) wants to know what you clicked on.

<comment><USER8> That's correct. Google uses Referrer-Policy [1] to prevent the full referrer from being sent to the destination website. The transition page is purely for tracking. The ping attribute [2] is meant to replace that transition page eventually, but it needs to be ubiquitous and equivalent in terms of features before Google switches to that method.

[1]: [https://developer.mozilla.org/en- US/docs/Web/HTTP/Headers/Re...](https://developer.mozilla.org/en- US/docs/Web/HTTP/Headers/Referrer-Policy)

[2]: [https://developer.mozilla.org/en- US/docs/Web/HTML/Element/a#...](https://developer.mozilla.org/en- US/docs/Web/HTML/Element/a#attr-ping)

</comment></comment></comment></comment><comment><USER9> These changes to the Chrome API haven't even happened yet and it's unlikely they'll ship in their current state.

<comment><USER10> What makes you think it's unlikely? The Chromium team seems unreceptive to the idea that e.g. `webRequest`'s ability to block a request entirely is a security/privacy feature, and instead views it as a bug to be fixed.

I haven't seen anything in the discussion thread that makes me think the Chromium team might decide to change course: [https://groups.google.com/a/chromium.org/forum/#!topic/chrom...](https://groups.google.com/a/chromium.org/forum/#!topic/chromium- extensions/veJy9uAwS00)

<comment><USER11> I read through that whole discussion the other day and thought this was the best comment:

 _Is a browser something fundamentally under the user 's control, or is it something fundamentally under the corporate entity's control?_

 _Asked in a poignant way, is Chrome my agent, or is it really just an agent of Google?_

 _By directing my browser to someone 's website, am I necessarily giving up all permission to a (well-placed) cabal to take over my computer and do with it as they collectively wish? After all, detecting of ad blockers or objectionable behaviors done via extensions remains perfectly feasible: if you don't want to show me your content under my configured extension regime, you aren't forced to._

</comment></comment></comment><comment><USER8> Until other browsers offer a proper built-in UI for managing multiple profiles as a first-class citizen, there's little chance that I'll switch from Chrome.

About once a year I give another browser a try for a few weeks. I go all in, utilizing whatever features are unique to the browser instead of trying to use it like Chrome. But I have yet to find anything that compensates for the loss of easy profile switching.

Unless Firefox adds a built-in profile switching UI or Chrome becomes literally unusable, there's just no way I can justify switching. The loss in productivity is too significant.

<comment><USER12> In case this helps somewhat, Firefox has a CLI triggered GUI for profile management and switching, which will let you run Firefox in multiple profiles concurrently:

firefox --no-remote -P

</comment></comment><comment><USER11> Recently switched back to Firefox after a ~4 year stint with Chrome. Was previously almost exclusively Firefox but eventually surrendered to the tide, not to mention FF wasn't in great shape at the time. Have been super happy switching back. FF + TreeStyleTabs (reunited with it finally) + AutoTabDiscard + Multi-Account Containers has made me a very happy camper.</comment>


Bronze Age Homes Unearthed in East Anglia - <AUTHOR> http://historicengland.org.uk/news-and-features/news/bronze-age-homes-unearthed-in-east-anglia <comment><USER2> Is there a theory why so many archaeology stories show up on the front page of HN? I'm not complaining (I like reading about the topic), but most of the other frequent topics are stuff that are of pretty obvious interest to the tech-crowd.

Kinda puzzling that the one exception (that I've noticed, anyways) is archaeology.

</comment><comment><USER3> Having had the opportunity some time ago to visit that area, I'm sure they are referred to as the new developments.

<comment><USER4> Interesting. What did you think of them? ive always wanted to visit that part of the world</comment></comment>


Happiness Button (A Parable) - <AUTHOR> http://dilbert.com/blog/entry/happiness_button/

<comment><USER3> I'm with him on this thought experiment all the way up to the last paragraph: "I can't think of any imaginary situation in which long term happiness could come from other people. The best you can hope for is that other people won't thwart your efforts to make yourself happy."

On the contrary. Almost completely, happiness _is_ other people.

<comment><USER4> Yes, it almost isn't a thought experiment. The only difference is that friendship is not as easy as pressing a button. The button would only work if people you like would press it, and it would have to stay pressed for a while before having any effect. This is enough for many people to be lonely, regardless of any irrational social rules about pressing buttons.

This morning my wife flew back to her country for a 3 week holiday. I suppose I'm going to recover soon but right now I'm still having depressive thoughts.

</comment></comment><comment><USER5> He is actually talking about warm fuzzy(any sort of affirmation not sex in particular)

The original allegory was written by Claude Steiner.

Here is the original <http://www.youtube.com/watch?v=v683T1GVS1U>

if that is annoying read the story here <http://www.claudesteiner.com/fuzzy.htm>

</comment><comment><USER6> Interesting.

I would imagine the right to pressing button or having your button pressed will be institutionalized,e.g. through a Church or Government. Doing that freely and often - before some sort of permission, license or ceremony - <USER2> be stigmatized and possibly outlawed.

<comment><USER7> I could see that happening, particularly because -- as Scott points out -- when you are sitting around being happy, you aren't doing anything particularly productive. Cultures with a particular set of rules regarding button-pushing would be naturally more materially wealthy than those without, although not necessarily as happy.

</comment></comment><comment><USER8> With a happiness button on my forehead, I would immediately start doing A/B tests on the conversion rate of 'friends passing by.

</comment><comment><USER9> If you want to take the story semi-seriously, it really depends on the definition of "happiness". If it was like an electrical stimulation to certain parts of the brain (colloquially called the "pleasure center" even if that's not accurate), the natural outcome would be pretty much the entire species pairing up and holding each other's buttons until death by dehydration.

As others observe, if this is a metaphor for sex, it is a terrible one. A metaphor useful to the extent it has similarities with the target of the metaphor and this deviates in numerous critical ways that render any resulting "insights" completely irrelevant to the question of sex. Numerous, numerous, numerous.

</comment><comment><USER10> I also imagine that there would be a huge market for selling fashionable accessories that conceal the happiness button.

Some (most) governments/religions/cultures would create and enforce laws to force you to conceal it.

</comment><comment><USER11> Now imagine that, instead, people _couldn't_ avoid pushing your button—in fact, that the very act of being around other people pushed both your button and theirs. That would be a world where indeed "long term happiness could come from other people."

</comment><comment><USER12> is he talking about sex here? Or is it just me...

<comment><USER13> He thinks he is talking about sex, but there are some important point he overlooks. Most people would usually want their button pressed by members of the other sex. Most people naturally close to you (parents, siblings, cousins) would be out of the question as pushers of your button.

Also, over millions and millions of years, certain aspects of hominine reproduction (large heads, long gestation times, preposterously long childhood, staggering maternal mortality) and simple statistics would have conspired to make women very, very picky about when and by whom they want to press their buttons. At the same time they would have conspired to make men want their buttons pressed as often as possible, and by pretty much any girl with a neck pulse.

The availability of people of the desired sex willing to press your button would be your default main source of serenity and self-respect. It would take experience and hard work for you to create other sources of fulfillment for yourself. It would be natural for immature, stupid, or bitter people to spend enormous amounts of energy trying to control access to other people's buttons.

If you could press your neighbor's button without risk of adverse side effects (killing months of their productivity, having them lose one of their four of five shots at producing healthy offspring, making them die in childbirth) offering someone to pleasure of a press of their button would be as harmless as offering them the pleasure of a smile, or of a glass of drink. There would be certain rules of etiquette, but there wouldn't usually be much debilitating drama.

</comment></comment><comment><USER14> I suppose one would not derive deep, meaningful happiness from the button, because the happiness would have a hollow source. Sort of like the difference between the elation of scoring a goal, or the joy of reading a good book, or the merriment had when spending time with long-time friends, versus the high of taking drugs. Enriching fulfilment versus empty thrill.

</comment><comment><USER15> I'd just lie with my head on my desk and be satisified with life. But I'm not sure if I'd actually BE happy. I may feel it but it would be rather shallow.

<comment><USER16> Apparently the buttons have Digital Rights Management so that a desk cannot press the button, only digits can.

</comment></comment><comment><USER17> Hilarious and poignant.

</comment><comment><USER18> So it's like sorting algorithms? Or...?

</comment><comment><USER19> Slightly unrelated: A site that has a "share" button really ought to try and see what their page looks like when posted to Facebook. All I get on FB is the URL, no text exerpt and no icon.</comment>


Js2js: A revolutionary open-source compiler from JavaScript to JavaScript - <AUTHOR> http://eleks.github.io/js2js/

<comment><USER2> The footer says that if you want a real "Javascript to Javascript interpreter", to see js.js[0], which is a JS interpreter written JS; where the satirical js2js is a JS-to-JS compiler, something different. If you want a real JS to JS compiler, see Google's "Closure Compiler"[1].

[0]: [https://github.com/jterrace/js.js/](https://github.com/jterrace/js.js/)

[1]: [https://developers.google.com/closure/compiler/](https://developers.google.com/closure/compiler/) / [https://github.com/google/closure- compiler](https://github.com/google/closure-compiler)

<comment><USER3> In the intervening years we've accumulated more js2js compilers. IMO the best one is 6to5 [1].

[1] [http://6to5.org/](http://6to5.org/)

</comment></comment><comment><USER4> Here's the real nut-meat

        Js2JsCompiler.prototype.compileCode = function(code) {
            return code; // as we need to compile javascript to javascript, we do nothing here :)
        };

Very helpfully commented!

</comment><comment><USER5> It can also decompile JS back to JS, cool!

</comment><comment><USER6> Can you generate a map file for in-browser debugging?

</comment><comment><USER7> What is up with all these troll projects recently?

<comment><USER8> Are you talking about:

(a) the obvious trolls, where the fact that it's a diversion is visible quickly from the text/code, or (b) the non-obvious trolls, where a significant chunk of the industry enthusiastically adopts something with marginal benefits not only as a tool but an aspirational standard for 3-5 years before judging it either a dead-end or inferior to the new hotness?

<comment><USER7> Both!

</comment></comment></comment><comment><USER9> Funny!

</comment><comment><USER10> eval();</comment>


Ask HN: how do you reach Asia? - <AUTHOR>

There are many people in Asia, huge countries with many people, many possible costumers. But our societies are so different that i find it really hard to reach them. And the language doesn't help. This seems really two distant worlds.<p>Has someone ever succesfully entered their market? How? <comment><USER2> As a Vietnamese American, I've always been interested in the Vietnam market since the number of internet user's growth is astounding! The country's literacy level is very high and majority of people are either online or trying to be online daily. But this is more of a developing country and the majority of regular Asian population.

The biggest problems I have with Vietnam and Asian developing countries right now, and this isn't unique to just Vietnam as far as I can tell: 1\. The postal system isn't uniform/consistent throughout the country, so there's a real problem in mapping people with a clear home address. 2\. Not having a clear home address combined with a lackadaisical sense of infrastructure planning, it's making things like loans and credits and ultimately credit card ownership is very difficult. So online transaction can be difficult. There is a population of Vietnamese population with ATM debit cards, but the commitment and buy-ins with online transactions are still at an early stage. As far as I can tell, most transactions to push money to an online vendor still go through a brick & mortar proxy (go to shop, load up on digital points --> pay with points like old school phone cards) 3\. Speed/ownership of private internet connections is also an issue. A lot of the general population are still using the internet from internet cafe. As more and more people are getting personal internet connections at home, this is getting better; but it's a long way from where we are in the US. Imagine the early AOL modem era.

I don't disagree that the market is huge and there are countries and locations that are ready: South Korea, Hong Kong, Philippines and Malaysia etc. But the big market you're looking at are still made up of low to middle Asian population, which is getting ready but not there yet in term of online- marketing ready. FYI, a lot of successful services for Vietnam right now are mostly free or supported by ad revenue.

These are just a few of my personal thoughts though. Perhaps someone else with more solid data on Asia would really be insightful for everyone.

<comment><AUTHOR> And what about japan? china? This question came to my mind after i developed a small mmorpg for android and published it asking for beta testers, one of the people who contacted me was a chinese guy who explained me something i didn't know. They have many mmorpgs already published in the android market, and i never seen or heard of them. So i stared thinking of how many things we are doing parallel to them but without(except some occasion) touching.

I gained a lot from this experience and i think that opening to each other would be good for everyone but there are many obstacles, like language, different minds etc...

<comment><USER2> I think Japan is definitely ready. Big cities in China is ready. But since the social classes gap is very wide between the rich and the poor and it may come as a surprise to a lot of people, but majority of the population in countries like China and Vietnam is poor.

Btw, I hear South Korea's internet is much better than what we have here in the US.

<comment><USER3> You heard well: South Corea 16.6 Mbit/s, USA 4.6 Mbit/s.

Source: [http://royal.pingdom.com/2010/11/12/real-connection- speeds-f...](http://royal.pingdom.com/2010/11/12/real-connection-speeds-for- internet-users-across-the-world/) \- Raw data source: <http://www.akamai.com/stateoftheinternet/>

</comment></comment></comment></comment><comment><USER4> I live in China but I am an American. My business partner and I intentionally decided not to pursue business here, instead focusing on an outsourcing model. The most obvious reasons are culture and language (I'm referring to the culture and language of your typical customer), but, at least for China, these aren't the biggest reasons.

The biggest reason is government/law. China likes to talk a lot about the rule of law but the rules are ambiguous and not everyone plays by the same rules. A lot of business here is ruled by who you know and how much back-scratching you can do. Even if we (my partner and I) were able to accurately understand language (we're coming close) and culture (this still needs more work), we would be at a huge disadvantage.

I am not so naïve to think that corruption doesn't exist elsewhere, but in China it is systemic. I know college grads who talked about _paying_ someone for a job, the idea being that they will eventually make more money than they paid for the job. Thus the job isn't necessarily given to the highest qualified (or even baseline qualified) applicant, but rather to the person who can provide the greatest amount of financial gain for the gate keeper. This type of thinking is pervasive everywhere in society: your future customer will think like this too... which is why it's so hard to sell software here.

I don't have a problem with developing 关系 (relationships) with others. That's part of the recipe for any type of business transaction; having a good relationship with your clients/service providers just makes life better. But in China, it seems, even from my lowly perspective that the demands from this kind of game are extremely high. This is a cultural/language issue in itself, but it's for the business side.

The culture/language problem in relating to potential customers is very high, but even if that issue gets solved, the disadvantage that a Western (i.e. American/European) business faces in terms of understanding the business culture is so high that it seems very risky to try to enter the market here.

</comment><comment><USER5> That question is so general, you could write 10 books answering it.

If you're selling a simple service/product that solves a technological problem and it doesn't really need customer support then it could be relatively simple.

Now if you are going in the lifestyle direction or your service is customer support heavy then you're in for a mess.

And Asia is a big place itself, I guess you mean south east Asian countries like South Korea, Japan, Singapore, HK, China, Taiwan etc. But those are already disconnected enough.

There is very very little overlap in web infrastructure between those countries. Even HK, China and Taiwan are completely different in those matters. You might be doing great in HK without getting a single customer from China or Taiwan. So it's very hard to focus on a single market.

As you're saying you find it hard to reach them then I guess your product is not easy to adapt to foreign markets. Unless you're already doing great in the US don't waste your time.

What makes you think Asia is a good idea? Maybe we could help you more if we knew what're you're after. There's definitely many cases in which entering Asian market would be a terrific idea.

<comment><USER2> I completely agree with @auganov. If OP hasn't looked at the map for a while, Asia definitely is HUGE :) Perhaps start with 1 country--the question would then become "How do you reach Vietnam?" or "How do you reach Japan?" Which is much more answerable (even if the answer would be pretty long).

</comment></comment><comment><USER6> > Has someone ever succesfully entered their market? How?

Why, yes, of course. There are plenty of Western megacorps doing business in Asia. What do you really mean?

<comment><AUTHOR> i do not mean megacorps i mean normal startups like many, for example i create a new product and start selling it in the US/EU but i want to start selling it in Asia, open for a larger business... how can this be accomplished?

<comment><USER6> People are downvoting my comment but I really think you could be more articulate when writing your question. Now that I read your other comments it's a bit clearer but still...

For instance, if there are megacorps successfully selling their stuff in Asia, then maybe Asia is not such a completely different world as you seem to assume? Not saying that it's easy, but then it's not necessarily easy to sell your stuff in (say) Brazil or Italy either.

For instance, Google and Yahoo have a big market share in many countries. But social startups don't tend to fare that well, probably because of network effects and not because of specific technology. Amazon is big in several developed countries but has no presence in the developing world. You would think that they could easily reproduce their business model in more countries and make money.

I wonder if you're selling your stuff outside your country already?

By the way, I live in Japan and I have thought of a company who would help web and tech startups to enter the Japanese market. There are plenty of companies who do translation and localization, but I don't know of any that does something both more comprehensive (PR, advertising, possible deals with local companies, etc) and more specific to web companies.

</comment></comment></comment><comment><USER7> If you are focused on finding a similar societal group as yours it is going to be a tough search, but if you are searching for similar in technology use groups - it is a easy way to reach here.

Language won't be a barrier. These days 4 out of 10 people in Asia use English for day to day communication (my assumption as Asian). You need to first find those 4 with whom you won't have language barriers. Then, figure out whom to partner with. It's easy.

</comment><comment><USER8> Visit, travel, spend time or move there to get to know it.

</comment><comment><USER9> I'd really love it if somebody made a website which successfully connects these two 'worlds'; particularly in the hacker/startup context.

</comment><comment><USER10> By boat.</comment>


Functional Programming Is on the Rise - <AUTHOR> https://medium.com/@elizarov/functional-programing-is-on-the-rise-ebd5c705eaef <comment><USER2> > Mainstream languages are Java, JS, C++, Python, etc — languages one would > hardly call "functional".

Even so, "functionalizing" mainstream languages is a thing. Gary Bernhardt was long advocating functional ruby. I deployed a functional Python module (to keep my sanity). React is becoming a progressively more functional dialect of JS, and it's relatively easy to deploy an "all functions" JS project.

> Most developers who live today were raised on this x.one().two().three() > syntactic tradition in which the code is fluent —it reads and works left-to- > right

a trend in functional programming is the pipe operator, at least F#, Julia, and Elixir have it to varying levels of flexibility, where you can apply the result of one function to the first parameter of the next

        start_with_value
        |> do_this()
        |> and_this(too)
        |> then_this()

being equivalent to `then_this(and_this(do_this(start_with_value), too))`

at least in elixir the power of the construct is really that you pipe into other things, like:

        value
        |> transform1()
        |> action_with_error_tuple
        |> case do
          <matches on error_tuples>
        end

For developer ease, Elixir has a builtin IO.inspect(value, label: "label") which pretty prints as a side effect and returns the original value, which is _invaluable_ for debugging, especially with modern IDEs like VS code you can add IO.inspect pipes (with line number annotation) to multiple lines in a pipeline, watch the dataflow, and then when you're done delete it with ease.

<comment><USER3> To this point, JS has been very careful to not get in the way of functional programming, as it doesn't really try to stick to a specific paradigm. There is even a proposal to add pipielines: [https://github.com/tc39/proposal- pipeline-operator](https://github.com/tc39/proposal-pipeline-operator).

Personally, I think forcing yourself to a specific paradigm is a waste of energy. I've tend to just write code that best expresses my intention. Sometimes the code turns out more oop, sometimes it turns out more fp, and often it's more of a mix.

<comment><USER2> > Sometimes the code turns out more oop

I think it's misleading to think of FP as being necessarily opposed to OOP. While FP is very much in opposition to the stroustropian style of OOP in syntax _and_ execution (which is what people mean these days), if you're going back to smalltalk-type message passing objects, arguably some FPs have the hands down best implementations of OOP.

<comment><USER4> For sure. If there are two flavors of OOP: the Imperative OOP we're familiar with (Ruby, Java, Python, etc.) and the Message oriented variety that Alan Kay described, then Elixir/Erlang are more the Message Oriented flavor.

While you can write either flavor in most languages (even Elixir if you abuse ETS), concurrency's requirements for immutability and run-time support start becoming distinguishing factors.

<comment><USER5> There's three main flavors I see:

Synchronous method calling as limited message passing; synchronous method calling as general message passing, and asynchronous message passing.

Java and C++ and most static class-oriented OO languages are in th first group.

Ruby and Smalltalk (and JS, which isn't, barring more recent developments, class oriented OO, bit is still OO) and some other dynamic OO languages are in the second group.

Elixir/Erlang are in the third group.

Message passing is inherently an imperative idiom (whether synchronous or not), even though it may show up in languages that are largely declarative rather than imperative outside of message handling.

<comment><USER2> Do C++ and java actually pass messages? Java I have no clue, but I thought calling a member function in c++ is looking up a function pointer in a table or a vtable if inherited virtual.

<comment><USER5> > Do C++ and java actually pass messages?

Not really, "a limited echo of message passing" would have probably been more accurate than limited message passing: C++ and Java Ivor a form of OO inspired by Smalltalk-style message passing but are implemented in a way which provides something much more limited.

</comment></comment></comment></comment></comment></comment></comment><comment><USER6> It's interesting that functional programming is becoming more popular while functional languages are straggling behind a bit, but I think there's a contributing factor besides just imperative languages borrowing features: IO & error handling. What I find with functional languages is that once I start adding in a lot of IO and error handling things get gross really quick, ie things like print statement debugging are a "side effect", along with things like logging, and so on. If I was more of an expert in functional languages maybe I'd find a more elegant way around this, but I guess I find using something like python I get most of the benefits of a functional language without the aforementioned things becoming painful.

From a practical standpoint, debugging by setting things like breakpoints and watching a value also becomes a bit more weird, because you have so many return values being pipelined through multiple functions without ever having an alias assigned to them, so how do you add a watch? Of course there's ways around that, but I wonder if dealing with practical problems like that turns a lot of people off. Especially since one of the things that draws people to write functional code is it's elegance, but it stops looking so elegant once you have a lot of these concerns in place.

<comment><USER7> I think both models have their strengths. I use C# quite a bit (which itself borrows some functional paradigms for LINQ, Func, etc), but it definitely has some limitations, especially when you need immutability. I have started using F# to fill these gaps, and thanks to the CLR interop is pretty easy. Debugging is pleasant as well.

Someone else mentioned Python/Coconut, which is another great combo that enables you to switch between functional and imperative styles as needed. I think this will probably become more common, especially in interpreted languages.

</comment></comment><comment><USER8> I'm concerned about the use of functional languages. I like them but they seem to be treated as an implementation, not a model, and as such can be very inefficient. I've used scala and like it, but basic stuff with flatmap etc can unfold to be a gross mess of code which, had I written it non-functionally, would be vastly more efficient.

I'd expect the compiler to do more work, perhaps with some additional hints from me, go get efficiency. SQL does this because it has to (not with total success) but with scala I have had to abandon 'nice' functional stuff, which I like, to get speed. It's disappointing. I shouldn't be doing the compiler's job. With a literal implementation, functional programming just seems inevitably expensive and that's morally wrong (just cos computers are fast doesn't mean cycles are free, and don't quote the programmer time vs computer time stuff at me, wasting hardware can become _more_ expensive as the number of machines increases).

Optimising FP to the extent I want is something I'm sure the compiler can't do alone; it would require hints and pointers from the human. The necessary optimisations would need to be from high-level functional transformations (eg. map f (map g x) -> map f.g x), down to eg. escape analysis so as to not produce so much garbage, down to data layout to stop the thrashing the cache.

Also someone I worked with just went quite mad on it - FP should be used where it fits best, he forced us to use it exclusively, even when a procedural code would simply have been simpler and clearer. And faster too - the end result just crawled (it was scala btw). Not a fault of the paradigm but of overselling, and someone in dire need of common sense.

Multiple disclaimers: I'm not a scala expert and haven't used it for a couple of years. I'm not an FP expert. What I've said above is a brief overview of a much larger and more nuanced criticism, which I don't have time to give; I hope you see what I'm getting at. I have little experience with other FP languages so what I say is based on scala and maybe eg. haskell does the clever stuff.

Edit: tidied up.

<comment><USER9> Haskell (or, rather GHC) does do clever stuff, and gets idiomatic code competitive performance with other languages [0]. The problem is that a lot of what GHC does require going full on functional in order to be practical. For instance, GHC can easily produce garbage of 1GB/s [1], which it can handle far easier than most languages because everything is immutable.

GHC also does not have a stack [2]. You can get something resembling a traditional call stack, but it has a fair amount of overhead.

> map f (map g x) -> map f.g x)

This transformation only works with pure functions.

I am currently using Scala, and it is (IMO) a very weird mix between FP and OOP. I is (IMO) much closer to Java style OOP than it is to Haskell style FP (not suprising considering its relationship with Java). It seems to inherit a lot of restrictions from Java that limit its ability to do the type of optimizations that are necessary for performant FP.

If you actually look at the JVM call stack of a scala program, you will find an insane amount of indirection. More than even a naive implementation of FP in C (undoubtadly because of how it interacts with its object system and the JVM)

[0] Although reasoning about performance is still pretty hard.

[1] [https://wiki.haskell.org/GHC/Memory_Management](https://wiki.haskell.org/GHC/Memory_Management)

[2] Actually, it does have a stack, but the stack is no where near what you would expect.

<comment><USER8> > GHC [...] idiomatic code competitive performance with other languages

I thought this only was on micro-benchmarks?

> GHC can easily produce garbage of 1GB/s [1], which it can handle far easier > than most languages because everything is immutable.

How can you possibly not totally trash caches and destroy performance with that kind of churn? From your link "New data are allocated in 512kb 'nursery'. Once it's exhausted, 'minor GC' occurs". I don't know but that sounds like kissing your entire L1 data cache goodbye, and then some.

(stuff about GHC stack) - Most curious! Got a link? (cactus stack is it?)

> This transformation only works with pure functions.

for sure, FP transformations tend to require that but it reminds me that scala doesn't have a this-function-is-pure declaration, which I'd really like. Along with deep-constantness.

> It seems to inherit a lot of restrictions from Java that limit its ability > to do the type of optimizations that are necessary for performant FP.

Not so sure. Scala seems to do a very literal translation - there was a library that showed this, I can't find it, was on github, where straightforward but messy desugaring was replaced with simple stuff. OK, let me try this instead... invented syntax, can't remember how to do it in scala, sum of squares:

      SumSq lst = reduce (\x, y: x + y) map (\z: z * z) lst

I'm pretty sure scala would compile that literally a few years ago and I wonder if it does any better now. I'd expect that, over a thousand item list, to call the square lambda a thousand times to construct an intermediate, then call the add function a thousand times to reduce it. The above should be compilable to:

      SumSq lst = var rslt = 0; for(i in lst) { rslt += i * i }; rslt;

They're not quite equivalent as the first will fail on an empty list but you see what I mean. Point is, there's nothing in the JVM that prevents this level of optimisation. The second does mem reads only and can operate in a couple of registers, and can be unrolled and seems maximally efficient in every way I can think.

If FP doesn't use the very optimisations that it enables, it's going to pay for that in lack of takeup. Inefficiency is not just a technical issue, I'd say it's even a moral one - wasting resources is immoral.

</comment></comment></comment><comment><USER10> Depending on how you define "functional", it's been on the rise for decades. It's just that the goal is a horizon, not a point. For example: Does the language support recursion? It's functional by the old standard. Does it have first-class functions? Ditto, but by a newer one. And so on. These days, it seems to be about making functional composition a major theme, often with side-effect-free styles being favored. Maybe later it'll shift further, to languages derived from Coq or Agda being the things people mean when they talk about functional programming languages.

<comment><USER11> Recursion with tail-call elimination, so that you don't run out of stack, still isn't common in mainstream languages.

<comment><USER12> C++ and the dotNet CLR (so C# etc) support tail recursion elimination. That's a big percentage of widely used languages.

<comment><USER11> I didn't know about C++ (and not familiar with dotNet). I suppose it's not in the C++ standard, but apparently some compilers do it, perhaps as a side- effect of optimisation. So it may work in some cases, when using certain compilers, and not others.

[https://stackoverflow.com/questions/34125/which-if-any-c- com...](https://stackoverflow.com/questions/34125/which-if-any-c-compilers-do- tail-recursion-optimization)

</comment></comment></comment></comment><comment><USER11> Which functional language is the closest to being "mainstream"?

<comment><USER13> Scala

<comment><USER14> There is a lot of merit in just using Scala as a better Java, in fact a lot of its original popularity was that kind of adoption. These days, however, Kotlin is eating that cake, so maybe it's true now?

<comment><USER11> I'd prefer something that compiled to machine code anyway. Scala also has type erasure unpleasantness due to its dependence on JVM.

<comment><USER14> Type erasure isn't just a JVM implementation detail. Haskell, for example, has no JVM dependency and relies solely on type erasure (a running program can't introspect type information). Not reifying types at run-time (in this case type parameters) is a legitimate implementation decision as reification has non-trivial costs.</comment></comment></comment></comment></comment>


Ask HN: Web framework, written in a typed language, auth out of the box? - <AUTHOR> Don't suggest me Spring Boot, asp.net mvc or the Play Framework.
Don't ask me why I want a statically typed language and also don't try to argue about it please.
I don't want to think about auth, I just want to plug it in and it works out of the box but in case that
I have to change something, it should be quite easy to make the changes without lots of pain.
thank you <comment><USER2> If you don't want to think about auth, you're basically looking for a CMS.

All traditional web frameworks make you plug in your actual authentication store, though most obviously provide some notion of access control or permissions.

<comment><AUTHOR> Well ok, it can be an easy to handle module for the web framework.

The ideal example would be Rails devise[0]

It just works without wasting too much time.

[0] [https://github.com/plataformatec/devise](https://github.com/plataformatec/devise)

<comment><USER2> In the Java world, the two modern, main authn/authz frameworks are Spring Security [1] and Shiro [2]. Shiro is vastly easier to learn and apply.

Wicket [3] is a decent Java web framework that you can use together with Shiro; in the past there was a deeper integration [4]. Tapestry is another web framework that offers native integration [5].

[1] [http://projects.spring.io/spring- security/](http://projects.spring.io/spring-security/)

[2] [http://shiro.apache.org/index.html](http://shiro.apache.org/index.html)

[3] [http://wicket.apache.org/](http://wicket.apache.org/)

[4] [https://github.com/55minutes/fiftyfive- wicket](https://github.com/55minutes/fiftyfive-wicket)

[5] [https://tapestry.apache.org/security.html](https://tapestry.apache.org/security.html)

<comment><AUTHOR> Spring security is the biggest boilerplate mess I've seen so far, that's also the reason I'm moving away from spring.

Thank you for the other suggestions.</comment></comment></comment></comment>


Amtrak's New High Speed Rail - <AUTHOR> https://futureofrail.amtrak.com/ <comment><USER2> Decades behind Europe and Japan, which is so sad given the United States was one of the pioneers of this industry!</comment>


Kryofluxing PC Floppies - <AUTHOR> http://www.os2museum.com/wp/__trashed/ <comment><USER2> For those who don't know (as I didn't), Kryoflux is

> a software-programmable FDC system that connects to a floppy disk drive and > a host PC over USB... reads "flux transitions" from floppy disks at a very > fine resolution... the device operates on data bits at the lowest possible > level with very precise timing resolution, it allows modern PCs to read, > decode and write floppy disks that use practically any data format or method > of copy protection to aid in digital preservation.

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

<comment><USER3> Thank you. My initial guess from the title was some sort of fun hack to increase the storage density with cryogenics.

</comment></comment><comment><USER4> Be wary of Kryoflux: [https://www.twitter.com/textfiles/status/1057997038154121216](https://www.twitter.com/textfiles/status/1057997038154121216)

<comment><USER5> That guy gets worked up about the strangest things.

</comment></comment><comment><USER6> While Kryoflux was first at dedicated hardware, it's worth noting a software solution using Amiga 1200 was used beforehand by softpres.org to low-level read floppies, and that there's open hardware alternatives to kryoflux today.

Fluxengine: [http://cowlark.com/fluxengine/](http://cowlark.com/fluxengine/)

As an aside, for Amiga floppies specifically:

USB floppy controller for Amiga disks: [https://github.com/jtsiomb/usbamigafloppy](https://github.com/jtsiomb/usbamigafloppy)

With an Arduino: [http://amiga.robsmithdev.co.uk/](http://amiga.robsmithdev.co.uk/)

</comment><comment><USER7> > _I have come across one floppy (5¼″ low density, mass duplicated, circa > 1990) where DTC reported a single track as unformatted and couldn't read any > data (there was just a bunch of zeros in the resulting image). That is, > there were no errors reported at all, DTC simply decided the track wasn't > formatted. There certainly was supposed to be data on that track._

> _Reducing the default RPM for decoding from 300 to 295 allowed DTC to decode > all tracks of the floppy without errors, including the one previously seen > as unformatted. I don't know what that's about._

That sounds like some kind of copy protection scheme.

<comment><USER8> Either that or a combination of being written at one end of the tolerance range for RPM, while being read in a drive at the other end of the tolerance range.

<comment><USER9> Many of the old 5-1/4" drives were low-fidelity copies of the original Shugart Associates drives. So speed differences and fluctuations were not uncommon.

</comment></comment></comment><comment><USER8> _Drives often have no media density detection and the density signal must be driven appropriately by the controller._

I seem to remember from when I briefly played around with this stuff, that the density select is used only for writing, to change the head current, but it's possible that the signal also alters something in the read path, e.g. the biasing/filtering for the head amplifier. Unfortunately I have been unable to find a schematic of a 3.5" drive to verify this.

Floppy drives are relatively "dumb" devices, they don't really interpret the data on the disks but just output a series of pulses corresponding to the flux transitions detected by the head. Data rate is entirely under control of the drive controller, which is what Kryoflux replaces.

</comment><comment><USER10> it sounds like he's trying to use a high density drive to image double density floppies, which isn't a great idea. far better to use the double density drive which has the correspondingly large read/write head so you get a better signal/noise ratio.

<comment><USER11> It's a common myth that you can get less noise from bigger pixels. Smaller pixels only allow you to see more of it, as you can see higher frequency noise that you wouldn't see with the bigger pixels, but the SNR shouldn't be any worse.

<comment><USER12> > It's a common myth that you can get less noise from bigger pixels.

In general yes. Though having the wrong size read head gets in the way of doing perfect subpixel alignment.

But you're missing the critical issue with "double stepping". The head is reading half the width of each track, and then _skipping all the way to the next track_. It's not making two side-by-side reads on each track and combining the data. So if there's a small magnetic issue, it can corrupt bits that would otherwise be fine.

</comment></comment></comment><comment><USER13> > Forbidden

> You don't have permission to access /wp/__trashed/ on this server.

That's not at all friendly.

Edit: Same via [https://web.archive.org/web/*/http://www.os2museum.com/wp/__...](https://web.archive.org/web/*/http://www.os2museum.com/wp/__trashed/) and Google cache link goes nowhere. I guess that they just don't want readers.

<comment><USER8> Try changing your user-agent. This site is fussy about it and I guess it could be some sort of anti-bot protection.

<comment><USER13> Just Firefox here.

And just to be clear, it's not so much that I can't read TFA. It's how rude the message is.

Edit: Nope. Midori gives me the same error. They must be blocking VPN exits.

<comment><USER14> The site was just down for several days, apparently due to high amount of comment spam so likely that's why they are now extra fussy about the what accesses it and where from.

<comment><USER15> The site has been block-happy for a long time. Every time it comes up on HN or Twitter, it's a gamble if whatever ISP I'm on at the time is in good graces right now. But I can somewhat sympathize, spam-fighting sucks if you're caught in a wave of it...</comment></comment></comment></comment></comment>


Show HN: Unpopularize – A Firefox ext that removes popular tweets from timeline - <AUTHOR> https://addons.mozilla.org/en-US/firefox/addon/unpopularize/ <comment><USER2> You can disable them in Twitter's settings without the need for an extension.</comment>


The 100% correct way to validate email addresses - <AUTHOR> https://firstname.lastname@example.com/the-100-correct-way-to-validate-email-addresses-7c4818f24643#.yd8m02vzr <comment><USER2> Sidenote: hey people writing email validators. Gmail has been around for 12 years, longer than many of you have even been working as programmers. `+` is a valid email address character! Stop blocking me from managing my email!

I'll even sweeten the deal. Let me use `+` and I promise I won't mark your junk as spam.

</comment><comment><USER3> Sidenote2: When collecting an email address, please let me know what you intend to do with it - in transparent detail.

<comment><USER4> What about proofy that proofy ([http://proofy.io/](http://proofy.io/)) I myself used for verification mails</comment></comment>


Ask HN: Was there a time when you realized you "got better" at programming? - <AUTHOR> <comment><USER2> At some point I had the realization that I had not been "stumped" by a bug in a long time. Aside from a few very exceptional circumstances, I am nearly always able to identify the cause of incorrect behavior within 15-30 minutes. When I first started programming, it was common for me to be frustrated with a bug for hours, only to discover an obvious logic or framework error the next morning.

In my experience (self taught and also CS major), the best way to get better at programming is to consistently adopt a few core habits: Read good code, read your _own_ code (I often review the day's commits before bed), and prioritize defensive programming above all else. If you do these things, you will naturally evolve into a better programmer as you gain more experience.

<comment><USER3> Could you share a few tricks with me? I'm still stumped by bugs, sometimes for days

<comment><USER2> Sure. Spend a day learning how to use a debugger, and force yourself to use it until it feels natural. In the most common cases, the bug is in code on your computer, even if it's buried deep in some dependency. Even if you're working on a distributed system, you should have a local test environment and hopefully some sort of tracing capabilities. With a properly configured debugger, you should be able to quickly find the source of most problems.

After replicating a bug, I usually follow a process that looks roughly like this. I try each step, and if it's not resolved by then, I move onto the next.

1) Examine git log to hopefully determine which commit introduced the bug, in order to narrow the search space

2) Set breakpoint when the bug becomes observable, attach debugger and identify root cause of bug.

3) Verify that any function calls to dependencies are correct according to documentation, and any conditionals are working as expected (double check logic too)

4) Try a bunch of google searches

5) Read dependency documentation more closely, and read its code on GitHub to understand how it works

6) Ask for help in an IRC channel if available

7) Re-evaluate priorities

</comment></comment></comment><comment><USER4> When I started coaching a junior guy, I've been able to see all the logic, speed and wisdom I've learnt in time and that he still needed to work on.

</comment><comment><USER5> Understanding and getting comfortable with alternative paradigms. Functional programming if you do lot of imperative programming. Imperative if you do a lot of declarative programming (eg sql) etc.

</comment><comment><USER6> Whenever I get a bug in the production system and I have all the required information in log - that time I thought I became better at programming.

</comment><comment><USER7> When I started learning lisp/Emacs/clojure I felt enlightened in a way I never did before with Java and Python

</comment><comment><USER8> Most times I look at old code i wrote!</comment>


Obama just tweeted the perfect message for Ahmed Mohamed - <AUTHOR> http://www.vox.com/2015/9/16/9338229/ahmed-mohamed-obama-tweet <comment><USER2> OBAMA INVITES YOUNG MUSLIM TERRORIST INTO THE WHITEHOUSE.

<comment><USER3> How is Ahmed a terrorist? How did you arrive at the conclusion that Ahmed is a terrorist?

<comment><USER2> HOW ELSE WOULD A KID GET INVITED TO THE WHITEHOUSE WITHOUT PULLING STRINGS?

THE TEEVEE LADY TOLD ME THAT HE AND OBAMA ARE CONSPIRING TO >KILL THE PRESIDENT<

<comment><USER3> Haha.. I like your thinking..:) Thanks for the laugh..:)</comment></comment></comment></comment>


Bringing Google Live Transcribe's Speech Engine to Everyone - <AUTHOR> https://opensource.googleblog.com/2019/08/bringing-live-transcribes-speech-engine.html <comment><USER2> Title is misleading, they're not bringing the speech engine to everyone, you still have to pay for Google cloud API requests. They're merely open sourcing the Android app that calls out to the API. See the GitHub link in the article: [https://github.com/google/live-transcribe-speech- engine/blob...](https://github.com/google/live-transcribe-speech- engine/blob/master/README.md)

<comment><USER3> That's disappointing, the one exciting feature on the Pixel 4 is its offline transcription feature. From the headline I figured that's what this was about.

<comment><AUTHOR> Google published research papers on offline recognition, the feature is shipping on Android phones (i.e. one can inspect a working device), there is an active OSS community for TensorFlow and lots of public work on speech recognition. Many building blocks are public for motivated researchers.

</comment></comment></comment><comment><USER4> I'm still waiting for meeting transcripts that understand who is speaking. I'm legitimately surprised with how far we've come with speech recognition, how this fairly common use-case is omitted.

I'm not even saying it needs to name the people in the meeting. Just understand, contextually, if it is from "person 1" or "person 2." Then as it records associate it with that name.

Maybe this can help? But Google's existing APIs might be able to do this.

<comment><USER5> Have you tried using the 'speaker diarization' feature of any of the commercial TTS APIs (from Google, Microsoft etc.)?

</comment></comment><comment><USER6> While I appreciate the audio codec discussion and bandwidth-to-accuracy tradeoffs, how much of the speech recognition could be done on-device rather than shipping it off to the cloud? It's my understanding that it's a matter of installing pattern files for analyzing the audio without needing to fail over to the cloud; how many GB are we talking to be able to cover normal daily speech, assuming a minimum of jargon? For the hearing impaired, not having to hit the cloud at all seems like the best option (and you don't need to compress the audio at all or worry about cloud-trip bandwidth).

<comment><AUTHOR> Google published research [1][2] on offline recognition and it was rolled out earlier in 2019. Model size for English is claimed to be under 100MB, [https://techcrunch.com/2019/03/12/googles-new-voice- recognit...](https://techcrunch.com/2019/03/12/googles-new-voice-recognition- system-works-instantly-and-offline-if-you-have-a-pixel/)

[1] [https://arxiv.org/pdf/1603.03185.pdf](https://arxiv.org/pdf/1603.03185.pdf) (2016)

[2] [https://arxiv.org/pdf/1811.06621.pdf](https://arxiv.org/pdf/1811.06621.pdf) (2018)

</comment></comment><comment><USER7> Can anyone attest to how accurate this transcription is for technical subjects? I've attempted to integrate transcription into my work life (pharma), but correcting errors related to tech jargon or acronyms/abbreviations always outweighed any benefit.

<comment><USER8> I can't speak to Google's, but Dragon Professional supports legal and medical jargon out of the box. Pricey, but for powerful offline speech recognition, that's understandable.

<comment><USER9> Dragon legal's primary advantage is that it handles citation formatting. I don't think I've ever come across a legal term it didn't know (maybe dépeçage).

</comment></comment></comment><comment><USER10> This still requires an API key; it isn't local.

So I decided it would be a good idea to open an issue in the linked repo, to find out what the costs would look like.

Turns out someone else already did that! [https://github.com/google/live- transcribe-speech-engine/issu...](https://github.com/google/live-transcribe- speech-engine/issues/14)

</comment><comment><USER11> This is cool but a bit worrisome...remember the days when it was too expensive to log all audio transmissions on any platform/communication device, so you thought you had some level of privacy? Projects like prism might be able to do more than simply log metadata.

</comment><comment><USER12> I've been looking for some way to transcribe my own talks---sometimes I find a turn of phrase or example during the talk that strikes me as useful while I'm giving it, but then forget it. Perhaps this can be coaxed into providing this service for me.

<comment><USER13> The ML transcription services work for giving you the gist of what's been said if the recording is of decent quality. I should probably consider doing the same thing. If it's a recording that I want to be "perfect" (e.g. a posted podcast transcription), I still use human transcription; cleaning up the machine transcription isn't worth my time. But if the transcription is mostly to jog your own memory it's probably fine and much cheaper.

</comment></comment><comment><USER14> Presumably this requires a cloud API key of some kind? Google's speech recognition API isn't free.

<comment><USER15> I'm not sure about pricing, but if it's like Azure's it's free up until a certain amount of requests.

</comment></comment><comment><USER16> Is this used on YouTube?</comment>


Ask HN: What sources of tech product reviews do you trust? - <AUTHOR> I'm in the market for a new widescreen monitor, but find myself distrustful of anything I come across organically.
Between rampant review gaming and sponsored content, Amazon doesn't feel like a viable place to discover quality products anymore. A Google search for "best widescreen monitor", amid similarly problematic ads, returns listings from niche websites like "TrustedMonitorSales.com" that are clearly just paid articles and SEO-optimized listings of referral links. I trust news sources that I respect (eg Ars Technica) to deliver unbiased reviews, but they don't review all tech products I'd be looking to buy.
So when searching for new technology, what methodologies do you guys follow / what review sites do you trust to give you honest, informed reviews of products? Are there any review websites that you still consider trustworthy in the face of unrelenting and creative pressure from advertisers?
PS: I also trust the HN community to give honest reviews on this (mostly because it'd be inefficient for a monitor company to peruse HN for questions asking about monitor purchases) so if anyone has a widescreen monitor they love for coding/gaming, let me know. <comment><USER2> The Wirecutter ([https://thewirecutter.com/](https://thewirecutter.com/)) is often my go to when researching a home or home office product.

Consumer Reports ([https://www.consumerreports.org/](https://www.consumerreports.org/)) has a large catalog of product reviews which are especially helpful for people with larger and considered purchases (cars, large home appliances, etc).

Outdoor Gear Lab ([https://www.outdoorgearlab.com/](https://www.outdoorgearlab.com/)) is a great place to go for reviews of outdoor gear.

Edit: And regarding monitors, a thread I saved from a while back with various recommendations: [https://news.ycombinator.com/item?id=13155095](https://news.ycombinator.com/item?id=13155095)

</comment><comment><USER3> I end up using fakespot.com to analyze Amazon reviews. I have had good luck so far.

As for non-amazon products, I will usually ask a friend or co-worker.

</comment><comment><USER4> _PS: I also trust the HN community to give honest reviews on this (mostly because it 'd be inefficient for a monitor company to peruse HN for questions asking about monitor purchases) so if anyone has a widescreen monitor they love for coding/gaming, let me know._

Given how common paid reviews are where the person writing the review says nice things because they are paid to, let me suggest you just do a new _Ask HN_ asking specifically what monitors people like.

</comment><comment><USER5> Initial research is on Toms Hardware.

Then I read the negative comments on Amazon or Egghead. The 1s and 2s will tell you if there is a problem. Look for consistency and logically accurate. Throw out the 'Amazon never delivered it', or my favorite was an advanced level book (title included the word advanced), and person complained it was not good for a beginner.

</comment><comment><USER6> MKBHD and Dave Lee have good channels on YouTube.

</comment><comment><USER7> I always look at G2crowd</comment>


Get Shit Done with Finish Up Weekend - <AUTHOR> http://ontechies.com/2013/02/06/get-shit-done-with-finish-up-weekend/

<comment><USER2> When I first read the abbreviation, I thought it'd mean "F __* you, weekend! Let's work instead." :-)

<comment><USER3> Yes, the name is a little confusing, but a good idea nevetheless.

</comment></comment><comment><USER4> It's a little unclear on the site if this is just for Austin folks?

<comment><AUTHOR> I think they are looking to expand onto other cities "This is the "beta" event and if it goes over as well as they're anticipating, the first "official" event will be in May and then Montreal in July."</comment></comment>


Spain and Hungary tumble in TI's annual corruption report - <AUTHOR> http://www.euractiv.com/sections/justice-home-affairs/spain-and-hungary-tumble-tis-annual-corruption-report-321334 <comment><AUTHOR> "Spain is plagued by an almost endless number of corruption scandals" Unfortunately true.</comment>