LightTable detailed critique: Concept vs Reality - <AUTHOR> http://eblog.chrononsystems.com/light-table-concept-vs-reality <comment><USER4> You're comparing Java to Clojure. Conceptually, they're insanely different-- Apple and Oranges, really.

Clojure, Lisp, and similar languages are homoiconic. That means they're beautifully suited to an interactive environment such as that provided by LightTable. Conceptually, unlike typical IDEs, LightTable is not a series of scripts that will attempt to help you deal with common development tasks such as looking up documentation and refactoring. Instead, you're interacting directly with the language.

I think it's quite telling that in Java, documentation is done through Javadoc comments, which are ignored by the compiler and sought out by a completely separate tool in order to build docs. In Clojure, documentation is part of the homoiconic code itself:

        (defn my-fn
          "This is the documentation, can be inspected on the fly"
          [] …)

Instead of being a series of very reliable hacks on top of a language that doesn't support docs, docs are part of the environment.

Additionally, when programming in Clojure, you can do it interactively by modifying the environment on the fly. This was popularized by smalltalk, and is an extremely gratifying way to program: you can inspect and edit your program code while it's running, and have a fully-featured REPL into your program. This way of doing things blows GDB completely out of the water.

Note also that when coding functionally, files are often made up of many small single-purpose functions, which is actually much more maintainable than the example "real-world use case" function you provided.

Essentially, your entire argument is based around the assumption that Java is the right set of design patterns. I would argue that the Java language is deeply flawed, and leads to a 30:1 ratio of boilerplate code, markup, and structure to useful code. It's what makes Javadoc and IDE refactoring tools possible, but it's also what makes Java a nightmare to maintain and (for me) an extremely unpleasant language to work in.

I have never used LightTable, but for me, what it represents is a different way of thinking about programming. It's about interacting with your code directly and interactively. And actually, when writing Clojure, I often program in quite a similar fashion with existing tools (VimClojure / Clojure.tmbundle / Cake).

<comment><USER5> Java's annotations could be seen as 'part of the environment' (whatever that may mean). I often use annotations which indicate how a method should be used, and those annotations are used by static analysis to validate correctness.

When using Java, I often change my program while it is running. recompiling classes on the fly. It works in most cases, and when it doesn't work, I believe other languages would fail as well.

You say Java is deeply flawed. I argue that Java is one of the most successful languages around nowadays. It does what it is designed to do: be relatively easy to learn, a natural successor to C++ with a wide range of libraries. Yes, Java code can often be verbose, but this depends greatly on the kind of paradigms used. I can write verbose and ugly code in Clojure and write relatively concise and elegant code in Java. It depends on architecture, a good understanding of OOP (and its limitations), composition over inheritance. The problem with Java is the sheer amount of 'bad' code written in it (because of all the leagues of beginner programmers), giving it a bad name. Have you seen Clojure code of a large product (equivalent to around 1M code lines of Java), produced by a team of diverse programmers and maintained by another team during a 10 year lifespan? You would cringe just as hard.

Finally, lighttable is a proof-of-concept... It's not there yet; there are no reviews; leagues of smart engineers have tried to reproduce something similar and could not escape the POC phase at all.

<comment><USER6> I use Java in my day job and I find annotations a real blight on the language. While I totally get the idea that they remove the need to write a lot of boilerplate code, I still find a lot of them too "voodoo" for my liking.

<comment><USER5> Agreed, they aren't the prettiest thing in Java and they only allow one 'layer' of annotating (you can't use expressions in annotations for example), they do prove it is possible to document your code in Java in a way that it becomes part of the 'environment' (again, 'environment' is ill-defined, so all arguments in this line are a bit frail).

</comment></comment></comment></comment><comment><USER7> I find this 'critique' (it's not a critique, it's a takedown) to run against the spirit of Hacker News.

Someone built a concept showing how the experience of writing code, for their corner of the software ecosystem, could be improved. They found popular support, and they're now setting about to make that concept happen. Congratulations; this is what Hacker News is supposed to be all about.

And here's someone summarily piecing apart and nitpicking on that concept (and the details of the demo video) for no apparent reason—there's no feedback or suggestions for improvement, it's just saying "well Eclipse does this and this and this already". I'm not impressed.

<comment><USER8> yes! So this. I agree; Let's see some constructive criticism and ideas for how to improve the LightTable idea, instead of just trying to shoot it down as 'not novel'.

<comment><USER9> There is a valid point lurking in there.

The instant evaluation model doesn't play nicely with side-effects. Exactly where side-effects occur can be difficult to determine, there's no simple way to work around this.

This is less of a problem in Clojure, thanks to its immutable data structures, but they're not a panacea. I'm also not sure how well this would work in JS and Python, the other languages that Light Table intends to initially target.

One possible solution is to have hooks into side-effects: you could display console output or logging alongside the instant evaluation. The real difficulty is network communication: even if you're okay with actually sending requests over the wire, there's an awkward balance between visibility and generality. Something like libpcap [1] is very general, but gives minimal insight into the content. Hooking into a particular HTTP client library gives you a lot more visibility into what's going on, but you'll need to do this every time you want to use a new library.

[1] <http://www.tcpdump.org/>

<comment><USER10> you could mitigate side-effects by running all of lighttable in a VM, assuming no files and creating all the ones you need. Network requests could be intercepted. The key to make this workable would be sensible defaults, allowing you to just open it up and start a new project instantly, and allowing custimization for complicated projects.

<comment><USER9> The side-effect could also just be updating a mutable hash-map, which has much of the same issues, and isn't something that you can sandbox.

<comment><USER11> In Smalltalk, this isn't a problem. Our Dictionary instances are mutable. Usually, we realize it while continuing the debugging/editing (they happen at the same time) and we either rewind the stack a little further to get a new instance of the dictionary, or we can easily undo the side effect. It usually happens in less than the amount of time you took to read the previous sentence.

</comment></comment></comment></comment></comment></comment><comment><USER12> I find the OP to be off-base in critique of the LightTable concept. To be sure, the concept has some likely drawbacks and would need real-world application to gauge viability, but I thought the critique by comparison to Eclipse missed the point. If there is anything that good design has taught us, it's that doing things better has significantly greater value than simply doing more things.

For example, the first comparative in this critique is the "docs everywhere" feature. The OP shows that the LightTable concept "eats up half the screen", "can't resize", etc. while showing that Eclipse has the same feature (with the javadoc tab at the bottom of the screen.) The OP sees documentation show up in both places, so it's called a wash/irrelevant.

When I view those same two screenshots, I see a significant difference. In Eclipse, I see yet another tab/doc/thingy with information crammed in it; in LightTable, I see information displayed in parallel with the code, not having to compete for screen space. The OP's comment about documentation "eating up half the screen size" implies that more information on the screen is better than less information. I find the LightTable design in this scenario as saying some information is more important than others.

It's mostly just aesthetics, but aesthetics is kind of the point behind LightTable.

</comment><comment><USER13> I agree with most of the points - documentation is well covered by IDE's, yep, I guess (don't use IDE's myself) ... finding functions is also pretty solved (personally I just use grep).

But I disagree with the part about small functions and the example being contrived because real world functions aren't small and you can't just get your output directly like that.

First of all, functions _should_ be small. Anything you can unit test, you can put in this sort of instant feedback. It's basically just a unit test! Input goes in, output comes out. Without side-effects or other horrors.

Okay, so not _all_ functions make sense to be unit tested. Sometimes you need an integration test and the function can't have direct output like that ... you have integration tests don't you? Why not just evolve the "Instant feedback" feature to being your set of tests?

I honestly don't care about much else in the LightTable demo. But I _love_ the idea of instant feedback. Especially when working with Haskell or something.

<comment><USER14> I think the author did not really get the motivation behind the LightTable concept. For those interested, it was this talk that inspired the guy(s): <http://vimeo.com/36579366>

It's about the instant feedback during development as opposed to the classic change/compile/reload cycle.

Especially for concepts it's important to understand the intention rather than picking on it point-by-point (which in itself, while true for the most part, seems rather pedantic to me).

<comment><USER13> Honestly, I've been _aching_ for this to become a reality ever since I saw that talk.

</comment></comment></comment><comment><USER15> Of course the original video was not perfect. It is a concept, not a fully fleshed out product.

It piqued peoples interest for good reason, because of a combination of many ideas working together in a clean interface. To criticise it for details ('this takes up half the screen', 'some of these things have been done before', 'this particular feature might not work for the kinds of work I do') is to entirely miss the point of a 'concept'. It needs constructive input (eg. 'this is a good idea, but would work better if done like that'). The kind of criticism provided here doesn't help anyone much at all.

<comment><USER16> Yes, but most, if not all, of the concept has been done before. Given that, I think the question why things would work better this time is one that the backers of this project should think about before starting development.

My input would be that I think the cute displays in the video will not work on real-scale projects. One reason is that I do not see how the most interesting part, the live display of a call graph, will work as nicely as displayed in the video with:

      - functions that manipulate disk or network state
      - large functions
      - deeply nested functions, in particular recursive ones

I can envision each of them, but all in a somewhat ugly way. The first would require programmers to write set-up and tear-down code; the second and third would eat screen real estate and/or would involve scrolling and/or collapsing.

If you have to write that setup and teardown code, I do not see how this interactive way of testing code is that much better than writing unit tests.

Translating that into constructive feedback: I would aim for building a good tool for education first; then, work on the scaling problem. But, be prepared: you should be happy if you get the education part only; you may not find a way to scale this up to real-world projects. And you should also realize beforehand that, if this does not scale, the educational program may be seen as a toy, only useful in the first half-year or so, only because 'real programmers' do not use it. It may take time to overcome that, just like it took (or even: is taking) time to overcome the notion that real programmers do not use IDEs.

