Microsoft paying YouTubers for Xbox One mentions - <AUTHOR> http://arstechnica.com/gaming/2014/01/stealth-marketing-microsoft-paying-youtubers-for-xbox-one-mentions/ <comment><USER2> I run some product placement / brand awareness stuff with big YouTube gamers (also for gaming hardware, but not Microsoft), and I discussed this directly with ASA (Advertising Standards Authority in the UK) to ensure we weren't doing anything wrong.

We don't instruct our influences that they cannot be negative about our product not instruct them to be positive. We agree how often the products need to be shown, and include a few other things (link to product in description, etc.)

ASA's guidance was that for this we do not need to disclose anything about paying these influencers. I pointed out that although we don't specifically give them these instructions, the reality is that if one of them was negative we would kill the deal, and therefore were we essentially breaking the rules and just not putting it in writing - they said that no, we were fine _until_ the first time we kill a deal because they said something negative. At that point on we have set a precedent and will need to have all our influencers disclose that they are being paid by us for these videos. But not until then.

Worth noting that our videos are fairly obvious - we generally have a 5 second logo clip that they play, the link in the description goes through what is obviously an adserver (though sometimes via bit.ly) - so we aren't trying hard to hide the fact. Although this was not relevant to ASA's answer to us.

Edit: Worth noting I work in Europe only, nothing in the US. Have also checked in Germany/France where we do the same thing, and there they don't seem to care right now, so no issues.

<comment><USER3> That's interesting, I'm surprised ASA are so lenient given that product placement isn't even allowed on UK tv. (Although they are phasing it in).

<comment><USER2> Actually it's been allowed since 3 years ago (early 2011), except on BBC channels due to their publicly-funded status. There are Ofcom regulations which need to be complied with, which includes preventing it in certain program types (news, children's TV, etc.) I don't work with TV much so I don't have full details on the tip of my tongue, but anyone interested will find it somewhere within The Ofcom Broadcasting Code [1]

