1. 3

    Too bad that Jami requires to install yet another video chat client. Jitsi works perfectly fine in the browser and all I need to do to invite someone is to share a link (and password).

    1. 4

      Jami does have the interesting technical upside of being P2P.

      1. 2

        Is this still true?

        From the linked article:

        We’ve decided to transform Jami from a simple peer‑to‑peer communication system, into group communication software […]

        1. 1

          Yes it’s still P2P. It allowed only 1-1 video calls so far!

          1. 9

            Jami dev here Jami is p2p and will be. That’s the goal of Jami.

            It allowed only 1-1 video calls so far!

            In fact this is false. There is only 1-1 text communications for now (and like the article says it’s the next step), but video conference was here since a loooong time. But without rendezvous, video layouts, the conference protocol, etc. It was just unusable. There is still a lot of things to do, but a lot of features for this were added.

            Also we know that Jami lacks for a web client and maybe this will come one day. And indeed you can’t share a link and password, but you can share an app (also for Jitsi on mobile you need the app)

            1. 1

              I was astonished by the claimed video bandwidth. How is the decoding performance? How many people can share video realistically till CPU melts for some of them?

      2. 2

        Browser based video conferencing is dead. I think that is clear by now? Zoom runs circles around any implementation that uses the browser. Both in performance (CPU usage), number of supported clients and reliability. How often do you need to refresh your browser in Jitsi to make it work again? How often can you not hear at least one participant (and they are not muted!). How often does screen sharing not work in Jitsi? It seems to be unfixable… If after all these years it still barely works with 5 users, makes your CPU fan spin to maximum speed all the time, it is time to give up on it and move on. Not everything is a nail. Put down the JavaScript hammer.

        What is much better as a basis is a native app that does not require the browser (WebRTC) at all and supports hardware accelerated video encoding/decoding on ALL clients. It seems Jami provides this, or aims to provide this. Excellent! We need more of this “back to basics” design instead of piling on top of the dumpster fire that is browser engines.

        1.  

          Browser based video conferencing is dead. I think that is clear by now?

          I guess this is your personal opinion and by no means any consensus.

          How often do you need to refresh your browser in Jitsi to make it work again? How often can you not hear at least one participant (and they are not muted!). How often does screen sharing not work in Jitsi?

          None of this happend to any video conference I had with Jitsi. I only experienced one broken session where everything was fine after a reconnect, but I think that would’ve been preventable by setting up my own dedicated Jitsi instance.

          If after all these years it still barely works with 5 users, makes your CPU fan spin to maximum speed all the time, it is time to give up on it and move on. Not everything is a nail. Put down the JavaScript hammer.

          This is again just your exaggerated opinion.

          In fact, I tried Zoom, Bluejeans, BBB and Jitsi. Jitsi was the only one with bearable latency, and having low latency is pretty important for a good video conversation.

          1.  

            Yes, I am frustrated with the current state of pretty much anything. So, I’m just gonna drop this here: https://tonsky.me/blog/disenchantment/

            1.  

              I think this article is worthy of a separate submission.

      1. 3

        Despite the cynicism in the article I still like this quote, mainly because I never thought about the engineer to manager relationship like that:

        Engineering managers know your compensation while you don’t know theirs, they carry out your performance reviews while you have limited input into theirs, they are the gatekeepers to your advancement while you aren’t on a critical path to theirs, and they are the ones who formally initiate your termination while you have no formal authority to initiate theirs. This looks important, but the competitive aspect of the two tracks is never mentioned. Why?

        1. 4

          It’s why I support labor unions so strongly. They provide a balance of power between employees and managers that simply would not exist otherwise.

        1. 2

          Since none of the existing tools fit my requirements I also went down the rabbit-hole and wrote my personal note server. What I didn’t like about most existing solutions is that they either had too many bells-and-whistles or they were completely CLI based. In the end it took me about two days of writing code to get it to a point were I was happy using it.

          The tool is a small self-contained Go webserver using a encrypted SQLite database. The service provides:

          • markdown input (including emoji shortcut support, e.g. it renders :joy: as 😂)
          • full text search (this is the most important feature)
          • a super basic javascript-less web interface that only contains a form for writing or editing existing notes and that shows a list of all existing notes grouped by day

          I should open source this 🤔

          1. 1

            If you do, post about it here or let me know; that sounds very interesting!

          1. 3

            https://godoc.org/golang.org/x/sync/errgroup is very useful for this kind of thing.

            Here is a pattern I’ve been using a lot lately which made concurrency much easier and safer for this kind of scenario:

            func DoStuff(ctx context.Context, tasks []Something) (Result, error) {
            	resultCh := make(chan Result)
            	g, gCtx := errgroup.WithContext(ctx)
            
            	// Can move this task provisioning block into a goroutine also, especially if
            	// maintaining a max worker limit
            	for _, t := range tasks {
            		t := t // Copy value because we're passing it down the closure. A bit of a gotcha
            		g.Go(func() error {
            			// Usually bunch of code here, or just pass do_something into g.Go
            			return do_something(t)
            		})
            	}
            
            	// This is a bit awkward, I wish errgroup had something like:
            	// g.Defer(func() { cleanup code that runs just before g.Wait() })
            	gProcess, _ := errgroup.WithContext(gCtx)
            	gProcess.Go(func() error {
            		// This group closes resultCh which stops the accumulation loop below
            		defer close(resultCh)
            		return g.Wait()
            	})
            
            	var result Result
            	for res := range resultCh {
            		// accumulate result until resultCh is closed
            	}
            
            	return result, gProcess.Wait()
            }
            

            I’ve been using it so much that I’ve been thinking of upstreaming the errgroup.Group.Defer(func()) idea, or maybe maintaining a fork.

            1. 4

              Won’t your code still run into the same problem if you were to implement the max goroutine limit here, where it would block if you had too many tasks to start at once, before you started draining the responses from those tasks?

              1. 1

                That’s a good point, if you want to do max goroutine management then the task provisioning will need to be in a goroutine also.

                I often wish errgroup also had max worker throttling too. I wonder if there’s already an implementation that does all of this?

                1. 1

                  One can also divide the task slice by the desired number of workers and let each worker process a slice. This is a pattern I use sometimes if limited concurrency is required.

              2. 2

                Don’t need errgroup for that :)

                1. 2

                  Of course not, I wasn’t making the argument that anything is not possible without errgroup, just that this kind of errgroup pattern adds convenient rails that help avoid the kinds of mistakes which the blog post mentioned. :)

                  Also encourages me to collect errors and pass contexts around without avoiding it due to laziness.

                  1. 1

                    Sure, my point is that the code without errgroup is actually easier to grok than with it.

                    1. 1

                      I do see what you mean. :)

              1. 50

                Regardless of whether you currently think your existing tools need replacing, I urge you to try ripgrep if you haven’t already. Its speed is just amazing.

                1. 7

                  I’ll second this sentiment. Your favored editor or IDE probably has a plugin to use ripgrep and you should consider trying that too.

                  1. 6

                    As an experiment I wrote a tiny Go webservice that uses ripgrep to provide a regex aware global code search for the company I work at. The experiment worked so well over a code base of ~30GB that it will probably replace hound which we use for this purpose at the moment. I did not even use any form of caching for this web service, so there is still performance to squeeze out.

                    1. 5

                      https://github.com/phiresky/ripgrep-all comes with caching, it’s a wrapper around rg to search in PDFs, E-Books, Office documents, zip, tar.gz, etc

                    2. 3

                      ripgrep and fd have changed the way I use computers. I’m no longer so careful about putting every file in its right place and having deep, but mostly empty, directory structures. Instead, I just use these tools to find the content I need, and because they’re so fast, I usually have the result in front of me in less than a second.

                      1. 5

                        You should look into broot as well (aside, it’s also a Rust application). I do the same as you and tend to rotate between using ripgrep/fd and broot. Since they provide different experiences for the same goal sometimes one comes more naturally than the other.

                        1. 2

                          broot is sweet, thanks for mentioning it. Works like a charm and seems super handy.

                      2. 1

                        3 or 4 years ago it was announced that the vs code “find in files“ feature would be powered by ripgrep. Anyone know if that’s still the case?

                        1. 1
                      1. 7

                        The good intentions are spoilt by the fact that pkg.go.dev fetches the list of modules from proxy.golang.org: a closed-source proxy through which all of your go module fetches are being routed and tracked (oh, you didn’t know? They never told you, after all).

                        It is just incorrect to say that they never told you, the Go 1.13 release notes mentioned this as well as most of the talks about Go modules.

                        Update: clarify what I think is is incorrect.

                        1. 3

                          Wow, I should read those next time more carefully. I got used to the fact that any environment variable with PROXY in its name will always default to being empty.

                          Now, honestly curious, would this (proxy set by default to something) be considered a good system design if it came from Oracle (comparing it to Java), Mozilla (Rust), Microsoft (C#), Facebook (Hack)?

                          1. 3

                            I think the idea is pretty good actually: modules can be hosted anywhere on pretty much any (mainstream) VCS; it’s pretty decentralized. However, you do want some protection against “left-pad” type incidents where popular repos just vanish, and this is where the GOPROXY comes in to play. If the upstream vanishes you’re protected because there’s still a copy in the GOPROXY.

                            On one hand, do we really want some Google-hosted proxy to route all our traffic? What are the potentials for abuse? What type of information does it collect and what’s done with that? But on the other hand, how likely is it that this would happen, and how is this different from npm, rubygems, PyPi, etc?

                            At least you can easily disable GOPROXY if you want and just fetch from the source. It seems to me that this on its own makes it considerably more privacy-friendly (if you’re really worried about this, I’m personally not really) and decentralized than similar systems I’m familiar with.

                          2. 2

                            What is wrong in this statement? The “They never told you” part only?

                            1. 2

                              Yes, I guess should have highlighted that.

                            2. 2

                              Yep, and there’s this [1] excellent talk on why the service exists and how it works.

                              1 https://youtu.be/KqTySYYhPUE

                            1. 4

                              That’s rather sad. Google giveth, Google taketh.

                              On the other hand, maybe it’s time to host a community service.

                              Or just have each hosting run their own godoc. The question then would be, how do you learn what godoc instance belongs to a specific source code hosting, so that you can traverse the dependency graph.

                              1. 6

                                Back when I was using “clone & check your dependencies in per-project” for package management (like much else in go-land, it was a hassle but made many things very simple & reliable), running a local godoc was amazing. You got docs for the exact versions of every package you had installed, and nothing else, and every page rendered instantly.

                                1. 1

                                  You got docs for the exact versions of every package you had installed, and nothing else, and every page rendered instantly.

                                  I think this did not change, just run godoc inside a Go modules project and you will see the exact same thing.

                                  Back when I was using “clone & check your dependencies in per-project” for package management..

                                  This got easier with Go modules as well, just run go mod vendor to setup the /vendor directory.

                                  1. 1

                                    Godoc may well have learned to respect go modules.

                                    It did not support it at the time go modules became the official recommendation (nor for many months afterwards), which I found to be a bothersome oversight.

                                2. 5

                                  On the other hand, maybe it’s time to host a community service.

                                  godoc.org actually started out as a community project, and was moved to the golang organisation in 2014.

                                1. 7

                                  I think I had a similar journey. IIRC, I started with an iPhone, then a Mac Mini, and then finally a MacBook Air (and then another.)

                                  I was drawn to having a polished desktop on top of *nix.

                                  But then the polish started wearing off with every new OSX release. There would be UI bugs.

                                  I also started seeing various annoying differences and incompatibilities when trying to use the *nix part for development. Eventually I started doing dev inside a Debian and then Fedora VM.

                                  And then Apple started locking down the OS, and with each release, I could do less, or would have to jump through hoops to unlock.

                                  Finally, I would read online about flaky hardware, faulty keyboards, etc.

                                  By then I was already doing most of my work inside the VM, and only using the OSX part for playing music and video and such.

                                  So now I got a cheap refurbished ThinkPad, and it works! It works great! And I can do whatever I want with the OS.

                                  And if there is a problem, which certainly happens, I can usually fix it with a quick web-search.

                                  Yes, the touchpad sucks, and I don’t use it. Most of the time I use external keyboard and mouse, or I can fall back to the nub.

                                  1. 6

                                    I can’t speak for general audience, or even 200 people that the other, deleted comment mentioned, but my experience with Linux has always been superior. People get to Linux, get amazed, learn about the bugs and quirks and then just start living with what they need. Just minimal sweet of features that gets the job done. Sure, some return to windows. (And some come back again.) Some switch to a Mac. (And also cone back.) But a lot of people my rounds that have made the switch are not going back and are far more satisfied with whatever the flavor they run then with, say, windows or a Mac.

                                    Me, personally? I’m a diehard. I don’t hate windows 10 from work, but I’m often frustrated by it. Not the software, just the OS. Gets in the way between me and the software I’m trying to use.

                                    I’ve tried using a mac - and relatively recently too, just before the touchbar. And have a few Mac’s around - wife’s macbook and imac. But I always miss one thing or another. And macos GUI does things just enough in the wrong way that I’m unhappy.

                                    Linux? No problem. I did my share of distro hoping. I did my part of customizing anything and everything. Now I just go with defaults, with my few personal tweaks where they matter to me. And then I do the job.

                                    1. 5

                                      You reminded me that my ThinkPad came with Windows 10, and I humored it for about a day, but gave up.

                                      You’re so right about “living with what you need”.

                                      I still don’t know how to adjust the display brightness on this thing, nor the rest of the special keys. The built-in WiFi still doesn’t work, and I use a USB one which is plug-and-play.

                                      Recently, Fedora upgraded the kernel and the WiFi stopped working, and I had to roll back to the previous one.

                                      Oh well.

                                      Windows 10 was so freaking frustrating all around, I would never trade.

                                      Edit: Actually, after I upgraded to Fedora, and before I was gifted a compatible WiFi, while I was only able to network over Ethernet, was one of the most productive times on this computer. I still enjoy being able to unplug my network.

                                      1. 6

                                        Obviously this is a matter of personal tolerance but I feel like you have perfectly illustrated why I found using Linux on the desktop so immensely frustrating and eventually ended up on macOS anyway. If I installed a kernel update that stopped my Wi-Fi from working, I would be livid. I would already be unhappy if I had to resort to an adapter for something the laptop is already supposed to do in the first place.

                                        Things like this are okay if you are OK with tinkering (or have the time to). I used to have the patience for that but I just don’t anymore. I need the computer to get out of the way so that I can do what I need to do. I would argue that if you aren’t really a tinkerer and don’t have great aspirations to pick it apart or to customise, then macOS gets the job done just fine. Equally I understand why tinkerers might find it frustrating or limiting, so there’s that too.

                                        I just don’t want to have to resolve package conflicts or roll back kernel versions, or to spend six hours trying to understand why something that happened during a package upgrade has rendered my system unusable.

                                        1. 4

                                          I’m kind of mad about the kernel, but rolling back was as easy as selecting the previous version at boot time.

                                          if a Mac upgrade broke something, which happened to me before, i wouldn’t even know where to begin if i wanted to roll back.

                                          I’m not much of a tinkerer, and for the most part i haven’t had to do much.

                                          1. 3

                                            That happens with Fedora or Arch, as they update the kernel every time upstream release a new version. Just stick with Debian or Ubuntu LTS if you want your machine to be just works.

                                            1. 1

                                              I was a loyal Debian user for about 20 years, but similar issues drove me to Fedora.

                                              1. 1

                                                For me it’s the opposite, never had a problem with rolling releases in Arch but major upgrades in Ubuntu often failed. Also, you can easily use an LTS kernel in Arch.

                                          2. 4

                                            The thing is, I’m going to get frustrated by my computer OS I choose. Either it will be an ad platform with a program loader hanging off the side, become more developer-hostile with every new release, or be kinda weird and need a little tinkering to get things the way I like it. So I chose GNU, paid that setup cost once, kept my configs up-to-date and portable and now I have a computing environment that respects my needs and wants and should keep working for a very long time.

                                        1. 3

                                          Domain-based “ad blocking” won’t replace element based blocking in any way, and it makes a false feeling of “tracker free” browsing

                                          1. 3

                                            I actually do a triple attach with PiHole for DNS blocking, Brave Shields for request blocking and uBlock for element blocking. With the first two however, uBlock rarely ever blocks anything.

                                            1. 1

                                              I implemented a toy DNS server some months ago which could also block ads using domain blocking lists, like Pi hole. In the end it showed that this is rather inefficient since a lot of sites just serve ads from resources on their own domain.

                                              1. 3

                                                I’m okay with those ads personally and don’t go out of my way of blocking them (the publisher needs to make money). I merely take issue with surveillance and tracking.

                                          1. 22

                                            I don’t write tests to avoid bugs. I write tests to avoid memorizing the complicated functionality I need to implement.

                                            1. 0

                                              so you write tests to avoid documentation?

                                              1. 3

                                                I can’t speak for op, but where I work its normal to rely upon our tests as reliable documentation on how our api should be integrated with.

                                                1. 1

                                                  I could see how one ‘documents’ the workings of unexposed subsystems, but using tests in lieu of API documentation doesn’t sound like a great idea.

                                                  Granted we never can talk in absolutes; there are certainly projects out there which have neither tests nor documentation and are doing OK.

                                                  1. 1

                                                    Nothing I work on currently has a public api but also the majority of our api’s are undocumented beyond looking at implementation within unit tests or our webapps. This isn’t because we don’t need api documentation, it would be handy to have, just that when on-boarding new developers walking them through the unit tests has been good enough for them to go onto work on those api’s.

                                                    If we did anything public facing, API documentation would become a top priority because while most developers can infer from unit tests how things work a lot are too time constrained or too lazy to do so and will skip a tool or library with that kind of friction.

                                                2. 3

                                                  There’s a difference between documentation and unit testing. Is your documentation automatically checked? I am sure it’s not, except you’re writing doc tests.

                                                  1. 1

                                                    It helps to read my question in the context of the GP’s comment.

                                                  2. 1

                                                    To avoid documenting all of a function’s required output (and god forbid, side-effects) as a result of all possible input, yes. But tests cannot replace documenting the intended use and context and maybe historical perspective of a function. If the function name with the argument names and types cannot capture this sufficiently I additionally provide documentation.

                                                    1. 1

                                                      Fair enough, if that works.

                                                1. 5

                                                  Instead of falling back to a single goroutine the author could’ve used GOMAXPROCS=$(nproc) instead, such that for every routine there’s one processor core. The article correctly noted that the measurements were wrong because a lot of go routines were preempted and not scheduled back to finalize the timing measurement after the IO operations were done, probably because there was no free core available.

                                                  Edit: typo

                                                  1. 2

                                                    Does Go guarantee that if you have N procs and N cores, it will distribute one proc to each core with perfect affinity? You’d never end up pre-empting a proc in favor of another on the same core due to scheduling vagaries at the runtime and OS level?

                                                    1. 2

                                                      The Go runtime explicitly does not provide any goroutine/OS thread affinity guarantees unless you call runtime.LockOSThread.

                                                  1. 11

                                                    Bluetooth has been the worst wireless offender. Every device I try with (except an iPhone) its always a frustrating game of degraded performance and random un-pairings where the only solution is to power everything down and start fresh. As the author points out, the custom dongles do work, but I was under the impression they work specifically because they are wireless and not bluetooth.

                                                    The frustrating part is that many mice and keyboards are simply not available in wired versions.

                                                    1. 2

                                                      Never had any issues with Bluetooth on Android, neither on Windows. Only pairing speakers on Linux is a challenge, but this seems to get better over time.

                                                    1. 24

                                                      Cables may be untidy if unmaintained, yes, and they definitely harm flexibility in some (or even many) cases. Similar to large open plan offices, it’s form over function though.

                                                      I brief tour of the bluetooth spec (and corresponding FOSS implementations) will give you a few grey hairs I’m certain of that, there is so much cruft that I’m suprised anyone has made it work at all.

                                                      Bluetooth, when it works, is “decent” but cables are ‘decent-er’.

                                                      Headphone cables in particular, though, have their own reliability problems (one ear cut outs and cable “kinks” which kill connections)- but nothing is more frustrating than having a pair of headphones that just wont link to your phone or laptop- or having cut outs as you’re walking.

                                                      WiFi has its faults but it’s more reliable by a wide factor than Bluetooth. Running ethernet cables is hard though, but once it’s done it’s kinda done, computers don’t move too much, even if you have a laptop it’s usually fairly static while working in my experience.

                                                      Cabling everything, Playstation, TV, Laptops; leaves more of the spectrum left for your mobile devices anyway, so it’s a little win regardless.

                                                      1. 10

                                                        As I partially agree here but I really find, focusing on the headphone/iem part, that what make cable a real problem in term of management, simply that for most of those products they are not removable. When you tend to go to more high-end or specialized HIFI products, you find removable cables (and a crazy after-market for those…). If more products have come with removable cables, the wireless advantages would have been less impactful (IMHO yadayda) for headphones/iem.

                                                        And cable management is clearly an art form when you have some constraints of space or placement of electrical sources.

                                                        Bluetooth is a mess and the more codecs and rev you pill on it, the more it is a mess but the kisscool effect of “looks ma, no cable” had an upper hand for the end-user/consumer.

                                                        1. 3

                                                          Headphone cables in particular, though, have their own reliability problems

                                                          While it’s actually quite cheap to make them well, it’s not quite as cheap as making them poorly, meaning that only high end gear tends to get the extra 10c added to the BOM. Consumers just don’t seem to buy for reliability in this (and many other) spaces.

                                                          1. 19

                                                            In my experience I’d love to buy for reliability, but it’s often so damn hard to find. These things wear out over years, and there’s so much $200 junk on the market that’s no better than the $20 junk. I use headphones a lot, and a couple times I tried to upscale from $20 ones to $80 ones that came well reviewed… and they broke just as quickly as the cheapo ones. So for years I just bought the same $20 headset that was comfy and had good sound quality, and expected to replace it every 1-2 years. It worked pretty well, until that model was discontinued. It wasn’t until recently that I decided to branch out and try again, and I now have a pair of headphones that actually comes with a parts list for ordering replacement components. It doesn’t have a microphone though, so… I’m back to trial and error searching for headsets. I’ll let you know in 5 years how it’s going.

                                                            1. 12

                                                              The long cycle time for getting information about reliability is a big part of the issue IMO; by the time you find out that a brand is reliable, there’s been a hostile takeover and most of the staff who made it good are gone.

                                                              1. 7

                                                                One of the problems is that a lot of reviews are written by professional reviewers who looked at it for 10 minutes and wrote down their initial impressions about it. There are exceptions, but a lot of reviews are just shallow and written by people who have never actually used the product. This isn’t necessarily completely without value if done well, but especially stuff like long-term reliability isn’t usually addressed.

                                                                1. 2

                                                                  I had to wade through a lot of these buying a DSLR recently. Most of the reviews were nothing more than padded spec sheets.

                                                                2. 6

                                                                  … and there’s so much $200 junk on the market that’s no better than the $20 junk.

                                                                  I absolutely agree and in fact this study underpins this statement (at least from the point of view of sound reproduction quality): No correlation between headphone frequency response and retail price

                                                                  PS: Sorry for being a bit off-topic.

                                                                  1. 1

                                                                    The reason that there is no correlation “between frequency response” is because frequency response isn’t what you are paying for unless you are buying studio headphones (and Beats Studio or other gimmicky headphones don’t count) - aside from upper/lower bounds changing slightly as you pay more in ways that people will debate the value of until the end of time.

                                                                    The price goes to tonal quality, dynamic range, and the sound stage provided in the audio among various other features. These things aren’t measured in this study.

                                                                  2. 5

                                                                    I’m surprised you could find $20 headphones that sound as good as what you could get for $80.

                                                                    Re: lack of mic: I buy my headphones and mic separately, with the mindset of having each do their own single responsibility well. Then I have a splitter (“combiner”?) that I plug both into, that lets me plug the pair into a standard stereo+mic jack. The obvious con is that I have more wires dangling on me, but I live with that.

                                                                    1. 9

                                                                      I’m sure they didn’t sound as good as what I could get for $80, but they sounded about as good as what I did get for $80. :-P

                                                                      1. 3

                                                                        Yeah, even with headphones that have a mic built-in, half the time they cheap out and omit the hardware mute, so you’re stuck fumbling for the software mute like some kind of chump. With a hardware mic you can pick out something decent that can be controlled on its own.

                                                                        1. 1

                                                                          I have a huge collection of headphones and my experience is that most headphones between $20-$60 sound about the same and you’re just paying for a brand name. That metric moves up to $40-$110 or so for wireless. Most $20 wireless headphones hardly even work, but the ones that do are probably comparable? It varies a lot more from $120-300, then up to about $700 it narrows a bit until about the $2000 range where things vary in really cool ways =^.^=

                                                                          …or in other words, you can buy a $40 or $80 headphone and they’re probably about the same, and a lot of $20 sound like $80 ones in the wireless world because that $80 markup went to brand & maybe better bluetooth hardware, but likely not better audio.

                                                                      2. 7

                                                                        I found the perfect solution to this. Some brands make headphones that have a 3.5mm jack in them and just come with a double ended cable. If the cable degrades which even a good one will after a couple of years of constant use, you can replace it at very low cost. Additionally even a cheap 3.5mm cable is usually higher quality than the average built in headphone cable for some reason. When I get headphones with replaceable cables the cable seems to degrade much slower.

                                                                        Now I have to figure out a way to replace/conserve the padding/upholstery which seems to disintegrate after a couple of years.

                                                                        1. 3

                                                                          Some brands make headphones that have a 3.5mm jack in them and just come with a double ended cable.

                                                                          Yup. After having to replace the jack on a fixed-cable pair of headphones multiples times I decided to never buy fixed-cable headphones again.

                                                                          Additionally even a cheap 3.5mm cable is usually higher quality than the average built in headphone cable for some reason. When I get headphones with replaceable cables the cable seems to degrade much slower.

                                                                          Also my experience. I’ve had my current pair of headphones for around 3 years, and the cable is still working just fine.

                                                                          Now I have to figure out a way to replace/conserve the padding/upholstery which seems to disintegrate after a couple of years.

                                                                          The earphone pads are replaceable. I’m a big fan of memory foam ones, which are much less fatiguing to wear for long stretches of time.

                                                                    1. 10

                                                                      What’s more, Lenovo will also upstream device drivers directly to the Linux kernel, to help maintain stability and compatibility throughout the life of the workstation.

                                                                      Glad to hear that they’re focused on upstreaming their code. IMO if a laptop relies on non-mainline code then it doesn’t really have good Linux support.

                                                                      1. 8

                                                                        Dell was really eating their lunch. Stuff like firmware upgrade work very very well on the Dell XPS 15. One of my colleagues regularly updates his bios from GNU/Linux with a single click.

                                                                        1. 4

                                                                          Me and my colleagues do this with their Thinkpads as well. Lenovo provides a lot of firmwares to the Linux Vendor Firmware Service: https://fwupd.org/lvfs/vendors/

                                                                          1. 3

                                                                            This works fine on my thinkpad too.

                                                                        1. 10

                                                                          Don’t ask anyone for help unless you are really stuck

                                                                          This is very bad advice in my opinion. Assuming this is directed at motivated developers, the chance that someone will struggle for hours or days to decipher some old structure that badly needs refactoring is much larger than the chance that she will overburden the senior programmers with elementary questions.

                                                                          If anything, senior programmers getting too many questions from juniors can be an extra motivation for the seniors to spend more time on simplifying their contributions.

                                                                          1. 5

                                                                            For me “pick a trivial bug, fix it” falls into the same category. For someone unfamiliar with a codebase it is hard to determine if a bug is “trivial to fix”. I can’t even count how many bugs I encountered that looked trivial in the first place but then turned out to be hard to fix.

                                                                            Instead of trying to grasp the code base alone I would highly recommend to look for someone who is experienced with the application/service and work with them together, e.g. by pairing. At least when I started my professional career, I wished I had a buddy who teached me how to debug/read/understand the code base I was working on, especially since there was no or very lacking documentation.

                                                                            1. 3

                                                                              Agreed, as someone reading this graphic who’s just started a new role, I feel like this advice is well-intentioned but not refined enough. I think what it’s trying to get at is that you really should try your best to understand the code alone, but there’s a point at which struggling to understand the code without someone else’s assistance yields diminishing returns. Obviously, don’t go asking questions that you could easily Google and find on StackOverflow left and right, but if there’s a question more closely related to the underlying company-related code style/infrastructure, I don’t see a point in not asking a question right away. Any reasonable senior engineer won’t scold you for asking questions, since they were once in your shoes too!

                                                                            1. 2

                                                                              Decent content, but declining to upvote due to clickbait title.

                                                                              1. 1

                                                                                Yeah, I don’t know why this gets so many upvotes since the “article” is only a distilled version of the linked unofficial-bash-strict-mode with a clickbaity title (as you already said).

                                                                              1. 4

                                                                                Please note the guidelines for the extra text box contents when submitting stories on lobste.rs, as explained in the “Submit Story” link:

                                                                                Please don’t use [the text box] to promote the story, summarize the post, or explain why you posted it.

                                                                                And additionally elaborated further down, after expanding “Story submission guidelines” (emphasis mine):

                                                                                When submitting a URL, the text field is optional and should only be used when additional context or explanation of the URL is needed. Commentary or opinion should be reserved for a comment, so that it can be voted on separately from the story.

                                                                                I know it’s hard to resist, I myself find it hard, but it really helps to give the post a chance to speak for itself, and to let the readers have their own opinion, without coloring it by the submitter’s opinion.

                                                                                1. 1

                                                                                  Thank you for clearing that up, I was not aware of the guideline. Unfortunately, I can not edit the post anymore.

                                                                                  1. 1

                                                                                    I’ve removed it. No worries.

                                                                                    Thanks to @notriddle for the ping.

                                                                                1. -5

                                                                                  Might come out a bit off-topic and nit-picky but haven’t we established a long time ago that term Open Source Software is really harmful and should be avoided?
                                                                                  Why not just call it free or libre software - it sounds better and it’s much more representative especially as it can also be applied to non-software subjects. Freeculture is a pretty big movement and would definitely fit the defined agenda of this project.

                                                                                  I’m not implying they should change the name - just a note for any future projects.

                                                                                  1. 2

                                                                                    but haven’t we established a long time ago that term Open Source Software is really harmful and should be avoided?

                                                                                    I am out of the loop, can you share where you got the idea from that there is any consensus on that?

                                                                                    1. 3

                                                                                      This is a spinoff in an ongoing cultural push from the FSF.

                                                                                      EG https://www.gnu.org/philosophy/open-source-misses-the-point.en.html

                                                                                      There is really, definitely not consensus (or anything even close to it).

                                                                                      Indeed, I suspect consensus will remain elusive (or impossible) until the number of technologists stops growing so quickly; practitioners with over 5 years experience remain a minority - as they have been for many, many years.

                                                                                      1. -3

                                                                                        This is a spinoff in an ongoing cultural push from the FSF.

                                                                                        Hardly, the consensus is already here. The only people still using “open source” are technologically illiterate or ignorant. The reason why I even pointed out this because of usage of “oss” in the domain name - acronym that I hadn’t seen in years at least. Here’s an exercise for you - try googling oss and try to find something relevant! And then compare it to foss or floss.

                                                                                        What does open source even mean? It’s a hijacked marketing term that is meaningless.
                                                                                        The source code is avaible to look at somewhere? How is that meaningful information outside from academia and black markets? “open source” doesn’t guarantee that the code on your machine has to be open it’s that just it exists somewhere and could be potentially looked at. Further it doesn’t mean you can replicate the code you’re looking at as “open source” can still be copyrighted. It’s an absolutely non-sense of a term that has no place other than to exploit userbase through the illusion of software that respects user’s rights but in reality it can be just as bad as a binary blob.

                                                                                        1. 13

                                                                                          The only people still using “open source” are technologically illiterate or ignorant.

                                                                                          Wow, and the Free Software zealots wonder why have such a hard time convincing people they are right…

                                                                                          1. 1

                                                                                            sorry maybe I used an incorrect word here as “ignorant” seems to be very loaded in american culture. I meant in the spirit of “unware” as in people who are aware of open source vs free/libre software debate usually chose the later.

                                                                                            1. 5

                                                                                              That’s part of it. Another part (as alluded in my other comment) is that it assumes the world is made up of people who are unaware of the issue, and people who agree with you.

                                                                                              You are getting downvoted for expressing that anyone who disagrees with you is simply misinformed. That is an elitist, arrogant attitude to hold.

                                                                                              1. -1

                                                                                                I mean I provided sound arguments to make my case - my claim was not empty handed. If you disagree feel free to prove me wrong.

                                                                                                Its really hard to argue the case in favor of “open software” and that’s why people in this thread instead endulge in a form of ad hominem.

                                                                                                1. 4

                                                                                                  These are difficult times and we haven’t got the same opportunity we usually do to step away from the keyboard.

                                                                                                  that’s why people in this thread instead endulge in a form of ad hominem.

                                                                                                  Your claim that “The only people still using “open source” are technologically illiterate or ignorant” was read as a completely unsupported ad hominen attack - by you - in a direct reply to me. People are making fun of you for this. You apparently didn’t intend it that way, but it’s affected peoples impression of you nonetheless.

                                                                                          2. 10

                                                                                            Hardly, the consensus is already here. The only people still using “open source” are technologically illiterate or ignorant.

                                                                                            You are not helping your argumentation with this elitist attitude.

                                                                                            try googling oss and try to find something relevant

                                                                                            Never was an issue for me.

                                                                                            1. 1

                                                                                              How is it an elitist argument? The word “ignorant” just means a person without knowledge but it seems like it has a very negative connotation. Maybe I should have worded it as “unware” as the word “ignorant” seems to have made everyone upset.

                                                                                            2. 8

                                                                                              NO TRUE SCOTSMAN WOULD USE THE TERM OSS

                                                                                              1. 3

                                                                                                I’m neither ignorant nor illiterate. I simply (gasp!) disagree with you.

                                                                                                The FSF want you to use more precise terms, like “Source Available” or “Libre”, and avoid fuzzy/vague terms like “Open Source”.

                                                                                                I’m happy to use the more precise terms when I want to express those specific ideas, but I’m not going to write out “Software that is Source Available, Libre/Free Software, or public domain software” every time I need to talk about the collective group.

                                                                                                1. 0

                                                                                                  You argue that open source is more pragmatic when it’s clearly not. It’s appears to be explicit but it’s just misleading and frankly meaningless.
                                                                                                  As an alternative libre software is short, simple and while not awfully explicit it doesn’t mislead you. There are no hidden meanings it’s software that respects users freedoms that are defined as transparent code that you can modify - very simple.
                                                                                                  Finally in my opinion it just sounds better - it’s short, has no conflicts (like the word free) and sounds a bit exotic and in all fairness free software movement is quite exotic, so it’s a perfect fit!

                                                                                                  but I’m not going to write out “Software that is Source Available, Libre/Free Software, or public domain software” every time I need to talk about the collective group.

                                                                                                  Libre is a perfect word that is already carved out a strong pressence in software community. I mean I just typed in “define libre” in my search browser and I got software related results.
                                                                                                  Just say libre software and everyone will know what you mean.

                                                                                                  1. 5

                                                                                                    You argue that open source is more pragmatic when it’s clearly not. It’s appears to be explicit but it’s just misleading and frankly meaningless.

                                                                                                    Open source software, for historical reasons, exists as a marketing term and shorthand (very purposefully!) to denote software that has the source available but does not have the cultural baggage of libre software. Whether or not that’s your aesthetic is immaterial–the fact remains that there are many people who want to be able to view and modify the source of a given piece of software but who aren’t interested in the typical rights afforded or culture espoused by libre software.

                                                                                                    As a side note, your presupposition of “everybody agrees on this” is bad rhetoric unless you’re talking to a crowd already on your side–it blows up in rather spectacular fashion via counterexample (as evidenced here) if even one person dissents. In the future, you may have better luck with “many” or “several” instead of absolute predicates.

                                                                                                    1. 2

                                                                                                      “Libre software” is what I say when that’s what I mean.

                                                                                                      Sometimes I want to refer to other things, though, and I use different words in those cases.

                                                                                                      For some reason, some people appear to get very upset about this.

                                                                                                  2. 2

                                                                                                    As one of the signers of the linked manifesto and the current project lead of a widely used open source project I have no problem with the term “open source software” and would be hesitant to use “libre software” to describe what I do (despite being a long time dues-paying member of FSF).

                                                                                                    I think a more practical way to look at software “openness” is described in https://coiled.io/blog/stages-of-openness.html . It is less about the code and more about the community around the code.

                                                                                                    Further it doesn’t mean you can replicate the code you’re looking at as “open source” can still be copyrighted.

                                                                                                    All code is copyrighted, full stop. The question is what the license is and what you can do with it.

                                                                                            1. 4

                                                                                              Fritz!Box routers and wireless repeaters can run as a mesh and are inexpensive (especially used).

                                                                                              1. 2

                                                                                                Our provider gave use a Fritz!Box router + AP, plus another Fritz!Box AP. I connected both APs with ethernet. I can video conference with high quality video and without stutters anywhere in the house. I am maxing out bandwidth where I am currently sitting (speedtest says 207MBit downstream, 245MBit upstream, we have 200/200MBit, but the provider seems to give some extra leeway, ping to Google/Cloudflare is between 6-12ms on Wifi). I just use ethernet on my Linux machine.

                                                                                                So far, we have been very happy with the Friz!Box equipment, especially compared to the crap that some providers send out.

                                                                                                We used an AirPort extreme before, which was also great. But it’s now collecting dust. It’s a shame that Apple doesn’t make access points anymore.

                                                                                                1. 2

                                                                                                  I’ve been super impressed by AVM. I’m still using a FRITZ!Box 7390, a model from 2011, and they keep releasing firmware updates for it (last auto-update October 2019). In the time I’ve owned it the web UI was completely redesigned and they added a security feature where you have to press a physical button to change some settings.

                                                                                                  Unfortunately this particular model is showing its age. AirPlay isn’t always reliable over the 802.11n, and the CPU gets overwhelmed by major P2P activity. And for some reason it worked terribly with the WiFi adapter in the Surface Go, but every other client I’ve had is fine. I have no idea why.

                                                                                                  1. 1

                                                                                                    I used to like them as well until the company removed telnet and the possibility to flash your own images.

                                                                                                  2. 2

                                                                                                    I can second that. So far, I am very happy using a mesh network consisting of the Fritz!Box 7590 and two Fritz! repeaters (the 1200 and 2400 model). The most important part for me was that everything works well out of the box since I was getting sick having to deal with crappy firmware’s (TP-Link/D-Link, whatever) and misconfiguration of my OpenWRT setup. The only thing that is missing for me in the Fritz!Box firmware is that there is no support for WireGuard at the moment.

                                                                                                1. 1

                                                                                                  Have you tried Lenovo X1 Carbon? I installed Linux successfully on it and it’s working very well!

                                                                                                  1. 1

                                                                                                    I use an X1C5 since it came out in late 2017 and, even though wifi worked out of the box, it was a lot of trouble. The trackpoint stops working randomly after a suspend (https://bugzilla.redhat.com/show_bug.cgi?id=1560723#c9), an issue that is still unfixed¹. The ethernet port on the Thunderbolt3 docking station caused the whole system to freeze after some random amount of time (this seems to be fixed now). In general, external displays are often not detected after waking up from suspend when connected to the docking station. I can absolutely understand why people are frustrated with running Linux on a laptop.

                                                                                                    Positive sides of the device are its form factor, battery life and display, both are top-notch and the support for firmware upgrades via fwupd.

                                                                                                    Still, I would never go back to a crappy X230/X220, let alone an X200. I owned both and their build quality was a joke (the amount of flex on the bar with the ThinkVantage button). Especially their displays, my god, what was Lenovo smoking when they thought that anybody would love to work with this.

                                                                                                    Update: formatting.

                                                                                                    ¹ A workaround is executing this: $ sudo sh -c ‘echo -n none > /sys/devices/platform/i8042/serio1/drvctl && sleep 5 && echo -n reconnect > /sys/devices/platform/i8042/serio1/drvctl’