I just released F.lux for Ubuntu (fades your screens at night) - <AUTHOR> http://kilianvalkhof.com/2010/linux/flux-for-ubuntu/

<comment><USER2> A similar program for automatically changing the color temperature, Redshift [1], was recently highlighted by Lifehacker and others as an alternative to the commandline-only XFlux, inspired by F.lux.

EDIT: One advantage Redshift has is that it automatically determines your lng/lat based on your current "home" location in the Clock applet.

[1]: <http://jonls.dk/redshift/>

<comment><USER3> redshift is also open source and thus works on other platforms, where f.lux is closed source.

<comment><USER4> It works on other platforms _because_ it's open source? Isn't that a bit of an overstatement? For the fun of it, I just downloaded this and tried to compile on my Linux box:

      ~/tmp/tmp# uname -a
      Linux susie 18.104.22.168-0.2-default #1 SMP 2009-11-23 12:57:38 +0100 x86_64 x86_64 x86_64 GNU/Linux
      ~/tmp/tmp# cat /etc/SuSE-release
      openSUSE 11.1 (x86_64)
      VERSION = 11.1

      ~/tmp/tmp# wget http://launchpad.net/redshift/trunk/1.4.1/+download/redshift-1.4.1.tar.bz2
      ~/tmp/tmp# tar xf redshift-1.4.1.tar.bz2
      ~/tmp/tmp# cd redshift-1.4.1/
      ~/tmp/tmp/redshift-1.4.1# ./configure
      [...]
       redshift 1.4.1

          prefix:             /usr/local
          compiler:           gcc -std=gnu99
          cflags:             -g -O2
          ldflags:

          Adjustment methods:
          RANDR:              yes
          VidMode:            yes
          WinGDI:             no

          Location providers:
          GNOME Clock:        no

          GUI:                statusicon

      ~/tmp/tmp/redshift-1.4.1# make
      ~/tmp/tmp/redshift-1.4.1# make
      make  all-recursive
      make[1]: Entering directory `/root/tmp/tmp/redshift-1.4.1'
      Making all in src
      make[2]: Entering directory `/root/tmp/tmp/redshift-1.4.1/src'
      Making all in gtk-redshift
      make[3]: Entering directory `/root/tmp/tmp/redshift-1.4.1/src/gtk-redshift'
      sed -e "s|\@gui_module\@|statusicon|g" gtk-redshift.in > gtk-redshift
      make[3]: Leaving directory `/root/tmp/tmp/redshift-1.4.1/src/gtk-redshift'
      make[3]: Entering directory `/root/tmp/tmp/redshift-1.4.1/src'
        CC     redshift.o
      In file included from redshift.c:60:
      gamma-randr.h:33: error: expected specifier-qualifier-list before xcb_randr_crtc_t
      make[3]: *** [redshift.o] Error 1
      make[3]: Leaving directory `/root/tmp/tmp/redshift-1.4.1/src'
      make[2]: *** [all-recursive] Error 1
      make[2]: Leaving directory `/root/tmp/tmp/redshift-1.4.1/src'
      make[1]: *** [all-recursive] Error 1
      make[1]: Leaving directory `/root/tmp/tmp/redshift-1.4.1'
      make: *** [all] Error 2

