Adobe ceases development on mobile browser Flash, refocuses efforts on HTML5 - <AUTHOR> http://www.zdnet.com/blog/perlow/exclusive-adobe-ceases-development-on-mobile-browser-flash-refocuses-efforts-on-html5/19226 <comment><USER2> This makes me a little sad. For all that people complain about Flash, and any problems the Flash Player runtime has, it's really a fun environment to code for. I like AS3, I like the Flash API, and I greatly enjoyed writing Flex back when that was most of my job.

I don't have nearly as much fun writing HTML/JS as I did writing AS3. I liked the (optional) strict typing. I liked writing for a single target and knowing it would just work. I liked having the power to say, "Render this thing in just this spot," and having it do what I wanted rather than spending hours fiddling CSS.

So as much as the decline of Flash is generally heralded as a good thing (and I agree that Adobe really never managed to fulfill their promises/goals with Flash on mobile devices), I'm still going to miss it when it's gone.

Edit: Just want to note that I'm speaking from the perspective of writing large, complex webapps in AS3/Flex, not just websites. Use the right tool for the job, etc etc.

<comment><USER3> You're complaining about the development environment, which is considered to be better than JS/HTML5 by many people.

However, the Flash runtime is the reason people complain about Flash. It is slow, it leaks memory, it crashes like crazy and has been a second-class citizen on every platform other than Windows since forever.

JS/HTML5 on the other hand is a mess in terms of development tools. But it is getting more and more reliable. And it's a real standard with multiple implementations that are extremely competitive. Apple was right for excluding Flash from their mobile browser, as for mobile phones HTML5 is currently much better, even though the technology powering it is newer than Flash.

Adobe's current plans are to build development tools for HTML5/JS too. They are even pushing for improvements in the standard, like CSS3 Regions.

<comment><USER4> Sadly, the development environment matters quite a bit.

\- I will miss being able to declare classes using a sane syntax (Coffeescript helps in this regard)

\- I will miss the optional type annotations, which caught many a bug for me (you can use JSDoc annotations + closure compiler, but only if you like placing a verbose comment in front of _every single variable declaration_ )

