Run code inline in Atom using Jupyter kernels - <AUTHOR> https://github.com/nteract/hydrogen <comment><USER2> > Hydrogen was inspired by Bret Victor's ideas about the power of > instantaneous feedback and the design of Light Table.

Good work.

Although Bret Victor deserves lots of appreciation for his work, most of his ideas are actually how Xerox PARC workstations and Lisp Machines used to enable developers to program more productively.

So if anything the best part of his work is making young generations aware of what the industry lost when those systems failed to gain wide market acceptance.

<comment><USER3> If you try hard enough, you could tie any new development to the past.

Lisp may have been the first language with a REPL (as far as I'm aware it was either Lisp or Forth), but REPLs have evolved over the years, and plenty of modern programmers were familiar with REPLs before Bret Victor's views on instant feedback became popular.

<comment><USER2> The way one interacts with the Xerox PARC and Lisp Machines environments is much richer experience than a plain REPL.

It was a graphical REPL that could embedd live objects, which were still active to further interactive changes.

Also the ability to have the whole OS exposed via the REPLs is hardly available in modern systems.

Not alk REPLs are made alike.

<comment><USER3> My point is that REPLs (and other dynamic programming tools) have been in constant use since they were invented, and although respect can be paid to the originators of the approach, we're not really experiencing a rediscovery of those first ideas, but rather we're experiencing an evolution of the ideas they started. In other words, there's been plenty of activity in this area between when they were invented and now, let's not discount that activity.

As for modern systems not allowing the whole OS to be exposed via a REPL, there is at least one actively developed OS that allows this, and that's Oberon. The most recent revision of the Oberon OS was from 2013.

[https://en.wikipedia.org/wiki/Oberon_(operating_system)](https://en.wikipedia.org/wiki/Oberon_\(operating_system\))

<comment><USER2> I was an Oberon user for a while, back when it was still being developed.

The version 3 with the Gadgets framework was quite cool.

The only modern OS environments that come close to these experiences are Windows with .NET/VS/Powershell and OS X with Playgrounds, the OS X Frameworks and Applescript.

Don't get me wrong, it is great what they are doing and I for one enjoy Notebooks, Playgrounds, modern IDEs, tooling that allows for both for JIT and AOT, while offering safety.

Just a bit nostalgic how things could have been different.

For example, when Google brought out ChromeOS and Dart, I thought there was a perfect opportunity to have a similar experience, but that is not how it turned out to be.

</comment></comment></comment></comment></comment><comment><USER4> This is really cool and I think over time, Atom is going to become really compelling once their org mode implementation or its moral equivalent gets some legs.

I've used the Jupyter emacs integration ([https://github.com/millejoh/emacs- ipython-notebook](https://github.com/millejoh/emacs-ipython-notebook)) but in the end, I stuck with org mode.

For an example of what you can do in org mode (in emacs), here is part of a "dashboard" I created for one of my products: [https://i.imgur.com/QUFbIBk.png](https://i.imgur.com/QUFbIBk.png)

And an example of how I design: [https://i.imgur.com/MeRYn1L.png](https://i.imgur.com/MeRYn1L.png)

You can essentially use org-babel to recreate an approximation to the notebook environment which si cool

<comment><USER5> Org mode rocks! And with ob-ipython you basically get same functionality as the notebook...

[https://github.com/gregsexton/ob-ipython](https://github.com/gregsexton/ob- ipython)

<comment><USER4> Ah yes, that's the one I tried.

</comment></comment></comment><comment><USER6> I haven't tried either, but atom-notebook ([https://github.com/jupyter/atom- notebook](https://github.com/jupyter/atom-notebook)) looks more promising to me. I hope they can integrate it well.

With hydrogen, are there cells? What happens if I want to rerun everything? Will I get no output except the output of the last line?

<comment> robinson-wall I think they both have a place - atom-notebook (like the web version) for more structured use with cells, and hydrogen for ad-hoc ("Will this work?") anonymous execution while you're editing.

> Will I get no output except the output of the last line?

If the return value is one line, it prints neatly after the executed block. If it's more than one it inserts a little pane with the results, with options to copy the data or open it in a new buffer.

<comment><USER6> I agree, it looks like Hydrogen is a nice replacement for the REPL, whereas notebooks are a completely different workflow.

</comment></comment></comment><comment><USER7> Many times I wanted to switch from Sublime Text to Atom, but I always went back for some reason (slowness, not remembering open files upon restart, etc). Maybe this will make me swich for good.

<comment><USER8> FYI: Sublime Text's plugin API has recently (v. 3118) been updated with some cool new features relating to inline minihtml, which makes something like this more feasible.

While it doesn't currently exist, someone might implement something like this for Sublime Text in the future.

<comment><USER9> Also, Sublime now has a Phantoms API which lets you insert content after (or blocked) the line.

<comment><USER8> Yeah, that's what I'm talking about.

</comment></comment></comment></comment><comment><USER10> Jupyter released a cool computational environment(basically an IDE like Rstudio Web) - [https://github.com/jupyter/jupyterlab](https://github.com/jupyter/jupyterlab)

There is already discussion about Jupyter lab here on the front page - [https://news.ycombinator.com/item?id=12098180](https://news.ycombinator.com/item?id=12098180)

</comment><comment><USER11> What Jupyter Notebook is missing is a good text/code editor and what good text/code editors are missing is Jupyter Notebook like write and execute.

This is the first example I've seen of the power that using Electron in Atom can give, and it makes me super exited!

<comment><USER12> Have you tried PyCharm with jupyter notebook?

<comment><USER11> No, I didn't know they worked together. I'll have a look!

</comment></comment></comment><comment><USER13> If you're spending a lot of time doing data science and if you might be missing R studio for Python I work for Yhat and we make a product called Rodeo [http://rodeo.yhat.com/](http://rodeo.yhat.com/)

<comment><USER11> What are the major benefits of Rodeo compared to Spyder?

</comment></comment><comment><USER14> For any of those who may be doing Elixir development, [https://github.com/pprzetacznik/IElixir](https://github.com/pprzetacznik/IElixir) works perfectly with this.

</comment><comment><USER15> The MPW Shell (the Macintosh Programmer's Workshop) had a feature like this; every editor window was also a shell command window. You could select some text and run it as a shell command.

I regularly included build steps as comments in the first few lines of C and Pascal sources. No makefile necessary.

You could also arrange for code to run on actions like 'cd' (to set up environments, for instance; your editor window could become a context of readily selectable commands based on the directory you were in).

Oh, and 1987.

</comment><comment><USER16> Advantages of this over running a repl in an Emacs buffer and evaluating code that way? I've never tried Atom.

<comment><USER17> Same question, but s/running repl in an Emacs buffer/authoring in org-babel/ \- I have a hard time seeing Jupyter and friends as anything other than a subset of what people have been using org-babel to do for years, and I'm not really sure whether that's an accurate perception or not.

<comment><USER6> Thank you for the babel reference, it looks interesting. From what I can tell, it's pretty similar. In a notebook I'm directly editing the code and seeing the results immediately, instead of switching back and forth between emacs and a browser window. That looks like a pretty big win for interactive development. Is there any babel feature that you think is missing in Jupyter?

<comment><USER17> Babel does the same thing; you just press Control-C twice while the cursor is in a code block, and it's evaluated and the results inserted immediately below the code block. (If there are already results there, they're replaced by default, but you can opt to have new ones appended instead.) It's no less interactive than Jupyter; it's just interactive in the paradigm of an Emacs buffer instead of a browser window.

A major feature Babel offers, which Jupyter doesn't seem to, is passing data among code blocks in different languages. Any language Babel supports [1] can receive results from any other in the receiving language's native idiom, so there's no need to marshal temporary files or what-have-you in order to exchange data among blocks - Babel takes care of that for you. In a case where multiple transformations are necessary to get from source data to results, this makes it very easy to express each in a language well suited to it, without having to spend a bunch of time and mental energy on menial file shuffling.

The same is true for most other representations of data that Org mode supports. In particular, Org tables, which themselves have many features of spreadsheets, can be sourced in code blocks in the same way as the results of other code blocks, and a code block can generate an Org table as a result. These tables can be imported and exported as CSV, too. My work is professional rather than academic, but I can imagine a lot of cases in which this capability would be useful in the latter context, and Jupyter doesn't seem to offer it. (It's hard to tell, because Jupyter's documentation seems pretty thin overall - not something which can be said of Org mode.)

On the whole, Jupyter looks like a pretty nifty tool, and one which would be accessible to people who don't already use Emacs. I'm not sure how I would feel about recommending Emacs to someone just for Org mode, although I've heard several people say they picked up Emacs for precisely that reason and have stuck with it. But, if you already use Emacs and don't have contextual reasons (such as everyone else around you using Jupyter) to choose one tool over another, I wouldn't hesitate to recommend investigating Org mode first, because it is very nearly a strict superset of Jupyter. (It'll be a few years before you can easily embed a video in an Emacs buffer; right now you'd need to use a pre-release version with some extra compile options.)

[1] [http://orgmode.org/worg/org- contrib/babel/languages.html](http://orgmode.org/worg/org- contrib/babel/languages.html)

<comment><USER6> That sounds really nice, thank you for taking the time to write all this. I do use Emacs for editing, and I miss all the features SLIME offered for Common Lisp. Unfortunately, I'm using Julia now, and while the language is really getting there, tooling support is minimal outside of Jupyter and Atom, so I wouldn't bet on Babel.

I should learn org-mode though. I've heard so much praise for it!

<comment><USER18> I have been using Julia in emacs, primarily using ESS [1] and ob-julia [2] (org babel julia package). It is relatively well integrated with some basic auto-complete features and nice org-babel integration (as good as python or r).

[1] [https://github.com/emacs-ess/ESS/wiki/Julia](https://github.com/emacs- ess/ESS/wiki/Julia)

[2] [https://github.com/gjkerns/ob-julia](https://github.com/gjkerns/ob-julia)

</comment></comment></comment></comment></comment></comment><comment><USER19> I could never get this to work in Ubuntu 14.1 :/

There are issues with Jupyter in that distro too, But hydrogen had some nps js error regarding a missing lib or something. So many stacks in these things...

</comment><comment><USER20> For vim people living in terminal, I suggest cellmode plugin for vim ([https://github.com/julienr/vim-cellmode](https://github.com/julienr/vim- cellmode)). You can split tmux window into vim + ipython panes, and trigger the evaluation of selected vim lines by pressing Ctrl-C.

</comment><comment><USER21> Suuure, now this gets posted after I JUST found out about it yesterday in a comment about the JupyterLab link.. Go ahead, rub it in more.. Seriously though, I never thought to look for something like this so I'm happy more people are finding out about it too. Even if there may be better alternatives, more people now know to look.

</comment><comment><USER22> Is there any way you could have this running on the cloud (in Digital Ocean or AWS)?

Suppose you had Jupyter installed using the following process:

[https://www.dataquest.io/blog/digitalocean-docker-data- scien...](https://www.dataquest.io/blog/digitalocean-docker-data-science/)

</comment><comment><USER23> I have been enjoying Python (or any other external command) execution on whole file or on selected text block in Vim and it has been great, even for some specialized mini applications and custom docbook/markup formatting. The ability to have graphics is intriguing, will give atom a try.

</comment><comment><USER24> Works fine after adding a minimal config {"magicpython": "Python 3"} at the Kernel Mappings setting and setting PYTHONPATH at the command line when running atom. It's kinda cool to manage your kernels from the editor!

</comment><comment><USER21> So I know Sage is quite a bit more hefty than the standard Jupyter kernel, but I wonder if this could work with the Sage kernel? I quickly attempted it with no luck but assume with the right setup it could. Maybe?

</comment><comment><USER25> This looks cool but how does this translate to being beneficial in real world web applications?

Often times the result of running some bit of code is to see the end result in a browser because the code resulted in sending a bunch of HTML or JSON as a response.

Also in the above case your code isn't self contained to a block of code. Chances are you have a web server, along with a database and cache server. Most of my projects are also encapsulated in half a dozen Docker containers. How is this plugin going to know what to do with that?

Starting up an entire stack of programs to live preview a few lines of code would end up being slower than just saving the file and reloading the browser to see feedback.

<comment><USER26> Jupyter Notebooks are more for statistical, iterative coding, not running an application.

<comment><USER25> Thanks. I wasn't aware of what Jupyter was.

I only glanced the top of the README which compares the project to what Light Table was trying to solve and then showed an animated gif of inline code evaluation examples.

</comment></comment></comment><comment><USER27> Super awesome! The gif can do with a better Atom theme, though!

The dark one isn't really ideal for a cell-by-cell Jupyter-like implementation

<comment> herrvogel- Is there a specific theme you had in mind? Just curious.

</comment></comment><comment><USER28> VS Code?

<comment><USER29> I can't see why this wouldn't work just as well.

I certainly would be interested. I started using VS Code more and more and VIM less and less :(</comment></comment>


Python bumps off Java as top learning language - <AUTHOR> http://www.javaworld.com/article/2452940/learn-java/python-bumps-off-java-as-top-learning-language.html <comment><USER2> Does not really surprise me. I coded in Java for several years before moving to Python (an now Python+Go)</comment>


USB keys will end you and how to protect yourself - <AUTHOR> https://foundersec.substack.com/p/usb-keys-will-end-you <comment><USER2> Are there any good ways to protect yourself on mac, windows, linux, etc. from random USB keys?

Perhaps have a raspberry pi off the network since linux in of itself would greatly diminish the attack surface?

An "evil maid" can always swipe _your own_ USB key and install malware so I'd prefer a belt and suspenders strategy. Likewise someone walking by your workstation could do a drive-by plugin too.

I guess it would have to be some OS level intervention that would say "you plugged in an HID/file mount/etc., what do you want to do?"

<comment> T3OU-736 A recent discussion covering this: [https://news.ycombinator.com/item?id=20744590](https://news.ycombinator.com/item?id=20744590)

There may well have been developments and chances, too. But, a start.

<comment><AUTHOR> Great discussion there. That USBguard tool seems interesting. I'll take a look, but the tricky thing with these USB Drop Attacks is the range of forms they can take and the levels of complexity. That USBguard mentions it blocks them from userspace, and without having looked at the code I imagine there's still negotiation that happens at the firmware level, which still leaves quite a lot of room for bad things to happen. For example you could make the perfect whitelist of your devices, but someone could still easily plug in the $60 USB Kill stick and it would fry your system. They could also take advantage of firmware level USB exploits such as a DFU (device firmware update) attack to inject malicious malware at the firmware level of your system. Off top of my head, I would guess USBguard wouldn't be able to stop that lower level of exploitation, so that's why I stick with not plugging anything in that isn't mine and in more sensitive IT departments, they can disable USB ports completely from BIOS.</comment></comment></comment>


VIM as IDE - <AUTHOR> https://github.com/xmementoit/vim-ide#vim-as-ide-by-damian-ziobro <comment><USER2> It gives me a certain level of happiness that threads still exist discussing whether VIM is an appropriate IDE.

</comment><comment><USER3> Just what the world needed: another personal config full of ugly antipatterns, myopic hacks, and useless plugins marketed as a turnkey IDE.</comment>


Show HN: Twitter as a news reader - <AUTHOR> http://smartr.mobi

<comment><USER2> Does this look through all the links on my feed and pulls out the title + image + excerpt?</comment>


The Humpty-Dumpty Guide to OOP - <AUTHOR> http://www.sicpers.info/2014/10/the-humpty-dumpty-guide-to-oop/ <comment><USER2> As an OOP afficionado, I am embarrassed by how mushy our discipline is compared to the crystal clarity of our functional bretheren. How I wish I lived in a world of such well-defined boundaries.

After all, everyone knows that FP was started with Lisp with the insight that the heart of FP is homoiconicty. Except where it isn't, as in ML and others.

Likewise, functional programming introduced a higher level way of expressing our intention without being bound to the low level machine representation of values. Unlike Fortran and Cobol, all functional languages use dynamically typed variables (except for ML and its derivatives) and operate at a level of abstraction above the primitive underlying machine (except for nil punning, car, cdr, etc.).

While OOP languages endlessly fiddle with syntax, functional languages all agree that only way to represent code is with s-exprs. Or not, as in ML. And that function arguments should be lists. Or is it tuples? Or curried?

Either way, syntax is just window dressing. What really matters is semantics, and here functional programming has always stood for a very firmly defined set of behaviors. Functions should be pure, as in Haskell. Except when they are not as in Scheme, Lisp, and ML. Evaluation should be by name. Or by need. Or eager.

There must be macros. Or not. They should not require hygiene since that is an artificial limitation, except that they should require hygiene because unhygienic macros are evil.

Let's not forget one of the key contributions that functional languages have given us: lexical scope. All functional languages use it strictly. Except for Emacs Lisp which does not, and Common Lisp and Clojure which have options to not use it.

OK, fine, I'm side-stepping the most important facet that all functional languages agree on: first class functions. This is the defining feature of FP languages: all functional languages have them, and all other languages do not. Except for Lua, C#, Java, C++, JavaScript, Self, SmallTalk, and others. But, functional languages certainly have first-class functions more thoroughly integrated into the rest of the language than non-FP languages do. Except for Common Lisp, which relegates them to a separate namespace.

In conclusion, I think we can all agree that object-oriented languages could learn a lot from FP about how to keep your terminology precise.

<comment><USER3> The article is silly, and so is your response. Functional programming most usually, the _vast_ amount of time, refers to a declarative style of programming which involves using functions in the more mathematical sense, which means that one tries to avoid state and side effects. Not necessarily as a compiler-mandated thing, but as a convention. Does one still make "functions" from time to time which are really about mutating state and/or side effects? Yes, but then you would say that they are doing a more procedural/imperative style at that point in time. Like java can be procedural, if you try hard enough.

"[...], and all other languages do not." \- Demanding that other languages - which might not self-identify as 'functional' \- _not_ have something seems like a futile demand. Are those languages just gonna be banned by the almighty FP wizards? :)

I've never seen things like the syntax of lisp, the homoiconicity of lisp, the lazy evaluation of Haskell, be equated with functional programming as a whole.

<comment><USER2> > The article is silly, and so is your response.

Guilty as charged, though I fear the original article doesn't realize it's silly too.

> Functional programming most usually, the vast amount of time, refers to a > declarative style of programming which involves using functions in the more > mathematical sense, which means that one tries to avoid state and side > effects.

Maybe it's just me, but I've never found most functional code I've seen to be particularly declarative. I certainly like purity and immutability, but much of it still reads imperatively to me, just in a slightly more abstract style.

But, then, that's true of OOP code that I like too. I find method calls (in good APIs) just as declarative because there I'm describing what I want the object to do and not how to do it.

> Are those languages just gonna be banned by the almighty FP wizards? :)

I think they prefer the term "smug Lisp weenies", but they probably wouldn't turn down that title either. :)

I think arguments like this are silly because I don't really like any single- paradigm languages. I think functional, object-oriented, imperative, declarative, etc. are all _styles_ and each of those styles has its place, often all within the same program.

People (like the author of this post I suspect) like FP because it _rejects_ OOP, but I like OOP because it _doesn 't_ reject other styles. Mainstream OOP languages have no qualms about adopting higher-order functions, closures, immutability, and all sorts of different concurrency models. I like simplicity, of course, but I also like having a lot of tools at my disposal and not rejecting some for religious reasons.

<comment><USER4> > Maybe it's just me, but I've never found most functional code I've seen to > be particularly declarative. I certainly like purity and immutability, but > much of it still reads imperatively to me, just in a slightly more abstract > style.

How much have you seen? If you can understand Haskell, the ideas in [http://gergo.erdi.hu/blog/2012-12-01-static_analysis_with_ap...](http://gergo.erdi.hu/blog/2012-12-01-static_analysis_with_applicatives/) are pretty neat and directly exploit declarations.

</comment></comment></comment></comment><comment><USER5> I don't see where the gotcha is in 1 and 2. The meaning is pretty clear if you're familiar with the two languages. Simula is a procedural Algol-style language that includes a class-based OO system, analogous to Java or C++ today. Smalltalk is completely based on message-passing. The distinction between the two approaches is reminiscent of the ML/Haskell divide (strict+impure vs. lazy+pure).

3 and 4 is a statement of principle _preceded_ by an acknowledgement that the definition the book uses is not universal. 5 seems uncontroversial to me; the need for automatic memory management is a secondary outcome of other aspects of object-oriented systems, not a primary quality. And 7 doesn't seem to follow from the quoted excerpt.

All the quotes are from a single 33-year-old copy of Byte magazine. They don't conflict nearly as much as the commentary implies. Together they suggest that an idealized OO system consists strictly of objects passing messages, but that other languages blend OO and procedural features. The same is true today.

EDIT: retracted an unnecessary implication.

</comment><comment><USER6> OOP... where originally specified as a queued serializable messaging-based topology of reusable components, i.e. what we now know as a actor/agent based programming.

... But where CPU stack-based function calls (cutely named "method calls") was what was actually delivered. Presumably because in the 80's, what was specified, was too costly on the CPU and memory to deliver. Oops, indeed.

A lot of bad decisions were made in the 80s in the name of CPU and memory. Just look at RDBMS still in the 21st century being the default persistence layer for 99% of applications.

OOP is a pattern that became popular for GUI programming because everything is inherently messaging-based already, and because Xerox and Apple adopted it and for some reason people thought it could be reasonably applied across all types of programming.

<comment><USER7> The problem with RDBMS being? No sarcastic, just curious.

<comment><USER6> The problem being that to use RDBMS well with object-oriented software you need an ORM (object-relation mapping) layer, which adds complexity and cost and maintenance burden. RDBMS are a central point of failure and don't scale well. Relational data is typically overkill for the vast majority of applications which would be better suited to a document-based dataset at the expense of a little more memory cost. Etc etc... :)

<comment><USER8> I disagree. Database code is generally a lot less buggy than application code, probably due the declarative nature. Plus with a properly normalized schema, you can answer most questions about your data. Document databases have basically forced you to denormalise at step 1. I would say we should forget about the OOP and stick with the RDBMS, as that part works well.

<comment><USER6> RDBMS has its uses, I didn't say otherwise. However I did say adopting it as a "default" persistence mechanism is wrong. RDBMS is something you adopt with your eyes wide open as it is large architectural decision and ultimately a burden to take on board. And even then you may only adopt it for one particular subsystem of your product; for polyglot persistence is the best.

For application state, the big drawback of RDBMS is its lack of temporal and immutable persistence. This is where the temporal nature of event sourcing is a better fit for application state. Event sourcing can feasibly perform a superset of operations that SQL can do, and it can do all this without the the need for mutable state.

</comment></comment></comment></comment></comment><comment><USER9> ReST shows that a person can invent a technical term, write a long dissertation on what it means, clarify any ongoing misconceptions on the web, and have people use the word to mean whatever they like.

[http://roy.gbiv.com/untangled/2008/rest-apis-must-be- hyperte...](http://roy.gbiv.com/untangled/2008/rest-apis-must-be-hypertext- driven)

> REST APIs must be hypertext-driven

[http://msdn.microsoft.com/en- us/library/jj819168.aspx](http://msdn.microsoft.com/en- us/library/jj819168.aspx)

> Using the REST Services with .NET > In order to make use of JSON > serialization in .NET

This is not new. Codd spent ages talking about why every relational database was not a relational database.

<comment><USER10> REST came to mind for me as well.

Let's assume there is a platonic ideal for REST, or for OOP. Just talking about REST over _HTTP_ (methods, response codes, URIs) clouds that ideal, making it hard to learn about and even harder to talk about with other programmers. The same could be said about OOP with classes, structs, prototypes, etc... or as some of this article's quotes do, about OOP in Smalltalk. Over time you could look at this in terms of SCOT theory[1] and I think it would be fascinating. You could look at all of the marketing, conflict, and the effects of collective perspective shifts where things are considered "solved" but they aren't really.

My own opinion about the platonic ideal of OOP is close to Chapter 18 of Pierce's Types and Programming Languages, which suggests these attributes: 1\. Multiple representation 2\. Encapsulation 3\. Subtyping 4\. Inheritance 5\. Open recursion.

To me the kernel of OOP is mainly just #1 and #2. If you don't have #3, you should have a damn good alternative. I don't attach #4 and #5 to the core definition but certainly the former should imply the latter. Another favorite is "On Understanding Data Abstraction, Revisited"[2], which contrasts objects and ADTs in a different framework.

[1] [http://en.wikipedia.org/wiki/Social_construction_of_technolo...](http://en.wikipedia.org/wiki/Social_construction_of_technology) [2] [http://www.cs.utexas.edu/~wcook/Drafts/2009/essay.pdf](http://www.cs.utexas.edu/~wcook/Drafts/2009/essay.pdf)

</comment></comment><comment><USER6> OOP was a programming paradigm sponsored by big enterprise. Just search YouTube for this string: "steve jobs object oriented"

Apple, NEXT were absolutely the biggest advocates of OOP. The word "object", for a time, literally pervaded all across their product lineups and marketing. Microsoft got on the bandwagon a little later, first with Visual Basic and later with COM (component object model) that was baked into Windows. The latter of which turned out to be an utter disaster.

Object oriented programming was being pushed in the same way that ORMs, RDBMS, etc etc. It was a whole sales pitch to make money. Whether it was actually "any good" is very much still up for debate.

</comment><comment><USER11> There is no definition of OOP. It's a amalgam of features and best practices. BTW, can we also get the 'The Humpty-Dumpty Guide to Functional Programming' which is as vague as OOP.

</comment><comment><USER12> Over the years I've come to realize the the 'P' in OOP is not important at all. What you technically can or cannot do in a given programming language isn't really that important. In my opinion it should be OOT where 'T' stands for "thinking". To be able to "think" in objects is so much more important and beneficial than to understand some technical language construct.

<comment><USER13> How could it be "beneficial" to artificially limit your thinking into such a narrow, mostly useless, alien framework? How can one see the world in all of its endless variety as a boring and irrelevant set of hierarchical taxonomies of message-passing entities?

<comment><USER14> Yes, that was something that always bugged me. I find it hard to model the real world using OOP constructs - something OOP was advertised as well-suited for.

</comment></comment></comment><comment> V-2 Yeah, OOP is a fuzzy concept :) It reminds me of discussion under Eric Lippert's answer - [http://programmers.stackexchange.com/a/234563/29029](http://programmers.stackexchange.com/a/234563/29029) \- about whether OOP requires classes.</comment>


Skylake bug: a detective story - <AUTHOR> https://medium.com/ahrefs/skylake-bug-a-detective-story-ab1ad2beddcd <comment><USER2> Hardware bugs can be notoriously hard to detect.

One time, during my company's development of a product, we kept encountering a problem while writing a lot of data to an eMMC chip. Was it a problem with the circuit design? Our eMMC controller? Software driver?

It wasn't until we discovered a unit that did not exhibit the problem that we discovered that the problem was isolated to a particular batch of eMMC chips from the vendor (like the OCaml team only realising it was a Skylake problem when they discovered their code worked fine on non-Skylake systems).

<comment><USER3> I've been through so many of those. Here's one:

On a board, we were using an ADC chip. We bought the ICs from an official distributor. They sent us the chips, and we populated the boards (~200 of them).

None of the boards worked properly. We debugged for so long. After so much wasted time, we found out the root cause with the help of the manufacturer and the distributor : It turns out, the manufacturer actually produced another IC, but marked the packages with our part number. It just happened the power/gnd pins matched with our IC, so there were no electrical problems.

Another case:

We designed an ASIC and taped-out. The silicon arrived and we then sent it to a packaging house to get the silicon in a QFP package. The packaging house misread our specifications and placed the silicon with 90 degrees rotation in the package. That was fun to debug!

<comment><USER4> The 90 degree rotation thing is surprisingly common. I've seen it done at least twice. Also several instances of edge connectors that were entirely backwards due to being CAD placed on the wrong side of the board, or incorrectly pin nimbered.

</comment></comment></comment><comment><USER5> When I was a newbie, I would often say things like "maybe the compiler is broken" or "maybe the cpu is doing it wrong."

Of course, it was never the tools. it was always me.

Years later, of course, I work on unreleased hardware. And yeah, sometimes it's broken. It's really fucking odd. Write C code, and holy shit, it's actually a compiler bug or CPU bug.

Life was simpler when I was just ignorant and egotistical. Now I'm... well, still ignorant and egotistical, I guess, but often deal with actual hardware bugs.

<comment><USER6> Finding an assembler bug is also interesting. Marched up against a nasm bug once that kept me debugging for quite a while. The good thing with assembler bugs, however, is that you can decompile the generated machine code to something that is really close to your original source code... That helped a lot.

</comment></comment><comment><USER7> [http://gallium.inria.fr/blog/intel-skylake- bug/](http://gallium.inria.fr/blog/intel-skylake-bug/) another great blogpost on the topic

</comment><comment><USER8> Fantastic post. Just one comment:

> This is a fair amount of optimisation passes and it would have been too time > consuming to try them one by one

I loved the fact that they used bisection, but then I was shocked to read this. This isn't the case at all unless you're extremely unlucky. If you just do bisection again, you can test with half the flags on and off, keeping the other half off. You can frequently discard half the flags this way, to narrow down the set, and on average it should be much faster than testing each one by one.

<comment><USER9> A useful technique in the design of an optimizing compiler is to include an "odometer test" on all endomorphic discretionary transformations. E.g., at a spot where one has a big go/no-go predicate that determines whether a change to the program is valid and beneficial, add a final term that's a call to a routine that returns true if odometer++ < limit. You can then use bisection on that limit and zero in quickly on the failing change.

This function is also a great place to put logging. I typically make it look like a printf() that returns a Boolean.

</comment></comment><comment><USER10> he said page tables were corrupted which should not be possible from usermode so this is presumably a security issue for cloud providers.

</comment><comment><USER11> Rendered unreadable on mobile by a huge sticky header and a floating "open in app" button

<comment><USER12> I swear some sites just want mobile responsive design to die so they can load their malware laden apps onto my phone.

</comment></comment><comment><USER13> The fun thing is that only one instruction used AH, and it can be done perfectly fine with EAX instead.

<comment><USER14> Wouldn't the instruction be bigger if EAX was used? I guess it would have to have 4 byte constant then, with this encoding it's one byte. How would you clear the 2 lowest bits in the second byte of the EAX?

For the reference, we talk about:

        andb $252, %ah

I believe it's not an effective speed optimization, given the way modern CPUs work, but it does produce a smaller instruction?

Additionally, what I miss in this story is which source code actually produces "I need to clear exactly these two bits while keeping others" in a loop. For that CPU bug to manifest, it has to be inside of "short loops of less than 64 instructions."

<comment><USER15> > Wouldn't the instruction be bigger if EAX was used? I guess it would have to > have 4 byte constant then, with this encoding it's one byte. How would you > clear the 2 lowest bits in the second byte of the EAX?

Indeed: Here a list of encodings of the original instruction and natural alternatives:

> and ah,0xfc: 80E4FC [3 bytes]

> and ax,0xfcff: 6625FFFC [4 bytes]

EDIT: Note that

> and eax,0xfffffcff: 25FFFCFFFF [5 bytes]

does something different: It also zeros the upper 32 bits of the rax register (Exercise: Why?), which is important since the next line

> movq %rax, (%rbx)

depends on the fact that this has not been changed.

<comment><USER14> At least, as the CPU bug manifests only when "AH, BH, CH or DH" are used, the compilers could be patched to use the 4 byte variant. But if Intel properly updates all the affected processors, it's not going to be needed.

(Response to wolfgke's edit: don't forget the "sign extend" variants).

<comment><USER7> We pondered reporting this directly to GCC too so that they can implement a workaround. But despite the buzz generated by this issue in the press I believe Intel is right in saying that this bug is very unlikely to trigger.

They say it can only happen in tight loops, and although the C code is quite large, the hot path has only 17 instructions in the loop, which only sequential memory loads (since the GC is scanning the heap linearly and most ocaml values are small).

GCC actually did quite a good job here : it managed to lay down the code so that the "memory reachable" branch is the shortest one. Indeed, when scanning the major heap in a generational GC assuming that most values scanned are reachable is reasonable.

In this case, the loop condition will likely be predicted true, and the other jumps predicted false, and there is a very tight loop with no random memory load/store. I suspect those conditions are very unlikely.

</comment></comment></comment></comment></comment><comment><USER16> > In late May, devops team noticed a debian package update for intel-microcode

Does this mean that other OS are still susceptible to this? I'm not familiar on how hardware bugs can be fixed at the OS level.

<comment><USER14> CPUs have updates too, Intel makes them for their processors, but every modern OS has to add the update and install it on every power on.

<comment><USER15> > but every modern OS has to add the update and install it on every power on.

This can also be done by the UEFI (though many hardware vendors shy away from releasing UEFI updates, while for OSes this is common routine).

</comment></comment></comment><comment><USER17> Surprising part for me: team building the thing is so unfamiliar with assembly.</comment>


A staggering migration – 250M people into Chinese cities in 12-15 years [video] - <AUTHOR> http://www.nytimes.com/video/2013/06/15/world/asia/100000002279849/in-china-a-staggering-migration.html?smid=pl-share

<comment><USER3> If the Chinese government can pull this off effectively, without doing anything too stupid (splitting up families, letting people starve to death, destroying their inner city economies), then I would see this as a good thing. The most efficient farming and food-production systems today produce a unit of food using far fewer resources (people, labor, energy, etc) than were required in previous decades.

The people who continue to live in rural areas should focus on farming efficiently for large populations rather than for subsistence. If you can move the subsistence farmers into cities, and if (this is a big "if") they can work and earn a decent wage without obliterating the current economy, then they will more than likely be better off personally, and will consume fewer resources globally.

I happen to think that this is a very difficult thing to do, and that their timeline is probably way too optimistic, but I don't think China should be criticized for trying. They stand to gain tremendously if they can pull it off.

<comment><USER4> I'm glad to see someone with this point of view. A lot of people don't seem to realize that there is a huge difference between the idealized American farmer and the lives of real peasants living in rural China. It's extremely difficult to run roads, electricity, and water to all these villages, or to provide them with modern schools and clinics (and corresponding staff) necessary to implement social welfare that extends beyond the cities.

<comment><USER5> A tour of some of the planned urban areas of China (Chengdu, mentioned in the article, is a fine example, plus pandas!) along with some of the smaller villages makes it very clear that the 'average' Chinese farmer is far worse off than one might expect.

I'm not really sure I have an example for the contemporary United States that even comes close. I suspect you'd have to change the definition of 'farmer'. Perhaps a family living in a dilapidated trailer, unemployed, growing cheap, starchy foods in what little land they can rent, in an area with poor or nonexistent utilities, would be a more accurate comparison.

Comparing a planned city such as Chengdu with a similar effort elsewhere, say in India, is another surprise. Ahmedabad is a pretty good example.

I have come to the conclusion that communism is an impediment to human excellence.[1] However, seeing the extreme levels of poverty that the central government is trying to resolve, and has resolved to a certain degree, I can understand the difference in prioritization.

There was a link to a book on cooltools years ago [http://kk.org/cooltools/archives/461](http://kk.org/cooltools/archives/461) that I just noticed was available on the Kindle. Poverty is _so_ outside the understanding of most of us that it's not just about not having nice things. Poverty in the developing world and in the undeveloped world is so much worse that it's almost as if an impartial, uninformed observer would wonder if we are the same species, and I don't base that on skin color, eye shape, gender, etc.

[1] I don't care if you disagree on this point. I grant you a perpetual, irrevocable, license to do so.

</comment></comment></comment><comment><USER6> You are all missing the point, China is in a construction boom, construction is the best way to achieve double digit GDP growth, construction and sale of apartments and houses also lines the pockets of the Party

But of course all of the comments so far have been about the environment, the Chinese do not give 2 shits about pollution and sustainability, the motive is clear KEEP THE PARTY IN CONTROL AT ALL COSTS

<comment><USER7> Oh I'm glad there is now a spokemen for "The Chinese People". Didn't realise you had a single voice, who frequented HN.

In all seriousness, some tips:

\- Stop being racist

\- go and learn a little bit about Chinese political landscape, and modern history

\- Reduce your ignorance.

The Chinese (government) care greatly about the environment and the people, and that is why they have year-on-year improved hundreds of millions of lives in both health and wealth for the past 60 years.

Yes, they are a 1 party communist political system... but so what, judge by action, not ideology.

<comment><USER8> Don't mind Volpe, he calls everyone who talks about China a racist. Its his way of being friendly on hackernews.

Parent is wrong though, the CCP most definitely cares about the environment; it has gotten so bad that they are in crisis mode right now. Xi just made a speech about it this weekend, the gov is taking it very seriously and people do care, especially here in Beijing.

Corruption, economy, and pollution (include food safety) are the biggest threats to the CCP's grip on power.

<comment><USER7> > the Chinese do not give 2 shits about pollution and sustainability

Are you saying that isn't racial prejudice?

I understand you may have a grudge, but how would you describe that?

<comment><USER9> I'm pretty sure he was referring to the Chinese government, not individual Chinese people.

<comment><USER6> I was talking about the Chinese government, if its people do care about the environment but try to do something about it they would get labelled as dissidents and prosecuted. Thats what you get for living in an authoritarian state keeping its people under thumb in order to further the party

And stop with the "racist" crap, in light of news of widespread NSA surveilance and changes over last year the USA ain that far behind.

It didnt take long for members of the Ministry of Truth to popup and try to "reeducate" readers regarding my earlier comments.

<comment><USER7> > in light of news of widespread NSA surveilance and changes over last year > the USA ain that far behind.

Oh I see, so we can just generalise about any country because the US is doing horrible things.

> It didnt take long for members of the Ministry of Truth to popup and try to > "reeducate" readers regarding my earlier comments.

More wumao bullshit. Just because someone doesn't buy into the US constructed narrative of "US is good, cares about it's people and the environment, China is evil and just wants to control the world" they have to be Chinese shills...

How about showing me some data that proves I'm wrong?

EDIT: Here is some that shows I'm right:

[http://www.gapminder.org/world/#$majorMode=chart$is;shi=t;ly...](http://www.gapminder.org/world/#$majorMode=chart$is;shi=t;ly=2003;lb=f;il=t;fs=11;al=30;stl=t;st=t;nsl=t;se=t$wst;tts=C$ts;sp=5.59290322580644;ti=2011$zpv;v=0$inc_x;mmid=XCOORDS;iid=phAwcNAVuyj1jiMAkmq1iMg;by=ind$inc_y;mmid=YCOORDS;iid=phAwcNAVuyj2tPLxKvvnNPA;by=ind$inc_s;uniValue=8.21;iid=phAwcNAVuyj0XOoBL_n5tAQ;by=ind$inc_c;uniValue=255;gid=CATID0;by=grp$map_x;scale=log;dataMin=283;dataMax=110808$map_y;scale=lin;dataMin=18;dataMax=87$map_s;sma=1;smi=1$cd;bd=0$inds=i239_t001970,,,,;i44_t001970,,,,;modified=75)

<comment><USER6> I never made such an argument, you are the one building strawmen and going off on a tangent trying to deflect from my point which hits the bullsye

The "Party" (calling them Communist is a bit of a joke by now) only cares about its own survival and continuing grip on power and control of 1/6th of the worlds population.

<comment><USER7> If it only cared about control then why wouldn't it just be doing what North Korea is doing? Why would it be working so hard to improve things?

It's not a strawman it's very pertinent.

I think you need to read Capital (Marx), before judging whether they are communist/socialist, either way they call themselves that.

</comment></comment></comment></comment></comment></comment></comment></comment></comment><comment><USER10> [http://johnquiggin.com/2013/06/16/urbanization-in- china/](http://johnquiggin.com/2013/06/16/urbanization-in-china/)

clarification by a guy who does numbers for a living..

</comment><comment><USER11> Some of my poorer relatives still live on subsistence farms. When I visit my grandmother she would kill a chicken and cook it for us.

as land values rise in these rural areas some people have become rich very quickly. People in my hometown have started to fence up land that was previously unmarked (and worthless). It's an interesting phenomenon.

Not sure what conclusions to draw from the video, just an interesting anecdote. Things are happening quickly in China, for better or worse - <USER2> are huge differences every time I visit.

</comment><comment><USER12> if people thought Beijing was polluted, wait till this happens. It will be a permanent fog/smog cloud hovering indefinitely over this plane. If the focus is on making sure that there are long term "green" goals of making sure people use human-powered transportation w/ large public transit systems like subways, trains, bussing systems, then there is potential for this to happen and be maintainable. Generally speaking the Chinese have done much better than than Indians have with their supposed democracy in moving their economy along. India on the other hand has been a general failure, especially in raising the general population into a better life-cycle. If china does this, and is successful, it will be a foundation for other large countries to follow.

I'm presuming they are doing something good, and not considering all the cons that will ensue.

<comment><USER8> I doubt those people are coming to Beijing, it just can't take anymore people, and you have only a limited capacity for jobs and such. More likely they are going to 2nd/3rd tier cities where crowding/pollution issues are still severe, just not as bad as Beijing.

</comment></comment><comment><USER13> We can kiss the global environment goodbye now. Why are we even trying to save it?

<comment><USER14> Education of girls and urbanization are the most effective ways to slow the birth rate. Without doing that, environmental preservation is not going to be possible.

<comment><USER15> China doesn't have a huge problem with birth rate now. It just has a huge population.

<comment><USER16> In fact it has the other kind of birth-rate problem, a looming demographic crunch due in large part to the one-child policy. And of course a mysteeerious gender imbalance to go with it.

</comment></comment></comment></comment><comment><USER17> Because population control always works out so well for the population.

/s

</comment><comment><USER18> hehe, source: open street map ^_^</comment>


If you had an app that told you the truth, would you use it? - <AUTHOR>

What would you want from it? <comment><USER2> Sounds like one of those silly Quora questions but I'll take a shot at it.

Yes.

</comment><comment><USER3> Rather reminds me of this: [http://www.mit.edu/people/dpolicar/writing/prose/text/episte...](http://www.mit.edu/people/dpolicar/writing/prose/text/epistemologicalNightmare.html)

</comment><comment><USER4> Who's "truth?"

<comment><USER5> Exactly. The "truth" is relative.

<comment><AUTHOR> The truth based on criteria for truth. Irrefutable truths exist, like 1 + 1 = 2.

<comment><USER4> Except when 1 + 1 = 10

<comment><USER6> Yes, but the first one is still universal, just it's assumed that we are talking about base 10.

<comment><USER7> In base 10, 1+1 is still equal to 10 for very large values of 1.

</comment></comment></comment></comment></comment></comment><comment><USER8> I will not use it.

If I need truth about something, I will do research to find out. I do not need app and I do not trust an app for that.

<comment><AUTHOR> Would you use an app that verifies your reasoning (for the occasions you are too busy to research the truth or not actively looking for it)?</comment></comment>


Show HN: Use-Undo – React Hooks to Implement Undo and Redo Functionality - <AUTHOR> https://github.com/xxhomey19/use-undo <comment><USER2> Is there similar functionality for mobx-state-tree (or an easy way to allow this to work with mobx-state-tree)?

Also I couldn't tell if there was an easy way to implement "transactions" (multiple state elements that change simultaneously and should be undone as a single operation)</comment>


Uber president Jeff Jones is quitting - <AUTHOR> http://www.recode.net/2017/3/19/14976110/uber-president-jeff-jones-quits-management-turmoil-ride-hailing-company?utm_campaign=www.recode.net&utm_content=entry&utm_medium=social&utm_source=twitter <comment><USER2> Serious question - why hasn't the Uber board replaced Kalanick yet? While it is indisputable he successfully brought Uber to where it is now, it doesn't seem like he has the good judgement to be leading Uber at this stage of the company's lifecycle. Wouldn't the best thing for the company at this point be a complete overhaul of leadership?

<comment><USER3> Would be fun for the remaining bro culture if the board ousted Kalanick and installed Marissa Mayer.

<comment><USER4> So she could bury the details of getting hacked? Again?

Seriously, if she is ever allowed to hold a paying job again, something is wrong with corporate culture.

<comment><USER3> Interesting...The FBI seems to be praising her for her actions in that space.

 _" Mayer exhibited 'great leadership and courage while under intense pressure from many entities,' FBI San Francisco Division Special Agent in Charge Jack Bennett said on Wednesday"_

<comment><USER5> Yeah that'll be a great resume padder "Ignored and pretended not to know about one of the largest breaches in history, but it's ok because the FBI said I was a real trooper"

</comment></comment></comment></comment></comment><comment><AUTHOR> Update 1:

> _Travis Kalanick just sent out a company-wide email. It essentially says > after Uber said it was naming a COO, Jones decided to leave._

[0] [https://twitter.com/MikeIsaac/status/843586902817099777](https://twitter.com/MikeIsaac/status/843586902817099777)

Update 2: Ex-president Jones makes statement

> _" I joined Uber because of its Mission [sic], and the challenge to build > global capabilities that would help the company mature and thrive long- > term._

 _" It is now clear, however, that the beliefs and approach to leadership that have guided my career are inconsistent with what I saw and experienced at Uber, and I can no longer continue as president of the ride sharing business._

 _" There are thousands of amazing people at the company, and I truly wish everyone well."_

[1] [https://twitter.com/MikeIsaac/status/843620240961368065](https://twitter.com/MikeIsaac/status/843620240961368065)

<comment><USER6> Haha, from the follow-up tweets[1]:

> one or two back-handed compliments in there. but alas.

> (one imagines taking the high road would have been a better decision here. > but hey, im not an exec)

[1]: [https://twitter.com/MikeIsaac/status/843587293428375553](https://twitter.com/MikeIsaac/status/843587293428375553)

<comment><USER7> More from the follow up tweets in regards to John's statement to Recode[1]:

> one imagines that the above statement wouldn't have come if the below email > didn't include the passive aggression

[1]: [https://twitter.com/MikeIsaac/status/843620898967969793](https://twitter.com/MikeIsaac/status/843620898967969793)

</comment></comment></comment><comment><USER8> Given that he quit just in six months, probably he did not even wait for his RSU grants to mature (1 year cliff for stock grants). The situation might be much worse that what appears.

<comment><USER9> Leadership compensation does not work in the same way as rank and file compensation.

<comment><USER10> Not necessarily true. I've seen it work both ways, so probably best to leave it at "we don't know the details of the compensation arrangement".

</comment></comment></comment><comment><USER11> While this is big for the company, I am curious what it means for recruitment of future executives at the company.

My understanding is at this level it's about personal connections and grooming an image. With that in mind, does it become harder to attract great executives on a go-forward basis for Uber?

<comment><USER12> > With that in mind, does it become harder to attract great executives

A good analogy would be attracting candidates for coaching positions in sports.

If you're a team in a bad situation, you'll have to settle for candidates that don't have the experience usually required for the position, or people who've done it before who haven't had huge success.

Also most great execs are already in a great position - why would they step into a bad situation unless you gave them a higher title or more power?

Basically you get either a placeholder or an unknown quantity. The unknown quantity is just that. They might be awesome (everybody has to have had a first head coaching job) or completely overwhelmed.

<comment><USER13> There's an important difference: compensation.

If a losing team wants a winning coach, they will either have to settle for someone inexperienced, or pay up to get someone experienced in turnaround situations.

Same with companies, except with turnarounds the most substantial part of compensation is the company's stock. If the turnaround is successful, the executive will get wildly rich as the stock appreciates (and rightly so).

With Uber, the stock is greatly overvalued, which means anybody coming in is trying to turnaround the company, but only to maintain the current imaginary valuation. Where's the upside?

<comment><USER12> > pay up to get someone experienced in turnaround situations.

To your point, in the business world, if you've already gone through the turnaround experience, you're probably already very well compensated.

The one big thing that you can dangle in front of good candidates is a more powerful position or more responsibility. Hire a COO into a CEO position, or give a proven head coach power over personnel decisions. Other than that, there really isn't much of a carrot you can dangle. A move from a CEO of a successful company to a CEO of a failing company is a strictly negative move. EDIT: all other things being equal, of course. You could get a CEO of a small successful company to run a large failing company, but that'd be similar to getting a successful high school coach to run a college team.

<comment><USER14> > To your point, in the business world, if you've already gone through the > turnaround experience, you're probably already very well compensated.

And you have a name and a position and a network and influence at your company.

Money is worth peanuts compared to that!

What's the risk of taking an hypothetical 50M from Uber, it's gonna be trying to fuck you over with ISOs and sexually harass you, whereas you can take 5M a year at your current company safely and with great success for the next decade.

Keeping a successful ship successful is hard work. There is nothing a distressed ship has to offer you.

<comment><USER15> The challenge? Anecdata but my mom explained it thusly: some are good at starting companies, some at keeping things humming along and others at fixing companies...

</comment></comment></comment></comment></comment></comment><comment><USER16> If you are living in the Bay Area you would think Uber is a bad company. But I just met someone outside of the Bay and realized people love Uber. They have a lot of problems and a lot to do but they are still the market leader.

<comment><USER17> Cities that still don't have ride sharing services still see Uber as the shining Messiah coming to save them. Current shenanigans within the company are really not that well known outside of tech circles.

At present, in our city in North Australia, ride sharing services are still technically illegal, but Uber is campaigning hard against local government to get it overturned and the general population are behind them because the local taxi service stinks. Uber are even placing targeted ads on Facebook for local residents, and have a special page on their website just for our city residents to get information on the progress of the fight with our state govt. and local council.

</comment></comment><comment><USER18> Uber doesn't have a prayer of rehabilitation until Kalanick himself goes. The rot goes straight up to him. Jeff Jones was a much more recent acquisition who came from staid corporate America (Target) -- I don't think he was the problem.

<comment><USER19> I agree. There's enough social awareness that people don't want to support a company run by jerks like Travis Kalanick. In an era with socially conscious consumers, integrity of leadership matters.

It is easy enough to switch to Lyft (I live in major metropolitan area) without any inconvenience. And the Lyft driver's I've talked with about all the controversy say they make more $$$ and are happier driving for Lyft.

<comment><USER20> There is still the problem that without the competition that Uber provides, Lyft likely becomes a more typical company and begins increasing their margins in ways that customers and employees dislike.

<comment><USER21> Uber's rates are already unsustainably low. Competition is one thing but unhealthy, unsustainable competition is another thing entirely.

It's probably for the best that rates go up a bit.

<comment><USER22> Best for who? It's better for riders if rates stay unsustainably low and they can get discounted rides at the expense of VCs.

<comment><USER23> "better for riders if rates stay unsustainably low"

Rates that are unsustainably low cannot be sustained, by definition.

<comment><USER22> Not without outside pressure, which in this case exists. I've been using Uber for 5 years.

</comment></comment></comment></comment></comment></comment></comment><comment><USER24> Meta: how can you write an article about Uber's president leaving and leave out the massive lawsuit from Google's parent company?

<comment><USER25> Because they're unrelated? Mixing in the Waymo suit does nothing to clarify the situation around Jones. Sure it's juicy, but it's a different story.

<comment><USER26> Not necessarily. It broke within six months. It's believable that he didn't know anything about the parentage of Otto, and when the lawsuit hit, he realized just how screwed up of a situation he found himself in and bailed.

We can't say it is related, but we can't say it's not related either.

<comment><USER27> > We can't say it is related, but we can't say it's not related either.

...and that's why you should leave it out of the headline.

</comment></comment></comment></comment><comment><USER28> I think Uber's biggest problem is the broken relationships it has with so many of it's drivers. Their abuse of their labour force is the reason unions exist.

<comment><USER7> It is a broken relationship that would be hard to fix. Uber doesn't even try to hide its intention to get rid of the drivers once it has its self driving cars fully deployed

<comment><USER29> At current burn rate they won't survive long enough for that to happen.

</comment></comment></comment><comment><USER30> The "echo chamber" works both ways. When there is excitement and buzz, it drives startups to success like no where else. Apparently it works in reverse too and people love to see the big kid on the block take hits.

<comment><USER31> Sorry, this is not just or mainly what's happening here. Every time an anti- Uber article comes up, someone pops in and says something to the effect of your comment, but it simply isn't true.

Uber is evil. They do evil things. They should not be supported. Yes, people like to see the titans fall, but people also like to see those who behave poorly get what they deserve for that behavior. That's what's happening here.

For reference, here is a list I compiled a while ago of all the scummy things Uber does that would make one glad to see it go.[1]

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

<comment><USER32> Outside of the sexual harassment claims, literally none of this is different than any other huge tech company out there. People want to see Uber failing has a lot more to do with narrative than reality. People have created a caricature out of Uber's failings and applied it to every aspect of the company. It's starting to feel like an agenda more than actual concerns, it's pretty annoying actually. Once Uber is gone, if it ever goes, people will move on to Lyft or the next threat to the status quo. AirBnB and Uber are the current enemies because they endanger established businesses more than anything else. They don't have heavy B2B relationships like the other big players (Amazon, Google, etc) so they are naturally the targets of business that have no interest in seeing them succeed. This has a long history of happening well before Uber existed, people want to protect their interests and create and build upon a narrative of rapacious heartlessness.

<comment><USER31> I won't lie to you and say I don't have an anti-Uber agenda. I do. I would like them to fail and go away.

But you have cause and effect backwards. I feel this way about Uber _because_ of all the things they do; I didn't feel this way and then decide to find evidence to support my feelings. Lyft isn't great, either, hell, neither are taxi companies, but they aren't saturating the world with crappy behavior like Uber is. Given how universal Uber's misbehavior is - even my list is only partial coverage - I don't see how it _doesn 't_ apply to "every aspect of the company."

At what point would you draw a line and say "this behavior pattern is unethical and shouldn't be encouraged/enabled" when we're talking about a big company? That is, if Uber doesn't fit the bill, who does - does anyone?

</comment></comment></comment></comment><comment><USER33> Uber's board is failing the company and the public right now.

</comment><comment><USER34> What is the role of "President" of the company? Where does that title fit in to an org chart or relate to the C-level execs? I am not familiar with this title in tech companies.

<comment><USER35> I am the President of my company, and the founder. I gave up the CEO title to someone who bought a piece of my business. The way we split it is:

President (me): Head of corporate strategy, networking, and vision. (I also am the acting CTO but that's kind of not relevant here)

CEO (him): Fiscal policy, hiring planning, org chart projections, etc. He is the main executor of plans and also somewhat the Chief Revenue Officer. He's also the COO and his work is more meaningful in being the ops director, actually.

I loved giving up the CEO title. I don't want it back. Ever.

EDIT: Essentially the President title is flexible. In my company's case, I am the head of the entity and the buck stops with me for 85-90% of use cases across 30+ employees. But that's not always the case.

<comment><USER34> Thanks, interesting division of duties. I think as a title it's certainly more common in non-tech companies. Oddly though the VP title seems to be a dime a dozen. I have worked at many places where there was department with one or two people and one of them was the VP.

<comment><USER35> Hmm. We don't have any VPs. Maybe we need to add some.

Also should be noted that I guess the company I run isn't really a tech company. We do sports science stuff.

</comment></comment></comment></comment><comment><USER36> I don't understand the obsession by the press, VCs, and even consumers for Uber. I know it has changed the dynamic of transportation for many people. I know it has changed the dynamic of self-employment for many people. I know it has changed the dynamic of regulation for many cities. Oh wait. Ok I get it now. All that said, it's remarkable that ride sharing is the pinnacle of startup valuation in this latest wave of startups.

</comment><comment><USER37> I love this thread. TK is loving this. GaryV is loving this too.

Go build an Uber. Do it. Please. I wish you all the successes of this world.

Worry about yourself, not Uber.

</comment><comment><USER38> In the assumption that any news is better then no news. Has the bad publicity contributed in a decline or increase of installations / usage for Uber?

</comment><comment><USER39> Hypergrowth is a lot like cancer. Either they take swift action to excise all the toxic elements or it is going to be a slow and steady decline.

</comment><comment><USER40> Jones saw the writing on the wall...

</comment><comment><USER41> "That was not the reason for Jones' departure, sources said, even though it meant that Kalanick was bringing in a new exec who could outrank him. Instead, these sources said, Jones determined that the situation at the company was more problematic than he realized."

<comment><USER42> Why did you quote the article and not add a comment? I read that in the article so adding it here doesn't add any value to the discussion.

<comment><USER43> I appreciate somebody extracting the money quote. I don't even remotely have time to read everything posted here.

<comment><USER44> The loss of context can be dangerous and misleading.

<comment><USER43> I'll be the judge of that.

<comment><USER44> Without the context?

<comment><USER43> If the summary is truly eyebrow-raising then yes, I'd move the little pointer to the top of the screen and click the link. Whatever point you are trying to make here seems way overblown.

<comment><USER42> The reason I commented was the part he quoted could have been the title for the submission. It wasn't adding value to any discussion so I felt it wasn't needed.

You and some others disagree with my point of view but judging by the amount of discussion on this post, I suspect majority agrees with me. And by that I mean pasting a quote without any additional context or comments isn't adding valuable discussion to hackernews threads. I come here for the discussion so the OP was off putting to me.

</comment></comment></comment></comment></comment></comment></comment></comment><comment><USER45> I really hope that Uber serves as a warning to companies who think they can ignore customer complaints. I've never dealt with such an opaque company in my entire life, in terms of getting any actual human support whatsoever regarding anything.

<comment><USER46> Google wants to have a word with you. Or rather, they don't want to, and won't let you if you do.

<comment><USER47> I pay for Google Apps. Their phone support is excellent. They literally built a feature for me (compliance-related tags in Vault) within a few days of my call.

</comment></comment></comment><comment><USER48> I wonder if it's a good idea to apply to Uber. With all the controversy, you could argue for a pretty good salary bump or signing bonus to compensate.

Though, if executives are quitting after 6 months even before their stock vests, maybe it's more than just the outrage machine news clamoring for clicks and views.

<comment><USER18> There's lots of other companies out there that are paying good salaries that don't have these problems. It doesn't make sense to me to seek out a ship that's taking on water to sign up for. I know some Uber employees and none of them are happy with the situation.

<comment><USER49> Of course it makes sense, they would be more desperate to hire and you would have less competition from others who have ethical problems with Uber.

<comment><USER18> How are you so blase about jumping into a toxic work environment? A little bit more money isn't worth those conditions, assuming you could even get it. And keep in mind that a lot of the compensation is going to be in Uber equity -- which is affected by this scandal.

<comment><USER49> The people I know at Uber don't think it's a toxic work environment and I have no reason to distrust them in favor of a couple of accusatory blog posts from disgruntled ex-employees that I've never met.

<comment><USER18> The people I know at Uber say differently. But whatever, it's your life and your decision. I wouldn't go work there now.

</comment></comment></comment></comment></comment></comment><comment><USER50> This Uber story, where scandals just kept dropping struck me as very suspicious. Like Google just randomly got CCed by a supplier? You want me to believe that?

I was suspicious but who could be behind it, and why? Who is telling people to air the dirt that's undoubtedly very real, but that they have been just sitting on for a long time, at this particular moment?

I recently learned that Kalanick is very close to Trump, and given that this started just after the election that would seem the likeliest explanation.

<comment><USER51> Are you claiming that Jeff Jones applied for a took a job with Uber just so he could resign 6 months later to create a controversy?

<comment><USER52> No, I didn't mean to imply that. I'd say either he is not part of the shadiness at all, or he left because someone applied pressure on him recently.

But this is just my guesswork.

(Switching account because I didn't store the old password... Wrote this password down)

</comment></comment></comment><comment><USER53> > He is leaving after apparently deciding the current controversies are too > much to handle.

Not exactly leadership material.

Edit: Apparently an unpopular opinion. Do those here think otherwise given he joined the company less than a year ago (and is thus not part of the original culture), but instead could try to repair the damage done by the uber-bro culture instead of looking for an easier paycheck?

<comment><USER54> > Apparently an unpopular opinion. Do those here think otherwise given he > joined the company less than a year ago (and is thus not part of the > original culture), but instead could try to repair the damage done by the > uber-bro culture instead of looking for an easier paycheck?

Maybe 'uber-bro culture' is not actually a thing, and he doesn't see a possible solution for the PR problems?

It's really hard to stop the hatetrain.

<comment><USER53> That depends on where the train is directed: At the company as a whole, or at another set of company heads who ignore serious or hard problems?

I doubt the entire company is tainted, but it does have issues that need to be led by people who will address in something other a Facebook AMA.</comment></comment></comment>


Ask HN: Why is it difficult for Apple to create more than 1 tolerable ring-tone? - <AUTHOR>

I've been thinking about this for a while... I find it interesting that everyone w/ an iPhone uses the Marimba ring-tone. This makes me wonder why it's so difficult for a company like Apple to create more than one popular ring tone. I wish Apple would come up with another tolerable ring tone so I am not always reaching for my phone when it's someone else's phone is ringing Marimba. <comment><USER2> There are actually 2 usable ringtones. Xylophone is very good too, and is the ring tone I use. However, I think it is in Apple's best interest to only have one popular iPhone ring tone as it extends the brand. Every time you hear Marimba, you think iPhone which is powerful marketing.

<comment><USER3> The extending the brand comment is exactly right. And it goes back way before iPhones too, Nokia is probably the best example. While people may not be able to hum the melody of the original Nokia ringtone when asked spontaneously, I bet that they could at least recognise it when it is played. It's a catchy jingle that makes you think "oh that's a Nokia phone ringing".

</comment></comment><comment><USER4> Ringtones were important in the previous era of cell phones, but I think in an era of smart phones actually using your phone as a phone seems secondary to other activities like texting, facebook and facetime in terms of actually connecting to people. And it might actually be the case at this point that talking on a phone is what old people do (example: mom calls up worried about daughter staying out too late).

</comment><comment><USER5> Seems to be the same in the Android/Cyanogen camp. There are one or two usable sounds by default and lots of crap that I'd like to never hear again in any situation.

But hey - it's not the same situation we had with feature-phones. You couldn't have a custom ringtone on those. Nowadays you can just use whatever music you already have imported.

</comment><comment><USER6> Why not upload a ringtone that you like to your phone?</comment>