1. 4

    Just the other day, I was wondering how practical a chorded-typed keyboard with sequential input would be. Cool project, thanks for sharing!

    1. 28

      Rust’s style of borrow checking is a revolutionary idea because it makes practical things that were impossible before, outside of research languages. I don’t think that will go away any time soon.

      Whether Rust itself is “the wave of the future” or not is still undecided, and frankly irrelevant. Maybe it is, or maybe it will become a Simula or SNOBOL that is mainly important for the ideas it pioneered and inspired in later languages. If I’m using something else as my main language in ten years it will be because it’s better than Rust. It’s a high bar, but certainly a conceivable one.

      1. 27

        I think Rust is way past the infancy stage, and is here to stay.

        • Rust has a lot of momentum and is gaining popularity quickly. About 3 years ago number of Rust users and projects has surpassed Scala, D, Nim, and Haskell, and it’s way ahead them now, and growing. crates.io is growing faster than rubygems.org, and is already 40% of its size. Because of it’s niche Rust will never be as popular as mainstream GC languages, but it’s not an “alt-lang” anymore either.

        • Rust has been explicitly designed as a practical language, not an experiment. It’s used in production. I know big companies where Rust is now a hard dependency for critical components, maintained by entire teams (not one dev’s side project any more).

        • Rust is based on a lot of pre-existing research languages. In terms of rough syntax and post-ALGOL features there’s already some convergence between Rust, Kotlin, Swift, and TypeScript. The latter two are probably here to stay too, so they’ll keep Rust looking normal.

        • In Rust’s niche of systems programming + safety there’s no competition. There’s lots of competition in easy GC languages, but that’s not Rust’s niche. There are other systems languages, some of which are nice, but without equal safety guarantees they don’t have the same hook that Rust has (e.g. Rust is getting into Linux because it’s safer, not because it’s nicer).

        • There’s no obvious flaw (known yet) that a potential Rust-killer could address to displace Rust. New Rust users suffer learning the borrow checker, but it’s not a big issue for experienced users. Rust users are very satisfied with the language.

        • Rust 1.0 has been released 6 years ago. Even if a Rust-killer was released tomorrow, Rust already has a significant head start and a track record. Rust is still being developed and evolving, so it can put up a fight by copying features from potential Rust-killers (and use the editions to delay ending up like C++).

        Oops, my comment is longer than the article now :)

        1. 15

          Rust can still suffer from feature creep and long compilation times for large projects. These are things that takes a couple of years to see how they pan out.

          1. 4

            I think you’re probably right, I just also remember when Java was The Next Killer Thing and am not about to jump to any conclusions.

            1. 17

              Did that really end up being wrong? The initial imagined usecase for it (Applets) didn’t pan out, but a quarter of a century later it’s still the #5 programming language on Stackoverflow (really, number #3 if you accept that SQL and HTML/CSS aren’t so much competing with it as working in concert with it) and it’s probably still #1 in corporate circles.

              It’s not my idea of a killer programming language, but the prediction that it was going to eat the world does seems to have largely bore out, just differently than the initial expectation.

              1. 7

                And indeed java was the next big thing, look at how popular it is nowadays :-). It made garbage collection as mainstream as it could be.

              2. 2

                In Rust’s niche of systems programming + safety there’s no competition

                You don’t hear much about it, but Ada has been in this space for 40 years.

                There’s no obvious flaw (known yet) that a potential Rust-killer could address to displace Rust

                Rust is good, but it has trouble enforcing large scale constraints on programs, which often show up in Real-Time systems, for which Ada was designed. For example, Ada’s Ravenscar profile detects behavior at compile-time in your program which will lead to unpredictable behavior in high-integrity applications.

                1. 4

                  I deliberately haven’t mentioned Ada, because the metrics I have are biased towards open-source, and by these metrics Ada is dead.

                  1. 3

                    If your point is open source specific, you should say that, but deliberately ignoring a language because it historically been used for closed source systems is misleading.

                    EDIT: I realized I probably came off as combative, which wasn’t my intent. I just don’t think those metrics capture really what’s happening since there’s a lot of closed source development. I just know for sure that OCaml is actively used for some companies critical systems but it doesn’t show up well on those metrics.

                    1. 4

                      I mean other langues have public package repositories and online communities, so they’re comparable this way. Ada isn’t, so I didn’t compare it.

                      Back to the original point: the fact that Ada is used so differently — closer to DoD than GitHub – also means it’s not a direct Rust competitor. Rust’s openness, vendor-neutrality, community, and availability of open-source libraries are its assets too.

                      1. 4

                        means it’s not a direct Rust competitor. Rust’s openness, vendor-neutrality, community, and availability of open-source libraries are its assets too.

                        Your point was that there was no safe systems programming equivalent to Rust, my point is that there is, it’s just not well known or used publicly. Ada may have originated from the DoD, but the major Ada implementation, GNAT and a lot of tooling and libraries are GPLv3 or a limited form with a runtime exception. I agree that there’s not really a well established Ada community and it’s just now providing a similar solution to Cargo or CPAN. There’s a lot more than you’d expect, but it’s sort of distributed right now (Ada Utility Library, GNATColl, GNAT, etc.) However, if people feel like they missed getting in on the ground floor of a major programming language and open source library development, there’s huge opportunity on a mature language available.

                        I’m unsure how Rust has vendor-neutrality though when there’s only one main Rust implementation, whereas Ada is an ISO standard and has a full public battery of compiler tests for implementers.

                        The DoD vs Github thing may have been true a few years ago, but there’s been a major push from the main Ada vendor, AdaCore, to split off and open source as much as possible, in a eerily similar way to what Mozilla has done (disclaimer: I’m not involved with AdaCore, so I don’t know how far this goes, or what their long term plan is).

                  2. 1

                    Can you tell me more about these large scale constraints? Are we talking like, latency/memory constraints?

                    1. 3

                      Just to give a few examples, there’s per-package (module) constraints like the Pure aspect, which ensures a module has no state and depends on none that has state. There’s also a pragma called “Restrictions” which can do various things like prohibit all or various types of dynamic allocation, prohibit floating point, prohibit the use of recursion, ensure no dependence on other specific modules of code, and so on.

                      1. 1

                        Those all sound like things that could be written as rustc lints. If an industry or organization had such requirements they could maintain lints that do exactly that, and enforce them via #[foo] attributes. Of course, there may be points I’m not thinking of that wouldn’t be possible as a lint as well.

                        1. 2

                          It really doesn’t sound like something that can be done with rustc lint. It sounds most similar to Safe Haskell to me. At the very least, cargo will be involved in addition to rustc.

                2. 5

                  I 100% believe that Rust is the beginning of a new generation of programming languages. I don’t suspect that Rust will be popular in 10 years, but I’d be willing to bet money that there WILL be at least a few statically typed languages in 10 years that will have obvious roots in Rust.

                  Don’t misunderstand my next sentence- I’m not saying that Rust invented anything. But, look at how many languages are implementing things like enums/ADTs and pattern matching “all of a sudden” (Python?! Are you for real?!). Look at Swift (which came out after Rust) looking to switch to a Rust-like lifetime/borrow mechanism. Look at ranges in C++.

                  1. 8

                    I think it’s likely that many languages will be influenced by Rust, since there are already dozens of such projects over at /r/ProgrammingLanguages and other places.

                    But if there’s any one that will be popular in 10 years, it already exists now and you might have heard of it! That is, Rust itself took 8-9 years to become 1.0 and it’s existed for close to 15 years now! Languages just take a long time, so I think in 10 years Rust will still be the top choice … for people who want a “Rust-like” language :)

                    I made a similar argument when someone was asking about alternatives to Matlab that are not Julia. If you haven’t heard of it already, it’s not likely you’ll be using it in production in 10 years!

                    1. 6

                      It is wild how long it takes the average language to gain mainstream popularity. For example, Python is one of the “new” hot languages of the last decade, but it is older than Linux!

                      1. 2

                        Python is a weird story, IMO. I don’t know anything about the language’s actual history, so my perception could be wrong. But I feel like it really just had a huge surge for some reason around 2005-2010-ish. I don’t exactly know what caused it or why it wasn’t very popular before then, but it’s really interesting that people just suddenly “discovered” it many years after it had been around. For a while, it seemed like everything was written in Python: desktop applications, CLI tools, server backends, data science code, etc.

                        To be fair, the other viable languages for doing apps in 2005-ish were probably C++, Java, and whatever was in Microsoft land - C# I guess? I can see why Python would be appealing in that environment.

                        1. 3

                          I started using Python in 2003, and I agree it had a bump in popularity in the 2005-2010 era (although it still grew enormously in the last decade).

                          I think it just takes that long to build a useful language – especially the libraries. I don’t think it was just “discovered” – the key is that it gained a lot of critical functionality.

                          For example Travis Oliphant was beating the drum hard for NumPy and array programming in the 90’s and early 2000’s (writing a ton of code, documentation, explaining it at PyCon, etc.). And 10 or 15 years later that led to Pandas, Torch, Tensorflow, etc. which are a big part of why Python is popular now. (Ruby, JavaScript, PHP, and Perl all pretty much lack this functionality.)

                          Guido had almost nothing to do with this! (although obviously he had his hand in so many other critical Python features)

                          And I remember in 2005 or 2006, Python web programming was immature. I used CherryPy, and there was Twisted. It seems like the ecosystem has converged on Flask and Django to some extent. So it just took effort to build all of that. Ruby also seemed to lack web programming until Rails (afaik).

                          In 2003, the meme was that Python was a cleaner Perl, but it lacked libraries. People said Perl was a better choice because it had CPAN. Fast forward a few years and now everyone talks about how Python has more bindings for libraries than say Go or Rust! It just takes time.

                          1. 2

                            Thanks for the insight. As I said, I was kind of passive observer, as I was just barely learning to program in 2007-ish.

                        2. 1

                          Yup, Python and Ruby are of a similar vintage, and they both took more than a decade before getting popular. I hadn’t heard of Python before 2003, and it started in 1990 or so. I agree it had a big bump in popularity in the 2005-2010 era.

                          I think it just takes that long to make a useful language.

                          JavaScript was arguably not very popular before 2005 or so, about a decade after its creation. And it really got popular in 2009 with node.js.

                          Ditto for R – it started in 1995, and I started using it in 2009 or so, and a lot of people still haven’t heard of it.

                          PHP and Perl seem to have gotten fairly popular out of the gate. It would be interesting to know why that is. I think one reason is that PHP was basically a bunch of libraries at first, and not a programming language! It was tightly coupled to Apache, which was becoming huge because people wanted an open source web server.

                        3. 1

                          Yes, that’s a good point, of course. The probability of a language surviving increases as it continues to survive. That sounds almost tautological, but it isn’t.

                        4. 3

                          I don’t suspect that Rust will be popular in 10 years

                          Out of interest, why do you say this? Is there a specific reason/reasons why you think its popularity will plateau/wane?

                          1. 3

                            It’s mostly a hunch, but there are a couple of half-baked reasons:

                            • Statistically speaking, it’s just a safe bet, because there are tons of languages at any given time, but only a few that have lived and thrived for 20+ years (probably single-digits: C, C++, Java, Python, PHP, C#, JavaScript… that’s it? Unless you count LISP, Fortran, Haskell, and Perl as “living and thriving” which I don’t).
                            • Error handling. I mostly like Rust’s error handling mechanism, but I suspect that it’s too tedious for most people and I think there’s room for languages to try other things that may end up being better. Tangentially, my controversial opinion is that checked exceptions deserve another attempt besides how they were implemented by Java. Rust’s approach would be improved (ergonomically) by either ad-hoc enum types or actual inheritance.
                            • Async and Futures, etc. I have a feeling that async/await syntax is a fad for this decade-ish and that in 10 years we’ll all think it was sooo stupid and that “concurrency hoobajoobs” is clearly the right way to do concurrency/async. I don’t have any particular complaint about async, colored functions, Futures, etc- I just see that it’s been very cargo-culty across the entire programming language ecosystem- very similar to OOP in the 90s and similar to FP and monad-all-the-things today.
                            • I also have a hunch that structural typing will become more popular for statically typed languages. That may or may not affect Rust depending on how soon that happens and how cemented Rust is in particular niches.
                            1. 2

                              Not GP, but I think other languages could improve upon Rust.

                              C identified the high-level patterns that assembly programmers were using: if statements, loops… and it gave us constructs to speak in those higher-level terms.

                              I think a language could identify the common patterns that Rust programmers often use, and then offer those more directly, with less complexity.

                              Some other promising avenues: https://cone.jondgoodwin.com/ is making borrow checking easier by complementing it with other memory management strategies, and http://strlen.com/lobster/ is pushing static analysis to be near the borrow checker’s speed.

                              1. 15

                                Replacing languages is an infrequent event. Programming languages are very often invented and designed, but mustering the resources to bring a language of the scope of Rust to industry adoption is really hard and needs a lot of dedication and sweat.

                                Programming languages are very hard to argue for, spending-wise. And given that Rust is one of the only languages currently being adopted by all the major companies, they will think hard about the delta that languages following it will bring.

                                1. 2

                                  I could agree with your phrasing of “adopted by all the major companies”, though I might have phrased it like “adopted by some parts of a lot of major companies, for some things”.

                                  I’m probably speaking from my own bubble, but I don’t really see that Rust has taken off yet. In my day to day job, I see these very clear trends: Obj-C to Swift, Java to Kotlin, Javascript to Typescript. For most actively developed projects where I work, that migration is either underway or in the plans. But I’m not seeing the C++ to Rust transition I would have hoped for. It’s not really even considered that seriously.

                                  From experience, I can only guess that, while Rust is perfect on paper, its difficult learning curve and complexity is what’s holding it back. With that in mind, I wouldn’t be surprised if Rust keeps growing but some other systems language surpasses it in a decade or so, probably one that has the safety and speed of Rust but without the complexities.

                                2. 4

                                  C didn’t come into a world where everyone was writing in assembly; its creators had already been involved in Multics, which was programmed in PL/1, for instance. Burroughs had been using ALGOL as its systems language, as had many others, etc.

                            2. 6

                              Ada has had accessibility checks since 1995, through it’s system of making its pointer-like types into actual types which depend on the lifetime in which they’re declared.

                              1. 4

                                I really have to check Ada out, even if only for the historical context. I keep hearing all kinds of interesting things about it. The cynic in me feels like there must be a huge catch, like it must have something that just makes it horrible to work with…

                                1. 12

                                  The catch is verbosity due to no macros or preprocessor, and then eventually you figure out that verbosity is a signal from the language that you’re going about your problem in the wrong way.

                                  In general it feels like finding a old but super advanced spaceship crashed in your yard that works just fine, but if you tell anyone you’re using it they think you’re just crazy.

                                  1. 2

                                    What’s the concurrency story like?

                                    (Yes I keep popping up on your comments and no I still haven’t managed to really crack ada open. Maybe I should, and should look at how to link it to other stuff with more active library communities)

                                    1. 5

                                      Built into the language you have “protected objects” which provide mutual exclusion to shared resources, and “tasks” which provide the ability to spin off work. You coordinate (rendezvous) with a task by calling one of its “entries”, which are sort of like a procedure call version of “await aTask.asyncFunction();” but “protected objects” can also add guards to these to cause a task to wait in a queue until specific conditions are fulfilled.

                                      Queueing is handled by the language, and as part of these features is a construct called “select” which lets a task “accept” one of multiple entries another flow of execution is waiting on. Since this is built into the language, you also get time-outs waiting on conditions for free, as well as a form of select which will execute a different flow if an entry on a task or protected object would block or if one of the flows exceeds a time limit, like it a calculation takes too long.

                                      What’s super helpful is that because Ada features are opt-in rather than opt-out, you can ignore tasks and protected objects until you understand more of the language, and then define tasks within your functions to split work later on.

                                      active library communities

                                      You can get super far with just the standard library defined by Ada itself, and also the freely available GNAT and GNATCOLL libraries.

                                      1. 2

                                        That’s cool. It sounds kind of like an actor model, and should be easy to build the necessary functionality on top if one wanted “proper” actors.

                            1. 11

                              we settled on $11,000 per month as a baseline salary

                              Am I missing something about working in the USA, or is that very high? Especially for a project running on donations trying to reach sustainability.

                              1. 22

                                That’s $132000/year, which would be a junior developer level of salary at many US tech companies.

                                Also, in the US anyone who is a contractor or “self-employed” pays an automatic additional 15% tax on their wages/salary above the normal income tax (which still applies), and has to fund all their own benefits (health insurance, pension, etc.) from their salary as well (regular employees of companies often get that at least partially funded by the employer).

                                1. 29

                                  From my experience, salaries like that at a Junior level are only found in the Bay area and at FAANG like companies. For a lot of the devs who work at small/medium sized companies in reasonably priced areas, junior dev salaries are closer to $60,000-$90,000.

                                  1. 8

                                    $132k/year for a jr dev is about 100k more than I’ve seen in areas of the US. Even in NYC, you can expect maybe $75-90k/year as a jr dev at most companies. That seems extraordinarily high.

                                    1. 5

                                      … I got paid a lot more than 32k/yr as a junior developer straight out of school, with bad grades, in the south atlantic, in the aughts.

                                      If you’re getting paid 32k/yr as a programmer, please quit and work at chipotle - you’ll get paid more, probably have better benefits and at least you’ll get free lunch, saving another ~$7/workday.

                                      1. 1

                                        Edit: disregard, I can’t read.

                                    2. 3

                                      That’s $132000/year, which would be a junior developer level of salary at many US tech companies.

                                      Is levels.fyi considered good source to check the average salaries? or any other sites?

                                      1. 5

                                        levels.fyi is good if you’re looking at joining a Big Tech (tm) company or similar companies near Silicon Valley, but it’s definitely not representative of salaries across the country.

                                    3. 8

                                      someone on the orange site mentioned the twitter post by one of the babel founders which claims that the funding went to the wrong hands for some time, though they seem to be biased.

                                      The discussion over there also has some links that seem to proof these claims.

                                      1. 2

                                        Yeah, he seems to have deleted that because he was mostly considering commits and such and ignoring all the work around the project that isn’t just code, and he rightfully got a lot of crap for it.

                                        The scope of the project and the associated busy work around it is very different from when he started it.

                                        1. 1

                                          Like what? What other work was done by Henry that doesn’t result in commits, comments and other visible artefacts?

                                          1. 1

                                            Some of the stuff they mention in the post possibly. Public speaking, other activities involved in fund raising and supporting the project that probably don’t all take place directly in the repository and more likely in other points of contact.

                                            This isn’t so different from work done in engineering organizations. As your responsibility or level of seniority increases, the size of your output might lower, but the impact might be higher.

                                            At the same, time, the quantification that was originally pointed out was a number of pull requests, issues, etc, which is highly disingenuous.

                                            In Open Source projects in particular, an issue investigation can stretch out for weeks or months. PRs can have different sizes, and some of them can perhaps have a lot of work gone into them (research, etc) that isn’t directly visible in code committed. There’s also the time spent in reviewing and understanding contributors work. And all of this becomes even more complex and time consuming as a project grows in size and complexity.

                                      2. 7

                                        One thing to consider is that this number is likely fully-loaded (I imagine that in practice everyone is being paid like a contractor), so there’s a big chunk of that that disappears into taxes, and the takehome is probably more similar to if someone was pulling in $7k/month at a “normal company”. Seems pretty reasonable as take home in places like the US (with high rent + health insurance).

                                        I don’t think that it’s unreasonable for full-time maintainers to expect a salary at that level.

                                        1. 4

                                          I don’t think that it’s unreasonable for full-time maintainers to expect a salary at that level.

                                          I agree. The thing everyone is forgetting about is that for someone of the skill level required to maintain a popular OSS project is likely able to command a salary easily in this range. There are hundreds of companies that would hire them remotely at a salary well above $132k p/year. It’s not just FAANG companies in this range anymore.

                                          I mean, sure there are lots of companies paying 60 to 90k. Maybe those devs are happy with the amount. Maybe they are unhappy, but not motivated to run through interviews. Maybe they haven’t put themselves out there enough with OSS or giving presentations. We don’t know their situations, but if a developer can command a higher salary its not really in our best interests as a community to criticize them. (The fact that some say its unwarranted in this particular situation is a different matter)

                                        2. 1

                                          Even if that’s a huge salary for most tech jobs outside of SF and NY, if we consider the amount of value Babel has created for all the companies around the world and if the project was compensated accordingly they should be drowning in money.

                                          1. 9

                                            I’ve been somewhat jokingly telling people that software is a gigantic duct-taped together Jenga tower about to fall down, and this whole situation made me even more sick to my stomach. It’s already hard to build good software, and it’s one thing for people to have architectural or style differences, but intentionally submitting vulnerabilities under the guise of research? What’s next? Purposely making vulnerable libraries for package managers like Cargo, npm or pip for “research”?

                                            1. 9

                                              Yeah, it is scary that a university was able to make malicious commits. If they can do it, think of how easy it might be for a well funded organization like the NSA to do something similar.

                                              Although this research was immoral, it did succeed in bringing up how much we take for-granted security.

                                              1. 11

                                                Purposely making vulnerable libraries for package managers like Cargo, npm or pip for “research”

                                                It’s called “move fast and break things” and I will have you know it’s a proven software development technique that builds extraordinary value for the shareholders, not mere “research”!

                                                1. 3

                                                  I think I worded that statement wrong. My point is that someone might try purposely putting vulnerabilities into existing packages for “research”, assuming that hasn’t already happened.

                                                  1. 5

                                                    No, no, you worded that statement correctly, it’s my attempt at sarcasm that misfired :-).

                                                    1. 2

                                                      Well, yes. You can assume that attackers will do this. It’s called a supply chain attack.

                                                1. 2

                                                  It is wild how widespread this bug is.

                                                  I recently started using ML and specifically pytorch for work and was disappointing with how stateful everything is and how “action at a distance” seems to be the norm.

                                                  1. 7

                                                    Nix is the dream of an ultimate DevOps toolkit in a similar way as Haskell is the dream of an ultimate programming language. Neither of these dreams seem to be congruous with reality.

                                                    1. 5

                                                      I definitely felt that way with Nix - that the promise did not live up to reality. Haskell on the other hand does give you the things it promises, but convincing others (founders, VCs, managers) that it’s worth writing the stack in is near impossible, which means that the ecosystem get stunted. It’s a bit of a cold start problem.

                                                      Going into more detail about Haskell specifically - non-traditional languages like Haskell are often the “weird thing in the room”. When something goes wrong humans often look at the first weird thing in the room to blame, regardless of whether or not it deserves that blame. The result is that many commercial Haskell projects get re-written in another more common language at the first sign of ANY corporate turbulance.

                                                      1. 4

                                                        That’s certainly a strong claim with no supporting evidence in response to a post with supporting evidence.

                                                        1. 5

                                                          I’ve had these discussions numerous times. Nobody ever cares about supporting evidence – they (we?) just flat out reject it if it doesn’t match their preconceptions or flat out accept it if it does. So I don’t bother with it anymore.

                                                          1. 4

                                                            I think I may have misunderstood your original comment.

                                                            Generally people intuitively believe that Haskell is “unrealistic” and only suited for “academic” projects. Some even go so far as to say that people writing in Haskell tend to be “elitists”. In fact, I used to tacitly (with no fault of my own) believe that; it is basically the general impression the tech community holds collectively.

                                                            All of that of course turned out to be utterly false, once I started using Haskell for work and real projects. The real question is - how do we educate the community about what is factual?

                                                        2. 3

                                                          As someone who was swept up in the hype of both of these, this comment hits too close to home. They still have their use cases and offer advantages not seen in many other places, but they are certainly not for every user nor every task.

                                                        1. 3

                                                          This looks like a really cool idea. Hopefully it is not too socially and technically challenging to get the related projects on board.

                                                          One issues is that this would not help with games that have anti-cheat. But hopefully if we get a large enough amount of people gaming on Linux, more anti-cheat software will start to support Linux. Although with some of the permissions that anti-cheat software wants to have, idk if the Linux community will ever support it.

                                                          1. 3

                                                            Anti-cheat is only an issue for multiplayer games; specifically, for multiplayer games where you play with strangers.

                                                            There’s loads of singleplayer games too; I’m not sure what the distribution of popularity is exactly, but if I look at the “bestselling” list on gog.com right now, then most of them are primarily singleplayer games.

                                                            Overall, I don’t think that anti-cheat is critical for a significant adoption rate of “gaming on Linux”. Just general lack of customers/interest seems like a far bigger issue to me.

                                                          1. 3

                                                            I am moving to Philadelphia in March to start a PhD program, so this weekend my roommates and I are going to drive around Philadelphia to get a better feel for the city/suburbs and figure out where we want to live. I am also going to continue brushing up on calculus and statistics.

                                                            1. 5

                                                              I was intrigued by this:

                                                              According to the author of Kitty, tmux is a bad idea, apparently because it does not care about the arbitrary xterm-protocol extensions Kitty implements. Ostensibly, terminal multiplexing (providing persistence, sharing of sessions over several clients and windows, abstraction over underlying terminals and so on) are either unwarranted and seen as meddling by a middleman, or should be provided by the terminal emulator itself (Kitty being touted as the innovator here). A remarkable standpoint, to say the least.

                                                              Because this is something that I completely agree with. I have recently switched to abduco from tmux because I want my terminal to handle being a terminal and the only thing that I wanted from tmux was connection persistence. There are a load of ‘features’ in tmux that really annoy me. It does not forward everything to my terminal and implements its own scrollback which means I can’t cat a file, select it, copy it, and paste it into another terminal connected to a different machine (which is something I do far more often than I probably should).

                                                              1. 2

                                                                Yeah, I do not like how some terminal emulators now are leaving everything to tmux/screen, rather than implementing useful features for management, scrollback, etc themselves. For 99% of my cases, I don’t need tmux in addition to my shell and a good terminal emulator, so idk why I’d want to introduce more complexity.

                                                                kitty honestly works very well for me, and has Unicode and font features that zutty does not seem to consider. Clearly some work needs to be done for conformance to the tests that the author raises, but for my needs, kitty works great for Unicode coverage and rendering.

                                                                1. 1

                                                                  Yeah, I do not like how some terminal emulators now are leaving everything to tmux/screen,

                                                                  So I think tmux and screen both suck since they don’t pass through to the terminal things like scrollback. Instead of the same mouse wheel or shift+page up, I have to shift gears to C-a [ or whatever it is.

                                                                  I actually decided to write my own terminal emulator… and my own attach/detach session thing that goes with it. With my custom pass-through features I can actually use them all the same way. If I attach a full screen thing, the shift pageup/down just pass through to the application, meaning it can nest. Among other things. I kinda wonder why the others don’t lobby for similar xterm extensions or something so they can do this too.

                                                                2. 2

                                                                  I also love how Kitty pretty easily allows you to extend these features with other programs. Instead of Kitty’s default history, I have it enter neovim (with all of my configurations) so that I can navigate and copy my history in the same way the I write my code. I have been using Kitty for a few years and absolutely love it. The only issue I run into on occasion is that SSHing into some servers can mess the terminal up a little.

                                                                  1. 2

                                                                    Same. I never warmed to the “tmux is all you need” approach, because, honestly, it’s just a totally unnecessary interloper in my terminal workflow. I like being able to detach/reattach sessions, but literally everything else about tmux drives me bananas.

                                                                  1. 1

                                                                    Sorry to complain in this thread (i welcome threads like this) but I once posted a video of Alan Kay, who is an incredibly important figure in computing talking about the existential threat of global warming. It was quickly removed by the moderator because they claimed Lobsters is about tech stories and my post was irrelevant to technology (global warming is obviously relevant to the technology industry ).

                                                                    Yet here we are talking about nothing related to computing. I suspect people here aren’t taking computing seriously? It’s upsetting that this story gets through but something so obviously related to what we do everyday gets moderated. Is there any reason left to read lobsters?

                                                                    1. 2

                                                                      Although I agree that:

                                                                      global warming is obviously relevant to the technology industry

                                                                      It is only tangentially related and there are a lot of tangentially related topics to technology that could be discussed. But if all stories tangentially related to technology were discussed, they could drown out the tech articles, like they do on HackerNews.

                                                                      I like that I know I can go to Lobsters and only ever get articles directly related to technology. I think HackerNews already fits the niche for tech and tech related stories.

                                                                      1. 1

                                                                        Very good response. I have have a couple comments.

                                                                        It is only tangentially related

                                                                        Do you still want to program computers in 10 to 20 years? I do, so I take global warming very seriously. It seems to be the biggest topic we should be discussing. Will Rust be a programming language we use in 10 years? Well, depends if GW is solved right?

                                                                        I think HackerNews already fits the niche for tech and tech related stories.

                                                                        I disagree that HN fills that niche. What Lobsters has going for it is being invite only. The discussions should be higher quality here. If you look at the discussions about global warming and how it relates to technology on HN, you still see lots of climate denial. I would not expect that on Lobsters. I would expect we talk about ideas of mitigation, adaptions, and how computers can help solve this huge catastrophie looming over us. You don’t get that discussion on HN as people can’t get beyond the “it’s real” argument.

                                                                        We have very prominent people in Tech like Alan Kay who are talking about it and are begging us to talk about it. But the discussion around the topic is so poor in the tech community I’m starting to lose hope.

                                                                      2. 2

                                                                        Do you remember how it was tagged? I personally enjoy these sort of weekly/thought-provoking posts. Even if indirectly - I think these posts effect folk’s day to day life which in a way effects computing.

                                                                        1. 2

                                                                          I really enjoy these kinds of posts too. Computing is about people and I want to see more of that.

                                                                        2. 2

                                                                          I’d say there’s generally an exception made for ask posts as they’re often more community-building in nature.

                                                                        1. 1

                                                                          I used NixOS for about a week, until I wanted to set up a python virtualenv to quickly hack on some project. Venvs fundamentally break the NixOS philosophy, and required some ungodly amount of hacks/arcane nix package stuff to get kinda working. I gave up. In hindsight I could have setmup a VM, but ffs that seems overkill.

                                                                          Guix has ‘profiles’, which sound like they might provide a non-hackish way to do that: https://guix.gnu.org/cookbook/en/html_node/Guix-Profiles-in-Practice.html

                                                                          1. 6

                                                                            NixOS doesn’t do anything to prevent you from using venvs. I often use a venv in a nix shell that has the necessary C dependencies for my Python. There is even a venvDir helper for mkShell derivations that automagically makes a venv for your nix shell.

                                                                            More on this here: https://nixos.org/manual/nixpkgs/stable/#python

                                                                            1. 1

                                                                              Ok. That looks like a vast improvement over what I recall when I last looked at it.

                                                                              1. 1

                                                                                It may not do anything to prevent you from using them, but I feel like every time I want to use a new language and its packages, (because I am still not the best at Nix) I have to read a bunch of documents and find a third party application that automates things, like mach-nix.

                                                                                I love NixOS, but it is really annoying when I want to do something that on other OSes is really easy, like installing some software from npm, and it takes me multiple hours of document reading and tool testing. And then some more complex packages still don’t run well, like rpy2 for me.

                                                                                Hopefully this would all be easier when the documentation gets better and I get better at Nix.

                                                                                1. 3

                                                                                  I understand where you’re coming from, it’s a kind of red herring: There is a lot of effort to programmatically convert all package management into idiomatic nix store stuff. I think this is a laudable effort but it’s not a requirement for everyone to use! This part is not obvious.

                                                                                  The first thing any developer does is search “how do I use X language in nix?” and of course we’ll find a lot of efforts to convert that language’s ecosystem into the nix ecosystem. I want to categorically say: It’s okay to ignore these. It’s okay to ignore pip2nix, it’s okay to ignore node2nix, etc.

                                                                                  One of the best parts of nix is it’s still very usable in an incremental way. It’s okay to use as much or as little of it as is helpful, and we can always migrate to more nix-ification as the need arises. :)

                                                                                  1. 1

                                                                                    This might be a silly question. If I am on NixOS is there a way to “cheat” and install a python package the “normal” pip way (without combing through a bunch of Nix documentation)? If I were on Debian+Nix I would be able to, but on NixOS I could not find a way to “cheat” and do things the traditional way.

                                                                                    Perhaps I should go back to a “normal” Linux distro and use Nix incrementally until I am more proficient and then come back to NixOS.

                                                                                    1. 2

                                                                                      Ah, I think I know what problem you’re having! Were you using a venv?

                                                                                      In Python, it’s generally discouraged to install things globally (sudo pip install foo). It’s still possible in most distros, but NixOS will prevent you because that part of the filesystem is marked as read-only.

                                                                                      The idiomatic way to use Python, regardless of distro: python -m venv to create a virtualenv (basically a “container” for this project’s dependencies), then activate it source ./venv/bin/activate – you can specify a different directory, too. Try python -m venv --help for more.

                                                                                      This is particularly important since pip is not able to handle multiple versions of the same dependency well, so it’s best to maintain one venv per project.

                                                                                      With that approach, it shouldn’t matter whether you’re using NixOS or Debian or whatever.

                                                                                      1. 1

                                                                                        Oh, I did not know that venvs would work well in NixOS. Tbh I forget what I tried before moving to MachNix, but it is great to know that a simple venv would have solved my issue. I really appreciate the reply!

                                                                                        1. 2

                                                                                          You’re very welcome. :) Hit me up if you run into more problems.

                                                                              2. 1

                                                                                I use venvs all the time for hacking on stuff outside of nix when i don’t care about being so pendantic.

                                                                                1. 1

                                                                                  pedantic**

                                                                              1. 13

                                                                                A few months ago I started tinkering with Guix. The docs are clear, they used an existing language (Guile Scheme), the CLI is coherent, the error messages mostly make sense. I’ve had to put the side project on hold, but overall it’s been a really positive experience and I’m looking forward to getting back to it.

                                                                                Checking back for the repost, I see the bug I filed that Nix’s “hello world” doesn’t build is still open. Looks like the commenters have found a solution, and I see the docs have changed, so maybe it’s solved.

                                                                                1. 8

                                                                                  As a user I’ve been happier with guix than I have been with nix. Like you I found the docs to be clear and the CLI to be coherent. Where it falls short for me is there doesn’t seem to be consistent support for things like GNOME or KDE.

                                                                                  1. 7

                                                                                    Guix looks great and after hitting many frustrating roadblocks with Nix I was also hoping to use it. The problem is that it suffers from the same disease that many GNU projects do. It prefers ideological purity over actually working for users. I’m not allowed to have CUDA support, MKL, etc. There’s a reason why Nix has far more users even though it appears to be inferior.

                                                                                    1. 3

                                                                                      It goes against the principles of the Guix developers, but if you don’t share all their principles, you can immediately install the nonguix Guix channel from nonguix

                                                                                      1. 4

                                                                                        It’s not so easy. I can’t ask questions about these packages or get help with them:

                                                                                        Please do NOT promote or refer to this repository on any official Guix communication channels.

                                                                                        They’re also very thin, for example, there are no CUDA packages.

                                                                                        Guix developers can of course use whatever principles to guide their development, but it is sad that some types of thoughts are ideologically forbidden in the community. I don’t want to be a part of that personally. It’s also a huge waste of developer time.

                                                                                        1. 1

                                                                                          CUDA isn’t really something that with be on the guix maintainers to make work. Like most community projects it will be a matter of growing the community and waiting for people to take up the task of packaging CUDA.

                                                                                          There is a guix HPC group and while they haven’t added CUDA support that is one of those things I sort of expect to be coming with time and as interest in guix mounts.

                                                                                          1. 2

                                                                                            For sure, the Guix maintainers don’t need to get it working, but it’s not that they don’t care about CUDA or any of these other packages. They are actively hostile by not even allowing people to discuss them in their presence. They also refuse to, for example, test if any Guix changes break these packages. You cannot even file a bug report that a Guix change breaks a non-free package!

                                                                                            There is a big difference between “it’s not up to the devs to do this” and the “devs are actively opposed”. Compare the Guix approach to the Debian one. Debian also doesn’t want people to use non-free software and it lives in a separate directory. But I am allowed to discuss such packages on the mailing list and IRC. I can ask questions if I have difficulty with a package, of course, the devs don’t need to answer, but someone else maybe can. I can file a bug report to say that a change affects me. All of these are forbidden and enforced by the Guix developers.

                                                                                            It’s a shame that Guix developers are so dogmatic and politicized that they actively expend effort to hurt users when they could just let them be.

                                                                                      2. 2

                                                                                        I know it’s annoying, but nobody is stopping you from writing derivations (or whatever the Guix equivalent is called) for those features. It’s just not supported by the Guix developers and project in an official capacity, because it goes against the push for people to use Free Software and hardware which supports that.

                                                                                        1. 6

                                                                                          because it goes against the push for people to use Free Software and hardware which supports that. This is why Nix will always have more users. Programers need to solve problems and sometimes the easiest/best solution involves proprietary software. Nix gives its users the freedom to (more easily) use non-free software.

                                                                                          At work when I have a deadline or for personal projects where I have limited free time, I don’t want to have a lot of extra work just because the best solution uses some proprietary code. In a perfect world I would only use free software, but I have work to do.

                                                                                          1. 4

                                                                                            Well yeah, I’m not saying you’re wrong, I’m saying you’re not the target audience for Guix.

                                                                                            1. 5

                                                                                              That is a fair point. My worry is that that target audience for this very useful piece of technology would be much greater if they were slightly less dogmatic with their approach to non-free software.

                                                                                  1. 1

                                                                                    I might try to play around with a IHP, a Haskell/Nix based web framework. I have heard it is not perfect, but I want to get better at Haskell, Nix, and web-dev so this seems like a good project.

                                                                                    I might also try to make some fancy graphs for a project I am doing for a doctorate school application. The data for my project is far from perfect, but hopefully I can find a good way to express what is happening in the data in a nice looking way.

                                                                                    1. 9

                                                                                      Learning how to type on a split ergonomic mechanical keyboard. My moonlander will finally arrive today.

                                                                                      It’s also my last day at this job.

                                                                                      1. 2

                                                                                        Looks like UPS lied, no keyboard until monday :(

                                                                                        1. 2

                                                                                          I just bought the EZ yesterday, super excited! What made you choose the moonlander? It was a really hard choice for me but in the end I didn’t like that you can’t replace all the buttons on the moonlander

                                                                                          1. 1

                                                                                            The moonlander has more firmware storage space. That and the left side is active so I can use the left side for gaming.

                                                                                            1. 1

                                                                                              That’s pretty cool about the gaming thing. Was quite tempted by that and now I’m wondering if I made a mistake. That thing would be perfect for gaming!!

                                                                                              1. 1

                                                                                                The EZ is also good for gaming. If you needed more mouse space, you could always move the right keyboard forward on your desk. If you end up moving your keyboard layout around, I recommend having a “gaming layout.” For instance, I moved escape to where caps lock is and would accidentally hit it when gaming sometimes, so on my gaming layout, I moved it back to the top left corner.

                                                                                                The Ergodox EZ was easily one of my favorite “expensive and unnecessary” purchases of the last few years. I have had mine for 2+ years and still enjoy the experience of typing on it.

                                                                                                Here is my layout https://configure.ergodox-ez.com/ergodox-ez/layouts/zbOVO/latest/0 It is not universally perfect or even internally consistent, but it is perfect for me. If you use vim, having an easy to trigger layer with vim arrow keys is amazing. The mouse layer is also surprisingly nice.

                                                                                                1. 2

                                                                                                  Thanks for this, I was a bit nervous about spending so much money on this keyboard, but you’ve made me feel a lot better about my purchase.

                                                                                          2. 1

                                                                                            Awesome! Good luck, hard at first, but definitely worth it! Is it orthogonal? (too lazy to lookup on phone)

                                                                                            1. 1

                                                                                              It’s ortholinear yeah

                                                                                            2. 1

                                                                                              Exciting! I’m still waiting for my Moonlander to ship (should be between now and 6th of November) and I’m eagerly awaiting it. (My RSI is holding me back as more of my work is about writing plans and proposals now, but pain in my fingers and wrists cause me to dread typing. I’m also unable to play Minecraft with my son, other than at holidays. I hope the Moonlander should help with both.)

                                                                                              1. 1

                                                                                                Same here on the split keyboard. I’ve found it pretty tough going due to moving from a standard layout straight to split, tented, vertically offset and a slightly different layout all at once.

                                                                                                I’ve decided to make it a little easier on myself by removing some of the distance between halves, lowering the outwards tilt, and mapping some keys back to where I expect them.

                                                                                                I have previously managed pretty well with two mini Apple keyboards (whose layouts I’m used to) set up as if they’re one split keyboard, with tenting. This makes me think it’s mainly the layout change that’s making it hard to get up to speed.

                                                                                                My usual WPM is 80+, and I’m down to a sorry 13 at the moment. I’m not sure this tells the full story, however, as most of the slowdown is coming from the changed positions of the non-alphanumeric keys and the fact I’m now forced to touch type properly: no cheating (by reaching over to the ‘wrong’ side) possible.

                                                                                                I’m going to keep doing typing tutors until my WPM is back at 60+ and then focus on the punctuation so I can use tools without having to look at a picture to remember where pipe, at, ampersand etc. are!

                                                                                                BTW for anyone thinking of getting a keyboard which is supported by QMK: The software is absolutely brilliant. I was a bit worried about flashing but it was smooth and painless, and the configurator takes only a few minutes to learn (read the docs!) and is really easy to use.

                                                                                                Being able to have the keyboard send out the key codes I want rather than having to rely on software (Karabiner Elements) is also fantastic.

                                                                                              1. 3

                                                                                                Do not use Nix. Nobody understands Nix unless they have time to burn, Nix barely ever works, the guy who uses NixOS can never get anything to work, Nix will kill your project. Let the NixOS guy keep the nix files up to date for his own benefit, if he really must, but never make it sound like a requirement.

                                                                                                I’m surprised more people are not upset about that. I’ve never had good luck with nix personally but I feel like it’s advocates are many.

                                                                                                1. 5

                                                                                                  I’m a nix user and I feel like mandating nix to anyone in your team is a disaster. Once your program depends on Nix to work then I feel like you have already done something wrong.

                                                                                                  I do think Nix is decent for deployments.

                                                                                                  1. 2

                                                                                                    Heh. Yeah, I mean, I switched to Nix in large part because I felt like I needed more tedium and uncertainty in my life so I would appreciate nice things more. (Sincerely.) I agree that it’s pretty fair for people to not want to use it because it’s going to be more work.

                                                                                                    1. 2

                                                                                                      My apologies for inadvertently using the sysop hat on this comment. It is not an official comment. I had been going back and forth in another discussion for several days and I guess I got in the habit.

                                                                                                    2. 2

                                                                                                      I use NixOS for all of my personal projects. It is great, but it is so different, and therefore often incompatible, with a lot of the software world. Doing “simple” things like running a quick python or node script that has some package requirements can turn into a multi-day slog of reading documentation and testing third party Nix helpers. And then after you get your environment mostly set up you realize that one of the dependancies won’t work automatically with Nix, so it is back to to documentation.

                                                                                                      I Nix is like Vim. I love it and use it often, but I never recommend it for others when simpler tools will work.

                                                                                                    1. 1

                                                                                                      My first thought was that this just looked like a modified ErgoDox. Then I saw that it is made by the same people as the ErgoDox EZ, so it makes sense. I have been using ErgoDox EZ for ~2 years and absolutely love it. It is definitely not for everyone. But if someone is looking for a highly customizable ergonomic keyboard and does not mind the learning curve or price tag, it is great.

                                                                                                      This new keyboard looks like it has nice improvements over the ErgoDox EZ, but nothing that I read (on the first pass at leasts) seemed very revolutionary.

                                                                                                      It is interesting that they are not offering blank keys or backlighting (as opposed to the keys being lit). I don’t know about their average user, but I have moved all of the non-alphanumeric keys to other locations/layers and therefore prefer blank keycaps.

                                                                                                      1. 2

                                                                                                        I had the same thought on this being their own version of the EZ. The thumb cluster looks a little nicer IMO but it seems like it (the full keyboard) maybe has too many keys for my taste. The fact that it’s maybe half the height of the ergodox (by first glance, I could be way off) is really nice, and I was pleasantly surprised to see it priced in the same ballpark. Still feels pricey for a keyboard to me, but having looked at sourcing everything myself to build one I know it’s about right for being pre-built. USB-C is a very nice upgrade over the mini-usb.

                                                                                                      1. 4

                                                                                                        I have always hated the little bits of web dev that I have had to do for work. So I am biting the bullet and building a website so that I can thoroughly understand the whole stack without dealing with corporate red tape. I also might potentially try to build a game on the website sometime. I think I am going to use Deno to learn JS/TS and so that I don’t have to have to use a whole cornucopia of technologies.

                                                                                                        1. 2

                                                                                                          I don’t have to have to use a whole cornucopia of technologies.

                                                                                                          So with you on that. I recently ramped up my Elm familiarity because I’ve gotten increasingly frustrated with coming back to a project a while later and finding multiple parts becoming outdated. I’ve really come to like the Elm and their architecture. It’s slightly verbose coming from other functional perspectives, but that’s almost nothing compared to how many other grievances it alleviates.

                                                                                                        1. 10

                                                                                                          Yesterday I wanted to use my laptop I just recently put NixOS on to resume working on one of my projects that uses pip/requirements.txt to set up dependencies. After realizing that ‘pip install’ doesn’t work in here, I determined that the amount of work required to accomplish this was too great and ended up putting my HDD with Arch back in so I could do some actual work rather than re-solve the already solved (many times over) problem of locally managing python dependencies. The complexity of doing this on NixOS effectively kills using virtualenvs as a quick way to get a special environment up and running.

                                                                                                          Since I’m still very new to NixOS/Nix, deducing the steps in this post from the Nix manual on python was too much for me. This post might encourage me to give it a try though.. but my point of “why is this so ridiculously/needlessly complicated here?” still stands…

                                                                                                          1. 3

                                                                                                            Addressing your point, I like to bring up the difference between complicated and difficult: Nix is difficult, but not very complicated.

                                                                                                            I think it is difficult because we are used to working with package managers that treat the filesystem as a global shared space and that results in a lot of implicit dependencies (and all the problems that come with it). Nix on the other hand makes dependencies explicit which I think is simpler and lets you do things such as having 10 different variations of the Python runtime without resorting to external tools and shell hacks.

                                                                                                            It takes effort plus the official manuals aren’t very welcoming, but it is very rewarding to me.

                                                                                                            1. 1

                                                                                                              external tools and shell hacks

                                                                                                              Thing is, the Python world already has tools like tox which solve this well-known problem, are comparatively well documented, and generally just more stable and better supported for Python than Nix’s “final solution”. For those of us who need (or just prefer) to get some development work done rather than tinker with their system package manager, it’s a significant barrier to adoption.

                                                                                                              1. 1

                                                                                                                I agree with you, and I think the best case scenario is the end user (the persona you described) using Nix through a wrapper so they don’t even know Nix is involved which makes it is more interesting to people working on tooling. I have used Nix to reduce the onboarding of new developers on a project to “install Nix and run nix-shell”. That included multiple programming languages (with their packages), databases, web servers, etc.

                                                                                                                If you think about it (and I will exagerate a bit to make my point), it’s weird that you need to install Python (probably using some package manager), then use pip (another package manager) to install Tox which manages virtualenv instances containing Python installations. Now take that and replicate it for every other programming language/environment out there.

                                                                                                                In the end everything is just files depending on other files.

                                                                                                                1. 2

                                                                                                                  In a polyglot project or environment, language-specific dependency management may well be inadequate. Reproducible builds are a good thing, no matter how you get there. But Nix is a pretty big hammer, and it’s probably not a good idea to try to force everyone up that learning curve. If you’re going to make a wrapper around it for a project, there should be someone who can maintain it and respond quickly when that abstraction barrier is breached.

                                                                                                                  I was responsible for introducing Nix on a big, ambitious, polyglot project myself. Can’t say for sure that it solved more problems than it created, but I do believe it was a net win. Most of the devs still won’t touch it except to run nix-shell, but that’s OK. But I do have mixed feelings; mostly along the lines of, Nix can make it a little too easy and “safe” to add complexity which will end up biting you anyway, and probably worse than if you’d been forced to deal with it at an earlier stage. YMMV; Nix is good stuff, just no substitute for discretion and other forms of sound engineering judgement. Beware silver bullets.

                                                                                                            2. 2

                                                                                                              The nixpkgs manual has the section “15.17.3.6. How to consume python modules using pip in a virtual environment like I am used to on other Operating Systems?” that explains how to use pip and virtualenv inside Nix. I previously used that approach to work on an existing project with lots of dependencies. It’s not elegant but can be useful in some cases.

                                                                                                              Now I’m using a custom solution (not released yet) to build Nix expressions from Python projects. It’s similar to mach-nix, the one mentioned in the article. Actually, I didn’t know mach-nix existed before reading the article :)

                                                                                                              My recommendation is to start with the pip/virtualenv approach mentioned earlier in order to have a working, good enough development environment. Then you can move to a pure Nix solution in order to guarantee reproducibility.

                                                                                                              1. 2

                                                                                                                I had a similar experience. I was working on a project that required a lot of other new technologies and I thought I would do it on my NixOS install. Only to realize that on top of all of the other technologies I was trying to learn, I would also have to learn about how to use pip in Nix. I spent a while trying the tips on the guide, only to have one required packages not be in the Nix package collection. With this guide I may try to get that project working in Nix again.

                                                                                                                I love the idea of NixOS, not allowing so many small things to work as expected puts a real damper on productivity. And as a beginner to Nix, it is daunting not knowing if I will be able to do a project without any hitches or if I will hit some a multi-hour speed bump that leads me down a rabbit hole with 5 different imperfect solutions to a problem.

                                                                                                              1. 5

                                                                                                                Thanks for the post! Open offices can really hamper my productivity as I can get distracted easily. Shifting my hours is an interesting idea that I can try. My current job is transitioning to a new open office, but COVID has thankfully been hindering that transition. My hope is that I can remain remote for as long as possible, but I do like non-open office spaces. It is really nice getting lunch with coworkers or being able to hash out ideas with a coworker in person.

                                                                                                                This is my second job and both jobs have gone from sectioned off areas with only a few people in them to open offices. Besides how distracting open offices are, management going to open offices without getting any input from the workers (or just being honest and saying they are forced to because of money) makes me feel belittled/unimportant as a worker. I followed your final tip at my last job, but this current job has enough going for it for me to give it a try at toughing it out (also, how could I know that my next job wont transition to open office after I have been there for a year like these two jobs have?) </rant>