1. 14

    Every time there’s a UI change, everybody hates it. Your brain doesn’t like unfamiliar things.

    If you don’t change your UI, 10 years later people laugh at you for having UI from the last decade.

    1. 4

      Users want everything to work the same way even if it’s not efficient or productive https://lawsofux.com/jakobs-law.html

      Users spend most of their time on other sites. This means that users prefer your site to work the same way as all the other sites they already know. graphic

      Users will transfer expectations they have built around one familiar product to another that appears similar.

      1. 3

        for a site named “law of UX”, it has bad UX. White on yellow text, vertical text, detail in text background, low information density, too much void leading to excessive scrolling, 3 points split into 3 columns instead of a list. useless landing area.

      2. 1

        That’s because every time there’s a UI change it’s for the worse.

        If you don’t change your UI, 10 years later people laugh at you for having UI from the last decade.

        And yet their old UI was still more usable

        1. 1

          Their other ui mods were change. I wasn’t happy but I resigned myself to it. That was just change.

          This changes where things are, how things scan, how far I need to move my head (from none to lots), how easy it is to find releases (a tiny blue link instead of styled text in a list of other such things)… This change was for the sake of change.

        1. 1

          Ehhh, most project management applications I know of are not very modular. They come with everything, and, generally, the bulk makes it not lightweight. I’d be interested to hear if you actually find something lightweight, though

          1. 1

            I bought a raspberry pi with the trimmings and I’m going to try setting up Pi Hole. We’ll see how it goes.

            I also bought a book from the 90s about common lisp. I’m going to learn me some stuff.

            1. 1

              I do the same thing with my Raspberry Pi 4. Pi-Hole was easy to install and configure, including using the underlying DNS software (dnsmasq) to resolve custom local domains. Plus, I have a cronjob to regularly run updates and reboot, so it takes virtually 0 effort to maintain

            1. 7

              Are any of the examples in the V playground working for anyone? I get the following error for every single one:

              You just found a bug. V can’t compile this program, but it should. Please create a GitHub issue.

              1. 1

                There’s a new WASM-based playground that’s been around for about a month and that is now linked to on the V homepage!

                Here you go: https://v-wasm.now.sh/

                1. -1

                  I just reported this, thanks!

                  In the meantime, check out https://github.com/vlang/v/blob/master/doc/docs.md and https://vlang.io/compare .

                  1. 1

                    For which good reason software communities feel like blaming (downvoting) someone for reporting and fixing bugs?

                1. 33

                  This is starting to look like bullying. I think the post is fine, but posting it here to point and gawk isn’t. :(

                  1. 25

                    If someone makes bold claims about a project, then there’s nothing wrong with pointing out when those claims aren’t accurate.

                    1. 36

                      If we had a post for every software project that was still shit in spite of bold claims, the frontpage would be worthless.

                      1. 13

                        It’s fair to say we don’t need a post for every piece of software that isn’t living up to its claims, but that doesn’t make this bullying.

                        1. 17

                          I think there are two differences here:

                          1. @cadey wrote it but didn’t post it. I’m assuming @calvin shared it because he thought it was genuinely interesting content, not to bully V.
                          2. It’s not just that V is still shit in spite of bold claims, it’s that V is still shit in spite of bold claims and incredibly toxic behavior by its community. The interplay between all three- toxicity, grandiosity, vaporware- makes this analysis especially interesting to me.
                          1. -8

                            What toxicity are you talking about?

                            If V is vaporware then how are so many of us using it for our projects? https://github.com/vlang/v

                            Here’s a cool one: a first-person shooter game bot https://github.com/EasyHax/Vack

                            1. 16

                              What toxicity are you talking about?

                              You, in this thread, right now.

                              This is the only time I’m going to reply to you. And I only replied because nobody else has explicitly called out your hostility.

                              1. -4

                                Defending V from misleading attacks – so misleading that the author has just retracted her original post – is not exactly a defensible definition of “toxic”.

                                I don’t like seeing slander against important projects I care about. Surely you can understand!

                                1. 13

                                  All I can see here is that the V community lives up to its infamy by bullying someone into taking down a critical piece on it.

                                  1. 15

                                    I retracted the post because of people like you. It wasn’t just you, but I just wanted an end to it.

                                    1. -5

                                      If your post would have been factual then I wouldn’t have criticized it…

                                      I hope you are in a better headspace for your future posts. I’m sure many of us would love to read more articles about WasmCloud, which is honestly one of the coolest projects I’ve ever heard of; would solve many important problems at once, and do so without reinventing the wheel.

                                      (Dear readers: FWIW I didn’t ask for the post to be taken down. I was arguing against its content.)

                          2. 3

                            Did I miss some drama about this project?

                            1. 3
                            2. -3

                              Which claims aren’t accurate, specifically?

                              1. 8

                                As far as I can tell, compiling 1.2 million lines of code in a second (second bullet point). I would also like to see some citations backing up the safety guarantees with respect to C to V translation. C has way too many gotchas for a bold claim like that. Also, the safety guarantee with the C and Javascript backends.

                                1. -1

                                  You can download the project, generate 1 million lines of code using tools/gen_1mil.v and build it in 1 second with v -x64 x.v

                                  “ safety guarantee with the C backend” makes no sense, because you write the code in V, not in C. V won’t allow you globals, or shadowing etc. C can be thought of as an assembly language.

                                  1. 5

                                    If only this benchmark actually worked. First I compiled the generator using:

                                    ./v -prod cmd/tools/gen1m.v
                                    

                                    This already takes 1.3 seconds. I then ran the resulting binary as follows:

                                    ./cmd/tools/gen1m > big.v
                                    

                                    The size of the resulting file is 7.5 megabytes. I then tried to compile it as follows:

                                    ./v -prod big.v
                                    

                                    This takes 2.29 seconds, produces 7 errors, and no output binary. This is the same when using the -64 option, and also when leaving out the -prod option.

                                    Even a simple hello world takes longer than a second in production mode:

                                    v $ cat hello.v
                                    fn main() {
                                        println("Hello world")
                                    }
                                    v $ time ./v -prod hello.v
                                    
                                    ________________________________________________________
                                    Executed in    1,44 secs   fish           external
                                       usr time  1372,26 millis  350,00 micros  1371,91 millis
                                       sys time   64,93 millis   28,00 micros   64,90 millis
                                    

                                    In debug mode it already takes 600 milliseconds:

                                    v $ time ./v hello.v
                                    
                                    ________________________________________________________
                                    Executed in  666,51 millis    fish           external
                                       usr time  613,46 millis  307,00 micros  613,15 millis
                                       sys time   52,61 millis   26,00 micros   52,59 millis
                                    

                                    With -x64 a debug build takes about 2 milliseconds.

                                    Based on the above I find it hard to believe V would really be able to compile over a million lines of code in less than one second; even without optimisations enabled. I hope I am wrong here.

                                    The hardware used is as follows:

                                    • CPU: AMD Ryzen 5 1600X
                                    • RAM: 4x Kingston KHX2400C15D4/4G, a total of 16GB
                                    • SSD: Samsung 860 EVO 250GB
                            3. 13

                              maybe, but as icefox said I also feel like christine is giving V too much PR with it

                              1. 5

                                I agree that it’s unnecessary, though I can’t decide if it’s really bullying.

                                I’ve heard about V two times since the last post hit lobste.rs. One time I posted Christine’s observations, one time someone else did. I think the message is out there, and at this point, it’s really only noteworthy if something changes.

                                1. -5

                                  What message is out there? That the misleading attacks on V continue?

                                2. 5

                                  Yeah there is some interesting technical content in the post, but the tone is offputting.

                                  1. 7

                                    Abuse that gets a lot of “positive engagement” is deemed entertainment.

                                    1. 3

                                      I was amused to see it tagged “performance”, wonder if the pun was intentional on the submitter’s part.

                                    1. 8

                                      Probably i3 and/or tmux

                                      1. 3

                                        Continuing to work on my Go recfiles parser. I’ve made a lot of progress on it. In the course of working on it, actually, I incorrectly implemented my parser because of a mistake in the online documentation; I’ve informed the recutils folks, so hopefully it’ll be fixed up soon. Happy to dive into more detail if any of y’all are interested.

                                        Other than that, some friends and I are hosting a virtual microconference. It’s a very laid back atmosphere (generally, no presentation slides or anything; all verbal). I’m giving a talk on recfiles and a talk on unexpected behaviors I’ve encountered in Go (and I’m sure it’ll devolve more generally into the very few things I don’t like about Go)

                                        1. 5

                                          Continuing to work on a Go parser library for GNU recutils

                                          1. 1

                                            Huh, first time I hear of recfiles. Very interesting, thanks!

                                            1. 10

                                              It was nothing too complicated, but I once refilled a small refrigeration unit that could reach up to -70°C. That was the coolest technology I have ever worked on.

                                              Jokes aside, what is it lately with all these shallow questions? I really enjoy lobsters, but it’s more and more turning into another Hackernews with experience-bikeshedding, resembling more and more an alcoholics anonymous meeting where everyone gets to share his story but nothing is actually accomplished in the general discourse.

                                              1. 2

                                                Ya, these really should just be conversations in the IRC…

                                                1. 2

                                                  It’s the submitter’s style, and it came up last time we had a metathread about this: https://lobste.rs/newest/mraza007

                                                  1. 1

                                                    -70 degree is impressive. Do you remember which refrigerator that was? I’m interesting in such a thing for stress-testing embedded devices.

                                                  1. 1

                                                    Oh weird. Is it something to do with RTL overrides?

                                                    1. 2

                                                      The browser is rendering the entire text within the parentheses as bidi instead of just the text within the quotes. Hard to fault it for that though, since we can hardly expect a general purpose text rendering engine to treat code specially.

                                                      1. 5

                                                        Seems to be rendering fine for me. What are y’all seeing?

                                                        1. 3

                                                          Looks normal for me too. I’m using Safari on iPhone. It’s possible I’ll get different results on desktop.

                                                          1. 2

                                                            You sure?

                                                            If you break the expression into multiple lines, can you see the problem?

                                                            Or try removing one of the whitespaces on the side of the colon. Did that do what you expect?

                                                            1. 1

                                                              Ya, I see it now that I removed one of the whitespaces adjacent to the colon. If I don’t do that, it looks normal to me

                                                              1. 1

                                                                “normal”, meaning you can’t tell which string is longer?

                                                      1. 1

                                                        What version/model of the Raspberry Pi are you using?

                                                        1. 2
                                                          Model    : 3 Model B
                                                          Memory   : 1 GB
                                                          Overvolt : No
                                                          Released : Q1 2016
                                                          Notes    : (Mfg by Sony)
                                                          
                                                          Raspbian GNU/Linux 9 (stretch)
                                                          
                                                        1. 1

                                                          yes might be my favorite just because the source code isn’t a simple loop.

                                                          https://raw.githubusercontent.com/coreutils/coreutils/master/src/yes.c

                                                          pushd/popd are pretty useful to, though I’m not sure shell builtins count as far as “terminal commands” go.

                                                          1. 2

                                                            The AUTOPUSHD option is a feature that I really like in zsh. It effectively turns every cd into a pushd. This way, I don’t have to try to think about or anticipate whether I might later want to pop back to a previous directory.

                                                          1. 10

                                                            I bought a 2.7inch e-ink screen that I’m going to attach to my Raspberry Pi to build a dashboard with — and write a blog post about the journey.

                                                            The recommended refresh rate (for a full refresh, partial refreshes are lower) is 180 seconds. It’s also recommended to not leave the screen on 24/7 to avoid ghosting and other permanent problems. So there are some creative restrictions for the project!

                                                            1. 2

                                                              I’m thinking of buying a Waveshare E-ink screen for my Raspberry Pi, so I would very much be interested in reading about the technical details of how it works out for you (especially if you’re able to build your dashboard in a coding language other than Python)

                                                              1. 1

                                                                I’m probably going to use Python to communicate with the device. However, here’s a video of me running one of the example C programs https://twitter.com/healeycodes/status/1254065091143704576

                                                                Source code: https://github.com/waveshare/e-Paper/blob/master/RaspberryPi%26JetsonNano/c/examples/EPD_2in7b_test.c

                                                                One method of rendering is to create two bitmap images (one for the red color, one of the black color) and send them to the display.

                                                                1. 2

                                                                  That’s awesome! I prefer C, so that works out well for me. What’s the cable/interface you’re using to connect the Raspberry Pi to the screen?

                                                                  1. 1

                                                                    I have the HAT version so it slots right onto the GPIO pins. It also comes with an 8-pin cable to use instead.

                                                            1. 5

                                                              Why didn’t they do this from the start?

                                                              1. 8

                                                                Disclaimer: I am only speculating here based on my own experience. I am not affiliated.

                                                                I didn’t know how much work it was to release something that is even mildly popular as open source, let alone something that attracts a ton of attention, until I did it. It’s not just a matter of dumping a tarball somewhere and throwing up a link. You need to be prepared to help people build it and understand it. Making sure things can be built, modified and tested easily outside the small group that developed them can be a pile of work all by itself. Taking the time to also answer questions about them without either making your organization look bad for being unresponsive or for being dismissive of poorly considered questions requires resources.

                                                                And when you’re trying to get something off the ground, your best resources are already spread thin.

                                                                I don’t find it astonishing at all that a company could conclude that they lack the capacity to put their best face toward an open source release while they’re launching, and defer that release as a consequence.

                                                                But I have no idea if that’s why or not. It resonates with me more than the code cleanup rationale others have mentioned.

                                                                1. 3

                                                                  Probably wanted to mature the product first. Their reputation is sort of staked on how good the software is

                                                                  1. 1

                                                                    That reasoning doesn’t make any sense to me, can you explain? They were releasing the software well before today to paying customers, so was the software not mature until now?

                                                                    1. 12

                                                                      They were releasing the software well before today to paying customers, so was the software not mature until now?

                                                                      Well…yes, quite possibly. Releasing software doesn’t make it mature, so I’m not sure what you mean by this.

                                                                      They may have also delayed open-sourcing to give themselves time to conduct security audits (and respond effectively to the findings), figure out licensing, negotiate SLAs with any third party source code hosting services, set up their bug bounty program, and [re]organize the codebase before going public. There’s also the possibility that they needed time to scale up their development team in anticipation of the increased volume of bug reports, security vulnerability disclosures, pull requests, and feature requests that inevitably accompanies open-sourcing. All these things take time, with many moving parts to consider

                                                                      1. 1

                                                                        There’s a difference between “working code” and “good code”. Good code should always be working code, but working code might be something that is good enough, not very nice, not very readable but gets the job done.

                                                                        If they release code for critical applications that look like it was done by two interns over a couple of weeks, it might affect their reputation. If instead they clean up the code, make it nice, use best practices, etc. then it will make a much better impression upon release.

                                                                  1. 3

                                                                    I agree that there are a lot of low-effort questions that don’t demand high-quality answers (problems on both sides of the fence), and the cadence questions like “What are you doing this week/weekend?” are exceptions that the community wants. If folks want to know what distribution people are using, etc, they should really take that conversation to the IRC.

                                                                    That said, I don’t think it’s a problem for a conversation that sparked interest in the IRC to become an ask post. Some of the ask posts recently have had technical answers (e.g. using UUIDs for naming hosts)

                                                                    1. 21

                                                                      Perhaps one of the biggest things worth mentioning here (other than the standard: Vim, ag, LSP, etc.) is gofmt.

                                                                      gofmt takes any valid Go source code and formats it. One of the benefits of this is that it eliminates low-value discussions about where to place braces, spaces, and all of that, but another huge benefit is that it’s quite a productivity win.

                                                                      Before, I would manually muck about to get the indentation, spacing, and all these thing correct. Now? I just write if foo == "" { return } on a single line and let gofmt take care of it. This is especially a massive benefit when you copy/paste some code and the indentation is off, or you eliminate/add an if, and so forth. gofmt will just take care of all of that.

                                                                      goimports does gofmt and also takes care of adding/removing imports; fmt.Println("DEBUG", v), write, and it adds import "fmt" automatically (and removes it again when the line is removed).

                                                                      There are similar tools for other languages; I encourage you to check it out if you haven’t; I never thought I would like it so much until I started using it (“real programmers just get the indentation correct on their own and don’t need a tool!”)

                                                                      1. 2

                                                                        Perhaps one of the biggest things worth mentioning here (other than the standard: Vim, ag, LSP, etc.) is gofmt.

                                                                        Clang-format does the same thing for [Objective-]C[++] codebases. One of the biggest productivity wins is not just using it, but integrating it with the build system and with CI. I’ve recently started doing this with a few projects so that there is a clangformat target that applies the formatting to all source files. CI builds that target one each PR and if it produces a diff then this CI step fails with a message asking the submitter to build with the clangformat target and then update the PR.

                                                                        This means that no human needs to either look for minor style nits, or fix them, during the code review process. You can’t quite represent my preferred style with clang-format, but it’s close enough. Now code review can focus on the important style issues, such as consistent naming in APIs, rather than the trivial ones.

                                                                        1. 5

                                                                          We do an equivalent at work with prettier formatting typescript. I’ve thing I’ve found is that it feels much nicer to have auto formatting on save in my text editor as well as in CI.

                                                                          1. 2

                                                                            The unfortunate thing about clang-format is that you can configure the formatter any way you like. At a large company, you can end up with a huge number of repositories and teams, each with different .clang-format configurations. Unless there’s outside pressure to decide which configuration to go with, you might end up in endless debates over which format is The Best.

                                                                            Go has the beauty of having One True Format™

                                                                            1. 2

                                                                              That doesn’t really bother me, as long as it’s integrated into the build system and CI pipeline: I write without paying attention to it and then reformat the code before I commit. It’s a slightly higher cognitive load than having a single format, but the go style makes several decisions that are the opposite of what you’d get if a cognitive psychologist had been involved in any part of the process, so I prefer having the option to make the right choice some times than having to always make the wrong choice.

                                                                              That said, in my ideal world, there would be no global layout style: the revision control system would store an AST and it would be up to the reader how to typeset it. Having a per-project clang-format style is pretty close to this: in theory, I can apply my own preferred style on checkout and then the project’s style before I commit a patch. I’d love to see better tooling around this.

                                                                              Some years ago, I had a student work on a project called Code Editing in Local Style (CELS), which he presented in EuroLLVM in Paris. It did a lot more trivial reformattings than clang-format (for example, it could have variables declared at the start of a function or at their minimal scope, could handle tabs-for-indent-spaces-for-alignment style, could switch variables of different kinds between conventions like underscore_separated or camelCase, and implemented the TeX line breaking algorithm with weights for badness). I’d love to see that part of a normal editing workflow.

                                                                          2. 2

                                                                            I absolutely agree. I used those tools so often that I just threw them into my vimrc:

                                                                            autocmd VimLeave *.go :!go fmt %
                                                                            autocmd VimLeave *.go :!goimports -w %
                                                                            
                                                                          1. 1

                                                                            I haven’t gotten a chance to test tmux-session yet, but it reminded me of wemux

                                                                            1. 1

                                                                              Gentoo users in the distance

                                                                              1. 2

                                                                                Fabulous. Would use this in a heartbeat if there was a “tmux layer” -I see you opened an issue to complete that. The only thing that keeps me off i3 is tmux -but the, uhm, non-sane defaults of tmux are unpleasant.

                                                                                1. 3

                                                                                  non-sane defaults

                                                                                  Do give more details on why you think the defaults aren’t sane

                                                                                  1. 3

                                                                                    Scrolling. Use of arrow keys. Copy/pasting. Default keybinds use keys on the edge of the keyboard too often. Little, personal preference things such as those. They’re not horrendous – I avoided the word insane for a reason. Any time I have to add something to my “dotfiles” repository I’m annoyed.

                                                                                    1. 2

                                                                                      Scrolling. Use of arrow keys. Copy/pasting. Default keybinds use keys on the edge of the keyboard too often

                                                                                      You’re describing the “what”, but not the “why”. Scrolling is the what, but why is scrolling non-sane? Using arrow keys is the what, but why is using arrow keys non-sane? Copy/pasting is the what, but why is copy/pasting non-sane?

                                                                                      Default keybinds use keys on the edge of the keyboard too often

                                                                                      Same thing, default keybings using keys on the edge of the keyboard is the what, but why is using keys near the edge of the keyboard a non-sane thing?

                                                                                      I was really hoping for a deeper response…

                                                                                  2. 2

                                                                                    Fabulous

                                                                                    Thank you!

                                                                                    What would you consider the essential keybindings of tmux? I’m keeping track of my implementation progress here https://github.com/aaronjanse/3mux/issues/1

                                                                                    1. 1

                                                                                      For me… anything to do with session/pane/window management on the usual Tmux “cheat sheets” found online. I rock all the defaults found here other than things within the “copy mode”

                                                                                    2. 1

                                                                                      Wait, what? How does tmux keep you off i3?

                                                                                      1. 1

                                                                                        I have a few competing concerns w/r/t my desktop environments/tiling window managers. I won’t get into all. Being able to glance at multiple terminal things is helpful – something i3 and Tmux both enable while being keyboard driven.