\- I will miss having an IDE that can actually do code completion (this not possible without type annotations, so it's not coming to Javascript any time soon)

\- I will miss interfaces

\- I will miss namespaces (there are various ways to hack namespaces into Javascript. They are all letdowns.)

\- I will miss color transform filters, drop shadow filters, and blur filters (might become part of CSS if Adobe's proposal gets approval)

\- I will miss the (mostly excellent) API documentation (MDN tries its best, but is not even close)

\- I will miss masks (of any arbitrary shape)

\- I will miss being able to create and dispatch my own events without having to use someone else's event framework

\- I will miss having all my resources compiled into one blob and loaded together, rather than having to worry about preloading all of my UI images

\- But most of all, I will miss _performance_. Yeah, Flash is buggy/slow/memory hog blahblahblahblah. But have you tried doing anything graphically complex in HTML5? Holy shit, your processor will scream. Things that Flash used to laugh at will bring Chrome to its knees. Don't get me started with IE.

So no, Flash is not great. It has a ton of warts. But HTML5 is not ready. Not even close. So we're going to have to spend the next ~2-3 years in techno limbo while it catches up. And that makes me sad.

HTML5 is particularly not ready on mobile. For example...don't use gradients, since they kill performance. Oh, and don't use opacity either, since that also kills performance. Seriously? I need to build a UI that doesn't use opacity animations? FFFfffuuuu--

Apologies for sounding like a grumpy old man, but promises of "someone will come and fix it with a standard...at some point" don't really get me excited. I worry that in vilifying all the things that Flash did _wrong_ , the web world is going to ignore all the things it did _right_ , and refuse to integrate those things into HTML.

<comment><USER5> > But have you tried doing anything graphically complex in HTML5? ... Things > that Flash used to laugh at will bring Chrome to its knees.

Agree. An example is graph visualization. Fire up your CPU monitor and go to <http://arborjs.org/atlas/> and view this very cool physics-driven mesh visualization written in Javascript. You'll see the needle jump to 95% or more. On my relatively modern laptop, if I run this for more than a few minutes, it shuts off due to overheating. Also, this app does not work on IE.

By contrast, I can run an similar Flash-based visualization and CPU usage ratchets up to 60 or 70% but not more, and it works on IE.

<comment><USER6> about 30% CPU utilization on my 2011 macbook air (core i5 1.7Ghz) with chrome 16beta. not bad. is this same page written in flash somewhere?

</comment></comment></comment></comment></comment><comment><USER7> Did Adobe ever put a serious effort into mobile Flash development? It seems they were more interested in blaming Apple for the lack of mobile Flash than actually doing the work required to make Flash a remotely viable option for mobile devices.

I wonder, what was the catalyst that caused Adobe to admit what everyone else already knew? Perhaps they saw the 5 year anniversary of the iPhone on horizon and figured enough BS is enough.

<comment><USER8> They probably gave it a good shot, but couldn't get it anywhere near lean enough. Flash turns _laptops_ into battery-powered space heaters; on a mobile device it's just a non-starter.

Flash is just a dying tech. Were someone to seamlessly roll its functionality into an easy to use package, I'm sure you'd see it die out for games as well, which is the only remaining use-case there isn't a ready replacement for.

<comment><USER9> > _They probably gave it a good shot, but couldn't get it anywhere near lean > enough. Flash turns laptops into battery-powered space heaters; on a mobile > device it's just a non-starter._

I gotta call BS on that. I've personally played hundreds if not _thousands_ of flash games on an under-powered $500 laptop purchased in 2009. The article itself mentioned the success of flash on Blackberry devices, due largely to the fact that they cooperated with Adobe's engineers instead of freezing them out.

<comment><USER10> More like "Flash turns Apple laptops into battery-powered space heaters". The OS X player is so cruddy that simple ads will cause my MBP to spin up the fans.

</comment></comment></comment></comment><comment><USER11> One of the nicer things about Flash is that it's easy to block en masse, which cuts out on so many visually distracting animated things.

One of my worries with HTML5 is that we won't have a good heuristic for preventing animation and video.

As it is, YouTube occasionally serves me up their HTML5 video player, and it's a significantly worse experience than the Flash one, for the simple reason that it autoplays, whereas FlashBlock will stop Flash autoplay. I can't tell you how many times I've been listening to a video, wondering why it sounds so awful, and then figuring out there's another video autoplaying in a background tab.

So we (or at least I) will need some way of killing / freezing HTML5 canvas, video etc. elements until the user assents to their animation.

<comment><USER12> _for the simple reason that it autoplays, whereas FlashBlock will stop Flash autoplay. I can't tell you how many times I've been listening to a video, wondering why it sounds so awful, and then figuring out there's another video autoplaying in a background tab._

The default behavior in Safari is not to play any content until the tab it's in has been focused - that goes for HTML5 video, Flash, QT, or what have you. Constant spot of annoyance for me anytime I'm forced into a different browser.

<comment><USER13> Chrome and FireFox have FlashBlock extensions and Chrome has a "Click to play" option in about:flags (but unlike Safari it is turned off by default.)

These features should behave similarly except it sounds like in Safari players are enabled by default when you visit a page but for these other browsers you will have to manually click on things to start them playing.

<comment><USER12> Safari has a similar plugin called ClickToFlash, but no Chrome-like option as far as I know.

</comment></comment></comment></comment><comment><USER14> Flash has been dead tech walking on mobile ever since Apple passed on it after years of vapourware promises and getting nowhere fast with performance issues -- ones that still persist today on the devices that actually have a Flash player.

Jobs especially was roundly criticized for his public stance on this, but in the end, he was proved right: Adobe never could get Flash working properly on a low-powered device.

<comment><USER15> For sure the fact that Apple/Steve passed (violently so) on Flash made it mobile DOA, but is it possible the actual frame/second rendering on Flash 10.1 was actually better-performing than HTML5? These tests are from 2010 but suggest so.. <http://www.youtube.com/watch?v=DUWo19BcC7s> (April) and <http://www.youtube.com/watch?v=sFFax1oYyBE> (September).

Not so sure Steve was proved right so much as it was self-fulfilling prophecy (from the mobile deity himself)?

<comment><USER16> Flash definitely outperforms HTML5 on mobile and desktop: <http://www.craftymind.com/guimark3/>

<comment><USER17> But which eats more battery?

<comment><USER18> The slower one, as the CPU must stay on longer. Not a good argument, hence.

</comment></comment></comment></comment></comment><comment><USER19> If true, I believe it would be healthy for the mobile web.

There are still developers out there who believe that Adobe will come up with a decent mobile Flash experience, even though it has failed to deliver on those promises for the better part of a decade. If Adobe just comes out says "Not gonna happen", we can all move on and invest our time and energy in technologies that actually have a future.

<comment><USER18> Unfortunately, users are still going to be demanding for a while that their online flash games work.

<comment><USER19> According to the article, Adobe isn't giving up on Flash altogether. They're simply admitting that Flash does not and will not work on mobile devices.

The people who currently play Flash games on the desktop will continue to be able to do so. However, if a game developer wants to offer a good mobile experience, they'll have to make it using web standards. And if they're going to do that, why build it again in Flash for the desktop?

<comment><USER18> That's the sane reaction people like you and me might have, but it does, quite unfortunately, not match reality at all.

Google is heavily advertising Android over iDevices as having Flash support. Users know this and expect Flash to work. It works, sortof, on the default browser. It didn't work for the longest time on Opera and Firefox Mobile. Opera now supports it somewhat reasonably (presumable due to a truly herculean effort of their developers to figure out the real API without any meaningful Adobe support), and Firefox Mobile barely in some of the latest Nightlies. Especially due the latter adding support (for a non-open standard!), I think it's a clear illustration that the feature is considered a must have if you want to have significant user penetration on Android.

Consider also how much effort Google is putting into helping Adobe make Flash more secure. Think about why they bother.

The problem is that Flash websites are out there. The investment has been thrown into the black hole. People who payed for these sites are going to sit on them for a while. And there's quite some sites that _only_ work on Flash.

It only takes one of those that you want to visit, such as a restaurant or whatever, without non-Flash fallback, to see how annoying it is not to have Flash. You can't visit the site, period.

So you must support it until all those sites are rooted out. And Adobe now even officially doesn't give a shit.

<comment><USER20> Google heavily advertises flash support because it's a point of difference.

And while it's true that there are flash-only websites out there, most of them are barely or completely unusable on mobile -- because they require a hovering-and-clicking input device or enough processing power to saturate a desktop CPU or is laid out to suit a large display.

The number of websites that require flash AND would work fine on a phone is vanishingly small.

<comment><USER18> I believe your claim is completely and utterly wrong, but I don't think there's a point in discussing much without hard data. As I pointed out above, the 3 browser players on Android seem to think Flash support is quite important. Surprising if it is something nobody wants.

Laid out to suit a large display? Jeez, an Android phone in portrait has as much vertical resolution, or more, as a cheap laptop. Even in landscape its not a 2:1 resolution advantage, and the phone can still scale the content, too.

<comment><USER19> _"the 3 browser players on Android seem to think Flash support is quite important. Surprising if it is something nobody wants."_

I'm sure there are folks who want it. It just doesn't work. And Adobe has acknowledged that by axing the project, after promising to get it right for 6 years straight.

Let's disregard that mobile Flash is limited, buggy, CPU intensive, and battery draining. Most Flash content just doesn't work on small screens that are meant to be manipulated with fingers. The 'hover' action alone is causing web standards programmers head aches -- preparing Flash interfaces for mobile requires > ten times as much work, which the vast majority of Flash creators will never do.

</comment></comment></comment></comment></comment></comment></comment><comment><USER21> Given how bad Flash is on Linux and OS X, it was no real surprise that they couldn't get it right on mobile. The two platforms on the desktop that they put few resources into became the basis for the biggest mobile marketshare.

Adobe spent so much effort on punditry on their blogs about how everyone else was wrong and reviewers and Apple were so unfair. This is going to be a bigger PR problem then it should of been.

</comment><comment><USER22> I never thought I'd say this, but thanks, Apple.

</comment><comment><USER23> This is the end of flash. Mobile is the future of computing and if Adobe is giving up on flash for the mobile web, then they're giving up on flash for the entire web. The statement that they're shifting focus to air apps is to save face. The only reason people want to build AIR apps is because they already know flash from working with it on the web.

And you know what? That's awesome. What the interactive web needs, flash, canvas or HTML5, is creative tools that people like adobe used to be really good at producing.

<comment><USER24> I think you're talking about 2 different things when you say "the end of flash".

If you mean the end of the flash runtime for mobile browsers, then that's accurate.

If you mean the end of flash as a dev platform (that is as3, flex, etc.), I didn't get that at all from the article. As it stands, I can write one app that will work on any desktop browser as well as across a growing range of mobile devices, including iOS. The performance really seems to be near native on iOS (for an example, see Defenders HD--I have no relation whatsoever with the devs but I do know it was done in flex).

Speaking for myself, I really like as3 and flex for certain tasks and hope Adobe doesn't abandon it as a dev platform.

<comment><USER23> True, I'm talking about two different things. Three, really: mobile flash, desktop browser flash, and the app-packaged flash solutions like AIR.

I don't think we can really split mobile web flash from desktop web flash, so I think that Adobe is fully aware that browser flash is dead, and I can't see them putting any real resources into the desktop version.

Browser flash has, since it was omitted from iOS, limped along under the promise that it was coming to mobile devices "any day now". And every crappy implementation was met with "well you should see it on the next version of [android os|android phone|blackberry]".

But that promise is gone, and browser flash is now a dead product with a rapidly shortening shelf life.

The reason I think the death of browser flash is also going to kill AIR (Packaged Flash), is because it eliminates the easy entry point that the AIR platforms had. AIR was barely successful only because it took advantage of a huge, huge ecosystem of people writing browser flash.

But that ecosystem has hit it's high water mark and is now officially receding: New developers aren't going to go out of their way to learn browser flash, and people aren't going to pick packaged flash over other tools if they don't already have a vested interest in the language and the runtime.

It's ok, but it's just not that great, and at the end of the day true "write once, run anywhere" isn't that important (and it's a bit of a myth), and if it is for you, then write a web app.

</comment></comment></comment><comment><USER25> I seriously wonder what this means for Flash on the desktop.

The responsive design movement keeps throwing these Morgan Stanley and other reports out there that predict that by 2015, people will be using mobile devices more than desktop devices. What incentive does Adobe have to continue develppig Flash for the browser?

Their statement eludes to nearly ubiquitous support for HTML5 on mobile devices. When IE10 comes out, will that level out the desktop market?

I always hear Flash developers saying that Flash does so many things better than HTML5. But if nobody's able to view the content because nobody wants to develop a Flash player for the target platforms, what does it matter?

I'm not saying I think Flash on the desktop is dead, but I could certainly see Adobe moving that direction. They're turning Flash into a platform like Titanium or PhoneGap, where it generates mobile apps, mobile web apps, or desktop apps. They're already doing that now. If that works, and I suspect it will work quite nicely, then I'd see even less incentive for them to support building "applets".

</comment><comment><USER26> This is going to do a lot of harm to Flash on the web. Now we know for sure that any Flash web pages will never work on mobile devices. Mobile apps are great but I still think the majority of people will use their devices as web browsing devices.

Finally, it really destroys your trust in Adobe. Will they discontinue their mobile AIR tools if they have a few more bad quarters?

<comment><USER27> > Finally, it really destroys your trust in Adobe. Will they discontinue their > mobile AIR tools if they have a few more bad quarters?

That's an interesting and relevant question, but it also nicely shows why the whole idea of requiring proprietary plugins to view web content was a bad idea (tm) in the first place.

Hate to say it, but Jobs was right about two things when he defended the lack of Flash support on iOS: it performed like crap, and it was a liability since you'd had to rely on Adobe to support it.

<comment><USER16> It performs better than HTML5 on mobile.

</comment></comment></comment><comment><USER28> Flash in some ways delivered what Java promised to. Truly one code base on multiple devices. Supporting many devices and OS' is what Flash conquered. I kind of chuckled at the iOS statements about Flash, but it seems to run OK on every mobile device I ever got to try it on.

Potato, Potatoe.

If browsers are the new Universal Interface to conquer and standardize, there's a new problem. We now have variety in implementation of standards, making those standards tough to use.

Where Flash was when it was 2-3 years old isn't much different than where HTML5 is for those of us who have been around long enough... except there's a lot more browsers out there than there were Operating systems.

Flash could control how efficient it was, or wasn't.. but who will make sure all the browsers process HTML5 efficiently?

Are we really aware of how much we're going to get ahead, and how soon?

How much time will I spend recreating what Flash, or something else could do for me already today, so I'm not just trading some great HTML5 features for spending my time coding stuff Flash has?

I don't use a ton of Flash or HTML5 right now and don't foresee it. When it's the best tool, I use it. Where it's not a complete tool, I'll think twice.

This is one area though, where Adobe's expertise might be second to none -- making it work identically everywhere as best as possible with gracefully degrading libraries.

I hope their recent acquisitions serve as fuel for solving a problem really needing solving.. by them or someone.

Should be interesting to see what happens when we get what we wished for, the devil we don't know vs the devil we kind of did.. :)

</comment><comment><USER29> The idea of Adobe focusing on using Flash to create native apps is a great idea -- and I'll think they'll do well with it. There's an army of folks who know ActionScript who don't want to learn Objective-C, and there are tons of apps which are created for ad agnecies where development speed matters.

<comment><USER30> _There's an army of folks who know ActionScript who don't want to learn Objective-C, and there are tons of apps which are created for ad agnecies where development speed matters._

Those apps tend to overlap with the tons of apps that nobody wants.

<comment><USER29> Well sadly you don't know if an app is wanted until after you ship it! And while you;re correct that there are many second rate apps, there are also many novelty apps that a niche audience (and it doesn't have to big group of people) craves. For example only a small audience may crave a "Red Bean Ice Cream Finder" but if it's you're favorite flavor you gotta have it...

