Why don't we have paid versions on the Android market? - <AUTHOR> http://retrodreamer.com/blog/2012/03/why-dont-we-have-paid-versions-on-the-android-market/

<comment><USER2> Yeah, it's nuts that Google leaves it to individual developers to figure this out. Handling stuff like this is exactly what should be part of the service that Google is charging that 30% fee for.

I'm Dutch, and I've asked the Dutch tax service if I'd have to charge VAT if I sold through Android Marketplace to foreigners, to EU members or to Dutchmen. They didn't know. They suspected nobody really knew. They'd ask if there was any policy on that, and maybe initiate policy on it. They'd get back to me, but never did.

If I ever end up selling through the Play Store, I'll just charge some price, and deal with any tax service when they knock on my door. I'll probably tell my own tax service that it's all international sales unless they have more details for me.

<comment><USER3> (Disclaimer: IANAL and this is not advice.)

\- If you're selling to customers within your own country or within the EU, you should charge the same rate of VAT as you would for selling software to people in your home country.

\- If you're selling to customers outside the EU, you don't need to charge Dutch VAT

(I am assuming your business is registered for VAT, either because you wanted it to, or because it had to by virtue of exceeding a turnover threshold.)

If you sell an app for 4.99 to an EU customer, then this implicitly includes 21% VAT. So your sale price is 4.12, plus 0.87 VAT. That's what you would show on your VAT return.

Does Google ask you about your VAT status? Do you pay them 30% of the gross (4.99) either way?

<comment><USER2> > If you're selling to customers within your own country or within the EU, you > should charge the same rate of VAT as you would for selling software to > people in your home country.

The thing is: when I'm selling through an international platform like the Play Store, do I even know where my customers live? Well, maybe I do, but I'd much rather do my business with Google and have them handle the second half of the transaction for me.

I'm registered for VAT simply because I have a business that's not in health care. As far as I know, I have to register for VAT even if I'm below the threshold where I'd have to _pay_ the VAT.

> Does Google ask you about your VAT status? Do you pay them 30% of the gross > (4.99) either way?

No idea, but it's an interesting question. Do I have to pay VAT over their share of my revenue, with it coming out of my share of the revenue? That would be odd. Yet another reason why Google should be handling this.

<comment><USER3> _Do I have to pay VAT over their share of my revenue, with it coming out of my share of the revenue?_

As it turns out, no :)

You should set the VAT rate correctly in the Play/Wallet settings, and Google will only charge you commission on the net price. They will remit the collected VAT to you in its entirety.

</comment></comment></comment></comment><comment><USER4> When an EU resident buys physical goods from a non-EU country the shipment is stopped at customs. The customer must then pay VAT (plus an importation tax) on the value of the goods in order to have the shipment released. There is no requirement that the _seller_ of the goods pay VAT - how could the EU hope to enforce this across hundreds of foreign countries all with different legal system? They simply police their own borders.

What I don't understand is how they apply this to digital goods, where there are no borders to police? How do they even find out that digital goods are being imported? If neither the buyer nor seller pay the VAT, how do they stop the transaction? If the seller is located in Assfuckistan, then surely the transaction takes place in Assfuckistan, and unless Assfuckistan has signed a treaty with the EU to collect VAT on their behalf, why would their authorities interfere?

<comment><USER5> _What I don 't understand is how they apply this to digital goods, where there are no borders to police? How do they even find out that digital goods are being imported?_

Audits of online stores, plus massive penalties (potentially exceeding 100%) on the VAT and other taxes that should have been paid. Tax evasion generally means that the statute of limitations (the period of time for which the tax authority may still go after a taxpayer for back taxes) _never ends_ and they can go after a taxpayer for unpaid taxes from decades prior.

 _If the seller is located in Assfuckistan, then surely the transaction takes place in Assfuckistan, and unless Assfuckistan has signed a treaty with the EU to collect VAT on their behalf, why would their authorities interfere?_

Under international treaties and laws, sales are deemed to occur in the jurisdiction of the _buyer,_ not the seller. However, if the transaction is agreed to/executed in another jurisdiction (i.e., the seller's country or a third country), it could _also_ be subject to tax in that other country.

<comment><USER6> In this case, who is evading customs? The play store or the app developer?

</comment></comment></comment><comment><USER7> It's not really that hard. I only know the situation when selling from Germany, but it should be similar in other countries.

Basically, you don't have to pay taxes in other countries, you only pay taxes in the country your company resides in (of course there are some exceptions, you should get a lawyer etc., but this is what I've heard in a couple of cases).

If you make less then a certain amount, I believe 17500 € / year, you count as a "small entrepreneur" and are not treated like a business, but as a private person. You can sell and buy what you like and don't pay additional sales tax to the state. You implicitly pay 7-19% sales tax when buying goods just like any other customer.

If you are a "real" business, you don't have to pay the sales tax when buying stuff (raw material). In practice, you can deduct it from your taxes. You have to pay sales tax directly to the state for things you create and sell. This is why it's also called value added tax, because its a tax on the value your company added to the "material". In practice, if you are a software company, you'll just have to pay a certain percentage of your income in taxes, it's not really complicated.

The interesting part is when you do business with abroad. It _is_ really complicated to do the customs procedures for all the different countries, but it is much easier when you only sell digital goods, and/or sell directly to customers.

In most cases, you just pay the 19% tax to the German government, and sell your product to the customer, and youre fine. There are ways to avoid the sales tax when selling to other countries, but AFAIK you have to pay some customs fees and it starts getting complicated.

I only know the case when importing things to Germany, in that case someone has to pay an additional import sales tax, besides the customs, but the taxes in the country of origin can usually be waived. In case something goes wrong here, usually the selling company isn't held liable, but the goods are stuck in customs and the customer has to pay the import tax. This is frequently a problem for american companies trying to sell stuff to Germany, e.g. Pebble and Ouya had that problem. It's a nuisance, but the customs agencies are generally very cooperative and will tell you exactly what they want you to pay :-).

<comment><USER8> > _It 's not really that hard. I only know the situation when selling from > Germany, but it should be similar in other countries.

Basically, you don't have to pay taxes in other countries, you only pay taxes in the country your company resides in (of course there are some exceptions, you should get a lawyer etc., but this is what I've heard in a couple of cases)._

This is so anecdotal it's useless. "This is what I've heard" doesn't really cut it. Case in point:

> _If you make less then a certain amount, I believe 17500 € / year, you count > as a "small entrepreneur" and are not treated like a business, but as a > private person. You can sell and buy what you like and don't pay additional > sales tax to the state._

That's maybe true for Germany, but sure as hell is not true in other EU countries (I know, I have business in one).

<comment><USER7> It's not _just_ anecdotal. I did a lot of research on this, talked with the German tax office and (un)employment agency, and read everything I could find from the chamber of commerce, since I'm toying with the idea of setting up a little business. I know a couple of people who have their own business. I have two people in my family in the export business, and I've worked in that area a long time ago as a summer job. So while one can hardly call me an expert, I am pretty familiar with the procedures.

Your very right not to trust random strangers on the internet, but you shouldn't dismiss what people say as anecdotal and useless either. My point was just: Look, an average technical guy with no talent for burocracy can figure out the laws in his country (in this case Germany); and in general while laws are different in other countries, you _can_ probably figure them out there as well.

</comment></comment></comment><comment> k-mcgrady >> "VAT, for example, is used in many European countries, it's included in the displayed purchase price, and it's complicated."

It's not that complicated. It's basically equivalent to the US sales tax except it's shown in the price (consumer doesn't have to calculate it themselves). In the UK I believe you don't need to pay it until you are earning over £69,000 per year.

Overall it seems like the problem here is how the Play Store works. With the Play Store you are collecting direct from the purchaser. With the App Store sales are funnelled through 5 or 6 major regions (Europe, North America etc.) and paid out to developers. I think this solves the issue of working out tax for every country you do sales in.

<comment><USER9> >> It's not that complicated.

Actually, it is complicated. If you are selling a service from the US to European end-users, you owe VAT in each European country you have customers in. You can simplify the process with a special registration with the tax offices in one country (e.g. Germany) and send all the owed taxes there. They will then further distribute it to the other countries. Also note that to do it correctly, you need to charge the right rate in each country. Generally, every EU country has a different tax rate and every few months, it changes somewhere. In order to be able to automate this, the EU offers an API that returns current VAT rates.

To further complicate the issue, there are numerous exceptions. E.g. special rates for food and touristic services, that differ from country to country. Things are simpler when selling to companies, in which case it is the responsibility of the importing buyer to declare VAT correctly. But to do so, you need to ask your users whether they are companies and if yes, they have to provide you with their VAT registration number so you can validate them.

<comment><USER10> > You can simplify the process with a special registration with the tax > offices in one country (e.g. Germany) and send all the owed taxes there. > They will then further distribute it to the other countries. Also note that > to do it correctly, you need to charge the right rate in each country.

If you are selling apps or other download software to end users, I don't believe that the last sentence applies. These are classified as sales of services, not sales of goods, and services (with a bunch of exceptions) are taxed at the rate of the place of the provider.