[Going on a tangent: I would love to have a system that allowed me to split unit tests into API examples and all the other tests (timing tests, integration tests specific to certain bugs, etc.) That way, the documentation system could grab the first kind of tests and show them in the documentation.

I also would like to see a system that forbid me to write code that is not covered by a unit test yet. For example, in C, it would force programmers to write the header file first, the unit tests exercising part of the code second, and the actual code last. It should allow me to write the whole header file, then implement and test that header in parts, though. I also might hate it the moment I see it, but I need to see it to discover that.]

<comment><USER15> Yeah, I think thats a very reasonable viewpoint to take. To me there was a lot more depth in what you just said that the OP.

What I will say though is that to me when you 'envison.. in a somewhat ugly way' its basically a guess that they won't find a nice way to solve the UI difficulties of things that weren't in the video. You might be proved right, but to really know (rather than guess) this, you need to spend probably some days thinking about and prototyping it, which assumedly they will do (and we have not).

I think they should be encouraged to do so, and my main problem with the OP was its basically discouraging tone of 'its never going to work because you haven't shown me a perfect final version that covers all bases'.

<comment><USER16> _"you need to spend probably some days thinking about and prototyping it"_

I would _guess_ that "thinking about it and researching it" will be time better spent. Inventing the wheel often is a lot of fun, but it also can be a waste of time. I do not know the literature, but it would not really surprise me to learn that there is some cheap knowledge to mine from it.

</comment></comment></comment></comment><comment><USER17> Everyone is jumping in to disagree with the OP.

I have to be honest: I thought the OP's points were very well made, and as much as I loved the LightTable demo, I think I immediately dismissed it, in my mind, as "looks cool, but can't be made".

I think there is a big disconnect between this author, a "working programmer" who actually writes code, and at least _some_ of the commenters in this thread. Let me give my take on a few of the differences:

For one thing, the op mentioned that, while functions _should_ be small, they usually aren't. And while functions, ideally, _should_ be self-contained, most of the code people write is a mixture of calls to external sources, libraries, etc. I.e., things that _can't_ be seen ahead of time. In practice, the OP is 100% correct. Most of the code I see, ends up being _exactly_ this kind of code. I question whether anyone who claims otherwise has any experience with real systems. I just can't imagine anyone disagreeing that most code looks like this in the real world.

Another point of disconnect is the "I don't use an IDE" theme that's common here. I think you'll find that HNers, as a whole, are a lot more prone to be anti-IDE. Much of the "real world" programmers would be shocked that so many HNers give up the comfort of all that the IDE provides. And, at least to my mind, there is an attitude here that using an IDE makes you a worse programmer.

The truth is, the author is correct to point out that a lot of the cool stuff in the demo already exists. If for no other reason than to point out that, if you think a lot of the cool stuff shown in the demo is worth looking into, you might want to check out Eclipse or other IDEs.

Finally, let me make one final point, specifically to zacharyvoase and the others who think this post is "against the spirit of Hacker News", etc. I totally understand you, and I agree, the LightTable creator deserves a lot of credit for what he's trying to do, whether successful or not. But I think that a critique of the project, especially showing which parts of it have already been created, is _amazingly_ beneficial. No, the OP did not offer many suggestions. But I imagine that, if the LightTable group did _not_ know about some of the things that Eclipse does already, this post will help them out. And this post will certainly get them thinking about whether some of what they demoed is possible.

In fact, if it were me running the LightTable project, I might decide to start with an MVP of building LightTable as an Eclipse plugin, to check out some of their concepts.

Edit:

P.S. I shouldn't have to give "credentials" for expressing a view on HN, but I will anyway. I've been programming professionally for 8 years, and I now run a freelance/consulting software company so have seen many codebases.

More importantly, I'm an IDE and editor nut. Most of the start of my career was on Visual Studio, then SlickEdit, and since then I've tried out many IDEs and editors. I now mostly use Vim, while sometimes dropping into SublimeText.

I think Eclipse is an amazing tool, and couldn't imagine programming Java without it. I think most people here would be absolutely amazed at the help Eclipse gives in writing Java code, which I'm sure gives many programmers a huge boost in their time to code.

<comment><USER18> _For one thing, the op mentioned that, while functions should be small, they usually aren't._

Functions shouldn't be small just to be small. Functions should be exactly the size needed to encapsulate their function. I had to wade through a few thousand lines of JavaScript in which every function was made as small as possible (since functions are _supposed to be small_ ). Stuff like (and I am _not_ exaggerating):

      var xor_it = function(a,b) {
        return a^b;
      };

      var xor_them = function(l) {
        out = 0;
        for (x in l) {
          out = xor_it(l[x], out);
        }
        return out;
      };

Turns out that, when functions are written based on small size alone, it is nearly impossible to build a mental model of a system. I've reverse engineered some ugly code (the previous worst was an object oriented system hand-built in C (with constructors, vtables, and all)). That was child's play next to a few thousand lines of three-line functions.

On topic, I tend to agree with you. The best parts of Light Table have existed in one form or another for years, but that doesn't mean it isn't worthwhile to "Try, try again". Approaching an old problem with new vigor can result in amazing things, or nothing, but if you aren't willing to listen to criticism, you will never make a better mousetrap.

<comment><USER19> I agree that code with too small functions can be hard to understand, especially if the naming of functions is not top notch. And naming things is one of the hardest parts of programming. Ability to give good names requires thorough understanding of concepts involved, which often isn't true the first time (or even second time) you write the code.

There's also interesting discussion about "optimal" function length in Steve McConnell's Code Complete. If I recall correctly, there was no evidence that functions of even 100 LoCs for complex algorithms were significantly more error prone than similar code with shorter functions, and that very short functions actually lead to more bugs than code with functions with reasonable length. I think it is because of naming: it's hard to name hundreds of small things well.

</comment></comment></comment><comment><USER20> I'm a bit unconvinced about the 'language agnostic' assumption.

For Java, you want to get the most out of your static typing. So, you need an IDE filled with analysis tools.

For dynamically typed languages, Eclipse doesn't cut it. It gets sluggish and crashes too often and that's not acceptable when your language is designed for rapid feedback.

I want something that gives me feedback as if I were using Firebug, but feels like I'm typing into Notepad++, and it seems like LightTable could fill that need.

My thinking is that Light Table will live or die by how responsive it feels.

</comment><comment><USER21> Apart from a sparser screen, the heart is "instant feedback". There are challenges in scaling this up from the demo, but I want to see what can be done - it's Research and Development, not simple implementation. Chris Granger has a solid background for this (on the Visual Studio team). And working code. :-) IMHO there are obviously solutions to these problems, but I'm not sure how graceful/usable they'll be. Maybe great; maybe just a significant improvement; maybe just good for some niche cases - we'll see!