[1] [http://stakeholders.ofcom.org.uk/broadcasting/broadcast- code...](http://stakeholders.ofcom.org.uk/broadcasting/broadcast- codes/broadcast-code/)

<comment><USER4> > except on BBC channels

Mmmm... Isn't Top Gear all about product placement?

<comment><USER5> Top Gear are pretty aggressive about not shilling for manufacturers (c.f. their frequent off-color jokes associated with certain brands, rigged Tesla and Leaf reviews, etc.)

Obviously some manufacturers get a preferential treatment (Land Rover!) in order to keep the presenters in character, but given both the show's success without promotional money and the certain scandal and cancellation of the show (BBC especially is definitely not allowed to do that kind of product placement) if the producers were to be paid off I highly doubt there's any product placement going on.

<comment><USER6> > _BBC especially is definitely not allowed to do that kind of product > placement_ //

You've never seen the Graham Norton Show I take it. It's a thinly veiled infomercial - someone's promoting a book, this persons promoting a movie, this one's selling a new single.

When appearing on BBC though, at work, I was not allowed to wear my company uniform tshirt - cause you know not allowed to advertise ...

</comment></comment></comment></comment></comment></comment><comment><USER7> Kinda related, I've been mind-boggled at the amount of product placement Microsoft has been buying in TV shows lately. Everywhere you turn, characters are making a VERY OBVIOUS POINT of using a Surface or something. It's hilarious/awful.

<comment><USER8> It's so noticeable only because viewers are conditioned to seeing Apple's products placed prominently.

<comment><USER7> Not at all. It's noticeable because it's _awkward_. Shots will linger on the Bing search page, or on the Metro Start Menu for a couple of seconds before the character does something, and then the character taps an app and gets into what they're doing. If it wasn't product placement, it would be bad direction.

I've been watching _Arrow_ lately and it's really obnoxious there (though not really any more so than other shows that Microsoft has their marketing hooks into). For example: [http://www.youtube.com/watch?v=gyRZ03SFB68](http://www.youtube.com/watch?v=gyRZ03SFB68)

This is consistent. Every time a character uses a computer, there are several solid seconds of LET US SHOW YOU THE NEW WINDOWS.

<comment><USER9> Yeah, Apple is clever to have their logo on the back, lit up. So when they pay for product placement, the laptop is just sitting on the desk, with the actor using it and facing the camera, with the logo nicely framed on screen.

<comment><USER10> I've read in the past that Apple does very little product placement (that may have changed) and that the primary reason that Apples are so predominant is that is what they have available on set. This may be more true for photo shoots than TV/Movie production.

<comment><USER9> I'm not certain, to be honest. I know that 30 Rock includes Apple in the product placement credits at the end. But I've also seen stories that say that Apple doesn't pay for product placement beyond giving the product away for free. And of course none of this is public knowledge, so who knows.

<comment><USER11> _And of course none of this is public knowledge, so who knows._

Part of me _really_ wants this kind of information to be recorded somewhere and made public some number of decades into the future. It would be _absolutely fascinating_ as a student (in the broader sense) of technology and business to read all the confidential agreements, product placements, and back-room deals that facilitated the outcomes of technological history, even if it's after a very long delay.

</comment></comment></comment></comment></comment></comment></comment><comment><USER12> Unlike Apple and its team of "insiders" and their "leaks", which coincidentally seems to always be people who get free goods from Apple's marketing department.

This is a complete sham!

<comment><USER13> Do you have an example of that happening where the "free goods" were not a temporary review unit which was later returned?

<comment><USER14> Oh great, a reddit-style novelty account created 42 minutes ago.

<comment><USER15> Play the ball, not the man.

<comment><USER11> Sounds like a good way to let the man get past you with the ball.

<comment><USER15> Yes, quote works for argumentative purposes, not as actual strategic basketball advice!

</comment></comment></comment></comment></comment></comment><comment><USER16> That's just standard marketing. Don't know why we need the word "stealth". There are tons of youtube channels with marketing. (See every make-up vlogger ever).

<comment><USER17> Exactly. Why the need for "stealth" if what they are doing is "normal"? It's because they're trying to make people believe Xbox One is more popular than it really is, and that the comments are really "natural" (when they aren't).

I find it that quite unethical. It's no different than paying Reddit commenters for mentioning it.

<comment><USER18> " It's because they're trying to make people believe Xbox One is more popular than it really is"

Ignoring the fact that the Xbox One has been selling great, isn't that more or less the point of marketing? Make a product seem popular, generate buzz, make money?

<comment><USER19> In the dim and distant past marketing was about telling people why your product was good, not convincing them it's popular.

<comment><USER20> You may want to let the diamond people know about that... exactly how far in the past are we going... I'm pretty sure marketing has always been about moving product for the lowest cost possible.

</comment></comment></comment></comment></comment><comment><USER21> This is pretty standard marketing stuff in 2014... If I were running the Xbox marketing department I'd start firing people if they WEREN'T doing this.

There are entire startups whose job it is to set up advertisers and YouTubers with this type of arrangement - look no further than FullScreen, BigFrame, et al...

<comment><USER22> I'd say two things:

One is that you're correct, it has been happening for years within the industry, so it's kind of weird to see an article almost in the style of an "expose" on the practice.

Two is that it really isn't getting huge market traction. Or it wasn't at the time when I was working more closely with it. It was considered more like a value-add or diversification strategy alongside other media buys and not a primary strategy.

</comment></comment><comment><USER23> It is quite amazing that so many people on here are very ok with astroturfing.

<comment><USER24> Well if you want to go down that rabbit hole, if MS is willing to do unethical advertising for its gaming console, how much of an extra effort would it be for them to pay people to defend its dubious practices on the internet?

It's not the first time this has come up, and I bet they've done similar things for their other software in the past. As you could read in the article, they know how to cover their butts quite well, as such it's immensely hard to prove, but iirc, Mark Penn used to run a company called Burston-Marsteller that went quite far in the Microsoft evangelism (shilling).

Some notable examples: [http://arstechnica.com/gaming/2014/01/stealth- marketing-micr...](http://arstechnica.com/gaming/2014/01/stealth-marketing- microsoft-paying-youtubers-for-xbox-one-mentions/?comments=1&post=26068393)

It's downright disgusting and misleading. Market your stuff until the cows come home, but don't try to act as if it's organic interest while it's actually a paid product placement, which is exactly what's happening here.

That's intentional misdirection, bribery wrapped in an NDA. I hope the FTC takes interest in such blatant disregard of ethics in marketing. Microsoft may be big, but it has to play by the rules too.

And no, it's not okay because some other firm does it.

I don't get how Microsoft tries to play the angel of ethics when throwing mud at other companies, but doesn't really respect its (potential) customers when it comes to their own PR.

</comment></comment><comment><USER20> This is what happens when you cut the PR middlemen out of the equation. OMG the horror MS is directly paying average joes instead of paying PR people.

</comment><comment><USER25> The submission headline should be: "Marketing: Microsoft paying YouTubers for Xbox One mentions". Nothing special here...

</comment><comment><USER18> I know the gaming world is making a big mess about this but as others have mentioned, it's nothing other than marketing. Doing promotions like this for Machinima partners/affiliates is nothing new. I also don't see how it differs from publishers sending free games to people to review on YouTube.

<comment><USER26> Maybe read the linked article to get some food for thought:

"These kinds of payments aren't inherently suspect in and of themselves. If the video makers disclosed that Microsoft was paying extra for these videos, and if they were allowed to say whatever they wanted in those videos, then the whole thing could be seen as merely an unorthodox way to increase exposure for the Xbox One on YouTube.

That's not the case, however. According to a leaked copy of the full legal agreement behind the promotion, video creators "may not say anything negative or disparaging about Machinima, Xbox One, or any of its Games" and must keep the details of the promotional agreement confidential in order to qualify for payment. In other words, to get the money, video makers have to speak positively (or at least neutrally) about the Xbox One, and they can't say they're being paid to do so."

<comment><USER16> That's not uncommon with marketing agreements at all.

<comment><USER27> Maybe it's not uncommon, but it is against FTC guidelines. (I claim that because it's in the article too)

I don't know if being "against FTC guidelines" is equivalent to "illegal" or not. But let's hope so.

</comment></comment></comment></comment><comment><USER28> There's one key point that I haven't seen discussed here much. If this were a simple case of Microsoft contacting content producers directly and offering these things, then it'd be more acceptable. However, these are partners of Machinima, which has a relationship with YT and advertisers (fox, adotube, cbs, etc) to provide a revenue share to content producers. The fact that Machinima is mandating these terms to the content producers is what makes everything a bit shady, and poses several conflicts of interest for them.

</comment><comment><USER29> Don't we all just assume this is going on? Also, if it's alright to pay major gaming sites and magazines and personalities to talk about your product, why not some knucklehead with a bunch of youtube followers? It's no less sleazy.

The great thing about modern society is that most consumers have evolved enough savvy to be suspect of almost all brand-encounters. Even to the point of alerting to a lot of sure false-positives.

</comment><comment><USER30> In related news, comapnies pay for ads on TV and Brad Pitt was paid to drink Pepsi in WWZ. World shocked.

</comment><comment><USER31> I feel like a Machinema channel could simply make a review of the Microsoft Squared Square and the Sony Fun-VCR, and still be within the boundaries of the contract right?

Comparing the good points of the two Glossy Blu-Ray Players would make a good comparison of the two I believe.

</comment><comment><USER32> I have long assumed that, whenever someone posts any good mention of any Microsoft product or service, the standard response should be, "How much did Microsoft pay you to say that?"

</comment><comment><USER33> How did the rapgenius pitch to 'affiliates' go?

"That shit will BLOW UP!!!"

Here's hoping they're right. Again.

</comment><comment><USER34> The effects crypto currencies have on this particular type of marketing approach will be interesting, at the very least.

<comment> vezzy-fnord "Free market will fix this."

<comment><USER20> Incorrect, advocates of the free market don't even think there's anything wrong with this, including myself.

This is on the level of finding out Santa Clause isn't real and politicians are generally liars.</comment></comment></comment>


Bayes' Theorem with Lego - <AUTHOR> http://www.countbayesie.com/blog/2015/2/18/bayes-theorem-with-lego

<comment><USER2> Dear people who write math: Don't write text as-is in math mode. Either use \mathrm/\mathit (for LaTeX) or "" (for Word) to prevent random text being interpreted (and typeset as) variables adjacent to each other. The spacing for $numberOfYellowPegs$ is particularly horrifying.

<comment><USER3> > use \mathrm/\mathit (for LaTeX)

Even better, use `\text`, which re-sizes properly.

</comment></comment><comment><USER4> I think it should be pointed out that bayesian's believe bayes theorem as a statement about plausibility of statements, so intuitions about an event space (which are obvious statements about sets) don't carry over to the general case.

<comment><USER5> Do you (or someone else) happen to know of a good introduction into Bayesian's intuition about the plausibility of statements?

<comment><USER6> The best reference is Jaynes's _Probability Theory: The Logic of Science_. The first three chapters are online for free and explain the development of probability theory as a logic for plausible reasoning [1]. If you want to get a quick taste, I wrote a short blog post that introduces the theory while working through an interesting coin-toss problem [2].

[1] [http://bayes.wustl.edu/etj/prob/book.pdf](http://bayes.wustl.edu/etj/prob/book.pdf)

[2] [http://blog.moertel.com/posts/2010-12-20-more-on-the- evidenc...](http://blog.moertel.com/posts/2010-12-20-more-on-the-evidence-of- a-single-coin-toss.html)

<comment><USER4> If you hadn't beat me to it, this is exactly what I would have suggested

</comment></comment></comment></comment><comment><USER7> Great article, but really it's the pun in the name that made it for me. Good job, Count.

<comment><AUTHOR> I'm a lover of awful puns, and was actually surprised how few people I knew got it! I'm very glad you appreciate it, thanks!

<comment><USER8> Jazz and math. Ah. What more could one ask for?

</comment></comment></comment><comment><USER9> I think this:

 _Great, we have arrived at the conditional probability of red given yellow!_

...should have "red" and "yellow" switched. It's kind of confusing otherwise.

<comment><AUTHOR> Thanks for the catch! It should be corrected now

</comment></comment><comment><USER10> I often break out the lego when helping the kids with their maths homework - it really helps with visualisations and spatial reasoning.

</comment><comment><USER11> Great work! Recently I've been contemplating the idea of starting a blog that explains math concepts using LEGO bricks, this post gave me faith that there will be some interest in such a thing!

</comment><comment><USER12> Reading this makes me wish my math profs had played with lego during class.

</comment><comment><USER13> That's quite nice; well done. The Lego definitely helps communicate intuition. I also like how you're very thorough in the computations -- it makes a good introduction.</comment>


Tidalscale, a hypervisor that allows a single OS to run across multiple servers - <AUTHOR> https://www.tidalscale.com/ <comment><USER2> Not a fan of "magic" scaling across multiple servers. I'm not sure I would get the amount of control to squeeze the most performance out of this "OS" (edit: in terms of data locality for "big computation").

I am using Terracotta for a high performance JVM memory heap across a cluster. I need control and performance.

I wonder how this compares...

Personally, I'd rather stitch my cluster together than myself, rather than a monolithic "OS" hypervisor.

</comment><comment><USER3> This video from the Bay Area FreeBSD User Group, June 2015, does a decent job of explaining how TidalScale implements their hypervisor, spoiler, it's based off FreeBSD and Bhyve.

[https://www.youtube.com/watch?v=f-ug6B6ycng](https://www.youtube.com/watch?v=f-ug6B6ycng)

</comment><comment><USER4> So.

It's easy to dismiss this: the fallacies of network programming, etc etc.

But something happened in the last 10 years many people haven't really thought through: the network became faster than (most spinning) disks. Reading 1 MB from a spinning disk is roughly slow as reading 1 MB from the network in the same data center.

That makes you consider exactly what a "computer" is. A "supercomputer" is little more than multiple traditional computers with very heavily optimized network interconnects. But now everyone's internet connects are just as fast, why should we consider a cluster of computers any different?

Yes, SSDs change this (especially M2!). But view the SSD -> Network relationship as we used to view the RAM -> Disk relationship.

I think it's worth rethinking some of the traditional boundaries of what "a computer" is.

<comment><USER5> True, however this is competing with Supercomputers, which are quite a special case.

It's difficult to define a supercomputer, but essentially a defining factor is being able to read data from the _memory_ (not spinning/SSD disk) across the network at the same speed as if it were local. This is typically done with specialised networking (like Infiniband) that can reach nearly 100Gb/s, something that we are still quite far away from on 'commodity hardware'.

I think this company must be doing something very different, or have made some sort of breakthrough, that allows them to do what they're claiming, I don't think the network becoming faster and having SSDs is what has enabled this, at least not for the most part.

</comment></comment><comment><USER6> About page is pretty impressive. I understand how memory and storage can be clustered this way, I guess it's just like virtual memory and you have another layer of indirection via their hypervisor. What I don't understand is how you can partition computation the same way and not have performance tank.

<comment><USER7> Answer: you can't.

Something like MOSIX (os-level ability to ship processes, their IO, etc. across the network), being less indirect, should theoretically outperform this sort of thing, but people don't even deploy those very often.

It's almost always harder, but still not harder enough to write apps that decompose explicitly to being distributed.

Implicitly, you take on risks where either your whole VM dies if any physical member dies, or you eat the performance penalty of some kind of application- naive consensus, or yet some other hideous compromise. There's no good answers and you get what you pay for.

<comment><USER8> Computing's RAID0 with worse performance and worse reliability.

With traditional enterprise hypervisors, boxes are sized for least TCO and to be large enough to comfortably hold the largest VM... and then the farm is usually sized to have at least N+k (k >= 1) capacity to avoid killing off VMs in order to perform maintenance or be trapped without some spare capacity for new VMs. Critical VMs use lock-stepped mirroring on multiple physical boxes to avoid downtime from hardware failure. Furthermore, most enterprise hypervisors allow migrating both storage (disk images) and computing (the running VM's state) resources to different hw (hw failure notwithstanding).

If folks are trying to vertically scale one app or one system to become a giant box without using explicit parallelism, it's going to be slow and painful.

(As a teenager, I once ran an actual Fortran nuclear reactor simulator on Windows beige box and later played with making code using OFED performant over Infiniband... don't ever inherit two brands of gear and expect it to work)

</comment></comment></comment><comment><USER9> How does this compare to the clustering capabilities of VMS? If I remember correctly, a VMS cluster can make several physical computer behave like one logical computer with multiple CPUs and disk packs.

<comment><USER10> VMS did not share memories throughout the cluster.

</comment></comment><comment><USER11> Hmm. Proprietary "magic".

"Come, base your entire infrastructure on our hypervisor..."

</comment><comment><USER12> So, it is basically for people who don't want or can't distribute their work using proper data modeling and multiple distributed processes.

Don't get me wrong, there may be use-cases where this is actually the best approach. But having 1 OS with many, many NUMA nodes (that's how I guess the OS sees the cluster) is also very hard to get right. You need to program NUMA aware and use local memory where possible, all kind of locks will become very, very slow so you need to program lock-less where possible or have some sort of transactional memory. Anyway, I would say that the gain you get by using Threads will most likely be overcome by the complexity in memory management and data structures to reach good performance.

Message passing is much easier to program and allows easy encapsulation of modules and test abilities.

Cool project nonetheless :)

</comment><comment><USER13> I don't think I'd use this for my core application (where it's worth building application-specific distribution), but having an option in the toolbox for other/internal/non-core apps which have grown beyond a single machine.

(I met the founder at a conference last year where we were both speaking; I was suspicious of the whole model (because it sounds like magic), but talked with them a bit more and it seems legit for a lot of workloads.)

</comment><comment><USER8> Having been an HPC sys admin pre and post cloud, this unicorn comes around about every ten years... many previous startups failed because they tried to push expensive custom hardware with fancy interconnects, but most importantly, there isn't a need because scaling apps horizontally instead of vertically is usually more powerful, cheaper and more reliable as evidenced by Google's dominance. Plus, Rocks Cluster, Hadoop, Kafka, Kinesis, iPython, Erlang/OTP, Akka and more already make these sort of things moot because deploying a resilient cluster has not been as impressive as summiting Mt. Everest for a decade now. It's feels like trying to sell a magical product (cluster resource management) to get a major advance for free (single process system image). Maybe they can make the file system, ram, network devices, packets, firewall rule and everything else magically work, but fault handling and latency are big concerns that rapidly increase in complexity, orthogonal to anticipating understanding of how to most efficiently schedule what a process wants done when it would be simpler to code for parallelism such as MapReduce / actors from the beginning.

<comment><USER14> > there isn't a need because scaling apps horizontally instead of vertically > is usually more powerful

No, it's isn't more powerful per se. There are many problems that simply cannot be scaled horizontally at all because the data exchange pattern between nodes. However, the infrastructure/hardware behind horizontal scaling is simple, and it's basically unlimited.

<comment><USER15> If these problems can't explicitly be scaled horizontally by the developer, why would this system be able to scale them horizontally by doing it behind the scenes? Any limitations of data exchange between nodes would still apply.

<comment><USER8> Most of these single system image clusters have used custom, fast interconnects akin to Inifinband or hypertransport to ameliorate locality issues (latency and bandwidth)... Without such, it's neigh impossible without pinning all resources for a "process" to one physical box.

Good luck ever getting more than one box worth of performance or resources out of a single application instance.

Hence MapReduce, actors, promises, message-passing, etc.

</comment></comment></comment></comment><comment><USER16> Why does this make me think of RAM doublers from the win 3.1 era?

<comment><USER17> link for those who aren't familiar: [http://www.ambrosiasw.com/Ambrosia_Times/January_96/3.1HowTo...](http://www.ambrosiasw.com/Ambrosia_Times/January_96/3.1HowTo.html)

</comment></comment><comment><USER18> ScaleMP does this, too. Not for the faint of wallet, even for the free edition considering you have to use approved hardware...

[http://www.scalemp.com/products/vsmp-foundation- free/](http://www.scalemp.com/products/vsmp-foundation-free/)

<comment><USER19> ScaleMP has been around for a long time. It would be good to get an update or understand the distinction between the two products.

</comment></comment><comment><USER20> Mosix is still a terrible idea.

</comment><comment><USER21> Is this NUMA orchestration?

<comment><USER22> That was my thought as well. Like NUMA but over the network.

</comment></comment><comment><USER23> I don't see how this is relevant when you can buy servers with 3TB of RAM off the shelf.</comment>


My Favorite PostgreSQL Queries and Why They Matter - <AUTHOR> https://severalnines.com/blog/my-favorite-postgresql-queries-and-why-they-matter <comment><USER2> > 6\. UPDATE multiple rows with a CASE expression

Oh, man, as a seasoned DBA/Data Analyst, don't do this unless you have a really good reason to. This is premature optimization of the kind you want to avoid.

Yes, it's really neat to update everything in a single statement, and in _some_ situations it can perform significantly better, but CASE expressions in an UPDATE statement quickly get complicated to map out in your head. It gets extremely difficult extremely quickly to tell where you have an error, and it's very, very easy to make a very costly mistake.

If you really need an atomic change you can just do this:

      BEGIN;
      UPDATE reward_members SET member_status = 'gold_group' WHERE member_status = 'gold';
      UPDATE reward_members SET member_status = 'bronze_group' WHERE member_status = 'bronze';
      UPDATE reward_members SET member_status = 'platinum_group' WHERE member_status = 'platinum';
      UPDATE reward_members SET member_status = 'silver_group' WHERE member_status = 'silver';
      COMMIT;

In general, however, make your queries difficult for the server and easy for you, because _you_ make a ton more mistakes than the server ever will. Let the query planner and optimizer do the work. If performance becomes a problem on this query, you can fix it later when you can focus on just that one issue and understand the specific problem much better.

> You can imagine how many round trips this would take to the server if > multiple individual UPDATE statements had been run.

If you're not returning data and you reuse the connection like you're supposed to, "round trips" cost is essentially nothing. What's expensive here is that the database server has to scan the index or row data on member_status. However, if the table is not billions of rows, it can probably fit that index (or even the row data for small tables) in memory and will cache hit on everything.

However, the list of single UPDATE statement _can_ perform much better than a monolithic statement. If you're only updating a portion of the table, or if the number of rows that you'll actually be updating is comparatively small, then the list of single UPDATE statements can perform _much_ better. It all depends on exactly what you're doing with the table.

<comment><USER3> This comment is really interesting to me as I'm working on getting essentially this functionality added to Django[1].

The case statement is slightly different, more like this (usually with a couple of hundred ID's):

        UPDATE TABLE place
        SET rating = (
           CASE WHEN id = 1 THEN 25
           CASE WHEN id = 2 THEN 94
           CASE WHEN id = 3 THEN 16
        )
        WHERE id IN (1, 2, 3)

Members of the Django community, myself included, have seem huge performance benefits using this technique. I had an update loop go from taking 90 seconds to 3.

As a seasoned DBA you see any huge downsides with this technique? I agree that if you're updating the whole table using a CASE statement is not a great idea but if you want to update 1000 rows with differing values and you have to issue 1000 individual queries then this can take some time (including whatever overhead Django has).

1\. [https://github.com/django/django/pull/9606](https://github.com/django/django/pull/9606)

<comment><USER4> > (usually with a couple of hundred ID's)

> I had an update loop go from taking 90 seconds to 3.

How is the performance with prepared statements? It seems like repeatedly executing the same statement with different values is what prepared statements are made for.

<comment><USER5> The ORM likely does use prepared statements, it's that most ORMs by default makes 100 round-trip IO operations (one for each update). The code would need to be rewritten without the ORM to send all the updates as one database call. The query isn't expensive to the database, but to the application itself just the IO of the database call adds up quickly.

<comment><USER3> Unfortunately Django does not use prepared statements. There are some big challenges to work around before support can be added. In any case I'd be very, very surprised if a significant portion of the 87 seconds using a single statement saved was saved also saved by using a prepared statement.

<comment><USER5> I don't think using a prepared statement 100 times will have anywhere close to the same performance improvement as sending one concatenated bulk update or one update set case.

<comment><USER4> No reason why prepared statements and single-call batched-statements can't both be used together. Of course, if one method (batching statements) works well enough, there's no need for another (prepared statements) too.

<comment><USER5> In every ORM I've ever used, everything is a prepared statement by default, so I've only been comparing 100 separate database call updates vs 100 updates concatenated as a single database call and 100 updates as a single update case when, where all three were already implied prepared statements.

</comment></comment></comment></comment></comment></comment></comment></comment><comment><USER6> These are great. I feel like no matter how many PG tips & tricks I learn, there's always something new out there.

I recently started learning PostgreSQL after ~2 yrs of relying on BaaS etc. (mostly of the NoSQL variety).

I have to say: I regret not learning it earlier. Stuff like constraints, triggers, views, etc., are game-changers, but even just being able to write queries instead of navigating a proprietary GUI was worth the few weeks it took to learn.

It was also a boon for data analysis work. Whereas before I'd take a few hours cleaning some data with JavaScript or Python, now I just write a SQL query or two. It's faster, it feels more powerful, and it's _substantially_ less fragile than one-off data cleaning scripts.

Anyway: for those that started out like I did, afraid of SQL, dive on in.

<comment><USER7> How did you learn? Old-fashioned trial and error + googling?

<comment><USER8> The PG docs are surprisingly good. Good enough to learn from. I remember learning my first SQL back in like 1999 or 2000 by reading the PG docs in the back of my parents minivan. Good times!

<comment><USER9> I don't mean to knock the pg docs but I honestly come away reading them with the feeling "what did I just read?". They seem dense and dry. So personally I appreciate the articles like this to help me really learn. I will skip over official documentation and go to this sort of content.

<comment><USER10> > They seem dense and dry.

I consider that a feature. I loathe wasting my time by having to dig through layers of prose to get some fact.

But they are probably not suitable as a tutorial, they only make sense when you already know relational database basics and need info on pg-specifics.

<comment><USER9> It's a personal preference I guess. I'd rather hit up stack overflow and find a common English answer to a similar problem that usually includes an example. Django suffers from the same thing... excellent docs, that just seem unapproachable day to day.

Basically when I Google something, I'm skipping the first 2-3 official links that in fact contains the info I need, but instead clicking the one that summarized it more plainly

<comment><USER11> If it doesn't actually resonate with you, and you don't come away with the understanding you need, it's most certainly not a 'feature' but a 'bug'. I think some projects see dense/thicks docs that keep a high barrier to entry as a feature itself as well.

If they're not approachable, they're not 'excellent'.

<comment><USER9> I've been a django developer for a decade and keep hearing from others how great their docs are. I barely ever use them. My biggest complaint is they give examples without any context. I can't look up a feature without knowing 12 other things before

</comment></comment></comment></comment></comment></comment></comment></comment><comment><USER12> PostgreSQL like many SQL engines has real cost in doing separate queries, and the query analyser does a lot of work to "understand" what you mean (and may need a lot of guidance in the form of indexes), but in kdb+, a lot of these queries are simple and obvious to a q programmer, and doing it across multiple statements creates opportunities to understand what you're looking at -- and with little-to-no cost.

1.

        fake:2017.02.01+til 28
        t:select sum amount by legit:payment_date.dd from payment
        t:update fake:legit from a where legit in fake.dd
        select from t where amount > 2000

2.

        string[2]," times "," 2 equals",string[2*2]

3.

        t:desc select sum amount from payment by customer_id where payment_date.mm = 4, payment_date.dd within 10 13
        / or obviously clearer if you know the year:
        / t:select ... where payment_date within 2017.04.10 2017.04.13
        d:exec distinct customer_id from t where amount > 30
        select first_name, last_name, email from customer where customer_id in d

only want the top 5?

        d:5#d;

4.

Tables are a data type (unlike SQL) so this is much simpler:

        tbl_1:([] some_day:2018.04.01+til 15; an_amt:2.43+2.266*til 15)
        tbl_2:([] some_day2:2018.05.16+til 16; an_amt2:15.43+1.03*til 16)

5.

No need for a query:

        count film
        count where film.rating="G"

or remembering this is a vector language:

        sum film.rating="G"

count of each rating needs a query though:

        select count i by rating from film

6.

An excellent opportunity to see value sharing syntax between function application and indexing:

        m:`gold`bronze`platinum`silver!`gold_group`bronze_group`platinum_group`silver_group
        m:m!`$string[m:`gold`bronze`platinum`silver],\:"_group"; /shorter

        update member_status:m member_status from `reward_members where member_status in key m

7.

        awards_to_honor:select expense_amt, member_status from reward_members where member_status=`gold_group
        save `:awards_to_honor.csv

<comment><USER13> > a lot of these queries are simple and obvious to a Q programmer

I'm not sure if it was you, but I most definitely saw a couple of posts like this on HN. Each time I had just one wish: for the poster to provide an explanation, preferably from the basics, of what is going on.

As a programmer, due to my hobby, I learned a lot more programming languages than average and am pretty confident in my ability to learn new ones, yet K and Q elude me completely. Every time I get interested in it, I struggle with its complete lack of entry-level documentation. I learned J, and while it's similarly impenetrable at first, there are tons of good documentation on J wiki. With Q I couldn't find anywhere near that amount of explanations.

So, I'm not against pasting Q snippets in comments, but I think they would bring much, much more value if accompanied with a detailed explanation of both syntax, semantics, and library functions. As it stands, even things I thought I know, like that : means assignment, only add to the confusion, because looking at your code I see that apparently it sometimes means something else entirely...

<comment><USER14> I usually recommend Q for Mortals. V[http://code.kx.com/q4m3/](http://code.kx.com/q4m3/)

The thing I love is that the SQL and regular programming syntax can be mixed. For instance, if I wish to apply a lambda function for each group I can do, eg:

select result: {lambda code here...} column by category from table

Since a table is implicitly a list of dictionaries under the hood, you can iterate over a table where each column will be a dictionary. Tables and dictionaries are first class objects in q, so it is a lot easier to reason about certain manipulations as they are essentially the same as if you had used regular code. One issue I've always had with SQL itself is that I learned KSQL first, and the way many things are done in regular sql just seem strange.

</comment></comment></comment><comment><USER15> How does one get this level of SQL proficiency? I am not sure how to go beyond my current level of understanding, and these queries don't make much sense to me. I don't often do more than some selects and maybe an inner join occasionally, so far.

<comment><USER16> (self plug) I made [https://pgexercises.com/](https://pgexercises.com/) a while back to help people learn SQL in a learn-by-doing exercise format. You can run the queries in the browser, so it's easy to just to an exercise when you have a spare few minutes.

<comment><USER17> I came across this when it was posted to HN a year or two ago and ended up finishing the whole thing. Thank you for making it.

<comment><USER16> Pleasure - glad you found it useful :-)

</comment></comment></comment></comment><comment><USER6> minor style thought: I think it'd be easier to scroll thru an article like this (ie, a list of things) if the item headers were more distinct from the body. e.g., a heavier weight, or maybe with more vertical margin.

<comment><USER18> Indenting the SQL wouldn't hurt either.

<comment><USER19> You should view the article on mobile then, where all the SQL is indented... and in a font 2x the size of the rest of the article, and you can only see 25% of a line.

</comment></comment></comment><comment><USER20> You dont need include aggregate functions in your select clause to use them in having and order by.

I suppose I may be glossing over another point, but for the subquery example I would've just done:

SELECT first_name, last_name, email FROM customer WHERE customer_id IN (SELECT DISTINCT customer_id FROM payment WHERE extract(month from payment_date) = 4 AND extract(day from payment_date) BETWEEN 10 AND 13 GROUP BY customer_id HAVING SUM(amount) > 30 ORDER BY SUM(amount) DESC LIMIT 5);

</comment><comment><USER21> can anyone recommend a really good postgres GUI client? ive not found one yet for OSX, which is almost baffling

<comment><USER22> Other people have given actual answers, so I'll go ahead and give the non- answer of... use psql instead!

Like Dimitri Fontaine says early in the Mastering PostgreSQL in Application Development book mentioned elsewhere in this thread, psql is really powerful. From the \d meta commands to inspect anything and everything in the database, to the variable substitution, nothing beats editing sql in your preferred editor and hitting \i my_query.sql in psql to run it. You can also nest additional \i my_other_query.sql commands inside the files you run with \i, which I've found really useful for repeatedly dropping / installing test tables / views, or setting up test data, before running the query I'm actually interested in. Take the time to customize it by adding a few lines to your .psqlrc file, like \x auto, and \timing and it becomes very usable very quickly.

I used psql for a number of years, then joined a new company where DataGrip was the norm. I gave DataGrip an honest try to see what I might be missing from a GUI SQL client. After a year of using it exclusively, I slowly found myself migrating back to psql and can honestly say I don't miss anything.

But it's also possible I just haven't tried the right GUI client yet. Anyway, I hope you find the PostgreSQL client that works for you!

<comment><USER23> yes but pgcli, [https://www.pgcli.com/](https://www.pgcli.com/)

<comment><USER24> Nice. That tui looks similar to the gcloud alpha interactive cli.</comment></comment></comment></comment>


Mongrel2 Is "Self-Hosting" - <AUTHOR> http://sheddingbikes.com/posts/1276761301.html <comment><USER2> I honestly don't understand why this is called a "web server", and not a "reverse proxy", which is what it appears to be.

I also don't understand what "self-hosting" means for a reverse proxy written in C. It appears to mean "it compiles and runs", which would be a curious use of the word "self-hosting".

The section "Let this sink in for a moment" appears to extoll the following revolutionary notion: when you contact backends through TCP or a messaging library with bindings for many languages, these backends can be written in many languages, and the proxy won't care. To that amazing achievement I would add the following little-known astounding fact: when you visit a web site with your browser, the web server answering the request could be written in any programming language with decent networking libraries, and the browser won't care. The browser "loves all languages equally!". I believe this to be an early forerunner of this amazing language-agnostic technique that mongrel2 will now fully popularize to the programming masses.

<comment><USER3> Well, this is only the beginning. Right now it proxies, and that was one week or so of work. Next it will really pick up web server features: routing, configuration, serving files, etc.

That's why "Self-Hosting" was in quotes. It's self-hosting in that I can serve the chat demo up and that proves out the design. That was my goal for this week.

Now, yes, your web server can take one HTTP request and hand it to one backend. Applause all around, it is "language agnostic". Oh, well after you write an HTTP server in every language. Oh, and for only one request. Oh, and to only one backend. Oh, and the response can go to only one frontend server. Oh, and except that every web server thinks everything is a "file". Oh, and then there's that nasty config you dare not change. Oh, and when you want to add another 100 backends you gotta change every frontend to be aware of them.

And so on. The revolutionary part is with Mongrel2 I'm trying to break the 1:1 mapping of REQUEST:RESPONSE so that you can have N:N mapping easily, and that backends can be simple 0mq handlers of JSON and in any language. You can have N requests map to arbitrarily any N backends and they can respond to any N frontends asynchronously.

That's how the chat demo works right now. I get a request, and then the _backend_ replies to the front end to deliver messages to all connected browsers. I could even start up 10 backends without changing one thing in the front end. Try that with current web servers without tons of hacks.

Another way to put this, and much more simply, is that right now web servers need to know every little thing about your backend architecture, and they force you to cram it into the concept of "files at URLs". Mongrel2 will not care what your backend is as long as it responds, and it won't constrain to everything being a cohesive file or even HTTP.

</comment></comment><comment><USER4> > It took me about 1 week to get a first functioning version up

That plus the list of shipped apps in the sidebar is incredibly impressive. Zed should write a book on GTD.

<comment><USER5> Seriously. Zed produces a shocking amount of content and software. On top of all the software he writes, he's got multiple blogs that get updated frequently.

Clearly Zed Shaw has discovered self-replication and is using it to his advantage.

<comment><USER3> I do "Time Opportunism" rather than "Time Management". It's a subtle difference, but works incredibly well when you're in a creative+technical discipline like coding, writing, or music.

<comment><USER6> I can guess the difference from the name, but do you care to shed a little more light on your method?

<comment><USER3> Pretty simple really. Instead of trying to control how I spend your time, I try to take advantage of whatever time I have to do what I'm feeling like doing. A key part of this is reducing the amount of bullshit and setup time necessary to do the things I want, and combining activities.

For example, I try to practice guitar 4 hours a day. I also like watching TV. So, I have a little practice amp in my living room that's always plugged in and has a cable so I can just grab a guitar, and noodle while I watch TV. That alone gives me about 2 hours of practicing mindless stuff.

<comment><USER7> In other words, you pretty much do whatever the heck you want, and spend a bit of time optimizing your environment so it's easier to do it?

</comment></comment></comment></comment></comment></comment><comment><USER8> I'm sure I'm missing something, because Zed is smarter than me. Why is this much better than just running each of those services on different ports? How does having everything behind a single port increase flexibility? It seems like he's serving multiple services over a single port, but I thought the point of ports as a software construct were to advertise different services?

<comment><USER9> In general yes, but as more and more technology gets added to the stack, it becomes increasingly difficult to keep everything running on port 80, which is the only port your users should have to hit on a web request. Take web sockets for instance, I have to run that on an off port because I can't run it through nginx yet.

<comment><USER3> That's very true. There's only so far a parser can go at keeping the protocols straight. Thankfully most protocols are designed to be really different so it's easy to do this right now. If I ran into a protocol that didn't work in this way then I'd have that on a separate port.

</comment></comment></comment><comment><USER10> _has a very good chance of changing how we architect and deploy web applications_

I'd be curious to see a quick HN brainstorm of some cool apps that one might be _more likely to think of_ after thinking along the lines of a mongrel2 deployment.

Please reply to this thread.

<comment><USER11> Most things running on Juggernaut/WebSockets/Flashsockets.

So: real-time chat, real-time games, constant-update documents and collaboration. More, I'm sure, but that's what immediately goes through my mind.

</comment></comment><comment><USER12> Node.js should have the potential to eat the same lunch as Mongrel2.

Now that pre-forking is possible, node can do 6-10k http requests / sec per CPU core. That leaves plenty of room for dispatching requests to any backends. And you get full flexibility of scripting everything in JS.

</comment><comment><USER13> I like the idea of a language agnostic application server, but I'm not sold on this design yet.

Your language still must efficiently implement some protocol to talk to Mongrel2, whether that's HTTP, 0mq, or some custom binary protocol, right?

I'd like a simple, efficient, scalable HTTP server written in C (or C++ I suppose) that I can write multiple language bindings for. Is this feasible? Is there anything like that out there?

<comment><USER14> Hasn't Apache proved itself to be able to scale to large workloads when configured well? Doesn't it have modules to support many different languages? It's it nice and fast and written in C or C++?

I guess the problem is that Apache does everything, and the price for that is that it isn't very streamlined.

I may be totally off base because I really don't know that much about non- Apache web servers. Please explain how these new generalized web servers like Mongrel2 would provide a significant advantage over existing web servers like Apache.

<comment><USER13> Yeah, Apache is too heavyweight. I want the server embedded in a language- specific module, not the other way around (an Apache module for the specific language). Something like Mongrel or Unicorn, but written entirely in C, except for language-specific bindings.

I should be able to just execute "server.run(application, port)" or whatever, not have to dive into Apache configuration files. Even with Mongrel2 you need to start multiple processes to get anything working.

</comment></comment></comment><comment><USER15> How is this different than using Layer 4 routing/load-balancing? If you are already scaling to multiple backends then you're probably likely to have access to more than 1 or 2 public facing IPs if you have to ensure everything inbound is on port 80. Just use sub-domains with different DNS A records. You listen on port 80 and then route to your backend application farm. The load balancers already have various means to monitor health on the backend and you can scale to 100Gbs speed already if you have the budget.

Check out LVS if you want open-source. HAProxy can handle this in a limited fashion. Then if you have gone big already then you can probably afford a Brocade ServerIron, Citrix Netscaler or F5 Big-IP.

Or am I missing something here?

<comment><USER3> That stuff is 1:1. I'm shooting for N:N. For example, that chat demo is taking an individual request from a browser, passing it to a backend, and then that _backend_ can reply to N number of other browsers on the Mongrel2 server. All async, and would even work with HTTP.

That's damn near impossible with all of the tech you listed.

<comment><USER15> Not quite. I wasn't talking about how the backend communicates. I'm a big fan of zeromq too but there are many types of messaging and it is a must once you start adding more than a few servers. As I see others have mentioned, you're going to have problems with parsing speed at some point. What happens when you need to scale out to handle all the requests on the front end?

How is HA going to be handled? WIll it be easy enough to have an Active/Active of the mongrel server? How do you get away from a single point of failure?

<comment><USER3> First off, speed is not scalability. I think we need to start talking about "scalability" in terms of the "speed" / "cost". I can get billions of req/sec if I have billions of dollars. What scalability should be is getting as much as you can performance/stability wise with the least amount of money.

With that being said, the plan is that since all backends and frontends can talk using arbitrary types of 0MQ sockets, and 0MQ provides for any kind of network layout, you can make it as "no single point of failure" as you have money to burn on. In my tests so far it's incredibly trivial to have 10 mongrel2 servers submitting requests using a subscribed UUID, and then have 20 backends servicing those requests and replying as needed. Since both the frontends and backends are just using basic messaging with subscribed queues it's fairly easy to get them to talk without any one of them being the point of failure.

Of course, with this comes a configuration penalty which I have to figure out. Either the backends then have to know where all the frontends are (probably easiest) or the frontends have to know about backends. I still haven't got that worked out, but again, it's fairly trivial to create a "registration" service where newly minted backends/frontends announce themselves.

Finally, all of these things have been solved no problem. The easiest answer is I'll just figure out how other people have done it and copy them. It's not like this is new territory or anything. The question itself is kind of stupid because you're saying, for some reason, 0mq precludes my ability to use any existing best practice architecture, when really they're orthogonal _and_ I'm not just using 0mq.

tl;dr: The way everyone fucking does it.

</comment></comment></comment></comment><comment><USER16> haproxy can kind-of do this as well: "support for inspecting HTTP contents in TCP frontends and switching to HTTP backends (allowing HTTP+SSL to coexist on the same port)."

It should be possible (and not too difficult) to support non-HTTP protocols switching on the same front end port.

</comment><comment><USER17> Fuck it, I'd fund that.

</comment><comment><USER18> Wow! Zed invented the HTTP proxy!

<comment><USER3> No! I invented trolling!

</comment></comment><comment><USER19> Aren't there security issues with running so much on a single port?</comment>


37 Signals Gets VC Boost... Again - <AUTHOR> http://ontechies.com/2011/04/01/37-signals-gets-vc-boost-again/

<comment> fm-admin This has got to be a joke. There should be an April 1 Firefox plugin or something.

@DHH was just interviewed on Mixergy saying they wouldn't take any VC and, if they were to do it again, they'd even have turned down the Bezos investment.

Here's the interview: (runs over an hour) [http://mixergy.com/david- heinemeier-hansson-37signals-interv...](http://mixergy.com/david-heinemeier- hansson-37signals-intervie/)

<comment><AUTHOR> <http://twitter.com/#!/jasonfried/status/53889178907312128>

</comment></comment><comment><USER2> In case it is not obvious, this is a joke.</comment>


Apple will no longer report iPhone numbers - <AUTHOR> https://www.businessinsider.com/apple-will-no-longer-report-iphone-sales-unit-numbers-2018-11 <comment><USER2> How about making the iPhone better. Has anyone noticed that Safari has become the worst browser around? How could this happen? Apple should throw a hundred developers more on the development of Safari, because the Web will not go away and websites will get more complex. Did you check SVG performance on an Apple? That will make you understand why you need such a fast machine. Man, Apple, get the basic stuff right and you can report sales figures again.

</comment><comment><USER3> Misleading title - I think they are not going to report unit sales by segment but will still report $ sales by segment</comment>


Ask HN: What is a good tech stack for a startup in 2020? - <AUTHOR> "It depends.", you are correct. But, what is a >probable< good overall stack that you would use and why?<p>Talking about: SaaS, Web. <comment><USER2> Frontend should definitely be something along the lines of Typescript and React. Typescript's typing support is a good investment for long term UI dev productivity as the project scales.

Native desktop client could utilize the same stack via Electron.

Backend could start with Python using a popular all-in-one framework like Django to begin with, and scale towards micro-service architecture over time as components grow in complexity.

Heroku is a good all-in-one infrastructure service that takes care of dev-ops for the first year.

</comment><comment><USER3> This is probably going to be unpopular, but whichever stack helps you ship fastest. If you're deploying microservices as a brand-new startup, you're absolutely doing it wrong.

Like others have mentioned, React+TS on the frontend is a great start. On the backend it depends on how technical your team is but Laravel/PHP or Node+TS is easy.

The best stack is the one you can actually ship fast. If your v1 isn't a messy disaster, then you're moving way too slowly.

<comment><AUTHOR> Thanks!

</comment></comment><comment><USER4> Frontend: Typescript/React. Epic CSS and all sorts of beautiful pages and UI parts TailwindUI.com.

Backend: Golang (Go) and a good framework like Gorilla.

</comment><comment><USER5> Clojure + Datomic & ClojureScript + DataScript</comment>


Show HN: Crema.co – Your coffee (subscription) experience, reinvented - <AUTHOR> https://crema.co/?utm_source=hackernews&utm_campaign=launch <comment><AUTHOR> Crema.co lets you to curate your own coffee subscription using the Brewlist, which works like a Netflix queue for coffee:

1\. Add several coffees to your Brewlist 2\. Set a delivery frequency 3\. Get the next coffee on your Brewlist each shipment

Our play is a little different than the usual coffee subscription: Our customers have more control over which coffees they get and how often it is shipped. Every coffee is roasted to order, the shipping is free and we share a lot of information about the coffee. Learn where your coffee was grown, who the farmer is and who the roaster is.

Crema.co offers single-origin coffees from some of the best micro-roasters across the USA.</comment>


Claims by Joy Reid's Cybersecurity Expert Fall Apart - <AUTHOR> https://www.thedailybeast.com/claims-by-joy-reids-cybersecurity-expert-fall-apart/?via=twitter_page <comment><USER2> The arguments fell apart the minute independent archiving systems (other than archive.org) also had the same blog posts. The narrative they have been going with doesn't fit. They can't use the excuse they were hacked at the time the posts were made either because she was actively using the blog and for her not to notice new entries like those is absurd.

They bluffed and got called on it. Instead of admitting to it like before and hoping for forgiveness they double down on stupid hoping it doesn't get picked up by the rest of the media.</comment>


Ducksboard is joining New Relic - <AUTHOR> https://ducksboard.com/new-relic-acquisition/ <comment><USER2> Obligatory Show HN where we first showed Ducksboard to the world (1301 days ago): [https://news.ycombinator.com/item?id=2332464](https://news.ycombinator.com/item?id=2332464)

Thanks for all the feedback and interest we got from the community through all those years and just because we now work at New Relic doesn't mean we'll stop procrastinating on HN!

<comment><USER3> congrats, will you still be working from Spain or do you have to relocate?

<comment><USER2> Thanks!

We're staying in Spain and there are plans to further grow the Barcelona office.

</comment></comment></comment><comment><USER4> New Relic... isn't that the T-Shirt company that is spamming my Twitter feed?

<comment><USER5> When I saw the name I immediately thought "that's a clothing company right?"

Never used their product, but I see ads for their shirts all the time.

<comment> vhost- Dude, I work 2 blocks from their location in Portland. I can't go 10 feet without seeing their t-shirts or hoodies.

<comment><USER6> Up until a couple months ago, I used to work a couple blocks away. I remember the packs of them roaming the streets.

</comment></comment></comment></comment><comment><USER7> Congrats guys! Great to see a company from Barcelona getting this success. Inspiration for all Europe.

</comment><comment><USER8> I was a duckboards customer and a newrelic customer so this is pretty interesting. Congrats to both sides on this acquisition. I hope this breaths new life into ducksboard as it seems they have stagnated quite a bit.

</comment><comment><USER9> Congrats to the Founders! Though I wonder why New Relic went with Ducksboard rather than other larger competitors like Gecko or Cyfe.

</comment><comment><USER10> Congrats! Just wanted to take the chance to say 'thank you' for gridster!

</comment><comment><USER11> Congrats to the ducks team!! They did an amazing job

</comment><comment><USER12> What it's New Relic???

<comment><USER13> I use New Relic. They provide, IMHO, fantastic realtime server monitoring functions. You can tell if the hypervisor is stealing from your allocation, how many resources you are using, and other useful information. All of this is displayed on nice looking graphs and such.

They also give you downtime notifications if your server goes offline for more than a few minutes. Not only is the service free, but they give you a free T-shirt.

They have application monitoring tools as well, which they are monetizing. I'm very happy with the product.

What's Ducksboard?

<comment><USER14> What I don't like about New Relic is their pricing model. I don't like to be paying for each appserver connected.

We are constantly adding and removing servers based on our traffic, and with something like New Relic we need to renegotiate or change contract if we suddenly needs a lot of servers. Pay by metric, pay by request etc. is fairer in my eyes. If I have 10 servers connnected and send 1 request-per-minute I still pay for having 10 servers connected.

If they process 1 request from me it shouldn't matter whether or not I have 1 or 10 servers connected, I should only pay for what they process.

The reason I am not using NewRelic personally is that my infrastructure is 5 linodes, which I pay $20 for each server. And with NewRelic Pro I have to pay $149 per host. I have seen people doing tricks like only enabling NewRelic for certain hosts just to get around their pricing model.

I really like New Relic, and its very pleasant to use their service, they give good insight about your application, I just wish I could afford their service.

<comment><USER15> I agree, New Relic's pricing model is almost too "enterprise". Per host pricing seems high, and difficult to scale. It's too bad, because I love everything else they offer. I'm even considering the new Insights service. I think they need to introduce a mid-tier pricing level between Free and Pro.

They've got a good foothold in the market as a all-in-one solution. I've attempted to find a drop-in replacement, without much luck. It's difficult to find a one-for-one service, but here's some similar services with entry-level pricing:

DataDog ([https://www.datadoghq.com/pricing/](https://www.datadoghq.com/pricing/)): $15/host/month up to 100 hosts.

Scout ([https://scoutapp.com/subscriptions](https://scoutapp.com/subscriptions)): $10/host/month

CopperEgg ([http://copperegg.com/pricing/](http://copperegg.com/pricing/)): A la carte depending on service

Stackify ([http://www.stackify.com/pricing/](http://www.stackify.com/pricing/)): $15/host/month

The biggest feature that I need is application level monitoring for PHP. There's plenty of great server monitoring tools, but not many services that track application performance like New Relic does.

I know there's plenty of ways to replicate New Relic, but who has the time?

Of course, I could be completely wrong, and missing a great alternative service.

<comment><USER16> > Per host pricing seems high, and difficult to scale.

This is an understatement. $149/month/host is crazy if you're using anything other than the largest AWS instances, for example - a c3.large is $16.11/month with a reservation.

<comment><USER17> But New Relic isn't necessarily designed to be a tool to save you hosting $ (although I suppose it could). What about as a tool to save engineering hours, and increase conversion rates by reducing error rates and improving performance? Maybe the "worth it" changes then -- especially when you consider that we have a Lite product that's absolutely free for unlimited apps, servers, and request volume -- just limited to 24 hour data retention and missing some of our more advanced/in-depth features.

I work for New Relic, obviously :)

<comment><USER16> > What about as a tool to save engineering hours, and increase conversion > rates by reducing error rates and improving performance?

The problem I have with that argument is that the number of hours New Relic saves me isn't really related to the number of instances I'm running. If I've got 10 AWS medium instances and I swap them out for 30 AWS micro instances, my NR cost just tripled but its utility to me likely didn't.

<comment><USER18> You just need to talk your account rep (or sales if you don't have one). You will definitely not pay this price. I work for New Relic, so if you need help, let me know.

<comment><USER16> I really don't like playing "what's the _real_ price" games.

<comment><USER18> I hear you. It's just a matter of simplicity. We can't have every single environment configuration on the site. So, we have a few list prices with links to contact us if your model doesn't fit. I hope that helps. If you have other questions, let me know.

</comment></comment></comment></comment></comment></comment></comment></comment></comment></comment><comment><USER19> Well, just today I was asked can we do something about our New Relic bill. I mean, come one, $160/server is too much and the annual contract keeps you locked in. We should build an open-source APM and press those guys to stop ganging up togehter with AppDynamics, AppNeta, and the likes and keep the price high.

<comment><USER19> I'm sure I got downvoted from one of the APM providers - a sane developer without vested interest will never do that. So, thank you for showing your true colors, vendors!

<comment><USER20> So, I didn't downvote you, and I work at AppNeta. In fact, I spent a lot of time arguing for us to switch from a per-request pricing model to a per-host model. Reasons we did it:

1) Per-request is unpredictable. Paying 2x because you got a traffic spike and had to auto-scale sucks. Paying 10x because you got a traffic spike and handled it without autoscaling sucks more. Getting capped at day 20 in the month because we didn't want variable pricing sucks the most.

2) Estimating cost is nigh-on impossible. If we charge per metric, quick, what will it cost per month?

3) The price we picked per host is, to some extent, based on the amount of data we collect and store. We store every traced request for 90 days, and do analysis on all of that as it comes it. The AWS bill to pay for all that analysis and storage isn't trivial.

The dinosaurs of the early 2000s got around this by saying "just pay for the license, and store it yourself!" And you ended up with customers that had 2 hours of data retention, because storing it all was expensive.

I guess the point I'm trying to make is, we're in a different league of data collection than something like Pingdom. There are serious costs associated with all that -- we're not colluding to screw you, we promise :)

Edit: Check out Twitter Zipkin and Etsy CrossStitch if you want open-source. The basic collection tech exists, but it's a pain to run yourself. At least, that's what we hear from customers.

<comment><USER19> Per-host is also not well-suited for elastic computing. Pricing should be billed for host-hours instead, if you ask me. I'm familiar with zipkin, but it's an overkill for most projects; Etsy CrossStitch - although I follow Etsy's projects, I don't think I've seen it. Anyway, I think I've exchanges comments with you before in here, but the issue is that you guys have some large enterprise clients, and usually with companies like yours, pricing totally gets shifted towards that model. It's really too expensive to pay more for monitoring (although I greatly value the data), when it exceeds the cost of the server itself. At least, business people can hardly justify something with clear costs like hardware (cloud or not) to something without 100% clear benefit to them (as they don't use it; it's for the developers, who's job should be to write code that just works and doesn't require all these expensive babysitting tools, if you see my point). This is not to attack you or anything, but my experiences across multiple organizations. Worst case (at least with your competitor New Relic) is that you pay for internal dev servers as well. Come on, give me a break - how can you compare live with dev servers, really? This is the abuse that I'm talking about. Maybe it's a different situation with you, I don't know, but it's really unfair and a frustration for us.</comment></comment></comment></comment>


Ask HN: Tell me realistically what will happen after December 15th (FCC)? - <AUTHOR> <comment><USER2> [https://amp.businessinsider.com/net-neutrality-portugal- how-...](https://amp.businessinsider.com/net-neutrality-portugal-how-american- internet-could-look-fcc-2017-11)

</comment><comment><USER3> Um, forgive my ignorance, but... what's the significance of December 15th?

<comment><AUTHOR> FCC ,Net Neutrality?

</comment></comment><comment><USER4> Pretty much the same kinds of things that happened before.

</comment><comment><USER5> December 15th?

<comment><AUTHOR> Sorry, Yes</comment></comment>


RedStar OS Watermarking - <AUTHOR> http://www.insinuator.net/2015/07/redstar-os-watermarking/

<comment><USER2> Seems like an easy way to get your neighbor (and his or her extended family) thrown into a political concentration camp for life. Just copy the watermark from an existing file into a subversive document, put that document on a USB drive and mail the drive to the internal security services.

</comment><comment><USER3> Cue the NSA getting jealous of North Korean domestic surveillance capabilities.

<comment><USER4> That or viewing them as more of a To-do list.

Lets hope no-one shows this to "Call Me Dave" Cameron.

</comment></comment><comment><USER5> I wonder if it makes sense to produce copies of linux that look like RedStar OS without any of the backdoors and things like tor setup for you.</comment>


Yes, Uber Drivers Are Rating You. Welcome to the Future of Reviews - <AUTHOR> https://www.linkedin.com/pulse/article/20141018152152-1665462-yes-uber-drivers-are-rating-you-welcome-to-the-future-of-reviews

<comment><USER2> Well nothing new. Business establishments review customers. Your bank review you, your regular restaurant review you. The only thing is technology lets you aggregate review much better than what was previously possible in both ways.</comment>


Flash: 99% Bad - <AUTHOR> http://www.useit.com/alertbox/20001029.html <comment><USER3> I do a lot of Flash development. I would love to switch to HTML. I can't wait. I will probably be forced to quite soon in order to support mobile devices.

But.

I'm going to miss so very many things:

1\. A decent display architecture. Every display object has its own matrix transform. All of its children exist inside that space. Position your elements exactly how you want them. If you want markup-like UI layout, you can use MXML. Their display system is quite elegant. I will miss it a lot.

2\. A complete development environment. Write code in Flash Builder 4. Generate art assets in Flash CS5. Save. It works. It's fast. All you need is two programs (maybe three if you want Photoshop). This is huge for me. The thought of re-rendering all of my art assets as thousands of flat bitmaps makes me shudder.

3\. Performance. Yeah, yeah, everyone hates Flash because it destroys your battery, but it can actually pull off some very impressive feats. When I switch to HTML, I will have to prune back some of the cooler features I have, simply for performance reasons.

4\. (nearly) Identical performance across browsers and OSes.

5\. A decent language for large-scale development. Actionscript3 is actually a really lovely language. I wish I could write HTML apps in AS3. It has real namespaces. It has real classes and real inheritance. It has static typing (but it's flexible enough that you don't feel trapped into endless boilerplate ala Java). It has a sane definition for the 'this' keyword. Javascript is a lovely language, but it's a nightmare to write a nontrivial app with it.

6\. Display bling. Want a drop shadow around any shape? Done. In HTML, all you get are square drop shadows. Blur filter? Done. Dynamic masking? Done. Efficient alpha transparency for any object? Done. Obviously, if you go crazy with these you quickly eat up all your processing resources, but if used wisely they are very fast and look lovely.

<comment><USER4> I think the point is more that 99% of the time websites shouldn't be doing the things Flash does well.

<comment><USER5> While I agree with you whole-heartedly, I am starting to suspect that ship has sailed.

The only weapon I feel I currently have in that war is iReader or Readability. I have given some consideration to "mining" .swf objects, but it is not currently a big enough pain point to further pursue that effort.

Oh, I take that back: the "mobile" version of many websites is also nice since they are (usually) more content-oriented and less dancing monkeys. I fear that, too, may change but for the time being it works well.

</comment></comment></comment><comment><USER6> I understand why people are still up in arms, because it must be annoying (at the very list) to see eleven years pass without fixing this. However, I find it even more annoying that after eleven years people haven't learned that you can't solve the problem by yelling at people "BAD BOY! FLASH BAD!"

I know really well what the allure of Flash is. I tried my hand at developing casual Web games and that's done in Flash. The following are the reasons, in what I believe is the order of importance:

1) Adoption: When it comes to users, everyone and their grandmother has Flash. Even if they don't, getting it and installing it is usually _really_ easy. When it comes to development, you find that casual Web game portals (such as Kongregate, Newgrounds and Armor Games) are Flash-oriented and you even have sites like Flash Game License and Flash Game Art.

2) Ease of Development: I've seen games that were obviously made by people who have a considerable talent for art and so little talent for coding that they should have a court restraint to keep them away from development tools. Guess what? They work anyway and are popular. Yes, you have to learn ActionScript, but that's pretty much all.

3) Good Free Toolchain: You don't really have to shell out 600 dollars for Flash. You can get your stuff done for free, using FlashDevelop and Flex SDK.

Anyway, my point is that it's widespread, it's easy and it gets shit done. For those who think nagging is the solution, for those who rubbed their hands when Apple said it wasn't going to support Flash, here's the crucial question: can you show people an alternative that satisfies their requirements as well or better?

In this case, Adobe is the metaphorical Microsoft: their stuff is out there and they make it easy for people to use it. As the history has proven, the solution is not to call people sheep because they use Flash; the solution is to provide the metaphorical Mac and metaphorical Firefox and metaphorical Ubuntu -- stuff that's so good, that people will switch in droves without looking back.

<comment><USER7> _3) Good Free Toolchain: You don't really have to shell out 600 dollars for Flash. You can get your stuff done for free, using FlashDevelop and Flex SDK._

Interesting, I always assumed you had to buy the full Flash IDE to do anything. Granted, I never really looked into it at, but I wonder how widely known this is? Am I just ignorant? :)

<comment><USER8> FlashDevelop is a widely known alternative, just that it is available only for Windows and not the MAC.

<comment><USER9> FlashDevelop is the IDE though, the important bit is the Flex SDK which is Java based and runs on virtually anything. Write your code in TextMate or Sublime Text or vi or emacs or whatever and then compile it with the Flex SDK.

FlashDevelop is great, but it isn't an essential piece any more than Eclipse is an essential piece for building Java apps.

</comment></comment></comment></comment><comment><USER10> Many of the comments here are along the lines of "But we can count on Flash to work long into the future" or "The alternatives don't work well yet." Both of which may be true.

But that is very much beside this article's point, which is kind of surprising - it's a very clearly written article.

Web designers mostly _should not be doing_ the things that Flash/HTML5+Canvas make possible. Gratuitous animation and sound, non-standard UI, and the breaking of web fundamentals are not strictly Flash problems, but poor design practices that Flash does (and which HTML5+Canvas probably will eventually) seem to encourage.

Nielsen's point isn't that _Flash_ is bad, per se. The problem is: unless you're producing a piece of pure entertainment (games, Homestar Runner, etc) then deciding to use (or emulate) Flash is, statistically speaking, almost certainly a design mistake. A big one.

</comment><comment><USER11> Look, if you hate Flash because it eats at your CPU, or it broke into your house - be angry.

The author explains that Flash breaks 3 fundamentals:

       * it encourages design abuse
       * it breaks with the Web's fundamental interaction principles
       * it distracts attention from the site's core value.

Guess what else breaks these fundamentals? _Everything_. Not just Silverlight or JavaFX. These technologies have accessibility API. People _just don't implement them_.

Anyone who implements a fancy custom scrollbar, forgets an ALT attribute, or doesn't properly wrap their label tags is breaking these fundamentals all the same.

It's not like I don't agree that Flash could be better, but this argument could be applied to just about any technology at any point in time.

<comment><USER12> Thank you. I keep pointing out that these complaints can be applied to Canvas just as easily. When it takes over, will these people hate Canvas with the same passion?

<comment><USER13> If people create whole websites _within_ Canvas? Then probably.

<comment><USER12> I'm meaning more the annoying banner ads. Most Flash designers do not create entire websites in Flash anymore, that's a special case situation these days.

</comment></comment></comment></comment><comment><USER14> A major one not mentioned - flash hijacks your keyboard input, preventing you from navigating around and out-of on pages which are flash-infected.

<comment><USER14> Now I think about it, the other thing that does this is PDF files. Which are also a gift from Adobe. I loathe Adobe.

<comment><USER15> Not in Safari or Chrome. More a fault of the Acrobat plugin I'd imagine.

<comment><USER16> Safari with the native PDF renderer still steals the two finger swipe that does the "back" function from browser navigation. The must be a "good reason" as this irritant persists into Lion.

</comment></comment></comment></comment><comment><USER17> I saw an interesting stat the other day:

According to this "built with" site, use of SWFObject (which is pretty much what 99% of flash devs use to detect + embed their swfs) is starting to decline among the "top sites":

<http://trends.builtwith.com/javascript/SWFObject>

I'm the original creator of SWFObject, so I've looked at that chart a bit, and I've never seen the usage go down in the few years since that site's been tracking js usage.

<comment><USER18> Does this include SWFObject2? (I think the current version is 2.2)

<comment><USER17> That's a good question. I suspect it does, as v2 has been out a long time.

They may just look at file names, like swfobject.js, or look for "swfobject" in the file path.

</comment></comment></comment><comment><USER19> What I find more interesting is that the people who usually love to hate on flash are the same people who break these rules when building poorly constructed "html5/css3/javascript" (buzzword overload) sites. There aren't a ton of them out there yet, but the number is growing. Nielsen's points are valid, but they aren't all flash-specific; I've seen these same principles violated in supposedly "standards-compliant" sites as well.

I think this bigger problem is a lack of true experience/interaction design knowledge. If you are only focusing on the visual aesthetic, and not spending time on thinking through the total experience, chances are you are going to make most of these same mistakes. The technology you choose is less of an issue, the real problem is how you employ that technology. That said, I always try to avoid flash unless it has a very specific benefit over css/js, thankfully I haven't needed to build something in flash in quite a long time.

<comment><USER20> I also notice that a large number of these complaints apply to mobile apps. For example, the difference in back button use between iOS apps and websites is marked.

<comment><USER19> Yeah, it really comes down to implementation. I especially love the mobile apps that don't let you use your back button past their home page. Once you are there, that's it, you're locked in!

<comment><USER13> Do you mean mobile _web_ apps? Or are you referring to Android apps and the Android hardware back button? Your comment is really baffling.

</comment></comment></comment></comment><comment><USER21> Yes, OK, everyone hates Flash. However, as others have said, Flash won't - <USER2> can't - disappear until Canvas development has the same almost-zero barrier to entry as Flash, and until _every_ potential end user has a modern browser.

Another significant limiting factor is the simple fact that there are still things that you simply cannot accomplish outside of Flash. Specifically, I'm talking about camera and microphone data access, which can't be done via HTML5 without calling a Flash or Java applet.

<comment><USER22> the first implementations of input video and audio will be out soon. the delay was about how to handle security and privacy issues, and how it will be implemented (eg. first it was devices tag):

[http://www.whatwg.org/specs/web-apps/current- work/multipage/...](http://www.whatwg.org/specs/web-apps/current- work/multipage/video-conferencing-and-peer-to-peer-communication.html#video- conferencing-and-peer-to-peer-communication)

</comment></comment><comment><USER23> Wow, I remember reading this article when it came out - ELEVEN YEARS AGO. Now I feel old.

</comment><comment><USER24> I'll bet the Flash you made 10 years ago still works, and I'll bet the JS game you made doesn't.

I'll wager the Flash you make today will still work in 10 years, and I'll wager the HTML5 won't.

<comment><USER25> Just cruising around the websites of local stores in my town, their websites that were made 5-10 years ago still look the same as ever, and for the most part still function the same as ever. (The exceptions being when they relied on third-party includes that have since gone out of business.)

HTML5 is just HTML, and unless that fundamentally changes, it should work "forever." JavaScript too, again, unless you're linking to frameworks hosted by companies that later go out of business. JavaScript usually adds, but rarely takes away.

The look of your HTML site 10 years from now may look more outdated than your Flash site does, but as long as we're all still around, I'd wager that they'd both still work, provided Flash player is still a thing.

<comment><USER26> _HTML5 is just HTML, and unless that fundamentally changes, it should work "forever."_

That is, if you don't use the bunch of temporary CSS properties browser vendors are supporting (-moz-, -khtml-, -ms-, -o-, etc) that people often assume to be "ready" but that will be deprecated in the future.

</comment></comment></comment><comment><USER27> I am just asking a small question: are the complaints here not present with html5 canvas element?

For me blaming a technology, when the issue is people, is not very effective.

<comment><USER28> Yes, this annoys me as well. Don't like splash screens and advertisements in Flash? Well you're definitely gonna hate them in HTML5 because they consume more CPU and will be more difficult to block.

</comment></comment><comment><USER29> Why is this being dug up again? Not that I condone flash.

<comment><AUTHOR> Hoping to get feedback on the current validity of the statements in this article.

<comment><USER28> Well it seems like "Flash" could be replaced with "HTML5" and most of this article would still make sense - many points are arguable whether they apply to either though. Most of these are caused by poor developers rather than the platform itself.

* Gratuitious animation

* Granularity of user control

* Non-standard GUI controls

* Back button

* Moving text is harder to read for users who lack fluency (haha this one made me laugh)

* HTML5 content tends to be created once and then left alone

* HTML5 content is typically superficial

* HTML5 is typically created by outside agents who don't understand the business

</comment></comment></comment><comment><USER30> Eh. Flash is great for games or cartoons or grooveshark-style sites. It's awful for restaurant webpages, but who cares? Also, people who haven't worked with flash are probably unaware of how much better actionscript is than javascript.

</comment><comment><USER31> Why are we even discussing an article from 2000? This is so irrelevant to todays Flash, and todays digital landscape? And what would the web have looked like before jquery, html5 etc came to the fore? We needed Flash. And could YouTube and Google Maps have ever taken off without it? I'm all for the demise of Flash and the rise of open source, but everything has it's place, and it served and still serves brilliantly for sites made by the advertising industry.

<comment><USER32> Google Maps does not require Flash.

I don't have Flash installed at all, and Google Maps works just fine without it.

Youtube also doesn't require Flash to download the videos. I use a number of youtube downloader programs to get the videos, and then use a native video player to watch them. Of course that's not how most people watch youtube videos. But there's really no reason why the service couldn't have been built around an some open downloading/streaming technology instead of Flash.

 _"it served and still serves brilliantly for sites made by the advertising industry."_

Yet another reason to avoid Flash for end users like me, who hate ads and despise the advertising industry.

</comment></comment><comment><USER33> Is it me or did Nielsen add an update on top of the article when he was hired by Macromedia, or something like that?

The way I recall it, it said something along the lines of "OK, Flash is not very good, but now we are working to address the issues mentioned on this article". I checked in archive.org, but there are no copies of the page there.

<comment><USER34> After this article the Nielsen Norman did work with Macromedia on developing Best Practices. <http://www.internetnews.com/dev-news/article.php/1178941>

Jacob Nielsen later added the summary findings: <http://www.useit.com/alertbox/20021125.html>

</comment></comment><comment><USER35> I agree with the article (and always have done), but it's always bothered me that useit.com is a website devoted to usability and it looks like this...

<http://www.useit.com/> <http://www.useit.com/alertbox/>

<comment><USER36> Use It is widely regarded as Spartan and perhaps ugly, but it is eminently _usable_. I bet most readers get in and out with more recall of key appreciated content in less time than the ever-so-popular "5 wordpress plugins to make your site shiny" style of bloggers.

And I bet Jakob N has 1tested this question extensively as well.

Oh and on his home page I stumbled on a link to a page with his own (better) explanation: <http://www.useit.com/about/nographics.html>

<comment><USER35> It's not the lack of graphics that I find unwieldy, it's the fact that the content seems dumped onto the page with only a cursory thought towards hierarchy. I look at it and see an impenetrable wall of content, which I personally find difficult to sift through.

</comment></comment></comment><comment><USER37> Jakob Nielsen understands usability better than most (and I love him for that) but not multimedia: The proof of this not only how well Flash has done during the past ten years but how much HTML 5 looks and acts like Flash to the end user. The flying type has won...

</comment><comment><USER38> I've been a flash/flex guy for a number of years. For however many rough spots it may have the cross platform nature of flash/air is something that shouldn't be ignored.

</comment><comment><USER39> Flash is substantially fixed. If you haven't used Flash lately, I encourage you to read the API docs for Flex and have a play around with the Free compiler. It's become very easy to mix standards-compliant markup and Flash in a manner which degrades gracefully/enhances progressively.

IMO, the problem is developers. Because of Flash's origins as a tool for designers to make animations, most ActionScript is atrociously bad. The lion's share of Flash is created by people who really don't know how to program. When you have a community where knowing what recursion is marks you out as above- average, it's understandable that the core technology gets a bad rep. The problem is self-reinforcing, as good developers want to use the new shiny HTML5 and don't want to tarnish their CV with Flash development.

A huge spectrum of really high-quality web apps are reliant on Flash. Streaming video is the obvious application, but projects like SoundManager2 are still reliant on Flash for audio in HTML5 apps. It's a very nineties word, but Flash is still the bottom line when it comes to multimedia. Products like Google Street View or Turntable.fm just aren't plausible without Flash and won't be for the forseeable future. Given the glacial pace of the W3C on HTML5 and the likely slow uptake of newer browsers, we're stuck with it. I don't see that as a wholly bad thing.

</comment><comment><USER40> It is not Flash's fault (just like wordpress modules poor coding is not PHP's or Wordpress fault). It is how it used.

I am glad in fact flash exists. I actually can install Flash Block kind plugin and 99% of "design mess" disappears.. If there would be no Flash, all these "designers" star put introduction pages with HTML5/Canvas/etc. And this is harder to block. =)

</comment><comment><USER41> The only things I see Flash being useful for these days are video in older browsers and copying text to the clipboard via a button.

Sure, there are Flash games and ads, but I think Unity is a much better game development plugin and many people block Flash ads these days.

</comment><comment><USER42> There are hundred of thousands of Flash games on the web. None of the issues raised by the article apply to them.

Though I hate Flash _websites_ as much as everyone else, the title is misleading and harmful for game developers.

</comment><comment><USER43> You'll eventually regret flash when all those banners will be replaced by their HTML5 equivalent ;-)

</comment><comment><USER44> Flash is great if used well.

Eg: check out www.pinklab.com -- I defy you to replicate this site in html5.

<comment><USER45> I would have appreciated a NSFW warning.

</comment></comment><comment><USER46> AS true now AS it was then.

</comment><comment><USER47> In the 11 years since this article has been published, Flash has changed, HTML has changed, and web developers' philosophies have changed.

I don't like the tone of the article, but I have to hand it to Nielsen for creating something that likely had some impact on the web. In the hall of fame of inflammatory, overly-broad titles, I think it'll be next to Djikstra's "Goto Considered Harmful".

> First, Flash encourages gratuitous animation: Since we can make things move, > why not make things move?

Good taste has prevailed. Once ubiquitous "intro animations" have almost disappeared, as have <marquee> and <blink>. Hype <http://tumultco.com/hype/> and Sencha Animator <http://www.sencha.com/products/animator/> are powerful animation tools that export HTML5/CSS3. We will have to hope HTML5 and Flash designers continue exhibiting restraint with _gratuitous_ animation.

> Second, one of the Web's most powerful features is that it lets users > control their own destiny.

It's hard to address this issue, since I'm not exactly sure what Nielsen is specifically objecting to. I think it might have to do with McLuhan's "Hot" and "cool" media theory where certiain media encourage participation instead of hijacking attention?

> Third, many Flash designers introduce their own nonstandard GUI controls. > How many scrollbar designs do we need?

"Aristo" <http://cappuccino.org/aristo/showcase/> "mocha(ui)" <http://mochaui.org/> "Dijit" <http://dojotoolkit.org/reference- guide/dijit/index.html>

... the list goes on. There's nothing wrong with custom UI, so long as it conforms to users' expectations (a tall order). This issue is still in the hands of developers.

> __Breaks Web Fundamentals __

> The "Back" button does not work.

In the hands of developers. Many ajax-y sites have this problem now (see Twitter). Many libs exist for both JS and Flash devs to fix (or not) this issue.

> Link colors don't work.

a:link {color:#000000;} a:visited {color:#000000;}

> The "Make text bigger/smaller" button does not work.

This is a browser issue. All elements should magnify when a user Zooms In/Out (fixed on some modern browsers).

> Flash reduces accessibility for users with disabilities.

<img src="image.gif" alt="" /> <canvas>...anything...</canvas>

> The "Find in page" feature does not work.

Still true.

> Internationalization and localization is complicated.

Local websites must enlist a Flash professional to translate content.

Nearly all serious Flash projects separate content into XML or JSON files (especially if the website content will need to be translated). Some AJAX- driven sites do this as well.

> Also, text that moves is harder to read for users who lack fluency in the > language.

In the hands of developers.

> __Distracts from a Site's Core Values __

> Frequently updating content (Flash content tends to be created once and then > left alone).

Not true now (or then).

> Providing informative content that answers users' key questions at all depth > levels (Flash content is typically superficial).

This is a great example of why I object to the tone of the article.

> Identifying better ways to support customers by task analyzing their real > problems (Flash is typically created by outside agents who don't understand > the business).

I'm trying to understand the implications of this statement, but I'm baffled. Maybe it made sense in 2001 when HTML sites were sometimes cobbled together by a favorite nephew close to the company. Either way, web development is sufficiently sophisticated/complex enough now to require developers to know what they're doing. This sometimes means hiring an agency/production house.

</comment><comment><USER48> This Article is not like wine, it doesnt get any better eleven years later. Compared with wine this article is plonk.

</comment><comment><USER49> Food: 99% bad</comment>


Web Content Accessibility Guidelines 2.2 – First Public Working Draft 27 Feb '20 - <AUTHOR> https://www.w3.org/TR/2020/WD-WCAG22-20200227/ <comment><USER2> > Minimum area: The focus indication area is greater than or equal to the > longest side of the bounding rectangle of the focused control, times 2 CSS > pixels.

Am I reading this wrong, or does this mean that the visible focus area for a button that's, say, 36x150 pixels would have to be at least 300px wide?

<comment> jake-low I think what this is saying is that the area of the focus indicator needs to be 300 pixels, not that the longest side needs to be 300 pixels. So for your button, using a 150px by 2px underline (e.g. with "border-bottom") would be acceptable since the area of that underline is 300 pixels. But making it only 1px thick wouldn't be okay since then the area would be 150px.

<comment><USER2> AHA, I see, yes. Thanks for that.</comment></comment></comment>