Threads for avh02

    1. 1

      professional life:

      when i have only one or two tasks to do, i tend not to have an issue working in an uninterrupted train of thought. I’m a terrible multi-tasker, and some days microtasks just pile in from all over the place at work… i start thrashing. My solution has been to have daily to-do lists for days where this happens with all the high-level things i have to do, even if they’re a duplicate of stuff on the team’s kanban board or whatever.

      If a sales/support/marketing/etc person comes in and asks me to check something real quick, I’ll add a todo note and get back to them later in the day or whenever I’m waiting for something like a deploy or whatnot.

      Whatever’s not done at the end of the day - which I rarely allow (usually happens if it’s a collection of small tasks with one or two of the big stuff i was supposed to do that day) - I’ll roll the tasks over to a new to-do list on the next day… that way i’m also extremely aware of what’s NOT getting done. If this rollover happens too often I may reconsider the task that was at hand and talk to my team lead or whatnot about it taking too long to see what we can do.

      personal life:

      leave tabs open to bother you to action and have high-level “forever running todo” list that you can look at when you find yourself slacking and want to do something.

      edit: the point is, as many others have pointed out: catch yourself not paying attention and make an effort to work on what you’re supposed to. For me having some prioritised-ish list as a source of truth helps me when i’m ‘wandering’

    2. 21

      To be honest, I can’t believe that anyone who advocates pair programming has ever actually pair programmed. It is a dismal slog—even when you’re lucky enough to get someone you like as a pair. If you don’t, then it probably could constitute torture.

      1. 19

        It can be fun if you are lucky enough for it to feel like two friends trying to crack a puzzle, but when it is two people who barely like each other being forced to work together then it probably sucks.

        1. 5

          I’ve had the experience you’re describing but the issue with “two friends trying to crack a puzzle” is that it actually requires a puzzle for the description to be applicable. For most professional, relatively experienced, developers, even if they are working on very interesting problems in the large, sitting at a keyboard isn’t really puzzle solving time.

          If I have some problem that’s conceptually difficult I might talk to a colleague about it, but I don’t need them to spell out the solution or watch me do the same in implementation. Imagining pair programming as joint puzzle solving is a bit like considering a lawyer to spell checking a document for spelling mistakes the same thing as legal advice.

        2. 3

          I’d also add that sometimes it is a way to get past a hurdle when you are banging your head against a wall. Not to be done every time, just when you are stuck and need extra input and a sanity check.

          1. 4

            These scenarios aren’t pair programming, though. These are normal collaboration. Pair programming is supposed to be day-in, day-out shared-screen collaborative coding.

            1. 7

              Well people rigidly following textbook definitions might be part of the issue.

              1. 4

                Well, collaboration just happens. It’s a given. Every programmer who hits a snag collaborates (if they have teammates). Pair programming as a practice is different. If you’re not talking about the idea as espoused in XP or in Agile propaganda, you’re not really responding to it.

                1. 2

                  I see, I didn’t know they expected ALL code to be written that way.

              2. 1

                Why are you talking about kicking a pig? That has nothing to do with anything.

                1. 2

                  I don’t understand what made you say this.

                  1. 3

                    I wasn’t rigidly following the textbook definitions of the words in your sentence.

                    1. 1

                      listen, if you don’t like pear programming then don’t do it.

      2. 15

        I guess I disagree with you, and also disagree with the OP. While I would personally consider myself an advocate of pair programming as an occasionally useful tool, the OP certainly doesn’t consider me an advocate:

        let Ep = pair programming efficacy
        let Es = solo programming efficacy
        
        Proponents of pair programming claim that Ep>Es.
        

        Certainly, I would not claim that. (In fact, I don’t think I’ve ever met anyone credible who has claimed something so rigid, so I wonder if the OP is engaged in a straw man.) What I would claim is that I have had the occasion to pair program with others (I have played both roles, the mentor and the mentee), and it has generally been a positive experience. I’d like to note though that it has always occurred under a mutual desire from both parties to actually pair program; I am certainly against some top-down force directing people into a certain style of work.

        To give more context, I pair program very infrequently. It’s on the order of a few times (if that) per year.

        I would also say that OP’s analysis seems quite incomplete to me. For example, the last time I pair-programmed with someone was on a bit of Javascript code. I know Javascript reasonably well, but the other person didn’t. We had a choice: I could either write the Javascript piece of the task, or the other person could write it. But the other person would take quite a bit longer because they’d have to learn a bit of Javascript to do it. However, in the future, it was clear that this other person would benefit from being able to make changes to the Javascript code, so perhaps the initial investment was worth it. Both of us saw this as opportunity to learn together. I hooked my keyboard into his computer, and we were off with a well defined task. He could ask questions and ponder things in real time, since my full focus was on the task. The exchange of information was rapid, and we both enjoyed it I think. Needless to say, that person has now made several other contributions to that Javascript code since then without any future pair programming.

        Could that person have just picked up the Javascript themselves? Yes! Would it have taken them longer? Maybe. Would have it taken so long that it was actually worth me stopping all my work and pair programming for an hour? I have no clue. That kind of micromanagement of efficiency seems hard to nail down in a precise way.

        1. 3

          In fact, I don’t think I’ve ever met anyone credible who has claimed something so rigid, so I wonder if the OP is engaged in a straw man.

          Certainly the following Martin Fowler quote proclaiming that Ep > Es makes my argument not a straw man.

          1. 8

            Fowler also says this:

            Of course, since we CannotMeasureProductivity we can’t know for sure. My view is that you should try it and the team should reflect on whether they feel they are more effective with pairing that without. As with any new practice make sure you allow enough time so you have a good chance of crossing the ImprovementRavine.

            Which kind of puts a damper on this entire enterprise. This statement, to me, feels like it makes it clear that Fowler isn’t intending to be dogmatic about this. With that said, his choice of words could be better!

            1. 5

              The statement you quote there certainly has the feel of something pragmatic, but in practice my experience with nearly everyone in the “agile world” has been a feverish dogmatism toward pair programming. I suspect it’s born out of a lack of empathy for others, and a failure to comprehend that a practice that might be overwhelmingly positive for them could simply fail to work for other teams, but whatever the reason the discourse has always been universally that pairing (or mobbing) is The One True Way, and any objections are purely the result of The Practice being misapplied.

              1. 2

                Capital-A Agile usually means practices being dictated by one or two people (typically none of the four principles in the manifesto are noticed). Pairing in an environment like that is an exercise in management control by ensuring you are closely watched at all times.

              2. 1

                Interesting. Thanks for sharing. I guess if this thread has taught me anything, it’s to be on the look out for places that mandate this style of pair programming and probably try to avoid them. I certainly have experience with “dogmatic agile,” but I hadn’t really heard of this intense style of forced pairing before!

                And the next time I comment on this matter, I will be sure to get the definition problem out of the way first. :-) I had no idea that “pair programming” was even jargon in the first place!

            2. 2

              otherwise they would be advocating for pair programming all the time

              My company does exactly that!

              And good point about Martin Fowler.

              1. 2

                otherwise they would be advocating for pair programming all the time

                My company does exactly that!

                Hmm… All right. Seems quite strange to me. I’ve never heard of such a thing! If that’s true, then yes, I agree that is quite unreasonable.

                (I made a mess of my previous comment and edited it down to something more reasonable. Sorry about that.)

                1. 4

                  XP held that “all code sent into production is created by two people working together at a single computer.” Source here. With respect, I don’t think that if you only pair a “few times a year” you’re experiencing it as it works if executed as originally envisioned. Collaboration on hard problems is useful—even fun, if you’ve got a good colleague or two to work with. Pair programming, though, is not just that. It’s working on the same code, taking turns as the “driver” and the “observer,” either physically at the same computer or sharing your screen and microphone for hours every day.

                  1. 7

                    Nobody bothered to actually define pair programming until now, but as this thread demonstrates, there is no obvious clear consensus on what the term means.

                    So if you say, “oh i was using this definition of pair programming. What do you think about that?” In response, i would say, “i wouldn’t want to work under those conditions either.” And indeed, i have never experienced that sort of pair programming.

                    In any case, i was clearly wrong about saying this post was a straw man, since it seems people really do advocate for this stuff. But I’ve never experienced anyone use pair programming with the definition you provided. At work, when we say, “pair program” we mean it as, “a short period of intense collaboration on the same code might be helpful.”

      3. 3

        I think it has it’s place - for juniors or for the particularly tough problems.

        That said, I’ve only really enjoyed it with a few people I call friends, generally never enjoyed it with anybody I didn’t get along with anyway.

      4. 3

        It is a dismal slog

        I’ve always thought of it like being on a chain-gang, splitting rocks in the desert.

    3. 2

      This is pretty interesting. I work for a hosting company and even when working with people to remove content this has never been mentioned or used. I think this is one of those things were unless it gains critical mass (and everyone does it) there isn’t much point because it becomes hard to tell what is legal/missing.

      1. 4

        sounds like you’re in a position to help gather mass :)

    4. 10

      I really want to like Firefox, but it feels increasingly clear that Mozilla doesn’t seem to consider anyone who wants to adapt any of the choices Mozilla made for him/her to be part of their target audience anymore.

      I don’t really know what their target audience actually is to which they are trying to pull off a Gnome-like pivot, but given the fall in market-share it’s baffling that retaining existing users doesn’t seem to play a more important role.

      Having tried the nightlies of Firefox 57, Mozilla has basically reset my browser usage to a vanilla install. All my extensions will stop working (marked as “legacy” – and I only have three: mouse gestures, an ad-blocker and tree-style tabs) and my theme causes tabs to crash on load (which I only use because the default theme keeps gradually eating more and more screen space).

      While I’m positive that a solution can be found for mouse gestures and ad-blocking, it seems that tree-style tabs (or any kind of UI customization) is thoroughly dead. Even if they addressed the dozen of bugs that were filed to get tabs working again, it’s quite clear that the required level of visual integration to avoid making it look like a second-class citizen will not be supported anymore with WebExtensions.

      The whole switch to WebExtensions feels like going from a positive, user-empowering stance of helping and encouraging users and extension developers to adapt their browsing experience to their liking, to a model where the possibilities of customization and extension is severely limited to protect the users from potential harm that seems to lurk behind every extension.

      1. 21

        It’s not just about protecting users from harm, it’s also about:

        1. Performance. By restricting extensions to APIs we can ensure they will run silky smooth.
        2. Compatibility. Old style extensions broke anytime the random internal thing they depended on changed, so developers would constantly have to be updating their addons. Web extensions are one last major breaking change for addon developers, and then they never have to worry about compatibility again.
        3. Portability. Web extensions can be shared across browsers, so developers don’t need to write multiple versions of their addons anymore just to support Firefox+Chrome. Given a choice between supporting only one of Firefox or Chrome, 95% of developers were already choosing Chrome (I made that number up, but probably). This equalizes the gap.
        4. Security. Like you mentioned, it will be very hard to write malware when that malware is restricted to known APIs.

        There are a lot of really good reasons to make this switch. And while it will be frustrating to a lot of loyal users and developers, I think it will be the right decision in the long term. I’m feeling the pain too, a bunch of my extensions no longer work either. But I’m confident I’ll either find replacements in due time, or adapt my workflow to live without them.

        Btw, u-block origin already has a web extension posted to their AMO dev channel.

        1. 19

          Since I don’t see many people sharing this sentiment, I just want to chime in as a long-time Firefox user and say that I’ve been really pleased with the work in Firefox over the past several years. Performance has improved massively, and it seems like every time I open the developer tools, I find some cool new thing I didn’t know about before. I’ve also gotten a lot of mileage out of several of the experiments in TestPilot. All in all, I’m quite pleased.

          Keep up the great work!

          1. 3

            Thanks! Much appreciated :)

            1. 2

              As another random data point, I don’t remember ever even having a real problem with Firefox.

              But now the new version worries me because there might not be a good mouse gesture plugin available.. soooo if you wouldn’t terribly mind implementing mouse gestures the way Opera v12 had them, that would be nice :)

              1. 2

                As another random data point, I don’t remember ever even having a real problem with Firefox.

                But now the new version worries me

                Likewise, Firefox has always been great for me, but only because I use an extension which allows me to rebind the keys. This extension doesn’t exist for Chrome because Chrome hard-codes ctrl-n to “open a new window” for security theater reasons. (I can’t remember the last time I opened a new browser window on purpose, but it wasn’t in the past decade.) If Firefox starts copying Chrome in that regard I’ll be forced to choose between staying on the old version forever or spending half my day closing those seventeen windows that just opened because I was trying to scroll down.

              2. 1

                I found this: https://addons.mozilla.org/en-US/firefox/addon/foxy-gestures/

                Not sure if it solves your use case or not though.

                1. 2

                  Just tried it, doesn’t really work. (In the sense of “fails to save any changes and crashes reproducibly”.)

        2. 2

          Thanks for the note on uBlock. The dev channel thing was quite hidden, but I found it.

          Well, all I can say is that I think it is sad to see that Firefox is switching from the software repository approach popular on Linux distributions to the walled garden approach of app stores (like on Windows/Mac).

          I can understand why it is more convenient for developers this way, but I don’t try to be a developer of every technology I use. (Ok, I’m still sitting on this reproducible Firefox crasher and I installed the debug symbols to figure out where it comes from … but sometimes I just want to be a user.)

          Currently my only hope is that the official roll-out of WebExtension gets delayed just enough for another Firefox ESR release based on the current code. This would give me another few years out of Firefox, but in the long term I really don’t see a future for me on Firefox. That’s kind of sad because I have been an user since it was called Netscape Navigator.

          It’s kind of clear that vertical tabs will never be a first-class citizen with WebExtensions (even under the assumption that all of the dozen current bug reports get sorted out).

          Firefox’ stance reminds me of the saying “if the government is unhappy with its citizens, it should swap out its citizens” and the CADT that happened with Gnome. (XFCE user ever since.)

          1. 1

            Well, all I can say is that I think it is sad to see that Firefox is switching from the software repository approach popular on Linux distributions to the walled garden approach of app stores (like on Windows/Mac).

            Would you mind clarifying? The distribution model for WebExtensions is the same as for non-WebExtensions. Or are you referring to the use of sandboxing?

            1. 1

              Having to beg Firefox developers to allow me to make the changes I want to my browser feels counter to everything Mozilla stood for in the past.

              1. 1

                I see. On the other end, every API exposed to extensions becomes something that Mozilla has to commit to maintaining into the future, imposing architectural constraints. This was most painfully evident in the long process of the e10s (multiprocess) roll-out.

      2. 5

        There is a tree style tabs in “Firefox Testpilot”, that’s not going to break because of the API changes

        1. 2

          Are you talking about Tab Center? That’s sadly not a tree style tabs extension, merely a vertical tabs extension. But yes, the point remains that you can write functional alternative tab bars with the new API.

          1. 3

            From what I have seen, the UI from tab center will not be supported with official WebExtensions.

            For instance, the obnoxious sidebar header will be mandatory: https://github.com/Croydon/vertical-tabs-reloaded/issues/13#issuecomment-294589274 That’s a killer for me, right there.

            This is what I currently have: http://imgur.com/a/OemGy

            This is what I’d like to have: http://imgur.com/a/cWEsE

            This is probably the best I will get with WebExtensions: https://addons.cdn.mozilla.net/user-media/previews/full/185/185415.png

            Thanks, but no, thanks.

        2. 1

          The test pilot has ended, and I can’t find a way to install the add-on now. Which is a shame, because they had one feature that would have actually improved my experience: Tabs taking the whole area on the left side, instead of being under the location bar. https://testpilot.firefox.com/static/images/experiments/tab-center/details/tab-center-1.ceef2f45.jpg

          I’d love to have a tab extension doing that.

      3. 4

        holy hell, another tree-style-tabs-er - people don’t understand us. - I moved to vivaldi cos chrome had no capability to do vertical tabs (and always felt strangely icky on chrome). Vivaldi has vertical tabs but not tree style :(, is all chrome under the hood but with plenty of customizability and most of the “i wish i hads” from firefox. It started out buggy when i was using it but has generally gotten better. not OSS is the only thing that mildly annoys me.

        I personally jumped away from firefox when i eventually got sick of it regularly slowing down after a few hours of use (to the point of barely scrolling while rendering another tab i had just middle clicked on)

        that said, none of the news coming out of the ff camp is making me think “wow i should totally give it another shot”. Your comment only reinforces that - I hate not having control over other people’s stupid decisions on my system.

        1. 6

          There are dozens of us using tree-style-tabs.

      4. 3

        https://addons.mozilla.org/en-US/firefox/addon/tree-tabs/ is the Tree Style Tabs replacement. It’s not as good, but it’s improving.

        I switched to https://addons.mozilla.org/en-US/firefox/addon/tab-center-redux/ and it’s pretty great.

        1. 2

          I tried them all. They are quite restricted in what they can do, and the mandatory tab header makes it pretty clear that stuff like this will always be a second-class citizen under WebExtensions.

          Think about it: Why doesn’t the “official” tab bar get one of these headers, too? Because it is completely jarring and obnoxious. Firefox devs know it sucks, so they don’t follow these rules, but everyone else has.

          1. 4

            and the mandatory tab header makes it

            It’s not “mandatory”. There are bugs open for a webextension API for removing it, and Firefox devs seem to be open to adding one. This API doesn’t exist now, but you’re painting it as if it will never exist.

            This stuff is still new, and will improve over time as new APIs get added. Like I said, “it’s not as good, but it’s improving”.

            Please assume good faith.

            1. 3

              It seems like from Mozilla’s perspective the sidebar header is not a bug, but desired behavior: https://github.com/Croydon/vertical-tabs-reloaded/issues/13#issuecomment-294589274

              I’d love to see the tickets though, because I couldn’t find anything in the official bug tracker (but maybe I used the wrong search terms).

              And that’s not the only issue: it seems like the place is fixed to be beneath the location bar, either at the left or right side, falling way short of Tab Center.

    5. 2

      Talking with Tech Leads - Patrick Kua, not my usual type of tech book, but it puts together some interesting thoughts. I’m about half way through.

      I’m a little early in my career so while it’s too soon to be thinking about a tech lead role, I do want to get an idea of the problems on their plate.