Firstly, we can sandbox - including the file-system; even make a copy, so it runs without "really" changing anything (in the limit, there's virtualization). Second, some of these problems are common to testing, where mocking is a standard solution to the same problem of wanting to run just _some_ code. [Perhaps a significant result will be a way of auto-mocking?] And even if you don't Test, you still run code to see if it's working - this is the same; just faster. How do you control what code you run? Light Table can incorporate the same techniques. OTOH, I run code with ctrl-tab, up-arrow + return. It's pretty fast. Easing the setup of that would be good though.

The full version is not going be as magical as the demo; but it seems unlikely that current IDE tech has reached perfection, and cannot be improved upon...

</comment><comment><USER22> > Even if it were somehow to ignore api calls that say, modify your > filesystem, how would the IDE 'know' about that api. Will someone have to > manually go through all the apis in existence and make a list of which ones > to emulate and which ones to not? That doesn't seem practical.

Why do Light Table need to emulate something? People have been _executing_ code in REPL since forever, Light Table instant feedback seems like an extension to the REPL concept, with an ability to substitute all variables visually in-place. I can't see why it should be any different.

<comment><USER23> Because when you execute code in a REPL you choose when to do so, presumably because you understand the side effects. The IDE doesn't but has to execute the code anyway to give you the feedback. This might be useful for pure functions but you'd need some kind of integrated mocking functionality for impure code.

</comment></comment><comment><USER8> Don't agree with everything the author has to say (particularly functions) but I think it's fair criticism.

LightTable isn't going to be a great fit for some languages, specifically c, c#, java and c++ style languages; I'm extremely dubious you'll be able to get the sort 'instant feedback' shown in the demo for that sort of compiled complex language with cyclic dependencies (A imports B imports C, imports A. Yay, java... :P).

...but really, that's not what it's targeting.

So, fair criticism to the author I feel: don't complain you won't be able to use a hammer to cut down a tree.

</comment><comment><USER24> I had an idea of creating IDE which frees developer from organizing files and functions etc. Every class definition and functions will be stored in CodeDB. Compiler/Interpreter talks to CodeDB to resolve. Controller seats in the middle and talking to All three, developer, CodeDB and compiler. Maybe I should create concept demo/video/image of it.

<comment><USER25> You should check out a Smalltalk environment that isn't Gnu Smalltalk or Redline Smalltalk, neither of which currently has the full Smalltalk IDE experience.

"Pharo By Example" would be a good starting point. If you are interested, feel free to email me, I'm quite happy to introduce people to what a Smalltalk environment has to offer so they can take it back to their day to day and start to spread the ideas.

</comment></comment><comment><USER26> This critique seems to be analogous to a low level language programmer dismissing the benefits of a high level language because both are Turing complete.

Yes both IDEs may be able to do similar things, but it's the immediacy with which you can do them which sets them apart.

<http://www.paulgraham.com/avg.html>

<comment><USER27> You gave the answer yourself: if you want to make programmers more productive build a higher level _language_ , not an IDE.

IMHO IDEs are overrated. If any process can be automated, it will eventually end up in code, not in a GUI.

[disclaimer: i dont use any IDE)

<comment><USER28> Your critique is off the mark. IDE can do things that make no sense as a language feature but help you write code very fast. Command keys for things like show me all senders of this method, show me all references to this class, show me all implementations of this method, show me all inheritors of this method, go to the definition of this thing, show me a tree of the class hierarchy, rename this method fixing all senders, extract this code into a new method, extract these methods into a new superclass, push these methods up or down in the hierarchy.

These are things IDE's can do for you to enable you to code much faster by being aware of the structure of the language rather than editing everything as streams of text. I work in sublime text 2 doing ruby code, and I miss the hell out of these Smalltalk IDE features, text editors just can't compare; they're great at slinging text, but I don't want to sling text, I want to sling around semantically relevant chunks of code in ways that don't break it automatically.

</comment></comment></comment><comment><USER29> There are many _many_ comments from people who watch the Light Table video, which is clearly written in a Lisp, and come away thinking that it'll work for their Javas, Pythons, or C#s. Yet, it is not at all clear to me that Light Table is an appropriate IDE for languages that are not functional and are not homoiconic.

I don't think it is entirely Chris's responsibility for dispelling Java developers of this crazy notion that Light Table is for _them_ , and it might hurt the fundraising effort; but would you really want to be funded by people who have no real grasp of what you're building?

</comment><comment><USER30> The OP comes off as a jerk, mistakenly claiming that Light Table was presented as "game-changing" or "revolutionary, outright dismissive of things that "were done 10 years ago" and, worst of all, critiquing in detail something that doesn't even exist.

</comment><comment><USER31> Nobody said it was going to be easy. Where's the author's imagination? My guess is it was slowly killed by working inside of Java for many years.

</comment><comment><USER32> Is the demo a bit contrived? Sure, but it's an inspired vision that was whipped up _inside of a week_. I don't think the creator has any illusions that making the vision a reality will be _easy_. However, it is clear that this vision is inspiring to a lot of developers and has some traction.

</comment><comment><USER33> I don't much care for trendiness or bandwagon hopping, but there are a few things about lighttable clearly hit on the future of computing (though quite by accident, I imagine).

First, programs and databases will grow together continuously. The missing piece of the puzzle here is that currently most people view databases as a single correct representation of the world, and assume that whether you have an acid database or a nosql solution, all transactions must eventually be reconciled, and a single truth must emerge. This is patently false. In actuality, database systems will begin to resemble distributed version control systems very closely over the next five to eight years, until they are almost indistinguishable. The two will meet in the middle as all distributed revision control systems end up using off the shelf graph database systems, and these graph database systems incorporate additional functionality to support one them. At some point most editors will be capable of speaking directly to the database systems without file intermediates, and if we need to transmit program data from one place to another, it will be via cloning/replication, or a textual dump and restore in some (rare) circumstances. Make no mistake about it, the key-value and column based architecture of current nosql solutions is going to transition to graph databases in the not to distant future - <USER2> algorithms to make efficient use of graph databases aren't _quite_ there yet but it is getting very close. The idea of a single consistent world view is going to shift to various contexts and sub-contexts where consistency need not hold throughout the hierarchy (exactly in the manner of forks and branches). We will share data by establishing contextual nesting and hierarchies of information primacy.

Files are an artifact of early computing architecture, and holding on to them beyond their useful lifetime will only anchor us.

</comment><comment><USER34> There is definetely room for an IDE that is more intuitive and slick than Eclipse - I find Eclipse's many views and modes distracting. Perhaps Light Table is not a revolution of IDEs, but it is certainly a welcome leap in the evolution.

</comment><comment> loup-vaillant > _I am assuming java here, so i will refer to classes instead of functions > for my examples._

This particular difference makes this part of the comparison meaningless. Functions and classes don't operate at the same level of granularity. Thinking classes vs thinking functions can produce very very different code, especially if your classes are assignment happy, and your functions avoid side effects. Plus, you wouldn't search the same way. In a class setting, one would search for _data_ to process, while in a function setting, one would seek to _process_ data.

</comment><comment><USER35> I'm really impressed with LightTable, and I was hoping for a more insightful critique of the project.

The integrated prototyping playground within the app is an excellent idea. Yes, LightTable is borrowing many ideas from WorryDream.com and that is one of the reasons it is so promising.

Anyway, seeing so many people missing the point of this project finally pushed me into sponsoring it on KickStarter.

</comment><comment><USER36> I'm not sure why so many people are up-voting this. It isn't constructive or useful. It seems to be a guy who has a vested interest in Eclipse and Java trying to downplay a possible future competitor to a framework and environment he is comfortable with...

</comment><comment><USER37> Eclipse as a good ide ? mpprfrffrt

<comment><USER38> "It is difficult to get a man to understand something, when his salary depends upon his not understanding it."

That's the blog of a company that makes a tool that integrates with Eclipse.

<comment><USER5> Ah, another ad hominem! Let me reply with an ad hominem:

Would you translate your statement into:

"It is difficult to get Prashant Deva to understand something, when the salary of Prashant Deva depends upon his not understanding it"?

No? Then don't make your senseless statement. Please argue his statement instead.

Or, maybe you're not a computer scientist, because you're not able to comprehend and participate in a normal discussion?

<comment><USER37> Well, Eclipse is slow, crashes, has a lot of features but doesn't really do anything nicely (javadoc integration is damn awful tu use). More features doesn't mean better.

What i like about LighTables is that it seems to have few features, but do them well. It has a nice clean UI (even if it's just mockup, i don't think it needs anything else) and the UX seems nice too from what i understood.

Maybe what you didn't understood is that it's NOT an IDE for computer scientists : it's more aimed to visual programmer, webdev, or gamedev, creativecoders. People that want to do both design and coding.

BTW : i just trashed Eclipse, not anyone. I still use it because it's still the best ide for javacoding (even if i haven't done any in a while), which, to me, isn't really flattering for the state of coding IDEs.

<comment><USER5> Eclipse needs a good amount of memory and recently, unfortunately, has a tendency to crash. Most of the features can be disabled; the UI can be reconfigured to your liking. Btw, I generally disable the javadoc view and just F3 to the location to see the code and docs together (docs are often wrong anyways).

The problem with mockups is that they haven't touched reality yet: there is always so much detail you don't see at the start.

<comment><USER37> yup, but eclipse is too big for me i think, i'm not really a fan. I prefer to user sublime text with completion help that run instantly.

</comment></comment></comment></comment></comment></comment><comment><USER39> _Also even if the code were indeed based on just basic numerical or string primitives, how would the 'instant feedback' work if the code were in a long, tight loop or did heavy cpu intensive stuff?_

I think this is a critical point, has the author of LightTable considered what would happen with instant feedback for less trivial pieces of code?

Besides that, I think this critique is fair, because honestly when I saw LightTable, it seemed like smoke and mirrors. I have a friend quietly writing an innovative new text editor, I expect it will be more 'ground-breaking' than LightTable, but I don't see him trying to take everybody's money.

<comment><USER40> _I think this is a critical point, has the author of LightTable considered what would happen with instant feedback for less trivial pieces of code?_

Some of the code in his demo talked to the web framework he wrote (that I use in production code) and IIRC to the SQL abstraction layer he wrote (that I also use in production code). Something makes me think that he has given some thought to how these things might interact with the real world.

I think it's fair to ask for money. Chris Granger has a track record of building useful, production-worthy libraries and tools both professionally and as a hobby. If he's going to not work for a while, possibly hire other people and build an open source IDE, it's reasonable to ask for outside funding.

<comment><USER39> I'm not sure about others, but I wouldn't give my money to any software project that didn't describe in detail how it might overcome such glaring design challenges.

<comment><USER40> You seem to be focused on the instant feedback and stack display issues.

Instant feedback is not meaningfully different from a REPL in this respect. It is unlikely you would type imperative things like "delete this directory" in to a source file. You might define a cleanup function that deletes files, but it would be pretty unusual to call it at the toplevel unless you were intentionally using the code buffer as a REPL. I'll grant that immediate evaluation of such things might be a little dangerous, but Clojure, though the JVM does have mechanisms to dangerous things like file IO.

Stack display seems like an easier problem to solve: only display a certain depth, or just put a scroll bar on it. It doesn't matter how much stuff there is as long as you're looking at the part you're likely to want by default.

I think the one downfall of this project as currently envisioned might be that this is a great concept for Clojure and perhaps some other functional languages. It _could_ be good for JS if written in a mostly functional style. Python is a little less functional and is commonly used for scripts, which wouldn't play as nicely with instant feedback.

Scripts are distinct from applications or daemons in that they normally contain a sequence of imperative actions that they evaluate and then quit. They might not define any functions at all. Applications and daemons typically run code from an entry point like a main() function. LightTable seems to be designed with Clojure in mind, and Clojure was not designed with scripts in mind.

<comment><USER39> I'm not familiar enough with Clojure to comment.

</comment></comment></comment></comment></comment><comment><USER41> classic example of "a little knowledge is a dangerous thing". Many of the other comments explain why.

</comment><comment><USER42> herein someone who doesn't program functional or dynamic languages concludes light table is contrived or impossible because Eclipse already does the job for them.

