Concurrency in Rust - <AUTHOR> http://doc.rust-lang.org/book/concurrency.html <comment><USER2> Send + Sync are great. The downside of concurrency in Rust is:

1) There isn't transparent integration with IO in the runtime as in Go or Haskell. Rust probably won't ever do this because although such a model scales well in general, it does create overhead and a runtime.

2) OS threads are difficult to work with compared to a nice M:N threading abstraction (which again are the default in Go or Haskell). OS threads leads to lowest common denominator APIs (there is no way to kill a thread in Rust) and some difficulty in reasoning about performance implications. I am attempting to solve this aspect by using the mioco library, although due to point #1 IO is going to be a little awkward.

<comment><USER3> There's no way to kill goroutines either. In fact, are there any systems that allow you to cleanly kill threads?

<comment><USER4> Yes.

In Erlang:

        exit(kill).

or exit(Pid,kill).

Will kill a process. It has an isolated heap, so it won't affect other (possibly hundreds of thousands of) running processes. That memory will be garbage collected, safely and efficiently.

This will also work in Elixir, LFE and other languages running on the BEAM VM platform.

EDIT: masklinn user below pointed out correctly, the example is exit/2, that is exit(Pid,kill). In fact it is just exit(Pid, Reason), where Reason can be other exit reason, like say my_socket_failed. However in that case the process could catch it and handle that signal instead of being un-conditionally killed.

<comment><USER5> This is called from within a threads execution, right? I think the question is about being able to kill a thread externally.

Java had this in 1.0 or 1.1 and then thought better of it and deprecated the API.

<comment><USER4> It works correctly either way -- externally with exit(Pid,kill) or by the process itself as exit(kill). The last one is just a shorthand for exit(self(), kill). Where self() is the process id of the currently running process.

<comment><USER6> > It works correctly either way

But the way you showed was not one in which anyone was interested, synchronous exceptions work in more or less every language, and you can't assume readers know your self-killing is actually implemented via asynchronous exceptions since they don't know the language.

