1. 1

    Open plan offices aren’t going away as long as they’re cheap and the company can still recruit employees to work in them. I don’t see a way to make real estate cheap unless you move your company to a cheap area or promote remote work. As long as employees are willing to work in such spaces, companies have little incentive to change.

    1. 1

      Data like this appearing in abundance, and is showing a direct connection to cost increases. That sounds like incentive to me.

    1. 1

      We cache the compiled CSS by placing it in localStorage

      This is exactly what service workers are for, though.

      1. 2

        OP: Do you know the history of this project? First I’ve heard of it.

        1. 8

          From the Wikipedia

          Waterfox is an open-source 64-bit web browser, with an aim to be speedy, ethical, and maintain support for legacy extensions dropped by Firefox, from which it is forked on 27 March 2011.

          Waterfox differs from Firefox in a number of ways by:

          • Disabling Encrypted Media Extensions (EME)
          • Disabling Web Runtime
          • Removing Adobe DRM
          • Removing Pocket
          • Removing Telemetry
          • Removing data collection
          • Removing startup profiling
          • Allowing running of all 64-bit NPAPI plugins
          • Allowing running of unsigned extensions
          • Removing of Sponsored Tiles on New Tab Page
          • Addition of locale selector in about:preferences > General
          • Defaulting to Bing as the search engine instead of Ecosia, Google or Yahoo![7]

          IMHO it should default to DuckDuckGo search instead of Bing.

          1. 5

            I am okay with Bing default if it funds Waterfox development. I can easily change the default search engine myself, but maintaining those features require real resource.

            1. 1

              Wow, I had no idea! Thanks for the detailed response!

              1. 1

                Welcome ;)

          1. 2

            “JavaScript code” is too broad. Can you provide some more concrete examples?

            1. 1

              Would it help to say that I’m interested in arbitrary, but relatively small, amounts of code? Refactoring within functions, for example.

              I can imagine something like (contrived, but sadly this kind of thing isn’t out of the question in this codebase)

              function originalFunction(listOfInts1, listOfInts2) {
               this.something = listOfStrings.map(function(value) {
                  return value + 1;
               }
               this.something = listOfInts2;
              }
              
              function refactored(listOfInts2) {
                this.something = listOfInts2;
              }
              

              And a tool which can tell me that this code is equivalent. But now that I type this out, I can see how it would be pretty hard. In this case it’s obvious to me, because I know how map works, and I can see the inner function code is pure, but how could such a tool know that listOfStrings.map, or the function that is provided to map, didn’t have some kind of side-effect that is no longer happening.

              1. 2

                Indeed, this would be difficult if not impossible, however, perhaps you should try this from another angle. A tool like ESLint could help by flagging or not flagging each piece of code. If you put the “new” code next to the old, and ESLint flags one, there’s a good chance they’re not doing the same thing. You mentioned “side-effects”, so maybe a rule set like this would be of use:

                https://github.com/jfmengels/eslint-plugin-fp

                In any case, the only true way to test code like this is to write unit tests. Karma, Ava, Jest: these can help. Check out egghead.io or similar sites to help there.

                Good luck!

            1. 1

              Hm. I can only access this site when my VPN is off. Not cool.

                1. 1

                  Do not try to load this on a mobile device.

                  1. 1

                    Why wouldn’t you use a VPN at home? You trust your ISP?

                    1. 4

                      I am not the author, but you need to trust some network, don’t you? Because who runs your VPN? And if you do it yourself, where does it exit?

                      By using a solution like the author you can at least establish a trusted LAN or layer 2 network by using your own router behind your ISPs up-link. You’d need to carry a portable router with you to do the same at a coffee shop or so.

                    1. 2

                      That read like an IBM ad and didn’t actually address why devs shouldn’t have to a complicated deploy process.

                      1. 2

                        Because it is most likely an ad in disguise.

                        1. 3

                          I love how it claims to be based on “reason” and still resorts to “bs” to get things done. Political commentary as code.

                          1. 3

                            Reason is a syntax for OCaml. BuckleScript is the compiled bridge to JS.

                            1. 1

                              Yes. I just like the way the names play out.

                          1. 3

                            Wow, this is impressive. Super fast, too. Excellent concept and execution.

                            1. 1

                              Thank you. ?

                              1. 1

                                Not sure why this is a question.

                            1. 4

                              “If a pure function mutates some local data in order to produce an immutable return value, is that ok?” – Rich Hickey

                              https://clojure.org/reference/transients

                              1. 3

                                LOVE this quote:

                                “It doesn’t matter how often you have stand-up meetings, when it comes to the central method of communication, long-running branches represent dead silence. Long-running branches are the worst.”

                                1. 10

                                  How is it a popularity contest? I mean, I think they are good metrics, they simply don’t measure popularity. Furthermore, I think that you rarely get to see other people’s karma, since it is not displayed in regular conversations, but in profiles.

                                  I’m specially shocked by the “competition” part. Are we going to do a ranking in Christmas? No one is going to bash you because of your karma, just relax and enjoy the conversation :)

                                  1. 5

                                    Furthermore, I think that you rarely get to see other people’s karma, since it is not displayed in regular conversations, but in profiles.

                                    I didn’t even realize it was possible to see it for other users.

                                    1. 8

                                      Then let me blow your mind: https://lobste.rs/u?by=karma

                                      1. 2

                                        Ok so there was a ranking after all. Dammit.

                                        1. 1

                                          Great now I have that Eve/Gwen Stefani song stuck in my head…

                                          1. -1

                                            It’s the usual distribution these things have

                                            ********************************************************************************
                                            ****************************************************************
                                            ****************************************************************
                                            ******************************************************
                                            **********************************
                                            ******************************
                                            ***************************
                                            **************************
                                            **************************
                                            **********************
                                            *********************
                                            *****************
                                            *****************
                                            ****************
                                            ****************
                                            **************
                                            **************
                                            *************
                                            ************
                                            ************
                                            ************
                                            ************
                                            ************
                                            ************
                                            ************
                                            ***********
                                            ***********
                                            ***********
                                            ***********
                                            **********
                                            **********
                                            **********
                                            **********
                                            *********
                                            *********
                                            *********
                                            *********
                                            *********
                                            *********
                                            *********
                                            *********
                                            ********
                                            ********
                                            ********
                                            ********
                                            ********
                                            ********
                                            ********
                                            ********
                                            ********
                                            ********
                                            ********
                                            *******
                                            *******
                                            *******
                                            ******
                                            ******
                                            ******
                                            ******
                                            ******
                                            ******
                                            ******
                                            *****
                                            *****
                                            *****
                                            *****
                                            *****
                                            *****
                                            *****
                                            *****
                                            *****
                                            *****
                                            *****
                                            *****
                                            *****
                                            *****
                                            *****
                                            *****
                                            *****
                                            ****
                                            ****
                                            ****
                                            ****
                                            ****
                                            ****
                                            ****
                                            ****
                                            ****
                                            ****
                                            ****
                                            ****
                                            ****
                                            ****
                                            ****
                                            ****
                                            ***
                                            ***
                                            ***
                                            ***
                                            ***
                                            ***
                                            ***
                                            ***
                                            ***
                                            ***
                                            ***
                                            ***
                                            ***
                                            ***
                                            ***
                                            ***
                                            ***
                                            ***
                                            ***
                                            ***
                                            ***
                                            ***
                                            ***
                                            ***
                                            ***
                                            ***
                                            **
                                            **
                                            **
                                            **
                                            **
                                            **
                                            **
                                            **
                                            **
                                            **
                                            **
                                            **
                                            **
                                            **
                                            **
                                            **
                                            **
                                            **
                                            **
                                            **
                                            **
                                            **
                                            **
                                            **
                                            **
                                            **
                                            **
                                            **
                                            **
                                            **
                                            **
                                            **
                                            **
                                            **
                                            **
                                            **
                                            **
                                            **
                                            **
                                            **
                                            **
                                            **
                                            **
                                            **
                                            **
                                            **
                                            **
                                            **
                                            **
                                            **
                                            **
                                            **
                                            **
                                            **
                                            **
                                            **
                                            **
                                            **
                                            **
                                            **
                                            **
                                            **
                                            **
                                            **
                                            **
                                            **
                                            **
                                            **
                                            **
                                            **
                                            **
                                            **
                                            **
                                            **
                                            **
                                            **
                                            **
                                            **
                                            **
                                            **
                                            *
                                            *
                                            *
                                            *
                                            *
                                            *
                                            *
                                            *
                                            *
                                            *
                                            *
                                            *
                                            *
                                            *
                                            *
                                            *
                                            *
                                            *
                                            *
                                            *
                                            *
                                            *
                                            *
                                            *
                                            *
                                            *
                                            *
                                            *
                                            *
                                            *
                                            *
                                            *
                                            *
                                            *
                                            *
                                            *
                                            *
                                            *
                                            *
                                            *
                                            *
                                            *
                                            *
                                            *
                                            *
                                            *
                                            *
                                            *
                                            *
                                            *
                                            *
                                            *
                                            *
                                            *
                                            *
                                            *
                                            *
                                            *
                                            *
                                            *
                                            *
                                            *
                                            *
                                            *
                                            *
                                            *
                                            *
                                            *
                                            *
                                            *
                                            *
                                            *
                                            *
                                            *
                                            *
                                            *
                                            *
                                            *
                                            *
                                            *
                                            *
                                            *
                                            *
                                            *
                                            *
                                            *
                                            *
                                            *
                                            *
                                            *
                                            *
                                            *
                                            *
                                            *
                                            *
                                            *
                                            *
                                            *
                                            *
                                            *
                                            *
                                            *
                                            *
                                            *
                                            *
                                            *
                                            *
                                            *
                                            *
                                            *
                                            *
                                            *
                                            *
                                            *
                                            *
                                            *
                                            *
                                            *
                                            *
                                            *
                                            *
                                            *
                                            *
                                            *
                                            *
                                            *
                                            *
                                            *
                                            *
                                            *
                                            *
                                            *
                                            *
                                            *
                                            *
                                            *
                                            *
                                            *
                                            *
                                            *
                                            *
                                            *
                                            *
                                            *
                                            *
                                            *
                                            *
                                            *
                                            *
                                            *
                                            *
                                            *
                                            *
                                            *
                                            *
                                            *
                                            *
                                            *
                                            *
                                            *
                                            *
                                            *
                                            *
                                            *
                                            *
                                            *
                                            *
                                            *
                                            *
                                            *
                                            *
                                            *
                                            *
                                            *
                                            *
                                            *
                                            *
                                            *
                                            *
                                            *
                                            *
                                            *
                                            *
                                            *
                                            *
                                            *
                                            *
                                            *
                                            *
                                            *
                                            *
                                            *
                                            
                                            1. 4

                                              Looks almost like a Zipf-Distribution…

                                              Quite interesting, maybe someone should study this a bit (or apply Machine Learning until study pops out).

                                              1. 3

                                                It would be nice to post long tail posts like this externally on a paste service like gist.github.com. I know you wanted to visualize the distribution but it just makes all of us scroll a lot of screen estate for little benefit.

                                                1. 1

                                                  Ok, I’m sorry if it bothered you, but I felt the act of scrolling really gives a feel for the long tail.

                                        1. 1

                                          If you look past the headline, this is really cool technically as well. They implemented a general string-wise sequential CRDT library https://github.com/atom/teletype-crdt. I wonder what other cool projects one could hack together with this as a base.

                                          1. 1

                                            It appears to be based on protobufs, which is a really interesting binary messaging format: https://grpc.io/

                                          1. 12

                                            I disagree with this post. I’m also a professional and my time is valuable too. However, two of the three suggestions they made are taking significant time away from me and my team for evaluating a candidate that potentially can’t even write code to solve a simple task. Part of an interview process is to filter out people before it gets to that point, so we’re not wasting employees time.

                                            1. 10

                                              I think coding challenges are optimised for candidates who are looking for a job. I’ve been in that boat once, and when you’re actually looking for a job your “valuable time” is of course bet spent trying to get said job (by doing coding challenge or whatever else).

                                              Most of the time, though, I’m being recruited. I’m not going to do a coding challenge for a recruiter.

                                              1. 1

                                                Taking an entire day to work with them (unpaid) still strikes me as really weird.

                                                1. 1

                                                  Think of it as a great way to find out if these are people you would want to work with every day before you actually have to do that.

                                              2. 8

                                                I disagree with this post. I’m also a professional and my time is valuable too.

                                                I have the same problem with it as a hiring manager– how do I screen out socially capable but inept developers– and I share the author’s opinion when I’m the candidate– this tells me nothing about why I want to work for you. Each side wants the other to make an unequal commitment so it amounts to a single round game with that candidate. As a candidate with a choice of games, I don’t want to play this one and it signals disregard for/trivialization of the candidate’s investment and work history. For the hiring side, this plays out multiple times and there is investment in posting, screening, reviewing, etc. so regardless of this round my total investment is higher but not visible.

                                                So what have I personally done? When I’m the candidate, I refuse to do the coding challenge and say, like the author, check my repos and talk to my references (unless the problem catches my interest, then I might). I have that luxury. When I’m the employer? Up front I explain how it works and what timeline they can expect as part of a 15-minute phone screen for basic info with someone technical. Then I arrange a round of 45-60 minute calls: a technical call with someone on the team and a social/technical call where I try to get them to talk with me about their work in detail and many of the non-code aspects of their job, habits, tools, designs, etc. They’ll probably have a call with my manager or another peer. Then, if I’m satisfied but not sure, I bring them in or have a video chat and they do a quick coding test. This wastes less of their time, makes my commitment visible, and seems to work but it is not a scalable process.

                                                1. 7

                                                  I have a portfolio and some github projects. This is where most of my hiring emails come from. So when a company doesn’t spend the time to check that out, and they want me to implement some trivial thing that doesn’t generate value for them, I don’t have time for them either.

                                                  I’ve had companies pay me to be a consultant for a week before giving me an offer, which was a nice way to learn about who they are. On the other hand, sometimes companies give me job offers now before I know anything about them, and I have to pump the brakes and talk to more of them before I feel comfortable going into something long-term.

                                                  1. [Comment removed by author]

                                                    1. 6

                                                      They didn’t ask for the hiring managers time, they asked for developers time. Either way, these people have other job responsibilities too and their time is important to defend.

                                                    2. 1

                                                      …evaluating a candidate that potentially can’t even write code to solve a simple task.

                                                      In the post, they talk about how they have a blog, numerous GitHub repositories, etc. At that point it should be obvious they can code. The interview then should be more about “fit” or whatever, IMHO.

                                                      1. 5

                                                        They aren’t the only candidate we would interview and in my opinion, it is better to have a consistent process. If every candidate had a similar level of public presence to evaluate then maybe that would be different.

                                                        1. 7

                                                          So, again IMHO, at that point you’re basically throwing out someone with passion and talent due to bureaucracy. If I come to you with decades of experience/conference talks/published papers/lots of open source software to review/whatever…and you ask me to spend 30 minutes doing trivial work, you’re basically implying that I’m lying to you and/or that your company cares more about process than people.

                                                          Again, this is IMHO.

                                                          1. 7

                                                            I’m saying that you’re not the only person applying for the job and I need to treat everyone the same, so we’re not giving preferential treatment.

                                                            1. 3

                                                              I know, but…maybe you should give preferential treatment to people who are obviously better candidates. :)

                                                              1. 9

                                                                Some of the best engineers I know have zero public presence. Some of them are extremely humble and don’t like public flashiness. Some of them have families and maintain a strong work-life balance with non-tech stuff. Never assume those with a strong public presence are giving the world the whole picture. You still want to drill into the parts of their personality that they don’t highlight.

                                                                1. 4

                                                                  Why does having a public portfolio make someone an obviously better candidate? What makes a candidate obviously better? Arbitrary social metrics? Ability to speak quickly about technical topics? Ability to talk bullshit without it sounding like bullshit?

                                                                  How do you know a candidate is obviously better without having them go through the same process and pipeline?

                                                                  1. 3

                                                                    How do you know a candidate is obviously better without having them go through the same process and pipeline?

                                                                    If the code in their GitHub account is as good or better than what would be tested by my coding test, why subject them to that? Ask harder questions, ask questions about the things that the coding test wouldn’t cover (including “soft” things that would judge a good fit), etc.

                                                                    Why does having a public portfolio make someone an obviously better candidate?

                                                                    Which surgeon would you rather have? The one nobody’s ever heard of, or the one who has published articles on the relevant surgical procedures, who goes to conferences to learn more about surgery, who obviously is passionate enough about medicine that they would study it even if they weren’t getting paid?

                                                              2. 8

                                                                There are, unfortunately, a lot of liars out there. I won’t say that industry hiring practices are anywhere near ideal, but as an interviewer it was astonishing how many people with great optics were incapable of coding. Someone would speak with great passion about all their projects and yada yada, and id be fairly convinced they could do the job, then I’d ask the most basic question imaginable. Splat.

                                                                I guess it helps if you choose to believe the test isn’t meant for you, but for all the other pretenders.

                                                                1. 7

                                                                  Even more surprising to me is that people who can’t actually code are somehow able to sustain careers as developers. It started making a lot of sense to me why good developers are in such high demand after I had the opportunity to do some interviewing and found that a frustratingly large amount of applicants can’t actually code, even if they look great on paper and are currently employed as developers.

                                                                  I think it’s incredibly risky to hire a developer without seeing code that they have written, be it from open source contributions or a coding test if necessary.

                                                                  1. 3

                                                                    Onsite nerves can kick in. It sure as hell did for me. I hate white boarding and I lockup. Totally brain freeze. That said, if it’s a basic one like writing a loop…well, they somehow lied their way into the onsite. Thing is, a take home coding challenge can weed out those people pretty fast. If they do that and come in and fall flat on their face before the whiteboard I don’t totally discount them. Anyway, there’s no perfect solution. There is always the potential to hire someone that is great at coding interviews and then sucks at real world problems.

                                                                    1. 2

                                                                      This is exactly my company’s experience. Half of the candidates would just bomb out on the C++ test even though they have studied it at high school/college/university and worked with it at their job for 5-10 years. How?!? Because they were either doing Java, not C++, or they were actually managing a team that did C++ and never had to touch it themselves (Well since leaving school at least).

                                                                      1. 1

                                                                        What I don’t understand is why this is so hyper-specific to developers. You never hear UI designers talking about processes like this.

                                                                        1. 6

                                                                          Really? I’ve heard UI designers talk about it a lot.

                                                              1. 1

                                                                This is a great idea. Would love to see it for JavaScript.

                                                                  1. 3

                                                                    I have learned this the hard way too many times. I’m a slow learner, apparently. I’ve never really been forced to do it for work, but I’m naturally a night owl and late at night is usually when I experiment with tech. However, I found that I’m much more prone to oversights and avoidable missteps. Stay in school kids.