Bazel Release 1.0 - <AUTHOR> https://github.com/bazelbuild/bazel/releases/tag/1.0.0 <comment><USER2> Bazel may be 1.0 and the internal abstractions of dag solving etc are rock solid from years of use inside Google, but the ecosystem around Bazel is quite bad at the moment. They've been breaking backwards compatibility constantly, so rules authors have struggled to keep up (hopefully done now that it's 1.0).

The reason the ecosystem maturity is so important for bazel is because its design encourages complete reimplementations. The rust packaging rules for bazel reimplement a subset of cargo's features from scratch. The docker rules reimplement image building from scratch (they don't actually use docker). The (Google maintained) python rules shell out to pip, but it's got a ton of problems, some packages are unbuildable, and it busts the cache constantly and redownloads everything.

If you're using C++ or Java, I can heartily recommend Bazel as an improvement to your current tool. If you're using anything else, hold off until the ecosystem is more mature.

I can believe all of these reimplementations are worth it for hermeticity, but I seriously doubt most shops need the extreme hermeticity Google does. It's a thing that really matters at gargantuan scale.

<comment><USER3> What are the reasons to prefer Bazel to Maven or Gradle foe Java? I know it is supposed to be faster but on the other side last time i checked it it was much more complex and time consuming (expecially compared to Maven). Are there other good reasons?

<comment><USER4> I think for Java projects Bazel is a very bad choice. Last time I've checked it was not even able to resolve dependencies transitively. And I doubt that it's faster than recent versions of Gradle.

<comment><USER5> I very much doubt that it's faster than Gradle, but Gradle does do quite a bit more than Gradle.

<comment><USER6> Bazel incremental build is much much faster than Gradle, if you follow the one-package-per-build rule.

</comment></comment></comment></comment></comment><comment><USER7> I've been using Bazel full time for over two years now to build Java/Go/Containers/gRPC and everything in between, and I must really say that it's one of the best tools that I've stumbled upon.

A huge congratulations to the Bazel team for shipping 1.0!

<comment><AUTHOR> It really is that good. I've been using it only over a year, but I've done a lot of build system work with different tools and Bazel stands out.

Most other tools seem to be competitors to Make (SCons, Jam, tup), souped-up scripting systems (Ant, Gradle), or configuration toolboxes (CMake). The ones that really stand out are the tools that tackle the problem of expressing builds in a way that's both expressive and declarative. In my mind, these fall into two families: Gyp and Bazel (which includes Buck, Pants, Please.build, and that new custom thing Chrome uses).

(And then there's Ninja, which I appreciate for taking a good / useful _subset_ of Make's features and doing it really well.)

<comment><USER8> I use bazel at work heavily in a very large project. I've always worked with scripting languages so I'm much less familiar with build systems.

I'm not sure I get what makes bazel so good. It seems pretty simple to me. You have a bunch of directories with BUIILD files that are each sort of like Makefiles.

Am I missing something? It kind of just seems like a hodgepodge of scripts. I don't dislike it, but I'm also not seeing anything amazing.

<comment><AUTHOR> I'll take a stab at it, since I've done some migrations to Bazel (and also _away from_ Bazel). The comparison to Make and makefiles is good because Make, unlike some other build systems, is mostly declarative. Most of your makefile is going to declare what the inputs and outputs are.

If you use Make long enough, there are some obvious improvements you want. Multiple outputs, rebuild when options change, and easier cross-compiling are the top ones. Various build systems attempt to add these features. In my mind, Ninja is the only build system that added these features well, and it worked because Ninja removed all the other features to focus on just the build process (as opposed to specification / configuration).

If you think about these problems with Make, you realize that it kind of boils down to one big thing: you want your build system to always rebuild when necessary, and you want it to almost never rebuild when unnecessary. (Plus the bit about cross-compiling.)

Other build systems rely on the developer writing the build scripts to just "get it right". Bazel is different because it sandboxes the rules to enforce hermeticity. In Make, I can include "pear.h" which includes "orange.h", but let's suppose that "orange.h" is actually a generated source file… now, try writing this out in a Makefile (if you're a masochist, say you're cross- compiling). Yes, "orange.h" should be declared as an input to anything that includes "pear.h", but in practice, developers are going to screw it up. At that point you can end up with a build that uses two different versions of "orange.h".

Bazel sandboxes the commands so that any rule not declared to depend on "orange.h" will not be able to open "orange.h" at all. The process won't see the file at all.

This opens the door for all sorts of optimizations and query features that are simply unreliable if you have to trust that human developers are writing the rules correctly. These optimizations, for large projects, result in radical build time improvements. For most build systems, a shared build cache would come with a risk of bad cache entries, but with Bazel, the risk is substantially lower. It's also easier to get reproducible builds, which make it _substantially_ easier to do certain types of auditing.