likewise, criticizing the long term potential for a project like this because it had tabs in the concept video is silly.

</comment><comment><USER43> "Since I am a Java guy and the IDE concepts are defined as being language agnostic and that support for additional languages can be added later, I will compare the examples using Java code and Eclipse as the IDE."

And you end up proving nothing more than Java isn't a dynamic language where everything is available to you all the time without recompiling - <USER3> therefore won't really fit into to LightTable very well. The examples in LightTable are not contrived as you call them - people using dynamic programming environments work with instant feedback like this all the time.

<comment><USER44> I'd like to learn how a dynamic language here is different from "static" language like Scala. Care to explain?

<comment><USER45> Dynamic programming environment. Not dynamic language.

See: SLIME <http://www.youtube.com/watch?v=_B_4vhsmRRI>

<comment><USER44> Thx.

</comment></comment></comment></comment><comment><USER46> Java is an Integrated Develompment Environment scripting language that is incompatible with Light Table.</comment>


Live patching for Linux 3.20 - <AUTHOR> http://lkml.iu.edu/hypermail/linux/kernel/1502.1/00753.html

<comment><USER2> And it was officially merged into Linux this evening:

[https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux....](https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=1d9c5d79e6e4385aea6f69c23ba543717434ed70)

<comment><USER3> I am very happy about this. It's been years in coming!

We might finally get live updates on distros. (No thanks to Oracle, of course.)

Wonder if we can also do it that well in userspace? (How does systemd behave with patching, actually?)

<comment><USER4> The original KSplice project was actually fully open source, funded by a Dutch charity called NLnet that funds lots of interesting projects like that. I've been running it ever since.

After this was all done the team got acquihired by Oracle. I was actually amazed that the team was allowed to keep the service up for some non-Oracle distro's.

But very happy to see a broader adoption of this kind of technology, it is essential for all these unmanned systems out there in the cloud that they can be patched whilst running.

<comment><USER5> Any reason why no one forked KSplice when the original team went to Oracle?

<comment><USER3> Yes: KSplice had software patents - Oracle bought them. And _everyone_ knows what Oracle is like with software patents: aggressive!

I'm not clear what they actually cover, and can't look them up right now, but I'd thought they were specific on how KSplice in particular operates, both applying hotpatches and analysing the source to create them. I don't know whether they'd apply to anything else, or whether there is prior art, but they're an obvious landmine to be aware of and to avoid. So a simple fork wouldn't do unless it'd change the way it actually worked. A fresh approach was needed, and we seem to have two fresh approaches here.

I'm trusting they've been avoided here. They probably have, as this is much more general? The _concept_ of hot patches are of course fine, people have been doing that for decades, and you can't patent concepts.

The lesson here: please don't patent stuff jn your open-source software, in case you wake up one day and got acquihired by Evil™.

<comment><USER3> OK, I've now looked up the Ksplice patents that I know of. (I may not have found them all, but I think I probably have?) Here be dragons! (Those who are ordered not to read patents: Don't click on the links in this post.)

Of course the time they were granted (to Oracle, after Ksplice were bought) the applications became nigh-impenetrable patentese that _really need_ a US- qualified patent attorney to interpret, so I'm absolutely not going to try and I'm just going to post what I found here.

