First Nokia, Now RIM: The Mighty Are Falling - <AUTHOR> http://www.wired.com/epicenter/2011/07/rim-mighty-are-falling/ <comment><USER3> I am not fully versed in the notion of innovative disruption, but it seems pretty obvious that a Clay Christensen-esque Innovator's Dilemma disruption is what's going on here: somebody had a decent product, is first to market, but doesn't have a clear enough vision to see how to stay on top and stay innovative and gets blindsided by unexpected (read Apple + Android) competitors. I wonder how closely the non-cliff notes version of RIM's fall matches the innovator's dilemma model.

<comment><USER4> The term is 'disruptive innovation'. It's an often misunderstood concept - <USER2> key point is that not all innovation is disruptive. The defining feature of disruptive innovations is that they are initially worse than the technology they displace, but as they are significantly cheaper they allow the tech to reach new markets. Since the iPhone was a high-end product, it can't be called disruptive.

<comment><USER5> "Since the iPhone was a high-end product, it can't be called disruptive."

Do you have a suggestion of what it should be called, then? Sounds disruptive to me.

<comment><USER6> revolutionary or evolutionary - depending on your perspective; though I'd say the android is disruptive to the GPS market

<http://en.wikipedia.org/wiki/Disruptive_technology>

</comment></comment></comment></comment><comment><USER7> While in the short term, Android and iOS are having an impact, RIM's longterm fate is affected by Windows Phone 7 because that is the easiest Mobile OS upon which Enterprise can standardize comfortably - iOS is just too consumer centric [e.g. three year obsolescence] and has a history of sloppy security practices [e.g. lying to Exchange], and Android is somewhat fragmented due to diversity of device capabilities and does not give a high priority to integration with the Microsoft stack.