</comment></comment></comment><comment><USER31> I really hope Adobe can make the transition to a standards-based world fast enough for them to remain a significant player. It is so hard for a mega- company to wean itself from the fat margins of a proprietary world they created.

<comment><USER32> They've already been making this transition for at least a year and probably planning it for even longer than that -- look at Muse, look at Edge.

Adobe doesn't give a crap about the Flash Player for its own sake, it was just a loss leader for their tools business, which anyone who has been paying attention would have noticed started leaning towards html and away from Flash a while ago now.

<comment><USER33> Not to mention Phonegap, which is now an Adobe product thanks to their recent acquisition of Nitobi.

</comment></comment></comment><comment><USER34> Disappointing as it may be, it's realistic. I could never see mobile devices being capable of loading and running flash based games or web environments consistently or seamlessly. It just requires too much power the device doesn't have. Even the iPhone 4S and iPad 2 dual core technology aren't up to the task, and I believe that's the closest mobile ever came to supporting flash.

But even mini laptops can just barely handle flash websites with glitzy introductions and interface. A phone can't handle that, it's outdated and inefficient for smaller modules of power.

<comment><USER35> I run flash in a decent way in my Nexus S. It is not the best experience in the world (as usual when dealing with Flash) but it works.

<comment><USER34> Hm...just curious, can it handle a flash game?

</comment></comment></comment><comment><USER36> As a game producer, my understanding and limited experience is that HTML5 for games isn't robust enough to handle Flash-like gaming. In particular I'm thinking of sound issues.

Am I correct?

<comment><USER37> Basically, yes.

Someone will probably come along and hem and haw about the various competing sound APIs that everyone is working on right now. Then someone will say that Flash can do crazy 3D games, but Canvas/JS can't. Then someone will say that WebGL is coming along nicely. But not on every browser, and not with any consistency. And so on and so forth.

Switching to the Canvas/JS stack from AS3 and the latest Flash Player APIs is honestly like stepping into a timewarp to the year 2000 when Actionscript 1 was just coming into its own.

</comment></comment><comment><USER38> Flash in mobile web browsers always felt awkward and sluggish to me. I'm glad that they'll be focusing their mobile efforts towards polishing AIR

<comment><USER39> But isn't AIR just flash? I am somewhat confused.

<comment><USER40> AIR is a deployment platform for both WebKit and Flash, and as of AIR3 the support for HTML5 has improved quite a bit:

[http://www.adobe.com/devnet/air/ajax/articles/air_and_webkit...](http://www.adobe.com/devnet/air/ajax/articles/air_and_webkit.html)

</comment></comment></comment><comment><USER41> I guess next step towards HTML5 is moving off from mobile native development(iOS, Android, Windows Phone).

<comment><USER42> I don't think we should move off completely. It's best to have some redundancy in technology.

</comment></comment><comment><USER43> Good riddance!

</comment><comment><USER44> Finally they came to their senses. They had good authoring tools but not-so- great flash runtime. Retain the former but use highly competitive HTML5 browsers as a standards based runtime instead.

</comment><comment><USER45> Also, 750 jobs lost. Isnt that a lot? That is sadder than the loss of a plug- in. Adobe seem to lay people off quite frequently, or is it my selective recall?

</comment><comment><USER46> Flash was how it was, but it was quite one -- HTML has never managed to be consistent and predictable technology, and I doubt HTML5 could change anything...

</comment><comment><USER47> The problem is, right now it is easy to circumvent a lot of annoying ads by blocking Flash. If everything goes JavaScript, not so easy.

</comment><comment><USER48> Maybe devs will start to realize it is less/not about them and all about their target audience/user

</comment><comment><USER49> I think it is not because the Flash runtime lost, but because WebKit has achieved ubiquity. Think about it, the reason we needed these runtimes in the first place is because web browsers have their own quirks.

However, with WP7 languishing with less than 2 digit market share, what's left in the smartphone markets are essentially webkit-based browsers on Safari and Android.

</comment><comment><USER50> What does that mean for RIM and the PlayBook?

<comment><USER51> They're not killing AIR for mobile (though I can't see it getting much attention in the future), but the PlayBook is essentially a dead platform walking anyway.

</comment></comment><comment><USER52> Some loved it, some hated it. Others didn't play with it :)

</comment><comment><USER53> I had honestly forgotten about Flash.

</comment><comment><USER54> It's very nice to see Adobe embracing open standards. I look forward to the day when I can completely give up Flash (for Hulu) and Silverlight (for Netflix) completely.[1] They are the source of almost all the issues and browser crashes I've experienced.

I never would have guessed it in the 1990s, but in this day and age, native applications and open web standards are the way to go. Java held such promise for time, as did flash, etc.

I wonder if their declines are due to their essentially proprietary nature, or due to poor technical choices made by their stewards. (though the latter could be called an example of the former.)

[1] In fact, since Hulu is doing so much better than netflix these days I think we'll be giving up netflix completely before too long. I would have thought the ads would be an issue, but Hulu has streaming down solid, and Netflix for whatever reason is more flakey.

<comment><USER55> I don't think for a second that Adobe's decision was motivated by the open nature of HTML5 itself. If anything being open is a downside for Adobe in their current market position.

I don't think the "poor technical choices" of their product are explained by its proprietary nature (MP3, H264 are example of the contrary) but they are for sure the reason they're moving away from it.

</comment></comment><comment><USER56> The hardware just wasn't there to do software rendering and won't be yet for a couple to few years on mobile, by then it may be too late. Hardware acceleration is needed on devices.

</comment><comment><USER57> My colleague will be meeting one of Adobe Senior VP's in a few weeks. For sure I'll send him a few questions to ask. A lot about HTML5.

</comment><comment><USER58> It sure is a shame that they never did this before Steve died.

Would have been a nice going away present.