Application: [https://www.google.co.uk/patents/US20100269105](https://www.google.co.uk/patents/US20100269105) became patent [https://www.google.co.uk/patents/US8612951](https://www.google.co.uk/patents/US8612951) (B2) "Method of determining which computer program functions are changed by an arbitrary source code modification". (They've also cited a patent for a… coffeepot. OK, I'm pretty sure that bit's a typo. <g>)

Application: [https://www.google.co.uk/patents/US20100083224](https://www.google.co.uk/patents/US20100083224) seems to have become patent [https://www.google.co.uk/patents/US8261247](https://www.google.co.uk/patents/US8261247) (B2) "Method of modifying code of a running computer program based on symbol values discovered from comparison of running code to corresponding object code".

Application: [https://www.google.co.uk/patents/US20100269106](https://www.google.co.uk/patents/US20100269106) does not seem to have been granted directly, but then there's patent [https://www.google.co.uk/patents/US8607208](https://www.google.co.uk/patents/US8607208) "System and methods for object code hot updates" which I think is a continuation-in-part of it and oh I've gone cross-eyed, get a professional.

</comment></comment></comment></comment></comment></comment><comment><USER6> Here's some more discussion from LWN: [https://lwn.net/Articles/597407/](https://lwn.net/Articles/597407/)

(Note: from May 2014)

</comment><comment><USER7> And for those who prefer the official lkml.org link:

[https://lkml.org/lkml/2015/2/9/534](https://lkml.org/lkml/2015/2/9/534)

<comment><USER8> lkml.org explicitly states that they are unofficial.

From [https://lkml.org](https://lkml.org) , "In case you haven't read the titlebar of your web browser's window: this site is the (unofficial) Linux Kernel Mailing List archive."

<comment><USER9> Firefox Nightly doesn't display that neither in the tab name nor the Xwindow title. I'd never have seen this ...

<comment><USER10> That's because the <title> element only contains "LKML: " on the thread, and "LKML.ORG - the Linux Kernel Mailing List Archive" on the main page.

Maybe they forgot to keep the "unofficial" in the title?

</comment></comment></comment></comment><comment><USER11> This is cool as fuck, I didn't know about kpatch or kGraft.

Does anyone know if any other OSs have live kernel patching?

<comment><USER12> FreeBSD has not gone quite that far, but there was a PoC for loading new kernels without rebooting.

[https://www.bsdcan.org/2012/schedule/events/325.en.html](https://www.bsdcan.org/2012/schedule/events/325.en.html)

<comment><USER7> Yup Linux has had a similar feature, kexec, for several years.

<comment><USER12> Everyone I talked to about it since has said "nobody seems to care enough to bother completing it"

It is kind of a niche feature, really.

<comment><USER7> Linux has this create feature of being able to include the operating system in the initrd. Put this with a nice PXE infrastructure where you pxe the OS and download the initrd with the OS in it. Then you simply kexec to upgrade or downgrade the entire operating system in ~30 seconds. I used to manage a production environment that worked exactly this way for several thousand nodes.

Not sure I'd call it niche, but yes, somewhat specialized.

</comment></comment></comment></comment></comment><comment><USER13> And lkml discussion of the follow-up patches: [http://lkml.iu.edu/hypermail/linux/kernel/1502.1/00694.html](http://lkml.iu.edu/hypermail/linux/kernel/1502.1/00694.html)

</comment><comment><USER14> Does anyone have a simple example of how this would work? I can't wrap my head around code evolving during runtime for any arbitrary binary change.

<comment><USER15> I took a quick look at the accepted patch. while I can't guarantee I know what's actually going on, my understanding is that patching individual functions works by sticking the replacement functions code somewhere new in memory, getting a pointer to it, and then over-writing the code in the old function to jump to the new one. (Kinda like short-circuiting the old function - all the old code still calls the old function location, but that location simply says 'jump to this new location over here').

It looks like, however, because kernel modules seem to be in elf format (Don't quote me on that, just going from the code), elf format includes a 'relocation table', which is basically a table that says "this function is located here, and this next function is located here, and ..." for every function in the module. Ignoring why that is actually there, they can take advantage of the relocation table and replace a functions location with the location of the replacement function, effectively overwriting the old one. Even if it's still in memory (I can't tell if it gets removed or not) the code will never be called again.

From there, the discussion mostly seems to be around how to 'stop' the kernel enough to be able to replace the function without resulting in a mess because something was trying to use that function at the same time that you replaced it.

<comment><USER16> Basically yes. Check out the kprobes docs for a nice description of how these frameworks work ,[https://www.kernel.org/doc/Documentation/kprobes.txt](https://www.kernel.org/doc/Documentation/kprobes.txt). Being able to intercept (and mangle) kernel function calls is awesome. With uprobes the same techniques work in userland as well.

</comment></comment></comment><comment><USER17> An interesting case of the Cathedral causing siloed duplication, and the Bazaar creating a better solution without duplication.

<comment><USER18> Ignoring the fact that both SuSE and Red Hat are paying the involved engineers their paychecks in order to get the feature in their silo first.</comment></comment>


The Most Important Component Of Evolution Is Death - <AUTHOR> http://clairehu.com/2014/02/18/the-most-important-component-of-evolution-is-death/

<comment><USER2> In the grand scheme of things, our lives are just frames of recognizability to one another, and we live on as the information that transformed via us forever. The cycle of innovation, and thereby of technical debt in software, seems to just be one where we either oscillate between caring about quality vs caring about innovation with a frequency proportional to how quickly we can communicate or a static power distribution of the same dichotomy. Either way, the lines we draw and the lengths of frames for when ideas, people, and companies "die" are all just emergent phenomena of the way we think, and pretty arbitrary in the grand scheme of things, don't ya think?</comment>


China renews calls for tighter cyberspace security - <AUTHOR> http://www.reuters.com/article/us-china-cyber-idUSKBN14G0GA <comment><USER2> Xi Jinping seems to be the most effective and powerful Chinese leader since Deng Xiaoping, maybe even since Mao Zedong. Unfortunately, it seems to be also the most authoritarian one. His anti-corruption campaign was very effective on eliminating internal dissent within the Chinese Communist Party. This is the greatest control freak on the planet, more than Vladimir Putin.

This trend towards tighter control of dissent goes far beyond the internet and it is threatening to anyone with businesses in the country. Besides, the country desperately needs independent institutions (e.g.: courts, press and universities) if it really wants to leave behind the economic model that worked until now (cheap exports and infrastructure building) and embrace a model that pulls it ahead. For such, China needs to rely more on independent entrepreneurship and their internal market. It can't do that when the Communist Party insists on control everything.

Most Chinese know this very well, that's why so many rich Chinese are buying real state in Seattle, Vancouver, etc or moving their assets abroad or trusting their children education in western universities.

Jinping is to remain in power until 2022. Probably he will remain as a shadow godfather of the party even after that. But going his path, China risks a lot of instability.

<comment><USER3> The Communist Party is not a monolith -- policy disagreements are proxies for factional struggles. They just don't usually play out in a very public way, but even in China, different news sources will have a different 'spin' because they represent different viewpoints within the Party.

Xi is well aware of the need for financial, institutional, and economic liberalization (the government has been regularly downsizing and selling off state-owned firms[1] as well as opening up the financial sector), but support for these policies is not uniform within the Party because many within benefit from the status quo.

Hence the contradiction -- in order to push forward a liberalization and anti- corruption agenda, Xi must first suppress dissent within the Party. In the US, we have the saying 'Only Nixon could go to China'.

It's basically walking a tightrope: if he uses authoritarian tools too heavily, then that indirectly hurts the independent institutions that need to be nurtured, but if he takes too light a hand, then reforms will be blocked or delayed indefinitely at lower levels and then fail from a thousand cuts.

And if China reforms too quickly without careful planning, it risks chaos (see former Soviet Union in the 90s). If it reforms too slowly, it will not be able to generate the economic growth that it badly needs as the manufacturing and real estate sectors slow down.

[1] [http://www.wsj.com/articles/china-to-allow-state-owned- enter...](http://www.wsj.com/articles/china-to-allow-state-owned-enterprises- to-sell-shares-to-public-1442138335)

<comment><USER2> > Xi is well aware of the need for financial, institutional, and economic > liberalization

I am not sure about this. Since 2008 the Party seems to be panicking by increasing social unrest on ethnic/religious issues (Tibet/Xinjiang), on autonomy ( Hong Kong ) and, in thousands of villages and cities, on corruption, land rights and environmental issues. But I do concede that he has been effective in important issues (e.g.: healthcare and pensions).

China history is marked by 30-40 years of calm and tranquility that suddenly erupt in tragic conflict (Taiping Rebellion, Republic, Communist Revolution, Great Leap Forward & Cultural Revolution, ...) By that pattern some big instability is overdue by now. Let's just hope it doesn't happen.

<comment><USER3> The argument for liberalization is that it's the only way to continue to grow the economy, and the Communist's Party's current legitimacy rests on lifting hundreds of millions of people out of poverty in the last few decades.

Having won a revolution only some 70 years before, Party leaders are well aware that power taken with consent of the people can certainly be taken away again [1][2].

[1] [http://www.scmp.com/news/china/article/1133212/tocquevilles-...](http://www.scmp.com/news/china/article/1133212/tocquevilles- advice-french-revolution-captures-chinese-leaders-attention)

[2] [http://asia.nikkei.com/Politics-Economy/Policy- Politics/Comm...](http://asia.nikkei.com/Politics-Economy/Policy- Politics/Communist-Party-s-recommended-books-show-China-s-leadership-concerns)

</comment></comment></comment></comment><comment><USER4> Foreign companies are now facing the implications of this now. The penalties for non compliance can mean managers can face detention or monetary penalties.

Now that Airbnb moved some of their infrastructure into China for data sovereignty requirements, they may have to comply when asked to give the Chinese government access into their infrastructure that is based in China. I'm not talking about passive monitoring, but actual credentials. This may hinge on if the infrastructure is classified as "critical", a very loosely defined and ambitious term.

The implications are huge for anyone doing business in China. The risk to intellectual property that Apple are about to face could be significant. It's all stated in the new law which you can read here -

[http://www.chinalawtranslate.com/cybersecuritylaw/?lang=en](http://www.chinalawtranslate.com/cybersecuritylaw/?lang=en)</comment>


Disclosing networks of state-linked information operations we've removed - <AUTHOR> https://blog.twitter.com/en_us/topics/company/2020/information-operations-june-2020.html <comment><USER2> I wonder if Twitter also does the same for Western governments ops or only for "bad guys" like Russia, China and Turkey.

In France, during the "Yellow Vests" movement, there's has been a lot of progovernment activity on Twitter from accounts which were obvious fake ones: with a photo stock profile picture and a username made of "(often vintage) French first name+ 5 or 6 random figures".

I suspect this is frequent among western countries too but I don't have evidence except for my country, if you have such stories for your country, please share.

<comment><USER3> There are quite a few people and organisations analysing social media accounts. They have, on occasion, exposed botnets, or networks of fake accounts that are manually run.

I know of a few here in Germany, and I have no doubt that they would gleefully publish any US government networks they come across. And with the extreme polarisation in the US, there should be plenty of people or publications on either side to do the same.

The fact that, as far as I can tell, these tend not to be bots but manually- run fake accounts might point to an explanation of the relative lack of such activity: it might just be too expensive. And when it comes to networks targeting other countries, every country that isn't natively English- or Spanish-speaking is relatively save because you aren't going to find hundreds of Americans speaking Russian willing to work for low wages and reliably keep quiet about it.

That, of course, is in addition to the obvious reason that democratic countries by their very nature just don't do stuff like that. But I have a hunch the ever-cynical crowd here would take offence at the idea that some countries and governments sometimes don't behave in the worst possible way.

<comment><USER2> > democratic countries by their very nature just don't do stuff like that

 _Democracy_ isn't a black and white things. Turkey is a democracy, no matter how corrupt and authoritarian Erdogan is. And democracy-wise France is arguably closer to Turkey than to the UK anyway.

<comment><USER4> Really? With UK's oppressive anti-privacy laws? Anyway, I live in Switzerland, and we are the only real (direct) democracy out there. :)

<comment><USER5> Democracy doesn't preclude oppression or promote privacy. It also doesn't require that all citizens have the ability to vote, that all living in the country are citizens, or that citizens be free. Just like most forms of government (so far as I know, the only pure forms of communist/republican/democratic/etc government in current use are small scale town/village level, so this doesn't really mean much). I also don't have much knowledge on how most current governments work at any level of detail, so feel free to tell me if I'm wrong.

</comment></comment></comment></comment></comment><comment><USER6> I'm surprised they're not disclosing the US ones.

<comment><USER7> I can't imagine US being all that significant.

Biden, Trump and various members of both camps command more than enough attention through their own Twitter accounts.

Likewise pushing political agendas is largely superfluous given you can just lobby politicians directly without needed public support.

<comment><USER8> You're not considering foreign operations. If included, I bet the US would be at the forefront.

<comment><USER9> If the US is conducting psy-ops on social media against adversaries, wouldn't they use media companies popular in that country? And, if that were Twitter, wouldn't the language barrier still make it relatively harder for Twitter (a company staffed predominantly by English-speaking employees) to investigate?

Additionally, does it merit discriminating between offensive and defensive psy-ops? Might there, for example, be government-controled bots injecting wholesomememes content into the feeds of depressed government employees? Does Twitter have a different obligation in that context?

<comment><USER10> > wouldn't the language barrier still make it relatively harder for Twitter (a > company staffed predominantly by English-speaking employees) to investigate

That doesn't seem to have stopped them from banning accounts posting in Chinese.

> government-controled bots injecting wholesomememes content into the feeds of > depressed government employees

That would still be "coordinated inauthentic behavior".

</comment></comment></comment></comment></comment><comment><USER11> >23,750 accounts that comprise the core of the network, e.g. the highly engaged core network. Approximately 150,000 accounts that were designed to boost this content, e.g. the amplifiers.

That's a lot of 五毛

<comment><USER12> Since "五毛" is used everywhere for netizens to verbally attack anyone who speaks positive towards CCP and Chinese government, I'd say this seems an inappropriate use of language.

Instead, we probably should label this group as the "government sponsored online moderator" "网评员". This is more revealing of what actually is happening, I.e. Chinese government hires people to influence and monitor online communities.

On the other hand, there are many people who does think CCP and Chinese government is good overall, and support them. Which I do not think it's fair to label them as "五毛". In case you find this unbelievable, I'll risk being further misinterpreted, by citing the die hard trump supporters being labeled "white supremacists", which I believe is harming the unity of this country.

<comment><USER13> ^ it seems that HN needs to do some garbage collection, and remove the state linked accounts here as well

<comment><USER14> you're leveling a claim i might agree with, but i don't think you're doing so in an appropriate way (as in, if everybody behaved this way when similar feelings arose, we'd have a real shit community)

if you have a problem with the statement, can you address where it's inaccurate? or can you be more explicit with your own assertion in order that the rest of us can address where your inaccuracies are.

<comment><USER12> GP here, I am moderately surprised that the parent post implied I am linked with Chinese government. Usually people would be more subtle.

I was born and raised in mainland China, left to US for PhD at 22.

I gradually understand why westners show various degree of hatred towards the Chinese government, CCP, and not so rarely the Chinese people. And also see the equally ridiculous negative biased of Chinese people towards westners.

From a self-interest perspective, I try to state the less emotional charged description on news relevant to China. Because I am seeing the risk of becoming one of the scapegoat of the Sino-US conflict. For example, while I was called linking to Chinese government, I am equally possible being called "banana man" (yellow skin with white heart, you get the idea) by passionate Chinese netizens.

I am actively risking my reputation on this forum by behaving like this. As for a long time I am well aware of the genuine political and cultural biases.

But I believe this is best for my situation. I cannot just watching the hatred grow between the common people without an action. That is also hurting the my own and my family's future.

<comment><USER15> This caught-in-the-middle position is common enough on HN that I wrote about it when a similar issue came up last year: [https://news.ycombinator.com/item?id=21200971](https://news.ycombinator.com/item?id=21200971). That's a long post; the part that your comment reminded me of is this:

 _What you 're most likely getting is (for example, let's say) a Chinese- Canadian Amazon or Microsoft employee, who's been reading HN for years and is suddenly hurt and dismayed by all the aggressive anti-Chinese comments that have been showing up on the site—or (let's say) a Chinese grad student who stayed in the US, got a good job and played by the rules, and back home in China is the one holding the other side of the argument, defending the US and his American friends to his family who have been hearing nasty things about them over there._

It is a difficult position to be in, because you get attacked from both sides, and not just about something small, but in deep and painful places.

<comment><USER12> Thanks for the deep understanding shown in the posts. One correction: I am 36 years old with 2 kids born and raised in US now, was stating it was 22 years when I came to US. :)

I really appreciate that you understand the situation people like us are in. That is especially encouraging given the rapidly deteriorating situation in recent years. The great irony, however, is that, coincidentally, both China and US saw outliner leaders come into power. Like an old Chinese saying "the good fortune never come with a companion, but the ill-fortune seldom come alone" (福无双至祸不单行).

Aside from activities here, I try to proactively engage with my network in mainland China to debacle common biases towards US. My personal goal is to improve understanding.

I have changed from a heavily indoctrinated young Chinese student to become one who is able to appreciate the deep cultural convictions and altruistic intentions of American people. I have seen the same vigorous pursue of better life and unwavering self reliance from both American and Chinese people. I firmly believe the value structures of American and Chinese people are inherently compatible. The confrontation should be avoidable.

I would be hugely disappointed if US and China end up into Cold War like confrontation. That will be an unprecedented waste of human value, and squander of historical opportunity of advancing the international community to a more productive stage.

<comment><USER16> >Like an old Chinese saying "the good fortune never come with a companion, but the ill-fortune seldom come alone" (福无双至祸不单行) .

This reminded me of the Anna Karenina principle [1] (but sort of the opposite): "All happy families are alike; each unhappy family is unhappy in its own way."

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

</comment></comment></comment></comment></comment></comment></comment></comment><comment><USER17> 1,152 Kremlin bots banned sounds really underwhelming. Though on the other hand, reliably detecting their throwaway accounts must be an impossible task.

</comment><comment><USER18> What still confuses me is how do people create so many bot/fake twitter accounts when you are required to have a phone number? Throwaway phones?

<comment><USER19> There are countless SMS services and it is a race of blacklisting the numbers they use.

</comment></comment><comment><USER20> It requires a google account to download the archive. Can someone summarize or cherry pick some examples? Just wondering what counts as manipulation and whether I would be able to tell.

<comment><USER21> Here's a report by ASPI [https://www.aspi.org.au/report/retweeting-through- great-fire...](https://www.aspi.org.au/report/retweeting-through-great- firewall)

</comment></comment><comment><USER22> Aw, you have to have a Google account to download the data.

<comment><USER23> Twitter migrated data to Google last year : [https://news.ycombinator.com/item?id=18976150](https://news.ycombinator.com/item?id=18976150)

That could explain it

</comment></comment><comment><USER24> Is this a joke ? I've downloaded Russian archive. Tweets there are not in any way promoting any party , they are mostly retweets of regional and statewide news agencies' posts. Some do have pro-Russia bias, but nothing raging and nothing I could label as propaganda.

<comment><USER10> According to Twitter, they were "suspended for violations of our platform manipulation policy, specifically cross-posting and amplifying content in an inauthentic, coordinated manner for political ends."

If you use a bot to retweet "regional and statewide news agencies' posts", that would fall under the description above.

</comment></comment><comment><USER25> It helps to report accounts to Twitter, Facebook, Instagram if you suspect them of being a politically-motivated bot.

</comment><comment><USER26> I hope they go after the Brazilian bots. The amount of disinformation is staggering.

</comment><comment><USER24> This is crap . IDK what's in the chinese and turkish archives, but banning russian accounts for their activity in 2010 ( grep SamantaDarko , for example ) , and containing no political tweets at all ?

<comment><USER27> Were there any "я сама крымчанка дочь офицера" accounts on their list?

<comment><USER24> No, that's the point. Imagine accounts retweeting wide spectrum of moderate GOP news sites, with an occassional joke or wit.

<comment><USER27> Being able to poke fun at oneself is one the components of my personal turing test. (but that would imply /r/totallynotrobots/ are indeed human. ERROR! ERROR! +++ATH + _" (Oäç/"ç_ä%()/ _ç%( /_ç tape_drive_spinning.gif</comment></comment></comment></comment>


Building a CPU one transistor at a time - <AUTHOR> http://www.megaprocessor.com/ <comment><USER2> [https://news.ycombinator.com/item?id=9755742](https://news.ycombinator.com/item?id=9755742), [https://news.ycombinator.com/item?id=11459225](https://news.ycombinator.com/item?id=11459225)</comment>


Bitcoin futures market just changed the game - <AUTHOR> http://www.cnbc.com/id/102456187

<comment><AUTHOR> Are there any other ways to trade derivatives on bitcoin?</comment>


Show HN: Simple translation by email - <AUTHOR> http://blog.unbabel.com/post/77429798243/translationemail <comment><USER2> This is great, I'm particularly excited about the pricing. I was also wondering about the Crowd Translation Community. I do a lot of research that lands me in foreign texts. Often they are 100-200 years old & contain industry-specific terms.

I've always been wary of shelling out for a translation service, as I worry that the subject matter & age may make translation to English an expensive/arduous process. But, at a penny a word, I'd definitely be more willing to at least test the waters.

Being that I may momentarily have your attention, could you give an opinion on whether or not you think my use case would actually be successful? Again, with your pricing, I'm down to try it regardless, so I'm signing up, but I don't want to get my hopes up too high.

EDIT: Just so you are aware, I'm trying to add money to my account, but the confirmation email doesn't seem to be arriving. I've requested another, nothing. Maybe you are getting hammered by activity right now, but UX-wise I think forcing confirmation of the account should come BEFORE you enter your financial information, not after, as it leaves me babysitting it.

<comment><AUTHOR> Really interesting use case. To be honest I don't know if it would work well, I don't think anyone has used for that purpose, but I would certainly love to try. If you are not satisfied, we can always return your money :)

Also, please check your spam / trash, etc. We have had cases of emails going to the wrong bin. In any case, if you shoot me an email @ vasco [at] unbabel [dot] com I would be happy to make sure that everything is running smoothly for you.

<comment><USER2> Awesome, thanks, Vasco, I look forward to trying it out this weekend when I have some time to go through old sources.

Also - just on the UX part, when I was able to confirm the account, my balance read as 0, I refreshed, still 0, so I went to top up again, added 5 Euro, on the confirmation screen it said my current balance was still 0, but then when I went into my dashboard it revealed I had a 10 Euro balance.

I don't at all mind, 5 or 10 are both fine for me, only mentioning in case that order of events is at all useful to you in debugging things.

Congrats on the launch, and good luck. I can't wait to use it :)

</comment></comment></comment><comment><USER3> Cool! That's really simple.

How do you source translators? Does someone proof-read the translation? Basically, I'd like to know more about "Unbabel Crowd Translation community" :)

While I'd say this is perfect to support an app/consumer product, would you recommend it for a higher price SaaS product?

<comment><USER4> My guess would be that a translator receives the original text along with Google Translate's (or some other service's) version, and then proofreads it using the original as a reference.

<comment><AUTHOR> You almost nailed it. It is pretty much like that but there is more than one person editing. It is a chain of editors that work in sequence.

</comment></comment></comment><comment><USER5> How is this $0.01 per word? That seems too good to be true. The website implies says it's human translators, but translation usually costs an order of magnitude more than that.

The only company I know who are doing massively different pricing is Duolingo, because of how the work, but Unbabel seems to be the same business model as traditional translations, with a much lower price.

<comment><AUTHOR> We are combining a lot of technology with human work and we think we can make this so efficient that even if we charge this kind of prices we will be able to pay editors a decent amount per hour. We might need to raises prices, but right now it is your gain, take advantage of the prices while you can, if we raise the prices, we will grandfather current clients.

</comment></comment><comment><USER6> I really like the way unbabel works and got quite curious since it's a portuguese startup. But the way it works for translators is a bit weird. When you request a task there's no way of knowing if it's going to be a paid one or a free one. And in the end it feels like you're being fooled into working for free.

<comment><AUTHOR> That is good point. We are in the process of refining the user experience and especially making that much more transparent. Initially we thought that having a stream of tasks would be more efficient. If we have paid tasks we always put that upfront.

</comment></comment><comment><USER7> This is really a good idea! It helps both end-users and translators. It helps building an open-market for an activity which is very important to global communication. I wonder if you will have this available for blog translation?

<comment><AUTHOR> Certainly. Right now you can use the order form and get your blog translated, but soon we will have more seamless integrations. Ideas welcomed.

</comment></comment><comment><USER8> How would you say your service compares to Gengo.com? It seems you're a lot cheaper. Does that mean we could expect lower quality? What sort of QA do you have in place?

<comment><AUTHOR> Gengo is catering to the professional translator. Each job is done by one person, with the possibility of review (costs extra). Unbabel is crowd translation, this means that multiple people work on the translation. Regarding QA, only the top unbabelers have access to paid tasks and to get there they need to have really good feedback from the community.

Depending on your content, Unbabel quality is quite good. Our hope is that it will be as good as Gengo.

</comment></comment><comment><USER9> In the future, we will be able to get something translated without anyone knowing what it is. How? I don't know.

</comment><comment><USER10> Looks great. Right now I need Dutch and German translation so I hope they are coming soon.

</comment><comment><USER11> Cool stuff. I think it's something that'd be useful to many people.

<comment><AUTHOR> Thanks! We hope so too :)

</comment></comment><comment><USER12> I love it, so simple! Please add more languages.

<comment><AUTHOR> Thank you, more languages should be coming soon.

</comment></comment><comment><USER13> so is the USP that translation is done via machine like google translate ?

<comment><AUTHOR> USP? But yeah, first we do machine and then the crowd edits the output to fix any mistakes.

</comment></comment><comment><USER14> Brilliant!

<comment><AUTHOR> Thanks! :)</comment></comment>


Conversion Rate in WordPress - <AUTHOR> Hi, everyone! My name is Alina. It's been a while since I was hired by ThemeFuse.com to optimize their website that sells Premium WordPress Themes. All good till some months ago. Our sales started to decrease. I can't understand why. I'm open for any advice on how to optimize the conversion rate for a WP Themes Shop or, in general, that's wrong with our website. Or, that's wrong with this industry. I'm quite in a panic now. <comment><AUTHOR> We're currently trying to use any possible method to promote our website. It's been a year since we recovered from a penalty from Google which dramatically changed our income situation. We're now using every known method to promote our website. Social Media ads, newsletters, promo-codes, giveaways, partnerships with different websites related to our field and so on. We started changing our website content a little bit, text-wise, images-wise but there is still not a lot of revenue.

</comment><comment><USER2> I would need to hear more of your story to help. Please explain here or click on my profile and we can talk about it offline.

<comment><AUTHOR> We're currently trying to use any possible method to promote our website. It's been a year since we recovered from a penalty from Google which dramatically changed our income situation. We're now using every known method to promote our website. Social Media ads, newsletters, promo-codes, giveaways, partnerships with different websites related to our field and so on. We started changing our website content a little bit, text-wise, images-wise but there is still not a lot of revenue.</comment></comment>


CSS is for developers - <AUTHOR> http://lea.verou.me/2013/12/css-is-for-developers

<comment><USER2> Ego problems much?!

<comment><USER3> Considering she is part of the W3C CSS Working Group I don't think she needs to write posts like that to prove something.

<comment><USER2> Seems legit.

Still it reads like she gives much about people who tell her she isn't a developer...</comment></comment></comment>


Mind-blowing Idea: Free Transportation for Life - k-mcgrady http://launch3.squarespace.com/blog/mind-blowing-idea-free-transportation-for-life.html

<comment><USER2> Tesla Motors is revolutionizing the auto market in a lot of ways - <AUTHOR> electric cars, not those made for transition hybrids, free charging, and selling direct to consumers (where hopefully they'll win the lawsuit).

Too bad US doesn't have the tax incentive system EU has for less-pollutant cars. It would help speed up the adoption of electric cars like the ones from Tesla Motors. Even better if the Government stops subsidizing an industry that makes billions in profit. Does a century old industry really need subsidies? I can understand subsidies for nascent industries like the solar panel one, but only for a few years until the businesses can sustain themselves. After that I don't think it makes sense at all to keep subsidizing large corporations.</comment>


Peter Theremin's haunting music, on his great-grandfather's invention - <AUTHOR> http://cdm.link/2018/09/peter-theremin-music/ <comment><USER2> Just yesterday I watched Maciej Ceglowski's 2014 talk on Lev Termen's life and inventions, the internet, design, theremin-playing cats etc. Fascinating.

Video: [https://vimeo.com/92522645](https://vimeo.com/92522645)

Webpage version: [http://idlewords.com/talks/our_comrade_the_electron.htm](http://idlewords.com/talks/our_comrade_the_electron.htm)</comment>


The Age of Facebook - <AUTHOR> http://techcrunch.com/2010/04/25/the-age-of-facebook/

<comment><USER2> The article "The Age of Facebook" is retweeted more than a 1000 times and 'Liked' just about 150. Ironic.

</comment><comment><USER3> So how come it's not called the Age of Apple? Apple has done just as much to change our culture and dominate tech thought in the last couple of years.

Is it that we're not bullish on Apple anymore and are pushing facebook?

It'd be interesting to see where facebook falls flat. If Foursquare doesn't get brought out, I'm guessing it's in the mobile location space.

<comment><USER4> I think Facebook has touched the lives of a lot more people than Apple. My mom doesn't know what Apple is, but she has a Facebook account. Also, Apple products are expensive, Facebook is free.

<comment><USER5> Well it doesn't cost any money to join but I wouldn't say it is free. You are agreeing to forfeit a lot of personal info by participating.

</comment></comment></comment><comment><USER6> My Facebook problem: Whenever I go on their site I get a terrible Facebook headache. It's like being in a loud restaurant, a packed mall, and a crowded amusement park at the same time.

<comment><USER7> As for me, I feel like its one big orgie going on.

<comment><USER8> You have more interesting friends than the rest of us.

</comment></comment></comment><comment><USER9> Why are all the unfun things making it big? By unfun I mean being at the mercy of megacorps (Apple, Facebook, Google). So we had a couple of good years with the internet and individuality, and now it is supposed to be all over?

Is this because of the innate herd nature of the human race, that is, people just like being told what to do?

<comment><USER10> The masses prefer the easiest way to have fun. Drugs, alcohol, unhealthy sex are all dangerous but ... fun.

And maintaining independence takes a lot of effort, which isn't fun.

</comment></comment><comment><USER11> So which is it? A Ponzi scheme or a brilliant business model?

<comment><USER12> A brilliant Ponzi business scheme model.

</comment></comment><comment><USER13> Ask to anybody its really the Age of Facebook now.</comment>


eBay went straight to the nuke - <AUTHOR> http://radar.oreilly.com/archives/2007/06/ebay_went_strai.html <comment><AUTHOR> "Where's the nimble startup ready to challenge eBay in a powerplay without the risk of losing a three-figure $ million revenue stream, and when will eBay recognize - like Facebook - that they're a platform and not a closed bundle of applications."</comment>


Yeti programming language - <AUTHOR> http://mth.github.io/yeti/ <comment><USER2> The quote at top is from some HPL fanfic? [http://www.bibliotecapleyades.net/cienciareal/necronomicon/a...](http://www.bibliotecapleyades.net/cienciareal/necronomicon/azif/index2.htm)

</comment><comment><USER3> Latest release was 11/2013.

<comment><USER4> The repository was updated two months ago. The last release of Java 8 was more than a year ago: [https://en.wikipedia.org/wiki/Java_8#Java_SE_8_.28March_18.2...](https://en.wikipedia.org/wiki/Java_8#Java_SE_8_.28March_18.2C_2014.29)

<comment><USER5> 8u45 was released in mid-April of this year.</comment></comment></comment>


Pattern: Back ends for front ends - <AUTHOR> http://samnewman.io/patterns/architectural/bff/ <comment><USER2> This is how netflix approached api gateways. [http://techblog.netflix.com/2012/07/embracing-differences- in...](http://techblog.netflix.com/2012/07/embracing-differences-inside- netflix.html)

However, this approach is a giant pain in the ass and technologies like Falcor (netflix cannabilizing its own pattern) and (my preference) GraphQL will come to replace.

With a generic client side query language, you don't need to deal with versioning APIs, lots of concurrent development, overhead of deploying a new API for each client, the list goes on. GraphQL in front of a set of services is how we're approaching our next project and it's working really well so far.

<comment><USER3> GraphQL/Falcor seem like a very elegant abstraction for "fetching" data. But I see a performance problem arising - all data queries are not created equal, and so it may turn out that there is a significant speed difference between requesting {Object: [field1]} and {Object: [field1, field2]} as a consequence of some particular implementation detail at the persistence layer (SQL joins perhaps). A well designed BFF would abstract away this problem by providing a set of individually optimized endpoints, presumably crafted in a way that reflects the underlying persistence layer (like any good REST API) as well as gathering data together for a particular client's needs, so that the front-end designer can decide which calls to make, and whether requesting [field2] is worth the cost.

The alternative in a GraphQL world would be to have a set of best-practices which annotate the data model. So a backend engineer would write a piece of documentation saying : "Warning: consider avoiding [field2] for significant performance gains".

<comment><USER2> > so that the front-end designer can decide which calls to make, and whether > requesting [field2] is worth the cost.

How is this different in essence from an annotation?

It's also worth noting if you want to have guarantees that your front end engineer doesn't fuck up your performance terribly by making bad queries without them being analyzed or whatever, you can take the stored query approach (this is what facebook does - also good for preventing accidental data leaks) where you store each usable graphql query in a database, and hardcode the query's ID into your application rather than the query itself.

</comment></comment></comment><comment><USER4> Or for those wanting to use an already defined pattern: API gateway pattern [1]. Same idea, already identified.

[http://microservices.io/patterns/apigateway.html](http://microservices.io/patterns/apigateway.html)

</comment><comment><USER5> Right now I am working on a talk around this area and an idea came to my mind that I think is worth a discussion here on HN.

In today's front-end technologies with webpack and webcomponents why wouldn't you compose application that call different services and compose the UI based on these services.

For example, you have a login/welcome component that will call the auth service and will check if the user is logged in or not and show the appropriate message or login screen. If the Auth service is down you can simply show a message.

This way, each component is aware of the service it has to use and you can package it into the application deployment process.

It's worth a thought that if you already have micro-services you should also break your application apart and not have a monolithic front-end.

I am not an Android/iOS guy so I'm not sure if this is even viable there but these days, I'm pretty sure we'll start seeing front-ends that are composed around small single-responsibility services.

One of the biggest advantages of that is that components and services are independent, you can split the work between teams and the application deployment will join everything together.

<comment><USER6> You should probably checkout some of Udi Dahans writings. During the CQRS-hype he had some interesting texts on SOA in roughly that direction.

</comment></comment><comment><USER7> AKA the BLL or Business Logic Layer? I guess the only reason you would re- write business logic in the presentation layer is because you can't afford the extra round-trips, and it's cheaper than writing an aggregation layer on your backend.

But generally wouldn't you just add the APIs into the core microservice to return the requested dataset (at the various necessary "levels" of cardinality) for the various different consumers? Keeps everything in one place.

Then you use nginx lua script to allow a single HTTP request from the client to be dispatched to the various microservices and packaged together in the reply in a singel round-trip. This can be just a few lines of code serving any combination of possible sub-requests. I don't like the idea at all of building another service layer on the backend to do the aggregation and expose a different API... I think you can do something similar in the development branch of HAProxy.

</comment><comment><USER8> Just remember that each arrow that crosses team boundaries on those graphs costs a lot. Usually the cost is on the side of the team on receiving end.

</comment><comment><USER9> It seems GraphQL would be an alternative solution.</comment>


Ask HN: Best Online Business Brokers to Sell Software Business - <AUTHOR> <comment><USER2> I've heard good things from multiple first-hand experiences (one buyer, two sellers) about FE International ([https://feinternational.com/](https://feinternational.com/)) though I've never used them personally.</comment>


Ethics for powerful algorithms - <AUTHOR> https://medium.com/@AbeGong/ethics-for-powerful-algorithms-1-of-3-a060054efd84#.68mxorqb9 <comment><USER2> Teaser: Powerful algorithms can be harmful and unfair, even when they're unbiased in a strictly technical sense.

Also, predictive analytics for prisons.</comment>


Fred Wilson's thoughts on Foursquare's $20M Series B - <AUTHOR> http://www.avc.com/a_vc/2010/06/some-thoughts-on-foursquare.html

<comment><USER2> Most interesting bit to me:

"The conversations with potential acquirers [...] allowed the founders to develop close working relationships with some of the most important Internet companies who can not only be acquirers but also distribution partners and monetization partners."

</comment><comment><USER3> This is an odd post by Fred, a lot of _The Company_ and _the service, the users, the team, and the shareholders (in that order)_ quite unlike his usual free-flowing writing style.

</comment><comment><USER4> tlwr; Four Square is a feature of a cell phone network and that is where it will go. No cell phone company is going to pay whatever the investors now expect if it can rebuild the feature for 10% of that and instantly have more than 1.8M eyeballs.

The fact that I don't know anyone who would pay for FourSquare is irrelevant when considering its greatest value is as an advertising mechanism for a cell phone provider. If ATT can say, "We have foursquare" it'll do better for ATT than I suspect FourSquare will ever generate in revenue on its own.

It would be big if Sprint can say, "We're hip, we have FourSquare and Verizon doesn't." That will get Sprint business, but will Joe Company advertise on FourSquare even with 1.8 million users? Will Joe FS User pay for Four Square? Probably not. The vast majority won't -- ever -- Even with 10 M users. Four Square doesn't provide _that_ kind of value. It provides the Facebook kind of value, which is to advertisers -- not the consumer.

Foursquare is a value in that it helps people connect. But connecting with people is like disposable income. If one option for spending disposable income goes away, the disposable income goes somewhere else. Similarly, foursquare users will go somewhere else to connect if there is another option or foursquare costs too much or anything at all probably. I don't even know if foursquare costs money I don't know anything about foursquare really.

What's the point? The point is, FourSquare is a feature. It's a feature of a cell phone that lets people connect. How much does that feature cost for a cell phone company to build? Does it cost $20M? Does it cost the valuation of FourSquare with a $20M investment? Probably not? I easily believe that Sprint or ATT or verizon could build FourSquare with $20M.

This is why investing $20M in companies like FourSquare is not a wise investment. It's not a rational investment.

The second reason it is not rational is this: FourSquare's competition for a buyout is not FourSquare clones, it is _any_ network with 1.8 Million eyeballs. There are tons of those and many that are much more niche and easier to target and understand.

This $20M investment has just raised FourSquare's valuation so unrealistically high that it will be difficult for them to find someone they can convince to waste enough money on it to get a return on their investment. Even with $20M, the best FourSquare can do is get more eyeballs and they're going to have to get enough more eyeballs to make themselves, as an advertising mechanism, more valuable than all the other advertising mechanisms that have just as many eyeballs, but without the unrealistic expectation on behalf of investors that they need to get a certain return.

Many companies with many more eyeballs exist as advertising media with way lower valuations and way more potential as a rational advertising expenditure from a company that may consider acquiring FourSquare.

<comment><USER5> As you say yourself 'I don't even know if foursquare costs money I don't know anything about foursquare really'.

You sure write alot for somebody who doesn't know anything about the service. I don't 'use' foursquare either, but I've tried it and know what it's about.

A single network wouldn't be successful in building a foursquare competitor, as not all of your social contacts are on the same network.

Part of the value of FourSquare in the long term is to be introduced to new places (likely around the world) where your social network has checked in and found value. A great restaurant, coffee shop, attraction, etc.

In addition, there is the game element, which apparently people find fun, but how much fun is a game you can only play with people on the same network? How successful would skype have been if you could only speak to other people who already had skype? That is basically what you are proposing.

<comment><USER6> _how successful would skype have been if you could only speak to other people who already had skype?_

Isn't that how Skype got started?

</comment></comment></comment><comment><USER7> Have anybody had experience with using 4SQ from the advertising side? Does it bring real value as a marketing vehicle?

<comment><USER8> It's not very useful. Knew some people in SF that budgeted 4-digit campaigns and had no discernible sales conversions. Maybe it takes time for the network effect to make it useful? If so, few have the money or risk tolerance to try it more than once. For store owners Yelp is a reliable bet.

The inherent problem is ad money spent by retail locations don't convert to more foot traffic like a Google ad can send more eyeballs. And incentivizing people already at your store with coupons or via an iPhone app is awkward.

FourSquare is the 21st equivalent of billboards, lots of voodoo math and promises involved. And some people get a cheap thrill out of tagging up boards but in the end it's still just a tagged up billboard out on a lonely highway.

But, hey, who would be dumb enough to turn down $20 million and a shot?

<comment><USER9> A 4-digit campaign is really not that big, and billboards absolutely work for some companies. Just like TV ads, Adwords, and pieces of paper on cars.

It is far too common to think that less measurable = always bad. It's just not true.

I've never used Foursquare advertising and have no idea if it works, but there are a lot of unfounded "conclusions" here. Think about a restaurant that makes $20/customer, servers 200 customers/day and is open 30 days/month. That's 120k/month. Let's say the 4-digit campaign was $5k and had a 150% ROI, so it generated $7.5k in business. That's 6.25% of the monthly revenue, an amount I could certainly see being hard to parse out due to normal variations.

</comment></comment></comment><comment><USER10> Making major decisions for "service, the user base, the team, and the shareholders (pretty much in that order)" doesn't strike me as particularly wise.

In my experience, user loyalty is worth very little. If it suits them, users will happily go and use a competing service that copies everything you do. Caring about the users is noble but a bit misguided since the users don't care about you in the slightest. Of course, people often say "we're doing this for the users!" whether that is the primary motivation or not.

I can see not feeling ready to sell out so soon, though. Foursquare has all sorts of potential and they're well situated to go in a number of directions. For instance, the local review (yelp) direction is natural, and look at the massive valuation Google et. al have considered for Yelp.

<comment><USER10> So, people have downvoted this with no comment. My comment was not frivolous or abusive: go ahead and tell me why I'm wrong.My assertion is that citing concern about 'the service and the customers' being the major reason they didn't sell out is either false, or a bad choice.</comment></comment>


Ask HN: Have you ever had a mental block and don't know what it is? - <AUTHOR>

How do you deal with mental blocks when you don't know what it is? I am a guy that learns the social norm by reading books and watching people, so it takes time for me to understand what is going on emotionally even within myself.
I suppose when you find whatever your mental block is, then you can have a plan to deal with it.
Would unravelling something like this possible by our own self? After all, its possible that we tend to smart ourselves and having coach can help the situation better. <comment><USER2> I coach lots of people. My experience is most problems are unexperienced emotion (simplified). Try to see what you aren't willing to feel in your body. In our culture men in particular aren't taught to value their interior experience, and it leads to all sorts of issues.

Anthony @ 175g . Com if you want to discuss in detail.

<comment><AUTHOR> Thanks for the time you are willing to spend with me to talk about the issue Anthony!

Its been helpful and I've got some actionable items on my hands and a plan on how to conquer this.

Thanks again! I'll post it here in a month for any progress so far.

<comment><USER2> Good luck. Let me know how it goes.</comment></comment></comment>


Uber Raises $1.2B, Putting Its Value at $40B - <AUTHOR> http://dealbook.nytimes.com//2014/12/04/uber-files-to-sell-1-8-billion-in-new-shares/

<comment><USER2> It's one the best experiences I have had where technology and service has been beautifully integrated. Uber needs to probably hire a PR service and restore some lost image. it's a great app.</comment>