This is Linux mind you, not some AIX box on which it will never compile, even though it has X11 installed. (And yes, I know I can disable RANDR in the above case and it will compile, that's beside the point)

<comment><USER5> The point is not that it works out of the box on all platforms, but that if it doesn't work on your platform, you have the source code available, so you can _make_ it work on your platform by changing the software. You can't do that with closed-source binaries.

<comment><USER4> With that I can mostly agree (but the comment implied otherwise).

But - and this is sometimes a huge but - open source software (OSS) is more and more dependant on other OSS, making it sometimes next to impossible to port it to other platforms. Try building VLC from scratch and you'll see what I mean (you can use Linux). Furthermore, API changes are quite common for OSS even in minor version updates and that creates an additional mess (dependency hell), as was clearly demonstrated in my example above.

It's not all black and white.

</comment></comment></comment></comment></comment><comment><USER6> I started using F.lux a month or so ago to help with insomnia. It's helped a lot, thank you for writing it.

I've been holding out on buying an iPad to read in bed, precisely because F.lux has helped me so much on OSX. Is there a flux equivalent for iOS? Is it possible to write one?

<comment><USER7> Would be possible for an application to mimic Flux, but there is no way (except on a Jailbroken device) to do system wide Flux. Could be a nice niche for a browser or RSS reader though.

<comment><USER8> I have a bunch of hacks, but nothing that actually works right on iOS yet.

</comment></comment></comment><comment><USER9> F.lux adjusts the color of your computer's monitor to match the time of day. It's warm at night and like sunlight during the day.

I've been using F.lux for a couple of months on OS X. The orange color at night looked a odd to me at first, but now I don't notice it.

F.lux can help you sleep better: <http://www.stereopsis.com/flux/research.html>

</comment><comment><USER10> I will chime in with the chorus and say I've been using F.lux for at least a month and it works great! Thank you!

</comment><comment><USER11> Has anyone figured out how to get this to work on a multi-display configuration? I tried it and found it only affected my primary screen.

<comment><AUTHOR> It's probably of no help to you, but I use a dualscreen nVidia setup (twinview), and it just works.

</comment></comment><comment><USER12> I've been using flux and find it works as advertised on helping my sleep patterns. Thanks for your work on it.

</comment><comment><USER13> I use f.lux backwards. I leave it on normally, but when I need to wake up to re-focus and get stuff done (and it's dark out), I turn it off, and I feel more awake again.

It's probably all in my head, but I'm going with it for now ;)

<comment><USER14> no, that really does work, at least it seems so for me; I have it set to the default settings but if I'm working late and feeling tired I switch it off and enjoy the "brightness kick".

One of the greatest features of f.lux for me is that I actually start feeling more tired after it kicks in, so it really does encourage me to get to bed earlier.

</comment></comment><comment><USER15> It complained about not supporting my color depth (although nvidia-settings is set to 24 bit).

before (last 100 chars): we only support 24/32-bit displays right now. XF86VidModeGetGammaRampSize returned 2048 entries.

xflux does the same. It's a new laptop - i7 in 64bit mode, so I don't know if that's at fault. I loved xflux on the old (32bit, nvidia) laptop, though.

Redshift as mentioned by paulsmith works great.

</comment><comment><USER16> Great!

I've been a huge fan of F.lux on OS X for a very long time. The beautiful thing about the recent "gradual change" feature is that now I don't even notice it when I'm working late at night -- unless I have to turn off the application for some reason, and then I find myself squinting and fleeing.

Anyway, just wanted to take a moment out to thank you for helping so many people out.

</comment><comment><USER17> I've been using it for a month or two on Windows and am quite surprised how much I like it.

<comment><USER18> Flux didn't change the appearance enough for me -- what I really want is to have light text on a dark background at night. One ugly hack is to use the Windows 7 magnifier tool to invert video. The colors are atrocious but you can pretend they are neon lights for night mode ;)

</comment></comment><comment><USER19> That's awesome!! Thank you! I just gave up my Windows machine for Ubuntu and F.lux was one of the things I missed most. Is there a .deb I can download directly? I don't think I can add new repositories on my work computer.

<comment><USER20> you can install a deb package, but not add a source? That seems like an odd configuration to me.

<comment><USER19> agreed, but i wasn't the one to make that decision :o)

</comment></comment></comment><comment><USER21> I e-mailed the author months ago about a bug where the glibc command-line version would stay alive and peg to 100% CPU usage after logout. It seems to have never been fixed.

Any chance you could ping him about that?

<comment><USER8> Fix is posted: <https://secure.herf.org/flux/xflux.tgz>

I wasn't able to find this in the old build, but the current one definitely has the bug. Let me know how it works.

<comment><USER21> Thank you! Testing now.

Redshift is nice. But, the colours in xflux feel better. Nothing quantifiable though.

I spent a little bit of time a few months ago trying to dump the gamma tables to compare. Only accomplished reminding myself why I hate low-level X.

</comment></comment></comment><comment><USER22> I installed the osx version of flux ages ago and never looked back, stunningly unintrusive.

Although waking up in the morning to find your beautiful late design is bright cyan is a bit of a shocker sometimes.

</comment><comment><USER23> The last version of XFlux I used reset the screen brightness every second, which made the screen flicker uncontrollably during fades (eg on lock, logout, screen saver etc). Does that still happen?

<comment><AUTHOR> It does this if you're running more than one instance of XFlux, they, uhm, seem to fight with each other ;). F.lux for Ubuntu prevents you from starting the app more than once :)

</comment></comment><comment><USER24> I have been using it for almost a year and it is on my list of must install programs. And I am very picky about what I run in the system tray.

</comment><comment><USER25> xflux is included as a binary in the package source. I'm sure you mean well, but this is a security risk and breaks the terms of use for the Launchpad PPA (as it is not distributed under a permitted licence). You could host the package elsewhere, though.

</comment><comment><USER26> Why is it only for Ubuntu? Or is it also runnable on, say, any GNOME setup?

<comment><USER27> There's a github link, so presumably it's only _packaged_ for Ubuntu. I'm hoping I can get it running on OpenSUSE/KDE4.

<comment><AUTHOR> If it has appindicator support, it'll run. I'm not sure if any other distributions already support it though. If you could let me know if you can get it to work on openSUSE/KDE4, (email in my profile) that'd be great!

<comment><USER27> Appindicator does seem to be the critical bit; I'm still on OpenSUSE 11.2 which definitely has zero support, planning to upgrade to 11.3, which might, at the weekend. I'll keep you updated. My Python isn't so great unfortunately, so it'd probably take me too long to port it to something more widely supported.

</comment></comment></comment></comment><comment><USER28> I love it.

</comment><comment><USER29> I use the OS X version of this to combat my sleeping disorder - and reducing the amount of blue light during the mandatory "bedtime hacking" definitely does help to sedate me.</comment>


A Translator's Reckoning with the Women of the Odyssey - <AUTHOR> https://www.newyorker.com/books/page-turner/a-translators-reckoning-with-the-women-of-the-odyssey <comment><USER2> I wonder if Ms. Emily Wilson has ever spent time as a full-time wife and homemaker. It does not sound to me like she has.

I have. I spent two decades at it. I often find the way modern working women portray the traditional female role completely dismissive and scathing, like it is all downside. I did not experience it as all down side.

I spent a lot of years trying to comprehend how to play the feminine role in an empowered way, to stop seeing myself as simply a victim. The gist of what I came to understand can be summed up in the negotiating trope "The first person to name a number loses."

Emotional labor is a hot buzz word currently that seems to be the fashionable new way to say that doing women's work makes you a chump, a victim. But I think it is more complicated than that.

I don't like this trend that I see where modern women translate the stories of traditional women and are as derisive of the woman's role as men are, if not more so. The female slaves were executed, but so we're many men. This write up implies that the death of women has a unique horror to it that we need not feel over the more prosaic deaths of men.

At the time The Odyssey was written, life was generally harder than it is now. This was true for both men and women, rich and poor. Death was pretty common. It was not inherently more wonderful to be an executed male than an executed female.

<comment><USER3> I think this is spot on.

I probably won't read Wilson's translation -- I recently read Fagles', and am not keen to re-read for sake of a new translation, although might be interested in a comparison of translation differences. But you are correct that Greek society was very, very different from "modern" society in many ways.

I was debating going into the ways it is different, but it seems that the political climate is too toxic, so I will instead link to a fantastic lecture series on the Odyssey that I personally found enlightening: [https://www.thegreatcourses.com/courses/odyssey-of- homer.htm...](https://www.thegreatcourses.com/courses/odyssey-of-homer.html)

</comment></comment><comment><USER4> > _But many students, scholars, and general readers want even more from this > literary character: they want her to fit the ideal of an empowered woman. It > is comforting to subscribe to the notion—as Daniel Mendelsohn does in his > recently published memoir, "An Odyssey," and as Robert Fagles does, in his > translation of the poem—that the marriage between Odysseus and Penelope is a > partnership of intellectual equals, based on true love and a shared outlook > on life. Odysseus speaks, in Homer's poem, of the ideal of like-mindedness > (homophrosyne) in marriage._

The modern impulse to impose its cultural norms upon the past is deeply upsetting. Its a sign of a frail, unsure, and declining culture.

<comment><USER5> > The modern impulse to impose its cultural norms upon the past is deeply > upsetting.

It's not a modern impulse, it's pretty much an invariant aspect of culture.

Of course, so is the tendency to perceive invariant aspects of culture as both unique to the present culture and signs of decline.

<comment><USER6> > so is the tendency to invariant aspects of culture as .....

What are you trying to say here? Invariant is not a verb, and it's definition of "never changing" doesn't make sense in the way you used it.

[http://www.dictionary.com/browse/invariant](http://www.dictionary.com/browse/invariant)

<comment><USER7> You want the mathematical definition. All cultures judge others according to their own norms, that's essentially the definition of what a culture is: a set of norms and behaviors by which things are judged.

</comment></comment></comment></comment><comment><USER8> I had figured I might have been misled by euphemisms in translations of Odyssey, it did seem uncharacteristic of the period in time (even coming from possibly the most progressive society of the time).

It's important to seek the truth before attempting to change it, and I'm glad Emily can separate her clear desire to inhabit a different world from (what I see as) the duty to accurately present the work. If I need a translation of the Odyssey for myself or someone else, I guess I'll be getting a copy of this one.

</comment><comment><USER9> If you thought this was interesting, you might also like Margret Atwood's "The Penelopiad"

[https://www.goodreads.com/book/show/17645.The_Penelopiad](https://www.goodreads.com/book/show/17645.The_Penelopiad)

<comment><USER10> > her twelve hanged maids

Yes, Penelope's maids come to a bad end. I think a lot of critics misread this as misogyny on Homer's part. However, it is meant to be balanced with the death of the suitors _and_ also Odysseus' shipmates, leaving only the marriage at the end.

<comment><USER9> Hmm, that's an interesting take I had not considered before. I can totally see where our modern sense of sexuality/morality could get in the way of some of Homer's subtler themes.

<comment><USER10> Although I'm very partial to Fitzgerald for the Odyssey and to Lattimore for the Iliad, I'm really looking forward to Wilson's translation.

<comment><USER11> I also love Fitzgerald's Odyssey. I tried Wilson's, and it just didn't sing at all, which really put me off.

</comment></comment></comment></comment></comment><comment><USER12> On the topic of female gender & the Odyssey, here's a thesis 'Inhuman and Heroic Women: Femininity in the Odyssey and the Arthurian Vulgate' which includes reference to the original Greek text [https://ir.lib.uwo.ca/etd/4157](https://ir.lib.uwo.ca/etd/4157)

</comment><comment><USER13> Related: last month's NY Times article about Wilson:

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


Testing against multiple versions of IE just got way simpler - <AUTHOR> http://www.my-debugbar.com/wiki/IETester/HomePage

<comment><USER2> Dupe:

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


Pogo stick rental startup swears it's not a joke - <AUTHOR> https://sf.curbed.com/2019/6/3/18650710/cangoroo-pogo-stick-rental-company-sf-app-scooters <comment><USER2> Just......no. Do these people know how exhausting it is to even pogostick across a single block? I can hardly do it, and I'm in very good shape.

There might be some niche in leaving them in parks and public places as entertainment pieces for bored passerby/tourists; but, as a transportation mechanism, just, no, I don't see it.

<comment><USER3> Electric assist pogosticks, then?

You heard it here first!

<comment><USER4> Presumably with Autopogo so you can have a nap or read HN while pogoing about?

Edit: Could we have self-pogoing pogo sticks that could come and pick me up? What a bright future we have waiting for us.

Edit2: What about delivering pogo sticks by drone?

<comment><USER5> And if the technology is not quite ready yet, you can always pre-sell a "Full Self Pogoing" option.

<comment><USER4> Yes, apparently the built-in hardware is sufficient and its just a software upgrade.

</comment></comment></comment></comment></comment><comment><USER6> I stumbled upon another example of seemingly non-sensical potato-printing-and- mailing businesses in a Twitter post[0] yesterday. Mailaspud is actually going strong since at least 2014 so it's definitely not a joke.

At this point I will believe anything.

[0]: [https://twitter.com/Paul_Courtney/status/1136274715092377605](https://twitter.com/Paul_Courtney/status/1136274715092377605)

<comment><USER7> origami boulder is also still going strong...

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

</comment></comment><comment><USER8> The fact that we even have to ask this means that the industry has already jumped the shark.

Nothing can beat child-adoption Tinder though.

<comment><USER9> > child-adoption Tinter

'Adoptly' if anyone was wondering.

<comment><USER10> Luckily, it was satire.

[https://www.theverge.com/2017/1/31/14455622/adoptly-app- tind...](https://www.theverge.com/2017/1/31/14455622/adoptly-app-tinder-child- adoption-art-project-reveal)

<comment><USER11> That's what I always say about my business ideas when I start getting the death threats though.

<comment><USER10> Gullible people also thought Bonsai Kittens was real too. ¯\\_(ツ)_/¯

</comment></comment></comment></comment></comment><comment> ajay-d "It's important to note that the marketing came from ODD Company, an agency known for elaborate campaigns, such as grass slippers, that involve creating fictional products or staging stunts for an existing brand."

</comment><comment><USER12> It is a joke? They say it right there in the article, it's just a stunt they're doing to get the brand out there

<comment><USER13> "He also emphasizes that Cangoroo plans to expand to different kinds of vehicles in the future—but will not say what kind yet—raising the possibility that the pogo sticks are a seat-of-the-pants attempt at drawing attention to the company's future endeavors."

Ayup.

</comment></comment><comment><USER14> Every time the topic of pogo sticks comes up, I have to fight the urge to buy a Vurtego V4[0].

[0] [https://www.vurtegopogo.com/v4-pogo- stick/](https://www.vurtegopogo.com/v4-pogo-stick/)

<comment><USER7> how long until people start playing pogo polo?

<comment><USER14> Sounds a lot less dangerous than horse pogo to me, to be honest.

</comment></comment></comment><comment><USER15> This is their biggest rival [https://www.gopogogo.com/](https://www.gopogogo.com/)

</comment><comment><USER16> having just fallen off one right before my second bounce... I can say this sounds more dangerous than I would have first thought. I landed on my tailbone - head helmets don't seem nearly useful enough. I'm grateful nothing was broken but 2 weeks later I still have occasional stabs of pain from that.

<comment><USER17> I tried one once years ago. I admittedly don't have the world's best balance but it was much harder than I would have expected. I'm sure there are some people for whom it's relatively effortless with a bit of practice but they wouldn't seem to be the target market for rentals.

Hard to believe this isn't at least somewhat tongue in cheek/PR.

</comment></comment><comment><USER18> Can Repelling Magnets Replace the Spring in a Pogo Stick?:

[https://news.ycombinator.com/item?id=18694006](https://news.ycombinator.com/item?id=18694006)

</comment><comment><USER19> Too hard to opt out to tracking from this site. Wont read.

<comment><USER20> here you go: [https://outline.com/yJL5cm](https://outline.com/yJL5cm)

<comment><USER19> Thank you very much sir, i could not remember the name of this site. Just bookmarked it

</comment></comment></comment><comment><USER21> Doesn't it destroy your knees?

<comment><USER22> Just have your legs replaced with pogo implants.

</comment></comment><comment><USER23> Sounds like a lawsuit waiting to happen....

</comment><comment><USER24> Yo?

</comment><comment><USER9> Actually, it's launching in my city and the area around my apartment would be wonderful for a pogo-stick. The scooters are very much frowned upon here but I'd rent a pogo stick for a bit!

They are going to end up in the ocean en-masse though.</comment>


Introducing Bitbucket Pipelines - <AUTHOR> https://bitbucket.org/product/features/pipelines <comment><USER2> Dupe of [https://news.ycombinator.com/item?id=11759733](https://news.ycombinator.com/item?id=11759733)

</comment><comment><USER3> Now this is something to differentiate them from GitHub, which was desperately needed after GitHub changed their prices recently.

<comment><USER4> I've always said, hosting Git repos will turn into a commodity product and I think that's what we are seeing. The logical evolution will be to provide services/features that compliments Git hosting, which cannot be easily replicated.

</comment></comment><comment><USER5> I'm experiencing a strong sense of déjà vu.</comment>


Hacker News - <AUTHOR> http://hackerne.ws

<comment><AUTHOR> I never knew this domain name existed. Thought others might like this shortened version.

<comment><USER2> Afaik it's unofficial --- the domain name is not owned or operated by HN, PG or YC. It could turn into a man-in-the-middle attack at any time.</comment></comment>


Christoph Hellwig's case against VMware dismissed - <AUTHOR> http://lwn.net/Articles/696764/ <comment><AUTHOR> FAQ about the lawsuit, compiled by the Software Freedom Conservancy: [https://sfconservancy.org/copyleft-compliance/vmware- lawsuit...](https://sfconservancy.org/copyleft-compliance/vmware-lawsuit- faq.html)</comment>


Why Rust? [pdf] - <AUTHOR> http://www.oreilly.com/programming/free/files/why-rust.pdf <comment><USER2> While I appreciate the direct link that bypasses the email form, here's the page describing the report and its author:

[http://www.oreilly.com/programming/free/why- rust.csp](http://www.oreilly.com/programming/free/why-rust.csp)

"One of the original designers of the Subversion version control system, [Jim Blandy is] a committer to the SpiderMonkey JavaScript engine, and has been a maintainer of GNU Emacs, GNU Guile, and GDB."

</comment><comment><USER3> From page 19:

> But all those other languages include explicit support for null pointers for > a good reason: they're extremely useful. [....] The problem with null > pointers is that it's easy to forget to check for them.

There is no inherent reason for that; just that mainstream languages which support `null` haven't been checking `null` usage. Some of the recent ones do. For example, Kotlin has non-nullable types by default, and null types have to be explicitly marked and checked for null-ness.

Even for Java, null analysis is built into Eclipse with the help of annotations. Though, ofcourse, it would be far nicer to have it baked into the language.

<comment><USER4> A null pointer is a perfectly sensible implementation of an optional type.

<comment><USER5> It's different from a traditional Option type, though, in that Option<Option<T>> is inexpressible, and that the distinction between map and flat_map is reduced.

<comment><USER6> > It's different from a traditional Option type, though, in that > Option<Option<T>> is inexpressible.

I don't think so. It's just a pointer to a pointer, rather than a single pointer. That is,

      int **value;

and either

       value == null

or

      *value == null

or

      **value == some value of interest

<comment><USER7> Hm... not really.

Say you have a function, `f : (bool, T) -> Option<T>`.

        function f<T>(cond : bool, value : T) : Option<T> {
          if cond {
            return value                 // equivalent: Some(value)
          } else {
            return null                  // equivalent: None
          }
        }

        let x = f(false, f(false, 1))    // equivalent: None
        let y = f(true, f(false, 1))     // equivalent: Some(None)

There is no way to tell apart `x` and `y`.

<comment><USER4> You are confusing types and representations, and your function is not well typed.

<comment><USER7> > You are confusing types and representations

Hm... not sure if I am. Or, at least, `null or T` is not a valid representation for type `Option<T>`. It's all very confusing.

> and your function is not well typed.

How so?

<comment><USER4> The `value` you are returning has type T. T is not the same type as Optional<T>.

With AnimalMuppet's approach, you would need to return a pointer to a T (so, `&value` in something Cish). Note that this is _not_ the same thing as a nullable reference in, for instance, C#.

`null or T` is a valid representation only when T is a non-nullable reference. It doesn't work when T is optional, and it also doesn't work when T is a primitive type, a struct, &c.

That said, there's obvious reasons it might be wanted an optimization where it's possible. For that specific case, `Just value` could be specialized to `value`, but that can be done by the compiler (akin to automatic unboxing, elsewhere).

</comment></comment></comment></comment></comment></comment></comment></comment><comment><USER8> The book is exactly what it says it is. "Why Rust", an argument for Rust. 50+ pages. It's a fun read, but not too useful. My own comment on Rust is that the borrow checker is brilliant, and we'll see that again in other languages. The type/generic system picks up where C++ left off, and is very complex. But that may get better as the mess settles down and gets better documentation.

We now need a "programming in Rust" book which is not by one of the Rust developers, who are too close to the design.

<comment><USER9> > The type/generic system picks up where C++ left off, and is very complex.

That's not entirely true. There are some mechanisms that you can't really do in C++, at least not without a lot of boilerplate. And Rust's generics aren't quite as powerful (as in metaprogramming) as C++'s yet. I hear they're working on it, though.

<comment><USER10> I know they're working on higher kinded types, i think there's some fancy template-template syntax you can use in c++ to get the same effect.

It's easy to define a list of integers in pretty much any language,

        class IntList { void addInt(){...} }

Most languages let you make a generic List,

        class List<T> { void add(T){...} }

The thing that's cool about HKT, is it lets you swap the other side,

        class T<Integer> { T operate(Integer) }

So you can deal with a Set or a List or an Optional or whatever might want to deliver integers. It seems a little goofy, but it's sort of like a Super Lambda. an anonymous function can only really do its one thing, but this lets you bundle a bunch of related lambdas together, so if you have, say Pay, you can group together all the different types of tax that are applied to pay, calculate total tax, etc. And it works over whatever random data structure you want

It seems a little crazy at first, but with clean syntax, it's a fantastic way to split the work apart from the way the data is represented.

</comment></comment></comment><comment><USER11>
        The std::thread::scoped function used here is undergoing some redesign...

/grumble /grumble

Yes, I know, it'll all eventually settle down, but darn its annoying at the moment trying to use stable.

<comment><USER12> It's actually gone entirely now, so using nightly doesn't help you there. And 80% of Crates.io runs on stable, it really depends on exactly what you're doing.

(The 'crossbeam' and 'scoped_threadpool' crates have different implementations of this idea, though.)

<comment><USER13> > 80% of Crates.io runs on stable, it really depends on exactly what you're > doing.

While this is probably factually true -- I've had quite the opposite experience. :(

\- I want to write benchmarks for my code, but I need `#[feature(test)]` AKA nightly.

\- I want to [format my Rust code]([https://github.com/nrc/rustfmt](https://github.com/nrc/rustfmt)), but I need nightly.

\- I want to use Huon Wilson's SIMD crate, which requires nightly.

I'm not saying these things should be stable right now, but I am saying if you try to use Rust right now you _will_ encounter a lot of stuff marked as unstable and/or only usable on nightly due to XYZ. I still think Rust is amazing and everyone should give it a shot though, but it's not as stable/polished experience as I think it will be in say a year from now. The language is stable, but the ecosystem just isn't yet.

P.S. You've helped me personally all too much over the Rust IRC channel, so thank you a million times for that! :)

<comment><USER12> You're welcome :)

I also think that year-from-now Rust will be way nicer than at the moment, it's absolutely early days. But there's a lot you can do, even on stable, right now. This is why I said it depends on what you're doing. Some use cases have absolutely no choice but to use unstable things. Others have options, and others only use stable.

As to your three points:

1\. You can configure things so that you only need nightly when doing benchmarking, and run on stable the rest of the time.

2\. Compiling `rustfmt` needs nightly, but using it doesn't, as it's a binary.

3\. Yeah, the SIMD stuff just happened, so it's gonna take some time.

<comment><USER14> It would be good if the core Rust team owned `rustfmt` the way the Go team owns their extremely opinionated format tool. It _heavily_ enforces very consistent code formatting throughout all publicly available Go code.

Developers like to say they want choice when it comes to formatting, but take it away and you're left with resigned programmers who are very productive at reading code.

^^ Perhaps not the right outlet for this, but maybe you can point me to where this discussion is taking place.

<comment><USER12> Yes, our intent is to officially adopt rustfmt, and we expect that it will be widly used. It's just not ready yet. nrc, who's leading up the work, is a Mozilla employee, and in general, everyone wants it to be ready. Software just takes time :)

</comment></comment></comment></comment></comment></comment><comment><USER15> I know this not the optimal place for this comment/question, but I think likely that many who are interested in this post would be able to speak to the post.

I'm also a huge fan of the Chapel Programming language. Anyone else think they're both hitting a sweet spot and would potentially have a beautiful love child?

</comment><comment><USER16> Is there a Tour of Rust like there is a Tour of Go? I found the Tour of Go very helpful when I first approached the language.

<comment><USER17> There is the Rust book [https://doc.rust- lang.org/stable/book/](https://doc.rust-lang.org/stable/book/), which explains the basics of the language and the standard library though code snippets, and Rust by Example [http://rustbyexample.com](http://rustbyexample.com), which goes less in depth but is more interactive.

</comment></comment><comment><USER18> Awesome read, really helpful. Thanks :)

</comment><comment> 0xe2-0x9a-0x9b There is nothing in Rust that would ease solving hard problems. Graphs are unsupported. No transactional memory. No distributed computing. No migration. No support for trying. No memoization. No proofs.

<comment><USER19> One might argue that "guaranteeing your web browser doesn't have memory leaks" is a "hard problem." Ergo [https://github.com/servo/servo](https://github.com/servo/servo) . I agree, though, that the problems you mention are all ones where I'd love to see a greenfield programming language with as much attention to detail and support as Rust has.

<comment><USER12> (Rust doesn't guarantee an absence of leaks, actually. Just memory safety.)

<comment><USER20> In what conditions could Rust code leak memory, excluding the use of unsafe code? What are the technical reasons you can't guarantee an absence of leaks?

<comment><USER12>
      >  What are the technical reasons you can't guarantee an absence of leaks?

Well, 'leak' is one of those things that's easy for a programmer to understand, but a hard thing for a computer to understand, because it's really about intent. How long did you intend for some resource to live? Any global value is, in some sense, a leak. We had a long discussion about this, and, at least currently, we couldn't come up with a formal enough definition of 'leak' to even start tackling the problem of "how do we solve leaks." (It is entirely possible that I am unaware about research on this topic... but given that solving leaks wasn't a goal of Rust, fixing it would just be gravy anyway. You have to choose your battles, and Rust certainly isn't perfect.)

As for how safe Rust can leak:

        let x = Box::new(5);
        std::mem::forget(x);

which can itself just be implemented in safe code:

        use std::cell::RefCell;
        use std::rc::Rc;

        fn forget<T>(val: T) {
            struct Foo<T>(T, RefCell<Option<Rc<Foo<T>>>>);
            let x = Rc::new(Foo(val, RefCell::new(None)));
            *x.1.borrow_mut() = Some(x.clone());
        }

or something like "I have a thread that is holding the receiving end of a channel that infinitely loops without reading anything off," in which case anything sent down that channel leaks.

<comment><USER19> That's a very intriguing block of code there. I'd like to think that while Rust may not have been designed to guarantee that leaks are prevented, it so happens that anything that _could_ leak memory sticks out like a sore thumb in code review, since the code to get something to leak needs to be explicit. I'd consider a global variable or a channel that has the possibility of not reading all its values to follow that pattern. Whereas it's much easier to get something "stuck" in memory without a reference in C++. But you're absolutely right that memory safety does not at all imply "leak" safety, nor is the latter well defined at all!

</comment></comment></comment></comment></comment></comment><comment><USER21> > It's very difficult to write multithreaded code, which is the only way to > exploit the abilities of modern machines.

QED? Really? I'm not so sure I trust the author to give rust fair treatment anymore. An operating system that does multithreading is not the same as a modern machine.

Edit: Any brave down voters want to explain why? Threads are a way to model concurrency. There are other ways.

<comment><USER22> More importantly, Rust goes out of its way to make it _easy_ and _safe_ to write multithreaded code...

<comment><USER23> Does Rust do anything to prevent deadlocks?

<comment><USER24> Eliminating deadlocks in general isn't possible in a Turing-complete language. What's cool about Rust is that it does statically eliminate a certain subset of race conditions known as data races. So while deadlocks are still possible in Rust, the typesystem is guaranteed to prevent concurrency errors that would result in corrupted data.

<comment><USER23> The Rust community makes a car:

"Check out our awesome new car! It makes driving ' _easy_ and _safe_ '!"

"Does it prevent crashes?"

"No, that's impossible! But here, look at our onboard computer that prevents many types of driving errors."

I _like_ Rust. I want it to succeed. But I think the rhetoric gets ahead of the language sometimes, and not prioritizing higher level concurrency tools because you have the borrow checker is a mistake.

<comment><USER24> It's incorrect to say that Rust hasn't prioritized higher-level concurrency tools. Many of the design decisions over the previous years have been made with an eye towards supporting every concurrency paradigm.

For example, here's a post of Niko Matsakis' from Feb 2014 about changing a fundamental aspect of the borrow checker in order to better support data parallelism in the future: [http://smallcultfollowing.com/babysteps/blog/2014/02/25/rust...](http://smallcultfollowing.com/babysteps/blog/2014/02/25/rust- rfc-stronger-guarantees-for-mutable-borrows/)

For another example, here's an RFC from Nov 2014 about fundamentally altering Rust's concurrency support in order to better support fork-join parallelism in the future: [https://github.com/rust- lang/rfcs/blob/master/text/0458-send...](https://github.com/rust- lang/rfcs/blob/master/text/0458-send-improvements.md)

I'm also confused about your perception that the rhetoric gets ahead of the language. The type system does indeed make things easier and safer. When people ask what that means, we're eager to elaborate on the precise guarantees that Rust provides. Misleading people as to Rust's capabilities is not on the agenda.

<comment><USER23> >It's incorrect to say that Rust hasn't prioritized higher-level concurrency tools

I think it's a fair characterization given 1.0 shipped without them, and there doesn't seem to any timeline for standardization (please correct me if I'm wrong).

I don't think I have to tell you that concurrency is one of the most important challenges in modern programming. But all Rust gives you today (and for the foreseeable future) is a pthreads wrapper.

>I'm also confused about your perception that the rhetoric gets ahead of the language

The parent comment says verbatim "Rust goes out of its way to make it easy and safe to write multithreaded code". This apparently doesn't include preventing deadlocks, a problem that is common, hard-to-avoid, and difficult to recover from. Does that not strike you as a bit of an overreach?

<comment><USER25> > deadlocks, a problem that is common, hard-to-avoid, and difficult to recover > from

Deadlocks are by far the easiest concurrency problem to debug, since it's _very_ obvious when your program is deadlocked, and in most cases a stack trace of the involved threads is sufficient to debug and fix a deadlock. Also, if your program is deadlocked it won't corrupt user data.

Rust's std::sync::Mutex is fortunately non-recursive, which makes it easier to find deadlocks during testing.

Data races are far worse since they may cause arbitrary effects at a later point in program execution, so they take a lot of developer time to track down and very likely lead to data corruption.

<comment><USER23> If deadlocks are so easy to fix _why do they happen so often_? Seriously, how many applications have you seen hang in your life? (not to discount the role of other race conditions in causing hangs, which the borrow checker also can't categorically prevent).

<comment><USER26> Null pointer derefs are easy to find and fix and : yet.

<comment><USER27> This is not always the case. Null pointer derefs are just indicators that the program got into an invalid state. Is the fix to provide some alternative pathway when the program got in a bad state or is it to prevent the bad state from happening in the first place? If the fix is to prevent the bad state, tracking down how that state occurred in the first place can often be time consuming in the case of data races.</comment></comment></comment></comment></comment></comment></comment></comment></comment></comment></comment>


Future of Engineering [video] - <AUTHOR> https://www.youtube.com/watch?v=HEnFBHqHJT8&feature=youtu.be <comment><AUTHOR> This was a talk I just did at the NFMT (National Facilities Maintenance & Technology Show in Orlando). It's about 80-90% about automation and the exponential nature of technology. Let me know what you think.</comment>


How Advertisers Convinced Americans They Smelled Bad - <AUTHOR> http://www.smithsonianmag.com/history-archaeology/How-Advertisers-Convinced-Americans-They-Smelled-Bad-164779646.html? <comment><USER2> <http://news.ycombinator.com/item?id=4355706></comment>


Someone Stole My Startup Idea – Part 1: Are Those My Initials? - <AUTHOR> http://steveblank.com/2009/12/03/someone-stole-my-startup-idea-%E2%80%93-part-1-are-those-my-initials/

<comment><USER2> _The interpreter's face went white, and after a lot of "I can't tell him that," he did._

I used to work as a translator/interpreter, among other duties, at a technology incubator in central Japan. Technical interpreters are expensive -- the best have hourly rates comparable to lawyers. They are paid that much because they bring in far more than their hourly in business deals saved from disastrous miscommunication. If your interpreter is trying to wave you off a topic, you might consider taking the advice you are paying so dearly for. (Incidentally, we're told that the canon of professional ethics requires translating every word without failure, so "You really don't want to say that!" should be a pretty big red flag to you that you are about to step in something.)

<comment><USER3> I can't say I would have done any differently than he did, putting myself in his situation, regardless of the interpreter's advice.

Handle the situation with as much diplomacy as possible once the issue has been brought up, sure. But I'll be fucked if I'm going to sit in a meeting while the presenter uses my slide containing a "chart I had laboured over for months" to illustrate his company's strategy, while passing it off as their own.

 _"We weren't sure if we should feel insulted or complimented, but after a few deep breaths (and a lot of kicking under the table by my head of business development) my smart VP of business development used it as an opportunity to point out how honored we were that there was an obvious strategic alignment between the two companies."_

And there's an example of the diplomacy I was speaking of. I'd be fine putting a spin like that on it if required, for the sake of maintaining the relationship. But no way would I sit there and smile without saying a word.

<comment><USER4> Im not sure I agree to be honest; indeed it looks like salvaging the situation rather than diplomacy.

In that situation they handled it really poorly and both sides lost an incredibly amount of face. My understanding of cultural stuff in Asia is above average but not complete: I do know enough, though, to say that a continued business relationship was an incredibly lucky outcome all round.

<comment><USER3> _Im not sure I agree to be honest; indeed it looks like salvaging the situation rather than diplomacy._

I would tend to agree, but I guess my definition of diplomacy includes salvaging situations. My kind of diplomacy isn't all roses and puppies.

Half my family is Asian (though not Japanese), I have a personal interest in Japanese culture and I'm generally aware of the cultural differences between East and West. Irrespective, I still would not sit tight in a meeting and smile while someone passes off my work as their own, regardless of how much face is at stake. I wouldn't much enjoy living with myself after such an episode.

</comment></comment></comment></comment><comment><USER5> _Examining the slide, I pointed to the bottom right and said to our translator, "Tell him my initials are still on the bottom." The interpreter's face went white, and after a lot of "I can't tell him that," he did._

Perhaps a business genius in the U.S., but certainly not in Asia, specially Japan. He gains nothing from calling someone out on their plagiarism, in their office, during business negotiations. In fact, he has everything to lose. There are far more subtle ways to exert yourself, and jumping out and crying foul is not one of them.

Then he goes on to joke about Seppuku ..

<comment><USER6> Perhaps, but I'm just not sure I would be able to let that stand, myself. And I tend to be a pretty calm and rational person.

Anyway, I don't think he "screamed foul", he just pointed out a fact. If it's deeply embarrassing to the other party, that's because that embarrassment was richly deserved, in nearly any culture.

<comment><USER2> I have asked foreign clients the following question many, many times: in case they come into conflict, would you prefer me to choose the path which preserves your ego or your business interests?

Most get the hint.

(A close variation of the line works on Japanese people, too.)

<comment><USER5> In China I could be as frank as I needed to be with the business owners, they get it. But everyone beneath them had to be dealt with via signals and customs.

Same in the middle-east. It's an elaborate ceremony, communicating via intermediaries and exchanging pleasantries at dinners and formal gatherings, but as soon as you climb the ego ladder and reach the highest stakeholder you can drop ritual and say "dude, we're fucked". Sometimes you reach a very beneficial and logical agreement with The Man, then thinkup ways to rationalize it and explain it to the role-playing minions below him. Tradition and bureaucracy are often abused by selfish and incompetent people to keep status. (Once you reach the C-level contact, I recommend that you don't cut off his aides and minions; treat them as you have treated them before, when you needed access to him, that way they will not consider you a threat. As an exercise, go back to them for a few more "favors" and let them shake you up for bottles of scotch, it makes them feel in control, and when the boss has future plans with you, they "know" they will be treated.)

</comment></comment></comment></comment><comment><USER7> bit.ly stole TinyURL's startup idea!

It's the execution that matters.

<comment><USER8> That's the mantra around here, yes. The article's author knows that mantra, and assumes his reader does, too.

</comment></comment><comment><USER9> Part 2 is up, & here's the article on it:

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

</comment><comment><USER10> I think ideas _cannot_ be stolen.

</comment><comment><USER11> link bait title, it's not his startup idea that got stolen, just a slide out of his presentation.

<comment><USER12> And this is part 1. He said the idea that got stolen here was relatively minor. Part 2 is a story about a more serious case.

<comment><USER13> It's more of a 'link-bait-and-switch' title.</comment></comment></comment>


Une stack Sublime Text 2 pour développeurs Ruby - <AUTHOR> http://www.synbioz.com/blog/sublime_text <comment><USER2> Learn english

</comment><comment><USER3> Umm French ??</comment>


Hacking Education (continued) - <AUTHOR> http://www.avc.com/a_vc/2009/03/hacking-education-continued.html <comment><USER2> "But here's a quick summary of my big takeaways:

"1) The student (and his/her parents) is increasingly going to take control of his/her education including choice of schools, teachers, classes, and even curriculum. That's what the web does. It transfers control from institutions to individuals and its going to do that to education too."

I am an example (of such a parent, of such students). This issue of education reform has long been my passion.

<http://learninfreedom.org/>

The constraints I face as a parent are

a) money, as I pay taxes to a school system that I hardly use (and K-12 schooling is the biggest single line item in a typical state government budget),

b) credentialing, because there are various regulations of K-12 education and various expectations of college admission committees I have to keep an eye on,

c) time management, because I have more than one child to educate at the same time,

and

d) community-building, because as I mix and match programs my children encounter a diverse group of classmates, some of which I have never seen.

But it can be done, and I enjoy it. My oldest son will be applying to colleges in the Northern Hemisphere autumn of this year, and he will have secondary- level or college-level transcripts from six different schools or programs, some brick-and-mortar programs here in town and some distance learning programs based far away.

All this would be much easier for more parents if

1) state funding for K-12 were a reimbursement to the learner rather than a subsidy for a government-operated oligopoly school,

and

2) any schools that still exist as distinct institutions would automatically transfer credit from all accredited providers.

It will be an adventure to see what my son's college admission results are next year. I'm actually rather inclined to have his younger brother be more of a pure "unschooler" and not take so many accredited courses by distance learning.

</comment><comment><USER3> I posted some related thoughts on my blog: <http://urlzen.com/7hk></comment>


Better JSONP-ifier turns any JSON API into a JSONP API quickly and safely - <AUTHOR> http://better-jsonpifier.herokuapp.com/

<comment><AUTHOR> Better jsonpifier checks callbacks to make sure people don't put arbitrary javascript in the callback function and then memcache the results to keep up the speed. It also dont serve any invalid json file. I built this baby with speed and safety in mind and hope you guys enjoy it as much as I do.</comment>


YC Partners with Atomwise to Fund More Bio Companies - <AUTHOR> https://blog.ycombinator.com/yc-partners-with-atomwise-to-fund-more-bio-companies/ <comment><USER2> I think I have seen this show before, again its about DATA and perpetual retention of data in a multi-billion dollar drug discovery business. "Internal Research Purposes"

The devils in the details friends...

Each Party shall have a nonexclusive, perpetual, irrevocable, royalty-free, fully paid-up, worldwide license to use the other Party's Data for Internal Research Purposes. "Internal Research Purposes" shall mean any research and development by employees, students, contractors, consultants, or other representatives of either Party. Neither Party shall sell, lease, or license the other Party's Data. Neither Party shall share the other Party's Data with any third party, except: (a) as permitted in Sections 5.4 and 6, (b) as required for the performance of the Project, or (c) with written permission of the other Party.</comment>


Slack on a SNES - <AUTHOR> https://bert.org/2018/10/18/slack-on-a-snes/ <comment><USER2> Wait, so I can finally run Slack in a browser! SNES emulator targeting WASM.

</comment><comment><USER3> On a similar note:

[https://arstechnica.com/gaming/2015/01/pokemon-plays- twitch-...](https://arstechnica.com/gaming/2015/01/pokemon-plays-twitch-how-a- robot-got-irc-running-on-an-unmodified-snes/)

<comment><USER4> that TAS isn't THAT impressive, given that the same techniques can be abused to produce this: [http://tasvideos.org/5384S.html](http://tasvideos.org/5384S.html)

Also, the detailed rejection response to TASbot plays Twitch, remarks that actually running the Twitch client code on the SNES is possible (with SNES having web connection peripherals) rather than just streaming the chat output video through a controller. The submission and the responses are located at [http://tasvideos.org/4947S.html](http://tasvideos.org/4947S.html) if you want to check them.

</comment></comment><comment><USER5> It seems rather appropriate that XML is still required at some point in this process.

</comment><comment><USER6> I didn't care about the slack stuff... But Nintendo had a freaking satellite?

<comment><USER7> You don't need your own satellite to broadcast on one, you can just rent access.

<comment><USER8> From whom?

<comment><USER9> A Japanese satellite radio company called 'St.GIGA'.

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

</comment></comment></comment></comment><comment><USER10> I got distracted by the > const pad = require('pad-left');

Just curious, not much has changed since the left-pad issue a while ago? Not saying it's wrong though.

<comment><USER11> It has been standardized meanwhile, see [https://developer.mozilla.org/en- US/docs/Web/JavaScript/Refe...](https://developer.mozilla.org/en- US/docs/Web/JavaScript/Reference/Global_Objects/String/padStart)

<comment><USER12> Hm, at first I thought that they went with "padStart" instead of "padLeft" to address RTL languages, but the documentation still says

> _The padding is applied from the start (left) of the current string._

I wonder if they just didn't want the "pad-left" stigma.

<comment><USER13> Many current programming languages and libraries go with start/end rather than left/right precisely because of RTL languages. Clarifying "start (left)" doesn't seem unreasonable to help readers of English documentation understand, though it should probably say "start (left in left-to-right languages)".

</comment></comment></comment></comment><comment><USER14> I clicked the link in horror hoping to hell someone had not ported electron to an SNES. Happily they did not... my faith in humanity is restored.

</comment><comment><USER15> To have Slack on an actual SNES, you could put a modem/NIC in the cartridge, like XBAND did in the 90s.

</comment><comment><USER16> Twitch chat on Pokemon Red has been done :^) [https://www.youtube.com/watch?v=P28kp66XMw4](https://www.youtube.com/watch?v=P28kp66XMw4)

</comment><comment><USER17> Now here's a guy who's going to be eaten by a Tyrannosaur some day.

</comment><comment><USER18> Bert! Great use of those platform APIs

</comment><comment><USER19> An SNES.

<comment><USER20> I wonder if this is a continental thing? I grew up in Europe and everybody always pronounced SNES as "snes", then recently visiting America and chatting to a bunch of geeks, I was surprised that they all called it the "ess enn ee ess"

<comment><USER21> I rarely have an excuse to say it out loud, but my default would be 'Super Nintendo'. Not sure if that's standard here (Australia), but it's what I remember hearing as a kid.

<comment><USER3> I remember the same growing up in Australia, though nowadays I tend to say "snes" for some reason

<comment><USER22> Germany here. "Super Nintendo" or "ess enn eh ess". Precursor was the "enn eh ess" (eh as in less, not as in tea)

</comment></comment></comment></comment></comment><comment><USER23> I got all excited and thought it was about running Slack(ware) Linux on a SNES, then its this crap _sobs_ ( ;) )

<comment><USER24> This is such a common comment on HN that it makes me believe that a small portion of the population doesn't realize that "hey, that word can mean multiple things" is a thought everyone has all the time without considering it particularly noteworthy.

Of course, it's really just an opportunity for some weak posturing like "heh, I thought you meant floppy as in the floppy disk, something us grey beards had back in our day ;)."

<comment><USER20> > "hey, that word can mean multiple things" is a thought everyone has all the > time

Oh how I wish this were true; but from what I've seen, the vast majority of arguments in the world today boil down to people assuming that their own definition of a word is the only valid definition of that word :(

(As an example, person A might say "feminism [meaning man-hating] is bad", and person B might say "no you're wrong, feminism [meaning equality] is good!"; and then even though they both actually agree 100% about the fundamental ideas, they end up as bitter enemies, deeply offended by each other, because they can't see that they're actually talking about different things...)</comment></comment></comment>


Uber losing $1B a year to compete in China - <AUTHOR> http://www.reuters.com/article/uber-china-idUSKCN0VR1M9 <comment><USER2> > "We have a fierce competitor that's unprofitable in every city they exist > in, but they're buying up market share. I wish the world wasn't that way." > (Uber's CEO)

I'm sorry but... isn't this exactly what Uber has been doing to their competitors for a long time in most markets?

<comment><USER3> This reminds me of the free market drive in India. First generation of companies after market reforms, like Airtel, would openly scream "free market" and destroy state held BSNL's monopoly.

But they now want more regulations on a free internet, they work against net neutrality because "a large amount of their invested money" would be derailed.

Basically when it happens to others, its free market. When it happens to you its unfair/harsh.

<comment><USER4> I think the saying is "pulling up the ladder behind you".

</comment></comment></comment><comment><USER5> don't race to the bottom as a foreign firm against locals in China. you won't win. they will go much lower and harder and longer than you will. they will turn the heat off in the -12C winter and have people coding in their parkas to save cash.

i hung out with some of the Uber e-staff and founders when they were in China. i think the most memorable quote was "there's what works for every other country in the world and then there's China".

i think they stood a chance if they had positioned themselves as an upscale service. foreign brands convey status. they could have had something there that the locals didn't. but that's not what they're doing everywhere else in the world, and i understand them not being willing to split their strategy for the market.

so i guess they went with firepower. and i would guess they knew it had a low chance of success. entry into China is hard. that trail is lined with bodies, every drop of blood sucked dry.

it's difficult understand until you see it for yourself. there are people arranging fake uber rides online to split the subsidies. but they had some idea. it's a big market and Uber has a lot of cash, but $1B is still a big bet with such bad odds.

<comment><USER6> "Never get involved in a land war (or car service price war) in Asia."

<comment><USER7> Douglas Macarthur said this ... (or part of it) and then wound up fighting the Korean War ... which we won.

So ... never say never, I guess.

<comment><USER8> Dunno if I'd say "we won." Technically North and South Korea are still at war. And apparently MacArthur said that _after_ the Korean War.

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

<comment><USER7> Can you find a definitive link?

I find this ...

"MacArthur articulated his most famous dictum—"never get involved in a land war in Asia"—after the Japanese surrender, because he believed that Japan's simultaneous war in China made his Philippines victory possible. Japan had annexed Manchuria in 1931, then invaded China in 1937" [ [http://www.politico.com/magazine/story/2014/05/rethinking- do...](http://www.politico.com/magazine/story/2014/05/rethinking-douglas- macarthur-106397_Page2.html)]

We acheived our goals of stopping the Communists from conquering a friendly nation; so it's a victory.

<comment><USER8> No, we intervened in a civil war between two groups, one that we decided was more in our interests to support. And we opened 2 markets for arms to be sold to, that would be healthy vibrant markets (for arms) for the next seventy years.

</comment></comment></comment></comment></comment></comment><comment><USER9> There seems to be a lot of people parroting that the CCP freezes out foreign firms by onerous Chinese regulations favoring local firms.

That may be the case for a number of different situations. However, Didi Kauidi, China's ride-sharing service, may just be a better offering than Uber.

Last year, it arranged 1.4 billions rides, more than Uber has done worldwide in its entire history. Also, Didi doesn't just focus on private-car services. It lets users pick a taxi, private car, shared car, shuttle van, or bus to pick them up. It also is tailored to the local market. During Chinese New Year, lots of flights and trains were sold out. Didi helped users find inter- city rides at train fare prices.

It also has a few quirks that separate it from Uber. You can book a test drive of new cars (Audi and Mercedes included). And, Didi is also offering a Tinder- like matchmaking service for passengers. As a kid, I was getting it on in the back seat of my parent's Dodge. What a time to be alive.

<comment><USER10> >And, Didi is also offering a Tinder-like matchmaking service for passengers. As a kid, I was getting it on in the back seat of my parent's Dodge.

Wait, what?

<comment><USER9> Didi will soon allow drivers and passengers to select each other based on their shared interests. It already has a deal with LinkedIn, to let people join up their accounts on the two networks. The intention of such initiatives is that white-collar workers, who often endure daily commutes of an hour or two, will have more fruitful journeys during which business, friendship and maybe even romance will develop.

\- Per the Economist

<comment><USER11> So...you matched with your parents as your driver and found a sexual interest to carpool and play with? In a Dodge? (In China?)

</comment></comment></comment></comment><comment><USER12> I'm afraid this is a fight Uber won't win. I just can't see the Chinese internet giants letting an American company dominate this space. Call me jaded, but the world isn't so black and white, and I'm sure in the end Uber will concede to defeat after realizing their biggest competitor aren't playing by the same rules.

<comment> rm_-rf_slash It's not jaded, it's an accurate understanding of China's historically mercantile attitude.

I cannot for the life of me think of a single foreign product or company operating in China that China hasn't copied for their own version (or ripped off, like the fake Apple stores). The only exceptions are culture companies, where the brand matters more than the product (Pizza Hut; McDonalds; Starbucks).

<comment><USER13> Microsoft, Intel and Apple seems to do well, just on top of my head, many car companies are also doing well, although German and Japanese cars sell better than American ones.

After some googling, looks like Nike, Coca-cola, Gillette are all doing reasonably well.

<comment><USER14> Is Microsoft doing well? Their products are popular, but they have trouble getting anyone to actually _pay_ for them.

<comment><USER15> Their tens of billions in revenue suggest SOMEONE must be paying for them.

<comment><USER16> They have tens of billions in revenue in China?

<comment><USER17> > Of the $77.8 billion revenue Microsoft generated in its 2013 financial year, > China, Brazil, and Russia each "exceeded" $1 billion

[http://www.businessinsider.com/r-naked-pcs-lay-bare- microsof...](http://www.businessinsider.com/r-naked-pcs-lay-bare-microsofts- emerging-markets-problem-2014-10)

</comment></comment></comment></comment></comment></comment></comment><comment><USER18> Why does Uber need to be in China again? Why can't they be happy growing their service and providing better services (like better driver auditing and education) for the North American market?

If they spent $1 Billion improving their service it's better than trying to outspend a natively innovating company in China backed by local people running under different rules.

<comment><USER19> VC backed companies have a built in promise of attempting global scope when they can.

And it's for the same reason why you want visa everywhere. Even if everyone uses unionpay, the travellers want their visa cards to work.

<comment><USER20> It's quite a handy thing with Uber having just been in Saigon, Taipei, Manila and similar it was a pleasant surprise to find Uber just worked, avoiding having to research local taxi scams, trying to figure you've got change in local currency when you've just landed and so on.

</comment></comment></comment><comment><USER21> > "We have a fierce competitor that's unprofitable in every city they exist > in, but they're buying up market share. I wish the world wasn't that way." > \- Kalanick

Haha, really? Isn't that how Uber started out, and the quote could well be verbatim from a taxi driver in 2011?

<comment><USER22> Yeah, the hypocrisy contained in that statement is stunning. I wonder how the CEO of Lyft felt when they read it.

<comment><USER23> How is that hypocrisy?

>We beat some people in some markets, but now we're being beaten in this market, I wish we weren't.

<comment><USER24> "I wish the world wasn't that way" looks like its being applied to "unprofitable in every city they exist in, but they're buying up market share" not "We have a fierce competitor" as opposed to if he had said [I wish we didn't] or [I wish they didn't]

making it about the "the world" pushes it into an ethical or moral opine.

</comment></comment></comment></comment><comment><USER25> HN commentators are missing the point. Uber's strategy is lifted straight from Groupons playbook: they're expanding aggressively internationally to drive home the message that "HEY LOOK WE'RE A GLOBAL PLAY. WE'RE IN 42 CITIES IN CHINA!"

This will drive up the IPO value. By the time they get steamrolled by the local competitors or by the local regulators (likely both) they'll have sold off their shares to the dumb retail investor.

The fact that the heads of Uber China and its main local competitor are literally family members is very telling....

<comment><USER26> > The fact that the heads of Uber China and its main local competitor are > literally family members is very telling....

More on this please?

</comment></comment><comment><USER27> Any firsthand accounts of Didi Kuaidi pricing from chinese HNers?

I took a few cabs around shanghai in 2008 and was floored at how cheap their prices were.

If Didi Kuaidi is undercutting taxi prices, and Uber is trying to undercut them... ridesharing must be almost free in major chinese cities at this point I'm assuming?

<comment><USER28> So didi offers a couple of services: a taxi service, it just helps you hail a normal metered cab. I use that service every day, and it is no more expensive than doing it the old fashioned way...but during peak, I can input a tip (up to 20 kuai, or about $3), which helps me get a cab when I would otherwise not be able to. Call that "surge pricing" I guess.

The black car service, my wife uses that more. I have trouble using it since I can't epay (no chinese ID number to link to my unionpay card). But the cars are nice, the prices are a bit higher than taxis but we often get coupons that bring the price down. Still nowhere near to the cost of a taxi in the west.

<comment><USER29> How does this compare to Uber?

<comment><USER28> I actually haven't used Uber in China. It isn't that big in Beijing, but I hear in places like Guangzhou it has much more of a presence. As far as I can tell, they have about the same cars working for them (they can take hails from both); I'm guessing the only difference is in the subsidy.

</comment></comment></comment></comment><comment><USER30> Does anyone know the largest net loss a company has ever had for the year prior to an IPO? Uber must be 2 years max from going public and their losses seem to be accelerating[0].

[0] [https://www.theinformation.com/ubers-losses-grow-but-so- do-i...](https://www.theinformation.com/ubers-losses-grow-but-so-do-its- profit-projections?shared=4d2098)

</comment><comment><USER31> > "We're profitable in the USA, but we're losing over $1 billion a year in > China," Uber CEO Travis Kalanick told Canadian technology platform Betakit.

I didn't realize they were profitable here. When did this happen?

<comment><USER26> I can't find the article where i read the numbers (it was on the Guardian news site) but Uber's reported loss for 2015 was in the billions, however, that included income also in the billions. The loss as others here have noted comes from growth and investment. If you segment their operations they appear to be profitable in some regions.

</comment></comment><comment><USER32> Last funding raise was something like $2.1B. I suspected uber's burn rate was high but this implies that they're going to be hitting some hard liquidity issues within the next 18 months if they can't perpetually raise capital.

</comment><comment><USER33> Uber is amazing in China. We used it all over Beijing

</comment><comment><USER34> The photograph in the article is of an office for Uber in Hong Kong. Is there any reliable data available about how the company is doing there? Uber is ideal for places with inefficient public transportation; Hong Kong has easily one of the most efficient public transportation systems in the world. Subway, tram, light-bus and easy walkability make Uber seem redundant.

<comment><USER35> There are still A LOT of taxis in Hong Kong though...

<comment><USER34> Doesn't that make the case for Uber even worse? Where Uber shines is being cheap and more available than the closed system of Taxis. With Taxis everywhere (and them being so cheap, I paid about HK$40 to get from the airport to Happy Valley) it seems like Uber wouldn't have a place in the market.

<comment><USER35> I would think you were right, but HK is similar to New York in that respect and Uber _appears_ to be doing well there...

</comment></comment></comment></comment><comment><USER36> Target runs a store in Rogers, AR just to spite Walmart. [http://www.reuters.com/article/us-walmart-target- idUSTRE73K6...](http://www.reuters.com/article/us-walmart-target- idUSTRE73K6QA20110421)

</comment><comment><USER37> I'm surprised (not that surprised) to hear there's ride sharing apps in China at all. I lived in Beijing for a few months several years ago and the taxis are (for a foreigner) pretty reasonable and efficient. Besides better public transport, taxis were everywhere, some were just motorized three wheeled motorbikes with a little chair on the back. Besides those, one night while getting a taxi to a bar, a random person stopped by and offered us a ride. My Chinese friends negotiated a pretty reasonable price to get across the city.

The point is, I think ride sharing apps have much more competition in China/Asia. It's not just terrible bus systems and inefficient taxi services like in America.

<comment><USER14> Taxis are indeed cheap and plentiful, but the ride sharing services are somewhat cheaper and somewhat easier to hail. Plus, the customer base is so gigantic that there's room for many players. It's not like some US cities where Uber is displacing traditional taxi services that charge $400/mile to ride in a broken-down Chevy driven by an escaped axe murderer, but you don't necessarily need that much of an edge.

</comment></comment><comment><USER38> Honestly, I'm not surprised. 滴滴出行 is throwing a lot of money at buying people. I downloaded the app in case I can't get a cab in Beijing, and they keep bombarding me with "15RMB voucher", "50RMB voucher", "50RMB voucher", "25RMB voucher" just to get me to start using the app.

Regular cabs are cheap and plentiful over here. I can go from here to Sanlitun for about 150RMB, which is about 30km. Within 4th ring road, flagging one down (outside of rush hour) is trivial. Public transportation is cheap as well (1RMB for a bus ride, 3-10RMB for a subway ride all over the city). That means that neither Uber nor Didi are competing on convenience, they're competing on price till they've got the market cornered.

And every app over here does it. Wechat pay got themselves advertising spots during the New Years Festival Broadcast last year and has been offering discounts EVERYWHERE last November. McDonalds, Subway, Paris Baguette, literally everywhere. This year Alipay got to sponsor the New Years Festival Broadcast, so they're in catchup mode right now.

Uber may have used the strategy first, but they're late to the party in China. As a foreign company in China, they should have positioned themselves as a premium provider. Look at what Apple did. It's a thing of beauty how obsessed Chinese people are over their iPhones.

So how would Uber have gone about that? Offer premium rides first. Nice climate controlled cars with properly screened chauffeurs. Aim for the people that aren't quite able to afford a full-time driver. Didi can be nicer than cabs, but it's a little hit or miss sometimes. Remove that ambiguity.

Open up an Uber store in Sanlitun. Does an Uber store make sense? No, but then a lot of things do not make any sense here in china, and they still work somehow. Nice modern store, a fancy car somewhere on display, and what would it sell? Gift rides and vouchers. Exploit the Chinese habit of giving gifts and regifting(you can buy fruit in boxes for Chinese new year, why not Uber rides in boxes?), and go wild with it. Wooden box with a red sleeve, containing a scale model of a car with minimal uber branding, some assorted status object and then a red envelope that folds open to reveal an Uber voucher in the X000RMB range, or some fancier rides you can't book through the app (eg. armoured cars/vintage cars/sports cars/helicopters/etc.). In a sense, Didi is already doing some of these.

The point is, if you're trying to get into the Chinese market, don't get into mudfights with Chinese competitors. They'll fight dirty, and if you fight dirty, they'll fight dirtier. Apple didn't come out with a discount phone to beat Xiaomi (which btw, fights REALLY dirty. They sell to distributors ABOVE MRSP to cut their margins. the distributors have to put up with it).

No, go premium, and come early. There's an entire part of the Chinese tech industry that calls itself C2C - Copy 2 China. The moment your startup hits techcrunch, there'll be a Chinese copy of it. That is a law of nature. It will happen to you.

Uber should have known this before throwing down the gauntlet over here. It's not going to be a fun ride for 'em.

</comment><comment><USER39> I don't understand. Why not just focus on the rest of the world? It is, after all a big effin world. China has always been a different market. What's with this need to monopolize every corner of the world and lose a shiz ton of $ in the process?

<comment><USER40> Its not about the world - but who has the money.

Ghanan kids prolly wont have the money to even afford Uber.

<comment><USER39> you'd be surprised at the pace of growth of the economy in many African countries.

</comment></comment></comment><comment><USER41> The gall in that psychopath.

<comment><USER42> Please don't throw around the word 'psychopath' as a personal slur on HN. Personal attacks are not allowed here.

We detached this comment from [https://news.ycombinator.com/item?id=11129670](https://news.ycombinator.com/item?id=11129670) and marked it off-topic.

</comment></comment><comment><USER43> Their brand redesign was the beginning of the end. This will accelerate the process. Their team has no clue what it is doing. You can downvote, but this will be a fact sooner than you might think.

<comment><USER44> On HN every day brings some new event that completely changes everything forever and deserves all our attention and capacity for outrage. Don't you ever find this exhausting?

<comment><USER45> HN enjoys drama and Silicon Valley is our stage.</comment></comment></comment>


Show HN: Watermarked images with watermark.js 1.0 - <AUTHOR> https://github.com/pa7/watermark.js

<comment><USER2> I like this--it's in particular a great demo of going from images to canvases and back again. Plus it's useful.

Like he says, it's easily bypassed by viewing source (or disabling JS), but it's still quite a useful thing for insecure applications, I'd think.</comment>


Apple may have finally gotten too big for its unusual corporate structure – Vox - <AUTHOR> http://www.vox.com/new-money/2016/11/27/13706776/apple-functional-divisional <comment><USER2> The reason Apple is exiting displays and WiFi routers is that those have become commodity markets where Apple can't add much value anymore. It's not that they can't stay in those markets; they just don't want to.

Ever hear this ad? "Comcast gives you the fastest in-home WiFi." Think about that: a cable ISP is advertising _in-home WiFi speeds_.

That is why Apple is not bothering to make WiFi base stations anymore. WiFi is now something that comes with your home broadband connection. Plugging a 3rd party wireless router (even from Apple) into a Comcast modem/router only makes things more complicated and fragile for consumers.</comment>


Experts Share Top Blogging Tips for Beginners - <AUTHOR> http://www.breatheweb.com/blogging-tips/ <comment><USER2> Step 1: Build a time machine and go back to 2006</comment>


Taking maths to the street - the maths busker - <AUTHOR> http://news.bbc.co.uk/1/hi/magazine/8748004.stm

<comment><USER2> I know Matt quite well, he's one of the people involved in the MathsJam: <http://www.mathsjam.com>

He's pretty good too, and I'm looking forward to seeing people start to do math based tricks on the street and getting people engaged. They're actually doing quite well, and learning fast.</comment>


KFC Internet Escape Pod (Faraday Cage) on Sale - <AUTHOR> https://www.kfclimited.com/ProductDetail.aspx?did=28027&pid=235423&logoid=0 <comment><USER2> This is hilariously awesome. I want one!</comment>


The Ransomware Superhero of Normal, Illinois - <AUTHOR> https://www.propublica.org/article/the-ransomware-superhero-of-normal-illinois <comment><AUTHOR> Amazing this guy (and others) helping desperate people without compensation while he struggles financially. Seems the computer security industry and software vendors could be doing more.

<comment><USER2> He perhaps could get a job with them but remote work still isn't largely available, and Normal Ill isn't a big tech city.</comment></comment>