<comment><USER9> Bazel (and Bazel-derivatives/alikes) is not unique in fixing all of these problems. For example, there is build2, which is arguably a lighter-weight and closer to make (in spirit, not in syntax) solution (no Java dependency, etc). Here is an intro, if anyone is interested: [https://build2.org/build2/doc/build2-build-system- manual.xht...](https://build2.org/build2/doc/build2-build-system- manual.xhtml#intro)

<comment><USER10> I did a quick skim and it doesn't seem to sandbox the build steps like Bazel? Maybe I missed something.

<comment><USER9> It doesn't do Bazel's style sandboxing where your entire compiler toolchain is part of your build system. It does what we call _high-fidelity builds_ : it tracks changes not only to inputs but also to compile options, compiler itself (checksum), environment, etc., and if any of these auxiliary dependencies change, it triggers a rebuild. There are advantages and disadvantages to both approaches with build2's being lighter weight.

<comment><USER11> I don't see how build2 can be in the same spirit as Bazel when it misses the main advantage of Bazel

<comment><USER9> I never said build2 is "in the same spirit" as Bazel (whatever that means). I said it fixes the same problems as OP listed.

<comment><USER12> > I said it fixes the same problems as OP listed.

The OP listed noted that hermeticity is required for fast builds, and that humans can't be relied upon to provide hermeticity as a property. How does build2 guarantee hermeticity or otherwise support fast builds without a clean room solution a la bazel?

<comment><USER9> The OP was vague on why exactly hermetic builds are required to achieve fast builds. The only concrete thing they mentioned is caching which doesn't require hermetic builds (in the strict sense, as in preventing any outside changes) provided you can detect changes accurately.

To give a specific example, Bazel may prevent you from accidentally using a different version of the compiler while build2 will detect that you are attempting to use a different version.

<comment><USER12> Caching depends on a correct model of the dependency tree. If a dependency isn't included in the model, then a non-hermetic tool will silently succeed, incorrectly while a hermetic tool will do the correct thing and fail the build. Keeping the model accurate is too hard for humans, so in practice, non- hermetic build tools can't cache correctly.

</comment></comment></comment></comment></comment></comment></comment></comment></comment></comment></comment></comment><comment><USER13> Woo hoo! I got to spend a few days with the Bazel team in the NYC office a few weeks ago and they were really excited about this announcement coming out soon. Congrats!

One of my favorite uses of Bazel is in CI/CD. I built a demo which builds the applications, creates Docker images, and then applies a K8s manifest to a cluster. It's OSS now under the GCP handle: [https://github.com/GoogleCloudPlatform/gke-bazel- demo](https://github.com/GoogleCloudPlatform/gke-bazel-demo)

Happy to answer any questions, public or private (email / website in bio).

<comment><USER14> Does it work with VB6?

<comment><USER15> You jest, but you could totally write the rules for it to support VB6.

</comment></comment></comment><comment><USER16> I hope that this 1.0 status will prompt the Qt people to take a closer look at Bazel, but that's probably strongly conditioned on the quality of Windows support. Qt Co. have indicated that CMake is the most likely replacement for qmake in Qt 6, which would be a lateral change at best.

Is anyone using Bazel to ship cross-platform GUI applications?

<comment><USER17> Isn't Bazel jre based? I don't think that something like Qt will ever go for a build tool that requires the whole java runtime as a dependency.

(Also, cmake has become the de facto solution for open source libraries, not sure why they would select something else)

<comment><USER18> CMake may have a longer history of being used by open source, but Meson has been growing in popularity for some important projects. I definitely prefer Meson to CMake.

Bazel is also a great build system, but yeah, the JRE dependency will obviously make it less desirable for some users. Still, I hope people consider it anyways, because its focus on correctness is pretty great.

<comment><USER19> Unless Meson gets to support all the toolchains and OS supported by CMake, and the existing plugins eco system it is non starter.

Meson will most likely be kept as the GTK, GNOME build system.

<comment><USER18> Non-sense. It only needs to support the toolchains and OSes people actually want, by no stretch of the imagination does it have to support all of the same stuff CMake does. It is not a non-starter for many.

It is the build system of lots of projects already, not just GNOME but also freedesktop stuff too, libinput is one.

<comment><USER19> That is not how adoption at scale works.

Everyone on C++ community is gravitating towards CMake, Conan and vcpkg, they won't migrate to something else now.

<comment><USER18> Yes it is. CMake was adopted long before it supported everything it supports today.

<comment><USER19> Let us know when Meson gets first class support on Eclipse CDT, Clion, Qt Creator, KDevelop, Android Studio, VSCode and Visual Studio.

<comment><USER18> OK, ping me in 3 years.

<comment><USER19> Surely. I have seen too many carriages drive by.

<comment><USER18> Actually, there's already an excellent Meson plugin for VSCode, and a pretty good one for Qt Creator, so I hope you're a fan of losing bets :p

<comment><USER19> So far, everyone that has bet against CMake has lost to overtake it.

Scons, qmake, waf, premake, Gradle C++, MSBuild, ...

I know which horse to bet on.

<comment><USER18> Scons and qmake both predate CMake. It's weird to characterize them as trying to "overtake" CMake; that's not really a thing I think happened. As a matter of fact, there was a time when qmake was a better option; it was a fairly complete Makefile generator that had good support for subprojects and out of tree builds.

Then again, this is all irrelevant. What these projects all had to offer at one point is historical. Qt has to leave qmake because of qmake. During that time they evaluated many options, including a fairly innovative design called qbs - Qt Build System. In the end, the choice of CMake makes a lot of sense, as it is clearly the best available choice that had ecosystem support. Qt is unlikely to switch build systems again soon.

This entire argument has happened before, but instead of meson vs CMake it was CMake vs autoconf. The thing is, I suspect CMake will still exist even as Meson inevitably continues to gain traction, just as autoconf (unfortunately) exists today.

There is, in fact, room for more C++ build systems, and almost definitely room for better interop. (Meson and CMake have some interop today.)

</comment></comment></comment></comment></comment></comment></comment></comment></comment></comment></comment></comment></comment><comment><USER20> How's Bazel documentation these days for people who haven't worked at Google?

In April 2018, I tried to do a quick port of a tiny gsl::span-using toy app to absl::span, but I gave up, because Abseil wanted me to build my app using Bazel and Bazel docs seemed to assume that I already have some context that Googlers would have but I hadn't.

(I emphasize that this was a _quick_ attempt at a toy program and not about making a serious time investment to learn a tool for a serious project.)

<comment><USER21> This is a legitimate criticism I hear even from new Google employees; Bazel's documentation is pretty hard to read unless you already know a lot of its core concepts, unfortunately.

</comment></comment><comment><USER22> What about non-monorepos? At my company we have quite a few large-ish projects (consisting of ~5 published artifacts, LoC doesn't matter for my question, but maybe 100k per project?), but the problem is that we want different organizations to have access to different subsets of our projects... so we don't have a mono-repo?

It it possible to do some sort of conglomeration where we could bazel-all-the- things and still publish separate artifacts (jar's, deb's, etc.) for different purposes?

<comment><USER23> You could import each thing as `http_archive`s or `git_repository` or `local_repository`s and use visibility to manage what projects are allowed to use what

<comment><USER22> Just trying to understand... so we would have ~5 (going by my original example figure) Bazel builds and then use "imports of published things" to have projects that depend on each other work?

<comment><USER23> You would have 5 workspaces. How they work together is sort of up to you.

If you use `local_repository`, then you can link whatever's checked out from version control together. This can be dangerous since there's nothing that enforces what version of what works with what, but it's helpful for example, if you want to beta test a new version of a ruleset in a workspace that consumes it.

If you want to be strict about publishing artifacts and versioning, then `http_archive` is the way to go. You can choose your publishing schedule and other workspaces can independently manage which versions of the published artifacts they want to use.

`git_repository` is a middle ground if you don't want the hassle of publishing versioned artifacts, since it lets each workspace reference specific commit SHAs for the things they import.

<comment><USER22> Thanks. Things may have changed since the last time I investigated Bazel -- I'll read up on this stuff.

I'm actually currently leaning towards something like Nix or Guix just because it _really_ encompasses everything...

<comment><USER24> Nix is good for inter-package dependencies, while Bazel is good for internal dependencies. You could use Bazel to build your packages for Nix, and import your other projects into your BUILD files with [https://github.com/tweag/rules_nixpkgs](https://github.com/tweag/rules_nixpkgs).

</comment></comment></comment></comment></comment></comment><comment><USER25> I really want to use it but anything beyond the simple example is difficult to migrate to. I must have read the toolchain pages 10x times but still setting up a custom compiler or even different JDK setup is confusing.

<comment><USER26> From what I have heard, the toolchain story is being worked on heavily. There are some legacy reasons why toolchains were designed the way they were (mostly due to the fact that Google essentially only uses one compiler for each language, and certain toolchains were implemented natively instead of as plugins), but the confusing semantics are improving! Maybe give it another shot in 6-12 months.

</comment></comment><comment><USER27> If android switches to bazel now that bazel is 1.0 does that mean we can switch from a completely undocumented tool to a poorly documented tool?

<comment><USER28> > completely undocumented tool

Gradle is far from "completely undocumented". Unless you mean Android Gradle Plugin, which surprisingly _is_ somewhat documented, although the docs are tough to accidentaly just stumble by

<comment><USER27> I was actually refering to Soong not Gradle. Soong has been replacing makefiles since android 7. Given that incremental builds are more of a "hopeful aspiration" rather than "something that actually works" in Android 6, I can't blame them too much for doing a major reworking.

</comment></comment></comment><comment><USER29> many bigots here dismiss bazel out of hand for being written in java.

the binary ships it own JRE and starts instantly (uses a server), why is java an issue exactly??

</comment><comment><USER30> I've been using it for over almost two years on a 5 languages iOS/Android project, and then on everything I could. Congrats to the team!

<comment><USER28> Nice! I've been considering trying out Bazel for an Android project but didn't get around to it yet. How is the IDE support (Android Studio and/or IntelliJ)? And how is actual Android support in Bazel, for example in terms of feature modules, app bundles, DataBinding (that I guess is supported as a regular annotation processor) and third party plugins like Firebase? How much of a dealbreaker is it if I have to use a complex 3rd party Gradle plugin that I wouldn't want to rewrite for Bazel?

</comment></comment><comment><USER31> I've looked at Bazel some time ago but it was lacking full Swift support. There's some mentions to Swift scattered across the docs but some of them lead to 404 pages[1].

Has anyone gotten a Swift + Objective-C project running on Bazel or should I stay with Facebook's Buck?

[1]: [https://github.com/bazelbuild/rules_apple/blob/master/doc/ru...](https://github.com/bazelbuild/rules_apple/blob/master/doc/rules- swift.html)

Edit: Found the correct links for the Swift/Apple support docs.

[https://github.com/bazelbuild/rules_swift](https://github.com/bazelbuild/rules_swift)

[https://github.com/bazelbuild/rules_apple](https://github.com/bazelbuild/rules_apple)

<comment><USER30> We (Zenly) are, it works well!

</comment></comment><comment><USER32> My company uses Java and Javascript, our build system is Maven. It starts the npm/yarn build process. We have hundreds of projects in it.

I don't like the tooks, but would it be worth the trouble to change to Bazel?

<comment><AUTHOR> Bazel has good support for both languages. My personal experience is with the JavaScript + Rollup (or TypeScript + Rollup) rules for Bazel.

There are rules for Bazel + Yarn integration and although I use them, I'm not really qualified to give an opinion. With the TypeScript projects I work on, you have an ordinary yarn.lock and some extra Bazel rules in WORKSPACE to install the packages, and then you use some Bazel rules for TypeScript + Rollup to create bundled JavaScript files. Bazel's TypeScript rules execute much faster than running tsc from the command line because someone took the time to figure out how to keep a hot copy of tsc running that Bazel can send commands to.

My personal experience is that you can do a gradual migration by working bottom-up, starting with the components that have no dependencies. There is a learning curve to it if you are the one writing rules, and it can take a while to get the hang of it / find where the good resources are.

I would evaluate it on an estimated cost/benefit basis. The primary benefit for large projects is build times. If you can quantify how much time your developers are spending waiting for builds, and estimate how much time you can cut off with Bazel's shared caches, you can guess how quickly it will pay off or whether it will pay off at all.

If nothing else, you can find a leaf dependency somewhere in your projects and write some quick BUILD files for it. That shouldn't take very long, if you have a half-day or day to spare.

<comment><USER33> What helped you push through the steep learning curve when you started? Asking cause I was excited recently to try Bazel specifically for a Typescript monorepo, and the learning curve crushed me.

<comment><AUTHOR> To be honest I had written some custom build systems and spent extensive time working on the problem. So a lot of the Bazel features made me go "aha" because they solved a problem I recognized—but the features seem weird if you don't recognize the problem you're solving.

What helps is to understand the separate phases of the Bazel build process and look at other Bazel repositories.

To me it's not as bad as e.g. the mess I remember going through with TypeScript back when you had to write a lot of your own types for libraries you used.

<comment><USER33> Thanks for the reply.

A bunch of the problems I had might be due to out of date js tools, since apparently Bazel has been breaking compatibility a lot pre 1.0. Things I pull from the docs of the main js/ts bazel libraries are more likely to error than work. Will wait a while for things to catch up now that it's 1.0 and check back in next year or something.

Thanks again.

</comment></comment></comment></comment></comment><comment><USER34> I wonder how / if Bazel will integrate wit Google Cloud Build. IMO that should be an end goal for a tool like Bazel. At a first glance, they are (highly) incompatible. 1\. Bazel's statefulness is a core feature while GCB is stateless. 2\. They both need to control things holistically to work (or you lose advantages otherwise).

So in order to benefit from the two, it would likely require GCB to work with Bazel natively and also to have some powerful state abstractions in order to optimize builds in a distributed fashion.

<comment> the-rc There's a hosted Bazel in an early access preview. Tensorflow uses it.

<comment><USER34> Thank you! Would love to try that. How to access pre-release?

<comment><USER35> Just use it in your cloudbuild.yaml file: [https://github.com/GoogleCloudPlatform/cloud- builders/tree/m...](https://github.com/GoogleCloudPlatform/cloud- builders/tree/master/bazel)

</comment></comment></comment></comment><comment><USER36> The only contact I've had with bazel is via Tensorflow (more specifically tf lite). Last I tried it was not possible to set up bazel to output a static library. Has this changed?

<comment><USER30> It should be:

        --dynamic_mode=off

</comment></comment><comment><USER37> I am going to be hated and downvoted for that but let's go...

Bazel, like Bucks and other, try to bring on table a build system / deployment system that is multi-language, multi-platform and developer oriented. A holy Graal that many developer ( like me ) looked for decade and that many (large) organizations more or less tried to do one day (and most failed)

It is a good idea. It is a required tool to improve productivity. However, if the idea is good on paper, in the implementation, Bazel is damn wrong.

\- Bazel is centered around "mono-repo" culture, making it much harder to integrated with multi-source, multi-repo, multi-version projects like many of us have. If I have no doubt that it is great at Google, the external world is not google.

\- Bazel is made in JAVA, requires the JVM and this is a problem. That make Bazel not a "light" tool easy to deploy in a fresh VM or in a container.

\- Bazel mix the concepts Build System ( like Make, ant, co ) and Deployment System like ( rpm, pkgsrc, etc). That makes Bazel pretty hard to integrate with projects that have existing build system, and almost impossible to integrate _INSIDE_ an other Deployment System (usual package manager, deployment pipeline). The problem that Bazel faces with some languages ( python, go ) is a cause of that.

\- Bazel venerates and follows the cult of "DO NOT INSTALL": compile and execute in workspace, there is no "make install", not installation phase. If "convenient" in mono-repo, this is often a nightmare because the boundary between components can be easily violated... and you finish by having many project that use internal headers or interface.

\- Bazel makes mandatory ( almost ) to have internet to compile. This is a problem, a major problem in many organization (like mine) where downloading random source and binary from the Web is not acceptable for security reasons. Try to run Bazel in a sandbox.... and cry.

\- Related to what I said before, Bazel mixes Build system and Deployment system. Doing so, it makes the same mistake that many "language specific" package manager and make uselessly hard to depend on an already installed, local library / component.

\- And finally, last but not least... The options.... Bazel throw away 30 years of conventions / naming from the ( GNU / BSD world ) to create its own.... That make the learning curve difficult... Specially with a (up to recently) very sparse and outdated documentation.

I have no doubt that inside Google or Facebook, Bazel or Bucks are amazing.But they have been released too late for the external world in my mind.

Nowadays platform independant package managers like spack ([https://github.com/spack/spack](https://github.com/spack/spack)), Nix ([https://nixos.org/nix/](https://nixos.org/nix/)), GUIX ([http://guix.gnu.org/](http://guix.gnu.org/)) gives 95% of the advantages of Bazel without the pains of it.

<comment><USER38> 1) bazel can be built with a self contained bundled paired down jvm, and possibly an executable using GraalVM but I don't know anyone who tried that yet.

2) bazel can do offline compiles, and is actually built to run in sandboxes

3) bazel can act as a build system only and delegate to externa package managers

Look at rules_nodejs for example and the managed_directories + yarn_install/npm_install rule

4) depend on already installed stuff. Toolchains already provide a way to do this, and the android_sdk_repository rule literally requires preinstallation.

Seems to me your making a lot of claims about bazel without having used it.

<comment><USER37> > Seems to me your making a lot of claims about bazel without having used it

I lost literally weeks of my life to make Bazel work in external build systems for tensorflow and others. And I am apparently not the only one : [https://archive.fosdem.org/2018/schedule/event/how_to_make_p...](https://archive.fosdem.org/2018/schedule/event/how_to_make_package_managers_cry/)

Then I don't allow you to tell me "not having used it".

All the answers you gave are "fixes" that have been made after the community complained. Fixes that were sometimes not even documented.

<comment><USER38> Bazel is based on Blaze, which is Google's internal mono repo build system. But Angular, Kubernetes, Tensorflow, et al, are open source projects, Angular in particular, needs to work with NodeJS and Typescript ecosystems, which almost immediately demands dealing with node_modules dependencies if Bazel is to be used with it. You see to imply this was a case of Bazel folks somehow being blind sided by these requirements, but it's more a case that step 1 was to make a version of Blaze that works outside Google, step 2 was to make it work for non-monorepos and non-single-version dependencies, and step 3 was to make it integrate with alien package management ecosystems.

Actual support for the things you claimed is quite good now, and that's my point. You posted a number of claims that are now no longer true as of version 1.0. Yeah, a year ago, things were bad, but then again, it was a project at beta level in rapid development, and pretty much for early adopters.

</comment></comment></comment></comment><comment><USER39> I'm maintaining an example polyglot Bazel-built monorepo if anyone wants to follow Bazel's progress.

I aim to follow best practices and mark out any undocumented gotchas.

[https://github.com/thundergolfer/the-one-true-bazel- monorepo](https://github.com/thundergolfer/the-one-true-bazel-monorepo)

</comment><comment><USER40> What is it? What can I use this for?

<comment><USER41> Polyglot build system (a la make), designed by Google for large code bases with:

* Assured reproducibility via sandboxing

* Distributed caching

* Distributed execution (experimental)

* Support for long-lived worker processes

* Static analysis of build dependencies

* Uniform CLI for builds and tests

Build definitions and extensions are written in Starlark, a subset of Python.

If you work in a large repo, especially one with multiple languages, you should be interested in Bazel.

Many of Google's OSS projects now build with Bazel (TensorFlow, K8s, Angular).

Buck and Pants are similar tools by Facebook and Twitter respectively, inspired by Bazel's closed source predecessor Blaze.

</comment></comment><comment><USER42> One big pain point for bazel is installation on Windows, it needs msys2 and need it on the default path. Just a pain to setup. I was thinking of proposing bazel in my org, but after my try on work laptop I abandoned the idea.

<comment><USER43> It doesn't require msys2 anymore, so you might want to try again.

</comment></comment><comment><USER44> Does anyone have experience building graalvm native images with Bazel? Or quarkus more specifically?

<comment><USER45> There are Bazel rules for Graal: [https://github.com/andyscott/rules_graal](https://github.com/andyscott/rules_graal)

</comment></comment><comment><USER46> Am I correct in thinking that Bazel is a fantastic fit for golang with modules?

<comment><USER47> In theory, yes. In practice... you will need to either a) force everyone in your team to never use native Go tools ever, or b) cobble together third-party tools to bridge the two worlds. Start with [https://github.com/bazelbuild/bazel- gazelle](https://github.com/bazelbuild/bazel-gazelle) and see how deep the rabbit hole goes.

It's possible, but it's not trivial, and not nearly as smooth as using the Go tools in the first place. Unless you have a hair-on-fire problem dealing with cross-language dependencies or insanely long build times, it will probably not be a good use of your time.

<comment><USER2> Yeah, I think the heuristic should be "Am I forced to migrate to bazel to solve real problems my company is having?"

Vs.

"Can I migrate because bazel is the new thing"

</comment></comment></comment><comment><USER48> Is it any easier to port to different operating systems than earlier versions ?

</comment><comment><USER49> The story would be much promising if Google bought github.

Unfortunately, bazel's future is significantly complicated because of the lack of a repo partner in the ecosystem.

In short, a true single repo experience with bazel would be easily 10x the current one.

</comment><comment><USER50> Is there something to gain from Basel on small projects?

<comment><USER51> Not as much. But quality cache invalidation and high level project descriptions are always nice.

</comment></comment><comment><USER52> Brazil blaze and bazel, someone should tell the story

</comment><comment><USER53> How does bazel compare to [https://github.com/microsoft/vcpkg/blob/master/README.md](https://github.com/microsoft/vcpkg/blob/master/README.md) And [https://github.com/microsoft/BuildXL](https://github.com/microsoft/BuildXL) ?

</comment><comment><USER54> Hundreds of developers around the Googleplex rejoice.

<comment><USER8> Isn't Bazel based off another tool they use internally?

<comment><AUTHOR> Yes. My guess is that over a long enough period of time, the internal build system will migrate to Bazel. But I don't think it will happen soon. Large migrations are always a pain, but Bazel does make it easier (since you can isolate dependencies very well and migrate bottom-up).

I don't work there, but I have talked to Googlers working on build systems.

<comment><USER55> Bazel is just the open source name of the internal Google build system, it is the same codebase.

<comment><AUTHOR> From what I understand, the two tools have some very significant differences at this point. They may be the same codebase in a broad sense, and may share a lot of code, but I bet they are using something like Copybara to synchronize them.

[https://github.com/google/copybara](https://github.com/google/copybara)</comment></comment></comment></comment></comment>


Ask HN: What will happen to Google when somebody disrupts AdWords? - <AUTHOR>

I invested some portion of my saving into GOOG. But I'm concern that 90% of revenue are ads.
Is it possible at all to disrupt advertising system Google is dependent on?
Just want to ask smart people of HN what they think... <comment><USER2> Short answer: As long as the portion isn't dominant in your portfolio, and you re-evaluate it at least twice a year and rebalance, its all good.

Longer answer, looking at Googles rates of return on capital is like watching a very, very, fast train driving along straight track. Google's nominal operating mode burns a lot of money, that burn rate leaves them vulnerable to down turns. What the most likely scenario is not that they get disrupted so much as others meet them at parity but run at an operationally much more efficient way. Say that M$/Bing inexorably creeps up into a neck and neck race with Google in terms of search reach, and the combination pushes down advertising rates. The spending brakes go on at the 'plex, the company changes, the bean counters rise in power beyond reasonable measure, and the company 'flips'. Out go the creative, inventive, people and in come the 'lifers' who know how to make their job look important without actually doing anything. The mechansim which makes this happen is really hard to avoid since from the board room things look fine, even after they aren't fine. And there is a fine balance of disbelief that is held between the employees and their condition that, once disrupted, cannot be re-established. Cisco, HP (Tandem), Sun, and Intel are all places where I've known folks who lived through the flip. Nothing is the same afterwards, if you can't re-invent yourself like Apple did, it gets a lot harder.

That being said, there is (as others point out) usually some time to cover for that.

I cannot stress enough however that financial planning is serious business and you should take your time with it. I believed them when they said if I started putting money in my 401K in 1986 that it would be worth multiple millions by now thanks to the 'miracle' of compound interest. They missed the part about the 'miracle' of the nations worst economic debacle deleting that value in a heartbeat. I don't believe them any more :-(

<comment><USER3> Some would say the "flip" has already happened.

I'd peg it to early 2009. Whenever they changed the shuttle schedules, if anyone remembers.

</comment></comment><comment><USER4> AdWords is a natural monopoly, so it is unlikely that someone will ever create a successful competing keyword driven advertising network. In order to generate high prices for the search ads, Google needs to have multiple bidders competing against each other for each keyword. Advertisers will only bid if there is lots of inventory to buy (lots of searches on those keywords). 10% of the search market does not generate 10% of search advertising revenue because of this lack of market participants -- on second tier pay-per-click advertising networks whole swaths of keywords are not competitively bid. The Bing-Yahoo search merger was an attempt to address this problem, but it hasn't worked so far according to the most recent financial reports. Google still generates 50% more revenue per search than Microsoft due to the network effects.

<comment><USER5> I don't understand this argument. Why would advertisers only bid if there is enough search volume? For each venue you advertize on you have a fixed cost that is the cost of setting up and maintaining your ad campaign on that platform. So there is an incentive to use high search volume sites, but this hardly qualifying as a natural monopoly.

Or am I missing something?

<comment><USER6> I don't think you are missing anything. There are advertisers who prefer other networks like Chitika, Adbrite, Clicksor etc because of the lower competition/lower click prices there (and not only).

</comment></comment></comment><comment><USER7> Not to make a "I think there is a world market for maybe five computers" type argument, but I don't think it's Adwords being disrupted that you should worry about. As long as people use Google to search for things, particularly goods and services, Adwords will be an effective way for businesses of all sizes to reach their target audience at a perfect time (when they're actively searching for what you're selling) and the auction system adwords uses automatically helps maximize profits across different keywords/categories.

That being said, not sure what your investment goals are, but if you're looking for the long term I'd suggest something more along the lines of a few broad ETFs that cover a few different markets, rather than trying to place a bet on only a handful of high flying companies... basically, are you looking to invest or gamble? Either is ok, but they are different...

edit: seeing a couple other comments, I'll admit that adblocking being included automatically in a browser that gains dominant marketshare is something that would be terribly disruptive to a lot of businesses, google included. What's interesting there, is it would essentially _destroy_ a tremendous amount of revenue for large and small companies across many industries without offsetting it with a new profit center. It wouldn't be like cars replacing carriages, it would be like teleporters you can assemble at home with $5 of drugstore components replacing the auto industry. I guess consumers would win, but they'd probably have to start paying for gmail and google maps access...

</comment><comment><USER8> You should be asking yourself not about disruption, but what would happen if GOOG can't figure out how to keep AdWords revenue increasing. Like other commenters note: nobody has ended up disrupting Windows on the desktop, but Microsoft never figured out a new stream of growth to fuel growth in their share price.

If your primary concern is share price growth, look at a smaller cap stock - or try to convince yourself that Android or one of their other projects will ever move the revenue needle.

</comment><comment><USER9> Of course it's possible - the giants of today aren't always the giants of tomorrow.

But like the other giant corps their demise will be a very slow process with plenty of time and capital to find their next big thing.

</comment><comment><USER10> Google will buy them out.

<comment><USER11> Just like how Microsoft bought out Google and IBM bought out Microsoft.

<comment><USER12> None of these once up-and-comer's markets were properly established before their respective companies came along. AdWords is an established product in an established market-- Google's on the watch.

</comment></comment></comment><comment><USER13> What happens when Adwords gets disrupted? Well, first, it will take a long time for the competitor to establish itself. Businesses don't change overnight. Second, even if the competitor manages to steal ALL of Google's income overnight, Google has billions in the bank.

There will be years for them to find a way to recover, or, in the absolute worst case, years for you to reinvest.

<comment><USER14> _There will be years for them to find a way to recover, or, in the absolute worst case, years for you to reinvest._

No, there wouldn't be years for him to reinvest. If it was revealed that Google's best days where behind them -- i.e. revenue was shrinking and they were dipping into their cash reserves to keep things rosy -- then investors would sell, sell, sell and drive down the stock price in a relatively short period of time.

<comment><USER13> There tends to be a tipping point when stock prices drop, from what I saw. But there are years of warning signs and slow decline before this happens. If you were watching RIM, for example, their trouble started when the first iphone came out, but it took years for it to reflect strongly in their stock prices. Nokia was in a similar state -- they had problems for years, but it was only recently that their stock dropped heavily. It was declining, but there were warning signs in the company long before.

However, it should be mentioned stock prices already go up and down like mad. Diversify, regardless of how solid a company is.

</comment></comment></comment><comment><USER15> Google will be screwed. If something that works significantly better comes along, that money will evaporate very quickly. And when you take into account Wall St's grow or die mantra, the results would be catastrophic for Google.

However, I'm not sure it's possible to disrupt AdWords. Disruption in the classic sense implies "way cheaper, but not as good". You can't make advertising "way cheaper" without leaving metric tons of value on the table, and nobody is going to do that. After all, the quality of advertising _is_ the price you pay for customers.

More likely is a scenario where everyone else catches up - but that's a slow process and will give Google plenty of time to find another trick.

</comment><comment><USER16> If a company has access to hundreds of millions of profiles, can figure out an effective way of delivering targeted ads, and can effect a fundamental shift in the way most people find content on the web (i.e., a shift from keyword search to social search/sharing), then Google's advertising revenue could fall significantly. The obvious existing threat is Facebook. Facebook ads are not good enough yet, but could be relatively soon. I think the question for Google is whether it can catch up on social before Facebook catches up on search and ad targeting.

<comment><USER17> I heard these arguments before but nothing happened so far, facebook has still one of the worst return rate in the industry.

</comment></comment><comment><USER18> Diversification is usually a huge waste of money. It is hard for one company/culture to make money doing lots of things. Be glad they know their niche is ads and that they are doing everything they can to protect their castle (as a shareholder).

Relentlessness will enable them to hold on to their position for longer than other companies would. However, all companies will eventually fall to competitors as t approaches inf.

<comment><USER19> Not sure about that, doesn't sound true.

It is certainly _simpler_ to make a lot of money in the short term by focusing on one core business only. But diversification and redundancy are known survival techniques. Think IBM and Microsoft: both companies do a lot even if they have some sort of a core. But even the core is somehow intermingled with much of the else they do.

It's also not so simple to connect different dots if you only have one kind of dots. Google can combine stuff in novel ways because they're kind of a technological crossover. Not so easy if you've purged out all that clutter that doesn't fit in your core work.

</comment></comment><comment><USER20> I've wondered this myself - what happens when ad blocking technology becomes integrated into mobile devices, or the general public starts to use it because the newest, shiniest browser now bundles it by default?

<comment><USER21> The technology is available (Adblock for Firefox Mobile) but given that Google controls the default browser and ad revenue is important to Mozilla, it won't be defaulted for a while.

Apple is another matter. Maybe they like to keep their options open, too.

</comment></comment><comment><USER22> Google will be in the transportation and shipping business by then.

</comment><comment><USER23> Brain scanning devices that will be used to navigate web browsers. ETA 5 years.</comment>


Show HN: Yes Chef keeps food off your phone/keyboard when you're cooking - <AUTHOR> https://play.google.com/store/apps/details?id=cooking.yeschef.yeschefcooking <comment><AUTHOR> Hey everyone! We're doing Startup Weekend San Francisco this weekend. There's four of us - three from Brisbane, Australia, and one from the north-west of France.

We made this app because we were sick of reading recipes off our phone while cooking and having to wipe down our fingers all the time. Also it was a cool excuse to learn more about voice recognition and extracting useful data from web pages.

Happy to answer any questions! Pitching is this afternoon at Citizen Space in SF.

</comment><comment><USER2> I do get stuff all over my laptop while cooking or baking. This is great.

</comment><comment><USER3> Excellent idea and such a simple execution.</comment>


Ask HN: What are you working on? - <AUTHOR> Inspired by https://www.reddit.com/r/startups/
Tell us about your idea/startup that people want, and how it makes world better place.
Name / URL
Location of Your Headquarters
Elevator Pitch/Explainer Video
More details: What stage are you in? How many employees or founders?
Are you looking for anything? (Feedback/Hiring/Investment) <comment><USER3> Deliveryplannerapp / [https://deliveryplannerapp.com](https://deliveryplannerapp.com)

Based in Gijón, Asturias - <USER2>

It's a SaaS app to optimize your last mile delivery parcels routes. Also customers can track their parcel.

Implemented in Java + Spring Boot + JSF and the actual planner algorithm in Common Lisp. The JSF part communicates with Common Lisp using Protocol Buffers over TCP sockets. The Common Lisp implementation is SBCL.

At the moment I just finished the planning algorithm and I have yet to get the tracking UI done before releasing to the public.

Next project will be a roster planning app, another SaaS, done entirely in Common Lisp using this excellent Weblocks fork: [https://github.com/40ants/weblocks](https://github.com/40ants/weblocks)

<comment><USER4> I see you are using java in deliveryplannerapp. I really want to get into java but everywhere I see a job, it requires minimum 2 years of experience in jee/j2ee, spring, hibernate and all other java technologies. I have exp of 1.5 years, in php frameworks, javascript frameworks, so I am not able to even land an interview. Do you have any advice?</comment></comment>


MSX2+ Emulator right in the browser. My '90s are back again - <AUTHOR> http://msxemulator.com <comment><USER2> Wow! Graphics and sound are very nice in this one. Will try to connect with my retro joysticks back at home!

<comment><USER3> playing Aleste2 with my wireless XBox360 joys right now

</comment></comment><comment><USER4> Ahhh, the good old MSX... Thanks for this

</comment><comment><USER5> Pure Javascript magic :-))</comment>


How Esquire magazine is mining its archives - <AUTHOR> http://www.niemanlab.org/2015/04/esquire-has-a-cold-how-the-magazine-is-mining-its-archives-with-the-launch-of-esquire-classics/ <comment><USER2> The Atlantic has (had) a regular Flashbacks feature. It's become difficult to stumble upon online:

[http://www.theatlantic.com/past/docs/unbound/flshindx.htm](http://www.theatlantic.com/past/docs/unbound/flshindx.htm)

For example: [http://www.theatlantic.com/past/docs/unbound/flshindx.htm](http://www.theatlantic.com/past/docs/unbound/flshindx.htm)

This is an introduction to two past articles, As We May Think, from the end of WWII, and The Computers of Tomorrow, from the sixties.

As We May Think is posted to HN at least once a year, and you may as well read it now. But really, the two articles should be read together.

From the Niemanlab posted article: "In the Times' innovation report last year, its authors wrote that it needed to do a better job taking advantage its massive archives: "We can be both a daily newsletter and a library — offering news every day, as well as providing context, relevance and timeless works of journalism.""

Yes, that's very much what I've been personally struggling to describe, as the future of an established and respected news outlet. I would refine that a bit, to be not just a library (of itself), but a consciously curated library, to which the current world is regularly considered against.

The only thing like that that I can find _easily_ from the Atlantic's front page is the automatically generated archive. The Flashbacks linked above used to be more prominent online.

To relegate past articles to a generated archive list is a loss. Every outlet, particularly outlets like Atlantic and NYT, should have "scholars of themselves" regularly maintaining and calling on their publishing history.

</comment><comment><USER3> This is great. While nearly all the other magazines and newspapers are on a race to the bottom, essentially competing with BuzzFeed and worse, Esquire is reminding its audience and itself how great it once was and what it should continue to aim for; it's cementing itself at a higher plane. Wired, are you paying attention?

<comment><USER4> I'm a subscriber to the paper version of a stablemate of wired, World of Interiors. The only magazine Conde Naste cross sell spams me with is trying to sell me Wired

</comment></comment><comment><USER5> If you thought this was cool, the new Esquire Classic just launched ([http://classic.esquire.com/](http://classic.esquire.com/)), and Nieman wrote a new, more current article on it ([http://www.niemanlab.org/2015/09/how- esquire-built-esquire-c...](http://www.niemanlab.org/2015/09/how-esquire- built-esquire-classic-a-new-standalone-digital-archive/)).

Disclosure: Helped work on the new Classic site. ([http://cantilever.co/](http://cantilever.co/))

</comment><comment><USER6> This is a recent magazine thing - recycled news. I just saw a print magazine at Barnes and Noble with the cover "VE Day - Germany Defeated". Looked like a current magazine. Recycling is so much cheaper than paying reporters to find real news.

Esquire had famous writers in its glory days, so they have good content to recycle. They also used to have cute pinup pictures. Playboy was sort of an Esquire clone, but with sexier pictures, cutting into Esquire's market share.

</comment><comment><USER2> > The standalone website launched in late March, with a twist: The full text > of each story published on Esquire Classics is also sent out in a weekly > email — the latest evidence that people's inboxes are gaining appeal as a > publishing platform.

My reading of NYT _articles_ (as opposed to a page of links to an article, like their front page) comes from these three avenues:

      1. Their morning email to me.
      2. Links from HN.
      3. Going to their site directly. I almost never do this.

Note that I pay for an online subscription to NYT, but I still almost never go there directly. I like their article pages, but their link pages are redundant and messy.

I'll go so far to say that I wouldn't be a NYT subscriber if it hadn't been for their daily email (free) and HN links. Their general site never made me feel like I wanted to subscribe.

<comment><USER7> I get both the NYT and the Quartz daily briefs in my inbox. I find the Quartz email to have a) much more relevant/interesting content and b) to be much more readable with no obnoxious ads. I'm not affiliated with Quartz in any way but I would suggest you check out their daily brief if you like to consume news this way.

<comment><USER2> I don't have ads in my NYT emails either. I have adblock in my Thunderbird. :)

</comment></comment></comment><comment><USER8> One of my favorite articles is from Esquire Classics. About the early days of the Silicon Valley: [http://classics.esquire.com/wolfe- noyce/](http://classics.esquire.com/wolfe-noyce/)

</comment><comment><USER4> I was slightly disappointed to find it wasn't about data mining the content. Still interesting though.</comment>


Ask HN: Why do keyboards still have the CAPS LOCK key? - <AUTHOR> It's unnecessarily large, takes up a very good position on the standard keyboard layout, and seems NOBODY USES IT. Why is it still there? <comment><USER2> There are still some old languages (e.g., legacy FORTRAN or COBOL; IBM JCL) that are all uppercase.

And I'd guess there are still some old data-entry applications that use uppercase only.

There are also headings in all-caps on certain legal documents.

There are even less useful keys, like the "Scroll Lock" key (and its associated LED) on the standard PC keyboard. This serves no function that I know of in any modern Windows application, but enough old programs use it that manufacturers don't want to get rid of it.

</comment><comment><USER3> The button exists because people do use it. If I need to write a sentence in capitals - generally labeling/headers/outlineish stuff - it is Much easier to use than to hold the shift key for each and every letter.

Now, as far as the standard position, I agree. I'd be fine if the standard were in a more out of the way location, because I rarely use it in a hurry and happen to do enough accidentals to turn on a sound letting me know it was hit. I'd personally replace it either with symbols (non-english punctuation, perhaps) or use the space for one of the more common non-english letters (ø,æ,å,ô)

<comment><USER4> This might already be something you personally know - but I feel it's a great opportunity to bring it up and hopefully teach others.

Right alt can be used for non-english symbols.

Some examples from keyboard mashing while holding right alt: ¡²³¤€¼áðäéå®þæ©ñ

For the most part they are in sensible positions too, making them easy to remember. Right alt+2 is ² and n becomes ñ and s becomes the German ß. © is c and ® is r.

Optionally you can set your keyboard to use English - International to type Pokémon properly. Or português. Although it can get annoying trying to type an opening quote " because you need to press space afterwards (it's waiting for the following character to modify: ä)

</comment></comment><comment><USER5> I OFTEN USE THE CAPS LOCK KEY. But not really, I've remapped it to Ctrl, the most useful modifier on my keyboard.

</comment><comment><USER6> I use it.

Re-map it if you don't like it. [http://www.howtogeek.com/194705/how-to- disable-or-reassign-t...](http://www.howtogeek.com/194705/how-to-disable-or- reassign-the-caps-lock-key-on-any-operating-system/)

</comment><comment><USER7> I use it everyday while at work of course and not to forget disabilities group.</comment>


Firefox Debugger - <AUTHOR> https://mozilladevelopers.github.io/playground/debugger <comment><USER2> Here's something which is _still_ missing from both Firefox and Chrome debuggers: "tracing" breakpoints.

That's one of the few nice/advanced features from Xcode and Safari, aside from making a breakpoint conditional you can:

* skip it the first n times (default: 0)

* make it non-breaking

* associate various _actions_ which are executed if the breakpoint "triggers" (the condition matches) even if the breakpoint is non-breaking, in Safari these actions are "Log Message" (formatted plain text), "Evaluate" (arbitrary javascript code), "Play Sound" (beep on every tripping of the breakpoint) and "Probe Expression"[0]: [https://webkit.org/blog/5435/breakpoint-options/](https://webkit.org/blog/5435/breakpoint-options/)

[0] a special kind of table logging which integrates with the debugger rather than the (separate) console tab

<comment><USER3> You can at least both "Log Message" and "Evaluate" in Chrome with conditional break points. Calling console.log is falsy, so calling it from conditional break points just causes it to log the message (you also have access to any variables in scope of the breakpoint that you can use to build the message). You can do the same thing with executing random JavaScript. Just put the statement and add && false to make sure it always returns false.

<comment><USER2> > You can at least both "Log Message" and "Evaluate" in Chrome with > conditional break points.

You can obviously do that in any browser, it's just inflexible, ugly, error- prone and inconvenient.

<comment><USER3> ¯\\_(ツ)_/¯ I rarely have issues with it

</comment></comment></comment></comment><comment><USER4> Slightly OT; What's the "Developer Edition"?

> Build, test, scale and more with the only browser built just for developers.

This is the only description I could find on their website. What's the difference to the normal version?

<comment><USER5> DevEdition is our fourth release channel, along with Stable, Beta, and Nightly builds. The engine is generally based on Beta, but we can ship features to DevEdition separately from mainline Firefox. For example, we can ship new developer tools to that channel before they land in Beta, it runs in its own separate profile by default, we allow Developer Edition to disable the add-on signing requirement, etc.

<comment><USER6> Hello Sir,

Pardon me if this is a silly question, but in the about:config page of Firefox Developer Edition the value for app.update.channel is aurora. But AFAIK, the aurora channel was stopped since April 18th of this month.

This is the screenshot : [https://imgur.com/r5Kcqb3](https://imgur.com/r5Kcqb3)

<comment><USER5> Aurora used to be a separate pre-beta, post-nightly release channel:

        Release <--- Beta <--- Aurora <--- Nightly

In 2014, we rebranded Aurora builds to "Developer Edition" to give it better visibility and ship experimental features that we thought would be interesting to web and add-on developers.

Earlier this year, we sped up our time-to-release by removing Aurora from the pipeline, but we kept it as a separate channel roughly at parity with Beta:

        Release <--- Beta <--- Nightly
                   Aurora <--'

Which is where things are today.

<comment><USER6> Thanks for the reply sir. I have one more question. I was very excited to use quantum, so ended up using developer edition. I am using it on my macOS High Sierra.

The battery usage and Energy impact that I observed from Activity Monitor application in macOS was very surprising.

Both parameters were quite high and the battery was draining very quickly. I don't have the screenshot. I tried searching for a solution like tinkering the about:config fields etc. but couldn't find any.

</comment></comment></comment></comment></comment><comment><USER7> Wish I didn't have to open Chrome to view websocket frames though. Firefox does detect that a WS connection was made, it just can't inspect it.

<comment><USER8> I have a similar thing but with profiling JS performance: if you profile a page in Chrome and then inspect the source code, it gives estimates of seconds spent per line of code. Firefox does not have this.

Being able to detect which function is the bottleneck is great, but being able to then figure out where the time is spent inside that function can be very enlightening too.

</comment></comment><comment><USER9> Sad to see a post by Mozilla only referencing Mac and Windows shortcuts to start the debugger. Most of the web developers I know are using Linux for web development, including javascript (some are using MacOS, none Windows).

On Ubuntu, the debugger is started by using <CTRL><SHIFT>S (like Windows actually).

<comment><USER10> I don't know any Web developers using Linux on their desktops, as company policy requires Windows desktops.

Linux is only used for Java based backends, when deploying into production.

With .NET deployments being done on IIS, even with .NET Core.

Some of the designers are using Photoshop on macOS.

Anecdote data.

<comment><USER11> If we're doing anecdata, then every web developer I know is on Macs, apart from those at the company I'm consulting for at the moment who have mostly standardised on Windows.

<comment><USER10> That was my point, each one has a different OS scenario depending where in the world we live on, the policies at workplace and customer sites.

<comment><USER12> If someone says that Linux should be included and mentions he knows a lot of web developers using Linux, then his added comment is relevant. Windows instructions were already included so your reply wasn't needed and I assume you didn't understand the Linux reply.

<comment><USER10> I took it as Web devs only use Linux kind of.

</comment></comment></comment></comment></comment></comment><comment><USER13> I tried to use the Firefox debugger recently, but I could find where you set "event listener breakpoints" (e.g. a breakpoint that stops whenever a click handler runs, regardless of which element was clicked). Some documents seemed to suggest that Firefox has this feature but I tried multiple versions of Firefox (including fiddling with the "new debugger frontend" flag in about:config) but I just couldn't find it anywhere?

<comment><USER14> Set about:config?filter=devtools.debugger.new-debugger-frontend to false, then reopen the debugger and expand the right pane, the Events tab should be there: [https://i.imgur.com/GLGrc7y.png](https://i.imgur.com/GLGrc7y.png).

<comment><USER15> And for those curious, here's the issue for bringing the feature back in the new debugger: [https://github.com/devtools- html/debugger.html/issues/4750](https://github.com/devtools- html/debugger.html/issues/4750)

</comment></comment></comment><comment><USER16> Hope there's a light color scheme as well

<comment><AUTHOR> There is, the dark one is just the default for Developer Edition. In fact, regular Firefox comes with a light scheme by default.

</comment></comment><comment><USER17> Firefox Debugger is amazing, but I have some problems with performance. If I enable DevTools, then entire browser (other tabs too) hanging for 1-2 minutes while page with DevTools is reloading. I think it may be because a lot async calls were performing, about couple hundreds (we use RequireJS and every sourcefile loaded through different request).

</comment><comment><USER18> Is there any way to restore older dark theme for Firefox developer tools? I mean more metallic looking. The new one is too black.

<comment><USER19> Click the cog icon, top-right for DevTools options. Available themes are Dark, Light, Firebug.

<comment><USER18> Compare this new dark to one that was there a few versions back. I'm talking about the older one.

Example: [https://support.cdn.mozilla.net/media/uploads/images/2016-09...](https://support.cdn.mozilla.net/media/uploads/images/2016-09-06-12-44-45-698e18.png)

<comment><USER20> Fully agree with you. The old dark theme feels more comfortable (less contrast between colors). Each and every time I open the devtools now this thought crosses my mind.

<comment><USER21> The old theme had issues with accessibility due to that lessened contrast. There were some plans and PoC code made for custom theming though.

</comment></comment></comment></comment></comment><comment><USER22> Does it have Chrome's async callstack stacktrace feature? It's hard to live without it now.

</comment><comment><USER23> How about breakpoints on mutation or deletion of node or changed attributes? Like Chrome.

</comment><comment><USER24> Since version 57 I have a strange behavior in the debugger (debian 9) : there is a line difference between where I click and the line selected. For a breakpoint I have to click the line above, idem for getting var values.

</comment><comment><USER25> How does this compare to Chrome Developer Tools?

<comment><USER26> It's similar if you look skin deep. Differences emerge once you start using it on daily basis.

The coolest thing FF has over Chrome is the little [ev] icon next to an element that shows what events are connected to it. Saves me lots of time trying to track things down.

The coolest thing Chrome has over FF is that stepping through code is so much faster. There is no lag at all, while there is one in FF. It also has a "Search All" mode where it will look through all your code (html, js, css) to find a string.

<comment><USER27> > It also has a "Search All" mode where it will look through all your code > (html, js, css) to find a string.

This feature is called "Search Sources" in Firefox. [https://imgur.com/U515D8X](https://imgur.com/U515D8X)

<comment><USER26> It's there - sure. But it doesn't work well. Example comparison between Firefox & Chrome.

[https://i.imgur.com/BFejDaf.png](https://i.imgur.com/BFejDaf.png)

</comment></comment></comment></comment><comment><USER28> The thing I'd like to see is the ability to remove/edit cookies.

<comment><USER27> It's there. Storage > Cookies. If you don't see a storage tab, you may need to turn it in the DevTools settings.</comment></comment>


Does Free College Work? Kalamazoo Offers Some Answers - <AUTHOR> https://www.wsj.com/articles/does-free-college-work-kalamazoo-offers-some-answers-11561741553?mod=rsswn <comment><USER2> In EU it works very well. But obviously capitalists will say that won't work in US</comment>


Tell HN: Apple paid my iPhone money, with exceptional service - <AUTHOR>

Perhaps you remember my post here http://news.ycombinator.com/item?id=906168 about Apple not paying out for my iPhone apps and my state of brokeness.
I don't want to leave that accusation in the air without following up on what happened.
A couple of days later, the lady I was speaking to at Apple told me she would take care of the situation. She sent me daily updates on the status of the money, got in communication with all the different sections at the Apple corp and resolved the issue.
Apple actually reprogrammed iTunesConnect to fix my issue (if you upgraded from personal account to business account in the past, you may have noticed the new "Vendor Selection" option). The guy who seemed in charge of this was sending me updates on a saturday as well as a sunday, so it seemed he was at the office at the weekend doing this.
So, I'd like to say that indeed, a lot of it was my fault, and Apple really came through in the end, and the level of personal service was truely extra-ordinary.
Thanks Apple! I'm happy to be selling apps on your store! And thanks HN for discussing the issue so I could see it a bit clearer! <comment><USER2> Glad to hear a positive story about Apples app store for a change .. I'm still a bit cynical; they only got their act together after a bunch of negative press about the issue..

<comment><USER3> _they only got their act together after a bunch of negative press about the issue._

It's pretty difficult to clear up a problem like this before it gets negative press. [1]

The speed of negative press just gets faster and faster. It's massively parallel. File a trouble ticket with Apple or anybody else, then Tweet your problem, and the Tweet may be retweeted by 100,000 people before the engineer in charge of reading the ticket even _wakes up_.

And, if you read the original complaint, this was a problem involving _mistaken identity_ in the context of _international banking_. Not the sort of thing you can necessarily clear up overnight, even if you're completely focused on it.

\---

[1] Especially if HN is your definition of "press".

<comment><USER2> I had thought it had been picked up in other places, but fair enough if it wasn't (see op reply below). Like i said I'm just being cynical...

I know that it was about international banking as i read the the story when it posted; but how many of those take 3 months to sort out? None that i know of.

It always sounded to me like apple were trying fob the op off as long as they could till they fixed their code ... again, im a cynical bugger, but i'm glad they got it sorted for the op.

<comment><AUTHOR> Actually, I also had the feeling that they were fixing something internally and that's why faxes would get "missing" and week long no replies. Whatever it is - it seems to be fixed now.

</comment></comment></comment></comment><comment><USER4> Thank you for following up. I often feel people, news outlets, etc. often don't provide any follow-up to a complaint or poor service with a given company. I certainly don't drink the kool-aid of big business, but I still feel they aren't as evil as some people make them out to be.

</comment><comment><USER5> I know that it would be easy to label this with the following:

"Apple is only doing this because of the bad press and they are still bad guys just trying to mop up the bad PR."

But let's not jump to conclusions. After all, they could be altruistically fixing stuff like this right and left. They could be fixing stuff where there was no negative press. And we would never know because we need the negative press to find out in the first place.

</comment><comment><USER6> This doesn't sound like exceptional service given your past situation. It sounds like damage control.

<comment><USER7> That would make sense if they actually seemed to care about that in any other situation, but there are many more publicized mishaps that have not been corrected at all. I'm thinking the OP just managed to get lucky here.

</comment></comment><comment><USER8> So it took 3 months to fix that flaw which nearly put you into lifelong debt.

You should be angry as hell and not thanking them.

<comment><AUTHOR> It's easy to be forgiving when you have $15.000 in the bank :)

</comment></comment><comment><USER9> Good to know that behind the red tape, there is still human compassion and understanding at work!

</comment><comment><USER10> Any tips for people in your situation? Is there a magical department at apple that will fix these type of issues? If so how do you get in touch with them without getting press?

I'm not in a similar situation, I just feel like this information would be very helpful to a lot of people.

<comment><AUTHOR> Well, there are two things you can do to be the inside on Apple:

1\. Get the number of a reviewer. If you have been publishing apps for a while they will call you and give you their number

2\. Get the number and email address of one of the higher ups in iTunesConnect. I have one of those, but I obviously am not going to give it out, I think he would probably not be happy to get everyone bypass the staff filter :)

Most important tip is this:

Apple have many different sections for many different tasks. Email the relevant people directly! If you have a banking issue, email banking. If it is iTunesConnect, email them, if it is developer acccount related, mail the developer relations.

<comment><USER11> Man, I'm going through the routine right now. I wanted to become an iTunes affiliate for an iPhone app I'm about to submit. Apple a) does not clearly state what iPhone developers need to do since affiliates are typically websites b) sends you a generic rejection email and forces you to wait two weeks to reapply while you are scratching your head _guessing_ what they want. So I've been calling linkshare, who are very helpful and clearly want to make money. Yet I send blind emails to apple crossing my fingers for a response.

</comment></comment></comment><comment><USER12> To those apologists who said Apple couldn't fix this issue rapidly if they were sufficiently motivated by negative press or otherwise -- you were wrong.

It took many months, but something finally motived Apple to move.

</comment><comment><USER13> Thank you for posting good news! Too many sites post only the bad news and then hide the clarifications/corrections.

</comment><comment><USER14> You mention that "you can upgrade from personal account to business accoun", how can someone do that?

<comment><AUTHOR> It's in the FAQ somewhere. It's a standard practise I believe. You just need to email someone and they convert it, assuming you have the papers.

</comment></comment><comment><USER15> can you tell us the name of your app? it doesn't seem to be referenced here or in the original post.

<comment><AUTHOR> Not relevant. I'm not doing this for PR.

<comment><USER16> This seems strange. I understand not volunteering the info, but if someone asks I don't see a problem with letting them know. You may not be asking for PR but you can always use it.

<comment><AUTHOR> See below.</comment></comment></comment></comment>


A Virtual Unknown (moot of 4chan) - <AUTHOR> http://www.washingtonpost.com/wp-dyn/content/article/2009/02/16/AR2009021601565.html?hpid=sec-tech

<comment><USER2> I have tried to buy ads on 4chan many times. I have emailed them at least once every two months over the last year. I have NEVER received a reply.

My product is a browser based game that is very popular with the 4chan crowd. We already advertise on ED. It's as close to a perfect fit for their audience as anything I can think of.

On their previous ad network (I just learned about the new one), things were self serve, but every time I bought ads I was told there was a conflict and to try again.

They seem completely uninterested in doing business with us, or anyone. Maybe that's why the whole thing is failing from a financial perspective?

<comment><USER2> update: I spoke too soon. Following this article I was able to get in contact with them and our ads should run soon!

</comment></comment><comment><USER3> You should be aware that moot has a long habit of being somewhat less than perfectly truthful with the media.

ED is _profoundly_ not safe for anything: <http://encyclopediadramatica.com/Christopher_Poole>

<comment><USER3> I thought I disclaimed it well enough but just in case: THE PREVIOUS LINK IS NSFW, REALLY REALLY NSFW. IN FACT THE ENTIRE SITE IT'S HOSTED ON IS NSFW.

<comment><USER4> "profoundly not safe for anything" sounds like you're saying it exposes liars (i.e. is not safe for them) but is itself not always trustworthy (i.e. not safe to believe 100%), especially within the context of your earlier comments about untruth.

That you were trying to warn that it's NSFW was not at all clear.

<comment><USER3> Fair enough. Context fail on my part, the phrase "not safe for $foo" is given to include NSFW regardless of the value of $foo elsewhere it's hardly a guaranteed assumption.

If pg or someone wants to include an explicit NSFW in that comment I'd be much obliged.

<comment><USER5> Maybe if you'd written it Not Safe For Anything, that would make the brain click correctly. I too misread your original.

</comment></comment></comment></comment></comment><comment><USER6> I met him at ROFLCON in Boston and spent a while chatting with him about career stuff. Sadly, I suspect that the thing they mentioned about Boston might have been some people I put him in touch with. I never followed up on what happened there. :/

He is a bright guy and he can/will do great things once he figures out the right way (for him) to extract a good professional presentation of his skills and experience from the quagmire that 4chan can be.

My personal opinion is that he needs to find some start-up that is trying to do something edgy in the social scene and hook up with them to be a coordinator/moderator/facilitator. He knows a damn lot about how a large social group like 4chan can ebb, flow, and eddy.

</comment><comment><USER7> _If he didn't care so much about what kind of advertising 4chan users have to look at, he probably wouldn't be worried about money right now._

If this article is an accurate portrayal, it is surprising yet sad someone with such a site (sole owner, >5M visitors, sustained growth+traffic over years, source of numerous profitable spin-offs, etc.) is in debt and unprofitable.

Surely it is better to run ads that are not optimal but make you money (a balanced comprise), than be unhappy, in debt, and looking for a job?

I don't think he would be happy in most day jobs either (as such people rarely are) and with an income stream he could pursue other ideas that interest him.

<comment><USER8> I think the sort of ads that 4chan would have to settle for would be _far_ less than optimal. Most brands, I think, would pay to _not_ be seen on /b/.

<comment><USER9> Suddenly, blackmail is a legitimate business strategy.

</comment></comment></comment><comment><USER10> I would pay for advertisement on 4chan. It would be perfect for recruitment, especially on the more arty boards like photography. But it would take at least:

\- the possibility to buy small packages, partly because the companies who are big enough to buy the big package are the ones who care most about reputation

\- the possibility to define your audience, at least by: board, keywords, country/city of origin

None of which are possible now: <http://www.4chan.org/advertise/>

</comment><comment><USER11> > _A baby seal walked into a club._

\- The favorite joke of the creator of 4chan.

I wouldn't trust this guy too much. It seems strange that he can't monetize such a hugely popular site. Kind of fishy actually. If he has problems with big flashy ads something like google adsense would work out just fine.

<comment><USER12> Are you familiar with "smart pricing"? Basically, if your traffic isn't worth anything, you get CPMs to match. This is for the understandable reason that advertisers will go freaking berserk if they run a Placement Report and see they're paying large CPMs for no-conversion traffic from a site of very low perceived quality. (And if you're, oh, advertising manager for a bank, your level of perceived quality of /b/ is probably lower than you can construct a number to represent.)

See also: Facebook and Myspace, which have the same monetization issues minus the whole content toxicity problem.

<comment><USER13> _See also: Facebook and Myspace_

How many millions a year do they spend? 4chan is a lean one person operation, probably costing less than 100K a year to run. Given the traffic he's getting, he could be getting miniscule CPMs and still be doing ok.

<comment><USER14> In the article he claims it costs $68k/year to run.

</comment></comment></comment></comment><comment><USER15> He cannot make money of the site and he cannot get a job? That is the saddest thing I have read for a while. Not because he cannot get a job but because it confuses one's mind on what success really means. In a way he is extremely successful, but in a way he is $20,000 in debt. Irony!

<comment><USER16> The top post (ED entry for moot) says he's made $3 million - which is probably closer to the truth IMHO. The site serves ads. I have a hard time believing he's making no money and is still doing it.

</comment></comment><comment><USER17> One page print version:

[http://www.washingtonpost.com/wp- dyn/content/article/2009/02...](http://www.washingtonpost.com/wp- dyn/content/article/2009/02/16/AR2009021601565_pf.html)

</comment><comment><USER18> Did the article really end with a sentence about his being a failure on paper? Ending with the word "failure"? That's harsh.

</comment><comment><USER19> Every time Chris Poole talks to media it's to fuck with them.

<comment><USER20> Yes... I think this article is almost entirely not factual. I think it very likely that moot is making a very decent living and does not live with his mother.

<comment><USER2> So who was the woman they interviewed? An elderly 4chan user?</comment></comment></comment>


The Green New Deal Is Good for the Planet–and the Democratic Party - <AUTHOR> https://www.thenation.com/article/democrats-green-new-deal/ <comment><USER2> this belongs on /r/politics not HN</comment>


Accelerating Bitcoin's Transaction Processing - <AUTHOR> http://www.cs.huji.ac.il/~avivz/pubs/13/btc_scalability_full.pdf

<comment><USER2> Finally something about bitcoin that's actual hard CS and not fuzzy speculation or wishful thinking.

From a very superficial reading I understand that this paper proposes to solve forks in the blockchain by choosing the subtree with the most children (instead of the largest height, like in the current protocol). The authors claim that this avoids wasting (much of?) the computational power invested into blocks that are eventually rejected.

The meat of the paper starts at page 18.</comment>


Show HN: EthVigil Tutorials – Learn and Build on Ethereum in real time - <AUTHOR> https://tutorials.ethvigil.com/ <comment><AUTHOR> Hi all, I helped build this and will be happy to answer any questions here.

TL;DR: Using Svelte and our Ethereum API gateway, I built an interactive tutorial to learn and code on blockchain in real time.

Long time HN lurker and an equally long YC reject :) finally breaking the shackles and shipping something on HN. A bit of a personal back story first.

After recovering from a critical health condition due to tampered blood tests and reporting, I started hacking on Ethereum to see if I could leverage the tech to solve this for others. When building a couple of prototypes and eventually my first side project (CryptoVigil) on Ethereum, I realized how painful it was to code on blockchain even for an experienced developer like me. Why wasn't there a Stripe or Twilio for blockchain that I could use to quickly prototype my app with just a few lines of code. With that vision, my co-founder @anomit and I have been working on this since 2 years.

Whether you are a student, a novice in the world of web development or a seasoned fullstack developer, our vision is to make blockchain development accessible to all. The tutorial framework itself will be open sourced once we collect feedback from the community and iron out a few kinks. Anyone can then contribute their lesson plans and spin off their own version if they wish so.

Would love to hear first impressions from fellow developers here. Feel free to break stuff on the interface too!

(It is a developer tool intended for desktop usage. Experience on a mobile browser will be sub-par.)

If you want to dig deeper, check out the docs of the core API. We dog-fooded it to build this very experience!

[https://ethvigil.com/docs](https://ethvigil.com/docs)</comment>


James Lovelock: "There's a danger of losing our tenure on this planet" [video] - open-source-ux https://www.bbc.com/ideas/videos/theres-a-danger-of-losing-our-tenure-on-this-plane/p06yyqvc <comment> open-source-ux This is a short clip worth watching to the end, but in case you can't or don't want to watch, here are some of his comments when asked what we can do about climate change:

"Take an interest in the natural world, in plants and animals and things that grow naturally"

"Not worry too much about schooling, the R's [Reading, Writing, Arithmetic] yes they're very important, but all the other stuff I think could be ditched in favour of a better understanding of the world"

"There are answers of various kinds but I think it needs the right sort of politics to change people's thinking about these things and I'd like to see these youngsters using their energies and their talent in this way rather than looking for some techy answer because I don't think the answer's going to come that way."

"I think we have all the things needed to stop global warming, we're just not using them"</comment>


The First Few Milliseconds of an HTTPS Connection - <AUTHOR> http://www.moserware.com/2009/06/first-few-milliseconds-of-https.html

<comment><USER2> I'm a bit uncomfortable with the server_name being sent in the clear. Couldn't it have been a hash or something?</comment>


Show HN: San Francisco NYE 2013 Guide (Feedback Please) - <AUTHOR>

Just pushed out one of our first guides. Let me know what you guys think.
http://www.UpOut.com/sf/san-francisco-new-years-2013-event-guide
We also moved our service's search engine. Try it out!
I'll be on and would love some feedback <comment><AUTHOR> Clickable --> [http://www.UpOut.com/sf/san-francisco-new- years-2013-event-g...](http://www.UpOut.com/sf/san-francisco-new- years-2013-event-guide)</comment>


'Keys to kingdom' leaked by Sweden exposing military secrets, EU secure intranet - <AUTHOR> http://www.ibtimes.co.uk/keys-kingdom-leaked-by-sweden-exposing-millions-data-military-secrets-eu-secure-intranet-1631565 <comment><USER2> [https://news.ycombinator.com/item?id=14825766](https://news.ycombinator.com/item?id=14825766)

<comment><AUTHOR> I feel like something in my brain broke and I'm suddenly way stupider than usual, I can't access any article there, it's only a link to the domain, am I doing something wrong?

<comment><USER2> It's a link to the previous HN discussion of the same story. We often post these to explain to readers why a later submission has been tagged [dupe] above. If that still doesn't make sense, feel free to email firstname.lastname@example.com and we'll explain further.

<comment><AUTHOR> Figured it out, my ad blocker removed the URL from the discussion you linked to, so it ended up looking really odd on my end.

</comment></comment></comment></comment><comment><USER3> I'm surprised this hasn't come up on HN earlier as it's been in the news in Sweden for a couple of days already.

Lots of mud being thrown around especially towards Russia (Swedes are scared of Russia because they did not join NATO in an effort to remain neutral)

But from my perspective it's a weird cognitive dissonance involved in this story. The real issue is not that this content (which is sensitive) was outsourced, it was that it was outsourced to "people who may be pro-russia". No matter that they're outsourcing this information to a US company. That is not the scandal.

I know the USA is supposedly an ally but, with their history of spying on foreign (EU) ministers and political leaders it's unnerving that nobody challenges the notion of giving US companies (and by proxy; the US government) even more access to data.

<comment><USER4> So what exactly has happened there? They say that some "transport agency" has uploaded their database to a 3rd party and this somehow implies compromise of military databases too? How is "EU secure intranet" relevant?

<comment><USER3> EU secure intranet has no business being there. I've never heard of it and it's "not a thing" in regards to this. Even if it is a thing in real life.

What happened was; the Swedish equivalent of the DMV was outsourcing everything to IBM, IBM were using their sites in the post-soviet bloc to handle this.

Part of the outsourcing were people playing a bit fast and loose with data security standards. Their primary database was unencrypted and they would routinely pass around excel spreadsheets with confidential information in them via email (even to external folks)

Then the Swedish government gave the "DMV" a list of people under witness protection. That list was sent (with a bunch of others) for "removal" from the system, IBM in the post-soviet country could not understand the difference between military personnel who had to be delisted for being undercover and witness protection people who would be given new identities.

So they sent a list with the new and old identities in an unencrypted excel spreadsheet. Those two sheets are what leaked.

The rest of the information was uncovered while they were looking at the source of the sheets.

<comment><AUTHOR> > EU secure intranet has no business being there. I've never heard of it and > it's "not a thing" in regards to this. Even if it is a thing in real life.

It's called s-TESTA, its precursor was TESTA [0]. The thing is: The same company responsible for the leak was allegedly also contracted to connect the Swedish government intranet to s-TESTA. So if the company is really a bad actor, and not merely incompetent, then there's a very real possibility of s-TESTA having been compromised.

I mean even if they are really just that incompetent, then that also doesn't bode well for whatever they did to connect the Swedish intranet to s-TESTA.

[0] [http://ec.europa.eu/idabc/en/document/2097/5644.html](http://ec.europa.eu/idabc/en/document/2097/5644.html)

</comment></comment></comment></comment><comment><USER5> the article on privateinternetaccess adds some nice details: [https://www.privateinternetaccess.com/blog/2017/07/swedish-t...](https://www.privateinternetaccess.com/blog/2017/07/swedish- transport-agency-worst-known-governmental-leak-ever-is-slowly-coming-to- light/)

<comment><USER6> You forgot something there...

EDIT: uBlock did this, my apologies.

</comment></comment><comment><USER7> Should these kind of things be on computers?</comment>


TIOBE Index for April, 2014: F# Booming, Scala Busting, etc. - <AUTHOR> http://www.tiobe.com/index.php/content/paperinfo/tpci/index.html?april-2014

<comment><USER2> I take a look at TIOBE from time to time, but I wonder how relevant it is. Is JavaScript's popularity really about the same as Visual Basic.NET's? Is Python more popular than JavaScript? Is PL/I more popular than Bash?

<comment><AUTHOR> Good question re: TIOBE relevance.

I check it out more for language trends rather than fixed position; i.e. is language X on an upward or downward trend.

Scala, for example, is my daily dev. so not thrilled to see it trending downward o_O

Assumed Haskell would be trending upward along with F#

Food for thought regardless...

<comment><USER3> TIOBE ranks seem to be kind of proportional to the activity of the language creator's Twitter account.

Science ftw, I guess.

</comment></comment></comment><comment><AUTHOR> Not sure what's happening with Scala, it's been on a steady downward trend of late (from 31 to 48).

F#'s meteoric rise, on the other hand, when will it plateau, top 10, top 5?

Haskell dropped out of the top 50 which was also a surprise.

Ruby seems to have stabilized, looks like it won't be evicted from the top 20 anytime soon.

Other than that the 4 Cs continue to dominate.

<comment><USER4> After a few years of Physics laboratory. the lack of error intervals make me cry :(.

I couldn't find them. and I guess they are not available. So the only possibility is to guesstimate. This can make a few of my friends that really know statistics cry and never speak to me again. So don't take my numbers too seriously.

Fist we will assume that all the variation in the top 20 is due to noise, not due to a tendency in the real data. This exaggerates the estimated noise. The table of relative change = change / raiting is:

      Programming Language    Relative Change
      C                          -1.3%
      Java                       -1.9%
      PL/SQL                      9.0%
      Delphi/Object Pascal      -12.1%
      Ruby                      -13.2%
      JavaScript                 13.7%
      Lisp                      -13.8%
      Assembly                   16.4%
      Objective-C                25.5%
      C#                        -27.6%
      MATLAB                     31.6%
      (Visual) Basic            -36.6%
      Visual Basic .NET          37.2%
      Transact-SQL               38.5%
      D                          55.1%
      C++                       -58.3%
      F#                         85.9%
      PHP                       -95.6%
      Python                   -122.9%
      Perl                     -127.6%

(Ordered by absolute relative change.)

(Too many %. Example: Language: PL/SQL. Raiting: 0.782%. Change 0.07%. Relative Change = Change / Raiting 9.0%)

There are 2 languages (Java and C) with a RC <2%, they are the bigger languages, so this is possible not an artifact.

There is a group of 6 languages with 9%<RC<16%.

There is a group of 6 languages with 25%<RC<38%.

There are 6 languges with 50%<RC<130%

I think that we can optimistically estimate the error using the first group, and approximate it as a 10% (but a 20% or a 30% is not out of discussion).

(Technical note: Some distributions are very "noisy", if this were some combination of Poisson distributions I'd expect a noise of 100%. But an easy model for the Poisson distribution is that each developer choices each month a language with a fixed probability, independently of the previous choice, this assumes that developers have no memory. This is very different of the TIOBE measurement, because they essentially measure the accumulated number of webpages of each language, so this is very different from the no memory model.)

\-----

Back to Scala: Did it drop from #31 to #48 in one month or it's a multi month "trend"?

This month, the ranking of ABAP (#31) is 0.367% and Scala (#48) is 0.0219. I don't have the Scala raiting of last month, so I'll use 0.367%. The RC "is" 67%. It looks big for a month, but if the change was in a few months I'd think it's mostly noise.

<comment><AUTHOR> Thanks for this.

Scala's drop has been over a 3 month period.

F#'s rise seems "real" given the consistently strong numbers of late.</comment></comment></comment>


How do you find customers with problems to fix in software? - <AUTHOR> I'm a contract developer but I've long been keen to make the leap to starting a software product company, ideally B2B.
I can fund getting an initial release out, but it seems to me the best way to do so is by finding a customer with a problem and a budget who can put a price on what they'd pay for a solution. I've tried doing this without a customer and it's not gone well.
--
This seems straightforwards, but it's escaped me so far. The closest I managed was an NHS (I'm based in the UK) team my wife works in who liked a prototype, passed it up the chain to get budget approval and were told they could have the software if it was developed in-house. I approached some NHS innovation departments for help getting it to other teams, but they said they'd only work with software that other people were already using. Catch 22.
Any tips? <comment><USER2> I'm in the same place right now.

Working as employee and cotractor for about 10 years now.

I have the feeling all business lectures focus on what to do AFTER you got this kind of thing sorted out, before you are pretty much on your own.

I will go to a trade fair next week, maybe I'll find something there...

</comment><comment><USER3> An alternative is to find a domain that you find interesting and then research it to find problems people have. Look up Amy Hoy's Sales Safari technique.

Once you've done that, products that people will actually pay for become easier to see.

<comment><AUTHOR> Only just into watching her give a talk on this but it sounds interesting, just the sort of thing I'm after. Thanks.

</comment></comment><comment><USER4> Hi cs02rm0, drop me an email on email@example.com. I am based in UK. Let's catch up for coffee and I can bounce some ideas by you and tell me what you think. Look forward to your reply. Rume

</comment><comment><USER5> Identify a specific and urgent business need from your previous jobs. A real pain point for the managers.

I used to work in the gaming industry. I have 2 problems which they consider "difficult" but i know are solvable.

Its the "getting shit done" which is harder for me. All the small implementation details pile up ;(

Are you into web dev, desktop or backend ?

<comment><AUTHOR> Thanks. Previous jobs is difficult, in recent years I've been working at places who only deal with large defence companies. They don't want to sign a contract for anything smaller than millions and I'm not going to win one of those.

The systems I build tend to be Java at the core (uncool but I like it and it works with the sector), but I do everything from requirements gathering through to operations including UI. Although a minimum of UI is preferable.

</comment></comment><comment><USER6> Bootstrapping in B2B is very hard. Decisions take years, endless customization and integration, and its someone's day-job to negotiate you down on price.

VCs like this because with enough funding and persistence, you get a sticky high margin product.

How about B2C ? What is your technical skill set ?

<comment><USER5> health sector is also full of compliance issues - urghh..

<comment><USER7> .. but the compensations to fit the bill can be quite nice -- and the health care industry is about 10 years behind in tech standards (IMO).</comment></comment></comment>


Ask HN: What's the best way to keep a project log or journal? - <AUTHOR> Where you write down thoughts/what you did/next steps. I use text files, but it's a little hard to look back on afterwards in a cohesive way. I'm wondering if people use other ways? <comment><USER2> Plain text files are a great way to go. You should check out JRNL, [https://maebert.github.io/jrnl/](https://maebert.github.io/jrnl/). It uses a single file and allows encryption and basically provides easy simple command line support for adding time-dated entries.

</comment><comment><USER3> Text files and grep to look back. Then when a project starts to have some longevity I skim through the notes and make more formal documentation of some aspects of the work I'm doing.

I think I'll always stay with simple text files for projects that may or may not go anywhere.

</comment><comment><USER4> I recorded a brief screencast of how I keep a dev journal. :) [https://youtu.be/4W8i8FTz_ck](https://youtu.be/4W8i8FTz_ck)

Hope it's helpful!

</comment><comment><USER5> After a lot of fiddling with different options I use Vimwiki running in separate Vim instance on dedicated virtual screen.

Hit ^6, hit enter, hit F4 to put the timestamp, write. Done.

</comment><comment><USER6> I would recommend emacs org-mode. I've been using it for months now and became way more productive than before. You may want to take a look at this fine set- up. [http://doc.norang.ca/org-mode.html](http://doc.norang.ca/org-mode.html)

</comment><comment><USER7> Devarist is built for keeping a work journal. It supports Markdown and images too.

Check it out, feedback is very welcome :-)

[https://devarist.com](https://devarist.com)

</comment><comment><USER8> Your git commit logs... Because what you actually accomplished is all that really matters.

<comment><USER9> I'm not entirely sure why this was downvoted. I think this is a more than reasonable way of keeping track. And honestly, with git commit messages you can even keep track of the things you want to do next.

</comment></comment><comment><USER10> github seems like good option.

</comment><comment><USER11> Evernote?</comment>