All the things RIM does well for enterprise, Windows Phone is likely to do better over the long term. And with Nokia getting set to leverage their existing reputation for quality on top of WP7, it is hard to see what RIM can bring to the table when it comes time to convince IT. [[http://www.cio.com/article/501815/iPhone_3.1_Breaking_Exchan...](http://www.cio.com/article/501815/iPhone_3.1_Breaking_Exchange_E_Mail_for_Enterprise_iPhone_3G_Users_)]

<comment><USER8> To be fair, every mobile device that Microsoft released was supposed to destroy RIM. I'm still not convinced that Microsoft can pull of a decent phone with full Exchange integration.

</comment></comment><comment><USER9> I'm a little sad for RIM and would like to support a Canadian company but in the end they just aren't able to adapt. I don't think they ever will unless there is a management change. Seriously a tablet that can't receive email Nativity? That's what they were know for yet they can't use there strength right. QNX is a decent system, open it up, let others use it, in the end they won't be able to stop the tsunami of apple and android without help, other manufacturers using their QNX platform could help.

<comment><USER10> I don't have the deisre to support a Canadian company simply because they're Canadian, but I'm with you on the rest of it. When I heard RIM bought QNX I was ready for a game changer from them, but alas... too little too late. Perhaps it never could have worked; maybe Google with buy the QNX part of RIM and do something with it with respect to Android. I'd like to see it shine someday.

</comment></comment><comment><USER11> Their problem is they make phones and no one wants phones, they want computers.

<comment><USER12> That was exactly Nokia's problem, they tried to cram whole computer in a phone. They even called their smartphones 'multimedia computers' and primarily targeted them for geeks. They never had a real idea why smartphones are useful. That strategy led them to huge amounts of code bloat and features without usability and made the development of updates horribly slow.

<comment><USER13> I think that Nokia's problem was they tried to redesign their software stack 3-4 times, never waiting long enough to get a mature enough product with real feedback before ripping things up and starting again. The worst case was the latest switch to WP7, especially after looking at the first (and maybe last) Meego phone release. It's like trying to build a house, getting the framing and walls up and right after you paint it you decide to go to a completely different foundation.

</comment></comment></comment><comment><USER14> I don't think I've ever seen a company cut employees en masse like this truly help a company come from behind to regain their former status. It sends so many wrong messages. If those 10% of your company aren't worthwhile, why were they hired and employed in the first place?

If management can afford to cut staff by 10%, the C and VP level management should be fired. Start by cutting at the top, not at the bottom.

Cutting that deep means that management was fine with spending money like drunken sailors. Nothing RIM or Nokia has announced in the last few months in terms of changes has shown that they are going to do anything other than wither and die on the vine.

<comment><USER15> I can't disagree with the first two paragraphs, but for the last, what about shutting down entire divisions? If a company invested in a failed product that requires a number of specialized employees, does it imply they were spending money like drunken sailors when they have to let them go?

<comment><USER16> I'm reminded of Steve Job's advice to Nike:

 _"Nike makes some of the best products in the world. Products that you lust after. But you also make a lot of crap. Just get rid of the crappy stuff and focus on the good stuff."_

</comment></comment></comment><comment><USER5> Well, that's what a functioning market where there is competition does. Allow people to pick what they want, and it so happens that what people now want aren't BlackBerries. Both Apple and Google should remember that -- their positions aren't set in stone and to maintain them in the long term they need to avoid resting on their laurels.

</comment><comment><USER17> I would be really interested to read an informed analysis of these two cases in the context of public company shareholder dynamics. I think it's an understated advantage of Steve Job's ultra-centrality at Apple that shareholders tend to defer to him in a way that I expect they might not with other companies (obviously this might become a disadvantage when he leaves). Has pressure from shareholders meaningfully affected the decision-making of companies like Nokia and RIM? Are short-term incentives defeating long-term incentives because of such pressure? I don't know, but I'd love to hear from someone who does.

</comment><comment><USER18> Nokia has been a company since 1865, so it might take more than this to stop them

<http://en.wikipedia.org/wiki/Nokia>

<comment><USER19> And they've done a lot of amazing turnarounds, from paper mills to rubber boots to cables to TVs to mobile phones. But this is the first time they surrender the decision making power of the company to a third party, Microsoft.

That may make adapting to changing situations harder.

</comment></comment><comment><USER20> esr also keeps a close eye on the developments in the mobile phone market. His latest blog post on this is at <http://esr.ibiblio.org/?p=3493> , a short quote:

 _"Nokia's strategy, insofar as it's actually had one since the tie-up with Microsoft, has been to hang in there on volume sales of dumbphones until it could deliver world-beating WP7 handsets. The major risk here, other than the wild unlikelihood of WP7 ever becoming anything consumers actually want, was that the Chinese electronics industry would undercut them on price- performance. I predicted this would happen, it is happening, and Nokia's disastrous July earnings call is the result."_

<comment><USER21> While "keeps a close eye on" is certainly an accurate description of what he does, "makes accurate and/or well-founded predictions" is not, and that's more important. Someone who wanted to be well-informed about mobile would do far better by reading Horace Dediu, for example.

</comment></comment><comment><USER22> I'm not sure if it's related to their troubles, but their corporate structure has always seemed odd to me. Starting with the whole "co-CEO" role, which seems like an experiment that hasn't quite panned out.

<comment><USER5> Technically, Google has almost had that for a while with Larry and Sergey, and then the Trifecta with Eric. Not quite the same, though, obviously...

</comment></comment><comment><USER23> To me, they are both victims of a paradigm shift. The only thing that saddens me is that their employees will pay the price for their lack of vision.

<comment><USER24> as a former multi-year employee of a formerly glorious company that fell victim of its self-denial to recognize a paradigm shift i can say that employees can blame only themselves.

<comment><USER25> Yeah, I agree. The parent post makes it sound like there is some other force in a company that can be blamed other than the employees. I suppose someone might say "management", but to me it's all the same.

<comment><USER23> From what I've seen, many companies do not listen to their employees, especially as they get larger. RIM in particular strikes me as a company where its employees have no voice.

</comment></comment></comment></comment><comment><USER26> Wasn't there an open letter from a senior staffer at RIM just a few days ago, which spelt out the problems on the ground and what needed to be done about them in brutally honest fashion, which was promptly brushed under the carpet (or not) by RIM PR? It seems like the rank and file staff at RIM get it, but the top level management don't, which is a sufficient condition to know how the story ends.

Edit: Yes, here it is: [http://www.bgr.com/2011/06/30/open-letter-to- blackberry-boss...](http://www.bgr.com/2011/06/30/open-letter-to-blackberry- bosses-senior-rim-exec-tells-all-as-company-crumbles-around-him/)

<comment> eric-hu I was thinking of the same thing when I read this. To be fair, one of the letter's suggestions was that they hold people accountable for failed products. Excerpt:

"Just because someone may have been a loyal RIM employee for 7 years, it doesn't mean they are the best Manager / Director / VP for that role"

...although maybe they're doing the reverse...

</comment></comment><comment><USER27> QNX ? What for ?

I think RIM should learn from Nokia's mistake and switch to Android soon as possible. This is the only way to survive for them.

<comment><USER28> Wow, CEO of the year for you sir.

If things would be as easy as that, flip to Android and compete with the rest... to the bottom. How would you differentiate yourself vs HTC, Motorola, etc?

What if the Chinese android handsets comes up with cheap mobile phones similar to BB hardware interface (the golden keyboard, you know that BB users love BB because of the keyboard).

Switching to Android makes RIM an average company like everybody else.

<comment><USER29> Samsung in on pace to become the #1 seller of phones in the world and the #1 seller of smartphones in the world. I don't have access to their numbers since they're a private company, but from what they report their revenue and profits dwarf that of RIM.

<comment><USER28> Most Asia-based manufacturers can have lower cost than any North America-based manufacturers. Just ask Broadcom whether they're feeling the heat from Taiwan- based manufacturers.

Race to the bottom doesn't necessarily mean a bad thing if you can produce the cheapest alternatives. But it is bad if you can't do that.

</comment></comment></comment></comment><comment><USER30> In tech, there is no such thing as 'too big to fail'</comment>


Notion – The Hassle-Free JavaScript Toolchain Manager - <AUTHOR> https://www.notionjs.com/ <comment><USER2> I prefer Nix/Guix for this type of application, but I'm glad more solutions are coming to fill a critical need.

</comment><comment><USER3> So is this like nvm, but written in Rust?

</comment><comment><USER4> Synergetic package for framework toolchain (webpack, Babel, react/angular/Vue)

[https://github.com/sysgears/create-apollo- app](https://github.com/sysgears/create-apollo-app)</comment>


Lessons from defending against DoS attacks [video] - <AUTHOR> https://vimeo.com/148536656 <comment><USER2> Does anyone have the slides?</comment>


What makes WebAssembly fast? - <AUTHOR> https://hacks.mozilla.org/2017/02/what-makes-webassembly-fast/ <comment><USER3> My excitement for WASM has nothing to do with speed or efficiency of the runtime. It's all about finally having a universal compile target for the web. We're finally going to be able to develop web apps in a proper language of our own choosing, without needing hacks like TypeScript.

Hopefully, this will lead to real dedicated IDE tooling and standardized libraries for the web along the lines of what's available in iOS and Android native development.

<comment><USER4> True. I agree with it all.

However, by then, TypeScript might be so darn good that people choose to keep going with it!

It really does have a better type system than C# in a lot of ways.

<comment><USER5> Could you please elaborate on how TypeScript's type system is better than C#?

<comment><USER6> I disagree with OP, but two interesting corollaries of TS type semantics are its strong type inference and structural typing:

Const x = [{x: 3, y: "hi"}, {x: 9, y: "bye"}];

Automatically gets you x: "Array of {x : number, y: string }". And if you declare the same type somewhere else, as long as they're "structurally equivalent" (i.e. same x and y types) you can actually use them interchangeably. You can't do that e.g. with c#, where one class will never be exchangeable with an unrelated class , no matter how similar the definitions.

This lets you do some funny stuff like"subset type detection ": [https://gist.github.com/hraban/66c1778cdd31868034b12db93fcce...](https://gist.github.com/hraban/66c1778cdd31868034b12db93fcce41c)

All in all, it's more of an oddity than an actual strength, if you ask me. It's necessary to emulate JS semantics, but I wouldn't consider it an advantage in a new language.

<comment><USER3> > You can't do that e.g. with c#, where one class will never be exchangeable > with an unrelated class , no matter how similar the definitions.

Agreed. Duck typing is a killer feature. I can't say how many time's I've rolled a new class for no reason other than data structuring, which would have been far preferable as something just defined inline.

</comment></comment></comment></comment></comment><comment><USER7> > In the last article, I explained that programming with WebAssembly or > JavaScript is not an either/or choice. We don't expect that too many > developers will be writing full WebAssembly code bases.

I see this statement all the time, but it doesn't make sense. If you're looking at any programming language out there, they all have a growing members of their community asking and showing interest in targeting WebAssembly for their language of choice. It's not just C/C++. Go, Rust, Ruby, Python, Crystal, Nim, D, and many more. Now you might get the reaction that "meh, why would anyone write web apps with Rust?", but that's an irrelevant question. Companies are going to see this as an opportunity to save resources and become more efficient, especially since wasm has so much better perf than JITed JS and the possibility of going isomorphic is a reality (back-end & front-end written in Ruby for example, deriving from the exact same codebase and shares code).

Now I'm not saying "WebAssembly will take over JS!", what I'm saying is that it perhaps, possibly, maybe will. It will depend on these languages and how they add support for it, what abstractions and integrations they provide with their current ecosystems. And of course, how WebAssembly will improve over the coming years.

<comment><USER8> I agree completely, but I would take it a step further:

If wasm doesn't overtake JS, something else that offers native bindings to other languages will eventually. There are huge benefits to be had for teams that want to be able to code their full stack in a language that isn't JS.

We never asked for JavaScript (well the vast majority of us), but we've been stuck with it for the past two decades for all things web. Now that a doorway to replacing it with a general-purpose solution has been cracked, I expect the industry to kick it wide open as soon as possible. Not because JS is bad per se (it has certainly gotten _much_ better), but because a lot of developers would simply prefer to use something else.

<comment><USER9> > something else that offers native bindings to other languages will > eventually...

No it won't.

This is our one chance to kill javascript; if we don't do it now, it'll be entrenched forever, and best we'll ever get is 'compiles-to-js' languages like clojurescript and typescript.

Let's be realistic; who has the man power, community good will and business savvy to push an entirely new language across all platforms, mobile and desktop?

Microsoft? Come on. Apple? Google? Google tried with dart and failed.

Who else, seriously, is going to step up?

We can day dream about the magical 'no js' world, but it's _never going to happen_ if web assembly doesn't work.

Currently we're seeing the reverse, js stretched off the browser, onto the server, into mobiles, onto iot devices.

You've got to layout some pretty damn fine arguments about why that trend is going to suddenly reverse.

Web assembly is pretty much our last best chance to flip javascript off and have something better...but it might already be too late for that to work. :/

<comment><USER10> > This is our one chance to kill javascript; if we don't do it now, it'll be > entrenched forever, and best we'll ever get is 'compiles-to-js' languages > like clojurescript and typescript.

Do people really hate JavaScript that much? I've grown fond of it in recent years, especially after ES6.

<comment><USER11> Yes. People really hate JavaScript that much. ES6 brought some sanity to the language, but I continue to be firmly in the camp of continuing to hate and despise its existence.

<comment><USER10> Weird. I remember hating it ages ago. So much so that I was developing a Python->JavaScript transpiler (before all the cool kids were writing transpilers!) and blogging about how bad it was [1].

Granted, that was back in 2008 and most of my complaints have been addressed now almost a decade later (except for destructors, it still doesn't have those, but I also don't need them anymore).

These days I move between JavaScript, Python, Go, and C seamlessly and I can honestly say that I don't hate any of them as much as clients, managers, and 3rd party code.

[1] [http://davywybiral.blogspot.com/2008/01/javascript- bad.html](http://davywybiral.blogspot.com/2008/01/javascript-bad.html)

<comment><USER11> People have definitely had and continue to have successful careers in, and many actually enjoy, JS.

I would never debate that. I think language choice for many people is a personal decision. There are some that I will hold my nose and use; not even complain too much. There are others that the minute there is an alternative to, I would use that instead. JS is in the latter camp for me.

If it helps, my current favorite language is Rust... they may be syntactically similar, but I just can't stand the semantics, or lack there of, of JS.

</comment></comment></comment></comment></comment></comment></comment><comment><USER12> On one hand, I'm excited about performance improvements. On the other, I lament the fact that this will kill one of the best parts of the web: the fact that the source is sent to the end user instead of a binary. It now makes the code and how it works opaque, thus killing the spirit of innovation and learning.

<comment><USER10> Agreed. But I've felt that way about minified JS for a long time too. I'm not sure there's a way around it.

</comment></comment><comment><USER13> The edge over asm.js is a subset of this. Obviously, asm.js neither has JIT reoptimisation overhead, nor garbage collection to worry about.

However, a weird, highly-annotated strict subset of JS is not the ideal representation of what is basically portable assembly language. WebAssembly's big strength over asm.js is it has smaller executables and they can be rapidly decoded and verified in binary IR form, rather than having to shove megabytes of ungzipped bracket-fest through a JS parser.

<comment><USER14> > Obviously, asm.js neither has JIT reoptimisation overhead

Why does it never need to re-optimise the JITed code? I know WebAssembly and asm.js are more static than JS, but even very static languages like C benefit from speculative optimisations which may need to be reversed. For example asm.js and WebAssembly have branches don't they? Does the JIT always compile both branches even if one has never been taken in practice?

And what is the reoptimisation overhead anyway? If deoptimisation is caused by a bad speculation on the same thread, it's zero overhead on the fast path until it's used isn't it?

<comment><USER15> > For example asm.js and WebAssembly have branches don't they? Does the JIT > always compile both branches even if one has never been taken in practice?

WebAssembly is treated just like other "real binaries" produced for the "real" OS. Whatever survived the static optimizations while producing the binaries is converted, at the end, to the pure machine code, you don't "trace" it in run- time by the user.

> even very static languages like C benefit from speculative optimisations > which may need to be reversed.

I'm not aware of "speculative optimisations which may need to be reversed" in C, and I'd be very interested to read what you mean when you write that, possibly with some links and references. Do you mean run-time, by the user, or something else?

<comment><USER16> I think that is left open to the implementation. _If_ an implementer thinks there is a benefit in doing so, he's free to do so.

In fact, that's similar to how a CPU runs "real binaries". Modern CPUs use _some_ runtime information to make code run faster. Examples include branch predictors and the recognition of stride lengths to move data into the cache before the instructions being executed need it.

That's only small bits, but it _is_ runtime information. I do not rule out that WebAssembly developers, similarly, will find hat there are ways to use runtime information that speed up WebAssembly code.

<comment><USER15> I think you confuse the tracing during the interpretation of JavaScript with asm.js&WebAsm. Namely asm.js&WebAsm are designed to avoid as much as possible anything deciding in the run-time, except for verifying and generating the machine code, exactly because these "let's see what the code is doing in the run-time" were already implemented and were used for "plain" JavaScript, but had too much overhead, compared to what asm.js&WebAsm does (or avoids to do), for the kind of uses where asm.js&WebAsm are desired.

For the "plain" JavaScript, there are the run-time decisions.

> Modern CPUs use _some_ runtime information to make code run faster. Examples > include branch predictors and the recognition of stride lengths to move data > into the cache before the instructions being executed need it.

Sure. But that run-time information is internal to the CPU. And the CPU will use it for the native binary code that is the final result of asm.js or WebAsm, just like any other. But that native binary code is "static," it's explicitly not "small traced chunks" the way "plain" JavaScript is handled.

> I do not rule out that WebAssembly developers, similarly, will find hat > there are ways to use runtime information that speed up WebAssembly code.

Think about that: it they would find something like that, exactly the same technique could be used to speed any native code, including Linux kernel and anything native you imagine.

If you manage to develop software method that actually improves the execution speed of the native code in run-time, you'd be famous and (if you know how to market it) rich.

<comment><USER17> > I do not rule out that WebAssembly developers, similarly, will find hat > there are ways to use runtime information that speed up WebAssembly code.

 _Think about that: it they would find something like that, exactly the same technique could be used to speed any native code, including Linux kernel and anything native you imagine._

That's exactly what profile-guided optimization does. It's not a new invention, it's working technology. And it's far from inconceivable that PGO could be applied to the intermediate code that web assembly effectively is.

Specific example: a common tradeoff made in compilation is between space and speed, and there are some cases - like padding to align a jump target - <USER2> can win big speed improvements in inner loops, but are pessimal when used liberally (because code size inflates and doesn't fit in cache). Realigning jump targets is something that can be done to compiled code, in particular compiled code before it has been linked, when all the relocations and fixups are still available. Having information about hot code can make a big difference here.

(BTW: optimizing linkers are surprisingly involved here, particularly for targets that have a bunch of addressing modes, like x86. Some ways of writing in fixups can result in smaller code (e.g. 1 byte offsets rather than 2 byte offsets), but this effect cascades: making code smaller can make what used to be a 2 byte offset possible to fit in 1 byte. Don't underestimate the amount of optimization that your linker does with native code (if you have a smart linker; my experience is from the Delphi compiler source).)

<comment><USER15> > it's far from inconceivable that PGO could be applied to the intermediate > code that web assembly effectively is.

A developer could do some kind of PGO before he produces the final binary, I can imagine that. But then it's still just a static binary.

And I personally can't imagine PGO being done in the user's browser and not being slower than the alternative of not doing it, just like I've never heard of some OS which does PGO on the native binaries when user runs them. Maybe you know of something like that? The PGO I know is always a slow process, done only before shipping the binary to the user, it's a kind of "post-processing" step of compiling, not of the normal execution at the user's computer.

<comment><USER18> Java does PGO on every server running Java in the world.

Even some swing apps benefit once you get it started up..

That said, I'm not sure the full JVM is coming to browsers anytime soon.

<comment><USER15> The target model of the asm.js (and therefore WebAsm) intentionally doesn't assume the "VM" features that Java VM has. It's much, much lower level. No classes. Even no strings.

Java VM receives the classes, methods, strings, has GC and all that, but it has to JIT to reach that lower level to be efficient and has to do a kind of establishing what's actually used, similarly to what tracing JIT engines for classic JavaScript do.

I believe that kind of run-time measurements and then code generation and optimization is what some Java people call PGO, and what asm.js at the moment intentionally (by design) avoids.

In short, Java's PGO on the user side is not what PGO for static languages like C is (by the developer). And asm.js is even lower than C. It's really closer to... asm.

Exactly because asm.js avoided these decisions was Firefox with asm.js support faster than Chrome at the time the later treated all js code the same.

</comment></comment></comment></comment></comment></comment></comment></comment></comment><comment><USER19> I really hope web assembly takes off and becomes a thing wide implemented in all the major browsers. The web is such a fantastic application platform (despite its frequent misuse...), and removing the javascript performance tax will be huge.

<comment><USER20> JavaScript is not just a performance tax, it's also a language that is poorly suited to a great number of tasks which we would like to apply web browsers to today.

Not that it is all around terrible, but definitely much preferred if we can choose the best language for the job instead of being strictly stuck with JavaScript.

</comment></comment><comment><USER21> Is WebAssembly's binary format finalized? I wasn't able to find anything about it, but about two weeks ago binaryen pushed a new release[1] whose notes said "update wasm version to 0x01, in prep for release, and since browsers are ready to accept it".

From what I had heard the plan was not to do that until the final standard was settled on, but I wasn't able to find any corresponding announcement.

[1]: [https://github.com/WebAssembly/binaryen/releases/tag/version...](https://github.com/WebAssembly/binaryen/releases/tag/version_28)

<comment><USER22> Yes. Here's the announcement: [https://lists.w3.org/Archives/Public/public- webassembly/2017...](https://lists.w3.org/Archives/Public/public- webassembly/2017Feb/0002.html)

</comment></comment><comment><USER23> What's the point if you can't interact with the DOM? Almost all examples of webassembly just render to a canvas.

Does this mean instead of a normal "native app" I'm going to start getting C applications compiled with wasm and distributed in electron? What does this possibly gain the end user?

<comment><USER22> You're unnecessarily constraining your thinking to the present-day Web. WASM fundamentally expands what's feasible in that domain.

For instance, access to the DOM doesn't really matter for game engines like Unity or Unreal, or for lower level libraries like OpenCV, libsass, or libarchive which you might want to use in your web application.

No one is arguing that WebAssembly will completely replace JavaScript, especially not right out of the gate, but it _will_ be used to optimize hot code paths within JS apps, as well as allowing robust, efficient, native libraries to be used directly on the Web. This is more about the pie getting larger than it is about WebAssembly hypothetically crowding out JavaScript.

<comment><USER23> > For instance, access to the DOM doesn't really matter for game engines like > Unity or Unreal

My point was who _wants_ these to be in the browser? I mean they're cool as demos, but I don't see the use. Is it just people using web browsers as the content delivery platform instead of e.g. Steam?

<comment><USER24> > who wants these to be in the browser

Anybody that resents the user having ultimate control over the _User Agent_. A game in e.g. the Unity engine isn't important. Instead, there are a _lot_ of people that would love to replace their (easily adblockable) web page with a small opaque binary that contains freetype, custom layout/UI library, and maybe "drm"-like obfuscation. You don't need the DOM if you intent to render everything yourself.

At best, we will see a new wave of "flash intro"[1] style "custom user experience" replacing perfectly usable HTML pages. At worst, this could be the catalyst that replaces what remains of the open web with a locked down "cable tv"-like mess.

[1] [http://www.zombo.com/](http://www.zombo.com/)

<comment><USER25> That's an interesting idea, but I'm not sure if it's got any legs for "mostly- content" sites given the inherent unsearchability of that approach.

</comment></comment></comment></comment></comment><comment><USER26> >At least for now, WebAssembly does not support garbage collection at all. Memory is managed manually (as it is in languages like C and C++). While this can make programming more difficult for the developer, it does also make performance more consistent.

I support anything that improves performance and efficiency. But the best of both worlds is always great. I'm wondering if it would be possible to implement reference counting (and maybe automatic reference counting) similar to Objective-C, and if so, would that simply be a matter of the particular language and WebAssembly transpiler you're using supporting it? And are there disadvantages to reference counting that make it a bad idea? I enjoyed using it doing earlier iPhone programming.

<comment><USER27> > And are there disadvantages to reference counting that make it a bad idea?

I thought it had a performance cost.

<comment><USER28> Not much of one. The amount of time it takes to allocate the memory and free it is the dominant factor.

<comment><USER29> Maybe in the non-atomic case. Atomic refcounts force synchronization between CPUs when different threads access the same data, even if they only read it; that can have a quite significant cost.

<comment><USER30> They also tend to prohibit some smart gc optimisations like moving your shit while you're not looking, and the cache behaviour can be bad because either,

\- the data isn't stored next to the count so you get two pointer indirection per access, or

\- the data _is_ stored next to the count, and the object gets cached-in when it gets collected.

Piggybacking on the thread because I haven't had much concrete experience with smart pointers: how does the "circular chain" problem seem to manifest? Is it

\- "goes wrong quickly," usually picked up and fixed without too much trouble,

\- "like any old memory leak" \-- maybe a problem if processes run a long time, hard to track down, or

\- devs are usually smart enough to see them coming, knowing to keep the "has a pointer to" relation a partial order (either by type or some other natural hierarchy.)

?

</comment></comment></comment></comment></comment><comment><USER31> I recall seeing a test compile of some C++ code to WebAssembly instead of JS and on Chrome it was an order of magnitude slower than the JS version. Has the performance increased lately?

</comment><comment><USER32> Javascript is an awfully designed language (it's getting better, but the basics are awful, no ints, crazy comparsions...) I hope that it will die soon and enable everybody to write web apps in a language of their choosing.

This may even end the craze around JS frontend tooling.

</comment><comment><USER33> I can totally see Qt a and .NET apps running on top WebAssembly. Imagine MS Word is running in your browser without them having to rewrite it in JS!

<comment><USER34> WebAssembly won't give you unlimited power. You will still have the browser sandboxing and security / privacy policies in place. Accessing to the local file system is for instance constrained in the browser for good reasons. WebAssembly apps will be able to do what Web APIs let any page do.

<comment><USER35> Is this universally true – i.e. baked in to the wasm spec – or is it just true in a browser environment? Consider things like NW.js[1] or Electron[2] – might we see cross platform apps being developed where all or parts of it are written in <insert language here> and compiled to wasm, then packaged up with a runtime and delivered as a "native" application for desktop, mobile, or whatever?

[1]: [https://nwjs.io](https://nwjs.io)

[2]: [https://electron.atom.io](https://electron.atom.io)

<comment><USER36> What would be the benefit of that? Might as well just compile to native and distribute that without all the overhead, no?

<comment><USER35> I probably should have specified but I was referring to GUI applications specifically. For things without a GUI, or that require deeper system integration than you get with these runtimes you're absolutely right – there's little point. But for a very large class of GUI applications it makes a lot of sense, working with technologies that not only have stood the test of time and are good enough for plenty of use cases, but also mean you can with very little effort package your application for multiple operating systems. Some of these applications will need stronger performance than can be provided by the JS engine, so hence the question re: wasm.

Does that make more sense?

</comment></comment></comment></comment></comment><comment><USER37> "the team working on React could replace their reconciler code (aka the virtual DOM) with a WebAssembly version."

Is anyone working on such a thing?

</comment><comment><USER38> It's both amusing and absurd that what was practically intended as Java's little helper, JavaScript, has grown up to be this thing that might actually replace Java entirely.

How long until there's a really good JVM written in JavaScript of some form and embedded Java apps end up running in JavaScript for performance _and_ security reasons?

It'll be even more ridiculous and hilarious if the "j" in "jruby" ends up meaning "JavaScript".

<comment><USER39> Java and Javascript are related like Car and Carpet are similar. There was no historical connection between Java and JavaScript beyond renting the brand "Java" from Sun to make the language more credible.

<comment><USER40> Well, it's possible that if it hadn't been for Java JavaScript might have had a decent, parens-based syntax.

I still wonder what might have been if Eich had been allowed to write the Scheme system he had been hired to do. While I'm not a fan of Scheme by any means, it is approximately 281,757,423,024,353 better than JavaScript.

And Scheme's a great little language for implementing _other_ languages. Imagine, we could have had transpiling years ahead of time. We might be using S-expressions instead of JSON. Heck, we might even have moved to an S-expression syntax for HTML & CSS by now.

Imagine, one syntax for everything (thanks to [https://www.w3schools.com/js/tryit.asp?filename=tryjs_intro_...](https://www.w3schools.com/js/tryit.asp?filename=tryjs_intro_inner_html) & [https://www.w3schools.com/css/css_howto.asp](https://www.w3schools.com/css/css_howto.asp) for the examples):

        (html (head (title "Example")
                (style (body (background-color linen))
                       (h1 (color maroon)
                           (margin-left (px 40)))))
              (body
               (h1 "What can JavaScript do?")
               (p (@ (id "demo")) "JavaScript can " (em "change") " HTML content.")
               (button (@ (type "button")
                          (onclick (set! (inner-html (get-element-by-id document "demo"))
                                         "Hello JavaScript!")))
                       "Click me!")))

The world could have been so much better.

<comment><USER41> I'm a _HUGE_ fan of Scheme. And of Lisp, in general. But having seen in the "real world" how so many people are so adverse to Lisp's beautiful syntax, I'm pretty confident that JavaScript would never have caught on if it looked like Lisp rather than like C.

<comment><USER40> They wouldn't have had a choice, though, just as folks don't have a choice with JavaScript.

I imagine that folks would have cottoned on to the advantage pretty quickly. And those that didn't … I guess they could have always become telephone cleaners or something:-)

<comment><USER42> Pure Scheme would not be sufficient. You need at least DOM-handling libraries. And if those libraries were poorly designed, then people wouldn't cotton onto the advantage quickly. Look at DSSSL.

<comment><USER43> Because of macros lisps are more resistant to bad APIs than other languages, in my experience.

<comment><USER42> That is a very good point.

</comment></comment></comment></comment></comment></comment></comment></comment><comment><USER44> When compiled from C/C++, does WASM do bounds checking of pointers and arrays? What kind of memory safety does it offer?

<comment><USER45> WASM offers a virtual machine to the user, in which there are global variable slots, a stack for local variables, and one or more "linear memories" (chunks of RAM for heap allocations). The first two are completely bounds-checked - you tell the virtual machine to operate on a certain offset in a global/local variable ID, and you are safe from your access affecting anything outside of that variable.

The linear memories, on the other hand, are up to you - you can execute operations on address within a linear memory, and it's up to you if you messed up and overwrote or read out data that you shouldn't have. What you _do_ get is a) protection against heap overflows affecting values outside the heap, and b) protection against execution of heap data. In the future, they're also planning to support multiple linear memory segments, which would allow you to isolate memory used for potentially-buggy dynamically-allocated buffer code from memory used by less-fragile or more-sensitive code. WebAssembly.org's descriptions indicate that linear memories would be used both for C/C++ heap allocations and for any local/global variables accessed with operators (like the & reference operator) that make it hard to make these distinctions statically.

More information on the security properties of the system: [http://webassembly.org/docs/security/](http://webassembly.org/docs/security/)

General information on linear memory semantics: [http://webassembly.org/docs/semantics/#linear- memory](http://webassembly.org/docs/semantics/#linear-memory)

</comment></comment><comment><USER46> > At least for now, WebAssembly does not support garbage collection at all. > Memory is managed manually (as it is in languages like C and C++). While > this can make programming more difficult for the developer, it does also > make performance more consistent.

Ouch, back to the 80s, early 90s. I think I'll stick with JavaScript at least until WebAssembly gets garbage collection. I might be wrong but I don't see many people writing SPAs in C++ for the extra speed (let's say, the JS layer acting like an X Server for the DOM, driven by a C++/WebAssembly application). Games, yes.

Furthermore JS has view source. WebAssembly has a text format [1] but it's really assembly. Hopefully there will be source maps [2].

[1] [http://webassembly.org/docs/text- format/](http://webassembly.org/docs/text-format/)

[2] [http://webassembly.org/docs/tooling/](http://webassembly.org/docs/tooling/)

<comment><USER47> The lack of GC is a benefit here. Remember, WASM as an MVP is meant to bring C/C++ codebases on the web.

There is plenty to be excited about here. This will enable faster [media apps, games, etc]([http://webassembly.org/docs/use- cases/](http://webassembly.org/docs/use-cases/)) on the web. Wasm is knocking at the door and I can't wait to see what it's bringing with it.

Edit: HN really should support a few more formatting options.

<comment><USER48> It's not a benefit, it's simply a temporary compromise to get it out faster.

</comment></comment></comment><comment><USER49> What makes a compiled executable faster than interpreted code seems kind of self evident.

<comment><USER50> I see what you mean, but it's actually possible for JITed code to be _faster_ than compiled code, as JIT can make run-time optimisations that aren't visible at compile-time.

<comment><USER51> True fact but not really useful if this only applies to 0.01% of the cases.

</comment></comment></comment><comment><USER52> I realize this is about discussing technical merit, but I'd like to share a less naive view of what WebAss does to the web (eg. DRM, making ad-blockers impossible, etc.) over in the [other thread] ([https://news.ycombinator.com/item?id=13755370](https://news.ycombinator.com/item?id=13755370)).

Right now, the discussion evolves around finding fecalia-/coprophilia-inspired names for the WebAss ecosystem. Can't wait until America Awakens to contribute :)</comment>


Timeline: Female Hysteria and the Sex Toys Used to Treat It (NSFW) - <AUTHOR> http://www.motherjones.com/media/2012/05/hysteria-sex-toy-history-timeline <comment><USER2> It's not often that women's sexuality gets celebrated so joyfully and without judgement in the media, this movie looks wonderful. Reminds of the VERY NFSW clip from Burn After Reading: Frances McDormand's reaction is so very satisfying after seeing decades and decades of women in the media being there to service men rather than themselves.

[https://www.youtube.com/watch?v=IUm2Im3SvtU](https://www.youtube.com/watch?v=IUm2Im3SvtU) (HIGHLY NFSW)

</comment><comment><USER3> IIRC, wasn't it pretty common for a doctor to manually stimulate a patient to orgasm as "relief"? I'd guess the toys came after that, as a means to not have to experience that no-doubt awkward "treatment".

<comment><AUTHOR> They developed the toys to make it less work. Automation has been taking jobs for a long time.</comment></comment>


Our Intellectual Property Laws Are Out of Control (2013) - <AUTHOR> https://www.popularmechanics.com/technology/gadgets/a8937/our-intellectual-property-laws-are-out-of-control-15467970/ <comment><USER3> The first step in dealing with these issues, is to have a serious discussion about the term "intellectual property", and whether or not an idea can indeed be "property".

I think a very large part of the problem, is that our society has somehow come to the conclusion that yes, they can be. I strongly disagree. I think a better way to look at IP, is as an "intellectual lease".

When you have an idea, as the person or group who originally conceived of it, you are presumably in the best position to make use of it. You can therefore "lease" from society, the right to use it exclusively for a short, well defined period of time. At the end of that term, your lease expires.

At no point do you "own" the idea, because as soon as you release it into the world, it is already in the minds of many, some of which may be able to put it to better use than you, or to improve it faster than you.

This has several ramifications, including ones that effect creative works too. I posted a few long comments recently about copyright that expresses my view, but to summarise - creative works should have a limited window during which the author or creator can be the exclusive seller of the work (eg copyright should be about restricting who can profit, rather than who can copy). After that time, anybody is free to sell as well. This has many benefits. I used Harry Potter as the example last time as it is well know. Harry Potter now is known by almost everybody. We all know the story, we know the characters. JK has made a ton of money - more money imo, than any one author deserves, but that aside. HP is part of our collective humans story now. If I want to make a mobile game about it, or write a play about it, or adapt it for a new medium, or translate it - why should I still owe the original author royalties when I could reproduce the plot from memory? Again, I use the example of ancient Greece, and the way in which aural story telling was paranount. Stories spread, adapted, becamr part of society. The ones that survived that we have written down are simply one version that would have been told aurally at one point in time. The way that we insist that works and derivative works be set in stone in order to maintain profit is prioritising profit over the joy that is the spreading and adapting of stories that has been central to most human cultures since the beginning.

<comment><USER4> > At no point do you "own" the idea, because as soon as you release it into > the world, it is already in the minds of many, some of which may be able to > put it to better use than you, or to improve it faster than you.

When it comes to patents, even if you don't share the idea, others will come up with it independently. And the patent system is perfectly fine if you patent something then sit on the idea for 20 years and never allow it or any derived products be made or used.

<comment><USER5> > And the patent system is perfectly fine if you patent something then sit on > the idea for 20 years and never allow it or any derived products be made or > used.

This should be banned either way by mandatory licensing requirements under FRAND terms as part of the patent grant, especially if the holder does not actively use the patent.

Too much progress in society/technology is blocked because companies are sitting on patents and not licensing them.

</comment></comment></comment><comment><USER6> The system as we know it needs to be overhauled. We need to scrap everything and then think carefully about what should be patentable with the goal being a system that's good for society. Drugs that cost $1B to bring to market? Seems like they should get some kind of exclusive period though we can argue over what that period of time should be. Software? Nope. Keep copyright law for that, but even there, drastically reduce the copyright period.

<comment><USER7> I think both patents and cooyright should be taxed so that the time progressivity is high. Say first year or two practically free, but if you want to keep your ip at 20 years, it should cost you billions. You can stop paying tax any time you want and your ip moves automatically to public domain. Solves also orphan works. (Yes, I know, Berne convention needs likely to be amended for this to be possible)

<comment><USER8> or treat intellectual property the same as physical property - pay a property tax. The value of the IP is the amount of transfers and licensing it has - <USER2> you cannot hide profit by "selling" IP from a foreign offshore tax haven.

<comment><USER9> I think the value of most IP is to abstract to apply a tax to it. Some patents are extremely valuable, most are worthless. Some are only useful to Patent Trolls, or for defensive purposes, etc.

How would you tax a company that patents something it develops and sells itself? If the products/service they sell involves lots of non-patented features and/or multiple patented features, how do you determine the value of any individual patent?

How do you determine the value of patents effectively licensed through an Agreement Not-to-Sue?

<comment><USER10> You raise a good point. The way how real estate is valued is through a market where each item is looked at individually more or less, but patents are connected.

A possible solution could involve letting the patent owner itself state how valuable owning the patent is to them. They could declare a monetary number X and then do annual payments of say 0.1% of that number. They could adjust the number monthly by statement to the patent office, but would have to pay the tax on the maximum number they told to the patent office within each year. Now comes the core of the idea: the number would be public, and any entity could "free" the patent by paying that amount X to the patent office which then redirects it to the patent's owners after deducting a tax. The patent would then enter the public domain.

So company A invents something, patents it, and claims a billion dollars of value to the patent office. They have to pay a million in taxes annually. Company B thinks it could make a lot more than a billion dollars if the patent got lifted, and pays 1 billion to get rid of the patent. Company A is now 1 billion richer (minus patent freedom taxes), but now has to deal with competitors. So their next patent will have 10 billion as value number.

I'm not sure the idea is good or not, it has some problems, e.g. it might lead to patents becoming even larger than they are today so that they get lots of valuable stuff into the patent's umbrella. Patent offices might become more willing to grant patents for things as they are now a major revenue source for the government, and many patents on promising stuff will need big investors so that they can afford the taxes until the patent matures. Also companies won't be able to plan as well as they are now. Making the tax progressive will help with some of these problems, but maybe not enough and maybe not with all of them.

<comment><USER9> This is an interesting idea. It reminds me of the idea of _" I'll break the cookie in two; you choose your piece."_ I'd have to work through the implications of how this would play out between large corporations, but the most immediate issue I would see with it is for the smallest inventors/companies.

In many industries, a new/small company would never be able to price it's patents out of the reach of its largest competitors, it would put them in the position of either spending huge amounts of their working capital in taxes to defend their patents, or let the patents be sold and compete with their large competitors on production, logistic, and support costs (which is a loosing position for a new small/new company).

It would be even worse in the case of a solo inventor. Imagine you come up with an idea so good it's clearly worth a billion dollars, but only in an industry with a single, or small number, of big players. If that one big player, or several big players collectively, refuse to buy or license your patent, you won't be able to afford the taxes and end up with nothing once it expires (and they are free to use it). If you want to try to develop it yourself, you now need to find a huge amount of additional investment just to cover the taxes.

<comment><USER8> > the case of a solo inventor.

does this actually happen in practise?

If the invention is clearly worth billions (that is, either it is capable of generating billions in value, or save costs of billions in value), then why wouldn't the big players license it?

If these big players openly collude (via contractual agreements for example), then it sounds illegal (or should be).

If these players aren't colluding per se, but "individually" decide to not purchase a license, then the first player that buys the license gets a head- start in their savings/rewards from using the patent.

</comment></comment></comment></comment></comment></comment></comment><comment><USER11> Patent holders and genuine inventors can and will hold the development of technology back.

Just look at the 3D printing market and its thriving ecosystem after the patent on FDM printing expired.

It is the open source community that's innovating, not the bigwig that started 3D printing in the first place.

<comment><USER12> There's obviously a balance to be made with incentivizing inventing though. Some inventions are expensive and nobody would do them without patent protection. Some are trivial though and it's those that are a problem.

Perhaps whether you can get a patent should depend on how much time has passed from when the invention was possible (existence of necessary prior inventions/science/etc.) and when you invented it. If nobody else thought of it for 10 years, maybe it's worth a patent but if it's an immediate consequence of something else, then perhaps it's obvious and deserves no protection.

<comment><USER13> I question that it's obvious that we need to incentivize inventing through any form of IP law.

Let's look at software. Some of the most notable pieces of software, from postgres, to linux, to redis, are available under open source copyright license. Those licenses are intentionally waiving copyright law.

Inventions of those pieces of software happened with no expectation of IP.

Let's look at academic research: research institutes and academic institutes are more interested in getting published, advancing the arts, and improving their own name in the field than they are with patents. A large chunk of ground-breaking research done in academia or research-labs is done with the primary goal of getting a paper published out of it, and whether there's a patent or not, it's not what motivated the research. Often, there is no patent.

In fact, I think the open source software movement is the most obvious example of what happens when you don't have IP. The whole point of open source licenses is to defang copyright law (to use copyright law against itself). In the case of the Apache2 license, it also gives up patent rights. Within the open source software movement, innovation and profit are both common. Both happen in spite of the lack of IP protection.

Why is that the case? Well, software developers who create great things and release it into the open source world often want to increase their talents, increase their recognition, or solve a problem they or others are facing. Those motivations all exist even without IP nor profit motives. Some of them do have a profit motive and create open source software in order to be hired or in order to sell support (or for some other more complex funding model). Those also don't need IP laws to help them.

I admit, software is interesting. It can be argued to be an art in many ways, and it's much easier to accept that artists will continue producing art, even without financial or IP benefits.

However, I think that it's likely other fields where this holds as well. I think that someone who has an idea to improve a part of a car will still wish to publish the idea to gain recognition, or negotiate with an auto company to try and implement the idea to gain both fortune and fame. I think the drug companies will still wish to produce and sell drugs, and their research employees will still attempt to find new and better drugs, even with the only motive being commercial profit, not IP + commercial profit.

I think software provides ample evidence that you can profit off something even when IP is not in play. That the original inventor has enough of a headstart.

<comment><USER11> The argument is that this doesn't apply to innovation that are expensive.

However, I already pointed out that 3D printer are more expensive to develop due to involvement of physical objects rather than just writing line of codes.

In any case, governments are perfectly capable of funding big expensive projects should we wish them to do so.

<comment><USER9> It's difficult to get the general public to support taxes that will fund the repair of degrading bridges, leaking dams, and cracked roadways that may soon fail and actually KILL them. Do you honestly believe you'll find widespread support for government funding of all major industry research?

Also, how does that investment get prioritized? What if the general public decides that some industry isn't worth investment, despite some people believing it is? Without patents, there is no way for the private sector to invest in R&D without just knowingly burning money.

I'm not saying government investment in research isn't a good idea. I think it is, and is something we should be doing more of, but it's not a replacement for patents.

<comment><USER14> Honestly, our general public really hasn't had any direct say in how our tax dollars are spent for most of America's history. Outside of really rare individual referendums, the public doesn't sit down and decide on individual taxes like bridge repair/etc. We're not a democracy; we're a republic.

If you look at polling, virtually everybody in our country would be in favor of repairing bridges/etc. Furthermore, both political parties in every major election for the past few decades have explicitly promised to enact massive funding for exactly this. Ergo - we're all voting in favor of major infrastructure funding - i.e. voting "yes, please, tax me and pay for bridge repair. Do it." The public will is absolutely behind this.

Our real problem is we're terrible judges of character - we elected people who just pocketed the money, instead.

Oops.

</comment></comment></comment></comment></comment></comment><comment><USER15> Popular Mechanics has been popularizing science and technology and promoting inventions for over 100 years. For them to publish an article that comes down so firmly against the current intellectual property laws is significant. It's time for change.

<comment><USER16> You're right, but also the article is over 7 years old. It's been time for change for a long time.

</comment></comment><comment><AUTHOR> Glenn Harlan Reynolds (born August 27, 1960) is Beauchamp Brogan Distinguished Professor of Law at the University of Tennessee College of Law, and is known for his American politics weblog, Instapundit.

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

</comment><comment><USER17> Many people don't know that fashion have very very limited IP protection. It remains one of the most innovative and changeable sectors of the economy...

</comment><comment><USER18> Why our current system needs IP?

Because it is collateral for loans - which is the system we use via Interest Rate targeting to inject money into circulation.

Banking systems from the physical industrial era worked by discounting physical assets. You built a car and then discounted that asset at the bank to build more cars.

That model doesn't scale with ideas and services. Unless you have something that makes ideas and services behave like physical assets.

If we moved to a system where we discounted time instead (ie you can always sell your 8 hours of labour power) then we wouldn't need to fund creativity by bank lending.

</comment><comment><USER19> When the group of people who are supposed to be protected by a law say it's not helpful and the group that enacts the law says it's for their own good, it says a lot about the law and who it is really benefiting.

<comment><USER20> Whether a law or policy gets enacted at the federal level has essentially zero correlation with public opinion, in general: [https://act.represent.us/sign/the-problem](https://act.represent.us/sign/the- problem)

<comment><USER21> Thanks, very interesting. I found their "what the public wants has no impact" hard to believe – well, they have about 4 differently-worded versions of that on that page – so I tried to read the first paper cited,

> Gilens and Page, _Testing Theories of American Politics: Elites, Interest > Groups, and Average Citizens_ , Perspective on Politics, 2014. > [http://scholar.princeton.edu/sites/default/files/mgilens/fil...](http://scholar.princeton.edu/sites/default/files/mgilens/files/gilens_and_page_2014_-testing_theories_of_american_politics.doc.pdf)

In which Figure 1 is the flat graph in the video, showing that about 30% of policies are adopted no matter what percentage of 'average citizens' favor them. For 'average citizen' (what on that webpage they call "the public" and "public opinion") they seem to consider only opinions of the median-income percentile (i.e. 1% of people):

> Policy preferences at the fiftieth income percentile — that is, the > preferences of the median-income survey respondent—work quite well as > measures of the preferences of the average citizen

Also it finds a correlation of 0.78 between the preferences of this percentile and that of "economic elites", yet a -0.1 negative correlation between economic elites and business interest groups, which is surprising.

This seems to me to contradict the "no impact" finding:

> Thus when popular majorities favor the status quo, opposing a given policy > change, they are likely to get their way; but when a majority—even a very > large majority—of the public favors change, it is not likely to get what it > wants. In our 1,779 policy cases, narrow pro-change majorities of the public > got the policy changes they wanted only about 30 percent of the time. More > strikingly, even overwhelmingly large pro-change majorities, with 80 percent > of the public favoring a policy change, got that change only about 43 > percent of the time.

How is that "no impact"? Anywhow, it's an interesting study, I'd love to read what someone who knows statistics better than me thinks of it.

</comment></comment></comment><comment><USER22> I read somewhere that neanderthals were not less intelligent than humans, but humans "won" because being more social animals they can better learn from each other and spread ideas faster. Sometimes I feel like excessive "intellectual property" laws make us more like neanderthals.

<comment><USER23> Anthropologist Joseph Henrik has a theory about H.Sapiens vs Neanderthal using a Copycat vs Genius metaphor explained in the book Humankind [1]

Copycats are 10x more social Geniuses are 100x more inventive

1 in a 1000 Copycats will invent a new fishing rod but will share this knowledge with 10 others

1 in 10 Geniuses will invent the new rod and only teach to 1 other

Given a 50% sucess rate for learning:

A max of 1 in 5 Geniuses will ever have the new Fishing Rod knowledge in a population (50% invented and 50% learned)

Copycats will get to 99.9%

[1] Humankind: A Hopeful History [https://www.goodreads.com/book/show/52879286-humankind](https://www.goodreads.com/book/show/52879286-humankind)

also

[2][https://aeon.co/essays/forget-the-lone-genius-it-s- copycats-...](https://aeon.co/essays/forget-the-lone-genius-it-s-copycats-who- drive-progress)

</comment></comment><comment><USER24> Today they serve control freaks who use them to dictate policy. Slap DRM on anything and then use anti-circumvention provisions to outlaw whatever you want because "breaking DRM is illegal".

</comment><comment><USER25> A hobby of mine is to wander into libertarian communities and ask if there's such a thing as "intellectual property," then walk out whistling.

<comment><USER26> As a libertarian, that's hilarious!

</comment></comment><comment><USER27> Note this is from 2013</comment>


Silencing immune attacks in type 1 diabetes - <AUTHOR> http://vectorblog.org/2013/06/silencing-immune-attacks-in-type-1-diabetes-without/

<comment><USER2> I can't tell you how excited this makes me, even if it's a long way off. Here's to hoping this can cure me and so many others.

<comment><USER3> Having worked at a startup aimed at providing efficient diabetes management, it's exciting to see research that might instead lead to a cure. I also sincerely hope this research leads to such developments.</comment></comment>


Hackers manifesto by antisec [video] - <AUTHOR> http://www.youtube.com/watch?feature=player_embedded&v=99wmw6ZdlWA

<comment><AUTHOR> The original manifesto text is from January 8, 1986</comment>


I created IdeaWave as I couldn't afford TED ($7k) or IdeaCity ($3k).  - <AUTHOR> http://www.ideawave.ca/2012-conference/

<comment><USER2> We get to hear a speaker explain how to tap into the secret behind dowsing rods to build a space drive?

Sounds...um...never mind.

<comment><USER3> There is also the guy who is advocating the use of low level radiation to improve health. He is pictured on his website wearing radiation emitting glass beads around his neck.

I'd say that the acceptance standards are low. Some of the presenters seem to be involved in pseudoscience and others seem to be of generally low quality. I'm also questioning the wisdom of allowing only ten minutes per speaker. Most Ted talks seem to go a lot longer, and I would want more than a ten minute conversation on an interesting topic.

[http://www.ideawave.ca/2012-conference/low-level-external- nu...](http://www.ideawave.ca/2012-conference/low-level-external-nuclear- radiation-can-improve-health/)

<comment><AUTHOR> I really look forward to the low level radiation to improve talk, I've read his research and it is really interesting. I have two science/techy types who verify all the talks, so there is some verification. You can read about the submission and approval process at: <http://www.krisconstable.com/ideawave-2012/> as well as in the Times- Colonist: [http://www.timescolonist.com/Conference+swamped+wave+ideas/6...](http://www.timescolonist.com/Conference+swamped+wave+ideas/6177199/story.html) Ian is a lot more science than magic hand wavey then you may think; he's built a hydrogen assisted sailboat, and spoke at IdeaWave before on his rediscovery of nickel-iron batteries that the Thomas Edison battery company made disappear: <http://www.youtube.com/watch?v=dO0-mGrWcjo> along with a another few decades of inventions and innovation. I hope you get a chance to attend the conference and dialog with him!

</comment></comment></comment><comment><USER4> Wow! You created your own conference. Extremely awesome.

As someone who wants to do the same thing (and has the contact network to feasibly do it), I am extremely interested in knowing how you did it :) Any pointers?

Edit: Also, I would be happy to join in on your project. As in become your assistant organizer or something like that. I am awesome at finding interesting talent and getting it to work for free :) Email me for more info :)

<comment><AUTHOR> Thanks, I appreciate the feedback! A couple of pointers: 1) Just do it. When in doubt, if you've got the resources to make it happen, the worst case is you'll learn a few things on how to make it better. 2) Bring in your network to help you out. I'm also lucky to have a large network, but it was awkward telling close friends that I didn't accept their talk, so I brought in a diverse team who reviews all of the talks now. If you have any questions, don't hesitate. I'll be sure to email you, thanks again!

</comment></comment><comment><USER5> You may also enjoy the BIL conference taking place quite soon on March 3-4: <http://www.bilconference.com/>

<comment><USER6> My favorite story about BIL was that it was originally hosted _across the street_ from TED. So a lot of TED participants would roll over to BIL to enjoy its lower-key vibe.

This unfortunately is no longer the case, because TED has moved to a new city.

<comment><USER7> you know, we have a ton of TED speakers coming to BIL this year...

</comment></comment></comment><comment><USER8> Or could have hosted an Ignite - even multiple ones :) Greetings from Ignite Taipei <http://ignitetaipei.tw>

</comment><comment><USER9> Unfortunately, I'm out of the country or I might have made the trip over to the island. Best of luck with this.

For your future conferences, you may have better luck not having your event at the same time as TED. Though you may not be attracting the same speakers, you may be able to attract some of their audience, and some of their audience may make excellent speakers for your event.

</comment><comment><USER10> The first Weapons of Mass Creation in Cleveland was community funded on Kickstarter 2 years ago, and keeps getting bigger.

It can be done, best of luck to you

EDIT: link (<http://wmcfest.com/>)

<comment><AUTHOR> Kickstarter doesn't support Canadians, but thanks for the pointer!

</comment></comment><comment><USER11> It costs money to put on a TED talk? As in, TED charges you to speak?

<comment><USER12> <http://www.ted.com/pages/registration> Look at "Price of Attendance"

<comment><USER13> Incredible that they are able to charge what they do. Talk about perceived value! Base level of ~$7.5k gets you:

\- 1 year community membership

\- admission to a conference + meals and events

\- TED book club (4x/year)

\- online social network

But apparently $5k of that is tax deductible? Interesting.

<comment><USER14> I actually think that their business model is awesome. The fact is that the general populace is not about to fund a bunch of ~20 minute speeches from various luminaries, but at the same there is undeniable value in getting well- prepared and important thoughts from a bunch of excellent speakers archived and available in perpetuity online. So rather than trying to produce value from a consumer who may see little value beyond a brief mind-bending video, they turn it into an exclusive charity club. Taken on its own, it appears to be a way to sleeze $7k out of pretentious rich people, but they do actually provide a lot of intellectual sparks to the benefit of the world outside.

</comment></comment></comment></comment><comment><USER15> So are you going to post videos of the talks on YouTube? It would be really nice.

<comment><AUTHOR> Yes! You can see the first year's videos online now: [http://www.youtube.com/watch?v=GBQMVF7CPuc&list=UUIpFa-L...](http://www.youtube.com/watch?v=GBQMVF7CPuc&list=UUIpFa- LdeEcPWZe1aVTYALg&index=10&feature=plcp) I hope to start posting the 2011 videos this week.

The pirate ship of Theseus talk would probably also interest hackernews readers and/or Canadians, as it's perhaps even more politically relevant today as it speaks about copyright.</comment></comment>


Cost of owning a BMW i3 - <AUTHOR> https://tomkiss.net/life/cost_of_owning_a_bmw_i3 <comment><USER2> Their i3 isn't even an electric car, it's a hybrid with a petrol engine (range extender).

The title claims the content is somehow about electric cars in general, but it's just one datapoint about one model and one owner. FWIW, my maintenance costs for almost 3 years with a Tesla S90D were so far: €290 for changing and storing winter tires. No repairs, no breakdowns so far, despite some abuse on italian country roads. Yearly cost for insurance and (0) tax was half as much as the 530xd I owned previously.

<comment><USER3> Your costs for a ICE car wouldn't be much more. There were be a few oil changes in there, but they are not expensive.

<comment><USER4> After 20 years, I'd expect it to be different. We have a '99 Honda CRV, and a significant chunk of the money we've paid for maintenance in the 12 yrs we've had it has been for the exhaust system. Over time, on any car, brakes will eventually need replacing, electrical bits will fail and need replacing, bits of your suspension will need replacing, and so on.

<comment><USER5> You expect owning an electric car to be different, yet Teslas also have the very systems you mention will wear out -- brakes, electric bits, etc -- making them comparably consumable to any ICE or hybrid, especially after 20 years of daily driving (like your CRV).

I would imagine any car heavily dependent on advanced sensors and electronics to cost _more_ to maintain than traditional cars, especially after the first few years. And those parts will likely cost more than a muffler.

<comment><USER6> Tesla brakes are rarely used because the majority of your braking is regenerative. They're rated to about 150k miles before needing service for the Model 3.

</comment></comment></comment></comment></comment><comment><USER7> Site getting hugged.

[https://web.archive.org/web/20190828121621/https://tomkiss.n...](https://web.archive.org/web/20190828121621/https://tomkiss.net/life/cost_of_owning_a_bmw_i3)

</comment><comment><USER8> I recently got a used Leaf with about 70mi range for around $7000 (total cost including fees, tax, etc.). It's extremely low maintenance (no ICE at all) and while I haven't done math in this detail yet the "fuel" price even at California's higher electricity rates is less than half the cost of gasoline per mile driven. Once you factor in the relative lack of maintenance it's much cheaper to operate than an ICE.

Overall if you don't need really long range a used Leaf is a great deal. You can get them in virtually mint condition for under $10k. Just be sure to research and check out battery health. There's an Android app called LeafSpy that will use a Bluetooth ODBII dongle (these are cheap) and can query lots of detailed battery info so you can check out battery health after buying. Mine was about average in terms of capacity loss for its age and it gets around 70 miles per charge without issue.

Also note that the Leaf's mileage estimate tends to be a little pessimistic, at least in my experience. My guess is that it's designed this way to avoid stranding the driver. Gas cars are often a little pessimistic too for the same reason. They give you a bit of a reserve.

<comment><USER9> What's more, many of the Leafs are still under factory warranty when they're sold for a fraction of their new MSRP.

I bought my 2011 Leaf when it was just about three years old and had somewhere in the neighborhood of 22k miles on it and paid somewhere around $6k.

I figured it was a pretty safe buy because the car still had plenty of miles left on the warranty.

I never had to make use of that warranty though; truly the best fit & finish of any car I've owned. Reliable & by far the best value of any car I've ever purchased.

After eight years, capacity is running down... somewhere around 40 miles per charge in the summer now... but that's perfect for my use-case. I'm looking forward to many more years with minimal maintenance costs. Once the battery capacity gets low enough, I'll spring for a new battery.

<comment><USER8> There are companies working on aftermarket battery upgrades. There's one that has a module that lets you put a newer 40kWh battery in an old Leaf. Such batteries can be purchased from junked/totaled Leafs. There's another out there working on some kind of emulated battery module. Neither of these are quite ready yet but the market is there so I assume such upgrades are coming.

</comment></comment></comment><comment><USER10> Very detailed writing, thank you! But this "Costs for maintenance totalled £3056.0" is shocking! It's a golden car! Ok, it has internal combustion engine too, but 100€ maintenance monthly is shocking. 8 tires for 45000 km is also shocking. I am driving almost double that with one set (except nasty flats). Are other electric cars cheaper to drive?

<comment><USER11> While motorcycles and cars aren't the same; I've found tires for them are really expensive. I can get about 3000-10000 miles on a set, and the sets are $450 installed. There's cheaper tires out there, but good tires are a safety feature on them really and make a huge difference.

I always bought really cheap tires on my really cheap clunker cars and never knew the difference. I wonder if it's just volume of cheaper tires, or if expensive rubber is just more expensive?

<comment><USER12> Motorcycle BHP per tonne, and tyre contact patch explain most of a back tyre's life. The contact patch and lean alone for the front. Counter steering _has_ to be rougher on tyre life.

Buy a 400BHP+ Ferrari or 911 and you can get car tyre life right down to similar levels. They'll now be $300-$500+ a corner for being super wide, super low profile, sticky things. $2,000 in tyres every service... A sporty V8 of a couple of decades ago could easily give 6k miles front, 3k back. With higher powers now, who knows.

If you could get really cheap clunker type rubber for those cars, you'd probably be just a few miles from wrapping it round a lamp post. First time you press the loud pedal with enthusiasm most likely. :)

</comment></comment></comment><comment><USER13> It's worth mentioning, at 10k miles per year this driver is significantly above the UK average of 7k. EVs are more advantageous the more they are driven, anyone buying one should do the math for their expected mileage.

<comment><USER14> Thank you for posting that. If they are in the US, 10k is considered low mileage per year. For working age adults, 18k is considered average.

Source: Bc I'll be asked ;) [https://www.fhwa.dot.gov/ohim/onh00/bar8.htm](https://www.fhwa.dot.gov/ohim/onh00/bar8.htm)

<comment><USER15> Wow. 18k is nuts. 50 miles a day? We lowered our last lease to 10k and wont even be close at end of the year.

<comment><USER16> I think there are two things at play here:

1\. The US is much larger than the UK, with a lot of nothing/low population density.

2\. Mentality might be different: I imported my current car used from the Netherlands; the country is tiny, but the Dutch seem really like driving a lot. I saw many cars with 30k miles per year on them.

<comment><USER17> Do people in the US really drive to through the country that often? I guess people drive maybe 2000-3000 km a year for holidays, e.g. to skiing resorts in winter or to Italy in summer, but even that isn't average.

I'd say most of the drives are commutes to work and shopping.

<comment><USER18> When everything is twice as far away, it adds up. My wife and I work from home and we still manage 10,000 miles a year on the car. That's driving kids to school (just a couple miles each way), going grocery shopping (10 miles each way), driving kids to swim lessons (10 miles each way), going to grandma's house (120 miles each way), our one vacation (150 miles each way)

There's also zero useful public transportation for us. If I worked in the city, I could take the train, but it's 4 miles to the train station.

</comment></comment></comment></comment></comment></comment><comment><USER19> I think this might have been posted here before, but think this is an interesting comparison as well: [https://cleantechnica.com/2019/06/22/toyota- corolla-vs-tesla...](https://cleantechnica.com/2019/06/22/toyota-corolla-vs- tesla-model-3-5-year-cost-comparison/) It is US centric though, so not a perfect comparison.

So far I have had no issues with my 3. $115 for tire rotation and state inspection is the only thing I have spent any money on so far in 15 months and over 20,000 miles. So that is less than $10/month in maintenance. And I am spending about half as much in electricity as I was for gas. The insurance was a big jump from a 2011 Ford Focus, but that car has cost significantly more to maintain in the same time frame.

</comment><comment><USER20> I owned 2 different Chevy Volt's for a total of 5 years. The maintenance was normal tire wear. Aside from that, oil needed to be changed every 20,000 miles.

I never ran into a single maintenance issue other than the standard. It was the lowest maintenance vehicle I've ever owned.

</comment><comment><USER21> Too bad, AFAIK, the i3 REX (with range extender gasoline engine) is hobbled by a tiny gasoline tank. The total range is something like 200 km: 100 electric and 100 gasoline.

With my current car I can drive to the summer cottage and back with one tank. It's just carefree and convenient. With an i3, even when starting with full charge, one would have to tank about halfway each way.

It is hard for me to understand such design decisions. I have heard that in some countries the gasoline range must be less than electric range to secure some tax credit.

Edit:

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

REx 60 Ah: 116 km (72 mi), Total: 241 km (150 mi)

REx 94 Ah: 156 km (97 mi), Total: 290 km (180 mi)[12]

<comment><USER5> The small gas tank was needed for the car to qualify for a California tax break as an electric car rather than being a hybrid.

[https://www.autoblog.com/2013/10/28/why-the-bmw-i3-has- such-...](https://www.autoblog.com/2013/10/28/why-the-bmw-i3-has-such-a-tiny- gas-tank/)

<comment><USER21> I wonder why they didn't make one for the European market with a bigger one? It could have been a huge success.

Most of your yearly distance would be covered by purely electric driving, yet you would not have range anxiety and you could still make those long trips with your car as well.

Would also be good for the environment as one wouldn't need to tie needless resources for a rarely needed big battery.

</comment></comment></comment><comment><USER22> TCO is supposed to include the total cost; buy a car that didn't cost 17,400 and your price goes down considerably.

      Cost of car:         17,400
      Fuel:                712.99
      Maintenance:         3,056.08
      Other:               940
      TCO over 3 years:    22,108

Buy a 5,000 used car, and your 3-year TCO goes down to 9,708. But that's gonna be gas powered, so you have to lower the maintenance and raise the insurance and gas. And higher cost per mile means the amount of miles you drive matters more.

<comment><USER23> Minus the 11 grand for selling it after, no?

<comment><USER22> I don't think that's a useful measure. You really don't know what, if anything at all, you will get back after 3 years.

If you total your car and you have good insurance, you _might_ get reimbursed its remaining value, which might be about market, or nothing. If you have a loan out on the car, better hope it didn't depreciate faster than the loan payment takes, or you take a loss. Or maybe you don't total it, sell it privately, and get more than on a trade-in. You don't know what the market will bear, you don't even know if you'll have ended up with a lemon. But even if you do get money back at the end, how old it is, whether its insurance or maintenance costs more, etc will all affect sales later.

I think purchasing a car with an expectation to regain value is gambling. I'd prefer to buy something I'll drive into the dirt, whether used or new, for a more certain financial outcome.

</comment></comment></comment><comment><USER24> typo in title: owing --> owning

</comment><comment><USER25> The title should be "Cost of owning a bad electric car (that is actually a hybrid car)"

</comment><comment><USER26> I wonder why he's getting rid of the vehicle.

<comment><USER27> Three year leases are common in the UK

<comment><USER28> OP says he bought the car privately.

</comment></comment></comment><comment><USER29> site unavailable</comment>


Ask HN: What CI/CD server/service do you use? - <AUTHOR> I heard so many people, read so many blog-posts on Jenkins, it's integration with many tools with it's plugin architecture, but also about TravisCI and how much it helped the OS community to build quality software for free, but I'm curious about other solutions and how well they work.<p>What are you using? What criterias did drive this choice? Would you do it differently? <comment><USER9> I'm using GitLab CI. I use GitLab.com for the free private git project hosting. GitLab.com has free CI servers available (even for private projects) that work well if you don't need to run builds all the time. A lot of people use their shared CI runners, so your jobs/builds might take several minutes before they start running. If you have a larger need, you can always host your own runners (software is FOSS).

GitLab's CI has a pipeline design, so (like Jenkins) you can have some jobs wait for other jobs to complete and use their build artifacts (e.g. have a single build job that downloads deps and compiles everything so later jobs don't need duplicate that work), and you can have jobs only be triggered manually instead of on every push.

It's not perfect, though. For instance, unlike TravisCI, you don't have a build matrix, but you can use YAML tricks to define template jobs (see GitLab's own CI file [0] and a resulting pipeline [1]). If you use GitLab.com, you should be aware that they have downtime a few times each month, both planned and unplanned. For their planned downtime, it is often during the work day in the US timezones, and usually lasts between 10-30 minutes (though it has been longer before). GitLab.com is also used as a "testing in production" environment for their monthly releases, so you will occasionally run into bugs (usually nothing showstopping though; mostly minor annoyances).

I think that what you choose greatly depends on what you need. GitLab CI is a little opinionated, but it is still pretty flexible and usable for a large number of work cases. If you need a ton of customizability, Jenkins could be a better option (with plugins). GitLab CI is a lot easier to setup, however.

GitLab CI also has CD features that you can look into (I don't use them myself). They are also constantly (i.e. every 22nd of the month) releasing new versions, and most of their features are open source.

[0]: [https://gitlab.com/gitlab-org/gitlab- ce/blob/master/.gitlab-...](https://gitlab.com/gitlab-org/gitlab- ce/blob/master/.gitlab-ci.yml)

[1]: [https://gitlab.com/gitlab-org/gitlab- ce/pipelines/6014043](https://gitlab.com/gitlab-org/gitlab- ce/pipelines/6014043)

<comment><USER10> Do you use it for building docker images? I can't work out how to tag my images with versions. They all become "latest". Do I have to change the gitlab config file every push?

<comment><USER11> I came to second Gitlab CI. I build all of my docker images in Gitlab CI and tag them. The trick is to use the gitlab ci environment variables (I tag with with the git tag or the git branch name depending using this method). If you would like to get a bit more help, feel free to email me. My username here at gmail.

<comment><USER10> That's very kind of you. Thanks. I think I understand how you do it. You just tag the git commit and get that value in the build by using $CI_BUILD_TAG?

The description for that variable says it's only available when building a tag. Does that just mean the commit needs to be tagged before a push?

Update: I just found this, which is probably exactly what I want to do: [https://github.com/gitlabhq/gitlab- ci/issues/637](https://github.com/gitlabhq/gitlab-ci/issues/637)

Update 2: Wait. What? This doesn't sound right. Now I'm confused: [https://docs.gitlab.com/ce/ci/yaml/#tags](https://docs.gitlab.com/ce/ci/yaml/#tags)

Update 3: It seems those are 2 different types of "tag", both mentioned in the same configuration subobject. Crazy.

<comment><USER11> So yes, you got it! They use the word "tag" in two totally different ways which is confusing.

When you create a gitlab-ci runner you can "tag" the runner. Basically, this is like a named server. For instance, I have a general gitlab-ci runner which I use to run most of my builds. However, I found that I need a special runner just for building docker images. So most of my jobs in my gitlab-ci are marked with:

      tags:
       - <USER2>

Where as my docker build job is marked with:

      tags:
       - docker-builder

This basically pushes the job to a specific runner and has nothing to do at all with the git ref (which could be a branch name or a tag or whatnot).

Now when do I build docker containers? I actually don't use "git ref tags" (i.e. git tag v.1.16.001 or something). I have a development branch, a staging branch, and a production branch which tie to my environments (dev, staging, and production). So my job runner looks something like this:

      stages:
       - <USER3>
       - <USER4>
       - <USER5>

      docker_build:
        stage: build
        script:
         - do some stuff
         - docker tag container-name:$CI_BUILD_REF_NAME $AWS_ACCOUNT_ID.$AWS_ACCOUNT_REGION.amazonaws.com/container-name:$CI_BUILD_REF_NAME
         - docker push $AWS_ACCOUNT_ID.$AWS_ACCOUNT_REGION.amazonaws.com/container-name:$CI_BUILD_REF_NAME
        tags:
         - docker-builder
        only:
         - <USER6>
         - <USER7>
         - <USER8>

So basically once the tests pass, and IF the branch is development, staging, or master, it will build the docker container, using the CI_BUILD_REF_NAME as the tag and then push that to my private aws container storage system. The AWS_ACCOUNT_ID and REGION are both environment variables I have injected previously. If that succeeds it moves to the deploy stage.

<comment><USER10> Thanks for taking the time to share your experience. What's the difference with your docker runner? I've been building docker images just fine without specifying a runner.

<comment><USER11> I run most of my runners as Docker runners and I was having issues with a Docker runner building a docker image. So I swapped to a different method. But I haven't tried it in a while. I might be able to use the same Docker runners now. Seems like a good time to test it!

<comment><USER10> Okay. Thanks again.

</comment></comment></comment></comment></comment></comment></comment></comment><comment><USER12> Codepen recently published podcast episode [0], where they tell why they spitched from GitHub to GitLab. Built in CI solution was one of the reasons. If you don't want to listen the whole thing, there's also a transcript: [1]

[0]: [https://blog.codepen.io/2017/01/24/114-gitlab/](https://blog.codepen.io/2017/01/24/114-gitlab/)

[1]: [http://gitlabfan.com/ce4d016e0eec](http://gitlabfan.com/ce4d016e0eec)

</comment><comment><USER13> I use Codeship [1] for personal (private) project and Travis CI [2] for open source ones. I had also use AppVeyor [3] for one of my Windows web app project.

I chose Codeship since it was the only one (at the time) that had BitBucket integration. The free tier (100 builds / mo) was more than enough for my side projects. In addition, it supports a lot of deployment targets (e.g. ElasticBeanstalk and Heroku).

I use Travis CI for open source projects initially since it is what everyone uses :) However, one feature that I find really useful is the test matrix. I used it to test my project against different Java version and Cassandra distribution versions [4].

I use AppVeyor on one of my side project (which lies dormant now) since needing to test against both *nix and Windows build (a .NET / Mono web application).

[1] - [https://codeship.com/](https://codeship.com/)

[2] - [https://travis-ci.org/](https://travis-ci.org/)

[3] - [https://www.appveyor.com/](https://www.appveyor.com/)

[4] - [https://github.com/builtamont-oss/cassandra- migration](https://github.com/builtamont-oss/cassandra-migration)

</comment><comment><USER14> After being a Jenkins person for years I recently started playing around with Visual Studio Team Services, Microsoft's hosted TFS product: [https://www.visualstudio.com/team- services/](https://www.visualstudio.com/team-services/).

You don't have to use TFS as the backend as git is supported and all of your build and release stuff is under the same roof. They have added a lot of "tasks" for most of the popular languages but worst case is you can always run shell commands to do stuff.

The UI leaves a bit to be desired (I think) but for the most part I can live with it.

Full disclosure, I work at MSFT but have been a Linux/Open Source/non-ms person for most of my career.

EDIT: With all of that being said I do like Gitlab because it offers many of the same features (code repo, builds, etc) and am using Gitea/Gogs on my own VM for repo mirroring from Github.

<comment><USER15> Have you taken Jenkins Blue Ocean [1] and Declarative Pipeline [2] for a spin since moving to TFS? We are quickly modernising everything from the UI to the way you manage your Pipelines in version control. Would be very interested in getting your thoughts on how we stack up now vs your past experience :)

[1] [https://jenkins.io/projects/blueocean/](https://jenkins.io/projects/blueocean/) [2] [https://github.com/jenkinsci/pipeline-model-definition- plugi...](https://github.com/jenkinsci/pipeline-model-definition- plugin/wiki/getting%20started)

<comment><USER14> I haven't yet but I did look at it awhile back. I'll try and set aside some time to spin it up and take it for a test drive, thanks for the reminder!

</comment></comment></comment><comment><USER16> Some guys in our workplace have been investigating Concourse CI and like it over Bamboo which we currently use.

[https://concourse.ci/](https://concourse.ci/)

</comment><comment><USER17> We use Jenkins, hosted on Amazon. We're .NET stack, so some of the other options didn't work.

Biggest lesson for us: Avoid putting all your logic into Jenkins templates. You're not capturing your CI/deployment logic in version control, and this can cause problems down the road (we backed up Jenkins regularly, but versioning was a weak point).

Instead, do as much as you can in scripts, and use Jenkins as a glorified crontab (+webhooks).

<comment><USER18> > Biggest lesson for us: Avoid putting all your logic into Jenkins templates. > You're not capturing your CI/deployment logic in version control, and this > can cause problems down the road (we backed up Jenkins regularly, but > versioning was a weak point).

We've found the Job DSL plugin pretty useful for backing jobs up. [https://wiki.jenkins- ci.org/display/JENKINS/Job+DSL+Plugin](https://wiki.jenkins- ci.org/display/JENKINS/Job+DSL+Plugin)

<comment><USER15> I'd also second the Job DSL plugin if you want to keep all your Jenkins config in version control.

Its also worth looking at replacing all your freestyle jobs with Jenkins Pipeline and have the job definition defined in a Jenkinsfile in your repository. We've got a new syntax coming out of beta shortly that makes the experience a lot more declarative thats worth a look [https://github.com/jenkinsci/pipeline-model-definition- plugi...](https://github.com/jenkinsci/pipeline-model-definition- plugin/wiki/getting%20started)

</comment></comment></comment><comment><USER19> I use GitLab not only because it's built in but because I've also had a really smooth experience with them.

They might be slower than others, but imo all development is made locally so I don't mind if sometimes it takes more than 5 minutes (used to take longer but they have improved a lot!).

I've only waited for like 30 minutes once. I would definitely recommend it.

<comment><USER11> For my larger business projects (the ones that make money) I finally broke down and ran my own runners. I never have to wait anymore!

I do love gitlab ci.

</comment></comment><comment><USER20> I've used various CI/CD server/services in the past. As with so many tooling questions this is one of those 'depends' situations.

Jenkins is okay but you have to really stay on top of the build environment (not just a specified in Jenkins itself but also the OS and tooling on the Jenkins server and build machines).

I'm in the process of building a new CI/CD pipeline and this time I'm using Concourse. This is a good fit because the target system is largely containerised (not that Concourse can't be used elsewhere, it can, but it's just a coincidental fit). Additionally, Concourse addresses the problem identified by Cpoll as, unlike Jenkins et al, Concourse pipeline, build plans, and tasks are 100% available for version control.

That all said, I can't comment on Concourse's foibles as I've not used it long enough to uncover them :)

</comment><comment><USER21> We were locked into an Atlassian stack when they discontinued Bamboo and Pipelines wasn't ready for production (nor a good fit for us).

We ended up going with a service called Buildkite, which is almost a drop-in replacement. They even had docs specifically about migrating from Bamboo, and in general their documentation has been excellent.

We really like having full control over the test execution environment despite not being ready to start using Docker, and we've been pretty happy with the service itself as well as the tech support we've received. I might choose something else for a different company, but this is a very good fit for us.

</comment><comment><USER22> Nice to see GitLab CI getting some love on this thread.

I have to polish it yet but my notes for teaching GitLab CI (one-day course on the basics of it) are available at [https://gitlab.com/atsaloli/gitlab-ci- tutorial](https://gitlab.com/atsaloli/gitlab-ci-tutorial) and may help one get started with it.

</comment><comment><USER23> I've been using GoCD for the past couple of months and I'm really liking it so far. Its very flexible and relatively straight-forward to setup on your own VM. The plugins work similar to the way Jenkin's does it. Also the UI is very clean.

</comment><comment><USER24> I've used Jenkins in the past and Bamboo right now without any issues for CI and a little bit of CD through custom scripts. Granted this has worked well for under 30 engineers, so i'm not sure how bigger teams do things.

</comment><comment><USER25> Semaphore [0] is great. It was the only place where I could get selenium tests to work reliably.

[0]: [https://semaphoreci.com/](https://semaphoreci.com/)

</comment><comment><USER26> CircleCI

I'm considering GitLab for the built in CI, as long as it works painlessly with Heroku.</comment>