</comment></comment></comment></comment></comment></comment><comment><USER7> For a more in-depth explanation of how Send and Sync work theoretically, see [http://manishearth.github.io/blog/2015/05/30/how-rust- achiev...](http://manishearth.github.io/blog/2015/05/30/how-rust-achieves- thread-safety/) or [http://huonw.github.io/blog/2015/02/some-notes-on-send- and-s...](http://huonw.github.io/blog/2015/02/some-notes-on-send-and-sync/)

</comment><comment><USER8> I think Steve Klabnik could clarify this, but the book at that link is in the process of being rewritten. I think it might be good to wait until it is. I personally found it slightly difficult to follow compared to other options like the soon to be published Programming Rust.

<comment><USER9> I am in the middle of working on a second draft of the book. This page is one of the oldest bits of docs, overall, and isn't my best work. It's not _wrong_, I just have very high personal standards. It was adapted from older documentation and was written in the time up to 1.0, where I had a LOT on my plate.

<comment><USER10> It certainly is _confusing_ if not _wrong_. You silently add "move" to the closure without any mention or explanation (then later say "note that we're copying i" without explaining that you're talking about the "move" keyword).

The bit about Mutex also has a "just type this to fix the problem with no explanation of how or why it works" flavour (although I guess if you already grok mutexes then its use here might be obvious to you).

Not a criticism of the tutorial, but it does something common in Rust tutorials which is really a problem with the language at this point: Rust tutorials always spend a lot of time interpreting Rust's notoriously poor error messages (e.g. "what this message that doesn't mention Sync is trying to tell you is that you need Sync on this type"). That's great when you're doing the tutorial, but as soon as you're on your own man are those errors frustrating.

<comment><USER7> > Rust's notoriously poor error messages

I've actually heard the opposite feedback; Rust's error messages try to be super helpful.

Note that concepts like ownership and Sync are new to most programmers, and it's impossible to explain them in an error message. This is where the extended error messages (via --explain) and the book come in.

The tutorial has this style because Rust espouses catching things at compile time, so the tutorial _demonstrates_ this being done by doing the wrong thing a few times and reiterating why it gave an error.

\----

Could you give examples of confusing error messages? I'd love to improve them. The one you mention .... doesn't exist. This ([http://is.gd/keukPm](http://is.gd/keukPm)) is what that error message looks like, and (a) it mentions Sync, (b) it also mentions that `Arc<bool>` cannot be shared between threads safely.

If you were referring to "So, we need some type that lets us have more than one reference to a value and that we can share between threads, that is it must implement Sync." from the book, the last part about Sync has nothing to do with that error message. If you follow the book, the error message is clear without the context of threads -- `data` was moved into the first spawn() call and the subsequent ones can't use it. One does not conclude that Sync is necessary from this error message, and that's not what the book is trying to say.

This sentence is actually skipping a step, one like [http://is.gd/RPNOm4](http://is.gd/RPNOm4), where the compiler asks you for a Send type (or a Sync type, depending on the exact code). Instead of stepping through this example, it just introduces Sync directly by noting that we're dealing with threads anyway and the reader already knows what Sync/Send are. It doesn't _conclude_ that Sync is necessary from the error message.

> The bit about Mutex also has a "just type this to fix the problem with no > explanation of how or why it works" flavour (although I guess if you already > grok mutexes then its use here might be obvious to you).

The previous sentence says "for example a type that can ensure only one thread at a time is able to mutate the value inside it at any one time.", which is exactly what a mutex does. Unless you want a lower level explanation which IMO isn't necessary. It could explain locking more though; I'll fix that.

<comment><USER11> I've found the Rust compiler to provide very useful messages. That said, it does take a certain amount of experience in the language before you grok the terminology and appropriate remedies to overcome some compiler errors. As a beginner, I'd typically open about 5-10 different documentation, blog post, SO and tutorial pages to try to figure out what I was doing wrong. Once I understood the underlying concept, I could go back and understand what the compiler message was telling me, as plain as day. After awhile, I had a strong enough understanding of the borrow checker that I could usually interpret the compiler error messages in a pretty straightforward fashion. But it takes time if you're coming from a non C/C++ language!

If you're learning Rust, I would recommend tracing back every compiler error you encounter to this page [1] to see some other examples and resolutions (if the compiler's suggestions don't make it clear as to what to do). It's the most underrated page in the entire Rust documentation set, and could be the launch point for a lot of teaching and learning. Read the book to start, certainly (and the revisions Steve Klabnik has been making are very, very good), but that error index page is very valuable for the day to day issues.

Rust rewards gumption [2] and perseverance.

[1] [https://doc.rust-lang.org/error-index.html](https://doc.rust- lang.org/error-index.html) [2] [https://en.wikipedia.org/wiki/Gumption_trap](https://en.wikipedia.org/wiki/Gumption_trap)

<comment><USER7> > you encounter to this page [1]

I love the extended errors. Note that you can just use `rustc --explain <error code>` without opening a web page, but of course it won't be formatted then.

> But it takes time if you're coming from a non C/C++ language!

Ultimately there's little substitute to learning the concepts behind the language :) Error-driven-development is fun, and quite useful once you know the language, but if used as the only way to learn the language it can be problematic. That said, I enjoy using errors to explain Rust concepts -- as long as you _explain_ them. If a new user is hit with a steaming pile of errors you can't really expect them to understand it directly.

I have talked with a lot of folks coming from a non-systemsy background, and sort of have an idea of the things that get confusing (I once had similar problems when learning C++). I'm planning a blog post series (no ETA, pretty swamped with other work :/ ) that teaches both Rust (specifically, the safety bits like the borrow checker) and what's going on under the hood (regarding memory, the stack/heap, etc) using each as a crutch to explain the other in a leapfrog way, to introduce the language and low-level programming to folks coming from languages like JS.

</comment></comment></comment></comment></comment></comment><comment><USER12> Another thing to know about rust concurrency is that it supports safe "scoped" threads, or threads which have plain references to their parent threads stack.

This makes it very easy to write, for instance, a concurrent in-place quicksort (this example uses the scoped-pool crate, which provides a thread pool supporting scoped threads):

        extern crate scoped_pool; // scoped threads
        extern crate itertools; // generic in-place partition
        extern crate rand; // for choosing a random pivot

        use rand::Rng;
        use scoped_pool::{Pool, Scope};

        pub fn quicksort<T: Send + Sync + Ord>(pool: &Pool, data: &mut [T]) {
            pool.scoped(move |scoped| do_quicksort(scoped, data))
        }

        fn do_quicksort<'a, T: Send + Sync + Ord>(scope: &Scope<'a>, data: &'a mut [T]) {
            scope.recurse(move |scope| {
                if data.len() > 1 {
                    // Choose a random pivot.
                    let mut rng = rand::thread_rng();
                    let len = data.len();
                    let pivot_index = rng.gen_range(0, len); // Choose a random pivot

                    // Swap the pivot to the end.
                    data.swap(pivot_index, len - 1);

                    let split = {
                        // Retrieve the pivot.
                        let mut iter = data.into_iter();
                        let pivot = iter.next_back().unwrap();

                        // In-place partition the array.
                        itertools::partition(iter, |val| &*val <= &pivot)
                    };

                    // Swap the pivot back in at the split point by putting
                    // the element currently there are at the end of the slice.
                    data.swap(split, len - 1);

                    // Sort both halves (in-place!).
                    let (left, right) = data.split_at_mut(split);
                    do_quicksort(scope, left);
                    do_quicksort(scope, &mut right[1..]);
                }
            })
        }

In this example, quicksort will block until the array is fully sorted, then return.

</comment><comment><USER13> Reading all this is making me happy about pursuing Elixir (which is of course a language addressing largely different use-cases)

</comment><comment><USER14> I'm having a tough time trying to understand this snippet

        for i in 0..3 {
            thread::spawn(move || {
                data[i] += 1;
            });
        }

What is the 'move' thing here before the ||

<comment><USER15> So, for those who may know JavaScript, you may have seen code like this:

      var closures = [];
      for (var i=0;i<5;i++) {
          closures.push(function() {
              console.log(i);
          });
      }

The code above will result in incorrect results: 5, 5, 5, 5, 5. Because you're capturing `i` as a reference.

To avoid this, JS devs typically do this:

      closures.push((function(i) {
          return function() {
              console.log(i);
          };
      })(i));

Or, if you can afford the ES6 support:

      for (let i=0;i<5;i++) {
          /* `let`-scoped `i`s are created individually at each iteration, so it is safe to capture them by references. */
      }

Rust supports this pattern by a built-in syntax. That's what `move` means. If you prepend the `move` keyword before the closure, the variables will be captured by values, not references.

<comment><USER16> Thanks for the explanation, but how would the move keyword know that you're referring to the i variable? Ie - what is there were multiple variables (such as a for loop with j in there)?

Wouldn't it have been a better approach to add some sort of demarkation, such as i* or i^ (or whatever) to indicate this?

Just curious.

<comment><USER6> > Wouldn't it have been a better approach to add some sort of demarkation, > such as i* or i^ (or whatever) to indicate this?

That's the path C++ took[0], the Rust people thought it had too much syntactic and semantic overhead, and that having just "move" and "referring" closures would be much simpler. If you want to mix them up, it's easy enough to create references outside the closure (and capture them by value with a move closure)

[0] [http://en.cppreference.com/w/cpp/language/lambda#Lambda_capt...](http://en.cppreference.com/w/cpp/language/lambda#Lambda_capture)

<comment><USER9> There was a really good thread on this on /r/urust: [https://www.reddit.com/r/rust/comments/46w4g4/what_is_rusts_...](https://www.reddit.com/r/rust/comments/46w4g4/what_is_rusts_lambda_syntax_and_design_rationale/)

In particular, don't miss this post: [https://www.reddit.com/r/rust/comments/46w4g4/what_is_rusts_...](https://www.reddit.com/r/rust/comments/46w4g4/what_is_rusts_lambda_syntax_and_design_rationale/d08hee0)

</comment></comment></comment></comment></comment><comment><USER17> Does Rust have a way to work with SIMD concurrency as opposed to just fork/join concurrency? Something along the lines of how openmp or cilk let you do a parallel for all?

<comment><USER18> You seem to have concurrency confused with parallelism. Concurrency just means working on another task before the prior one has completed. You're describing parallelism which is doing multiple tasks at the same time.

<comment><USER19> Parallelism necessarily implies concurrency [1]

So, "SIMD concurrency" is not incorrect (although SIMD parallelism is more correct :)

1: [http://programmers.stackexchange.com/a/155110](http://programmers.stackexchange.com/a/155110)

<comment><USER20> This not true. CPUs have instruction parallelism, even on a single CPU, but there is no observable concurrency.

SIMD is data-level parallelism, not concurrency.

</comment></comment></comment></comment><comment><USER21> This looks terribly overcomplicated/overengineered to me, to the point where I doubt many are going to adopt/switch to this style, esp when used to more convenient approaches [even the standard C++ approach, faulty as it may be].

Also note how much boilerplate one has to write and how the code snippets bypass error handling (do it differently in "real" code but don't show us how). Bleh.

<comment><USER5> Try it before you mock it.

This prevents boiler plate issues, and allows the compiler to help you discover threading issues at compile time rather than runtime.

It's easy enough to just mark all you structs send+sync and still shoot your foot off just like in any language. The point is, you need to be explicit that your trying to shoot your foot off, as opposed to other languages which basically pull the trigger for you.

</comment></comment><comment><USER22> Can someone enlighten me as to why the first snippet has a data race? Won't the resulting array become [2,3,4]?

        let mut data = vec![1, 2, 3];

        for i in 0..3 {
            thread::spawn(move || {
                data[i] += 1;
            });
        }

<comment><USER7> That's a mistake, clarified: [https://github.com/rust- lang/rust/pull/32538](https://github.com/rust-lang/rust/pull/32538)

</comment></comment><comment><USER23> What about the assumption (fatally flawed decision?) that malloc never fails when rust asks? Sounds like something that could affect concurrency

<comment><USER7> A failed malloc aborts the process. If this is important to you, don't use the heap abstractions in the stdlib then. This is no different from the situation in C++.

(You can also plug in a custom allocator which behaves differently)

<comment><USER24> On Linux malloc never fails actually. Instead, the kernel kills processes if it runs out of memory.

<comment><USER7> A lot of folks are pointing out that malloc can fail, which is true, but the important part is that there are situations where your application will just abort randomly in the middle of nowhere (i.e. not during malloc) and there's nothing you can do about it. There are _also_ situations where malloc fails and returns a null, but given the existence of situations with no errors on a malloc, handling the error in these cases isn't close to a solution. No language or stdlib can solve this problem 100%.

At a baremetal level, it helps having this, but you're probably better off not using the stdlib anyway.

<comment><USER25> Bullshit. Every part of the C++ standard library (which is _much_ bigger than Rust's) can gracefully propagate resource exhaustion errors, including memory allocation failure, to callers. That Rust can't is a design flaw.

> there are situations where your application will just abort randomly

That's sure as hell not the case in any environment I choose to use.

<comment><USER7> > can gracefully propagate resource exhaustion errors, including memory > allocation failure, to callers

only on malloc. If the kernel overcommits, your process will abort when you try to _use_ the memory, possibly way after the malloc and there's nothing you can do about it. That's the point being made here.

> That Rust can't is a design flaw.

(This is false, see Steve's reply above about this)

<comment><USER25> The world is not Linux. I happen to believe that believe that overcommit in the Linux kernel is a disgrace. It is, however, at least possible to disable it. It's not possible to retroactively add real exceptions to Rust, or to change the signature of all memory-allocation function to return Result.

Rust is supposed to be a general-purpose systems programming language, not a Linux programming language. Windows does not overcommit. A correctly configured Linux system does not overcommit. Lost of embedded systems don't (and can't) overcommit. Are you saying all of these people should avoid Rust's standard library?

> > That Rust can't is a design flaw.

> (This is false, see Steve's reply above about this)

It's clear that my opinion differs from that of many Rust developers and users. I still think I'm correct, that these developers and users are misguided, and that as Rust attempts to fill more niches, experience will show that my position is the correct one.

All I can say is that I personally will not use any language that bakes cornucopian assumptions about memory baked into its core library. I know that you say that it's possible to just avoid stdlib --- but the temptation to use it will be irresistible, and once somebody succumbs to the temptation, the entire program is now capable of aborting irrecoverably.

I will stick with languages . Modern C++ is safe and expressive enough, and it correctly reacts to resource exhaustion.

<comment><USER7> > The world is not Linux.

Sure, but if linux has this issue, then C++ programs on linux will also have this issue, and the language can't solve that. That's all my point was.

> or to change the signature of all memory-allocation function to return > Result.

When custom allocators part 2 happens, you can. I've already argued the "real exceptions" part above.

> Rust is supposed to be a general-purpose systems programming language, not a > Linux programming language. Windows does not overcommit. A correctly > configured Linux system does not overcommit. Lost of embedded systems don't > (and can't) overcommit. Are you saying all of these people should avoid > Rust's standard library?

No. My point was simply that no language has a _complete_ solution to this problem.

Most people don't need to worry about OOM; abort-on-OOM is the expected behavior. For the people who do, there is a mechanism to handle it, as explained above. I can't help it if you have an idealogical issue with that mechanism. But ultimately, it works and can be used.

<comment><USER25> > Sure, but if linux has this issue, then C++ programs on linux will also have > this issue

Why even bring Linux into the discussion? A Rust program running on Windows has the same problem.

> No. My point was simply that no language has a complete solution to this > problem.

A correct C++ program running on Windows will not spuriously abort. Neither will a C++ program running on a Linux system configured not to overcommit. That some Linux systems can be configured to kill processes at arbitrary times is not an excuse for Rust to be sloppy with memory allocation.

C++ and many other languages _do_ , in fact, have _complete_ solutions to this issue, and that Rust does not is a serious deficiency, one serious enough to prompt me to prefer other languages despite Rust's other advantages.

<comment><USER26> ...and the same is true of Rust, just with different defaults. Switch allocation failure from an abort to a panic and catch the panic just like you would in C++.

What's incomplete about that? It's not like C++ can't be switched in the other direction with -fno-exceptions or equivalent.

<comment><USER25> -fno-exceptions is not part of C++. C++ is not whatever GCC and Clang happen to accept.</comment></comment></comment></comment></comment></comment></comment></comment></comment></comment></comment>


This app tells you if your local McDonald's ice cream machine is down - <AUTHOR> https://www.theverge.com/platform/amp/tldr/2017/11/9/16631320/ice-check-mcflurry-mcdonalds-machine-broken <comment><USER2> TL;DR: based on user reports. nothing special or interesting. I regret reading this.</comment>


Julian Assange Will Finally Get His Day in Court–In the Ecuadorean Embassy - <AUTHOR> http://www.wired.com/2015/12/julian-assange-will-finally-get-his-day-in-court-in-the-ecuadorean-embassy/ <comment><USER2> None of the articles about that agreement actually tells us what the agreement is.

Has Ecuador agreed to kick Assange out if Sweden formally charges him? If not where is Sweden's incentive to play ball and take part in a charade?

(My gut feeling is that after the interview Sweden will drop the case, and Assange has wasted years in the embassy for nothing at all)</comment>


Ask HN: How can I increase sales with google analytics?  - <AUTHOR>

I am looking for advice while setting up my analytics account with google.  Is there any goid posts or advice setting it up for the first time? <comment><USER2> Google Analytics isn't really about increasing sales, that is sort of like asking "how do I increase my MPG with a fuel guage?".

GA can be used to measure various data points on the traffic coming to your site. Where visitors are coming from/being referred from, what search terms are being used to find your site and so on. You can use this data to do calculated A/B tests, target your marketing efforts, track the effectiveness of campaigns and so on.

But, without know what you sell, how you sell it, or who you compete with, it's kind of hard to give much good advice here.

I _think_ what you're asking may be more along the lines of learning about SEO, landing pages, and conversion rates.

</comment><comment><USER3> Google Avinash Kaushik. Watch his YouTube videos, read his blog, etc.

From personal experience, I really enjoy using event tracking within Google Analytics to understand how users are interacting with my site.</comment>


Microsoft, Past and Future - <AUTHOR> http://daringfireball.net/2014/02/microsoft_past_and_future <comment><USER2> What I find surprising is that, in the process of writing a historical review on Microsoft, anyone would ignore the fact that MS has repeatedly identified areas of profit, moved in, failed spectacularly, iterated aggressively, and ultimately become dominant, at least for a time. e.g. What killed Netscape?

Microsoft's surface tablets are signs of big things to come. They're currently too expensive for what they are, but they could find a huge niche. They're portable tablets meant for content creation, not mere consumption. If you want a tablet that will let you draw, take notes, etc. as easily as on paper, iPads aren't even close to the current Surface. The surface pro would have been _exactly_ what I wanted in undergrad physics for a lecture-hall machine. Many artists probably feel the same way now.

Tablets have long been too underpowered to tackle real creative tasks. The surface proves that the hardware has changed, although the cost is still high. I expect the next few generations of surfaces to get cheaper and more refined rapidly. People who love tablets are soon going to want something more than a glorified phone, and the Surface is going to be the go-to option.

Yeah, so MS might dominate the content-creation/student/artist tablet niche. Big whoop. Well, success in any consumer hardware niche might do for MS what it did for Apple. Namely, make them a huge pile of cash and jump-start their supply-chain so they can move into other areas. It might not play out this way. Apple has been looking for ways to make the iPad more content-creation friendly beyond just marketing them as such. Still, iOS on an iPad is a _huge_ step behind Win8 on a Surface pro for creative tasks right _now_. All MS has to do is keep iterating the Surface and avoid another Vista-style PR blunder with Win9.

<comment><USER3> Which problems do Surface tablets solve?

For example, iPhone completely changed my life overnight, mostly due to its navigation features and ability to look up phone numbers.

I think Surface will only be dominant if it solves a problem for people. So, which problem does it solve, and why is it useful for people?

<comment><USER4> Contractor problems. I have a second hand Surface Pro. Its much lighter than a laptop, but more powerful than the laptop I had before. It runs Visual Studio, Eclipse and all the other tools I need very well. When I'm at a client site or at home I can use the USB port to dock into monitor, keyboard and ethernet. When I'm in meetings I make notes with the pen. When I'm in between on the train I can use it in tablet mode or mini-laptop mode.

I figure that in a few years I'll be able to do all of that on a smaller 8" form factor - even better.

<comment><USER5> I've done a bit of development on a 7" tablet and it's kind of painful, even if you're using "just" a text editor (or an IDE like Eclipse with most of the chrome hidden).

At some point you start hitting some physical limits of the human body. At 7" or 8" you can't have a full-size physical keyboard and there are only so many lines of code you can fit onto the screen, and so forth.

Personally (and I do mean this is personal preference and not the One Right Solution For Everybody) carrying around a 3-5lb notebook isn't a big deal because I'm already going to be carrying pen, paper, a few medications, and a charger or two. Even if my main computing device weighed zero pounds I'd still be carrying a small bag.

<comment><USER4> That's why I dock it via USB

</comment></comment></comment></comment></comment><comment><USER6> > The world is in need of high-quality, reliable, developer-friendly, > trustworthy, privacy-guarding cloud computing platforms.

That's the thing for me: That doesn't work anymore. _Privacy-Guarding_ destroys that. Normally, I would fully agree that this is a good vision for Microsoft, continuing to be on the Desktop (especially corporate), trying to be on other markets and failing mostly, but becoming a big cloud player. But for me, the cloud is dead, and the NSA killed it - I try not to use it if it is not really helpful and without obvious privacy issues (like [http://rsspusher.eu01.aws.af.cm/](http://rsspusher.eu01.aws.af.cm/), appfrog was fine for that, I still think that even if it predates that thought). And I know I'm not alone with that attitude.

Maybe that doesn't mean that the cloud is dead, rather that there is a minority for which it is. I'm not sure how to predict the influence of the surveillance on the techological future. But what it means for sure is that for me and a few other guys, a Microsoft being a big cloud player would be as dead as it was before. We will see whether that matters.

<comment><USER7> What about recycling the "private cloud" into something actually useful?

Microsoft has amazing expertise into taking any computer a 3rd party provides and making it work with their software. What about providing "cloud services" that can be guaranteed to never exit your own corporate firewall? I imagine this is going to be a huge need in the near future. I wouldn't be the least bit surprised if it were a standard EU regular within 5 years.

This seems like an amazingly huge opportunity they could capitalize on. Become the standard software cloud solution of all software the way they they own email in the enterprise with exchange. Plenty of companies are large enough to own their own racks of virtualized servers and would pay good money to run well integrated Microsoft software on them.

<comment><USER8> I think you might be straining the terminology just a bit by referring to cloud services installed _inside_ a corporate firewall. What would make that different from traditional internally deployed applications like SharePoint?

"Plenty of companies are large enough to own their own racks of virtualized servers and would pay good money to run well integrated Microsoft software on them."

They already do - that's where a significant proportion of Microsoft's revenue comes from.

<comment><USER7> You're right. I was purposely straining the term.

What I'm saying is that CIOs of pretty much every medium to largish company needs to justify their salary to the other C*s.

If he can justify it in terms of cost savings he justifies his salary. Right now, big companies either buy appliances (at huge cost and medium support cost) or build their own networks at small (or maybe huge) cost and huge support cost.

And what I really mean by "cloud" is the fact that pretty much any CIO will call a rack of servers with any virtualization vendors' software running on the bunch of them as the cloud. And honestly it's not wrong. If your company's culture is built right whether your "cloud" is "private" or otherwise shouldn't matter.

If Microsoft can turn the enterprise into the desktop, every enterprise on our software as a new goal. Which mean abandoning huge margins, they could make huge dents into SAP, CGI, IBM, Accenture and all these huge terrible enterprise software vendors. All of them combined are a huge opportunity for Microsoft to steal all market share from and honestly I think Microsoft could definitely pull their 90s tactics and be successful.

<comment><USER8> "any CIO will call a rack of servers with any virtualization vendors' software running on the bunch of them as the cloud"

Not if they are responsible for the CapEx, administration, upgrades, data center space etc.

I would state that the defining characteristic of "cloud computing" as far as senior managers go is that these things are all _someone else 's problem_ and all you are left with is a predictable monthly/yearly fee, application support and making sure your users have a decent internet connection.

</comment></comment></comment></comment></comment><comment><USER9> This piece seems pretty spot-on all around. That said, I don't know anything about Mr. Nadella, but I have spent a significant chunk of time trying to use the Bing API from the Azure market, as well as competing products from Yahoo and Google. I found the Microsoft API to be _significantly_ behind both competitors in features, performance, documentation, terms of use, and price. Even with Yahoo BOSS using Bing's index, it manages to offer significantly better search features, a lower price, and less restrictive terms. (You can't use the _paid_ Bing search API if you run any ads other than the Bing network!) And neither one holds a candle to Google in most cases.

Anyway, but experience with Azure was deep rather than broad, but it was enough to give me a strong belief that if this represents the great hope for Microsoft's future, things aren't looking so bright.

<comment><USER10> I think it is spot-on right up to the conclusion, which I disagree with.

> The next ubiquity isn't running on every device, it's talking to every > device.

I don't see how Gruber can come to this conclusion unless he has suddenly changed position and thinks the open web will eventually win out over native apps.

The problem, of course, is that for a company that wants to be Microsofts size, they _need_ to own the platform, because the platform owners have an incentive to limit their dependence on you and make sure that their cloud services work better on their platform. iMessage and Hangouts? Integrated. Skype? Not so.

The only way to "own" the platform owners is to have an essential, popular product that customers demand. As much as Microsoft would want to, they don't have such a product (perhaps Office in the business market, but that's about it).

Edit: Wanted to add "How Microsoft Lost the API war" which is another interesting take on the platform thing and how Microsoft lost it: [http://www.joelonsoftware.com/articles/APIWar.html](http://www.joelonsoftware.com/articles/APIWar.html)

<comment><USER11> > I don't see how Gruber can come to this conclusion unless he has suddenly > changed position and thinks the open web will eventually win out over native > apps.

How does his statement have anything to do with 'open web' vs. native apps? How many native apps do you use that have no 'cloud' component whatsoever?

Gruber isn't talking about Microsoft making a bunch of web applications, he's talking about them becoming a key player in the data services arena, i.e. offering a platform for providing data to both web applications and native applications alike.

<comment><USER10> I know he's not talking about web apps. But how is Microsoft going to be a dominant player providing services to apps running on platforms that are controlled by others?

Both Apple and Google want to control their own cloud platform, and they can make sure that their cloud solution is better integrated than Microsofts offerings on their own platforms. And at least Google knows how to do this kind of thing really, really well.

So my point is, unless one expects platforms / operating systems to overall become irrelevant (which some web proponents believe), I can't see how he can draw this conclusion in earnest. It's exactly the same argument he's criticized others for making time and time again with Apple, the only difference being that "Apple should give up their operating system, bundle Windows and only focus on hardware". Of course it's obvious today why that would have been a terrible idea.

</comment></comment></comment></comment><comment><USER12> Apple won by not fighting the last war. If Microsoft wants to stay relevant, they need to do the same. What's next? The smartphone, tablet, and cloud services ships have left port and are pretty far out on the horizon. Can Microsoft see what is around the corner the other guys cannot? They are, for the first time since they were founded, the underdog. They have a stellar research group whose output they seem to rarely take advantage of. It's time to get some stuff out of the lab and take some risks. The Kinect shows me the mojo is there -- and it was almost certainly Ballmer's narrow-mindedness that has prevented Microsoft from taking enough risks. I hope now that they have a technical visionary at the helm we'll really see them shake things up, and this is coming from someone who has loathed Microsoft products for quite some time now.

</comment><comment><USER13> Microsoft's malaise is part real, and part illusion:

The illusion part is mostly obvious. Microsoft makes oceans of money. Heck of a malaise, right?

The real part of the malaise stems from Microsoft not being objective about itself. For example, Microsoft could easily make vastly more money if they looked at Windows as a legacy product and raised prices on the people who really need Windows.

Looking at Windows as a Product of the Future means they won't actually ship any Products of the Future, because that might contradict the dogma. That's a real malaise. That's what keeps the great ideas of the very smart people at Microsoft funneled through Windows product management. The new products that get through are mostly reactive, like IE, MSN, Bing Search, Bing Maps, etc.

The malaise is even more basic than "Should Microsoft be a consumer and enterprise business?" Dividing Microsoft that way would probably help, but fail to see the underlying cause, and that would leave the consumer part vulnerable to a continuation of what ails it now.

</comment><comment><USER14> > No company today has reach or influence anything like what Microsoft had > during the golden era of the PC. Not Apple, not Google, and not Microsoft > itself.

I think Google is pretty close, really. They obviously don't have an operating system for laptops or desktops that everyone uses, but using a computer without Google products is something that people just don't really do anymore. iOS, Android, OSX, Windows, Ubuntu, etc. no matter what you're probably using something Google wrote on it.

Which is really a very old-school Microsoft strategy brought up to date to the early 21st century. Google recognized that the OS doesn't matter anymore and Microsoft continued to believe it was everything.

<comment><USER15> _using a computer without Google products is something that people just don 't really do anymore_

This is rather naive. In certain circles yes but by far the majority of people use just their search.

<comment><USER14> Is there some particular reason to exclude that? Because most of those people who 'just' use their search use their search a lot.

<comment><USER16> People use Google-search because it's the default in all browsers.

That's why Google is still paying Mozilla money to make it the default in Firefox and it's why Google made Android and Chrome to be able to control what web-services people use by default, also on their mobile devices.

If the defaults switch from Google, most people wont notice. If you have any doubts about that, observe all people which has their search hijacked by malware.

Their search page has been diverted to a scummy non-Google page and nobody notices that anything is wrong.

Google definitely has a strong hold on the web, but they're a lot more fragile than you think.

<comment><USER14> And most people used Windows in the late 90s/early 2000s because Microsoft effectively paid every single OEM to do so and locked them in to restrictive covenants against shipping anything else. For the purposes of comparison it doesn't really matter _why_ everyone uses their products, all that matters is that they do.

I'm not really sure on what you're judging my thoughts on their fragility. I made a pretty simple claim, that the vast majority of people use something Google made regardless of who made their OS. Could someone topple them out of that? Of course. Just like someone toppled Microsoft and IBM before them. It will cost a boatload of money, but someone will eventually do it.

I just don't see how an arbitrary exclusion refutes the claim, or what relevance it has to the price of rice in china. It'd be like saying "Not everyone uses a Microsoft product every day because Windows doesn't count" in 1999. Well... ok then.

</comment></comment></comment></comment></comment><comment><USER17>
       Steve Fucking Jobs said that (the desktop PC was dead and
       innovation had virtually ceased). He was exactly right.
       And who knows where we'd be today if Jobs and Next had not
       been reunified with Apple the next year.

As a Windows user, I suspect I'd be about where I am today, except that I wouldn't have to install ClassicShell to get rid of Metro.

<comment><USER18> You don't think the success of the Mac over the last 10 years has pushed Windows to become better than it would have been?

<comment><USER17> Honestly, no, not really. I can't think of any features from the Mac that Windows copied, that I personally benefit from.

However, Microsoft under Ballmer thrashed around trying to copy other things from Apple, things that did not belong on a desktop PC, and made life more annoying for a great many Windows users as a result. Like another poster above suggested, another five years of that approach would have brought Microsoft down to the lowest level Apple ever reached.

</comment></comment></comment><comment><USER19> I think this is an interesting contrast with PG's "Microsoft is Dead (2006)," because it points to a _reason_ why Microsoft lost their hunger and dominance: they had no driving company goal after they got to "a computer in every home (running Microsoft software)." Both read true to me, as a 20-something who never really appreciated Microsoft during its dominance. By the time I got to high school, Apple had already switched to Intel, and I purchased the first iPhone for $600 in 10th grade. I've never used Outlook, and I don't think I ever will.

<comment><USER20> It's going to take a hell of a lot from MS in order to have someone like me buy back in.

I'll present one of the other perspectives.

I was all-Microsoft, from MS DOS up through Windows Server 2003. Late 90s MCSE, nothing but MS. Most of my time was spent building and maintaining NT4.0 installations and then migrating to 2000.

I got tired of keeping pace with the amount of changes in all of the services somewhere between Server 2003 and Server 2008 and have since jumped ship.

Now I use entirely open source software and a mix of AWS instances and dedicated servers in various parts of the country for heavy lifting. (I work with multiple small companies rather than one large company that would benefit from the perfect AWS deployment.) This is after having spent time and personally maintained dozens of machines in half a dozen different data centers stretching back to 1998.

It's going to take a hell of a lot.

<comment><USER15> I did the opposite. I was a Unix/netware guy for years. Netware fell off a cliff and so did commercial Unix. Left me with Linux and FreeBSD.

Whilst I rather like FreeBSD, when I have to throw an architecture together that will survive over a decade, Microsoft wins every time. They're the only company which provides certainty. RedHat are close but their support sucks.

<comment><USER21> I'm sorry but I just can't believe you're real. Red Hat has the most stable (measued in the years of support without the change in the underlying technologies) OS configurations of all commercial offerings.

What was that that you got better supported from Microsoft than from Red Hat? Specifics please.

<comment><USER15> Actually no. We get 13-14 years out of Microsoft offerings which is enough lead time for test, provisioning and an 8-10 year lifecycle. Plus due to overlap we have enough time to test v.next.

With respect to support you get a very narrow configuration of supported software and hardware with RH. Keeping it rolling isn't as easy as it looks. The developer support is awful as well. Documentation is shitty,you're tied to C++/JDK versions that are ancient etc. Also no MSDN, no partner support (which is pretty awesome). My few dealings with RedHat support have left us without a solution.

For ref - platforms: Exchange, Windows Server, IIS, SQL Server (the latter I've got an installation that has been cleanly upgraded since 1996 though TWO versions)

<comment><USER22> I hadn't thought about it but you're very correct about documentation for development. Doxygen generated pages are one thing, but the MSDN is another and it's excellent.

Well done Microsoft.

<comment><USER23> I worked with MS technologies for years at a previous job and you are right that MSDN docs are the best out there. Javadoc, doxygen, etc... all pale in comparison. Now that I mostly work with OSS technologies I usually just read the source and any comments/docs that happen to be included.

</comment></comment></comment></comment></comment></comment></comment><comment><USER24> "Microsoft services, sending data to and from every networked device in the world"

There already are servers sending data everywhere. For example the servers of Google, Facebook and Wikipedia. How would Microsoft convince those guys or new companies to get rid of their solid, free and open stack and pay for Microsofts closed stuff?

This is much different from "A computer on every desk and in every home running Microsoft software". Back then, there where no computers on desks and homes to begin with.

<comment><USER16> _How would Microsoft convince those guys or new companies to get rid of their solid, free and open stack and pay for Microsofts closed stuff?_

They don't have to. They can keep on using their free and open stack, but moving to Azure instead of using Google compute engine or AWS.

<comment><USER24> Then Microsoft would be just another provider of virtual servers. I dont think thats a good future goal for a 300 billion dollar company.

Conversely to Gruber, I see Microsofts future in client software and hardware. Apple and Google have put computers in every pocket. But only the consumption part of it. The race for the production tablet has just started. And with the Surface Pro, Microsoft has the first product out there.

<comment><USER16> Just like Amazon they are adding their own custom services to the package which is easy to consume.

This can be storage, authentication, federation, messaging, queueing, etc.

And like Amazon they are building their own services (like AD in the cloud, Xbox Live, hosted exchange, Office 365, etc) on top of this infrastructure, so like for Amazon, the infrastructure they are selling literally comes for free.

</comment></comment></comment></comment><comment><USER25> "Steve Fucking Jobs said that. He was exactly right."

Well it's good he said that, otherwise Gruber would twist himself into a knot trying to argue otherwise.

Though this is interesting

"If we include all iOS and Android devices the "computing" market in Q3 2008 was 92 million units of which Windows was 90%, whereas in Q3 2013 it was 269 million units of which Windows was 32%."

Actually doing the math, Q3 2008, Microsoft was about 83 million units. Q3 2013 Microsoft had just over 86 million units. So I guess it's still a growth? I'm sorry, revealing the actual numbers punctures Gruber's thesis. Rude of me.

I mean, nobody really conflated these categories when it was just Blackberries and video game consoles. Do I get to add Xbox units to this too?

Of course Microsoft missed the mobile boat and it's largely Ballmer's fault. That's well known and this kind of weird conflated analysis isn't insightful or interesting.

"Here's my stab at it: Microsoft services, sending data to and from every networked device in the world.

The next ubiquity isn't running on every device, it's talking to every device."

Ugh, please no. Data transmission has been hopelessly commoditized and I really don't want an Apple or a Microsoft inserting themselves into a low margin game and trying to figure out how to make it a high margin one.

<comment><USER26> > I mean, nobody really conflated these categories when it was just > Blackberries and video game consoles. Do I get to add Xbox units to this > too?

Did Xbox or Blackberry serve as direct substitutes for traditional PCs? No. Have Android and iOS phones and tablets serve as direct substitutes for traditional PCs? Yes.

<comment><USER25> > Did Xbox or Blackberry serve as direct substitutes for traditional PCs?

Yes. If you don't think a Blackberry served as an entire mobile office, almost replacing PCs for most use-cases, for millions of road warriors, then you never had one or lived through that time.

The Xbox line has replaced PCs as both a gaming platform for millions as well as a media center and emulation platform for many many others. XBMC after all means "Xbox Media Center".

</comment></comment></comment><comment><USER27> His vision of a future Microsoft sounds an awful lot like "Don't you dare compete with Apple in any area". Server backends platforms and cloud computing are the areas that Apple don't care about owning or controlling.

</comment><comment><USER28> > Here's my stab at it: Microsoft services, sending data to and from every > networked device in the world. The next ubiquity isn't running on every > device, it's talking to every device.

That sounds more like Google to me!

<comment><USER29> Microsoft can can do in the enterprise, they are entrenched pretty deep!

<comment><USER10> Microsofts enterprise business is founded on the fact that everyone runs Windows, so no, that doesn't work well in the long run (ask Novell).

<comment><USER30> or IBM

</comment></comment></comment></comment><comment><USER4> I think the Windows 8 gamble could still pay off. We're starting to see 8" tablets that run full Windows. Give it 12 months and the 8" form factor will be powerful enough to cover a lot of enterprise needs. 8" tablet + docking station is a very compelling way to get work done.

<comment><USER31> Only if your data and apps are on that device you carry about, and not in the cloud so you can access them from both at once. And they just made the cloud guy CEO so he might be thought to favour that way.

<comment><USER32> Enterprise don't have their stuff in the cloud.

<comment><USER31> Then maybe Microsoft shouldn't have promoted the guy in charge of Azure (in their own word's "Microsoft's Cloud Platform") to CEO.

</comment></comment></comment></comment><comment><USER33> What is missing in this article is any mention of Amazon and AWS. Surely that is the biggest roadblock in the way of Microsoft in the cloud?

</comment><comment><USER34> I don't see why people always compare Microsoft to Apple besides the fact that they are two of the oldest and highest-profile companies in the technology industry. This comparison always leads to them making the false claim that Microsoft "missed-out" on mobile.

Microsoft has always been a software-first company. Their strategy has always been to create the OS and license it to hardware manufacturers and capture the largest share of the market. Apple began as a hardware company that chose to pursue a strategy of building its own software so it could control the entire stack, bottom to top.

One wanted to cast a wide net with limited quality control, the other wanted to produce products of the highest quality.

But here's the thing- neither is necessarily "wrong" and you can't possibly simultaneously employ both strategies.

As of today, Microsoft has a $297 billion market cap. Enterprise software sales (read the large multibillion-dollar entities that quietly purchase billions of dollars of Microsoft products without blog entries or TechCrunch critiques) aren't going anywhere for a long time. Anybody who works in one can tell you that.

What's more is that Microsoft actually has a large and growing number of evangelists for their mobile products. The claim that _Prices come down, chips get faster. Software evolves._ cuts both ways and should apply as much to Microsoft as to Apple, especially now that the mobile device market is "mature."

<comment><USER35> I know, it is like comparing Apples and Oranges, two other similar fruits that are very comparable.

</comment></comment><comment><USER36> A computer on every desk. A computer in every pocket. A computer in every body. A computer as everybody.

<comment><USER37> A personal robot in every home running Microsoft OS?

</comment></comment><comment><USER38> > The world is in need of high-quality, reliable, developer-friendly, > trustworthy, privacy-guarding cloud computing platforms.

No, no, no, that is exactly what I do _not_ want! I want all my computing devices to work completely offline in all circumstances. I want to install programs to my local computer so Incan be shure that I still can use them if the company goes bankrupt. I want to be able to install old versions of programs in case I don't like a newer version...

In my opinion it is wrong to put applications to the cloud because then I become dependent on the provider of this service. For me the cloud should only be used for one thing: to synchronize data between my computing devices!

<comment><USER39> Personal Cloud, perhaps, will be the answer. No real vendors for that yet though. Urbit maybe but that has a year or so to go before it becomes usable.

</comment></comment><comment><USER40> I hope Nadella is adjusting strategy closer to a Google-Amazon-Microsoft hybrid; beefing up Hotmail, Office, SharePoint(?) and running them everywhere on Azure, while Windows platform fragments into Phone and Surface/Desktop.

</comment><comment><USER41> The idea that Microsoft would be "privacy-guarding" is completely laughable to me, when they have so much poorer security than even Google right now, and Google already has major privacy issues on its own. Microsoft would be one of the last company to trust with my privacy. At least when Google says they aren't giving direct access to their servers to the governments I somewhat believe them, but I wouldn't believe Microsoft at all if they said that to me. They've had too many Skype privacy blunders to trust them on this.

</comment><comment><USER42> > Here's my stab at it: Microsoft services, sending data to and from every > networked device in the world. The next ubiquity isn't running on every > device, it's talking to every device.

Yikes. If anyone can find Microsoft-sized margins and volume in that business, it will be more destructive than an OS monoculture ever was.

"Cloud" is a low-margin high-volume business, perfect for players like Amazon and Google, with little boutiquey heroku bits thrown in to vacuum up the value-add-at-any-price edge case customers.

<comment><USER43> Microsoft doesn't seem to be dreaming about Windows/Office margins with Azure:

 _That's why today we are also announcing a commitment to match Amazon Web Services prices for commodity services such as compute, storage and bandwidth_

[http://blogs.msdn.com/b/windowsazure/archive/2013/04/16/the-...](http://blogs.msdn.com/b/windowsazure/archive/2013/04/16/the- power-of-and.aspx)

</comment></comment><comment><USER44> In Canada, we have a campaign to "win" the Olympics called "Own the Podium".

I liken this to Gruber's Microsoft strategy as being "Own the pipe". Not in the literal sense of becoming an ISP or backbone, but in the networking sense of being the middleman to all communications a la Cisco. They need to figure out something with the ARM architecture and servers to really advance the next decade.

</comment><comment><USER45> Microsoft's future will be determined by its past profit margins. To maintain it's historical margins it must succeed with devices. Cloud services are a low margin business. Their online applications will never generate the profits that their packaged software has. The fact that they are losing money on every Surface they sell is not encouraging.

</comment><comment><USER46> > Here's my stab at it: Microsoft services, sending data to and from every > networked device in the world. The next ubiquity isn't running on every > device, it's talking to every device.

Funny, that seems to be what dropbox is going for with their new datastore API

</comment><comment><USER47> What a great post from Gruber. I generally don't like his posts because they are always fanboyish, but this one just nails it.

</comment><comment><USER48> This article paints a strong argument in favor of the new CEO. I think he stands a chance of pulling this off!

</comment><comment><USER49> One angle that I expected Microsoft to eventually leverage is playing to their traditional strengths -- diversity, openness, freedom (and what that meant for the platform. GPUs, storage, media -- Microsoft and the Windows platform made that evolution happen): The classic montage through the computer age sort of thing, culminating in the Microsoft platform of today. Instead they fell for the trap of cargo culting off of what Apple was doing, essentially becoming a desperate wannabe, the Microsoft store being the ultimate demonstration of how utterly self-defeating that can be.

Microsoft is still great -- even outside of raw financial might, they continue to make great software and tools (as one aside, it is quite remarkable how enormous of an impact Bill Gate's trustworthy computing manifesto had) -- but from an influence perspective they have had little for quite a few years.

</comment><comment><USER50> For a dead company people sure do like talking about it...</comment>


Open Source Explained by 1980s Cartoons - <AUTHOR> https://hackernoon.com/open-source-explained-by-1980s-cartoons-fym3uz6 <comment><USER2> Those 1980s desktop environments with ther big meaningful icons were perfect to grow up with.</comment>


WikiLeaks about to publish 300k emails by the Turkish government - <AUTHOR> https://twitter.com/wikileaks/status/755171322288861184 <comment><USER2> What difference does it make ... Erdogan arrested 20000 people for a coup in which 2000 participated. The torture is undergoing - all the military staff show signs of "enhanced" interrogation. What is left of secular Turkey will be gone by the winter.

All hail the new Ottoman empire.

The Balkans are right on their invasion route and I have no idea if NATO will help with our protection if in 10 years Erdogan decides to make "facts on the ground".

And yes - I consider Turkey as an enemy state from now on until it is ruled by the same people.</comment>


BigBlueButton: An open source web conferencing system - <AUTHOR> https://github.com/bigbluebutton/bigbluebutton <comment><USER2> We use this product on our company of ~150 during the COVID work-at-home thingy.

It's quite great ! It supports audio and video and is quite reactive for us.

<comment><USER3> Cool. I have a few questions:

How many people can you have in sessions simultaneously?

Do you use the shared whiteboard? What's it like for people without a stylus?

Any idea why it requires such an ancient version of Ubuntu (16.04)?

<comment><USER4> That readme is 17months old. and the reference to 16.04 is atleast 3 years old. So it may just not have been properly updated.

</comment></comment></comment><comment><USER5> How does this compare to something like 'Jitsi Meet'?

<comment><USER6> It is more oriented to teaching, so it's more classroom style: there is a main presenter and many listeners, it had a whiteboard, things like these. It's quite feature-packed, while Jitsi is maybe more minimal.

<comment> o-__-o Jitsi is like zoom, big blue conference is like webex/gotomeeting

</comment></comment></comment><comment><USER7> Best open-source, self-hosted solution to this problem. There is a mattermost plugin.

Very easy install, requires a 10 - 15$ vps instance.

Would like to see if anyone uses this on a large scale

<comment><USER8> Looks like they recommend 500gb storage space for production.. where are running yours?

</comment></comment><comment><USER9> This seems interesting, but the fact that the officially supported distro is still Ubuntu 16.04 is alarming. There is no good excuse for actively developed software to require an outdated operating system.

I get that it's a LTS platform, but so is 18.04. 16.04 only has ~1 year of support left, so deploying infrastructure on it now is idiotic.

At this point they should at least be recommending 18.04 and should be testing on betas of 20.04 while considering compatibility issues to be high priority.

<comment><USER10> Seems like a set of ~8 or something core contributors working on this open source project. You talk about it like it's a professional product. Ubuntu 16.04 is still everywhere and I'm sure they have their reasons for not having time to deploy on multiple platforms / architectures / beta lines in order to test changes.

I think you best shot at fixing this problem that has "no good excuse" and using it would be "idiotic" would be to contribute yourself. The least you can do is open a thoughtful issue asking the same things you asked here, but in a way better tone. Even better would be to contribute code but eh, Java.

Edit: another comment in this thread: "That readme is 17months old. and the reference to 16.04 is atleast 3 years old. So it may just not have been properly updated." [https://news.ycombinator.com/item?id=22611533](https://news.ycombinator.com/item?id=22611533)

<comment><USER11> "If you don't like it, fix it yourself" approach doesn't really work for many just because it's open source.

Why does an open source project has to be mutually exclusive to being a professional product?

If the recommended distro is from 4 years ago, people will feel if it's being abandoned and just go look elsewhere.

<comment><USER10> > Why does an open source project has to be mutually exclusive to being a > professional product?

It doesn't, there are plenty of open source professional products. This doesn't seem to be one of them though, as I would expect a company with for- profit motives behind it if that's the case. This seems to be a project that is merely supported by a company to support the development, which is also fine.

</comment></comment></comment></comment><comment><USER12> Its been awhile since I used BBB, but I found issues with it when there were over ~20 participants. Anyone know how well BBB scales these days?

<comment><USER13> Well... the website won't load for me right now, so it's not promising. :|

<comment><USER14> The website loads, it's just extremely slow to do so

</comment></comment></comment><comment><USER15> Just tried their demo -- looks full-featured and solid overall! Setup documentation seems pretty detailed.

<comment><USER6> That's right. Although I tried to setup self hosted both BBB and Jitsi Meet, and was not rally satisfied. Both had quite some problems with audio and video streams, which either didn't start or froze later. I think that both software are better than I could setup, because I've seen them working pretty good, but I'm not sure what is the secret ingredient.

<comment> o-__-o The secret sauce in jitsi is NAT traversal so make sure you don't have an overzealous firewall on the hosting server. Second it relies on google STUN servers, changing to different servers or using ips instead of dns may help fix problems on the client end.

Jitsi is amazing when setup properly (I have some deploy scripts somewhere out there, Jitsi is not truely open source as it seems)

<comment><USER6> Do you have some link to documentation explaining how to setup/debug this kind of things? I tried to deploy Jitsi Meet on a EC2 instance with all access permitted, but it still had quite a few problems. Did not try to tinker with STUN, though.

</comment></comment></comment></comment><comment><USER16> Did anyone find a license file? The source code doesn't even have a copyright header.

<comment><USER10> package.json for the frontend mentions LGPL-3.0, good enough?

[https://github.com/bigbluebutton/bigbluebutton/blob/65c3a8b1...](https://github.com/bigbluebutton/bigbluebutton/blob/65c3a8b1850694029c7a8516261e215a2c40c9f9/bigbluebutton- html5/package.json#L4)</comment></comment>


Planaritify – My iOS game about planar graphs, made in one day - <AUTHOR> https://itunes.apple.com/pk/app/inks/id1244666853 <comment><USER2> Nice idea,its's promising dude...i like it!</comment>


Not A Value Added Tax (2009) - <AUTHOR> http://capitalgainsandgames.com/blog/pete-davis/1166/not-value-added-tax <comment><USER2> The fact that Britain imposes VAT has no relationship whatsoever to the fact that public sector spending in Britain is 36.6%.</comment>


How Driscoll's Is Hacking the Strawberry of the Future - <AUTHOR> http://www.bloomberg.com/news/features/2015-07-29/how-driscoll-s-is-hacking-the-strawberry-of-the-future <comment><USER2> The technology is kind of cool.

Unfortunately, I absolutely _loathe_ Driscoll's raspberries. I will buy _anybody_ else's raspberries first, and I will simply not use raspberries if I have to buy Driscoll's.

They're big and red, but they're too firm and fleshy. They have very little juice, and, even if you get lucky and they're sweet, they don't have a robust raspberry flavor. I used to fight with the yellowjackets to pick raspberries in the Northeast US. I can't even imagine anything in nature wanting these raspberries.

I'm not terribly fond of their strawberries and blackberries either, but they're no different from the rest of the industry on those. Again, the fruits are too big, too fleshy, and not juicy enough. Consequently, they are far less flavorful.

This is standard across the industry. Water content == bruising and lost sales. So, anything with water content gets bred until the water goes away. Tomatoes, raspberries, strawberries, etc. have all gotten this treatment.

It's just like roses, we've bred them to last long when cut, but that breeds _out_ the fact that it smells like a rose.

At some point, we have to accept that getting that last "9" of efficiency on a biological organism isn't actually worth it.

</comment><comment><USER3> Reiter/Driscoll's is incredibly progressive and tech savvy as a grower. Their research operation is truly first class. They are the only grower we've worked with that has writen their own API client without any assistance--pretty slick for a decades old company whose main expertise is in trucking, labor, land, and plants.

<comment><USER4> Your comment made me start reading about your company. Really cool stuff! Do you use drones or regular aircraft?

<comment><USER5> Ultimately we are platform agnostic: Once drones are economically efficient, reliable, safe, we'll happily transition to them. Until then, we'll use regular aircraft that have proven themselves as economical collection platforms.

</comment></comment></comment><comment><USER6> There is an interesting image[1] at the bottom of the article, about how to extract the DNA from a strawberry, surprised (and partially sceptical) that it's really that simple.

[1] [http://assets.bwbx.io/images/iBaJbMBMgtrI/v1/-1x-1.jpg](http://assets.bwbx.io/images/iBaJbMBMgtrI/v1/-1x-1.jpg)

<comment><USER7> It really is that easy. I did some very simple splicing in a genetic engineering lab in undergrad with soybeans, and while there was less DNA (which we extracted for PCR), the process was still mostly centrifuging and alcohol.

Here's another source on the strawberry thing[1].

[1] [http://genetics.thetech.org/online-exhibits/do-it- yourself-s...](http://genetics.thetech.org/online-exhibits/do-it-yourself- strawberry-dna)

</comment></comment><comment><USER8> I always find it fun and interesting to see all the complexities of other fields that one would normally not think about. This did a great job of bringing light to something I had considered pretty mundane.

</comment><comment><USER9> The caption on panel #3 of the "DNA shot" graphic made me burst a blood vessel.

Here's how I extract DNA with fun kitchen science.

      1. Freeze.
      2. Add dish detergent and NaCl.
      3. Puree in blender.
      4. Thaw.  Stir *very gently* from this point forward.
      5. Add meat tenderizer and/or contact lens solution.
      6. Filter the mess to get mostly clear fluid.
      7. Layer rubbing alcohol over the solution.
      (If you use ethanol, make sure it's high-proof.)
      8. Draw DNA and RNA up from aqueous layer through alcohol layer with a kebab skewer.

</comment><comment><USER4> Does anyone know how strawberries are harvested? I've been toying with the idea of a produce harvesting robotics startup. But I guess the first step is to talk to some farmers?

<comment><USER10> Humans are currently too inexpensive to make a harvesting robot worth the cost (sadly enough).

Let's say you spend $10M on R&D (a very low number in my opinion), each robot costs $50k to build, and maintenance/repairs cost $5k/year. You decide to charge your first customer $100k because you have to cover some of your R&D, and you pass all the maintenance costs on to them.

For that $105k per year, a farmer could hire ~8 people for an _entire year_. But most growers only need labor for a few months at the most. So, assuming a crop that requires people for about 3 months, you're actually looking at 32 humans vs. a single robot.

If the economics made sense, people would use harvesting robots. But at this point, picking fruit is something humans are particularly good at and computers are particularly bad at, and humans are still very inexpensive.

<comment><USER11> More variables: picking only ripe fruit; handling the fruit more carefully; picking more rapidly so you can share the robot with many growers; refrigerating the fruit from the moment of picking. Any of these could make it worthwhile?

<comment><USER12> This is more an argument for an augmented human system than it is a slam dunk for something completely autonomous.

For example an unmanned, refrigerated, follow-me cart with a soft hopper could be a multiplier on picking productivity without all the hassles of actual mobile manipulation and perception.

</comment></comment></comment></comment><comment><USER13> Alleging Labor Abuses, U.S. and Mexican Workers Call for Boycott of Driscoll's Berries

[http://inthesetimes.com/working/entry/17865/alleging_labor_a...](http://inthesetimes.com/working/entry/17865/alleging_labor_abuses_u.s._and_mexican_workers_call_for_boycott_of_driscoll)

[http://boycottsakumaberries.com/why- boycott/](http://boycottsakumaberries.com/why-boycott/)

</comment><comment><USER14> I'd like natural strawberries, thank you very much!!!

Edit: The downvoters are free to be subjects for future genetic engineering projects themselves.

<comment><USER15> All of the down voters are already subjects of genetic engineering projects. Two specimens were brought together. Their dna was shared and 23 chromosomes were combined from each of the specimens to create a new experimental offspring.

I imagine that many of the down voters also are creating future genetic engineering projects in much the same way. Attempting to, and occasionally succeeding in, combining their dna with another specimen to create offspring.

If only we had more natural human creation as opposed to this GMO human combination that seems to be popping up in the marketplace...

</comment></comment><comment><USER16> this use of the word hacking makes me barf

<comment><USER17> New for 2016: presenting the new iStrawberry!

</comment></comment><comment><USER18> Driscoll strawberries are disgusting when compared to a more natural and naturally grown strawberry.

<comment><USER19> What kind is that, exactly? Since, you know, humans have been selecting and cultivating plants for specific characteristics since the beginning of agriculture. And that's all that this article is describing, saying "I like this characteristic, lets try breeding it with this other strain and see what comes about". I would be interested in these primitive, untouched by man strains you seem to be referencing, as such, and where you found them.

<comment><USER20> I found some brand of organic strawberries here in the US that tasted exactly like wild strawberries, but were of course much larger and sweeter, surpassing the original: [https://en.wikipedia.org/wiki/Fragaria_vesca](https://en.wikipedia.org/wiki/Fragaria_vesca)

Also worth noting is that there is no such thing as a "natural" strawberry, they're all hybrids: [https://en.wikipedia.org/wiki/Strawberry](https://en.wikipedia.org/wiki/Strawberry)</comment></comment></comment>


How We Knew It Was Time to Leave the Cloud - <AUTHOR> https://about.gitlab.com/2016/11/10/why-choose-bare-metal/ <comment><AUTHOR> I would have thought that an offering like AWS' dedicated hosts would solve the noisy neighbours problem and offer some guarantee for IOPS. I find it surprising that they don't mention it as an option for them.</comment>


Ask HN: Is startup equity just snake oil? - <AUTHOR> Is equity just an excuse for start-ups to motivate lower salaries and bad work hours, which in the end don't yield much anyway? <comment><USER2> Think of them like lottery tickets. Yes, they could be worth millions of dollars, but the chance of that happening is very, very slim.

The tradeoff for the bad hours/pay is that you'll get more autonomy in your work and the ability to really influence the product. To me, this is why you should work for a startup. Certainly not for the stock options.

<comment><USER3> "The tradeoff for the bad hours/pay is that you'll get more autonomy in your work and the ability to really influence the product. To me, this is why you should work for a startup."

I'm beginning to really hate hearing this over and over. So many people accept this at face value when in reality it's dubious at best.

Case in point: 6 months ago I left a start-up for a medium-size company (~300-400 people) that has been around for ~15 yrs with no ambitions of going public nor taking outside investment. I get both amazing pay and an insane amount of autonomy. I doubt this could be matched by a Big or Small company.

Here's the rub: Silicon Valley markets itself VERY WELL and if you're willing to internalize everything that comes out of this marketing machine, then yes... it's snake oil.

I'm not diminishing the the importance or impact of entrepreneurial ventures, but I think we can do better than Cookie-cutter Generalisms repeated ad nauseam without independent thought.

<comment><USER4> Would you say your company is a rare breed?

</comment></comment></comment><comment><USER5> Yes.

First of all, they'll probably just tell you how many shares you get. So, you don't even know what percentage of the total you have! But even if they did tell you, they won't show you the cap table, so there's no way to even evaluate the worth, since you can't see how much the investors are going to be paid out first. And even if you did know that, the board can just print more shares and make yours irrelevant anyways, so you _still_ can't tell what they're worth.

So, assume they're worthless.

<comment><USER6> This used to be a pretty common story, but I haven't heard it in awhile.

Don't accept offers that don't give you enough information to value your shares, unless equity isn't a significant part of your compensation.

<comment><USER7> It happened to me early this year, and they were super-upset when I turned them down. An A-round startup (with investment from a16z!) that wouldn't share the denominator in the options package... I guess it takes all types. Funny enough, they're still hiring for the role.

</comment></comment></comment><comment><USER8> If you make your own company and get 40% of the equity or whatever.. not snake oil at all!

If you join a late stage startup and get a good salary and a few shares... not snake oil, but not going to be life changing. Base your decision on the salary and what you will be working on.

All the people in the middle offering you 50% of market pay plus 1% of a small company? Ya that is pretty much a scam to get cheap labor, don't fall for it.

<comment><USER9> BJ&JG was a bit different, though. ;)

It's hard to say that two guys who were new to management at the time are entirely representative of the entire small company market. Inexperienced small company market, sure, but not the market as a whole.

Also, because real life slipping into HN - why the heck did your sound script pipe a python regex matcher's stdout to perl to have it immediately go directly to stdout for another pipe pick it up?! The context switches... the p&l impacting context switches.... ;)

</comment></comment><comment><USER10> I only ever value equity in terms of "percentage of the founder's share". That is, if it isn't the same kind of thing as what the founders have, then there isn't anyone negotiating on your side to keep it valuable, so it's probably not worth anything.

The golden question is "if you get an exit that makes you $10m, how much money does that mean for me?"

</comment><comment><USER11> There are many issues with getting equity when you are not investing money:

1) rounds of investments will dilute your shares 2) you have no control over the company and are now in the precarious position where the situation could get really bad, but you don't want to leave because you don't want to lose your shares (I've been there) 3) If the company is overvalued at some point, takes an investment, and then sells for less than that value, the investors will get paid back first (further reducing your chances at getting a payout).

Is it snake oil? Not necessarily, but it's a huge risk and you shouldn't think of it as your path to riches.

</comment><comment><USER12> Yes, more than changing the world, fake equity is what start ups are all about. The goal is to take the fake equity and try to make it real. As an example, a friend built a prototype in a couple months and with the help of someone else, he was able to raise a $1M note at a $10M cap. With 50% of the company he now has $4.5M in equity. But it's all imaginary. Without an exit it means nothing.

Employees are the ones who need to watch out for this, because the founders turn around and try to pretend the equity is real. An offer of $200k of this fake equity isn't really $200k. And for you to 'get rich' and 10x your $200k, you will need to 10x the founders $4.5M of fake equity. All the founders need to do is see an exit and they are rich since the initial seed round gives them millions.

So don't worry about $ numbers, just the percent of the company. If it is early, understand the cap table and fight for your fair share. And don't stop fighting, especially if you are adding value. Remember the founders got millions of 'fake equity', they can and should share. Don't forget that the ebullient founders see a payday on most any exit whereas you won't. I like the advice that you are either learning or earning, and if you aren't founding you most likely are learning.

Also, don't let people talk you far below market salary since you aren't just giving up big company salary, but also bonus and stock. Most of all though, you need to trust the founders since it's easy for them to screw you and easy for them to screw everyone if they don't make the right moves. Even if you build a good product and get customers, if there are bad ratchet clauses everyone but the investors will get screwed.

This is geared more toward early stage. For later stage you aren't going to see the cap table or anything else. The main thing for mid to late stages is growth: users, customers, and revenue. You are stepping on to a rocket ship priced for perfection, if it goes off trajectory your equity is going to be worthless, so don't feel obliged to stay and help out of charity. At this point the founders have likely already made millions, the senior employees are probably going to be okay, but the noobs are going to get burned.

YC and others have done a lot to help founders. Unfortunately, no one has done much to help employees. So pay attention and do your best to find people you trust. Remember, founders have every incentive to sell you the golden dream, since it's likely to be golden for them.

</comment><comment><USER13> No, not always. It's something a lot of startups misuse. But I wouldn't say that's how everybody does it. I know some startups that offer equity with a slight pay cut, just to gauge your motivation, and bump up your pay soon after.

</comment><comment><USER14> Pretty much. Would you work as hard or take as much of a paycut if you got virtual lottery tickets instead (lottery tickets that even if you win may not pay out since VCs have a higher priority stake in them)

</comment><comment><USER15> _Is equity just an excuse for start-ups to motivate lower salaries and bad work hours, which in the end don 't yield much anyway?_

Pretty much. Unless you have your lawyer (not _a_ lawyer, _your_ lawyer) tell you otherwise assume equity as compensation is worthless.

There are times and places where equity isn't meaningless, but that's not at Valley tech startups. There it's mostly used to mislead impressionable youths that haven't been burned yet.

</comment><comment><USER16> It's less snake oil as it is an inheritance from a long, lost relation. Stock isn't something you can bank on, unless the company is knocking on the door of an IPO and then you are probably looking at RSUs anyway.

 _I 'm gonna do some math that probably doesn't apply to a new grad, but certainly could apply to an experienced SE/SWE/etc._

Look at it this way, if you are making $175k, with a 15% bonus and $55k of vesting stock at Google ("Alphabet"). Let's just assume the stock doesn't fluctuate over the course of the year. We'll call your total comp $255k real money (forgoing 401k and other benefits for simplicity).

Now, you join a well-funded seed startup. They pay you $150 (even in these crazy times this is a high startup figure). Congratulations! You just became an investor. I'll save you the spiel about paying for a better environment, accelerated learning, purpose, etc...You have invested 105k a year, in exchange for .1-.25 percent of the company, if it's still a pretty small startup. Oh yeah, and year one's money gets paid mostly towards your stock cliff; you paid to accrue the first years stock until the end of the year (if you make it to the end of the year). If you leave in month 11 you get nothing. However, at month 12 you get the stock from year one, then each month you earn 1/48 of your total equity stake.

 _A few more simplifying assumptions. Let 's say your annual adjustments at BigCo and your annual adjustments at startup are equal, which they won't be. Also, there's no opportunity cost._

Next year you pay that $105k again. Then, the company raises a few rounds of capital, over the next 5 years. All in all you've been at the company for 7 years and paid $735k for (let's call it) .1% of a company that was worth $5 million post at the time. But, you've been diluted 30%, 20%, 15% and 7% in subsequent rounds, and then maybe re-upped a little along the way. You have 3 times your initial grant worth of stock, because you were really good at your job, so now you own .000189 % of the company.

If the company has a $500 million dollar exit, with no preferences, you get $94,500. But, with all the rounds you raised, $500 million is probably gonna trigger a liquidation preferences. Let's say it took $150 million VC money to get your exit. Well, you get $66,150. Damnit...

Well, that doesn't seem worth it. How big does the company have to get to make it worth it? Well, I haven't heard of any $10,000,000,000 acquisitions. So, let's say you IPO and after your lockup period, you leave the company and sell all your stock. You'll have a tax advantageous $1.89 million. Off all the startups you hear about, and many you don't, how many $10,000,000,000 exits have you heard about? And what is that risk factor worth?

Now, why do people do startups? Well, let's say your startup is Facebook. After your lockup period, you had a market cap of ~$100,000,000,000. Your .1% is now worth $18.9 million. Or if you had an original .25%, $47.25.

I hope you get the point.

<comment><USER17> I think your math is a bit off. The dilution computation gives me 0.044% (before assuming you get any extra stock). With no extra stock, that gives you an exit at $150K. With the extra stock, you probably are in the $200K-$400K range. Which you do want to compare to your "investment" of $750K...

So your post is very good advice to everyone. I encourage you to apply similar math. Of course, the hard part to evaluate is the variation: maybe the exit is 10X better. Or maybe it's 10X worse. How valuable is a high-risk/high-reward payoff? At least, by doing this math, you put hard numbers on just how high the payoff can be. If it turns out to be no so high, that's a great help to your decision.

<comment><USER18> I think this advice is OK as long we make a heavy emphasis on the need for some probability distribution over possible exit values. Such a distribution has to account for growth of the company, ability to succeed against competitors, potential acceptance of outside funding along with restrictions like liquidity preference, and so on.

No one is good at articulating these distributions, and many people who influence you during the hiring process with either be overtly nefarious in their attempts to get you to believe what their rosy-colored prior looks like, or they will be suffering from different biases (especially the earliest-stage employees).

For a young engineer who may or may not have a great command over this sort of probabilistic reasoning, and may or may not know any techniques to mitigate the biases that might creep in, it can be extremely risky to advise them to determine their own personal assessment of whether the exit will be 10X better and so on. Almost always they would be better off simply saying that they can't put a useful probability distribution on it, and therefore they cannot come up with a useful model of what the equity portion would be worth.

It sounds nice to teach these types of candidates about how to value the equity in terms of knowing about liquidity preference, asking about the composition of the board of directors, asking detailed questions about comparable companies and their exit numbers, and so forth. But in truth it's a bit like handing someone a loaded gun, pointing it at their foot, and saying, "you're welcome for the advice."

<comment><USER16> I don't think it's that tricky to put a general distribution on it, Chi- Squared.

</comment></comment></comment></comment><comment><USER19> It's an effort to sell you expensive lottery ticket.

You may or may not choose to play this game but odds are not in your favor.

My suggestion is to postpone options/equity discussion up until after the salary discussion is settled. Let it be icing on the cake rather than replacement for the part of the cake.

</comment><comment><USER20> The thing is, it's all upside down. If a startup wants to get a experienced person to the team, they should offer more salary and then some options/shares instead of lower salary and possibility of options.

I really don't understand why an experienced person would take a pay cut.

</comment><comment><USER21> No, that is too simplistic.

When you get a job offer with an equity component, you should be able to estimate its value. Figure out what you think the company is worth, figure out what % of the company you own, and multiply those two numbers together.

I have had friends get job offers where the equity component was worth less than $1000, and I have had friends get job offers where the equity component exceeded the salary component. It really just depends on the startup. So don't just dismiss the equity component as worthless without digging into it a bit more.

</comment><comment><USER22> I'd compare it to being part of a team in a poker tournament. You walk away with a share of the winnings or you walk away with nothing.</comment>


Ask HN: Whiteboards - porcelain or melamine? - <AUTHOR>

Is porcelain worth the difference in price? <comment><USER2> The usual benefit of porcelain is that it's on top of metal, and the metal takes a magnet. So if you're going to be putting something on the board that would benefit greatly from magnets, like, say, a timeline that you update everyday by moving a series of magnetic pointers, then porcelain is for you.

OTOH, if you're just going to write and erase as is most typical, melamine is nice because when somebody inevitably comes and writes in permanent marker on the board, you don't feel bad throwing it away for a new one.

<comment><USER3> We have a mixture of both in our office and I prefer the melamine ones because they seem to have less problems with marker hanging around after being erased. We also have some cheap melamine boards and some nicer ones; I'd recommend spending the money to get nicer ones because the cheap ones also have problems with ink lingering.

However, like the parent said, if you have a use case that requires magnets, porcelain is the way to go.

</comment></comment><comment><USER4> Have you considered glass? My favorite whiteboard was recycled from a 7-foot tempered glass tabletop.</comment>


Paul Graham's "How to Disagree" inspired app for arguments launching soon - <AUTHOR> http://arguab.ly/

<comment><USER2> I've been contemplating a tool like this for a while... but the issues are that not many people understand fallacies even after reading a definition, nor are those new to them readily willing to sift through a dictionary of them.

I hope this evolves into something bigger than a forum post, because our present method of written communication lacks our ability to do things like this without losing track of the argument.

<comment><AUTHOR> I would love to hear more about your thoughts - My hope is to teach people how to make stronger arguments for their case.

</comment></comment><comment><USER3> It would be nice if the inspired by line actually linked to the essay.

<comment><AUTHOR> Of course! Just changed it! Thanks.

</comment></comment><comment><USER4> Is it really worth posting links to HN to Launchrock holding pages?

</comment><comment><USER5> Do people find arguing fun enough to do on its own?

<comment><AUTHOR> The plan is not to "host" arguments, but rather a place where people can point out others logical mistakes - hoping they will learn from them and improve. Makes sense?

</comment></comment><comment><USER6> Isn't this what forums and places like HN are for?</comment>