1. 3

    This is so useful. Especially with those 250 column tables

    1. 25

      If the contents in the sections here comes off as a bit dense and hard to ingest, fret not! They are more teasers or appetisers, the full course meal will have better pacing and technical depth.

      Indeed all the points are quite dense and imperscrutable.

      But this point caught my attention:

      The ‘professional’ is acknowledging that there is a large number (millions) of key individuals in a wide gamut of professions that are [currently] wasting much of their time and talents thanks to misguided attempts at software ergonomics […]

      This is more or less how I feel when I use UIs based on GNOME 3/GTK 3.

      Right now I’m using a desktop computer (not even a laptop, a proper desktop computer) with a hi-res widescreen and yet the interface is presented to me as if I were on a tablet. For example my mouse has to carefully move over an oversized title bar to click on a button instead of being able to swiftly smash my cursor against the top edge of the screen and click on a menu. Yes, if I had a touchscreen and that touchscreen were few centimeters away from my fingers, that huge-button-in-title would probably be OK. But I am not. I am at my desktop and my mouse is about one meter away from my screen.

      Now, the key questions are: How many GNOME users in 2020 use GNOME via a tablet and benefit from this design? How many users interact with the system via a desktop PC or a laptop? How does the benefits to the tablet users compare to the costs that these design choices bring to the desktop users? Wouldn’t these two kinds of fruition be better served by two separate UIs backed by the same core logic?

      (These are not rhetorical questions, but sincere requests for data-driven UI design.)

      1. 8

        How many GNOME users in 2020 use GNOME via a tablet and benefit from this design?

        Agreed. Tablets, phones, and desktop are very different form factors with very different ways of using them. Trying to unify this under one user interface concept –even partially– has failed (Windows 8/Windows Phone. IIRC, KDE tried something like this too). Contrary, macOS and iOS applications follow very different interface concepts. And Apple’s success shows that they were on the right side of history here.

        I’m using GNOME as daily driver coming from all iOS and Mac. It sometimes hurts a lot.

        1. 4

          Indeed all the points are quite dense and imperscrutable.

          It’s a damned if you do, damned if you don’t situation. Putting out individual posts without an overview and the ability to forward-reference would not be much better. It is already well in TL;DR and about half of it was cut.

          How many users interact with the system via a desktop PC or a laptop? How does the benefits to the tablet users compare to the costs that these design choices bring to the desktop users? Wouldn’t these two kinds of fruition be better served by two separate UIs backed by the same core logic?

          You can do both. How about, for instance, having the mechanism to ask for alternate views of an application. One that is friendlier to touch, or for screen readers, or for debugging? In the video in leveraging the display server to improve debugging, I show one way to do that.

          For an example on more dynamic options over a single UI: I have an unhealthy thing for input devices. This photo is from one of my setups in the lab. There’s an eye tracker, stream-deck, 3d-mouse, rotary dial, touch screens, screenpad, input stylus. All of them in use, mostly for command-line / IDE stuff.

          The WM on all of those machines, Durden, is built as a virtual filesystem.

          echo 'hi' > /windows/all/input/keyboard/type
          

          Would write that into well, all windows. Last I counted there’s over 600 such paths at roughly that level of abstraction. Sets of such paths can be tied to certain events, such as a device entering or leaving idle state. When I touch the touchscreen with my finger, something like this is run:

          /global/settings/visual/font/size=18
          /windows/all/window/titlebar_toggle=1
          

          Decorations appear and are resized to match text at 18pt, which was picked based on my finger accuracy on the display in question. The buttons on the title-bars are set to be dynamically populated by bindings announced by the clients, mixed with my custom defined ones for the touch state specifically. In other states they might be mixed with my ‘todo’ list on the stream deck. The clients aren’t written to take any of these devices into consideration.

          1. 23

            Personally, I prefer the imperative for the subject line, and no period at the end. For some context:

            1. 8

              Ditto. I usually directly pass this around as it is actually quite recapitulatory: https://chris.beams.io/posts/git-commit/#seven-rules

            1. 9

              Per Kent Beck: “I get paid for code that works, not for tests, so my philosophy is to test as little as possible to reach a given level of confidence” (https://stackoverflow.com/questions/153234/how-deep-are-your-unit-tests/)

              If your unit tests aren’t adding value, don’t write them.

              1. 4

                Ten or twenty years from now we’ll likely have a more universal theory of which tests to write, which tests not to write, and how to tell the difference.

                I don’t see any progress made in the last 12 years. How do you determine the value of a unit test you consider to write?

                1. 8

                  There’s research on defect rates, what influences them, where to find them, but most software developers aren’t aware of it. A sample:

                  • S. M. Olbrich, D. S. Cruzes, and D. I. K. Sjoberg, “Are all code smells harmful? A study of God Classes and Brain Classes in the evolution of three open source systems,” in 2010 IEEE International Conference on Software Maintenance, Timi oara, Romania, Sep. 2010, pp. 1–10, doi: 10.1109/ICSM.2010.5609564.
                  • P. L. Li, M. Shaw, J. Herbsleb, B. Ray, and P. Santhanam, “Empirical evaluation of defect projection models for widely-deployed production software systems,” in Proceedings of the 12th ACM SIGSOFT twelfth international symposium on Foundations of software engineering - SIGSOFT ’04/FSE-12, Newport Beach, CA, USA, 2004, p. 263, doi: 10.1145/1029894.1029930.
                  • Paul Luo Li, J. Herbsleb, and M. Shaw, “Forecasting Field Defect Rates Using a Combined Time-Based and Metrics-Based Approach: A Case Study of OpenBSD,” in 16th IEEE International Symposium on Software Reliability Engineering (ISSRE’05), Chicago, IL, USA, 2005, pp. 193–202, doi: 10.1109/ISSRE.2005.19.
                2. 4

                  If your unit tests aren’t adding value, don’t write them.

                  Or throw them away.

                1. 2

                  Professionally:

                  • Company is remote first and actually pretty good at changing things when needed so work hasn’t been impaced negative much.
                  • We have now “Remote Team Lunch” and “Remote Team Beers” which is just a beer/coffee or lunch in front of Zoom. Its fun and yeah, it eases the tension a bit as not only talk about work.
                  • We now have the habit of adding a coffee symbol to Slack status and put the Zoom-Link next to it. It means that your on Zoom with a coffee and don’t mind if somebody drops by for a bit of chit chat.
                  • The “peoples department” organized a couple of kitchen coffee Zoom calls which is the same chit chat thing but better, because engineers are able to socialize more with other non-technical teams.

                  So all in all, we made it through well. I’m a senior now, I hope that juniors are also okay. Hard to tell, but I think it is more difficult if you are younger, more insecure in this whole shitty situation.

                  Privately:

                  • Made it through +80 days of complete lockdown in Northern Italy.
                  • Hardest part, not having a balcony, garden or so. Really missed the nature.
                  • Got fined heavily by police for just going for my usual run in the local park (alone of course). Missed the news that this was not allowed anymore.
                  • We cut down on Netflix and increased reading a lot, this was good.
                  • Started the habit of drinking regularly, alone, which is bad. Still do. Need to get this in check.

                  Still feel very fortunate and my thoughts are with those who aren’t.

                  1. 12

                    I don’t really like to talk about my mental health as much as I do but a lot of people with my issues keep quiet for a lot for good reasons. So, here it is.

                    Not well to be honest. I’m bipolar and for the last three months it’s been a real struggle. There’s been a lot of days I can’t do any meaningful work.

                    My position was moved permanently remote in January, which is really awesome for me. (Still is, I love my home office and not having people interrupting me.) I have ADA accommodations and I’ve been using them heavy. Management and HR are being supportive, which makes things bearable. I shouldn’t have to worry about losing my job but I still worry about losing my job.

                    I wish I could use the days off to do anything hobby related but if I can’t work, I can’t really do much of anything. I’m lucky if I can read a book or watch tv to escape for while. At least I’m keeping on top of my exercise and housework but that’s about it. Still sober. Working with my psychiatrist to adjust meds. Beyond that, I don’t see anything getting better soon.

                    1. 3

                      Hang in there

                    1. 16

                      I’ve been using NewsBlur since 2013, and it works well enough that I’ve been willing to pay the $3/month for it. The main thing I enjoy is having a mobile app that is able to automatically download stories for reading on the subway, and sync its read/unread state with the browser version.

                      1. 3

                        2nd vote for NewsBlur. I’ve been using it since before google reader shut down (I kinda saw the writing on the wall on that one), and it’s been worth it ever since

                        1. 1

                          I’ll chime in for newsblur as well. Simple, gets out of my way, just plain works.

                        2. 3

                          Another vote for NewsBlur. I’ve been using it for a number of years as well (I think since 2013, too!) and absolutely love the “Intelligence Trainer” feature. I’m able to highlight keywords to emphasize or hide from the feeds. It’s like Lobste.rs’s tag filtering but for every feed out there.

                          It even supports converting email newsletters into RSS feeds (which seems like the opposite approach everyone else takes, hah) which helps clean up my email inbox some.

                          1. 3

                            Also been using it since 2013. Being grandfathered into the $12 a year rate almost feels bad considering how much value I get from it.

                            Especially since I consume Lobster.rs and HN by RSS. Kind of funny that I read this post through NewsBlur!

                            1. 2

                              Yeah, I lied, I’m paying $12/year myself. It was a no-brainer at that price.

                            2. 1

                              Possibly totally stupid question: is there a Linux client or 3rdparty app for NewsBlur?

                              1. 2

                                Maybe, but not that I’m aware of. I’m happy enough using the browser when I’m not on a phone, so I haven’t looked.

                                1. 1

                                  It’s totally open source, you could run your own instance: https://github.com/samuelclay/NewsBlur

                                2. -1

                                  +1

                                1. 32

                                  There’s a huge vacuum in the search space right now since Google is so broken. This has so much potential!

                                  Could you tell us a little about how the search engine is implemented?

                                  1. 20

                                    Sure!

                                    I use Bing search services (via MS Azure). Quickref itself is a simple RoR app which loads metadata from https://github.com/freetonik/quickref.dev and talks to Azure, while maintaining privacy and not transferring any client info to MS.

                                    Bing is pretty good, since I didn’t have to crawl and index the sites myself (the first iteration was built with scrapy + elasticsearch), and the results are generally ok, but there are limits to the number of sites in the index and the number of priority adjustments. So, if this project proofs to be of value, I’d probably need to go back to custom crawl/search setup, hopefully with the help of others. I’ll definitely open source the app.

                                    1. 4

                                      Very interesting, I had no idea that Bing provides that kind of service. I think it’s good to use their service for now; for the users of a search engine the value should be in the search results, not in how the results are computed. The results are good as far as I can see, I’m finding lots of things I never knew about!

                                      If you have some thoughts about it, could you provide some guidance on what sites belong in the index and what is out of scope?

                                      1. 4

                                        If you have some thoughts about it, could you provide some guidance on what sites belong in the index and what is out of scope?

                                        Yeah, I’ll put that info to the github page. In short, I think it’s a good idea to stick to these:

                                        • official websites and docs
                                        • community-driven docs
                                        • private blogs
                                        • blogs of engineering departments of companies

                                        The borders are vague though, it’s a bit tricky to define. Like, I feel like dev.to is okay, but something like programiz.com is not…

                                    2. 14

                                      There’s a huge vacuum in the search space right now since Google is so broken.

                                      Absolutely yes. I believe that nowadays Google presents the most popular results and not the most accurate anymore. This is especially hard for programmers because we sometimes search for very narrow and specific things where accuracy actually matters. You can still find your ways around this (I call this search skills) but it seems to get harder recently.

                                      Maybe it’s time to have more specialized search providers / search engines in the future for different fields or purposes.

                                      1. 11

                                        One idea I had floating around my head is to seed a search engine with this human-curated content. These “awesome” lists have been appearing to fill a hole in Google, IMO.

                                        https://github.com/sindresorhus/awesome – 133 K stars

                                        https://github.com/vinta/awesome-python – 82K stars

                                        https://github.com/ziadoz/awesome-php - 24K stars

                                        https://github.com/aalhour/awesome-compilers – 5K

                                        Wikipedia is also another obvious source of human-curated content (and one that Google heavily relies on to answer many queries)


                                        It’s like a distributed Yahoo on top of Github! (if anyone even remembers what Yahoo did originally …!) Human curation rather than algorithmic.

                                        Basically the theory is that github collaboration prevents spam and is a filter for quality. Spam and dupes are the #1 problem you’ll run into when creating a search engine. And I think the web is full of pages that just BARELY meet the Google threshold of “not spam”. But those pages don’t make it onto these lists…

                                        So it should be an easier ranking problem in theory. Too bad I don’t have years to work on this :-/

                                        1. 3

                                          I mean, that’s how DMOZ and Yahoo worked in the Before Times™.

                                          1. 2

                                            If we think of a search engine as a shared view into a projected subset of the web and not a gate keeper, then the search service itself should be a form of collaboration so that groups of people can train/code/filter a specific hyperplane in a high dimensional space.

                                            There are plenty of niche industries that would be better served by industry specific search services.

                                            Combine reddit, full text search, rss/federated queries. Basically a community workbench for creating custom search and presentation services.

                                      1. 5

                                        If Lenovo would only provide driver support for the missing bits and force its suppliers to push their firmware updates through LVFS

                                        1. 2

                                          I had to install Windows to update the buggy trackpad firmware in my X1C7 recently, which was extremely inconvenient.

                                        1. 5

                                          I personally can’t believe I’ve lived so long without mtr.

                                          1. 2

                                            Haha, same here. Its basically traceroute on steroids. Colleague of mine showed it to me and I was really like you, …couldn’t believe I got here without. It didn’t solve the problem at hand back then but I was so glad that somebody showed it to me.

                                            You can see in one column the package losses from one hop to the next. If the loss is only happening at one hop this is usually not a problem. Contrary so if the entire loss column would show high loss. My colleague also noted that when I want to see where a connection has problems, I need to run mtr on both ends of the connection.

                                          1. 4

                                            A thousand times yes.

                                            Every repo that is following gitflow comes with a mental overhead for me.

                                            Companies with lots of small repos, each and every following strict gitflow? A nightmare.

                                            It just takes longer when I try to get something integrated. Every. Single. Time.

                                            master is where the action should be. Just freaking rebase and push your commits to master and be done with it.

                                            Unsure? Need somebody to look over it? A longer story? Use bloody branches.

                                            Wanna do stable releases? Use a branch, tags, cherry-pick as much as you want.

                                            Want to know what people are working on? just git branch -a and you see descriptive names not cryptic numbers.

                                            I don’t know, maybe it’s just me but gitflow and me just doesn’t work. Pardon my ranting.

                                            1. 3

                                              Your comment just sounds like it’s describing git-flow to me, but with ‘develop’ renamed to ‘master’ and ‘master’ renamed to ‘stable’ (as they should always have been).

                                              Just freaking rebase and push your commits to master and be done with it.

                                              The diagram in the blog post shows commits made directly to ‘develop’. It doesn’t mandate that everything goes through a feature branch.

                                              Unsure? Need somebody to look over it? A longer story? Use bloody branches.

                                              Yes, those are feature branches.

                                              Wanna do stable releases? Use a branch, tags, cherry-pick as much as you want.

                                              That’s just what they do? A branch and tags.

                                              Want to know what people are working on? just git branch -a and you see descriptive names not cryptic numbers.

                                              git flow has nothing to do with how you name your branches except for the prefixes. Nobody is forcing you to name all your branches feature/ABCD-1234 instead of feature/beginner-mode.

                                              I do think gitflow is a bit odd because in web-style development where you only want a single released version, you don’t really need their ‘master’ branch, and in desktop-style development you should probably do away with their ‘master’ and just keep the release/ branches around so you can do 1.3.17, 1.4.7, 1.5.3 and 1.6.1 hotfixes from those branches.

                                              1. 2

                                                You’re right (partially at least). I think the key difference between what I described and what gitflow ordains is that in gitflow you have to always do a branch. And in gitflow you do not rebase and you do not directly push to master.

                                                1. 1

                                                  As I said:

                                                  The diagram in the blog post shows commits made directly to ‘develop’. It doesn’t mandate that everything goes through a feature branch.

                                                  So I disagree with your claim that you do not rebase and you do not directly push to master (or as they call it ‘develop’). Feature branches as presented in the article are only for the development of new features, not minor changes.

                                                  1. 1

                                                    So I disagree with your claim that you do not rebase and you do not directly push to master (or as they call it ‘develop’). Feature branches as presented in the article are only for the development of new features, not minor changes.

                                                    That is exactly my point. You do it on “develop” and not on master. gitflow doesn’t call master “develop”, as you say. gitflow just added a completely new branch for integration of changes and called it “develop”. In gitflow master, degrades to something (I don’t understand why, though) that kind of follows “develop” but feels like a last-resort-integration-branch-before-we-do-a-release kind of thing.

                                                    And that is exactly the reason why I happen to dislike gitflow. It is needlessly complicated and seems not well thought through.

                                                    This might stem from the early days of git’s success when people adopted it (including me) but didn’t understand git well enough so they looked for “processes” or rather “workflows” to help them and their co-workers through this whole mess of trees of branches and merges.

                                                    But today? I think we really don’t need this anymore.

                                            1. 9

                                              WARNING: this is alpha, and the default keybinds are still weird because I use colemak

                                              Finally, something will have non-weird keybinds for us colemak users \o/

                                              1. 4

                                                My thought was “at least keybindings are reasonable” when I was skimming through the README with one eye closed 3am this morning. (What’s wrong with me?)

                                                1. 2

                                                  Colemak 4evah! So nice to find a piece of software living in that mode already.

                                                  I was already inclined to check this out because I love rust and I have an unhealthy obsession with trying new thought mappers/todo systems, but the colemak defaults pushes it over the edge!

                                                1. 10

                                                  Haha. “With this method, we can exploit the side effects of the Meltdown mitigations to break KASLR reliably.”

                                                  1. 3

                                                    Some key insights when doing full text search with GIN and RUM indexes. Really nice write up. Thanks for sharing.

                                                    Also like the explain analyze everything in the article.

                                                    1. 2

                                                      Also like the explain analyze everything in the article.

                                                      Same. I find having an example using a tool I’m familiar with really helps drive the point home.

                                                    1. 5

                                                      Maybe not ideal, but isn’t TeamViewer a simple viable option?

                                                      1. 8

                                                        Also Google Hangouts works under Wayland.

                                                        1. 7

                                                          Zoom (not a recommendation really, just what we use at the company) also does screen-sharing with Wayland. If you’re not using the Flatpak packaged version that is.

                                                          1. 3

                                                            Also been using Zoom at two different workplaces for years now on Linux. Works well enough.

                                                            (This is with Void Linux and using EXWM/StumpWM/i3, so no ‘standard’ Linux.)

                                                            edit: this is not totally true: Zoom is kinda wonky with tiling window managers, or at least with StumpWM and EXWM.

                                                            1. 2

                                                              Zoom works fine on X too as far as I’ve seen.

                                                              1. 1

                                                                I use both Zoom and https://meet.jit.si on xorg; Zoom used to crash and sometimes hide its controls, but some time in the last year or so they’ve gotten it to be pretty reliable. Jitsi has a few more dropped calls, but other than that it is more reliable in the UI and sharing aspects.

                                                                1. 1

                                                                  I had to use zoom for my last job and it was…. finicky on my Linux box. It’d often work just fine, but it was also liable to pop up a full-screen black window when I attempted to screen share, meaning both me and the other people on the call would only see black.

                                                                  I hypothesized it was trying to do a transparent window to capture clicks or something and since I don’t run a compositor (imo translucent windows are a totally pointless wtf) maybe it ended up black instead.

                                                                  Except it wouldn’t always do it. So I don’t know.

                                                                  I also had a weird experience with my multiple monitors but again it would sometimes just work.

                                                                  What I ended up doing most the time is if I know I had to present on the call, I’d just get out my Windows laptop and do it from there.


                                                                  And before the company switched to zoom (and also sometimes after lol it depended on who was organizing the meeting) it was all about google hangouts. The screen share there for a while didn’t work at all, then google changed from the plugin to the html5 thingy and it actually worked pretty reliably for a while… then it just quit working again later, iirc around the time they rebranded from “hangouts” to “meet” but that could be coincidence since I updated firefox and a few libs too. So I don’t know if it was something I did or mozilla or something google or whatever did that broke it. But again, I would tend to just take calls from Windows when I knew ahead of time I had to present just to avoid taking the risk of the embarrassing delay of it not working.

                                                                  1. 1

                                                                    Compositing isn’t just about clever transparency effects, it actually provides a really nice performance benefit by changing the way that windows are drawn. In a non-composited flow, there’s basically one buffer that all windows draw to, and that buffer is displayed directly on the screen. Whenever you raise a window, it needs to paint itself ASAP to that buffer so that you can see it on the screen. Whenever you move a window, any windows under it need to redraw themselves, because parts of them that were covered up (and weren’t painted before) are now visible. The result is a bunch of processing, a bunch of context switches, and often a bunch of flickering or sluggishness.

                                                                    But with compositing, every window gets its own buffer to draw to, without interference from everything else. The compositor just tells the graphics card how to make them appear on screen, and they do. Yes, this enables effects like transparency, and blur, and window previews in task switchers, but it also means that apps only need to redraw themselves when they actually want to display some new content. There’s no rush to repaint whenever you raise or drag a window, because everything is already there; the compositor just has to update the display list a little bit. The result is a system that does less work and feels a whole lot snappier.

                                                                    1. 1

                                                                      Those performance benefits can be surpassed by older techniques, though the result is slightly different. My system is set up like it is 1995 - there’s no animated effects and window moves/resizes only appear as an outline until you release the click, at which point the move/size is completed. As a result, there’s simply very little work to do at all - for the bulk of the operation, it is just a small rectangle outline getting xored across the existing memory. Since xor is reversable, when it is time to draw the next frame, you just xor the old one again, undoing it, and then xor the new one. No application repaint or extra buffer required.

                                                                      At the end, when the exposed windows do need to be redrawn, it is just one operation and there’s not a huge rush to do it (if it can’t be done in one frame, meh, since it isn’t animated it isn’t that bad). But since there’s very little to do - at the end the windowing system calculates the specific rectangles of the specific windows that need it which can be done very quickly too (or else the application may maintain its own double buffering and thus it reduces to that same operation the compositor would be doing. In fact I suspect many programs end up triple buffering because they still do their own thing AND the compositor keeps a copy!).

                                                              2. 3

                                                                It depends what compositor you’re using. GNOME and KDE seem to work fine, but I couldn’t get any browser-based display capture working on sway, even with the xdg-portal-wlroots package

                                                                1. 1

                                                                  Are you sure? https://bbs.archlinux.org/viewtopic.php?id=249421

                                                                  Seems like there is a project called PipeWire that’s supposed to bring screensharing to Wayland.

                                                              1. 2

                                                                Its FOSDEM week \o/ Will eat pomme frite, write awkward late night code, possibly die of sleep deprivation.

                                                                1. 5

                                                                  Another helpful tool when getting started with typing in Python is MonkeyType 1. It lets you record types during execution and proposes patches to add annotations to you function signatures. Helped me to get annotations into a typing-free code base quickly.

                                                                  1. 2

                                                                    I just searched for this today and I wish I had it years earlier :) Finally my eyes can handle gdb a bit better.

                                                                    1. 2

                                                                      You’re so right. Just started using this. Finally some developer ergonomics.

                                                                    1. 9

                                                                      Would love to see some more infos about build quality, battery life, touchpad performance, how many nits can the display deliver and so on.

                                                                      A friend bought a 2015 model (I believe) and he was not happy with the overall build quality. But I had the chance to have the newer InfinityBook model in my hands for a short moment and I have to say that it felt much better (build quality-wise).

                                                                      Glad to see more Linux-first devices. Tuxedo seems to be a smaller German manufacturer. Is this CLEVO hardware? Do they support fwupd?

                                                                      1. 3
                                                                        1. 2

                                                                          Thanks for the feedback. Since I got quite a few hardware-detail related questions, I will write a follow-up blogpost covering those. I’ve also approached the vendor to see whether there are more details that can be covered.

                                                                          1. 1

                                                                            Definitely interested in a follow up on this.

                                                                          2. 2

                                                                            A colleague of mine had a Tuxedo notebook but this thing looked rather Chinese than German. (I don’t know what version it was, though.)