33 Beautiful Open-Source Icon Sets - <AUTHOR> https://blog.usepastel.com/post/33-beautiful-free-icon-sets <comment><USER2> I'm tired of modern web design. These icons are even not intended to be used on toolbar buttons, but for silly landing page lists. Landings that are all the same on every website.

I miss silk icons that were ubiquitous in late 2000s: [http://www.famfamfam.com/lab/icons/silk/](http://www.famfamfam.com/lab/icons/silk/). I miss Tango Project icons, although Gnome went off-the-rails in their UI design. I miss small UI elements, like on freaking Windows 95 desktop, not optimized for pressing with finger, despite being shown on desktop.

</comment><comment><USER3> Seems like the meaning of "beautiful" is a little bit too specific today.

<comment><USER4> Agreed. If you're looking for a different style of icons to use in your application, Tango/GNOME and Breeze are large, complete icon themes.

Tango/GNOME Icons Wikipedia pages (previews many but not all icons): [https://commons.wikimedia.org/wiki/Tango_icons](https://commons.wikimedia.org/wiki/Tango_icons) [https://commons.wikimedia.org/wiki/GNOME_Desktop_icons](https://commons.wikimedia.org/wiki/GNOME_Desktop_icons)

Breeze is a bit more 'modern' and would also work well on HiDPI: [https://github.com/KDE/breeze-icons](https://github.com/KDE/breeze-icons) ; you would probably want to clone the repo and browse the files manually since GitHub isn't great for previewing images.

KDE created/used the Oxygen icon theme before Breeze, its style is between Tango/GNOME and Breeze: [https://github.com/pasnox/oxygen-icons- png](https://github.com/pasnox/oxygen-icons-png)

</comment></comment><comment><USER5> Not all of the presented icon sets are Open-Sourced. Some are, some are free and for some you have to pay with information about you like your email address. So the title sounds nice but it is just wrong.

</comment><comment><USER6> also, just remember unicode is packed with icons though I find you do have to check if they render correctly.... but mostly they just work though you may need to make your font a bit bigger or it may look like

UPDATE: apparently.... HN Isn't unicode friendly...[https://pasteboard.co/IpxYWjH.png](https://pasteboard.co/IpxYWjH.png)

<comment><USER7> > you do have to check if they render correctly

In general, avoid using font-based icons to avoid the problem you run into in your post above. :) SVGs are better in the vast majority of cases where you have control of markup.

Fonts are unreliable (esp on mobile) -- not enough that you should avoid them, but enough that you should avoid them for anything you _need_ to look correct. I've seen websites and apps where not only do the unicode symbols not display, they get flat out replaced with different images, since some fonts organize themselves differently. And if they don't display, Unicode doesn't gracefully degrade, it just shows nothing.

It's always weirded me out and slightly annoyed me that emoji are associated with Unicode at all, it's a terrible format for accessibility. The more robust, markdown-ish way to do this would be to abandon attaching them to Unicode characters entirely and wholesale switch to the Slack/Twitter convention of spelling things out.

      :smile: :thumbsup: :cookie:

That way your unsupported emoji degrade perfectly, can be translated into multiple languages or be given aliases, and are more future-proof/extensible. If someone has a viewer that understands an emoji they can just swap out the fallback text in-place. Emoji should be built like escalators, not elevators.

Plus, spelling them out allows you to use emoji like :squirtle_squad_robbing_bank: or :children_standing_in_cornfield: even though they haven't _technically_ made it into the standard yet. On an unrelated note, for some reason the standards body has stopped responding to any of my emails.

<comment><USER8> iconfonts and unicode icons are two different things. unicode icons are the built in icons that renders correctly (but with slight variations) on any modern device, iconfonts are basically your own icons set as a font, hopefully using Private Use Areas for the codepoints.

<comment><USER7> > on any modern device

This qualifier is why Unicode icons should be avoided where possible.

You're correct that Unicode icons are different from icon fonts in the sense that they're standardized -- but the standard doesn't matter unless everyone implements it; and as we can see on HN, plenty of platforms don't.

In practice, there are just too many platforms/devices that implement only part of the Unicode standard, or that implement it incorrectly, or that extend it with their own stuff.

<comment><USER8> HN just restricts the carachterset that you can use when commenting, just like they don't support inline images or links with customized clickable text. By that rationale we should stop using images on the web because "some platforms" don't allow them in their comment fields.

In practice unicode icons are widely supported enough to use.

<comment><USER7> I don't think this is a very good comparison -- the difference you're missing is that if you embed inline images or custom links into a HN comment, they degrade gracefully into URLs that anyone can use.

      [click me](https://google.com)
      click me

In HTML, if a browser doesn't support images, they also degrade gracefully into alt tags, which work with screen readers -- images can even be styled with CSS to avoid document reflows. This is common practice on platforms like email, where remote images will often be blocked.

I'm not saying avoid emoji, I'm saying avoid encoding them into a format that literally stops rendering or turns into an undecipherable mess the moment it's not fully supported -- especially since there are other encoding formats we could use that would be just as good as Unicode and that wouldn't have any of its downsides. In general, we should try to build escalators, not elevators.

<comment><USER8> > In general, we should try to build escalators, not elevators.

Agreed, but what is the better escalator in this case?

<comment><USER7> IMO for most text-fields and markdown interfaces it's a shortcode.

      :smile: :calculator: :pikachu_brandishing_ketchup:

The only big downside to shortcodes are that they're more than one character long, but there's no good way I can think of to have screenreader-accessible emoji that doesn't contain a multiple-character description anyway.

Shortcodes will get passed properly through 99.9% of existing text processors without any problems, so it's a really safe format to store things in.

I think the conversion to pictorial form should only happen at the display layer. If you're writing HTML, I advocate for using an SVG with a title attribute. Unicode emoji are already SVGs, so the only thing that changes is you don't bundle your emoji into a font.

Even native applications understand how to automatically highlight things like urls with the `[https://`](https://`) `[http://`](http://`) format, so my personal vote is we just use shortcodes the same way we use URLs.

</comment></comment></comment></comment></comment></comment></comment></comment><comment><USER9> Thanks for sharing!</comment>


Has anyone worked on a cannabis related idea? - <AUTHOR> I live in California where it is legal.  A lot of people here seem to enjoy it, and honestly from what I've read it seems like it is probably not as bad for health as alcohol or smoking.
All that aside, I've been getting comments like "nobody is going to hire you in the future if you work on this" or "why would you want to build something for stoners" which is kind of surprising.
Has anyone worked on a cannabis related app, such as weedmaps or others?  What was your experience like? <comment><USER2> > from what I've read it seems like

You're asking if a cannabis business is a good idea and you've never tried it?

Drop what you're doing right now, go to a pot shop, and get stoned. The easiest way to start is with a 5mg edible, and then work your way up to 15mg. If you can find the watermelon gummies that are pure sativa, it's a very gentle product for beginners.

I've never worked in the industry, but what I can tell you is that someone who's inauthentic won't go far. If you're worried about killing your career... IMO, for every lameo who won't hire you, there's someone who will get excited about you! Just don't act stoned during the interview.</comment>


Featuritis vs. the Happy User - <AUTHOR> http://headrush.typepad.com/creating_passionate_users/2005/06/featuritis_vs_t.html <comment><USER2> With the primary sphere of software innovation now being online offerings, it seems like we have an awesome opportunity to do what leaders of focus groups have dreamed about since the term focus group was invented -- observe usage during natural activities.

Would it be an invasion of my users' privacy to record the frequency of use of various features, if that info was not linked to the user in any way? If that was acceptable to users, we'd have the opportunity to expand on the areas that were getting the most use, while (all the while battling the marketing dept -- "It's already there, what's the harm???") dropping the features that were rarely used, or (even more telling!) got initiated but not completed.

That could lead to some radical simplifying of applications, all to the advantage of the user. But I wouldn't want to be compared to some Orwell character. Whadda people think -- reasonable and beneficial research, or nightmarish Big Brother tactic?

</comment><comment><AUTHOR> Admittedly I'm guilty of this...adding too many features to any app be it web or desktop. Just goes to show you that the KISS principle is still alive and kicking.</comment>


Ask HN: What are good web services to read web pages without clutter? - <AUTHOR> Specially, websites where you can just put a link and it will show you that webpage without clutter and ads? <comment><USER2> Isn't this one of the use cases for Paper and ReadItLater?

I know that Safari has a "Reader" mode for web pages that strips most clutter, because I use it all the time on my iPad. I would imagine there are plugins or modes like this for most other browsers.

</comment><comment><USER3> [https://outline.com/](https://outline.com/)

There is also a chrome extension: [https://chrome.google.com/webstore/detail/outline-read- witho...](https://chrome.google.com/webstore/detail/outline-read-without- clut/daoolpmoieinofbnddaofhkhmbagfmnj)

</comment><comment><USER4> I made a script for that, you could fork it and put on a server: [https://github.com/Backup08/rss-reader- lesslessless](https://github.com/Backup08/rss-reader-lesslessless)

</comment><comment><USER5> Diffbot.com

If you want to build your own, take a look at readability library or goose.

Their precision is nearly 80%.

To remove further noise you can use goldminer algorithm to have improvement furthermore.</comment>


10 Reasons to Build a Progressive Web App (PWA) - <AUTHOR> https://www.cubui.com/development/javascript/10-reasons-to-build-a-progressive-web-app-pwa <comment><USER2> Are there any in-depth case studies aside from the single data point (Reason 10) that prove this is worthwhile? This article feels like it was put together very quickly without a call to action in mind.</comment>


Embedding Rust in Ruby (with demo) - <AUTHOR> http://brson.github.com/2013/03/10/embedding-rust-in-ruby/

<comment><USER2> I'm sure there are many Ruby programmers that are competent at low level code, but based on my anecdotal observations, I find the thought of the average Ruby developer writing Rust terrifying...

<comment><AUTHOR> I think it's a lot less terrifying than writing Ruby extensions in C (which has been the main alternative up to now), because Rust is memory-safe. There's a lot less that can go wrong when you can't scribble on freed memory or jump to undefined addresses outside of designated "unsafe { ... }" blocks. Note that the Gaussian blur function is all safe code—the only unsafe code here is the code to marshal the data structures to and from Ruby.

<comment><USER2> "less terrifying than writing Ruby extensions in C" Very true, still terrifying though. I wonder if the reputation of C might not cause a selection bias towards the type of developer that can hack it though. Anyway, this is definitely a solid move.

<comment><USER3> What, _specifically_ , is horrifying, though? It's not C. It's not C++. It's not ASM. You're not going to accidentally implement a buffer overflow, you're not even going to accidentally stomp on Ruby stuff. You might find the Rust language itself intimidating but I'm not seeing what's scary about the integration itself.

</comment></comment></comment></comment><comment><USER4> Very cool. Same for Python, pretty please? :-)

<comment><USER5> IIUC, it's a standard FFI call; you should be able to use such a Rust extension in any language with standard FFI conventions.</comment></comment>


Apple Unlocked iPhones for the Feds 70 Times Before - <AUTHOR> http://www.thedailybeast.com/articles/2016/02/17/apple-unlocked-iphones-for-the-feds-70-times-before.html <comment><USER3> Unlocking the phone isn't the same as decrypting it. The article merely states that Apple extracted unencrypted content from a locked phone. In this case, the content is encrypted.

<comment><USER4> The article even acknowledges this, which makes the title essentially clickbait.

</comment></comment><comment><USER5> Being compelled to unlock a phone is different than being compelled to create software to unlock a phone.

<comment><USER6> And what about the situation in which FBI writes the custom OS and then force Apple to sign the update?

<comment><USER7> Won't happen, and the Supreme Court will shut it down. Check Congressman Tim Lieu's post on just this; it's really interesting.

<comment><USER8> Is this the post?

[https://lieu.house.gov/media-center/press- releases/congressm...](https://lieu.house.gov/media-center/press- releases/congressman-lieu-statement-apple-court-order)

It's Ted, not Tim, Lieu BTW.

</comment></comment></comment></comment><comment><USER9> Yeah end to end encryption I believe wasn't introduced until iOS 7 - <USER2> would mean that prior to that the device, while still locked - could be vulnerable to potential exploits allowing someone to grab at least some data that may be unencrypted from the phones storage

<comment><USER10> I found this article about the changes from 7 to 8:

[http://blog.cryptographyengineering.com/2014/10/why-cant- app...](http://blog.cryptographyengineering.com/2014/10/why-cant-apple- decrypt-your-iphone.html)

</comment></comment><comment><USER11> This has been posted multiple times. What they are asking Apple to do now is fundamentally different. They are asking Apple to create a custom firmware and push it to a phone that disables security protections that are there to protect YOU!

You think anyone really cares what's on that terrorist's work phone? They can already easily get call and text records from the ISP. Same with email records etc. This is a move to get Apple to create a backdoor into their phones.</comment>


SwiftScrollViews – An approach for managing text field over scroll view in iOS - <AUTHOR> https://github.com/RAJAMOHAN-S/SwiftScrollViews <comment><USER2> How does this library save time for a iOS developer.</comment>


Fun human computation games to produce high quality language translations. - <AUTHOR>

Although automated language translations are often sufficient to get a rough understanding, it would be better to use high quality translations to localize your site/app.
So the question is whether you can get high quality translations as the output of fun human computation games.
As an example, one can have a two-player ESP Game-like service where each player is shown a web page and a specific sentence to translate.  The game would check that all words used are indeed words from the target language.  The score obtained would be based on the similarity between the translations submitted by the two players.
A variant on this idea only requires players to know the target language.  The idea is to use Google Translate say as a first step to produce a rough translation.  The two players would be shown an automatically translated web page with a sentence whose translation is to be improved.  The game would check that each player submits a translation that is sufficiently different from what Google Translate produced.  Again, scoring would be based on the similarity of the translations submitted by the players. <comment><USER2> The game method sounds like a shady way. If you want to enlist the help of multi-lingual users, why not reach out to them?

"But while MySpace plans and launches its international sites in a more traditional way -- setting up local offices, getting entrenched in the culture and then launching, -- Facebook is building out its foreign language versions with the help of its vast and committed user base. Instead of setting up an office and a staff before launching in new countries, Facebook is putting its audience to work with an online Facebook application that allows translation by the Facebook community. To participate, Facebook users add a Translation Application to their account that they can use to translate, review and vote on translations in their language. Once the language translations are completed and quality has been verified by the community, the Facebook site in the new language is launched for all Facebook users.

Facebook is currently working on 22 more language translations, and many hundreds of users have left suggestions about other languages that they would like to see translated -- and have volunteered to help with the work."

[http://www.thestandard.com/news/2008/04/16/facebook-vs- myspa...](http://www.thestandard.com/news/2008/04/16/facebook-vs-myspace- battle-global-social-network-dominance)</comment>


The XSS Game by Google - <AUTHOR> https://xss-game.appspot.com/ <comment><USER2> Solutions: [http://pastebin.com/hv0h73eC](http://pastebin.com/hv0h73eC)

I'm posting because I find that whenever I can't solve some security puzzle, it usually means I didn't foresee an attack and I've been writing insecure code :( So hopefully people who get stumped can take a look at the solutions and determine if that's the case for them.

It'd be cool if someone wrote up explanations for each of these w/ links to relevant portions of Google's documentation.

<comment><USER3> I know you posted on pastbin with 'never' for a reason. But incase they ever shut down, here is the text:

      # lvl 1

      Enter `<script>alert('')</script>` into the search box.

      # lvl 2

      Use the `onclick` attribute of the font tag (hint is from       the first post, which shows `<font>` might be allowed for the purpose of changing colors. Winning message:

          blah

      and then click blah after posting the message. (or use   onload etc.)

      # lvl 3

      Modify the URL parameter so that you inject code into the   `<img>` tag:

          https://xss-game.appspot.com/level3/frame#1.jpg'   onclick="alert('')" alt='a picture called 1

      which will render as:

         html += "";

      on line 17 of the HTML file. Now click on the picture.

      # lvl 4

      Use `3'); alert('` as the value for your timer.

      # lvl 5

      Notice that if you type `javascript:alert('')` into your browser location bar, an alert will pop up. So we'll use   this as the location that the user is sent to on the signup page. Go the the URL:

          https://xss-game.appspot.com/level5/frame/signup?  next=javascript:alert('')

      and then click the `Next` link.

      # lvl 6

      The regex only notices lowercase https. So upload this JS file to some URL http://mysite.com/xss.js:

          alert('');

      and then go the the url `https://xss-  game.appspot.com/level6/frame#Http://mysite.com/xss.js`

      # Notes

      In an actual attack you'd use onerror or onload everywhere instead of onclick.

<comment><USER4> Level 6: You can exclude the protocol entirely (eg: "//news.ycombinator.com")

This will ensure the browser uses the "current protocol" as in if your website is browseable from http all request //www...com will be http and if your page is fetched using https, all resources starting with //www.hn.com will be loaded using https

if your website was reachable from protocol xyz://mydomain.com, all resources starting with // would be fetched using the xyz:// protocol

<comment><USER5> or you can simply add a space after #

</comment></comment></comment></comment><comment><USER6> Why does a

The value of a is .

</comment></comment></comment><comment><USER17> Did someone get why they prompt us to go to [https://tools.ietf.org/html/draft-hoehrmann-javascript- schem...](https://tools.ietf.org/html/draft-hoehrmann-javascript-scheme-00) ? I didnt get it.

The mechanism next=javascript:alert('') with the column how is it called? Are there exape of using anything other than javascript before column? it was a very great tutorial:)

</comment><comment><USER18> Got to the first one.

Okay, URL injection, that's easy:

Or not: that didn't work.

I had to remove the semicolon for it to notice my code. At that point I immediately closed the tab.

<comment><USER19> Do you... realize it's actually a live webpage your testing on? It's not like the server checks to see if you wrote exactly the right answer. It just checks to see if an alert is fired. If it didn't work, it's because you didn't do it right.

 most certainly works unless you have noscript.

<comment><USER18> Yes, but if you try

      https://xss-game.appspot.com/level1/frame?query=

it doesn't work.

      https://xss-game.appspot.com/level1/frame?query=

without the semicolon does.

I realize it's JS, but I can see it's just dumbly parsing what I've typed as opposed to eg overloading alert() (which can be done: [http://stackoverflow.com/questions/1729501/javascript- overri...](http://stackoverflow.com/questions/1729501/javascript-overriding- alert)) and demonstrating/using best practices in the source code to prevent the JS I type from actually damaging the demo itself.

For something that's _really_ interesting, search Pinterest for "reactjs", and see if you get the "Hack Pinterest" tile as your first result. _That_ was fun to play with!

<comment><USER20> Open your web inspector, set the console target to the iframe, and type "alert". Notice that the alert function is overridden.

Set your URL to [https://xss- game.appspot.com/level1/frame?query=a;b](https://xss- game.appspot.com/level1/frame?query=a;b). Notice that the ";b" is removed from the results page.

Challenge your initial assumption about the checker being stupidly naive. Notice XSS bugs in your own code afterwards.

<comment><USER18> Thanks. I'll admit this is a field I'm completely unfamiliar with. (I was actually considering bug bounty hunting in the future, thanks for the wake up call.)

I actually noticed the ; was being removed and am very confused as to why, but forgot to mention that in my earlier comment.

<comment><USER20> Full disclosure: I didn't bother to learn about why the ; is being split. But I can hasten a guess: the python web server treats that as a parameter separator.

... and confirmed.

[1] [https://www.google.com/webhp?q=webapp.WSGIApplication+semico...](https://www.google.com/webhp?q=webapp.WSGIApplication+semicolon) [2] [https://groups.google.com/forum/#!topic/google- appengine/Aai...](https://groups.google.com/forum/#!topic/google- appengine/Aai8ShndteA) [3] [https://www.w3.org/TR/REC- html40/appendix/notes.html#h-B.2.2](https://www.w3.org/TR/REC- html40/appendix/notes.html#h-B.2.2)

<comment><USER18> Ah, I see. That makes perfect sense, thanks for explaining it :)

</comment></comment></comment></comment></comment></comment></comment><comment><USER21> Hey, I just used this a few weeks ago as I was doing this course on web app security by Troy Hunt[0]

I didn't get far with it because it turns out that some browsers prevent the exploit, like Firefox and Safari.

[0][https://www.pluralsight.com/courses/hack-yourself- first?gcli...](https://www.pluralsight.com/courses/hack-yourself- first?gclid=CjwKEAiAmdXBBRD0hZCVkYHTl20SJACWsZj9cTLBFQsqJzN1Y1EwTHW_yGErNY- nkQLG8Q4mipLf8BoC7djw_wcB)

</comment><comment><USER22> _There will be cake at the end of the test._

The cake is a lie.

<comment><USER23> There you go...

                                                             -oooo:-
                                                            omhsoosho`
                                                            Ndo:``:oh-
                                                            dms+--+ym:
                                                            -ymhohdh+`
                                                             `N/`.s.
                                                              +:  +
                                                              --  :
                                                              --  o
                                                              ..  +
                                                              ::  s        ..`
                                                    .:sssso.  --  +     :syhhyo`
                                    ..::::.       `odhhyyhdd. ::  s    .mhhyhhdh.       -:...`
                                   /dhhhhhhs     .odddhyhdddh+y:  my-syhdhhyhhddy/`   .odhyyhh:
                                  yNdhyyoyhmo+::+ms/+++//++/odm:  NNmNd+///+++/+ody::omhyssyhdm-
                                -sddyyyyyyyoommmmmmdhyyyyyyhddd: `ddmdmdhyssyyhhmmNNNNdhyyyyyhmo-`
                            ``-omdyyyssys///shdddddddddmmdddhyy-``yhddddhhhhhdmmmmmmdd/oyssyyyyhmhss-`
                         `:ohhdmddhhyyyyyshddddhhyyyyyhddhhyo:-...--shhyysssyyhhdhhhddyyysyyyhdddmNNmyo.
                        /hNNmmd/:o+/////:`/osyhhyyys+syyhhyysysooossyyyyyooyyyyyyysyy+./oooooos/:ydNNmNmo.
                       +dNmmmmmhoo+///////oossshhyyyyyyyyssoossoosoosssyyyyyyyhsoyyyys/:-..--:/+sdddmmmNMy
                      `hNmmdmmdmddddhhhyhysso+.oyssssso-./o:-/+oo++oo--osoooooo..oyyhyyyyyyhhhyhdddmmdmNNN
                      `yNmNNhhdmdddhhhyyyyyyys:-......`./+++/:o++oo++/-````..::/+sysysyyyhsshhhydddmmmNNNN
                       sMNNNNNNmmdmdhhhhyyyyyyhhssssoo+oo/+//:/+//+:++++ooosyooyssosyyhhyhsshdhdmmNmNmmMMN
                       -NNNNNNhmNmdmmmdddddmhhhyyyyssys///+/:://////o+osoo+osoossosyhhdddh+omddmNNmmNmNMMN
                       oMNNNNNNNNdydNmmmmmdhydhhsoooodhydhsshys+soyooooosssyhyhymdhdhyddmmmdmNNNNNNmNNNMMM
                       yMMNNNMmmNdmmNNNNNNmh/sysyysyhyddmhhyhyhhddyyyhmddhhdmdddmmmdmmmmNNmmmNmNNNNmMNMMMM
                      .dMMNNMMNNNmNNNNNNmmNNhsddddNNdmhdmddyyhdhdhdddhdmhhdddhmddmmmNNNNNNNNNNNNNNNNMNMMMM
                      :NMMMNMMNMNhhmNNNNmdmNNmhddmdNmmmmmmddddNmdhdhddddmddmmmmmmNdNmdmmNNNmNNNNNdmMMMMMMM
                      -mMMMMMNNmNNmNNNNNNNNNNNdmmNmNmNmNmmNNmmNNdhddmmmmNmhhhyohNMNMNmmmmNdmNNMMMNNMMMMMMM
                      .dMMMMMMNNNMMMMMNNNNNMNmmmNNNmmmmNNdddmmNNNmmdNNmNNNmmNNNNNNNNNNNNNNNmNNNNNmNMMMMMMM
                      :NMMMMMMMMMMMMMMMNmmNMNNNNNNNmmNmNNNNmdmNNNNNNNmNNdmNNMMNMmNNNNNNMMNdmNNNMNmmMMMMMMM
                      :NNMMMMMMMMMMMMMMMMNNMNNMNNNMMMNNNNNNmNmdmmmNNNNNNmmNNNNNNNNNNMNNMMMNNNNMMNmMMMMNNMN
                      :NMMMNNMMMMMMMMMMMMMNNMMMMNMMMNmNNMNNNNNmhNMNNMNNNMMNMMMMMNNMMNNNMNMMMMNMMNNMMNMNMMM
                      `hMMMNdMNNMNNNNNMMNNNNMMMMMMMMNmNMMMMNNNNNNNdmmmMNMMMMMMNNMMNmdNMMNMNNNNMNmmNMNMMMMN
                       yMMMMNMMNMNmmNNNMNmddmMMNNNMNNNNNMMNNNNMNNNNNNNmNNNNNNNNNNNNNddNdmdmmNNMNNdMMMMMMMN
                       yMMMMNMNMMNNMMNNNNmdmmNMNNdhmMNNNNNNmNMMddddmNNNmNNMMNmNmmmmmNNmmmmNMMMMMMNNNMMMMMN
                       yNNNMMNNMMMMMMNNNNNMmmdNNNNNNNNNNNNmNNNNNmNmmNNNNNNNNNNNmNmNNNNNNNNNNNNNMMMNNMMMMMy
                       +MMMMMMMMMMMNNNNMMMNNNNmNNNMNMNNMNNmhdNNNNNmNNNmmNNNNNNNNNNNMMNNmNNNNNMNMNMMMMMMMN:
                        NMMMMNMMMMMMMNNNNNNdNMNNNNNNmNNNNNNNNNmmhNNNNmdNNNNNNNNNMMNNMNNNNNNNNNMMMMNNMMMNs`
                        -sdmNMNNMMMMMNNNNmmmmNNNMNmNMNNNNNNNMNmNNNNNNmmmdmNNNMNmmmmNMNNMNMmmNNMMMNMNmd+-`
                          `.ohNNMMNMMNMNNmdmNNNNNNmNMNNMNNNNmNNNmmmNmNMMNNMNNMMNNNNNNNNNNMMMMMMMNNho.`
                              :+hdNNNNNNNNNNNNNNmNNNNNNNMNNNmNNNNmMmmmNNNMNNNNNNNNMNNMMMMMNNmdds/-
                                 `--:+shddmmNmmmmNNNNMNNNMNNNNNNNNNNMMNMMMNNNmNNNMNNNNdh++/-.`
                                         `--++osdddddddysNmmhshmmmmmNmddddddho/:++/---
                                                        `-.-. .</comment></comment><comment>.

You have successfully completed the game!

<comment><USER22> Ceci n'est pas une pipe.

<comment><USER24> c'est quoi alors ?

<comment><USER25> notre fin

                                          ---/++:/oɥppppppɯuɯɯɯɯɯɥsɥɯɯusʎpppppppso++--`
                                  `˙-/++ɥpuuuuɯuuuɯuuuɯɯɯuɯɯuuuuuuuuuuɯuuuɯuuuuɯɯɯɯuɯɯppɥs+:--`
                              -/sppɯuuɯɯɯɯɯuuɯuuuuuuuuɯuuuɯɯɯɯɯuuuuɯuuuɯuuuuuuuɯuuuuuuuuuuuuuupɥ+:
                          `˙oɥuuɯɯɯɯɯɯɯuuuuuuuuuuɯɯuuɯuuɯɯuɯuɯɯɯuuuɯuuuuɯuuɯuɯuuuuuuɯpɯuuɯuɯɯuɯɯuuɥo˙`
                       `-+pɯuɯuɯɯɯuuɯɯɯuɯuuɯuɯɯɯɯuɯuuuɯpɯɯɯuuuuuuɯuɯuuuuuuuɯuɯuɯuuuɯɯɯɯuuuuɯɯɯɯɯuuɯuɯps-
                      `suɯɯɯuuɯɯɯɯuuuuuuuuuɯuuɯɯuuuuuuuuupɯuuuuɥɯɯuuuuuuuuuɯuuuuuuɯupuuuuuuɯɯɯɯɯɯɯuɯɯɯɯu
                      :uɯɯɯɯɯɯɯuɯuɯuuuuuɯuuɯɯuuuuuuuuuuuɯɯuuuɯuuuuupɥɯuuɯuuɯuɯuuuɯuuuuɯɯɯuuuuɯɯɯɯɯɯɯɯɯɯɯ+
                      ʎɯɯɯɯɯuuɯɯɯuuuuuuuuuuuuuɯuɯuuuuuuuuuuuɯɯuɯuuuuuɯuuuuuuuuuuuupɯɯɯuuuuuɯɯɯɯɯɯuuɯɯuuuʎ
                      uɯɯɯɯɯuuuɯɯɯɯɯɯuɯɯɯɯuuɯɯɯɯɯuɯuɯɯuuɯuuuɯppppɯɯuɯuuuuuuɯɯɥpuuɯuɯɯpɯuuuuɯɯuuɯɯuɯuɯɯɯɯʎ
                      uɯɯɯɯɯɯɯpuuɯuuɯɯpɯpuppuuuuuuuuuuuuuɯuuuuuuuɯuuuuɯɯuuuuuɯuuuɯɯɯppɯuɯuuuɯɯuɯuɯɯuɯɯɯɯʎ
                      uɯɯɯɯuɯuɯɯuɯuuuuɯuɯɯupɯuɯɯuuɯɯɯɯɯɯuɯɯɯɯpuuuuuuuɯɯɯɯuɯuɯɯɯɯɯɯɯɯuuuuɯɯuuuuuɯuuɯpuɯɯɯɥ`
                      ɯɯɯuɯuɯɯuuɯɯuɯɯɯɯuɯuuuɯɯuuɯɯɯɯɯuɯɯuuuɯuuɯuɥɯuuuuuɯuuɯuɯɯɯuɯɯɯɯuuɯɯɯɯɯɯɯɯɯɯɯɯɯuuɯɯɯu:
                      uɯuuɯɯɯɯɯuɯɯuuuuɯɯɯuuɯuuuuuuuuuuɯɯuuuuuuɯɯɯpɯuɯuuuuuuɯɯɯuuuɯuuɯuuɯɯɯɯɯɯɯɯɯɯɯɯɯɯɯɯuu:
                      ɯɯɯɯɯɯɯɯɯuɯuuuɯpuɯɯuuuuuuɯɯuɯɯuuɯpuuɯuuuuuuuɯpɯuuuuɯuɯɯuuuuuuuɯuɯɯuɯɯɯɯɯɯɯɯɯɯɯɯɯɯɯu:
                      ɯɯɯɯɯɯɯuɯuuuuuɯuuuuuuuuuuuuuuuɯɯuuuɯuupɯɯuuuɯɯpppuuɯɯɯɯuuuɯɯɯuɯuuuuuɯɯɯɯɯuuuɯɯɯɯɯɯp˙
                      ɯɯɯɯɯɯɯuuɯɯɯuuɯpuɯɯɯɯuɯuɯuɥoʎɥɥɥɯuɯɯɯɯppɥpuuɯɯuuɯɯuɯuɯuɯuɯɯpuuuuuuuuuuuɯuuɯuuɯɯɯɯɯɯ-
                      ɯɯɯɯɯɯɯɯpuuuuuɯuuuɯɯpɯupuɯɯɯɯɯɯppɯppppɥpɥpɯuppppɯɯɯɯɯɯupɯppɥɯuuɯpɯuuuuɯɥɥuɯuɯɯuɯɯɯu:
                      ɯɯɯɯuɯuuuuuuuuuuuuuuuuɯɯɯppɯɥpppɥɥɯpɥpppɥpɥpɥʎʎppɯpɥɯpuuppppsɥuuɯɯuuuuuuɯuuuɯɯuuɯɯp˙
                      ɯɯɯɯuɯɯuuuuɯuɯɯɯuuɯɯɯɯpɯɯɯpppɯpɥɥppɯɥʎʎʎppɥɥʎɥʎɥɥɯppʎɥʎsʎʎsʎs/ɥɯuuuuuuɯɯpuɯɯɯuuuɯɯʎ
                      ɯɯɯuuuɯuuuuuuɯpɯɯɯppʎɥpɥpɯʎɥʎɥʎsssoooooʎos+sʎɥssɥpʎɥpoooosɥɥpʎɥpɯɯɯɯɯupʎpuuuuuuuuɯo
                      uɯɯuɯuɯɯuuɯppɯo+ɥpppɥɥʎsossooso+ooso+o//////::/+///sʎssʎʎʎʎɥɥɥɯpppppɯɯɯpɯuɯɥuuuuuu-
                      uɯɯɯɯuɯuɯɯpɥpɥssɥʎɥɥʎʎsossʎooʎsooo++++:+//+/://+/oo+oossssɥɥʎʎʎʎʎʎɥɥɥɥpɯpɯɯuuuuuuɯs
                      uuuuɯɯɯpppʎɥɥɥssɥʎʎʎsʎsʎs+/::˙˙````-/++oo++o:/+++/˙`˙˙˙˙˙˙-:sʎʎʎʎʎʎʎɥɥɥpppɯpɥɥuuɯuʎ`
                      uuuɯpɯɯpppɥʎɥɥɥʎʎʎʎʎʎɥʎʎo˙˙ooooooso--oo++oo+/-:o/˙-osssssʎo˙+ossʎɥʎɥɥɥppppɯpɯɯpɯɯuɥ`
                      ʎɯuɯɯɯppps+/:--˙˙-:/sʎʎʎʎosɥʎʎʎʎʎʎʎsssoosoossoossʎʎʎʎʎʎʎʎɥɥsssoo///////+ooɥɯɯɯɯɯup+
                      ˙oɯuɯuupʎ:/soooooo/˙+ʎʎsʎʎʎʎʎʎʎooʎʎʎʎʎssooosʎsʎʎɥɥʎʎs+sʎʎʎɥɥʎso/`://///+o:/pɯɯuuɥ/
                        ˙oʎɯuuɯpppɥʎʎʎsʎʎʎppɥɥɥpɥɥʎʎsssʎʎɥɥs--˙˙˙-:oʎɥɥppɥʎʎʎʎʎɥɥppppɥsʎʎʎʎʎɥɥppɯpɥɥo:`
                          `-ssɥɯɥʎʎʎʎssʎo/ppɯɯɯɯɯɯpɥɥɥɥɥppppɥʎ``-ʎʎɥpppɯɯpppppppppɥs///sʎssʎʎʎpɯo-``
                              `-oɯɥʎʎʎʎʎɥpuuuuɯɯɥɥʎʎssʎɥpɯpɯpp` :pppɥʎʎʎʎʎʎɥpɯɯɯɯɯɯooʎʎʎʎʎʎʎpps-
                                -ɯpɥʎssʎɥɯo::ʎpo+/+++///+puɯuu  :ɯpo/++//+++/sɯ+::+oɯɥʎoʎʎɥpuʎ
                                 :ɥɥʎʎɥpo˙   `/ʎppɥɥʎɥɥpɥʎs-ʎɯ  :ʎ+ɥpppɥʎɥpppo˙     sɥɥɥɥɥɥp/
                                  `˙˙˙:-       ˙ɥpɥɥʎɥɥɯ˙    s  :: ˙ppɥʎʎɥɥpo`       ˙::::˙˙
                                                `oʎɥɥʎs:     +  --  ˙ossss:˙
                                                  `˙˙        s  ::
                                                             +  ˙˙
                                                             o  --
                                                             :  --
                                                             +  :+
                                                            ˙s˙`/u`
                                                          `+ɥpɥoɥɯʎ-
                                                          :ɯʎ+--+sɯp
                                                          -ɥo:``:opu
                                                          `oɥsoosɥɯo
                                                            -:oooo-

<comment><USER24> Pas mal, j'imagine que tu as fait un script pour renverser le truc..

</comment></comment></comment></comment></comment><comment><USER26> I made it past level 2 but I am curious why the second hint is true. Can anyone provide some insights?

<comment><USER27> I think it's because the .</comment></comment>


Dealing with Unicode in Go - <AUTHOR> https://coderwall.com/p/k7zvyg

<comment><USER2> Here's Rob Pike on this issue:

[https://groups.google.com/d/msg/golang- nuts/1yL7IsqADSw/GS8F...](https://groups.google.com/d/msg/golang- nuts/1yL7IsqADSw/GS8Fex5BCbkJ)

Golang's Unicode support (in 2012 at least) is "less than rudimentary".

In practice, I find Go's Unicode support superior to all the other languages I've shipped with --- C/C++, ObjC, Ruby, and Python, mostly --- mostly because it draws a line between "strings" and "byte vectors" (the way Cocoa does with NSData/NSString) and has a solid UTF-8 library. Your support for Unicode does need to be explicit and somewhat hand-rolled, but unlike (say) Ruby, the language doesn't trick you into thinking you're handling Unicode when you're not, and unlike Python, handling Unicode doesn't push you into an alternate type space.

(Conceding rapidly: I've shipped the least amount of code in Python and there is probably an elegant Pythonic solution I'm just not aware of).

</comment><comment><USER3> I commented on the article, but here as well. When dealing with unicode in Go you should be converting strings to []rune

<comment><USER4> Is rune "right" even? I thought that rune was a single codepoint. How does that behave in the presence of combining characters or in non normalized unicode strings?

<https://twitter.com/glitchr_>

<comment><USER3> Yes it is a single codepoint. Normalization is a whole other issue, and a much less trivial one.</comment></comment></comment>


Wikipedia to Add Layer of Editing to Articles - <AUTHOR> http://www.nytimes.com/2009/08/25/technology/internet/25wikipedia.html?hp

<comment><USER2> Unless I'm badly misunderstanding [http://en.wikipedia.org/wiki/Wikipedia:Flagged_protection_an...](http://en.wikipedia.org/wiki/Wikipedia:Flagged_protection_and_patrolled_revisions) the article is misleading (and the title given here, which is not the same as the one currently appearing at the top of the NYT article, even worse).

1\. The NYT title has "some articles" where the title here has "articles". The title here gives the impression that WP is about to start imposing extra restrictions everywhere, which it certainly isn't. The pages targeted by this measure are biographies of living people.

2\. The page I linked to above, unless I'm all confused, says that what's actually going to be done is to allow BLP pages to be protected from vandalism using the flagged-revisions mechanism instead of the (already existing, already frequently used) protection/semi-protection mechanism. So even BLP pages won't be affected by default, but only when an admin specifically takes action.

</comment><comment><USER3> You know what Wikipedia needs? Game mechanics. Give every registered user x number of commits/edits/reversions. Jack up x based on participation and commits/edits/reversions that "stick". This way, new people can still add stuff (because editors can't infinitely revert) but can't just make a bunch of spam accounts to flood the site.

Obviously, you still do the IP address/superuser stuff as additional checks, but this increases the penalty for adding useless stuff or deleting useful stuff just because you didn't do it.

<comment><USER4> How about a more indirect approach. You could make a Yahoo Answer's type site using Wikipedia. People are encouraged to ask questions about particular sections that they don't understand or are lacking information and then points are given for answered questions with citations.

Or you could do something like this [http://www.cs.washington.edu/homes/raphaelh/publications/chi...](http://www.cs.washington.edu/homes/raphaelh/publications/chi2009.pdf) and then reward answers with points.

<comment><USER5> Check out Mahalo Answers? (<http://www.mahalo.com/answers/>) I think this is basically exactly what you are describing.

I do thank you for the link to this Kylin project. That was a confounded read but this team is definitely trying to do something amazing.

</comment></comment></comment><comment><USER6> "The change is part of a growing realization on the part of Wikipedia's leaders that as the site grows more influential, they must transform its embrace-the-chaos culture into something more mature and predictable."

This seems like flawed logic to me.

<comment><USER7> Wikipedia is increasingly conscious of being sued by public figures because of the high profile vandalism cases that occur with some regularity.

<comment><USER8> It's not an issue of being sued. The DMCA protects us, and always has. It's an issue of culture - people want to be 'respectable'. They don't have the mental toughness to stay the course; they're traumatized by bad PR.

Consider the Seigenthaler incident: the moment the bad PR started piling up, Jimbo rolled over and instantly banned anonymous page creation. Did this stop bad pages from being created? No. Did this harm the community? Yes. Was it done without consultation? Yes. Has it proven utterly useless and likely wouldn't've stopped the original page from being created? Yes. Did it destroy a valuable source of information for New Page patrollers? Yes.

Yet, it allowed Jimbo to face the press and bleat that Something Has Been Done. Flagged revs is much the same.

<comment><USER7> I agree. As a Wikipedia admin since 2004, I'm upset by the increasing hesitance of long-term editors to allow anonymous IPs to explore and edit. One wonders if they can even remember when they were a green anonymous IP editor, adding content or fixing typos, before being wholly sucked into the wiki- world.

I too wish that Jimbo were more stubborn in sticking to his principles of openness. But openness seems to be giving way to consensus. And the admins on IRC seem to have his ear on vandal fighting.

However, if flagged revisions are meant only to replace protected and semi- protected article status, then I think it's a good move. Because it allows people to edit and hash things out, even if the changes aren't immediately shown to the public. This is better than simply locking all users out. One hopes that we can curb the proliferation of flagged revisions, but I'm not sure one will be able to stop its expansion to nearly everything in Category:Living people.

<comment><USER8> (Hey, an admin of my generation! Not many of us left.)

Reading the _second_ poll, it seems that the plan is to apply it to all BLPs immediately. I only hope it stops there.

</comment></comment></comment></comment></comment><comment><USER9> The backstory to this is that it's just as likely that flagged revisions will _open the encyclopedia up_. Wikipedia already has a mechanism to keep people from editing controversial pages: "protection". A protected page can't be edited by anyone but an admin. "Flagged" pages are more open than the protected/semi-protected pages.

<comment><USER8> You know, that _exact same_ argument was made about semiprotection.

Do you know what the result was? A small fall in full protection - and a massive expansion in semiprotection (and thus protection in general).

<comment><USER9> But full protection is an extreme measure, and semi-protection is far less extreme, which mostly impacts anonymity.

A tiny minority of WP pages are even semi-protected.

Flagged revisions falls somewhere between semi- and full-, and will likely be used accordingly.

<comment><USER10> You know, I've never quite understood why logged-out editing is associated with "anonymity". You're far _more_ anonymous logged in as a pseudonym than you are as a logged-out IP address.

<comment><USER8> Not always; it's only true when each IP = one editor, in which case it is indeed less anonymous than pseudonyms.

Pseudonymous editing can be much less anonymous - consider if you are editing from behind AOL's dynamic IPs, or from one of the IP addresses that proxy entire _countries_. That is, if you're a Qatari editor, editing anonymously means your edits could belong to any subset of ~1.5 million people; if you edit pseudonymously...

</comment></comment></comment></comment></comment><comment> brown9-2 Maybe I'm alone here but the part of the article about the NYT working with wikipedia for the past 7 months to censor information about their kidnapped journalist is more troubling to me than the article/Wikipedia change itself.

I understand their reasoning - and that thankfully it worked since the reporter is now safe - but doesn't it seem really odd for a leading newspaper to admit to working to censor news?

Not to sound completely paranoid or cliche but... Where does the NYT / Wikipedia draw the line on something like this? Is WP working with any organizations to censor information?

</comment><comment><USER11> From what I can see, the idea makes sense. They already have levels of protection that can be applied to pages when they feel it's necessary, and this seems to be an extension of that. The only big difference is that it still allows contributions from untrusted users if someone is willing to verify it.

That said, it seems like there is some sentiment that this ought to be something that is put in place over a widespread portion of the site. I don't know what the actual numbers are, but I have a hard time believing that there are enough volunteers for that without stagnating the site. As I said before, this seems like an extension of the protection system, and it ought to be applied in a similar manner.

<comment><USER10> > As I said before, this seems like an extension of the protection system, and > it ought to be applied in a similar manner.

And, indeed, this is how it is being applied. Edits to most articles will still be visible immediately, but some articles which have been chosen for "flagged protection" will require edits to be reviewed before they go live. See <http://en.wikipedia.org/wiki/WP:FLPPR> for details.

</comment></comment><comment><USER12> I dislike the fact that they chose the term "flagged", which, in a lot of other contexts, implies "flagged for review". On wikipedia, instead, an article revision is flagged because it's been reviewed.

This annoys me about as much as the fact that Ctrl + Mouse Scroll Wheel works backwards in Firefox versus every other browser out there (Ctrl + Scroll Up actually makes the text smaller, which is completely unintuitive. Up means taller, bigger, stronger! Who screwed that up?)

Also, they drive on the wrong side of the road in Britain! The first two problems are worth fixing... I guess the third one can't be helped.

<comment><USER13> Scrolling up means that you rotate the top of the wheel away from you. As things move away they become smaller, not bigger! I think Firefox has it correct, and the other browsers are wrong...

Similarly differing interpretations of controls occur in first person shooters with (non-)inverted mouselook.

<comment><USER12> Yes, the scroll wheel itself moves in a horizontal plane, but it triggers a vertical action on the computer screen. Nobody with any experience handling a mouse is thinking about the mouse itself, but only about the effect it will produce on the screen.

The "move towards" / "move away" analogy falls apart because the screen is a vertical plane. "Up" is more intuitive than "away", and "down" is more intuitive than "towards". You may even see an example of this intuition in how people talk about using the scroll wheel: nobody says "scroll towards" or "scroll away". The FF people who came up with the backwards convention must have been looking at a mouse without thinking about its common use cases.

</comment></comment></comment><comment><USER14> The "flagged revisions" UI was utterly horrendous the last time I used it, way beyond the knowledge of the average user. I hope they've tidied it up since then.

</comment><comment><USER15> This headline is confusing, to me anyway. In my mind, Wikipedia already has a layer of "editing", but what they mean is a layer of _editorial_ , which to my mind is very different.

<comment><USER16> Well, the New York Times uses the journalistic sense of the word "edit" whereas you use the sense popular among programmers.

</comment></comment><comment><USER17> I think this is a breach of trust with wikipedia users (in a way).</comment>


Superheroes a 'cultural catastrophe', says comics guru Alan Moore [2014] - <AUTHOR> https://www.theguardian.com/books/2014/jan/21/superheroes-cultural-catastrophe-alan-moore-comics-watchmen?CMP=share_btn_tw <comment><USER3> Moore says:

> I would also observe that it is, potentially, culturally catastrophic to > have the ephemera of a previous century squatting possessively on the > cultural stage and refusing to allow this surely unprecedented era to > develop a culture of its own, relevant and sufficient to its times.

And Tolkien said:

> There was Greek, and Celtic, and Romance, Germanic, Scandinavian, and > Finnish [mythology] (which greatly affected me); but nothing English, save > impoverished chap-book stuff. Of course there was and is all the Arthurian > world, but powerful as it is, it is imperfectly naturalized, associated with > the soil of Britain but not with English; and does not replace what I felt > to be missing.

I see "comic book" universes as evolving into a modern mythology, complete with monsters, heroes, and gods. So I would disagree with Moore about the merits of comic book stories. They may be "squatting" on the cultural stage, but maybe the same way that King Arthur and Ulysses do.

I expect, in a thousand years, when Superman and Wolverine are aged and in the public domain, the parallels between them and Beowulf and (non-Marvel) Odin will be even more clear.

<comment><USER4> I feel like you're missing his whole point, which is the use of superheroes as a kind of escapism from the complexities of life. Citing superficial similarities to mythical figures is just a way of sidestepping his actual arguments.

<comment><USER3> > Citing superficial similarities to mythical figures...

I think you missed why I quoted Tolkien. There's something compelling about a common mythology for a culture. The modern cosmopolitan culture, American especially, doesn't have an ethnic, racial, or language identity to fall back on when exploring identity, struggle, the merits of sacrifice, moral issues, etc. Mythological figures allow us to explore these themes in a less traumatic way.

You can _call_ that "escapism", I guess, but I think The Dark Knight was one of the few films that wrestled with the War on Terror in honest ways. It _had_ to be a mythological film (Batman v. Joker) because the same subject would have gone over rather poorly in one way or another if it were an actual terrorism/spy thriller or something.

Anyway, I think Tolkien wasn't exactly wrong to pine for an exploration of culture, language, and identity through mythological archetypes. He, in particular, wanted non-borrowed ones. We are sort of in the same boat since nearly _all_ content is borrowed in a global market.

<comment><USER4> I get the idea of having some sort of shared cultural touchstones. But there are plenty of candidates for that role.

Not to belabor the point, but why the guys in tights and not, say, the characters from the Abrahamic faiths? Well, you say, it's dangerous to mix faith with fantasy. But that's exactly what the old myths did and what Tolkien could do by implicitly associating his stories with Christianity, and exactly what Batman will never be. So much for the structural similarities between the Superman and Hercules.

But, again, this is all beside the point. The devil is in the details. There might be nothing inherently wrong with making superheroes the source of a shared cultural vocabulary about "spiritual" questions: what is right, what is wrong, what is bravery, etc. But how has it actually unfolded, in the world, right now? Again, Moore argues that, in the concrete, it has led to a kind of infantilism.

You bring up the Dark Knight. I don't personally like what I took away as the message of the Dark Knight, but I understand if you do. But can you name a single other example with actual critical value? Or do the vast majority just serve to make unhappy people, sleepwalking through life, continue unhappily sleepwalking?

</comment></comment></comment></comment><comment><USER5> I don't see how this is news. Alan Moore has been decrying and hating on superheroes for the entirety of his career, for largely the same reasons throughout. This is great when it's communicated through his work - <USER2> what comics could be without superheroes, or critiquing the genre from within (Watchmen and Marvelman/Miracleman reboot come to mind), but his personal disdain for the consumers of his products is odd to me.

This has been a half formed thought bouncing around in my head, but I think part of the reason for the resurgence of comic books and superheroes is the simple fact that we live in a complex world where there are very few instances of Good and Evil. We live in a subtle, complex, and nuanced world, where if you take the time to dig in to an issue, you find more complexity...and a lot of really morally compromised people. We don't live in a Good/Evil world, but we want to. I think that comics are a retreat from that, a mental/moral bulwark that gives us an outlet for our need for Right and Wrong. We might not be able to figure out <insert political issue> without coming to blows, but we sure as hell can agree that Thanos is a piece of shit, and that Batman is wicked cool.

Is this a retreat from reality? Sure, but we need that. Moore is wrong here to suppose that adults need to be doing Adult Things at all times. The world is hard enough as it is - taking a few hours respite from it is hardly a crime.

<comment><USER6> I think his problem is more along the lines of:

Rather that an entire country or group of people getting angry because people in power are morally corrupt they're just watching the latest Iron Man and discussing pointless things like Art Direction and the Actresses Performance.

<comment><USER7> At least the distraction now isn't blood on the sands of the arena, or burning witches. Most people want to be distracted most of the time, with sports, sex, drugs, music, movies, tv, books, learning new things, family... it's called living. We can't all be joyless pricks like Moore, who haven't learned even the simplest lessons or history.

"There can be no disputing matters of taste."

</comment></comment></comment><comment><USER8> I wholeheartedly agree. More than the simplistic worldview they offer, what I I find distressing in superheroes culture (that contaminated other genres as well) is that it promotes a narrative of the providential individual, set to save the day. Teams are 4 or 5 persons max, bigger organizations are seen as either evil or incompetent.

We are losing the taste for collaborative work. We are promoting the idea that only a single individual can make things better. The idea that the humble contribution of the masses can amount to a powerful wave are totally lost.

<comment><USER9> Exceptional individuals making a difference has been the stock and trade of almost all fiction, of religious and mythical literature, and even a lot of non-fiction like biography and history, for thousands of years.

You have a tough road ahead of you if you want to convince most creators that this is the wrong direction.

That said, there have been some literary periods when writing about ordinary, completely unexceptional individuals was fashionable, and I suppose it still is in some circles.

<comment><USER8> Fiction has always focused on heroes, but organizations used to play a bigger part, especially for the generation that remembered WWII.

Take the Star Wars franchise. Most of the original trilogy is about a bunch of heroes helping a huge resistance movement against a bigger empire. In the end, the heroes are the drops that tip the scale in the rebellion's favor, but the rebellion had to push all their might to make that possible.

Look The Force Awakens: a bunch of clueless heroes, dismissing the while rebellion, manage to make a big thing go boom with almost no external help.

</comment></comment></comment><comment><USER10> It sounds like Alan Moore has had enough of the media and journalists. Well meaning that they may be individually they are collectively like a passive- aggressive narcissist eager to latch on to the slightest thing to bring the man down. It sounds to me that he just wants to get out of this abusive relationship and get on with his life.

The point of the article - that there is something weird about grown adults and their willingness to live in the comicbook rather than real world - is a fair point.

At some stage we crossed over from only seeing 'comic' based movies as kids where adults would only go to escort their children to what we have now. Now grown ups with no children of their own or signs of learning disabilities can go and watch this comic-superhero rewrites on the big screen and talk about how great the acting, story and everything else was, as if it was serious art that they had seen.

There have been too many occasions over the last few years where it has been much too easy to hide away and watch these comic super-hero movies than endure what has been going on in the world. Times like when Iraq was being bombed to pieces, why engage with that when you can spend all week thinking about some make-believe movie?

This is not to dismiss the craft, dedication, skill and effort that goes into these movies or to deny the pleasure that they do bring to people. However, how did it happen that movies for kids became movies for grown ups?

<comment><USER11> Could it be because the kids who these stories were initially aimed at, grew up and became adults, DC/Marvel realised they could "adultify" the plots and appeal to the same audience now 20-30 years older to expand their demographic leveraging nostalgia and thus make more money?

<comment><USER12> I'd argue that the vast majority of superhero movies are engineered through focus-group testing to be as palatable to as many people as possible that they become bland.

Logan was the only genre movie in recent memory that eschewed this formula and confronted the messy topic of the senescence of the age of the superhero.

<comment><USER13> Which is an interesting counter-point to Alan Moore: just because a (sizable) portion of superhero movies aren't thrusting culture forward, doesn't mean that they have to be.

Having familiar characters in a known environment can certainly help pick the audience up to get them to a point where more complex topics become palatable. The fact that these characters are "superheroes" is incidental, and not terribly important to the overall plot of the movie.

<comment><USER12> That's a fair analysis. They are blockbusters first, and superhero movies second. I do hope that the genre will evolve towards more interesting topics beyond Good vs. Evil. The Dark Knight showed a nuanced view of how one cannot exist without the other, even within one hero's mythos itself. Unfortunately movies like The Dark Knight and Logan that are willing and capable of tackling nuance and complexity in a feature film aren't common for the genre.

</comment></comment></comment></comment></comment><comment><USER9> Moore's own words in full[1] are far more interesting, provocative, and well- written than this Guardian summary.

[1] - [https://slovobooks.wordpress.com/2014/01/09/last-alan- moore-...](https://slovobooks.wordpress.com/2014/01/09/last-alan-moore- interview/)

<comment><USER14> Alan Moore has dedicated his life to writing comic books and hating Grant Morrison.

</comment></comment><comment><USER15> I think he's overstating Marvel/DC's cultural significance. The new generation of viewers have a very different moral sensibility. The evil is much more shockingly evil, but the good is less cartoonish and more relatable, and therefore more vulnerable.

I just finished watching the new Stranger Things season. One of the things I love about that show is that it juxtaposes the 1980s kids' sci-fi genre with a storyline that would have been totally intolerable to the consumers of that genre back then. The tone that results is kind of this weird combination of nostalgia and tragedy.

<comment><USER16> His lament seems to be the cartoonish worlds were for kids to indulge in, while they formed ideals of good and bad, etc. However, today's comics audience is a mature audience seeking escapism rather than one forming its moral compass.

<comment><USER17> I dunno. I don't think it's such a clear-cut situation. I definitely just read comics because it is something to do and I like contemplating the stories.

But as a kid I suffered long term child abuse and it was about escapism for me from day one growing up. I seriously talked myself out of suicide more than once on the premise that I would get to find out what happened in the next episode of ______.

But now I'm older, away from those horrible people and have much less to escape from... It's more about the intellectual curiosity, and yes, the dilemma of good vs evil.

Upon reflection, my experience is literally the opposite from what you and Moore are claiming.

</comment></comment></comment><comment><USER6> Half formed thought, but are today's superheroes last generation's Clint Eastwood/Steve McQueen/John Wayne?

<comment><USER18> I have sometimes looked at old cinema and wondered, "Why did they make so many Westerns?" I figure that in some decades people will be looking at our time and asking, "Why did they make so many superhero movies?"

<comment><USER19> > so many superhero movies

That's overlooking the plague of zombie stories since the turn of the century. They were pretty rare, and then, boom, you can't move without bumping into one of the things.

My pet theory is that we're reduced to beating up the dead because they can't complain.

<comment><USER6> I had a good laugh at your theory. Every other person cannot be bad so we have to attack things that are mindless.

I guess you can put aliens and AI robots in that theory as well. Except both of those have the potential to be understood.

Zombies can't be cured! Our only choice is to kill them! My Conscience is Free!

</comment></comment></comment></comment><comment><USER20> Alan Moore alternates between trashing mainstream comic companies and cashing their checks.

DC is a villain to Moore because he willfully traded away the rights to his greatest creation (Watchmen) and then watched them cash in on it.

Moore is a great writer but a poor (contract) reader and he's been ranting about it ever since.

<comment><USER21> Condescending and unnecessary. How do you know he's a poor contract reader? Compared to whom, you? Do you know exactly what position he was in at that time? Have you ever been in such a position? Do you make art independently for a living, or even try?

<comment><USER20> it's clear you've decided to chime in on the conversation despite having no familliarity with Moore, which is why you have nothing more to offer than a lame sequence of pointless jabs

DC comics bought the rights to Watchmen fair and square but Moore will never let it go, he made many early claims to want to be the greatest comics writer in history...but he just ended up making someone else money

you could have learned most of this from Google in the time it took you to paste your canned response

</comment></comment></comment><comment><USER22> Reading this again, I cannot miss the irony that Alan is accusing our culture of the very thing he has done - retreat from the complexities of conflicts in our modern culture. Racism and sexual violence are at the top of that list. FWIW, discussing either of those topics as a white, middle-class, middle-aged male doesn't come with a lot of natural/implied moral authority. For the philosophically inclined among that group, in which I'll include myself, we are used to starting these kinds of discussions with the premise of our natural-born right to contribute (as he argues for - i.e. otherwise all identity politics excludes those without the identity, effectively killing the concept of political discourse). For my part, I've come to the conclusion that the greatest good we can do is support the voice of those who clearly have a natural right to speak about those issues by virtue of experience. One way to do that is to be the listener as they take the pulpit. Not because what they have to say is inherently the correct view, or ours is inherently not, but because they do deserve the forum to figure out an answer to these problems that can work for them and society- a forum they have been denied. I share Thomas Jefferson's view that the principles we cherish, that were developed over millennia, were formed through vigorous debate amongst those with a natural-born right to the outcome. I'm more curious to learn what is invented when we support the forum vs. position ourselves as a group being victimized by the vehement demand for our silence. While the vehemence is off-putting, it may also be a signal of how great a wrong has been done. We cannot exclude the later if we are unwilling to be patient with the former. I'm reminded of my gratitude for how many second chances society has given me. It seems common decency to pay it forward.

<comment><USER23> Even if you agree that it's preferable that certain topics be addressed by particular groups are are most affected by them — at the time Alan Moore was writing originally, that wasn't an option. Either a white male wrote about it or it didn't get written about, for the most part. He (and the rest of the British Invasion) opened a lot of doors for various topics to get addressed in mainstream comics for the first time.

Since then, the doors have opened wider for a more diverse group of writers in comics, and that's a good thing, but I don't think you should be too angry at Alan Moore for at least trying to address complex issues in an intelligent way.

<comment><USER22> Good point, he was a pioneer in bringing those topics to the art form. His response didn't anger me, it just struck me as less than consistent with his justification for withdrawing from the public debate.

<comment><USER24> He is NOT withdrawing from public debate. His works are a part of and a contribution to this debate, and as far as I know he have no intention of stopping working. He is just wants to withdraw from the journalistic social media shitstorms based on limited readings and misunderstandings of his works.

</comment></comment></comment></comment><comment><USER25> From 2014.

<comment><AUTHOR> thank you, I edited the title to include the date.

</comment></comment><comment><USER26> too bad we can't call on a superhero to save us from this cultural catastrophe

</comment><comment><USER27> Perhaps comics are beginning to fill the void left by retreating religion.

It is comforting to imagine a world in which things make sense, where good triumphs over evil, where you have an opportunity to be a part of something larger than yourself; especially when you're working a dead end job and you feel like your nation is falling apart.

Unfortunately, unlike most religion, comics and comic based films are lacking in the "nutrition" that religious escapism can provide, in the way of community and self improvement, so we end up with man children withdrawing from society.

It is ironic, I think, that the waning of religion in the first world may be very much double sided. Perhaps we as a society are not prepared for secularism, and this may manifest as a moral crisis wherin people on average still require external guidance for morality and ethics.

<comment><USER9> _" Unfortunately, unlike most religion, comics and comic based films are lacking in the "nutrition" that religious escapism can provide, in the way of community and self improvement, so we end up with man children withdrawing from society."_

Rejection of society and worldly things, and withdrawal from them both has been a rather common practice in religions for millennia. Religious hermits and ascetics, and moralists escaping or otherwise rejecting corrupt society are a pretty regular staple of religions the world over.

Superheroes could be a seen to be a kind of echo of that, in so far as they are usually pretty moralistic and extreme in their world-rejection and escapism, if you prefer to view it that way.

Something of that speaks to their fans, who are also greatly dissatisfied with the world, yet usually don't have what it takes to escape, so they escape vicariously -- through their movies, comics, and books where live heroes that can.

<comment><USER27> I dont think the people who withdraw into the world of comics do it for quite the same reasons as " Religious hermits and ascetics, and moralists".

This seems to be a newer phenomenon, possibly because we now live in a time where it is possible to contribute little and still survive for the majority of a population.</comment></comment></comment>


Ask HN: What's the dress code for YCNYC? - <AUTHOR>

Does anyone know what the dress code for the YCNYC event is? Are we sporting suits, or should we pack our hoodies? Even if there's no dress code - what's everyone planning on wearing? What's the best-practice for events like these?<p>Cheers <comment><USER2> In life, I've always lived by this rule: Always dress like you are going somewhere more important later.

<comment><USER3> I prefer to dress as if I may be presented with an opportunity to take a nap, in which case I will want to be very comfortable. Seriously though, I will likely wear shorts and a tee-shirt.

</comment></comment><comment><USER4> Quoting Renee from YC: "The dress is business casual.". So, no suits needed, but a T-shirt doesn't quite seem appropriate either. Anything above a T-shirt seems likely fine.

<comment><USER5> So... a button down? I wore slacks a polo to an interview recently and I felt it was okay. But this is sounding more formal. Now I'm not sure...and it's tomorrow!

</comment></comment><comment><USER6> I can't imagine it will matter too much for the yc people there. Above the minimum (clean clothes?), just be interesting, inquisitive, and personable.

</comment><comment><USER7> Uhh, does anyone know what the location for this is? I RSVPed 'coming' and never got any info on where this is happening.</comment>


How China's Public Officials Stole $120 Billion and Fled - <AUTHOR> http://www.time.com/time/world/article/0,8599,2079756,00.html?xid=rss-mostpopular

<comment><USER2> I was born in the former Soviet Union and grew up listening to my parents and their friends discussing how corrupt communism was. This article doesn't bear any real surprise to me and let me explain why.

Any individuals first and only desire is to take care of himself and his family. Just about anyone will go to any means necessary, illegal means included. In the former USSR and even today a lot of people involved in government were using the government as a means to take care of them and their families. This is because prior to the 90's, there was no other way to achieve wealth. Secondly, once a system takes on characters that are willing to bend rules, everyone is involved. Those who are not willing to participate are thrown out, ignored or placed in positions that will make them re-think their approach to their career and their methods to take care of their family. Sure, there are ethical considerations here, but realistically, if everyone around you is making millions and living a great life, you will inevitably follow their path as well. 18,000!! 18,000 people participated here! I'm sure there are scores of others that have taken a little bit here and there as well. Maybe got by with only a few thousand vs. millions.

Communism is a horribly corrupt government form. It forces too much activity to flow through too few people. I would hope that China takes a stand against this, but my skepticism doesn't allow me to believe that the ones pursuing this investigation are any different than the culprits.

<comment><USER3> I'd like to point out, that while China has a _communist party_ , it is no longer a communist country.

<comment><USER4> > I'd like to point out, that while China has a communist party, it is no > longer a communist country.

What makes China "no longer a communist country"?

Can anyone run for office? Are there significant legal and extra-legal controls on "private" property?

Every communist country has allowed some private property, so if your answer is "Chinese can now own land/cars", please tell us where the line is on that slippery slope.

<comment><USER3> _A political theory ... advocating class war and leading to a society in which all property is publicly owned and each person works and is paid according to their abilities and needs._

1\. No more class war 2\. Property might be "publicly owned", but it's as good as private. 3\. There is an absolutely huge disparity in income. My elevator operator got paid 500 RMB/mo, while each one of the random gifts I got for just happening to be close to someone important, was over 2000 RMB.

A relative of mine recently bought a large plot of farm land from a bunch of farmers, for a substantial sum of money - much more than its value. He spent a load of money and bought high-end equipment and machines, and hired agricultural specialists to consult on best practices. He started growing high-quality fruits/vegetables purely for family consumption, and as a pass- time. In fact, when he's bored, he just goes to the farm and starts farming.

After a while, the farmers realized how much value their land had gained (not due to economic reasons, but because he had invested so heavily in it) and started to complain. The government did absolutely nothing. What I'm trying to emphasize is that class wars are no longer in place, and recognition of private rights are soaring. China, really, is a capitalist state... a capitalism without democracy.

Just because not everyone can be a leader, doesn't mean it's a communism. Do you know what happens when anyone can be a leader and run for office? Take Quebec for example. In the most recent Canadian elections, a girl ran for MP (Canadian congress) for lulz, and went to vegas during the election. She did absolutely no campaigning, and came back to find that she had won the seat.

<comment><USER4> > 3\. There is an absolutely huge disparity in income.

There was under communism as well - do you really think that the leaders were poor? (You could have argued that only those in govt were rich before. Then I'd have asked how many of the current rich are not "connected".)

> their land had gained (not due to economic reasons, but because he had > invested so heavily in it) and started to complain.

(1) "their land" hadn't gained any value - it wasn't their land after they sold it. (2) investing IS an economic reason for something to go up in value.

> The government did absolutely nothing.

That happened under communism as well.

Is he connected? Are they politically disfavored?

> Just because not everyone can be a leader, doesn't mean it's a communism.

One of the essential properties of communism is that only the politically reliable are eligible for public office.

It's not the only essential property, but it is one of them.

> Do you know what happens when anyone can be a leader and run for office?

Yes, I do - random people run for office. Sometimes they win. That can't happen in a communist society.

<comment><USER3> I can't debate this with you if the semantics keep changing. The definition of "communism" is defined as "Communism is a sociopolitical movement that aims for a classless and stateless society structured upon common ownership of the means of production, free access to articles of consumption, and the end of wage labour and private property in the means of production and real estate"

If you define communism to be like capitalism, then the argument is semantics; if that's the case, I'll concede.

 _investing IS an economic reason for something to go up in value._ \- I'm aware... I suppose what I implied 'external'... such as land increasing in value several times without action on his part.

<comment><USER4> > The definition of "communism" is defined as "Communism is a sociopolitical > movement that aims for a classless and stateless society structured upon > common ownership of the means of production, free access to articles of > consumption, and the end of wage labour and private property in the means of > production and real estate"

You're confusing theory with reality.

Since we're starting with the assumption that China was communist in the past, that definition is problematic because it tells us that China was never communist.

I assumed that you wanted to use a definition of communism that both Mao-era China and the USSR satisfied at some time. Was I wrong?

</comment></comment></comment></comment></comment></comment></comment><comment><USER5> I have to say that if you have ever lived in China, you are not surprised that so many corrupt officials run. China is not like the US where you can engage in corruption and get a slap on the wrist.

In China, they _will_ execute you, your wife, AND your mistress. And they will keep arresting or executing your acquaintances until someone comes up with the missing money.

Then they will execute that person as well!

That's a bit of an exaggeration, but not much.

What is sad is that some of these guys _might_ have been willing to cooperate in returning the stolen funds were it not for the aggressive nature of anti- corruption prosecutions over there. Now, however, the whole thing has spiraled out of hand. The Chinese are swimming in money. They don't even _want_ the money back...they just want the corrupt guy or gal dead. So there is very little incentive for witnesses or corrupt officials or whatever to cooperate if they can manage to flee. And they all go to the US or Canada, where they are protected. So the whole thing has deteriorated into a grudge match.

<comment><USER4> > China is not like the US where you can engage in corruption and get a slap > on the wrist.

Slap on the wrist? US public officials who engage in corruption are often rewarded. (Rod Blagojevich, the former Ill governor is going to jail because he pissed off the wrong people, not because he was corrupt.)</comment></comment>


Publicly Launched Teams of YC S12 - <AUTHOR> http://refer.ly/aYtt

<comment><USER2> I see a couple companies here throwing around the term "high performance", and as someone who has worked with actual high performance computing (HPC) technology, the perversion of this term is annoying.

What is HPC? HPC is writing software for supercomputers. HPC is implementing parallel algorithms. HPC is Intel's lab on a chip, a Linux cluster with Infiniband networking, etc.

> SpinPunch makes high performance browser games to rival PC and console > titles.

No, SpinPunch, my browser is not a Linux cluster with 1024 nodes, each with 8 CPUs. JavaScript is not HPC. C, C++, and Fortran are high performance. MPI and the Intel Math Kernel Library are high performance. Using MPI-IO to interact with a parallel virtual file system to read a 1 GB file efficiently is high performance.

> SpaceBase is a server-side, in-memory, high-performance, concurrent and > distributed spatial data-store...SpaceBase is implemented in Java, and > provides a Java and C++ APIs.

That sounds great, SpaceBase, but I didn't see any white papers or mentions of academic journal articles on your site. If your revolutionary system is high performance, you have to prove it. At the very least, you need a white paper to show how fantastic your HPC software is. Here are a few examples of that:

Google MapReduce: [http://static.googleusercontent.com/external_content/untrust...](http://static.googleusercontent.com/external_content/untrusted_dlcp/research.google.com/en/us/archive/mapreduce- osdi04.pdf)

Message Passing Interface (MPI): [http://www.sciencedirect.com/science/article/pii/01678191960...](http://www.sciencedirect.com/science/article/pii/0167819196000245)

Intel Math Kernel Library: [http://software.intel.com/en-us/articles/intel- math-kernel-l...](http://software.intel.com/en-us/articles/intel-math-kernel- library-white-papers/) ScaLAPACK: [http://ieeexplore.ieee.org/xpls/abs_all.jsp?arnumber=234898&...](http://ieeexplore.ieee.org/xpls/abs_all.jsp?arnumber=234898&tag=1)

Elemental: <http://www.cs.utexas.edu/~flame/pubs/FLAWN44_revised.pdf>

You're walking a very fine line when you claim that your system is high performance, and I am not impressed by the total lack of any paper describing how you came to this conclusion. I found this snippet from the company's blog:

> It scales gracefully across CPUs and across a computing grid. It scales so > well that it allows building large shardless MMO games. In-fact, shardless > MMO games and virtual worlds were one of the use-cases SpaceBase was > specifically built to handle. (Distributed SpaceBase, or SpaceBase-on-a-grid > is currently in the advanced stages of testing, and will be available for > evaluation and purchase within a couple of months. The single-node, multi- > and many- core deployment is available for evaluation right now!)

Please, just show us the numbers!

tl;dr HPC is all about scaling across computing clusters. Show us an experiment with speedup numbers.

<comment><USER3> Parallel Universe founder here. Those white papers are coming!

In the meantime, we invite you to take a look at the technical paper we posted on highscalability.com yesterday, discussing Galaxy, our open-source in-memory data grid: [http://highscalability.com/blog/2012/8/20/the-performance- of...](http://highscalability.com/blog/2012/8/20/the-performance-of- distributed-data-structures-running-on-a.html)

Also, you can check out the Galaxy "under the hood" series: <http://blog.paralleluniverse.co/tagged/galaxy-internals>

And the SpaceBase benchmarks are coming, some of them probably as soon as next week!

</comment></comment><comment><USER4> Is it just me or most of these startups don't have any "Wow factor"?

I mean 9GAG has been around for quite some time now and what does it bring to the table?

Mark.io is basically canvas / quickmeme but with a slicker "Startup look".

Scoutzie could be a side project on Shown HN. Sacha Greif is doing something similar with Folyo.

CocoPad, I don't have word for this. I don't understand why this idea got accepted in YC in the first place.

Its not all bad though.

Bufferbox, instacart, Flightfox and some other are really trying to change their own industry / market and looks like true YC Startup.

Anyway, this is just a rant from someone who use to get excited seeing all the great startup from YC demo day.

</comment><comment><USER5> Looks like a fine lineup with lots of startups useful for businesses.

Profig: when is this coming to Europe!

I find Easel very interesting as I've been looking for a hi-fi alternative to Balsamiq.

Coinbase sounds interesting but I have no idea what they are actually doing based on what it says on the web site. Also, I'm pretty skeptical when it comes to security and the BitCoin industry.

Submittable.com: two persistent feedback tools on the front page...? Anyways, the service sounds great for content heavy orgs.

</comment><comment><USER6> You forgot 9GAG and Mth Sense, we should work on this together. Been running this list for a while: [http://startupframework.tumblr.com/post/29465655158/yc-s12-c...](http://startupframework.tumblr.com/post/29465655158/yc-s12-companies- demo-day)

And a list of YC S12 Rejects: [http://startupframework.tumblr.com/post/29900354472/the- forg...](http://startupframework.tumblr.com/post/29900354472/the-forgotten- yc-s12-applicants)

Hope this helps.

<comment><AUTHOR> mth Sense, 9GAG, and Delight.io have been added. There of course are a lot more, but as batchmates ourselves, we're waiting for them to launch on stage rather than blow their big moment.

You have a really stellar list--let's collaborate and update each throughout the day. Should be exciting...

<comment><USER6> 82 it seems, eh. Shucks I can't be in Cali right now. Maybe next time I'll send my double ;) <http://www.doublerobotics.com/>

</comment></comment></comment><comment><USER7> Somebody take a webshot of that page and send it to pg.

That's exactly what HN needs.

* <http://i.imgur.com/xoMVr.jpg>

</comment><comment><USER8> Betting on Instacart and Plivo to be the best out of this batch. Delight.io,viacycle,Bufferbox,virool,vayable and zapier come next.

The last supper picture has 15 disciples ;)

</comment><comment><USER9> The last supper picture with PG == Jesus was worth the click

<comment><USER6> +1 Should've been a female founder in there: [http://en.wikipedia.org/wiki/File:%C3%9Altima_Cena_- _Da_Vinc...](http://en.wikipedia.org/wiki/File:%C3%9Altima_Cena_- _Da_Vinci_5.jpg)

<comment><AUTHOR> Noticed that too! But the ladies will be well represented on the Demo Day stage today.

</comment></comment></comment><comment><USER7> FundersClub gets the gold medal.

PG should ban social startups in the next batch just to rise the level a notch or two.

</comment><comment><USER10> nice to see many "not pure software" startups, dealing with hairy physical brick-and-mortar issues

</comment><comment><USER11> I wonder if 9GAG spoke to the Reddit founders at all during incubation /karmaconspiracy

<comment><USER12> Yes sure, Alexis is a nice and helpful guy.</comment></comment>


Benchmarking level generation: Go, Rust, Haskell and D - <AUTHOR> http://togototo.wordpress.com/2013/07/23/benchmarking-level-generation-go-rust-haskell-and-d/ <comment><USER2> The problem with almost every language benchmarking blog post I see is that the author is generally an expert in at most one of the languages they are benchmarking, and so they write slow or non-idiomatic code in the other languages, leading to a useless comparison.

Here's one example that I picked up. The author writes that they had to refactor part of the Haskell code from (paraphrasing)

        if (checkColl tr rsDone || checkBound tr)
          then {- branch 1 -}
          else {- branch 2 -}

into

        if checkBound tr
          then noFit
          else if checkColl tr rsDone
            then noFit
            else {- branch 2 -}
          where
            noFit = {- branch 1 -}

because of "problems with lazy evaluation". But in fact the only problem is that the call to `checkBound` is fast whereas the call to `checkColl` is slow, and the || operator evaluates its left argument before deciding if it needs to evaluate its right argument (just like in C, and every other language I've ever used). So all that is required to get the speedup is to switch the order of the calls:

        if (checkBound tr || checkColl tr rsDone)
          then {- branch 1 -}
          else {- branch 2 -}

<comment><USER3> I should have made it clearer; when I said "Lazy evaluation often tricked me up", I meant that I made the stupid mistake of thinking Haskell could somehow magically evaluate the shortest branch first via lazy evaluation. I.e. lazy evaluation tricked led me to make mistakes due to expecting too much from it, not because of any inherent fault in lazy evaluation.

</comment></comment><comment><USER4> The Rust code was very non-idiomatic, and is dramatically disadvantaged by using the ISAAC random number generator (which is cryptographically secure, and so quite slow). By rewriting it to use more iterators (for non-bounds checked vector access), more vector-building functions (specifically, `vec::with_capacity` and `vec::from_fn`), and a non-cryptographically secure RNG[1], I get the following:

      Rust       0.34
      Rust isaac 0.57
      Rust orig  0.70
      Clang      0.42
      GCC        0.36

My rewritten version: [https://github.com/huonw/levgen- benchmarks/blob/master/R.rs](https://github.com/huonw/levgen- benchmarks/blob/master/R.rs) (I didn't bother implementing seeding of the RNG for this, so it's the same result every time. Edit: implemented now, no performance change.)

[1]: The new RNG is XorShiftRng, which is also in the standard library, and actually has far better randomness properties than most platforms' `rand()` functions anyway.

(Edit: merging two adjacent `if` statements, took it down to 0.34 from 0.36.)

<comment><USER5> Here's the compare view for an overview of the changes dbaupp applied to the original code: [https://github.com/huonw/levgen- benchmarks/compare/logicchai...](https://github.com/huonw/levgen- benchmarks/compare/logicchains:master...master?w=1)

edit: wrong addition left thereafter for posterity, ignore it (apparently Go uses ISAAC so the change to XorShiftRng might be unfair to Go (though it's trailing anyway). I expect C uses the standard libc generator?)

<comment><USER6> Assuming this [1] is what Go is using, it is not ISAAC. It looks like a lagged Fibonacci generator.

[1] [http://golang.org/src/pkg/math/rand/rng.go](http://golang.org/src/pkg/math/rand/rng.go)

<comment><USER5> Ah yes, I misread a comment below which talked about Go and Rust, I didn't read closely enough and took the ISAAC mention to apply to Go.

</comment></comment></comment></comment><comment><USER7>
        if((((rx + rw +1 ) < x) || ((rx > (x+w +1 ))))) { RoomOkay=true
        } else if((((ry + rh +1 ) < y) || ((ry > (y+h +1 ))))) {RoomOkay=true
        }else {RoomOkay=false}
        if(RoomOkay==false){ return true}

Gaaaah, really? "go fmt" is your friend! That mess automatically cleans up into this:

        if ((rx + rw + 1) < x) || (rx > (x + w + 1)) {
            RoomOkay = true
        } else if ((ry + rh + 1) < y) || (ry > (y + h + 1)) {
            RoomOkay = true
        } else {
            RoomOkay = false
        }
        if RoomOkay == false {
            return true
        }

> _Particularly ugly is_

        (*mySlice)[indexI].myField=newValue;

> _I'm not sure why the language can't automatically dereference the slice > when the [] operator is applied to it_

I don't know exactly what the Go team would have to say about this, but my take would be language simplicity. Pointers are pointers, and special-casing some of them breaks the rules that both the compiler and the programmer rely on.

It may look like C, but it isn't. There's no pointer/array equivalence here, indexing and dereferencing aren't the same thing. If I weren't coming from a C background (which I'm guessing the author is, too), I'm not sure it would ever occur to me to expect a pointer-to-slice/array to be something you could index.

Also, as a slice is basically a pointer to array plus two ints, you normally wouldn't pass a pointer to it in the first place. You only need to do that if you want to resize it.

<comment><USER8> The problem when people talk about code beauty is that beauty doesn't always equate to readability. I find Go is very much one of those languages that doesn't look particularly pretty but it's a joy to read when compared to many other languages of the same ilk.

</comment></comment><comment><USER9> > Hopefully in future Rust will adopt something like Go's automatic > initialisation of all values to zero, or at least have this as an option (or > document it better, if it already is an option).

First, thanks for the feedback!

Unfortunately, I don't think this feature will be added to Rust, though. IMO it causes bugs, as accidentally failing to initialize a variable yields a garbage value at runtime. There's no reason that 0 is any more likely to be a valid integer value than 1, or 42, or 0xdeadbeef, and the compiler shouldn't try to guess. And the feature wouldn't work in Rust anyhow due to the lack of null pointers.

However, having an explicit zero value is convenient, and this is what the Zero trait is for. With Rust traits you can overload on the return value, like Haskell, so you can write:

        let (emptyr: Room, emptyt: Tile, emptyl: Lev) = Zero::zero();
        let mut ls = [ emptyl, ..100 ];

assuming that your types derive Zero (which you can do with #[deriving(Zero)]). In the future it should be:

        let (emptyr, emptyt, emptyl) = zero();
        let mut ls = [ emptyl, ..100 ];

This could be done by either writing a zero() wrapper in the prelude or allowing static methods to be imported, both of which are probably good ideas.

<comment><USER6> There's no notion of (default) constructors in Rust? How do you build complex objects in it?

<comment><USER5> The same way you do in other struct-based languages I expect, either build the struct directly or go through a static factory function.

</comment></comment></comment><comment><USER10> I work almost full-time on C++ optimization and I find most type of such benchmarks moot, and _not_ because of methodology flaws.

We need to stop just looking at numbers and investigate what these compilers allow in terms of productivity, optimization opportunities and explicit control of generated code.

If you look at x264 numbers you'll see that there is up to a x10 gap between hand-optimized assembly and native C, and I believe that this gap exist in most fast programs because optimizing backends are too much black-boxes that consistently produce quite good, even sometimes amazing results, but with little control or feedback.

The nature of highly optimized code is detailed, explicit control of what should happen. I will take a poorly optimizing compiler any day if it allows me complete control of the backend optimizations it chooses, if I can give him register hints that actually matter, if it stop compiling and ask for the annotations he need to optimize better. C++ compilers are good at this game but this could be taken further.

Also it's unfair to never look at language productivity at the same time as speed, since the ability to produce fast programs will be notably affected by the speed at which we can achieve that anyway.

<comment><USER11> I agree. However, how do you suggest we judge languages in terms of their productivity, isn't that highly subjective? I have never seen anyone do a proper 'productivity benchmark', but perhaps with some rigor it could be done reliably.

<comment><USER10> I don't know. All methods I can think of are expensive and wasteful. So perhaps it's a good proxy.

</comment></comment></comment><comment><USER12> > For those who haven't been following Rust, there are around seven different > kinds of pointers: @ (garbage collected heap allocation), ~ (uniquely owned > heap allocation), & (borrowed pointer to heap/stack allocation), * (raw C > pointer, only useable in unsafe code), and mutable versions of the first > three of those (actually, I'm not sure if there's a mut & pointer, so maybe > just six pointers in total).

I am not sure I like the sound of that. I guess having the unsafe stuff available is very useful for certain things, but it all sounds a bit messy, too.

<comment><USER13> Being able to talk about memory allocation in a safe way is one of the key objectives of Rust. Rust is the only modern language (i.e. not C or C++) I know of that allows one to mix GC'ed and manually allocated memory, and heap and stack allocated memory.

Reasoning about mutability is necessary for safe (and fast!) concurrency.

<comment><USER5> > Rust is the only modern language (i.e. not C or C++) I know of that allows > one to mix [...] heap and stack allocated memory.

Technically I believe (to verify) Go does that as well, but the mix is implicit and the system (not the developer) will decide on its own whether a value should be stack- or heap-allocated.

C# will also allocate value types local variables on the stack (technically all local variables are stack-allocated, but for reference types it obviously stack-allocates a reference to the heap, the end-result is that under the usual understanding of "stack allocation" only value type local variables and parameters are stack-allocated)

<comment><USER14> JVM HotSpot does this, too, implicitly, by means of EscapeAnalysis.

</comment></comment></comment></comment><comment><USER15> A sidenote: Your blog's code formatting is awful. I would recommend that you embed one of the common solutions for code snippet syntax highlighting into your blog. I needed special motivation to continue reading your post past the first code sample.

Edit: And then of course actually _use_ the prominent guidelines for good- looking code in each language!

<comment><USER3> My apologies, I was in a hurry; I'll try to put more effort into presentation in future. Are there prominent guidelines for good-looking code in Rust?

<comment><USER4> There's the Rust style guide[1] but it's not really that useful at the moment; however, 2 points of general advice:

\- make use of functions like `vec::from_fn`, `uint::range` and `some_number.times`, rather than writing `while`-loops with a counter explicitly.

\- use iterators[2,3] for traversing data structures, since it allows the data structure to optimise the accesses (e.g. the vector iterator avoids bound checks).

However, all the tutorial/manual are out of date, and the documentation makes it very hard to find out about these functions; so it's definitely not the programmers fault when they turn out non-idiomatic Rust.

[1]: [https://github.com/mozilla/rust/wiki/Note-style- guide](https://github.com/mozilla/rust/wiki/Note-style-guide) [2]: [http://static.rust-lang.org/doc/tutorial- container.html#iter...](http://static.rust-lang.org/doc/tutorial- container.html#iterators) [3]: [http://static.rust- lang.org/doc/core/iterator.html](http://static.rust- lang.org/doc/core/iterator.html)

</comment></comment></comment><comment><USER16> > The initial version must have been checking each room for collisions (a long > process) before checking whether it fit within the level bounds (a short > process), so manually sequencing it with if-then-else led to a spectacular > 268% improvement.

Or just change `(checkColl tr rsDone || checkBound tr)` to `(checkBound tr || checkColl tr rsDone)`.

</comment><comment><USER17> The dmd middle- and backend got little attention over the last years. Especially, when compared to GCC and LLVM. No wonder it produces slower code.

With D it is not a bad idea to use dmd for development and GDC/LDC for release builds.

</comment><comment><USER18> Nice to see Rust doing so well, but I'm disappointed by the performance of the Haskell code.

<comment><USER19> The reports from all of these micro benchmarks seems to be consistent on the subject of Rust: it doesn't yet have the performance that justifies its existence. I'm guessing you could get similar numbers out of Java.

I'm hoping Rust's numbers improve. It's incredibly promising, but without C++ level performance, it's too much semantic complexity.

<comment><USER14> +1 The same is true probably also about D.

<comment><USER10> No because D has C performance, now. Have you seen the blog numbers?

<comment><USER14> As pointed out in the other comments on this thread, this benchmark benchmarks mostly standard RNG performance, not quality of the code generated by each compiler. Here you've got much more computationally intensive benchmark, showing that D is "as fast as C" like it could be said about Java: [http://attractivechaos.wordpress.com/2013/04/06/performance-...](http://attractivechaos.wordpress.com/2013/04/06/performance- of-rust-and-dart-in-sudoku-solving/)

It is close, but Java is just as close, too. Not a tremendous performance advantage that someone would choose one over another for and not something I'd expect from a language marketed as "performance oriented".

<comment><USER10> Ok you live in a world where Java is "as fast as C". Let's terminate this discussion.

<comment><USER14> I didn't say it. You said D was as fast as C now. Then, according to _your_ definition of "as fast as C", Java must be fast as C as well. Seems your as fast as C definition must be something between 30%-95% performance of C because those are the most common performance numbers reported for D in various benchmarks (I cited one of them, and the one in the blog also confirms this - only one D compiler managed to match the best C compiler, the others were significantly behind). The same numbers are consistently reported about Java, so I don't really understand what you're arguing about. So I conclude both are the same league (with two minor exceptions: 1. I saw Java beating GCC many times, once quite severely by almost 2x on simple array numerical code, while I never saw that happening for D and 2. D has much worse GC implementation than Java or C# have).

</comment></comment></comment></comment></comment></comment></comment><comment><USER11> Any chance you could also benchmark the nimrod programming language?

I think nimrod is a very good contender and it's sad never seeing it being benchmarked when Go, D and Rust are.

I will gladly help you write a benchmark if you wish to pursue this .

<comment><USER20> Which C compiler would you use as Nimrod lacks a proper compiler?

<comment><USER11> GCC most likely.

<comment><USER20> Then it would be testing how GCC compiles C code and not Nimrod, right?

<comment><USER11> I can see what you are trying to say. But it would still be testing the speed of Nimrod, whether the Nimrod compiler compiles Nimrod code to C or to Assembly is irrelevant. The fact is that Nimrod is not C, and we are interested in the speed that Nimrod can achieve.</comment></comment></comment></comment></comment>