:(

</comment><comment><USER59> Why does an entry titled "Adobe ceases development on mobile browser Flash" link to an article that starts "Our future work with Flash on mobile..."?

<comment><USER60> Because you didn't read the rest of the sentence?

"...devices will be focused on enabling Flash developers to package native apps with Adobe AIR for all the major app stores."

<comment><USER59> The title says focusing on HTML5, the article says focusing on native apps with AIR.

"ceasing development" and shifting focus are not the same thing.

</comment></comment></comment><comment><USER61> Apple wins! Jobs always wanted developers in a "exclusivity" arrangement. Adobe busted out and supported Windows as Apple floundered. Jobs always wanted to set an example to those who leave the village. Looks like Apple's refusal to allow flash on mobile will teach all the villagers a lesson. Who is number one? Apple is!</comment>


Show HN: an app I built to help you find great beer - <AUTHOR> http://beerque.st/

<comment><USER2> As a dedicated untappd user (500 unique beers, way more checkins), what does beerquest offer over untappd? It looks beautiful; clearly a very well put together app, but is there a compelling reason to switch? Either way, great work!

<comment><AUTHOR> The biggest difference between the two apps is that BeerQuest is just as much about the place as it is about the beer. We don't rely on third party places data like Untappd does (Foursquare). Checkins are about checking into a place and not a beer. If you're at a place and are drinking a beer, you 'drink' a beer. We also think the journal and maps aspect of the app turned out really well. Quickly map out all of the great places near you and everywhere you been.

From a technical perspective, BeerQuest was built using Objective C instead of HTML5, so it feels like a true native app because it is.

<comment><USER3> Untappd has been native for quite awhile.

<http://blog.untappd.com/post/10844733770/weve-gone-native>

<comment><AUTHOR> It's not native in the strict sense. They ported over their web app using PhoneGap: <http://phonegap.com/app/untappd/>

Untappd uses webviews to serve up local HTML/CSS/JS. To me, that's not native.

<comment><USER4> They stopped doing that. It's fully native now.

<comment><AUTHOR> I don't think so. The showcase on PhoneGap was posted in July 2012. Additionally, it's easy to tell that the app isn't utilizing the Cocoa Touch UI framework. Look at how the views bounce, how the buttons "feel". Those are dead PhoneGap giveaways.

</comment></comment></comment></comment></comment></comment><comment><USER5> It looks like there is quite a bit of data already for Austin users (which makes sense for SXSW), but I just tried this in San Francisco and it looks pretty empty.

Is there an existing data set out there for beer? I know there are a TON of beer review sites, but I'm guessing none have an API or a way to integrate.

If you want this to take off I'd suggest trying to get a few early power users in San Francisco, Portland, and Seattle to light a fire in the Pacific Northwest as this is definitely micro-brew country.

<comment><USER5> I can already think of a few great uses for this. A few weeks ago I had a friend come into town for San Francisco Beer Week and ALL he cared about was finding which bars carried Pliny the Younger (it's won "Best beer in the world" at least once). There was no easy way to do this.

<comment><USER6> Even if you know where Pliny the Younger is being served, there's still no easy way to do this. They release a limited amount and it usually sells out in the first hour or so. If you go to the Russian River brewery it's a 5 hour+ wait. Crazy stuff.

</comment></comment></comment><comment><USER7> I did a similar App for restaurants in another country, however, I did an Android and iOS version and found that much more people are using my Android app. The conversion rate seems to be better on Android as well.

So, I'd love to see this App on the Google Play store since I am a huge fan of great beer and the bars where to find them.

<comment><AUTHOR> Great feedback regarding the conversion rate. We actually went down the road of building both an iOS and an Android version out of the gate but found that the Android platform seemed fragmented. With hundreds of different devices all running everything from 2.x to 4.x, it seemed too complicated initially to do it right.

</comment></comment><comment><USER8> Non-app related question, is there a stock service that will slice together and create the animated screen transitions you have? I am about to put together a site for an iOS app and I'm guessing that this is common enough that I can spend a little money and save a lot of time. (any link related to buying designs/layouts welcome too)

</comment><comment><USER9> Looks great (and I live in Austin, so recognizing some of the places was cool!) but I only have an Android phone. Would love to know if you make a version for it.

Is the data for this app user-submitted, or do you pull from somewhere?

<comment><AUTHOR> Currently, all of the data comes from the users.

</comment></comment><comment><USER10> Is there an IMDB of beers for apps like this to use? And wine for that matter?

</comment><comment><USER11> I've been using <http://beermenus.com> for years to find awesome beers near me. They've got both web and mobile versions, which is nice.

</comment><comment><USER12> Checkout <http://www.drinkowl.com/> if you haven't already.

</comment><comment><USER13> I love this idea and it is exactly the kind of thing I want here in London.

Except I run and Android phone :(

<comment><USER14> Untappd is lovely on Android, sounds like it's some way ahead of this app. I use it in New Zealand and it works great. Nothing else mentioned in this thread is close.</comment></comment>


USB Type-C cables tested and reviewed by the Google Pixel team - <AUTHOR> http://www.amazon.com/gp/pdp/profile/A25GROL6KJV3QG/ <comment><AUTHOR> Original post about the review process: [https://plus.google.com/+BensonLeung/posts/LH4PPgVrKVN](https://plus.google.com/+BensonLeung/posts/LH4PPgVrKVN)</comment>


Significance Labs: Hack on Real Social Problems - <AUTHOR> http://significancelabs.org/hackers/ <comment><USER2> This is really noble and I'm glad people are doing it. However, from what I know of the "lets solve real problems on the streets" world -- you need to spend more time on the streets than in a lab trying to come up with abstract technological solutions.

Heres likely why:

You don't understand the problem

You don't empathize with the problem

You don't understand potential users from a radically different class or culture

You assume solution toolsets that users don't have access to, aren't familiar with or just are unrealistic

Sometimes I wish this money would go to funding engineers to join EXISTING organizations that have identified or are on their way to solving real problems, but simply aren't 'cool' enough to warrant google.org money.

<comment><AUTHOR> Hey! I'm one of the Cofounders of Significance Labs, and I completely agree with you.

Our fundamental premise is that we don't understand the problems. That's why we are focusing on providing our fellows and hackers with extensive immersion into the very communities we are trying to help, as well as organizing as many focus groups and user feedback testing sessions as we can so that we know that what we are building not only helps, but that it's something people will use. It's going to be a challenge, that's for sure, but if it works, I think that this could be a very powerful agent for change.

<comment><USER2> I'm curious why Brooklyn? Its a tough place for most of us to move to even for a short time.

Lets take a personal example: For the last 4 years my brother has worked on reducing recidivism rates in LA's skid row and has created a program which has gotten it to near zero in a small sample sets -- while I work in Silicon Valley trying to make computers reduce unstructured knowledge into products to sell as ads.

Most days I think I'd rather be him, and he rather be me -- but we can't find ways to merge technology and street-problems in a meaningful manner with the restrictions we have in life (his family, my student loans etc).

I say all this to illustrate -- to get to solving problems on the streets, we may need to solve a problem with even getting the right people together. The right people are often working because they need the money and real do-gooders are often trapped in a poverty cycle that ends up draining their contributions to the community.

Essentially good work feels unsustainable to the average educated producer like ourselves -- and we give up. How do you think you can help?

<comment><AUTHOR> Well, Brooklyn for two reasons: it's where we are, and where our foundation is. It's also a place where there is a high density of low income communities. Let me try to put this into perspective: 615 thousand people live in public housing in NYC. The population of San Francisco is 825 thousand.

As for the questions about the life restrictions, that's part of this program: these are going to be funded projects, and then at the end of the program, we're going to hopefully be handing them off to foundations, organizations, governmental organizations, or possibly even VCs for further support. Ideally, all of the products that come out of the labs will have a life of their own long after the summer is over and we're going to do everything in our power to ensure it. We want to figure out a process to bootstrap social enterprises from the ground up, and part of that is making it economically feasible for excellent people to take the jump.

All that said, we are totally open to remote Hackers In Residence. Our primary goal is building products that help. Our fellows are either in NYC or relocating, but for our engineering teams, remote work is fine.

<comment><USER3> The fellowship, and Hackers program looks promising. However, it appears to leave out a position for the OP's brother. As he mentioned there are many people with deep insight into a problem, but lack the technical resources to execute their solution.

</comment></comment></comment></comment></comment><comment><USER4> >Could wearable technology that counts words heard (a key indicator of cognitive development) be used to improve quality of early childhood education?

we like to believe that for any problem there possible an app to solve it. How about an app which would make government to not reduce SNAP benefits - one of the most important tools for cognitive development of a lot of low-income children. Counting words heard by a hungry child - yep that will help ...

<comment><AUTHOR> Social problems are both about the huge levers of society and government as well as a situation where poverty becomes a "death by a thousand cuts". I agree with you: the huge levers of social policy and economics make a huge difference in peoples lives. They are truly important issues, and there are plenty of organizations focusing on those problems.

On the other side, though, the thousand cuts are real and maybe we can figure out some way to help solve a few of them. A great example of a simple tech solution that has hugely beneficial outcomes is text4baby [https://www.text4baby.org/](https://www.text4baby.org/)

When you go for your first pre-natal care visit, you signup with your baby's due date and it sends simple reminders at the right time about what you should be doing to ensure your baby is as healthy as it can be. Things like reminders for checkups, folic acid, diet, etc. Super simple app, huge results.

I think that there are other problems out there that technology can help address. Certainly not ALL the problems, and probably not the systemic socio- political problems, but some. Why not try?

</comment></comment><comment><USER5> I think this out of the Blue Ridge Foundation space in Brooklyn which also houses Datakind, [http://www.datakind.org/](http://www.datakind.org/) they do exactly what you are talking about. Pairing up engineers with NGOs to help them better use the data they have now and tackle the problems they are facing.

</comment><comment><USER6> Looks like the deadline was yesterday (April 30).

<comment><AUTHOR> That's the deadline for the Fellowship. The deadline for applications for the Hackers In Residence is May 20th.

See here: [http://significancelabs.org/hackers/](http://significancelabs.org/hackers/)

<comment><USER6> What's the difference? Fellowship is for CEO of a social enterprise, Hackers is for CTOs?

<comment><AUTHOR> Essentially, yes.

We figure that we can only really teach one thing: immersion and empathy with the communities we are trying to help. We can't really teach people how to develop products that people will really use, so we are trying to optimize for fellows who already have that skill.

We haven't selected the fellows yet, however, our fellows applicants include successful tech entrepreneurs, senior product owners at large tech companies (usually with engineering backgrounds), etc.

<comment><USER6> Thanks for clarifying.</comment></comment></comment></comment></comment>


Why I Don't Use Gnome but Everyone Else Should - <AUTHOR> https://2016.guadec.org/keynotes/ <comment><USER2> Yes, tell me more about reasons I should ditch my e16 that I use for a dozen years already, replacing it with an entangled mess of modules that don't do what I want and I have no real control over.

Anyway, it's an abstract of a talk that's yet to be given.

<comment><USER3> Nothing beats my lxpanel over mutter, just because I can.</comment></comment>


The quick brown fox jumps over the lazy dog - <AUTHOR> https://en.wikipedia.org/wiki/The_quick_brown_fox_jumps_over_the_lazy_dog <comment><USER2> Not quite sure why you're posting this here and now, but I wrote about this a while ago[0] and recently posted it here[1]. There are some interesting language games to be played with ideas that start here.

[0] [https://www.solipsys.co.uk/new/AllTheLetters.html?te24hn](https://www.solipsys.co.uk/new/AllTheLetters.html?te24hn)

[1] [https://news.ycombinator.com/item?id=23290593](https://news.ycombinator.com/item?id=23290593)</comment>


Database of 9.3M Healthcare Patient Records Breached - <AUTHOR> https://www.deepdotweb.com/2016/06/28/now-9300000-healthcare-insurance-database-sold/ <comment><USER2> Worked in healthcare IT. Breaches are inevitable. Not "if", but "when".

The attack surface area is huge. My team created 5 regional healthcare exchanges. Hospitals, insurers, scripts, labs, etc. So many weak links in the chain.

So you'd think "encrypt" the data (ala translucent database designs). But you can't. Because we don't have unique identifiers for all persons, demographics must be stored in plaintext, so that medicals records can be matched across heterogenous systems.

</comment><comment><USER3> "The database is being sold for 750BTC..."

Once again Bitcoin is the "getaway car" of choice for hackers and ransomware extortionists around the world.*

Where are all the Bitcoin fans when this happens? Probably reassuring themselves with, "Untraceability isn't a horrific crime-facilitating flaw; it's a feature."

At least good old currency bills had serial numbers on them...

* Just a few other examples:

[https://it.slashdot.org/story/16/04/26/1357238/businesses- pa...](https://it.slashdot.org/story/16/04/26/1357238/businesses- pay-100000-to-ddos-extortionists-who-never-ddos-anyone)

[https://yro.slashdot.org/story/16/06/13/2211221/new- device-s...](https://yro.slashdot.org/story/16/06/13/2211221/new-device-sold- on-the-dark-web-can-clone-up-to-15-contactless-cards-per-second)

[https://news.slashdot.org/story/16/06/12/082234/ransomware-t...](https://news.slashdot.org/story/16/06/12/082234/ransomware- thieves-cost-canada-university-c20000-in-bitcoin)</comment>


SDF Public Access Unix System – Est. 1987 - <AUTHOR> http://sdf.org/ <comment><AUTHOR> It seems that this server has not been updated since 2010, except for some small update in 2013:

[http://sdf.org/?software](http://sdf.org/?software)

Or, is it just that documentation website which is outdated?</comment>


Does anybody treat their wife/girlfriend's rants as error messages?  - <AUTHOR>

<comment><USER2> Well, I think everyone received and logged http codes 302, 403, 405, 417 ending with 409 and 410 at some point. Life!

</comment><comment><AUTHOR> We can add husband/boyfriend

</comment><comment><USER3> does anybody else hate the casual sexism in the tech community?

<comment><USER4> Isn't it just a fact that the vast majority of programmers are men? Or are you working somewhere that is different? Is there anyone who can deny this?

<comment><USER5> Makes no difference. This is still sexist.

</comment></comment></comment><comment><USER6> haha - fatal error! .. it needs restart as soon as possible ;)</comment>


Ask HN: Yale or Berkeley for undergrad EE/CS? - <AUTHOR>

I'm a high school senior planning to study EE, CS or some combination thereof. I recently found out that I got into Yale and Berkeley. How would you compare these two schools?
Note: I do intend to go to grad school immediately after completing my bachelor's degree. <comment> barry-cotter The following are the top four schools in CS in the US, and honestly the world. MIT, Stanford, CMU (Carnegie Mellon), and Berkeley.

YOU SHOULD GO TO YALE.

If you change your mind about what you want to do Yale is a better choice for more or less everything else, and it's not like your undergraduate education will be subpar there. I know a guy here in Shanghai who does more reading about design than most Art or Design students while being a very, very serious business student.

Seriously, if you have not at least worked your way through all of _Concrete Mathematics_ already, and liked it, Yale is a better option.

</comment><comment><USER2> Berkeley. The weather is a lot nicer, never freezes. It is on the edge of Silicon Valley, and across the bay from SF. It is a very big state school with lots of weirdness.

Seriously, take the "Software as a Service" class at EdX that started two weeks ago. It will give you a taste of Berkeley CS. Dave Patterson is a famous hardware architecture guy.

As a general suggestion, take a course or two from coursera, edX, or udacity to see if you are tough enough for CS.

<comment><USER3> Could you elaborate on what you mean by "tough enough for CS" ? There are definitely difficult disciplines in CS, but few of those will be required courses in an undergraduate curriculum. The best indicator of success in CS (or any other field) is passion. If you are passionate about your field of study then the "toughness" of the program shouldn't be a major factor in your decision making... certainly not if you've already been accepted to Yale and Berkeley.</comment></comment>


The Worst Measles Outbreak In The European Union - <AUTHOR> https://www.npr.org/sections/goatsandsoda/2018/11/24/669228140/the-story-behind-the-worst-measles-outbreak-in-the-european-union <comment><USER3> I was close to a potential measles outbreak this summer. Close enough that had to be tested because my vaccination decades ago in another country was considered insufficient. (I was found to be already immune, as expected, but got a booster anyway.) I also got to work with epidemiologists who were working to contain things, and fortunately the outbreak did fizzle out . So I take this issue pretty personally.

Whatever people's concerns about vaccines might be, and I'll concede that manufacturers' lack of transparency about ingredients and adverse-reaction risks is part of the problem, those _totally_ pale in comparison to the importance of maintaining herd immunity to prevent the disease itself from spreading. There are people who are too young to be immunized, or who have conditions that preclude it. Also, vaccines do fail. The current rate is around 2% and that's what led to the case I was involved in. There is a _very small_ chance that someone will avoid problems that might have occurred if they'd had their children vaccinated. There's a _much larger_ chance that in the process they'll put someone else's child at risk. It's stealing others' lives for their own, so I think it's quite reasonable to compare vaccine refuseniks to vampires. Don't be a vampire. Get your damn shots, make your sure children get their damn shots, and do your part to keep this _killer_ from roaming around freely.

<comment><USER4> It's great to say "but what about the children" and all, but immunized individuals really don't need to involve themselves in the lives of those choosing to avoid medical treatment.

By definition, the immune won't be harmed by my choice to not immunize myself. If I get sick, and you are immune, my choice to take risks won't harm you.

If you're worried about those other than yourself, who might be harmed by my hypothetical decision to risk illness and injury, your advice should be phrased to them as an audience.

Meanwhile, the waters are still muddier. There are a wide array of other terrible personal choices that are defended maximally, despite conceptual harm being part of the package. The choice to consult a doctor, or not, the choice to not be resuscitated, to not seek treatment for terminal diseases, to not suffer treatment when quality of life is not rewarding.

All of these choices matter as much as choosing to have a child at all. Ultimately, I think some children would be better off as orphans in foster care, but I'm not about to try and make that happen. I think it's more about letting nature take its course.

The immune live. The others die. Darwin's theory prevails.

<comment><USER3> > If you're worried about those other than yourself, who might be harmed by my > hypothetical decision to risk illness and injury, your advice should be > phrased to them as an audience.

That's ridiculous. Those people are doing all they can, considering their conditions. It's the people who are _not_ doing all they can, exposing others to danger so they can satisfy their own contrarian "smarter/greener than everyone else" self-image, who need the message.

> There are a wide array of other terrible personal choices that are...

...irrelevant. That's just concern trolling.

> The immune live. The others die. Darwin's theory prevails.

Victim-blaming and concern trolling were bad enough, but now we're into eugenics. If you want to talk about "terrible personal choices" that should make the list.

<comment><USER4> You're using a lot of internet argument buzz words, but none of them invalidate my position.

More to the point: people get to make choices. That's what being a person means.

Either you let people choose, or you put them on a feedlot, admit that this is a factory farm, and openly ply them with antibiotics and horomones, so you can milk them longer, before putting the bolt gun to their head and serving their remains at McDonald's.

<comment><USER5> Using your own logic, we should let healthy people choose to execute those who aren't immunized the instant they contract disease. It's self-defense, just let people choose.

Obviously that's absurd. There is a line drawn in any civil society, to keep it civil. If people want to opt out of immunizations, it should be legal and obligatory to eject them from society: they do not get to go to school in public schools, they can be discriminated against in hiring, they can be excluded from health care programs whether private or public insurance - <USER2> they comply. That is absolutely civil behavior, and it's reasonable. And they can still choose whether to participate in civil society or not.

And we have very nearly that policy. But the problem in the U.S. is religious exemptions. The flaw with the current coddling of religious folk, is that a person's right to religious freedom cannot be permitted to increase the risk to other people's lives. And yet it does, and we tolerate it so far.

The only people who should be exempt from immunizations are those who are immune compromised in a way that their life is at greater risk by being immunized.

</comment></comment></comment></comment></comment><comment><USER6> Better source: [http://www.balkaninsight.com/en/article/fatal-inaction- how-m...](http://www.balkaninsight.com/en/article/fatal-inaction-how-measles- made-a-comeback-11-30-2017)

</comment><comment><USER7> > In France, for instance, 41 percent of those surveyed said vaccines are not > safe — more than three times the global average of 12 percent.

That's a pretty astonishing statistic

<comment><USER8> But they're not safe. Like any kind of medication, there's a risk of hidden effects or bad reaction that could and do happen. Rather than trying to lie, I think it's better to be honest about the possible side effects, and communicate about the nasty diseases we don't have to deal with thanks to those vaccines. Most anti-vaccines are stuck on the possible danger of vaccine, and aren't balancing it with all the benefits that come because we forgot how bad those diseases were.

<comment><USER9> The risk is something on the order of 1 child per million dies (or gets a lasting severe outcome, IIRC). That's ~4 children per year in the US, traded for the lives of millions.

</comment></comment></comment><comment><USER10> An issue that there is alternative fear truths spreading on the internet as they are real facts when they are not.

With vaccines a majority of the population need to be vaccinated that prevents the disease from spreading.

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

Here is a graph of Measeles in the United states. Before and after vaccine. [https://en.wikipedia.org/wiki/Herd_immunity#/media/File:Meas...](https://en.wikipedia.org/wiki/Herd_immunity#/media/File:Measles_US_1944-2007_inset.png)

"Vaccine controversies have occurred since almost 80 years before the terms vaccine and vaccination were introduced. Despite overwhelming scientific consensus[1][2] that vaccines are safe and effective,[3] unsubstantiated scares regarding their safety still occur, resulting in outbreaks and deaths from vaccine-preventable diseases." [https://en.wikipedia.org/wiki/Vaccine_controversies](https://en.wikipedia.org/wiki/Vaccine_controversies)

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

<comment><USER11> The thing is, as a kid we got measles and we got time off school (Yay!), but we'd get a booster shot at the time and the wheels of society keep turning as we'd stay at home until we got well enough to go back. I got mumps, german measles and a variety of things kids nowdays get vaccinated for. I've had the chicken pox 3 times and it's relative, shingles, twice (somehow my immune system doesn't learn this one!).

So...why is there now all this fuss to be pre-vaccinated? To me it's like the tetanus shot, if you get pricked by a bit of rusty metal and it's been 10 years, you go and get a shot.

One of the main things that I can think of is that due to a modern society, both parents are working and absolutely need to send their kids to school. This of course can be a big problem without a mandatory, herd-immunity system in place.

> unsubstantiated scares regarding their safety still occur

This is probably because they're not exactly unsubstantiated:

\- [https://en.wikipedia.org/wiki/Pandemrix#Narcolepsy_investiga...](https://en.wikipedia.org/wiki/Pandemrix#Narcolepsy_investigations_in_the_European_Union)

\- [https://www.abc.net.au/news/2010-11-23/the-fallout-from-a- ba...](https://www.abc.net.au/news/2010-11-23/the-fallout-from-a-batch-of-flu- vaccine/2347906)

<comment><USER12> What does "pre-vaccinated" mean in this context, exactly? Vaccinations only come in the "pre" variety; once you've caught the disease, vaccination is unlikely to do any good. Some diseases (e.g.: rabies) have a long enough incubation period that post-exposure prophylaxis is effective, but this is very much the exception.

Sure, kids can get measles, and they'll probably be just fine. Measles only has a 0.1%-0.2% mortality rate, after all... On the other hand, that means 1-2 of every 1,000 children who get the disease will die a completely pointless and preventable death.

</comment></comment></comment><comment><USER13> [https://text.npr.org/s.php?sId=669228140](https://text.npr.org/s.php?sId=669228140)

Text version for us Europeans, blessed by GDPR.

</comment><comment><USER14> Can't we just make it really @#$_ing inconvenient to decline vaccines? Bar kids from school and whatnot. Wouldn't this filter people who anti-vax only when it's convenient?

I have a sense that a lot of anti-vaxers would change their tone if it's actually inconvenient every day to be one. But I don't have the facts on this one and can't find anything with a short Google.

<comment><USER15> Yes, this is the approach in e.g. Belgium and Germany.

</comment></comment><comment><USER16> The gem is in the accompanying paper: [https://www.ebiomedicine.com/article/S2352-3964(16)30398-X/f...](https://www.ebiomedicine.com/article/S2352-3964\(16\)30398-X/fulltext)

They are asking about safety and effectiveness, and in France there has been a debate about the HPV and Hep B vaccination, yet French children are still mostly properly immunized. The big European measles outbreaks happen in hardline Dutch Reformed communities.

<comment><USER17> > The big European measles outbreaks happen in hardline Dutch Reformed > communities.

That's definitely not correct. Greece had the most cases of measles in the EU over the last year, at 3,049. France had 2,771. Italy had 2,599. Romania had 1,821. The UK had 1,019. Germany had 542. Slovakia had 471.

Ukraine had 23,000+ in just the first half of the year. That's not a problem with dutch communities.

The biggest outbreaks over the last 10-15 years in Europe have occurred in Ukraine, Bulgaria, Romania, Italy, France.

</comment></comment><comment><USER18> You can all thank Andrew Wakefield, the physician that published the fraudulent paper that linked vaccines to autism.

"Immunization rates in Britain dropped from 92 percent to 73 percent, and were as low as 50 percent in some parts of London."

Then he directed a documentary against vaccination, making things even worse.

</comment><comment><USER19> Easy to solve - just calculate the economical and moral expenses of the outbreak, split them between all anti-vax proponents and make them pay.

<comment><USER20> What would you write down as the exact monetary value of a human life? How do you arrive at that number?

<comment><USER21> The same way any large policy maker does. This is a recurrent theme in social science, as you have to make big decisions such as whether it's worth spending an extra billion dollars on a slightly safer bridge.

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

<comment><USER20> I don't know if that feels entirely applicable. People who advocate that people shouldn't vaccinate their children simply increase the chance of large amounts of people dying from preventable disease; if they didn't, nothing would've been lost. Calculating how much should be spent on a bridge, on the other hand, is simply necessary in a world where there is demand for bridges even though there's not enough resources to ensure that both enough bridges are built, and that every single bridge is guaranteed to be 100% safe.

</comment></comment></comment></comment><comment><USER22> I'll use this as an opportunity to plead for some rebuttal to the anti- vaxxers' arguments. My wife doesn't want to vaccinate our child so this very personal. She's highly educated, knows statistics and reads research papers, but is now convinced by the arguments of this movement. The thing is that no debunking source I've found on vaccines does much to address their arguments, which include, but are not limited to:

* the profit incentive of the vaccine manufacturers

* herd immunity being questionable

* dangerous substances in the vaccines (mercury)

* the effectiveness of vaccines at all being in question

* the decline of disease mainly being due to better sanitation and conditions rather than vaccines

The whole autism thing is really a minor part of it. There are many arguments backed up by various cherry-picked research articles or spread by a few anti- vaxxing doctors and even previous researchers, just like with global warming.

What I need is some rebuttal, that is not by some random blogger, that addresses all their concerns without treating the anti-vaxxer as a high-school dropout stay at home mom. At this point the problem is much wider than a few uneducated people spreading nonsense.

Edit: interesting that I'm getting hammered with down-votes. If you're down voting, is it because this is too personal, off topic or what? I think the answer to my question can be very helpful to others facing similar situations.

<comment><USER23> Well, there's these visualisations about polio and measles in the United States, which are very compelling for the last two points.

[http://www.randalolson.com/2016/03/04/revisiting-the- vaccine...](http://www.randalolson.com/2016/03/04/revisiting-the-vaccine- visualizations/)

<comment><USER24> Better sanitation as a reason would lead to cutoff lines to be not so sharp and to be around the same time for most diseases. I guess. So this throws serious doubt on better sanitation being a reason for decline in diseases.</comment></comment></comment>


Trolls (2008) - <AUTHOR> http://www.paulgraham.com/trolls.html

<comment><USER2> Wow, 8,000 uniques a day. Those were the days. Now we get over 90,000.

<comment><AUTHOR> Yeah, that is amazing. I think we get more trolls too now, but probably not 11x. I do worry about some of the kinds of comments that get upvoted now.</comment></comment>


Objects vs. Functions round 1: Currying vs. Instantiation - <AUTHOR> http://panuviljamaablog.blogspot.com/2014/03/objects-vs-functions-round-1-currying.html

<comment><USER2> Not sure those two cases are really interchangeable. It doesn't seem like a very good example. By introducing an object that way you're coupling your functions that work on pure data to an instance. Now to multiply two numbers you need an instance of Calc. I'd suggest something like this instead:

      var multiply = curry(function(x, y){
        return x * y;
      });

      var add = curry(function(x, y){
        return x + y;
      });

      var Calc = (function(){
        function Calc(x){
          this.x = x;
        }
        Calc.prototype.map = function(f){
          this.x = f(this.x);
          return this;
        };
        return Calc;
      }());

      new Calc(2).map(compose(add(2), multiply(4)));

      // or

      new Calc(2).map(multiply(4)).map(add(2));</comment>


The Pentagon Says It Will Start Encrypting Soldiers' Emails Next Year - <AUTHOR> https://motherboard.vice.com/en_us/article/bjxjxv/the-pentagon-says-it-will-start-encrypting-soldiers-emails-next-year <comment><USER2> Oh.

When I saw the title, I thought they would start to use GnuPG or PEP or maybe switching from SMTP and MIME to something else.

And then it seems that they're still where the rest of the world was a almost decade ago, and starting implementing TLS.

<comment><USER3> I'm curious what GnuPG would offer beyond what they can already do using S/MIME via CAC?

<comment><USER2> Not much. But, possibly, Ed25519?

But, yeah, I just forgot about S/MIME while I was writing that comment. It's probably a better fit, especially in terms of revocation (OCSP, etc).

</comment></comment></comment><comment><USER4> Title is misleading; it should say something like encrypting ALL emails.

They have of course been able to encrypt individual emails for at least a decade with their CAC/PKI by checking a box in their email client.

After re-reading the article they never make any mention of existing crypto practices... Seems like purposely misleading or sloppy journalism.

However in the origin article they link to there is a useful gem:

> "STARTTLS is an extension for the Post Office Protocol 3 and Internet > Message Access protocols, which rely on username and password for system > access," the spokesperson wrote. "To remain compliant with DOD PKI policy, > DEE does not support the use of username and password to grant access, and > does not leverage either protocol."

I'm not versed in those protocols, but if that statement was true at the time it makes sense to me that the military wouldn't take a step back to using passwords when they already implemented physical tokens (CAC+pin) DoD-wide.

</comment><comment><USER5> This makes the US military look pretty bad. They should be leading the world in cryptography, not planning to encrypt emails with 2002 tech in 2018. It just goes to show how meaningless the term "military grade encryption" really is.

<comment><USER6> "military grade encryption" \- so strong, the military doesn't use it for soldiers' emails.

</comment></comment><comment><USER7> Wait. Next year?! They're not encrypted already!?

<comment><USER8> They need to install backdoors first, duh.

<comment><USER9> Why bother with backdoors when you're running the infrastructure? They can have a barn sized front door.

<comment><USER3> I'm assuming this is a reference to key escrow, which they do indeed have already (Audit purposes + ability to make sure older e-mails can be decrypted upon key rotation).

</comment></comment></comment></comment><comment><USER10> The title of this is pretty misleading. They are not encrypting emails, they are encrypting email traffic. The E-mails will still be plain text _unless_ the user decides to encrypt them, which is functionality that has been around since the mid 2000's.

</comment><comment><USER11> Isn't that about two decades late?</comment>


Adding Concurrency to Rails Apps with Unicorn - <AUTHOR> https://blog.heroku.com/archives/2013/2/27/unicorn_rails

<comment><USER2> This sounds really cool but one thing that this blog post didn't mention is that there is memory constraint on each dyno. So, this model might work if you have a Rails[1] app that doesn't use up a lot of memory. And, since Unicorn forks as worker processes, so, 2 unicorn workers will use up double the memory of a typical Rails app. If you have a really huge Rails app, you could still end up using only one unicorn worker for your Rails app, which is the same as just using any webserver on one dyno.

One interesting thing about the post is the mention of Puma[2] as the webserver for Rails app. Puma is thread based, so, its memory footprint is significantly less than unicorn. So, in theory, you should be able to handle more concurrent requests(more threads) per dyno with Puma.

Btw, don't just blindly follow the post. Make sure you test your app and see whether your app use up more memory each dyno allows. If your dyno runs out of memory, Heroku will just silently drop all your requests. So, you might end up having a worse problem.

[1]: In general, Rails uses up quite a lot of memory on cold start. [2]: <http://puma.io/>

<comment><USER3> _And, since Unicorn forks as worker processes, so, 2 unicorn workers will use up double the memory of a typical Rails app._

Thanks to copy on write, the amount of memory needed for 2 processes is strictly less than 2. Just make sure to preload as much data as you can before you fork. And in many use cases memory slowly comes unstuck (change anything, and a whole page of data comes unshared) so it can make sense to kill workers every so often and let them refork with everything properly shared.

<comment><USER4> Will Unicorn automatically kill older forked processes periodically and fork off new ones, or is that something that would need to be done separately?

<comment><USER5> One of the comments on the Heroku article mentions this gem, which does just that:

<https://github.com/kzk/unicorn-worker-killer>

<comment><USER6> Regarding memory, I think you can do something like this in your Unicorn config:

after_fork do |server, worker| size_in_bytes = 600 _1024_ 1024 # megabytes Process.setrlimit(Process::RLIMIT_AS, size_in_bytes)

</comment></comment></comment></comment></comment><comment><USER7> I am glad to see them mentioning this. We use Unicorn, and have for quite a while, as a means of lowering the bottlenecks and slow response times. I strongly suggest looking at Unicorn Worker Killer too (<https://github.com/kzk/unicorn-worker-killer>) given the cap on memory for the dynos

<comment><USER8> For those interested in doing monitoring outside of the process itself, we run this command every minute via cron

ps -o rss,pid= -U username | sort -k 1 -nr | head -2 | awk -F: '{FS=" ";if ($1>limit*1000) print $2}' limit=`jot -r 1 144 192` | xargs kill -QUIT

It will gracefully kill 2 most memory-consuming unicorn workers above random range of 144-192MB of memory. It proved to be extremely efficient and simple solution to our needs.

</comment></comment><comment><USER9> Is it just me, or is this not at all the same kind of node.js-style concurrency that makes sense Heroku's new router? Using Unicorn simply means that you're firing up a few more workers, it's only slightly better than buying more dynos.

<comment><USER10> It is not at all node.js-style concurrency.

It is probably about the same as buying more dynos -- I would think that unicorn set to fork three times is actually about the same as three dynos with thin in standard configuration -- as you say, either way it's three processes, each of which can only handle one request at a time.

It is _probably_ not a solution to the bad worst-end latencies that can occur when you have random (or round-robin) routing, and relatively high variation in request durations.

Using a multi-threaded request dispatch (NOT what unicorn does, but what they start hinting at towards the end) _may_ be a solution to that though. Although multi-threaded concurrency is STILL not "at all the same kind of node.js-style concurrency", as node.js is evented, not multi-threaded. But multi-threaded concurrency seems likely to make sense with random or round robin routing too. Although more research and data is called for (at least more than I have, which is zero).

But there's no reason to assume that node.js-style evented concurrency is the only thing that can possibly make sense with random routing. And if it is, that's very inconvenient. Trying to do node.js-style evented concurrency with a Rails app... or any app that wasn't built from the ground-up (including all it's dependencies) for evented-style concurrency... or even if it WAS... it's non-trivial.

In contrast, multi-threaded request dispatch requires not a lot of change to your code -- basically just avoiding shared in-memory state between requests (basically, global/class variable access).

In addition to puma, thin in fact does have a multi-threaded mode, although it's poorly documented.

I think they are actually passing the buck suggesting "We can't tell you which way to do multi-threaded request handling, it depends on your app!" Well, sure, it always depends on your app, but that applies to their suggestions to use unicorn as well, but that didn't stop them. There are still often general best practices for typical web apps.

I think it's true that they can't tell us the right way to do multi-threaded request handling -- because it requires more research and analysis and experimentation (and possibly a patch or two) to figure out the best practices here, the community hasn't put enough into it yet. But if anyone's got the resources to put into it, it's heroku, and it would be rather good for their business to figure this out and educate the community. Heroku became so respected because they seemed to really know what they were doing, to be at the top of the game -- if they can't manage to figure this out either, it lowers our trust in them.

<comment><USER11> I think the OP is referring to the fact that Node is also single-threaded and you have to use the Node Cluster module to fork child processes.

</comment></comment></comment><comment><USER12> So after reading this I can't see a single disadvantage to using Unicorn. Is there any reason why I shouldn't immediately switch from thin?

<comment><USER13> Unicorn is only meant for "fast clients" and they specifically say that "slow clients" should be served by a reverse proxy like nginx. I put those terms in quotes since they're subjective. But I've read that Fast Clients are only those on a LAN. So basically, Unicorn should NEVER be directly exposed to a user.

Problem is, Heroku doesn't run a reverse proxy anymore on its Cedar stack. Rainbows[1] is a server based on Unicorn but designed to also handle longer requests/slow clients.

[1]<http://rainbows.rubyforge.org/>

<comment><USER12> Why does the speed of the client matter?

<comment><USER13> This is a good read about it: <http://unicorn.bogomips.org/PHILOSOPHY.html>

</comment></comment></comment></comment><comment><USER14> If you are using the NewRelic add-on you can go to the "dynos" tab and see the memory footprint of your application over time. The Heroku memory cap is 512mb, so if you stay a decent amount of space clear of that then you are likely to be ok running multiple workers per dyno.

For instance, our app which I'd say is a medium sized rails app, generally consumes between 175mb and 210mb of memory. So we /should/ be safe running 2 workers per dyno which would effectively double our processing power.

HOWEVER, if you hover over the memory graph it'll tell you the min/max/avg consumption over that particular time period. Looking at that I see we sometimes spike the max over 350mb. The question is, what is that spike going to look like running unicorn. Unfortunately, I can't think of many ways to accurately test/predict that without simply giving it a try.

One other thing that was mentioned in the comments of the article is that you can set the unicorn backlog to a very low number (default appears to be 1024) which will apparently tell the heroku router that a particular dyno is "full" and to look somewhere else to process the request. One comment recommends setting the backlog to 25. I wonder what setting the backlog to something like #workers*2 would do.

</comment><comment><USER15> Check out the unicorn-rails gem if you'd rather not fiddle with config files.

<comment><USER16> I was just checking it out but I saw there were a ton of forks and a number of seemingly important issues. I was hesitant to use it after seeing that.

<comment><USER17> _...there were a ton of forks and a number of seemingly important issues..._

I see no open issues, 2 closed issues, and 5 forks, in which two or three configuration settings are tuned.

<https://github.com/samuelkadolph/unicorn-rails>

<comment><USER16> Ah, my bad. Confused with this:

<https://github.com/sosedoff/capistrano-unicorn>

</comment></comment></comment></comment><comment><USER18> Since the Unicorn documentation explicitly states that you should not let it handle slow clients (everything outside your datacenter) directly, using Rainbows![1] might be a better solution.

[1] <http://rainbows.rubyforge.org/>

<comment><USER19> Heroku apps at the very least sit behind the heroku router, which I would assume is in the same datacenter. If the information in this quora answer <http://www.quora.com/Scalability/How-does-Heroku-work> is still valid, your app is also behind a front-facing nginx reverse-proxy.

I'm not sure that actually means it's handling slow-clients, though.

<comment><USER18> I think the important part is that the reverse-proxy should buffer the request, but I can't find anything about wether or not the Heroku router does this.

</comment></comment></comment><comment><USER20> GitHub wrote about this back in 2009.

<https://github.com/blog/517-unicorn>

</comment><comment><USER21> This (concurrency) makes heroku's routing system little more bearable...</comment>


Today, stripe removed dashboard functionality that stopped us doing business - <AUTHOR> TLDR. Business impacting dashboard functionality removed. Need a drop in replacement for stripe. Oh, and support sucks.
We use a couple of stripe integrations for our website and have probably done £50k of transactions in the last few months.
Stripe has basic inventory management through products, SKUs, quantities and attributes.
Today, a non technical member of my team went to amend and add product availability. The options for editing or creating product/SKU inventory were gone, this looked like a broken dashboard.
Stripe support wasn't good. At all. Email and phone are basically a messaging service with a robotic sounding "we'll get back to you in 24h" - in fairness their reply was quicker. Just unhelpful.
They told me that the API had changed. I told them we weren't talking about the API, we use the dashboard.
Then it transpires that their support advice of deleting and creating a product wouldn't work either, both new and edit product were affected.
Then an apparent escalation reveals that this is apparently a deliberate change and the functionality has been removed. Super.
Now we apparently have to write our own front end to stripe to just update quantity or even set it active or not.
Aside from an obvious regression in functionality, support clearly hadn't been briefed and sent us chasing our tales for a few unproductive hours.
Guess we're not using stripe anymore.
HN: what's a good stripe replacement? <comment><USER2> I work at Stripe and happened to see this thread a few minutes after we had started an incident response to resolve the underlying bug.

So, long story short: We did a deploy yesterday for a thing which is not obviously related to the Dashboard's product SKU editing screen. There was an unplanned interaction between some work done for that deploy and the Dashboard product SKU editing interface; this resulted in some users having partially degraded HTML shipped to them (without the fields for editing SKU inventory quantity and SKU active/inactive status).

After we became aware that this happened due to Dan's comments, we opened an incident, diagnosed the regression, put a temporary fix in place, and started working on a more permanent fix.

I'm sorry we dropped the ball with respect to the support inquiry about this; our representative came to the conclusion that this was a planned change in functionality, even though this particular interaction was not planned. We'll look into how that happened and correct it.

<comment><USER3> I also work at Stripe and have been working on remediating these Dashboard workflow issues. We've pushed comprehensive fixes for the regressions. I'm also looking into our support representative's initial misunderstanding of the issue. I appreciate the flag here and would encourage anyone to get in touch with us directly via [https://support.stripe.com/](https://support.stripe.com/) with questions if they notice any unexpected behavior post-fix.

<comment><AUTHOR> As to your colleague, thank you. If I can be of any help in helping identify where support went wrong, please hit me up.

</comment></comment></comment><comment><USER2> (We're on it -- more detail after the bug is squashed.)

</comment><comment><USER4> I know this is not the answer you want to hear (and trust me this should NOT be the answer). But if they have an API that allows you to make these updates, it might be best to use something like Postman to hit the API to make the update while you find a drop in replacement for Stripe. I'm not saying it's a long term solution. But I wouldn't want your business to suffer while you are figuring this out. If I can be of assistance let me know.

<comment><AUTHOR> Postman is a decent stop gap, thanks for the suggestion

<comment><USER5> Looks like this change wasn't intended and hopefully stripe rolls back out the functionality you were using.

I'm a huge fan of Stripe so I'd give them a chance to get this resolved for you before switching.

The stripe api is great to work with so you might benefit having a custom web application built to interact with it and make things more efficient on your end and not depend on their dashboard.

</comment></comment></comment><comment><AUTHOR> Despite the issues with support, I'm pleased to report how Stripe's engineering team understood, took ownership and resolved this nasty little bug as it turned out.

I couldn't believe a dev-friendly and sane org like stripe would intentionally remove functionality so haphazardly.

The resolution is the result of some good folk at Stripe and hopefully the feedback will improve support and escalation. ^DM

</comment><comment><USER6> Stripe has bugs sometimes. I've personally submitted at least 5 that were verified by them as bugs, across all areas of their project. Most recently, they started generating phantom "subscription updated" events with nothing actually changed (which my system did NOT like).

That said, we've only been on Stripe for a year and a half, and they've made some real progress in that short time, even though I thought they were great before all of that. Compared to most of their competitors, they are still the best to work with.

For the future, there's also an IRC channel that you can reach out to for general help, in addition to the ways you tried.

</comment><comment><USER7> I think Braintree's the largest Stripe competitor, been a while since I've looked at it though.

You might try asking about this change on Stripe's IRC channel for an immediate response, if that still exists -- #stripe on freenode.</comment>