At least, this is what our UK accountants told us, as a US company with sales in the EU. We are registered in the UK (I'm not sure exactly what kind of entity we have there...a subsidiary, and agent, or something else) and all our EU sales are from our UK entity. The accountants said we should charge UK VAT rate to all customers, and we report and pay to the UK.

Note: I'm not sure exactly what our arrangement is in the UK. It is possible that we actually have a UK subsidiary, and that is the seller for our EU sales. This could mean that we are under different rules than a US company accepting orders from the EU. As always, consult an expert who is familiar with your particular situation before acting.

</comment></comment></comment><comment><USER11> Here's a novel suggestion: Ask the EU. [http://europa.eu/europedirect/index_en.htm](http://europa.eu/europedirect/index_en.htm)

Also the US government might help you: [http://export.gov/europeanunion/marketresearch/sellingusprod...](http://export.gov/europeanunion/marketresearch/sellingusproductsandservicesintheeu/index.asp)

Specific documents: US on VAT in EU: [http://buyusainfo.net/docs/x_7292727.pdf](http://buyusainfo.net/docs/x_7292727.pdf) EU on electronic services VAT: [http://ec.europa.eu/taxation_customs/taxation/vat/traders/e-...](http://ec.europa.eu/taxation_customs/taxation/vat/traders/e-commerce/index_en.htm) EU on VAT: [http://ec.europa.eu/taxation_customs/taxation/vat/traders/va...](http://ec.europa.eu/taxation_customs/taxation/vat/traders/vat_community/index_en.htm)

</comment><comment><USER12> Perhaps worth mentioning that this article is almost two years old, and I believe certain things have changed at google since then.

<comment><USER13> Going by this: [https://support.google.com/googleplay/android- developer/answ...](https://support.google.com/googleplay/android- developer/answer/138000?hl=en&ref_topic=15867)

Even though they've moved off checkout all this does still apply.

It is absolute madness.

</comment></comment><comment><USER14> The EU tax on digital sales really is hard to understand and comply with as a small developer. We're also thinking of blocking EU sales until we are big enough to afford to comply. How are people dealing with this?

<comment><USER2> Just charge whatever you need, and if they come knocking, give them whatever they can prove they deserve. It may knock 20% off your revenue from that market, but it's still better than 0% revenue from that market.

<comment><USER15> I would not recommend that strategy, unless you really understand all possible consequences. The fine may much bigger then you expect and tax cheating may earn you jail time or kill your business for good.

</comment></comment></comment><comment><USER16> To top it all it is frustrating that there is mostly no way to contact Google directly to get an answer or make a feature request like this. If you go to their product support forums, some support people (who are nothing but other actual users) write canned responses which make no sense. Many times they don't understand our issue.

</comment><comment><USER14> The EU VAT rules extend to most digital products and services for all companies anywhere in the world. Yeah.

<comment><USER17> And US income tax laws apply to citizens by birthright who have never resided or worked in the US. Law is weird.

</comment></comment><comment><USER18> Same with iOS

<comment><USER19> Is this true? I've yet to actually sell anything on either platform, but my understanding is that Apple is the seller of apps on the App Store, and makers are simply publishers who effectively get a royalty check. The Google Play store, in contrast, has Google acting as a facilitator but far more falls on the laps of app makers.

Apple makes a 30% cut of your app, but while Google takes a 30% cut apparently they give most if not all of this to...oddly enough...telcos? (This is still incredibly fuzzy and I know of no sources, beyond various Google claims that they get just a small administrative charge) That may explain the service difference.

Recall that there was a bit of a hoopla because Google shares customer data with app makers, because again the sale is between the app maker and the customer (which is something that very few app buyers expect or understand).

[https://support.google.com/googleplay/android- developer/answ...](https://support.google.com/googleplay/android- developer/answer/112622?hl=en) \- "Distribution partners"?</comment></comment>


Clean Up Your Mess – A Guide to Visual Design for Everyone (2011) - <AUTHOR> http://visualmess.com/index.html <comment><USER3> Oh jesus, my site got submitted and is #1 on HN again. It kind of amazes me that a guide that begins with a Thich Nhat Hanh (buddhist monk) quote can bring out such heated debate.

A few things to clarify:

* The before/after flyers were taken from real life. These were printed out and tacked up to community boards and the like.

* One reason why I think the right poster is better is that it looks nicer on the surface and would therefore be more enticing for people to read to find the details. I think the left poster looks like it would be harder to find information. If an ad looks hard to decipher, then people aren't even going to bother. A lot of criticism here has to do with how the phone number doesn't stand out. If you're walking down the street and just see a giant phone number scrawled on a wall, would you call it? No. You need to have a reason to call it. I think that the flyer on the left gives passersby less reason to call.

* That said, I do need better examples, and the site needs to look less ugly. As it happens, my next project after finishing [http://braveclojure.com](http://braveclojure.com) is to revamp this site. If you're interested in hearing about the revamp, please sign up for an email reminder: [http://eepurl.com/biiMZT](http://eepurl.com/biiMZT) . I'm going to add more content on actually implementing this stuff using CSS/SCSS. If you think the Clojure site is OK looking then you'll probably like the new visual mess content.

* For some reason, beginners seem to love this site as it is. Weird!!!

edit: If you have little or no experience trying to do visual design, I hope the site has encouraged you to give it a try, if only so that you can do better than I did :)

edit 2: Back in 2011 I wrote a blog post thanking readers, looks like it's relevant again: [http://www.flyingmachinestudios.com/design/cuym-thank- you/](http://www.flyingmachinestudios.com/design/cuym-thank-you/)

<comment><USER4> It is interesting that the choice of the left image tends to come from people judging "from the gut" and who claim no design expertise, while the case for the right image is mostly argued from first design principles, focusing on structure as a way to minimize the mental cost of reading.

It's possible that the easiest-to-read poster is not necessarily the most effective. Some studies have shown that harder to read text correlates with better retention [1]. Also, there are traffic studies suggesting that narrower streets [2] and traffic intersections with no signaling [3] may be safer. The latter examples might seem unrelated to the discussion, but what all these cases have in common is that more attention, rather than less, is being demanded from the user. It does not seem surprising that an increased level of attention improves outcomes.

I'd be curious to see the results of a rigorous A/B test with the two posters from the article.

[1] [http://www.princeton.edu/main/news/archive/S28/82/93O80/](http://www.princeton.edu/main/news/archive/S28/82/93O80/)

[2] [http://www.citylab.com/design/2014/10/why-12-foot-traffic- la...](http://www.citylab.com/design/2014/10/why-12-foot-traffic-lanes-are- disastrous-for-safety-and-must-be-replaced-now/381117/)

[3] [http://www.citylab.com/commute/2011/09/shared- spaces/116/](http://www.citylab.com/commute/2011/09/shared-spaces/116/)

<comment><USER5> Increased attention only pays off _if the user pays attention_.

</comment></comment></comment><comment><USER6> I'm kinda shocked by how many people are saying "they like the poster on the left". The one on the left is a train wreck.

<comment><USER7> Here's my theory about why the one on the left looks better to some: Given that this is a physical poster, I think we've come to expect a certain crammed format that we've already learnt how to navigate well (think classifieds). So it no longer feels strange or crammed.

Question for those who think the left one is cleaner: what if this was a web page? You need to look at each one zoomed-in one at a time. Would you still consider the left one cleaner?

<comment><USER8> The word you are looking for is CONVENTION. There are conventions we all know on the web - where your navigation goes etc. - there are also conventions in the real world. The thing about conventions is that you haven't got to re- learn the interface, this also applies with a physical poster. But, yes, same as you, it is familiarity with the format that makes the left one 'better'.

</comment></comment></comment><comment><USER9> While there's lots of truth in this article I can't help but notice the page itself has rather bad typography (in particular the headline fonts), the top navigation is a trainwreck (sorry), and what's up with the random red rectangles in the background?

<comment><USER10> Do as they say, not as they do ;)

</comment></comment><comment><USER11> The one on the right has poor spacing. The one on the left is a mess, but at least it's legible and shaped like a good page. The one on the right has too tight of a left margin in the right column.

<comment><USER12> This might be Hacker News distilled into one comment.

</comment></comment><comment><USER13> Having read "Don't make me think" and "The non-designer's design book" I highly recommend them.

The thing that stuck with me the most is from "The non-designer's design book" where Robin Williams -the author- keeps repeating "Don't be a wimp". I think this is the best design advice a beginner could be given, often beginning designers will keep centering alignment or being afraid of color that it makes their work look boring.

Another set of design principles which is somewhat close to what has been discussed through the article and Robin Williams' book is the Gestalt principles.[0] [1]

[0] [http://facweb.cs.depaul.edu/sgrais/gestalt_principles.htm](http://facweb.cs.depaul.edu/sgrais/gestalt_principles.htm)

[1] [http://graphicdesign.spokanefalls.edu/tutorials/process/gest...](http://graphicdesign.spokanefalls.edu/tutorials/process/gestaltprinciples/gestaltprinc.htm)

</comment><comment><USER14> I've been freelancing as an all-purpose web developer/designer for three years now, and to me the main problem isn't the professionals understanding of these should-be-obvious points, it's the clients.

Every site I've built in the past years (20+) where the client wants design mods near the end has, almost always, to do with breaking good design practice and stuffing more and more pointless, hard to read information onto a page.

I try my best to use the paper-as-a-cost analogy...the reason print media got so adept at stuffing more and more on a page was because paper costs money, and therefore it made deep financial sense to force as much money-making content as possible on a printed page.

This idea makes no sense, however, on the web where the cost of making things accessible and easy-to-understand is basically $0.

Most of the time, this argument works, although of course sometimes it just falls on deaf ears where the client is simply too enamored with how their newspaper or the Wall Street Journal online used to do it.

<comment><USER15> Like this?

[http://theoatmeal.com/comics/design_hell](http://theoatmeal.com/comics/design_hell)

<comment><USER14> Hahahha...awesome...exactly!

Except, in my experience, the image at the end should be a picture of the one at the beginning with a FB and Twitter link in it.

<comment><USER15> Was about to post this one, which is what I get as less web centric developer, but the Oatmeal sounded closer to your situation.

[http://projectcartoon.com/cartoon/2](http://projectcartoon.com/cartoon/2)

</comment></comment></comment></comment><comment> grey-area The reason people are arguing interminably about which poster is better, is that _both are almost equally bad_. They are a terrible illustration of the principles the author has read about, and they're not a good model to emulate. The trouble with design is that everyone has an opinion, informed or not, and everyone feels their opinion is equally valid, a priori, because they sense it is very hard to objectively prove anything in a discipline which is all about communication and intention.

With apologies to the author, this page itself is terrible design in almost every way that matters, starting from the top with the horrible typography, reinforced by overly literal illustration which bludgeons the reader over the head with the intended meaning (little bits of mess behind the word mess, a crying baby for 'you feel like a baby', really?) and distracting use of irrelevant graphic devices - huge script font which does not connect with meaning, pink sitting in the wrong place behind heads, another font 'Quicksand' which has the worst kerning I've ever seen, etc, etc. All that is practically shouting 'do not take graphic design advice from this writer' before you even begin reading.

If you want to learn from good design have a look at :

Paul Rand:

[http://www.paul-rand.com/foundation/identity/#.VRcG0JPwYZw](http://www.paul- rand.com/foundation/identity/#.VRcG0JPwYZw)

El Lissitzky or other Constructivists:

[https://www.google.co.uk/search?q=el%20lissitzky%20poster](https://www.google.co.uk/search?q=el%20lissitzky%20poster)

Mies van der Rohe or other Bauhaus designers:

[http://www.knoll.com/product/brno-chair-flat- bar](http://www.knoll.com/product/brno-chair-flat-bar)

Paula Scher:

[http://new.pentagram.com/2009/02/new-work-the-museum-of- mode...](http://new.pentagram.com/2009/02/new-work-the-museum-of-modern/)

Saul Bass

[http://www.saulbassposterarchive.com/](http://www.saulbassposterarchive.com/)

Tufte on Minard and others:

[https://www.edwardtufte.com/tufte/posters](https://www.edwardtufte.com/tufte/posters)

You'll learn more from studying those designs than you would from reading or looking at this.

<comment><USER16> The before-and-after with detailed explanations is a tremendously appealing format for learning about design though. Are there any good guides which take a similar approach?

<comment> grey-area The before of all the designs in my list above was a lack and some requirements - that's how design usually starts, not with a previous design. So I think presenting design as a before/after is actually not productive in most cases - ideally it's the process of reifying an idea, not prettying up some information while not considering the broader picture.

In the case of the example presented, a better design would wipe the slate clean and ask if all that information was really required at all. The flyer needs to get people to the aikido class, so you probably need a couple of things:

Why do I need this?

How do I join?

The medium and context is also v. important - is it on notice boards at a distance (needs impact), in people's hand, via the post, all three? There are many ways to get there, but I'd suggest if you want a satisfactory solution you wouldn't start from here (the examples in the article). This is what is damaging about before/after - it stops you asking the hard questions about what information is required and what the priorities are.

</comment></comment></comment><comment><USER17> Overall, this hit a lot of good points and is a good read. I can't say I had any good takeaways, but I was nodding my head in agreement with many of the authors points.

I am a web developer before I am a web designer, but I've honed my abilities over time with a few simple rules that I'll share for anyone else who struggles:

1\. Care. More often than not, lazy design comes from not caring or even thinking about it. If you don't give a shit, your design will be shit.

2\. Experiment. Try different alignments, ratios, spacings, colors; take things to an extreme and then tune it down till you like it. Try it on your phone. Try it zoomed out. play with it and see how it reacts to what you do.

3\. Iterate. Sometimes you can bang out a design and it's done; but more often than not you'll get better quality by iterating over it a few times.

4\. Embrace fonts. I still struggle with their nuances, but a good typeface can really add a feeling to a design. google fonts is a great resource, and ranks by popularity which is not a bad reference. I know I suck at them, but I know they're important; so i feed off of what i like from other designers uses.

5\. Optimize for readers. If your design has any text element, you should probably optimize for the text first. Everything else is secondary. If you find it hard to read at glance, or lose your place in a paragraph, you probably need to tweak something.

Also +1 for "don't make me think" \- one of the most pivotal books I've ever read that changed how I view and make websites. Would have never expected that from such an otherwise brief and light read; a beautiful exercise of intelligence in countless ways. Even the title is useful to keep in mind. Highly recommend for anyone looking to do better, no matter the skill level.

<comment><USER15> With the exception of 4, those would be good recommendations to apply to your code as well.

</comment></comment><comment><USER18> Did anyone else think the left flyer looked cleaner (although still very muddled)?

<comment><USER19> Neither of the designs are good-looking (but that may be the point). The left design though is objectively inferior:

* The text in the right column is centered, rather than aligned, and is thus ragged on both sides, making it harder to read and sloppy-looking.

* The leading on "beginner class" yeesh.

* The body copy in the left column is set at the same size as the header text in the right column.

* The right column has indistinct headers with inadequate contrast.

* The right column mixes header signifiers, in some cases using all uppercase, in others bold.

* The body copy in the left column uses an oblique sans and the right column uses a similar sans, minimizing contract (notice how the "after" design uses a true italic)

* The "sections" in the right column are set off with pointless thin rules, which is a design annoyance so basic that Tufte yells about it early in (iirc) The Visual Display Of Quantitative Information.

* The right column has no hierarchy, so the contact information is set in exactly the same prominence as the rest of the information, so clumsily that the URL runs into the margin.

I guess I could go on.

This is pretty basic "Non-Designers Design" Robin Williams stuff. I don't see how you can criticize this blog post by suggesting that the "before" design is better. It's not. It's _artificially_ bad: someone took a reasonable design and a list of everything you can do wrong in a page design and built a demo.

I agree with another comment on this thread though about the clip-art; it muddled the point the article was trying to make. They should have worked the same clip art into the "before" picture if they wanted to do that.

<comment><USER20> Everything you listed are good points using theoretical, book knowledge, but isn't the only "objective" way to evaluate the two posters to put them in front of a sample of the target audience and measure their reaction? What you're doing is applying general guidelines as if you can determine the overall quality of a design by running the design through a checklist.

For example, you dock the left for having indistinct headers with inadequate contrast. But that's actually a good thing, since the headers are useless in both posters! But only in the right example are they distracting because they followed the "good design checklist".

<comment><USER19> The headers in the "after" picture aren't useless. They communicate:

* Aikido

* Beginner

* Regular schedule

* Come visit

That seems like a very sane set of goals for a poster about an aikido class.

In the "before" version, the copy about the "mind, body, spirit" connection of Aikido is set in a larger font than the text saying people should come visit!

<comment><USER21> Who, what, where, & when are mandatory items on a checklist for this type of communication. But if the way you point to them draws attention to your finger and away from the vital information itself, you've failed. That's why the headings are useless. You allude to this yourself in your final sentence.

</comment></comment></comment></comment></comment><comment><USER22> I look at information primarily in chunks, i'll scan the chunks(not the text or details) and that determines whether I should read. For some reason it's harder for me to do that with the right. SO the right becomes a mess to me and cognitive effort to read. I do however, have dyslexia if that would make a difference. The left for me was fab!

<comment><USER23> > I look at information primarily in chunks, i'll scan the chunks(not the text > or details) and that determines whether I should read.

I do the same thing. I don't have dyslexia, but that's just how I read these kind of posters. The left is way easier, even though it's apparently a design disaster. The important information kinda 'jumps' out at me, where it doesn't do that on the right, and I don't know if I'd even stop to read that one if I saw it.

I'm not saying the left one is perfect, but with a few changes it could be better than the one on the right. I really don't like the designers in this thread saying why I'm _wrong_ for preferring the left flyer. It's like blaming the user when software is designed poorly.

<comment><USER22> Agree. I initially thought it was brave the designer asking a subjective perspective on work and using it to weigh up what was better. Then I saw I disagreed and instantly thought "Uhhh-ooh". Unfortunately, I didn't pay as much attention to the rest of the article as I perhaps should have. Better is subjective, everyone processes visual data differently. I guess the job of a designer is to best fit people best they can.

</comment></comment></comment><comment><USER24> So far, the conversation today is tracking the conversation the last time this was posted pretty closely: [https://news.ycombinator.com/item?id=2502663](https://news.ycombinator.com/item?id=2502663)

</comment><comment><USER25> Reading through these comments I find it amusing how subjective design still is even if the term "design" suggests an informed, planned, deliberate activity. I think a big part might remain subjective, but there is - <USER2> should be - a growing body of knowledge about what is good or bad in this realm. The [https://userium.com](https://userium.com) checklist is supposed to have the objective part, but even that needs a lot of iteration.

</comment><comment><USER26> Hahaha, I looked at the article first, then came to see the comments after I read that I was wrong about the one on the right. Why are the flyers on top of a black bar? Is that Times New Roman? Are we putting borders around our images again? Why are coffee cup rings such popular logos? And what's with the pink table of contents that won't swipe away? Boy, this developer has a lot to learn about design. Imma go finish that article.

</comment><comment><USER27> A lot of disagreeing comments here hopefully makes it clear that this why there is target audiences and market research for demographics. Different people have conflicting views. So while you can always try for mass appeal there is likely never going to be a 1 size fits all for design.

</comment><comment><USER28> I think the one on the left looks more like images in chain e-mails/newspapers. Those are clearly designed that way to attract a certain demographic.

Some people will definitely find the left one more appealing. That is why it's important to know which demographics you want to target.

</comment><comment><USER10> Coming from a print design background, I've actually had a really hard time developing effective user interfaces because I've been stuck in the "print" mindset.

Left-aligned text certainly looks good on print, but in UI design, it doesn't make sense a lot of the time. Transitioning from skeuomorphic UIs to flat UIs has been especially challenging for me because the paradigms and precedents set by the reference objects and industrial design don't exist.

<comment><USER29> One of the left-overs from print that I often find myself forgetting is that "interaction" is available as a design tool—not everything has to be visible at all times, as long as it's available in an intuitive way when needed.

</comment></comment><comment><USER30> Perhaps the fact that most of the comments here preferring the left one , are from left brain , programmers. I was raised by an art teacher , and in my opinion the one on the right has a better visual design. Although, the left one conveys more information , its to busy, signed the right brained art teacher's kid.

<comment><USER30> ok , my mother the art teacher prefers the one on the LEFT.. Im perplexed .. Im still holding to the one on the right .. visual appeal !

</comment></comment><comment><USER31> If folks want to move from just thinking about aesthetics, into thinking about the ideas behind your design, and how they can help you achieve your strategic goals, I recommend checking out [http://brandist.co/brand- strategy-101/](http://brandist.co/brand-strategy-101/)

</comment><comment><USER32> Uhm, to me the left poster looks "better" in a way that is less visually distracting. My eyes don't find a focus point on the right poster and are scanning all the time - which is rather annoying.

</comment><comment><USER33> I wonder what the problem with visual design is. To make a sufficiently good design, it just needs time to try out things. I think that everyone can get something nice done by experiment and selection.

</comment><comment><USER34> While reading this I was reminded of the worst example I can remember. [http://www.milliondollarhomepage.com/](http://www.milliondollarhomepage.com/)

</comment><comment><USER35> The typography on that page is a mess.

</comment><comment><USER36> I liked the poster on the left

</comment><comment><USER37> Redesigning this poster should become a standard for comparing designers.

</comment><comment><USER38> Both suffers from poor line breaks

* adult class

* no martial arts

* experience necessary

* call to reserve

</comment><comment><USER39> The one on the left is better

<comment><USER15> Funny, that you are being downvoted. This is obviously a very subjective area and some people will find the left better.

I personally find the font easier to read on the left, and the left hand side feels less cluttered, with more space, and no border around the main picture. That's where my eyes are initially drawn to.

Finding information is easier on the right hand side of the right one (to me anyway). But the question was "what looks cleaner?"

<comment><USER40> Usually people are downvoted for only stating their opinion without giving any reasoning, especially if it seems like they're just trying to be controversial for its own sake. Nothing funny to see here, really.

<comment><USER15> See my other down voted comment with reasoning.</comment></comment></comment></comment>


This is what guitar strings sound like on a fretless bass - <AUTHOR> http://www.musicradar.com/news/guitars/this-is-what-guitar-strings-sound-like-on-a-bass-644704 <comment><AUTHOR> In the spirit of hacking and doing things out of the ordinary, I think the result of this one is pretty slick!</comment>


Yahoo Newsroom app - <AUTHOR> http://mashable.com/2016/10/04/yahoo-newsroom-app/#Caf6A9gaRqqq <comment><USER2> This is the last time I go to Mashable! They are an SEO farm, not a news site! They never publish an outbound link being so afraid not to lose any SEO juice, but by doing so, they actually make people stay away from them! So, here are the app links for your convenience:

Google Play: [https://play.google.com/store/apps/details?id=com.yahoo.mobi...](https://play.google.com/store/apps/details?id=com.yahoo.mobile.client.android.yahoo)

App Store: [https://itunes.apple.com/us/app/yahoo-newsroom-news- finance/...](https://itunes.apple.com/us/app/yahoo-newsroom-news- finance/id304158842)</comment>


Facebook Finally Admits That Its New Spy Equipment Can Spy on You - <AUTHOR> https://gizmodo.com/facebook-finally-admits-that-its-new-spy-equipment-can-1829793554/amp <comment><USER2> One day my neighbor was trimming his tree and the topic of "tree trimmers" came up in conversation much more frequently than normal. Later that day I'm seeing tree trimmer ads on my feed. That's when I quit facebook. It's one thing to help people connect, but secretly listening to my conversations to sell me stuff is a bridge to far. Facebook needs to tread carefully, companies without real products historically fade with the fad and evidence indicates things could be turning quicker than expected

</comment><comment><USER3> I chalked my experiences like seeing an ad for something I was talking about with friends to coincidence, but after hearing the same experience from several, I'm starting to think FaceBook is every bit creepy as one imagines.

Facebook Application was booted from my phone long time ago. Facebook runs within "FaceBook container" in Firefox on laptop. Regular web browsing occurs in Safari.</comment>


Modern C++ and Lisp Programming Style - <AUTHOR> https://chriskohlhepp.wordpress.com/advanced-c-lisp/convergence-of-modern-cplusplus-and-lisp/ <comment><USER2> The addone function in C++14 would look something like this:

        auto addone = [](auto x) { return x+1; };

That monstrosity at the top of the article is needlessly complex because C++11 didn't support generic lamdbas.

<comment> photon-torpedo For terseness, it's probably hard to beat Julia:

        addone1(x) = x+1

Completely generic with type inference, and compiles to optimal machine code. But it also suffers from the "latent type errors deferred to the user" that the article discusses. Calling it with a type that does not support adding 1 will raise an error for a non-existing "+" method:

        addone1("0")
        ERROR: MethodError: no method matching +(::String, ::Int64)

This is pretty understandable in this case, but we may prefer annotating the addone function so that it can only be called with types that support adding 1. Using the (very conservative) notion that only numbers can have 1 added to them, we could use Julia's type hierarchy to restrict the types for which addone may be called:

        addone2(x::T) where T<:Number = x+1

Calling it with an incompatible type now properly points to the outer level:

        addone2("0")
        ERROR: MethodError: no method matching addone2(::String)

But this type of dispatch restrictions rely on a type hierarchy, causing similar problems as class hierarchies in OO languages. For example, the user might have defined their own type that supports addition but not multiplication. Using addone on this type makes sense, but the type shouldn't be a subtype of Number. Such more flexible dispatch scenarios can be achieved with traits. Although Julia currently doesn't have direct language support for traits, they can be implemented inside the language, with macros for syntactic sugar. With traits, the previous example becomes:

        using SimpleTraits
        @traitdef CanAddOne{T}
        @traitimpl CanAddOne{T} <- issubtype(T,Number)
        @traitfn addone3{T; CanAddOne{T}}(x::T) = x+1

Still relatively straight-forward to write and read, and the trait-restricted addone has the same performance as the original one. For incompatible types, the error message still points to the outer level:

        addone3("0")
        ERROR: MethodError: no method matching addone3(::Type{SimpleTraits.Not{CanAddOne{String}}}, ::String)

Importantly, the user can extend the CanAddOne trait (with additional @traitimpl lines) to cover their own type, without being forced to make it a subtype of Number.

<comment><USER3> Haskell:

        add1 = (+1)

        > add1 23
        24

        > add1 2.01
        3.01

        > add1 "0"
        No instance found...

But that error is at compile time.

<comment> photon-torpedo Right, with currying it can be even more terse. And getting the error at compile time is actually preferable.

My Haskell is very rusty, but IIRC it will deduce that the argument to add1 must be Num, because of the type constraint on (+):

        (+) :: Num a => a -> a -> a

So if I'm not mistaken, your add1 is equivalent to my addone2, i.e. incorporating a type constraint based on the type hierarchy. I'm curious: what's the equivalent of my addone3 in Haskell? How would you define add1 so that it also works on a type T later defined by the user, with T just supporting addition but T not subtype of Num? Do you need to define your own addition function (acting as a proxy for (+) for Num types)?

<comment><USER4> I'm still pretty new to Haskell, but I think there are several ways. The equivalent to your addone3 would be some sort of Template Haskell incantation. Template Haskell gives you lisp-style hygienic macros that are expanded and type checked at compile time (except more complicated because of the more complicated semantics and AST).

Haskell also provides a ton of options for generic programming that provide similar power (still statically typed). GADTs (Generalized Algebraic Data Types) might be of use here. There are also existential types and type classes.

What you probably really want though is a dependently typed language like Idris or Agda. If you're not familiar, here's the one liner: Java generics are types that depend on types (like a List of Bools). Dependent types are types that can depend on values (like a List of exactly 3 Bools). So in theory you should be able to define the type you're looking for here, but I don't know what the concrete syntax would be.

The problem with dependently typed languages right now is that the surface languages and concepts tend to be hard for people to grok. Personally I think meta-programming facilities and DSLs will help with this. Ther are lots of languages heading in that direction.

<comment><USER5> I wrote myself a perfectly functioning multi-entry accounting system over last weekend in my own dialect of Lisp for my self-employment venture. It's stuffed full of real data spread over nine accounts and lets me see a ledger report over any time period at a glance: all the debits and credits with running balances and so on. I can easily obtain the information to do all taxes and whatnot. It generates beautiful HTML+CSS invoices with a nice SVG logo. It's nicely object-oriented with classes and methods for everything: ledger, account, transaction, increment, invoice. I overloaded a cluster of math functions in a separate package so they work over a money type. It has self- checks against accounting errors.

Working code poured out almost as fast as I can type.

If I had to think about some propeller-head academic dependent type nonsense, I'd still be writing it come March 2018.

> _The problem with dependently typed languages right now is that the surface > languages and concepts tend to be hard for people to grok._

Anything hard to grok is a regression in tooling.

Why would I want to grok something difficult, when I'm finding programming easy and don't have any issues with getting the desired behavior out of the machine.

All I want to be grokking is how the bits of the run-time representation in the machine are coming together to solve whatever is being solved.

<comment><USER4> I actually agree, for the most part. I'm not advocating for Haskell or any of the other languages I mentioned, per se. I've spent time with lots of languages and there are things I like and don't like about all of them. If you forced me to write down my top 10 favorite languages, there would undoubtedly be several Lisps near the top.

If you're programming a single computer the existing languages and tooling are good. What I'm interested in is distributed compute and compute over heterogenous architectures (CPUs, GPUs, FPGAs, microcontrollers, etc).

For simplicity, let's limit ourselves to the simple case of HTTP-based service-oriented systems (or microservices). The state of the art has us spending a lot of time considering serialization, protocols, communication failures, managing identities, making authorization decisions, routing, etc. Things that should be completely orthogonal to the problem we're trying to solve end up being tightly coupled with our business logic. This becomes exponentially harder to manage as you add languages to your stack.

There is a lot of research around solving these problems. Unfortunately, all of it starts with a formal system that is "declarative" (or at least "algebraic") and doesn't mesh well with existing popular languages and tooling. Personally, I think we need to come up with a solution that lets us keep the existing tools that are good for programming a single component, and use some of this newer technology to build a smarter platform / underlay. The bridge between the existing languages and this underlay would be DSLs. Or, more precisely, "abstract languages" that can be implemented as DSLs in a variety of programming languages and may or may not have their own concrete syntax (think SQL+ORMs).

Sort of vague, I know, but hopefully that kind of makes sense?

</comment></comment></comment></comment></comment></comment></comment><comment><USER6> > The assumption is that the machine code of the C++ compiler is significantly > faster than that emitted by a comparable dynamic language compiler. While > this may hold true in general, it does not necessarily hold true with Lisp. > Lisp is a programmable programming languages. If we are inclined to program > it for speed, we can.

My Lisp-fu isn't as strong as my C++-fu so someone correct me if I'm wrong but isn't the GC an intrinsic part of Lisp? Do more modern Lisps allow you to mark value types so you can control memory access patterns(which is where the true speed of C/C++ comes from).

<comment><USER7> Lisp does support more than just lists as data structures.

Arrays are also available, including specialized versions that hold value types.

[https://www.cs.cmu.edu/Groups/AI/html/cltl/clm/node15.html](https://www.cs.cmu.edu/Groups/AI/html/cltl/clm/node15.html)

You can also stack allocate if required, via _dynamic-extent_ , [http://clhs.lisp.se/Body/d_dynami.htm](http://clhs.lisp.se/Body/d_dynami.htm)

Also not all Lisps have a tracing GC, some variants had a RC with tracing GC for collecting cycles.

RAII like patterns can be achieved via the _with-...._ functions, or macros.

I don't know the actual performance of commercial Lisps like Allegro Common Lisp and LispWorks, but I imagine it is quite good, given that they stay in business.

On the other had, given the amount of money spent in C and C++ optimizers vs the lack of industry wide adoption of Lisp, probably still not as good as current leading C++ compilers.

<comment><USER5> Indeed, those _with-_ macros.

In TXR Lisp, RAII is supported thusly:

This is GC finalization of a struct:

      This is the TXR Lisp interactive listener of TXR 172.
      Use the :quit command or type Ctrl-D on empty line to exit.
      1> (defstruct animal nil
           (:fini (me) (put-line `@me says good-bye`)))
      #<struct-type animal>
      2> (progn (new animal) nil) ;; make animal without referencing from REPL
      nil
      3> (+ 2 2)
      4
      4> (sys:gc)
      #S(animal) says good-bye
      t

OK, now _with-objects_ macro:

       5> (with-objects ((a (new animal)))
           (prinl a))
       #S(animal)
       #S(animal) says good-bye
       #S(animal)

_with-objects_ invokes finalizers explicitly, before objects become unreachable.

Also, what if a constructor throws? Let's derive _animal_ to _dog_ which bails at `new` time:

      6> (defstruct dog animal
           (:fini (me) (put-line `@me: woof woof`))
           (:postinit (me) (error "refuse to construct")))
      #<struct-type dog>
      7> (new dog)
      #S(dog): woof woof
      #S(dog) says good-bye
      ** refuse to construct
      ** during evaluation at expr-6:3 of form (error "refuse to construct")

The object instantiation logic catches exceptions and invokes finalizers on a partially constructed object (in the proper order as you can see: derived, then base).

<comment><USER8> The with-* style function do not replace RAII _except_ for the limited case of _lexically scoped_ resources. Not all resources are scoped lexically -- e.g. file handles you store in a map. What C++ programmers typically see as the most important guarantee is that RAII is _prompt_ freeing -- that is, as soon as said example map goes out of _its_ scope (or is freed by its owner), then those file handles will also be freed _immediately_.

Neither the gc-based nor with-* based solutions handle that.

<comment><USER7> Even on C++ RAII requires a lexical scope at some point in the program.

Somewhere in the whole workflow there must be a class allocated in the stack.

You can have destructor like behavior in Lisp as well, just register a file handle cleanup action by giving a cleanup lambda when creating the map instance.

The function that removes entries from the map will call the provided lambda.

<comment><USER8> I'm sure I must be missing something, but can you give a concrete example?

Of course instances of classes (not "classes", as you say, classes are an entirely compile-time construct in C++) must be allocated, but I mean... there's still heap storage. You know, shared_ptr<T> and all that...

What am I missing?

> You can have destructor like behavior in Lisp as well, just register a file > handle cleanup action by giving a cleanup lambda when creating the map > instance.

Well, except you don't know exactly when the _map_ is going to get cleaned up...? And it could get reused across various sections of the program... Do you see what I'm talking about?

EDIT: That, and if the map exists for the entire duration of the program, but it's really important that entries have prompt cleanup when removed... what then?

(Btw, I _do_ understand that in the general case with weak_ptr, shared_ptr, unique_ptr, etc. that things get decidedly less deterministic[1], but RAII is pretty well defined by scope or referenced-to-scope.)

[1] Basically almost as unpredictable as a general purpose GC. I can't recall the paper title, but I'm sure there _is_ a paper out there detailing this.

<comment><USER5> TXR Lisp:

      This is the TXR Lisp interactive listener of TXR 173.
      Use the :quit command or type Ctrl-D on empty line to exit.
      1> (defstruct map nil
           (hash (hash :equal-based))
           (:method lambda (me key) (gethash me.hash key))
           (:method lambda-set (me key new-val)
             (let ((old-val (shift (gethash me.hash key) new-val)))
               (call-finalizers old-val)
               new-val))
           (:fini (me)
             (dohash (key val me.hash)
               (call-finalizers key)
               (call-finalizers val))))
      #<struct-type map>
      2> (defstruct widget nil
           id
           (:static counter 0)
           (:init (me) (set me.id (inc me.counter)))
           (:fini (me) (put-line `widget @{me.id} says bye`)))
      #<struct-type widget>
      3> (defvar map (new map))
      map
      4> (set [map "a"] (new widget))
      #S(widget id 1)
      5> (set [map "a"] (new widget))
      widget 1 says bye
      #S(widget id 2)
      6> (set [map "a"] (new widget))
      widget 2 says bye
      #S(widget id 3)
      7> (set [map "b"] (new widget))
      #S(widget id 4)
      8> (set [map "c"] (new widget))
      #S(widget id 5)
      9> (call-finalizers map)
      widget 3 says bye
      widget 4 says bye
      widget 5 says bye
      10> (with-objects ((m (new map)))
            (set [m "x"] (new widget))
            (set [m "y"] (new widget)))
      widget 6 says bye
      widget 7 says bye
      #S(widget id 7)

</comment></comment></comment></comment></comment></comment></comment><comment><USER9> "Yes. STL is not object-oriented. I think that object orientedness is almost as much of a hoax as Artificial Intelligence."

Is hoax a placeholder for "hype" or am I missing something?

<comment><USER10> That confused me too, both clearly work unless there is some definition of work that excludes things which have earned many people many billions of dollars. Hoaxes don't create sustainable businesses.

<comment><USER11> If you're thinking of the recent boom in machine learning specifically, there are plenty of people in ML, even people making lots of money from it, who think the concept of "artificial intelligence" is a recurring hoax, or at best an overselling aimed at people who've read more sci-fi than science. Of course plenty of people think otherwise, too, but it's not a rare view within the field.

<comment><USER10> This is another way of thinking about I had not originally thought of, thank you.

</comment></comment></comment></comment><comment><USER12> I cannot say much about the C++ code, but the lisp examples are very bad style. One does not write like this.

One writes ordinary generic functions, and then optimized typed methods in lisp like this:

        (defgeneric xplusone (x) (1+ x))
        (defmethod xplusone ((x integer)) (1+ x))
        (defmethod xplusone ((x double-float)) (1+ x))

The sbcl compiler (called python) even creates the typed methods by itself, so mostly the defgeneric line is enough. The type hints for args and return types are purely optional, as the compiler figures it out by itself.

He is right that algorithms, methods, trump data structures, objects. You always write methods with specializations on objects. Not the other way round, classes with specific methods.

<comment><USER13> > (defgeneric xplusone (x) (1+ x))

> The sbcl compiler (called python) even creates the typed methods by itself, > so mostly the defgeneric line is enough.

Is this some new SBCL extension you are talking about? That `defgeneric` line is an error in CLOS.

<comment><USER14> Very much a part of the standard. i.e. not specific to SBCL.

Think of defgeneric as the function signature and defmethod as the template specialization. Not sure why you say this is an error in CLOS. Looks fine to me.

That said, most implementations try to auto-infer the generic function metaobject when you use defmethod without defgeneric. SBCL raises a warning.

Good reads on the topic:

[http://www.gigamonkeys.com/book/object-reorientation- generic...](http://www.gigamonkeys.com/book/object-reorientation-generic- functions.html)

[https://mitpress.mit.edu/books/art-metaobject- protocol](https://mitpress.mit.edu/books/art-metaobject-protocol)

[http://mop.lisp.se/](http://mop.lisp.se/)

<comment><USER15> The DEFGENERIC line is wrong. It can't have a body like that. It should be something like

        (defgeneric xplusone (x)
          (:method (x) (+ 1 x)))

Also, generic functions are slower than regular functions (due to dynamic dispatch), so using them for type optimization would be rather counterproductive.

<comment><USER12> Yes, thanks. I only wanted to point out similarities to abstract classes, generic slow methods.

</comment></comment></comment></comment></comment><comment><USER16> Unless I'm missing something, generic algorithms that work across types, and algos that work on type internals are just two separate things. And the latter probably still wants to be encapsulated in the type.

</comment><comment><USER17> I don't see the relation to Lisp, if anything that quote about noticing the semigroup property of parallel fold algorithms speaks to Haskell or ML more than anything else.

<comment><USER18> A lot of early research into parallel algorithms and exploiting associativity for parallelism started at Thinking Machines, a Lisp supercomputer company. Hillis and Steele's 1986 paper in CACM is still one of the best introductions to the subject: [http://cva.stanford.edu/classes/cs99s/papers/hillis- steele-d...](http://cva.stanford.edu/classes/cs99s/papers/hillis-steele-data- parallel-algorithms.pdf)

<comment><USER19> There was quite a lot research into parallel, concurrent and distributed Lisps beginning in the 80s. Thinking Machines with its SIMD computer was just one approach. At some point in time there was a lot of money available for that stuff, including custom hardware. In the US the DoD paid and you can bet that some military/intelligence applications were based on exotic multiprocessor machines running Lisp.

[http://www.softwarepreservation.org/projects/LISP/parallel](http://www.softwarepreservation.org/projects/LISP/parallel)

Often parallel computers had also a Lisp implementation. Much more than listed above.

Parallel Computation and Computers for Artificial Intelligence [http://link.springer.com/book/10.1007/978-1-4613-1989-4](http://link.springer.com/book/10.1007/978-1-4613-1989-4)

Parallel Lisp: Languages and Systems [http://link.springer.com/book/10.1007/BFb0024148](http://link.springer.com/book/10.1007/BFb0024148)

Parallel Symbolic Computing: Languages, Systems, and Applications [http://link.springer.com/book/10.1007/BFb0018643/page/1](http://link.springer.com/book/10.1007/BFb0018643/page/1)

</comment></comment></comment><comment><USER20> As I was reading some of the illustrations, I began to wonder why anyone would prefer to use Lisp instead of Haskell. Can anyone mention a few advantages? Mostly, I find Haskell attractive because of the fantastic type system which allows me to write code that will fail when I'm writing or changing code. But I worry that I'm overlooking something because I can't understand why some people prefer Lisp.

<comment><USER21> Ever since i learned lisp i feel very annoyed by languages having so much syntax. Just yesterday i was looking at tiny piece of Haskell code and it gave me headaches. Once you realize how much more productive you can be without cognitive load of juggling dozens of syntactic constructs in your head - it's hard to go back. and then you have benefits of homoiconicity on top of that.

</comment></comment><comment><USER22> Can't say Common Lisp is intuitive but in comparison with C++ it looks... Cleaner.

</comment><comment><USER23> What is Stepanov's beef with AI's week foundation?

</comment><comment><USER24> _" Modern C++ has shifted focus from an emphasis on type (objects) which accommodate algorithm to an emphasis on algorithms parametrized over types."_

That may be a bug, not a feature. The Boost crowd won the battle, making extremely complex templates an essential part of the language. But they may have lost the war, as C++ loses market share.

LISP backed into typing, and it shows. Both typed variables and objects are painful in LISP. By the time LISP got both, the era of LISP was over. LISP is really dead now; there hasn't been a release of GNU Common LISP ("clisp") in 7 years.

<comment><USER25> I recently came back to write a small experiment in C++. I programmed it professionally for a decade, ending in 2002, and was pretty good at it. After the last 16 years working in Java, Scala, Clojure, and Javascript, I have two observations on C++ 11:

a) Grateful for the extensive access to algorithms, lambdas, type inference;

b) Astounded at the complexity of template meta programming.

I imagine I'll get better at it with practice. But I'm operating at about 15% of the time efficiency of, say, Scala.

<comment><USER26> Why do you really need to do template metaprogramming?

Generally that is not required even in performance sensitive code. Perhaps a few conditionals a'la enable_if or direct use of SFINAE... but most everything else, not really.

<comment><USER27> Sooner or later you will likely be faced with having to understand code that was written by someone who had just learned about template metaprogramming and was determined to put his new-found knowledge to use.

<comment><USER25> that's gonna be the next guy who looks at this code i'm writing...

Edit: Clarification, I am not actually having myself to do original metaprogramming, but in order to diagnose problems implementing the custom iterators, I have needed to delve into, and understand, the meaning of the Thrust library code.

<comment><USER27> You ask way too many pertinent questions to be the sort of person who does what I am thinking of.</comment></comment></comment></comment></comment></comment>


Ask HN: What's your preferred method of online payment? - <AUTHOR>

If you're given the option to pay for a product/service online using any payment at all, which would you prefer? E.g. Paypal, Stripe, BTC etc. <comment><USER2> Credit card, ideally in GBP, with the caveat that I don't want to be forced to care who is processing the payment. e.g. I prefer not to pay by credit card via Paypal, because then I have to go through the hassle of resetting my Paypal password before I am allowed to pay.

</comment><comment><USER3> GoCardless for me, for services anyway. Slick, helpful dashboard, comes out of my bank account after they notify me. Products I guess I'd rather pay for on Stripe as it comes out straight away.

</comment><comment><USER4> GoCardless or Paypal - i.e. services that have my info stored and don't require me to go find my card details.</comment>


Intent to Deprecate and Remove: HTTP/0.9 Support - <AUTHOR> https://groups.google.com/a/chromium.org/forum/#!topic/blink-dev/OdKnpLlvVUo <comment><USER2> A high level description of HTTP 0.9: [https://hpbn.co/brief-history-of- http/](https://hpbn.co/brief-history-of-http/)</comment>


Ninja Blocks: Connect your world with the web - <AUTHOR> http://www.kickstarter.com/projects/ninja/ninja-blocks-connect-your-world-with-the-web

<comment><USER2> Seems similar in concept as [http://www.kickstarter.com/projects/supermechanical/twine- li...](http://www.kickstarter.com/projects/supermechanical/twine-listen-to- your-world-talk-to-the-internet) but offers a different UI/event-action model and few more integrated services. I wonder if these tiny-sensor-computer makers can come up with a standard so we can remotely control any of them without knowing the specific APIs.

<comment><USER3> I agree, it's twine & ifttt combined into one. It's almost the next iteration of twine in its UI and functionality.

<comment><USER4> it almost seems as if the demo web interface was lifted directly from IFTTT too.

</comment></comment></comment><comment><USER5> This is a cool project, and I'm supporting it...

...however, _sigh_ this is exactly what you should _not_ be using kickstarter for.

Kickstarter is not a shop, and I hope that anyone who pledges towards them realizes that they are supporting the project _not buying something_, and those $$$ have absolutely 1) no guarantee on receiving any product or 2) no recourse if anything is defective / wrong / whatever on it.

Kickstarter shouldn't be allowing this sort of project.

<comment><USER6> Hey Shadowmint,

I think you need to checkout <http://www.kickstarter.com/help/faq/backing%20a%20project>

Cheers,

Marcus

<comment><USER5> Who is responsible for making sure project creators deliver what they promise?

Every creator is responsible for fulfilling the promises of their project. Because projects are usually funded by the friends, fans, and communities around its creator, there are powerful social forces that keep creators accountable. Creators are also encouraged to post regular updates about the progress of their project post-funding — communication goes a long way.

\--

Yes, I'm quite familiar with the Kickstarter FAQ and TOS.

As a project owner, you are not legally obliged to provide anything. It's entirely up to you.

You earn negative karma and never-allowed-on-kickstarter-again status if you mess it up, but that's about it.

Kickstarter is not an ecommerce site. If you're selling things, you should use a shop. Wordpress and paypal will get you off the ground in about 20 minutes.

If you're doing a startup that needs funding to get off the ground, awesome, use kickstarter...

...but not as a shop.

The only point I'm making is that it's deceptive practice to pretend that Kickstarter is a shop, when none of the normal legal provisions apply.

Of course, what you do it entirely up to you, but people should be aware.

<comment><AUTHOR> I think what the guys is done is fair enough, although I can definitely see the point you are making. The thing for me about this that makes it more kickstarter like than ready for an online store presence is the fact that it's going to be a few months before I get my hands on some shiny Ninja Blocks.

For some reason I feel more comfortable with pledging money to a small business on kickstarter than through an online store having them say "we'll get it to you in four months time". I realise it's just a slight mental shift, but it really changes the way I look at things.

Perhaps it's time for KickStarter to adapt to the growth in this area, by spinning of a products and projects site (still kickstarted branded and hosted) which does help folks bootstrap small companies that actually need to buy stuff in quantities to make something viable.

<comment><USER5> Yup, totally agree, that'd be an great addition to Kickstarter.

Just shift the pre-sales out of the pledges and into 'we have some accountability' area for people who want to buy something.

Some kind of phased release of the funds to the project if they meet certain delivery milestones or something. I'm sure it could work~

(and you know, be ethical and legal at the same time...)

</comment></comment></comment></comment></comment><comment><USER7> You could sadly do better with an Arduino Mini and a Zigbee, if you had "Hello World" level knowledge of electronics and microcontroller programming. One of the big ongoing issues in this field is that sensor nodes need to be cheap, as you ideally want to have a number of them around. Simultaneously, you need to not be changing batteries all the time.

Want to see some serious internet-of-things action? Put Bluetooth Low Energy radios in the next iPhone.

<comment><USER8> > Put Bluetooth Low Energy radios in the next iPhone.

Not sure this is what you meant, but the iPhone 4S already has a Bluetooth Low Energy radio and an API to control it (CoreBluetooth).

<comment><USER7> Thanks. I knew they included Bluetooth 4.0, but Low Energy was left out of the specs page. I actually still can't find any mention of it except in CoreBluetooth - their site organization is a bit painful if you're not there to buy.

There's also a demo implementation for Android by one of the radio manufacturers - not great, but maybe usable for initial development. This is much more significant on iPhone because it diffuses into the market more rapidly than a single model of Android handheld usually will.

</comment></comment></comment><comment><USER9> This is one of those great concepts that has a "this needs to happen" feeling, and it's a matter of who's going to do a great job with it. Looks like Ninja Blocks is on the right track.

However, as I think about the concept more, I'm having a difficult time finding a useful case for the concept. I think it's just because I'm not creative enough. So what would you, Hacker News reader, use Ninja Blocks for?

<comment><USER10> I'm just picturing all the contraptions from Honey I Shrunk the Kids. Automatic pet feeding, for one.

On a more useful note, my uncle is a quadriplegic. He was fortunate, in a sense, that he was working when he had his accident, so he has 24 hr attendants. Most wouldn't be able to afford that. There are expensive, proprietary systems that allow him to open doors, turn off lights, etc with a remote, but you could jury-rig something with NinjaBox to get the job done much cheaper.

<comment><USER11> yes, exactly. there are a heap of markets that are expensive to target because they're so small - we're in talks with research labs to do experiment automation,for instance, and their equipment is usually priced in the hundreds of thousands. We're aiming at being the glue: geeks have always hacked their own stuff, this just makes it possible for everyone else to do the same.

<comment><AUTHOR> The attraction for me is that although I've always been able to hack electronics and stuff (and did quite a bit when I was younger), I just don't have the time.

I'm a software hacker through and through, and that's where I want to spend my most limited resource. Having some hardware that takes care of most of the heavy lifting in that space is very appealling.

</comment></comment></comment></comment><comment><USER12> It's like a hardware version of IFTTT.

</comment><comment><USER13> It's interesting to see an incubator-backed startup leveraging Kickstarter. Definitely a pretty cool concept though.

<comment><USER14> I'm actually confused. I remember Kickstarter specifically saying that they didn't fund startups back when I applied to them.

<comment><USER11> Hi - I'm one of the hackers behind Ninja Blocks. We're not actually getting funding from Kickstarter - we're just pre-selling the product.

<comment><USER5> While I love what you guys are doing, it really troubles me to hear you say that so blatantly...

<comment><USER6> What @mwotton means to say is that we've made a lot of progress. We could probably eventually sell Ninja Blocks without Kickstarter, but certainly not to the quality we want.

Unlike software projects, hardware requires tooling, parts and materials. Kickstarter is allowing us to do this!

We're also open source hardware!

Cheers,

Marcus (I'm a developer on the Ninja Blocks project).

</comment></comment></comment></comment></comment><comment><USER15> Pretty interesting and creative way to pitch the project: They created their main web site [1] as if the product already existed, giving the potential donor a good feeling about the end goal.

[1] <http://ninjablocks.com>

</comment><comment><USER16> It seems to me that the hook.io project would make an ideal candidate for the software to connect these devices.

<https://github.com/hookio/hook.io>

hook.io is all about building the software for connecting devices together to do functionality like this. It would be amazing to see this coupled with actual custom hardware.

<comment><USER6> Hook.io looks great! FYI we're actually using <http://www.zeromq.org/> and getting 10,000 messages per second off the Ninja Block ;-)

Cheers,

Marcus

<comment><USER16> You should consider ZeroMQ a messaging protocol.

hook.io supports multi-transport messaging protocols.

There has been lots of talk of ZeroMQ as a message transport in hook.io, it's coming soon.

IMO, you shouldn't be worried about messages per second between devices right now. You should be worried about how you are going to communicate between 1000s of 3rd party services. hook.io aims to solve that problem.

<comment><USER17> Listen to this man! We're struggling with the same thing at my startup (<https://zapier.com/>), and having a robust way to hit some of the crazy API's out there is by far the most difficult thing we've come across.

</comment></comment></comment></comment><comment><USER18> Very nice concept! And by making them very very easy to use & pricing them accordingly high, they don't really compete with arduino+shields and the like. As they are "open", I wonder if it will be possible to only use their webservice with other devices (arduino etc) by paying a monthly fee.

<comment><USER11> yes, we're investigating this. arduinos are a bit tricky because the hardware either needs a general-purpose interpreter which can load new code at runtime, or needs to be able to reprogram itself wholesale over the net. It's doable, I think, but it's a lot harder than uploading some new code to a full linux machine.

</comment></comment><comment><USER19> Interesting. The official logo seems to have rounded eyes -- good intentions I suppose. However... [http://220.127.116.11/wp- content/uploads/2012/01/new_ninja_blo...](http://188.8.131.52/wp- content/uploads/2012/01/new_ninja_block.png)

</comment><comment><USER20> With tech like this, that can sense and communicate events that happen in the physical world, I'd imagine that the globe will become sentient in 100 years. Just adding more and more nodes to the ever increasing network.

<comment><USER21> Are you sure the globe is not sentient already? ;-)

</comment></comment><comment><USER22> There some other projects like these. But I do not believe they can break their "niche toys" market and became mainstream. They are expensive and meaningless toys for any other sane people except us, nerds.

</comment><comment><USER23> You can't claim it's Open Hardware and then not publish the layout files.

<comment><USER6> Wait till after Ninja Blocks gets funded...

</comment></comment><comment><USER24> You guys are awesome. Nice work!

</comment><comment><USER25> Is that a raspberry pi in there?

<comment><USER11> no, it's a beaglebone and an arduino. we looked at the raspberry pi, but availability wasn't great.

</comment></comment><comment><USER26> Excellent work guys - looks rad

<comment><USER6> Thanks Chris!

Cheers,

Marcus

</comment></comment><comment><USER27> awesomeness with ifttt

I bow down before our new ninja block overlords.

</comment><comment><USER28> Great, so now a cloud service will know when somebody is at my front door and all other sensors fire.

Privacy where are you...

<comment><USER11> Privacy is a legitimate concern, but there are useful things you can do that you might feel comfortable sharing with our servers. Zero-information computing is really hard, and we didn't feel it was worth the time it'd take to give that kind of strong guarantee.

<comment><USER28> No I do not feel comfortable sharing with your servers.

Are you really free software? Give me the (server) software.

For $25 I can get a simple server and Ill use it.

<comment><USER6> Hey Mate,

The hardware is open. If you want to run your own software on it you can. We did have a big debate whether to go the zero knowledge route (we previously worked on building a zero knowledge file service).

Cheers,

Marcus

<comment><USER28> What is this zero knowledge you mention?

Seems quite a marketing lie, zero knowledge, while you really want _all_ the knowledge about all my sensors, and the way I use your product. While I get no knowledge of how your servers work and what you do with it.

<comment><USER6> _We make no claims of being architected Zero Knowledge._

We're familiar with the concept from previous work, but decided it wasn't worth creating an MVP with it.

One can architect a service to be zero knowledge like the terrific job <http://www.tarsnap.com/> does. Unfortunately it's pretty hard for us to do when the core value proposition of our product is that we connect your hardware to other APIs (Dropbox, Facebook, Twitter etc) (which don't follow a zero knowledge architecture).

Cheers,

Marcus</comment></comment></comment></comment></comment></comment>


Nate Silver: How Much Does Bing Borrow From Google? - <AUTHOR> http://fivethirtyeight.blogs.nytimes.com/2011/02/02/how-much-does-bing-borrow-from-google/ <comment><USER3> I read this article because it was written by Nate Silver so I expected something substantial. There is not.

With much writing, he essentially says the following:

1\. Microsoft's defense contains no information because they don't say how they weight the data learned from Google searches.

2\. It's hard to say how Microsoft is actually using the data learned from Google searches.

For the crowd here this is essentially common-sense.

(edit: in point two I changed 'impossible' to 'hard')

<comment><USER4> Where are you getting point 2 from?

In many cases where they have no other data, they clearly weight Google's single data point high enough to create a whole SERP around it. The claim that 'this is just one input among many' implies that some kind of cross- referencing or corroboration takes place. In this experiment that obviously didn't happen.

<comment><USER5> > they clearly weight Google's single data point high enough to create a whole > SERP around it

This really doesn't tell us anything about how highly it is weighted relative to other data though, since obviously there will be no other data to weigh in on a nonsense search term.

<comment><USER6> Google managed to inject "7 to 9" of their honeypots into Bing. In 91+/100 cases apparently there was enough to outweigh the Google results _on gibberish terms_ despite the efforts of 20 Google engineers between December 17 and December 31.

<comment><USER7> What were the terms of the other 91 cases? You make it sound like the Google engineers were slaving away for two weeks. My impression was that they ran the experiment during that time.

<comment><USER6> Google doesn't say how long they were working on it or anything at all about the methods they used. Indeed, they don't even seem to be certain how many honeypots they injected.

However hand they issued twenty engineers laptops which is more consistent with an ongoing effort than a single afternoon of Bing and beer - <USER2> when you consider that if there was a single method applied and it was known beforehand, one engineer could have automated the whole exercise.

The inability to accurately measure honeypot injections is a bit odd. As pure speculation, it may be that they were not sure if the methods they used to get Bing to show honeypots number 8 and 9 were legitimate.

</comment></comment></comment></comment></comment></comment><comment><USER4> A common counter-argument seems to be 'But this effect only happens when there are no other sources of relevance data'.

Well...

      'over the next few months we noticed that URLs from
       Google search results would later appear in Bing with
       increasing frequency for all kinds of queries:
       *popular queries*, rare or unusual queries and
       misspelled queries.'
          -- http://goo.gl/Bi0JH [googleblog]

Now it's possible that Bing really did have no data for these 'popular queries' but I don't think that's an argument anyone would like to make. The alternative interpretation is that top-ranked pages in Google get added prominently to Bing after some interaction involving the toolbar, even when there are lots of other possible matches.

You can still say that this would represent just a single data-point among many but unless you think Google is lying, you can't say that it only happens with rare searches.

BTW: I'm not arguing that there is direct evidence that the mentioned effect on popular queries is related to the toolbar. But the effect is there.

<comment><USER8> The problem is that Google is doing the wrong test to prove their point.

The should search for Justin Bieber and add in the Bieber search results some really horrible link.

MS should have a lot of relevant info for Justin Bieber, so the Google data should be rated lowly. If this non-sensical result makes the first page then you can begin to assume that their weighing it heavily. But when your query is "erftqnvpwedf" -- that just means that the only relevant info is coming from the toolbar. Bing would show that result even if the toolbar only accounted for 1/(2^50) of the total relevance.

I suspect Google did this test and has nothing to report.

<comment><USER9> The test you suggest doesn't address the actual problem that Google is complaining about - long-tail, rare searches, especially ones that contain misspellings.

This is the very thing that Google is saying that Bing is stealing with their clickstream data, and it's also the one that you're agreeing would occur - "that the only relevant info is coming from the toolbar" for highly unlikely queries.

So it seems to me, looking at your argument, that you actually _agree_ with Google's point.

<comment><USER8> My comment is in response to a comment about "popular queries". And really to the meta issue about how much it is weighed in general.

Google is trying to argue a huge PR point by saying, "Bing copies" with the ramification being that when you search on Bing you're really searching on Google. If Google said this, "For extremely rare searches where Bing has few, if any, good signals, clickthroughs from Google will be weighed in such a way that these results may make the first page".

I'd buy that 100%. The Bing team may even buy it. Google seems to want to start with that thesis, but then try to shove the whole camel in too.

</comment></comment></comment></comment><comment><USER10> A better analogy using Italian restaurants than his would be something like this. You are standing on the street, watching people go into businesses. You observe a man and woman walk up, and the woman says "which of these restaurants should we dine in?". The man pulls out a well-known restaurant guide, and clearly looks up both. Then they walk into Mario Batali's restaurant.

Later, someone comes up to you and asks which is the best italian restaurant on that street. You recall that the couple with the restaurant guide picked Batali's, and so you point them to it.

Google would say you are ripping off the restaurant guide. Microsoft would say you are just using the observed behavior of the first couple to guide you.

<comment><USER4> Disclosure: you are also a restaurant guide.

<comment><USER11> Fuller disclosure: you are in direct competition with the first restaurant guide and have released public statements explaining why you are better than the first.

</comment></comment></comment><comment><USER12> Here's the problem I have with Google's claims about Bing: Google suggests that Bing is cheating but hasn't demonstrated that Bing's behavior somehow deviates from what is optimal in a machine-learning sense. Thus, the real question is whether Bing should cripple its machine-learning algorithms if they infer (correctly) that Google-suggested results are likely to be relevant.

That is, if any learning system is observing click-stream behavior from users and mining it for relevance evidence, I'd expect it to ultimately home in on the true weight of each piece of evidence in that click-stream data. Since Google's contributions to that data are likely to be highly relevant, any good machine learning system is going to _learn_ that they are relevant and start recommending them.

In effect, then, what Google is arguing is that if Bing's machine-learning algorithms are correctly inferring that results that happen to come from Google are highly relevant, Bing should blind itself to that knowledge.

I'm not sure that's good for anyone except Google.

(For a completely uninformed guess about why Google might be interested in raising copycat claims about Bing, I go out on a limb here: [http://blog.moertel.com/articles/2011/02/02/the-google- micro...](http://blog.moertel.com/articles/2011/02/02/the-google-microsoft- squabble-over-bing-results-some-completely-uninformed-speculation))

<comment><USER13> But that means that you have not created an actual search program. You are just using googles data.

Or to put it another way: If google did not exist do you still have a (good) search program? If the answer is no, then there is no reason for them to exist.

<comment><USER12> > But that means that you have not created an actual search program. You are > just using googles data.

No, if your learning system is working properly you should be using Google's data only to the extent it is legitimately observable and more relevant than anything else you're feeding your system. And, for lots of searches, Google's data leave much room for other sources to be more relevant. In the limiting case, when you're feeding your system everything that Google is feeding its, you should almost never return Google-derived knowledge because your system should almost always be able to come up with greater relevance from knowledge derived from primary sources.

Your final question is on the right track, but I'd suggest a small tweak: If Google didn't exist, would the system still offer highly relevant results and, if Google did exist, would the system be able to learn from Google-supplied knowledge, to the extent allowed by law and terms of service and so forth, to offer results at least as relevant?

</comment></comment></comment><comment><USER14> Well, from what I read elsewhere, Microsoft is saying that Google admitted to using the Bing toolbar during their testing, and that plays into the Bing results as it associates soon-after visited pages with the queries they used... actually kind of a smooth way to harness user interaction to power search relevance, if you ask me.

</comment><comment><USER15> This is like trying to find the answer to an unsolvably hard problem on a test whose answer should be "None of the above". Then, peek at your neighbor (who has a reputation for scoring well), and on realization that his answer is different, change yours to match his. Plain lack of confidence in your ability.

<comment><USER16> a test is a controlled experiment. it's nothing like product development. analogies between the two make no sense.

</comment></comment><comment><USER17> I still don't understand how this is not cheating.

Microsoft has lifted Google's SERPs _verbatim_ for a particular search ... what else is there to discuss?

</comment><comment><USER18> The problem is that Google's "experiment" didn't include a control group. Is Bing copying Google's results, or just measuring click data?

The trivial addition to their experiment would be to add those nonsense words to a few Wikipedia pages, and click the links with the Bing toolbar installed, and see if those pages show up in the Bing results.

<comment><USER9> Measuring click data that gets turned into a correlation between the query string and the result on Google's SERP _is_ copying Google's result, because that's the upshot of it - that is its effect, in these rare long-tail searches.

<comment><USER18> If the toolbar is simply sending "they clicked link X from a page with text 'A B C'" and they are using that in their search engine to mean "If someone searches for A, B, or C, they might be looking for X" then that is, in fact, NOT copying Google's results, it is a general measurement of how users react to ALL web pages.</comment></comment></comment>


Twitter Paid $6 or Less for Crowdsourced 'Birdie' Graphic - <AUTHOR> http://www.wired.com/epicenter/2009/03/twitter-designe/

<comment><USER2> This is just straight up linkbait. We're supposed to be mad because they bought a cheap graphic on iStock and don't credit the designer? Isn't that the point of buying rights to stock photos/graphics?

<comment><USER3> <http://twiter.com/> (a misspelling) uses it too. Purchased from the same place.

</comment></comment><comment><USER4> The article title is misleading. Twitter bought the rights to use the image and they did this on istockphoto.com.

<comment><USER5> What makes it misleading? It says just that. Although the article also says that by not buying the _exclusive_ rights to the image the 'cheap logo'-trick might backfire when other (twitter-like) websites would (legally) use the same image.

"Nothing is stopping people from making sites that ape, mock or build upon Twitter using its own official graphic."

</comment></comment><comment><USER6> It seems to me that ambiguity in iStockPhoto's license _could_ mean Twitter would owe many thousands of dollars for this.. hear me out :)

The iStockPhoto standard license has an easily ignored, and rather confusing, clause:

 _[You may not] either individually or in combination with others, reproduce the Content, or an element of the Content, in excess of 500,000 times without obtaining an Extended License, in which event you shall be required to pay an additional royalty fee equal to US $0.01 for each reproduction which is in excess of 500,000 reproductions. This additional royalty does not apply to advertisements in magazines, newspapers or websites or to broadcast by television, web-cast or theatrical production._

"advertisements in magazines, newspapers or websites" is ambiguous. I first read it as meaning "(advertisements) in (magazines, newspapers or websites)" and the error page on Twitter is not an advertisement. But if this were so, then wouldn't pretty much any graphic purchased from iStockPhoto end up being used over 500,000 times _eventually_ on the Web? Twitter would probably owe hundreds of thousands of dollars in royalties.

Or is it "(advertisements in magazines), (newspapers) or (websites)" in which case, fine. Hurrah for vague legal wording! It's a shame it's so vague because it does open things up for interpretation.

<comment><USER7> Online or electronic publications or uses, including web pages to a maximum image size of 800 x 600 pixels... is covered by the Standard License (<http://www.istockphoto.com/license_comparison.php>)

The impression count is seemingly for offline reproduction.

<comment><USER6> Cool comparison table, and hopefully that would be a good defence if iStockPhoto ever came to annoy anyone, but still.. that table doesn't quite match with what the actual license text says :-( (which is, I suspect, the legal version of events)

</comment></comment></comment><comment><USER8> The issue is relevant for stock photographers who were the audience of the RT since the price is considerably less than traditional home page logo licensing. that's all.

</comment><comment><USER9> You know they paid even less for their architecture.</comment>


MozDef: The Mozilla Defense Platform - <AUTHOR> https://github.com/jeffbryner/MozDef

<comment><USER2> Seems like a cool initiative, but I'm having trouble understanding what it actually does.

<comment><USER3> me to. Screenshots would've helped.

Is it webapp which informs me about new vuln. for my websites (parsing my logfiles)?

<comment><USER4> That's what the SIEM does, see ones such as IBM QRadar [1]; aggregates all the logs and network flows from across your estate and then uses rules/algorithms to determine threats and security events.

From my limited understanding MozDef is more targeted at ticketing/following through from intelligence gleaned from a SIEM as most times, people then just stick it in Remedy or Jira.

[1] [http://public.dhe.ibm.com/common/ssi/ecm/en/wgd03021usen/WGD...](http://public.dhe.ibm.com/common/ssi/ecm/en/wgd03021usen/WGD03021USEN.PDF)

<comment><USER5> Sorry it's a bit tough to understand. You can think of MozDef as an open source SIEM (taking in logs, parsing, alerting, correlating) plus incident handling workflow with a focus on being open, extensible, visual and realtime. It is early, early days but promising so far!

</comment></comment></comment></comment><comment><USER6> Is this equal to OSSEC, an Open Source Host-based Intrusion Detection System? [http://www.ossec.net/](http://www.ossec.net/)

<comment><USER4> That's an IDS, a specific security measure, akin to firewalls, AV, IPS, Vuln Scanners.

MozDef seems to be trying to make a relevant/niche ticketing system to run over the top of a SIEM (Security Information and Event Manager) which in turn runs over the top of IDS/IPS/AV/FW etc etc this allows single view and correlation between events i.e remote login from contracter over VPN using chinese IP address, escalating privileges on a unix box, new admin account on DB, increase in data flow outbound from DB, none of these events is individually significant but together its pretty obvious something might be wrong, thats why you pay good money for a SIEM.

The issue most companies face is they have awesome security intelligence platforms or SIEMS but then have to translate it into awful business process ticketing systems (like Remedy or Jira) not designed to handle such critical and quick moving issues.

</comment></comment><comment><USER7> I'm happy to see more tools being developed for the defending side.

</comment><comment><USER8> And now, there's an other public facing service on your server than can be tried for vulnerabilities :)

Joke aside, I like the initiative, security is still something that seems to me not taken seriously enough by day to day sysadmins and developers.

From what I understand, its main use it to report it when attacks were attempted. Does it also check for what is probably the biggest security concern on the wild, aka outdated softwares that have updates available (better safe than sorry)?

<comment><USER9> one? """ MozDef is based on open source technologies including: Nginx (http(s) based log input) Rabbit-MQ (message queue) UWSGI (supervisory control of python-based workers) bottle.py (simple pyhon interface for web request handling) Elastic Search (scalable indexing and searching of JSON documents) Meteor (responsive framework for Node.js enabling real-time data sharing) Mongo DB (scalable data store, tightly integrated to Meteor) .. """

OTOH, maybe it's not public facing :)

</comment></comment><comment><USER10> >> The inspiration for MozDef comes from the large arsenal of tools available to attackers. Suites like metasploit, armitage, lair, dradis. Defenders are usually limited to wikis, ticketing systems and manual tracking databases attached to the end of a Security Information Event Management (SIEM) system.

I read this as: attackers are usually one step ahead at least, and "defenders" (sic: developers (?) ) do not like pentesting? These tools are available to anyone..

<comment><USER4> > "defenders" (sic: developers (?) )

Defenders are usually companies or a consultancies ERT (emergency repsonse team) or in their SOC (Security Operations Center) to monitor real time security threats to their business and Triage, mitigate, investigate, block etc.

Some of the enterprise tools (QRadar, Arcsight, EnVision) for these are really advanced but run into the 100's of thousands cost, so I think MozDef is an open sources initiative for smaller teams who don't have the resources for the above.

<comment><USER10> Ah, should not comment before the coffee kicks in... That's actually an awesome concept. Thanks for the explanation.

</comment></comment></comment><comment><USER11> I hope this project will get traction. It's always a nightmare for sysadmin (and developers) to discover on Friday nights that most of their apps will require an upgrade in the next couple of hours because an exploit is out (of nowhere most of the time).

And in any case, the architecture put in place is interesting. I'm eager to see how they made use of Meteor.

</comment><comment><USER12> It's a proof of concept and it's already making rounds at HN, reddit, G+... Geeze, guys, give it time!

<comment><AUTHOR> One of the ways a proof of concept can become a full blown project is by attracting contributors. A project attracts contributors if the project is talked about.

</comment></comment><comment><USER13> IMO, the only CORRECT way to assure that you're not vulnerable to all the "attacker" tools is to test USING those tools yourself.

</comment><comment><USER14> Awesome</comment>