1. 8

    At work, it’s review time, so I have to do that. I’m in a good position where my team is extremely good, and we’re getting loads of cool shit done, so it’s not that I have to have The Talk with any of my people; but it’s still this sort of ugly kabuki nonsense. I’m looking forward to being done with it for another six months as soon as humanly possible.

    At home, I had the baby to myself all weekend as the wife and the big girl went camping. It was amazing, but I’m very glad that everybody is home now. We’re in a really good spot with the girls; they’re 18m and 3y and are tight as thieves.

    I’ve started assembling a “new” PC out of parts I’ve had lying around, and I got it all hooked up and … bupkis. The motherboard is getting power (there are LEDs on the ethernet jack that light up) but the fans don’t start and the power switch does nothing. So I have a couple of evenings “fun” swapping parts around to try and narrow down what’s busted. At the very least, it’s not the CPU, so that’s a $1200 relief.

    I’m also playing around with NixOS on the one working computer; I stand by my declaration that this is the only sensible way to configure and maintain a computer, but I am increasingly disenchanted with the nix/nixos specific experience. I hate the language, and the tooling is pretty weak, and the documentation is not good at all. I think I should start blogging about it, so that someone coming after me will have additional documentation, but that smacks of work and I am so very tired.

    1. 4

      I’m also playing around with NixOS on the one working computer; I stand by my declaration that this is the only sensible way to configure and maintain a computer, but I am increasingly disenchanted with the nix/nixos specific experience. I hate the language, and the tooling is pretty weak, and the documentation is not good at all. I think I should start blogging about it, so that someone coming after me will have additional documentation, but that smacks of work and I am so very tired.

      I’ve been meaning to try GuixSD/NixOS for a while as it seems a lot more sane than the current way of doing things. Have you tried GuixSD? What are the problems you’ve found with the nix language/NixOS? To me it seems that guile lisp is better than the nix language, but I don’t know how the ecosystem compares between both systems.

      1. 3

        nix-the-language is just a shittier, untyped version of Haskell, with terrible, terrible documentation. The tooling is bad, but improving. I haven’t tried Guix, which I would expect to like better because scheme, but be less useful to me because of maturity and the strict approach to software freedom.

        1. 2

          nix-the-language is just a shittier, untyped version of Haskell, with terrible, terrible documentation. The tooling is bad, but improving.

          As a newbie trying really hard to figure things out in NixOS, this si so damn true.

          1. 2

            why didn’t they just create a minimal version haskell? (instead of inventing a whole now, subpar, language)

            1. 1

              I don’t know. The people behind nix and NixOS are very smart, however, so I would expect them to have a good reason (Chesterton’s Fence, and all).

          2. 2

            This comment reminded me to submit this story, which pretty much summarized my Nix experience; while the idea of declarative OS config did seem cool at first, it quickly gave way to frustration with the obscure and under documented tooling…

            1. 1

              This comment reminded me to submit this story, which pretty much summarized my Nix experience; while the idea of declarative OS config did seem cool at first, it quickly gave way to frustration with the obscure and under documented tooling…

        1. 5

          On the personal side I’m getting deep into category theory and the theoretical side of lenses in haskell (I got a haskell tattoo last week so now I feel the pressure to expand my knowledge, as stupid as that sounds :D).

          At work I’m refactoring the frontend rendering engine to be able to plug a wasm version in the near future.

          1. 9

            At work a HHKB Professional 2, I’m in love with this keyboard. At home Im trying to learn to use the ergodox ez with a dvorak layout (I’ve built a custom firmware that ties very well with my environment of i3, vim, tmux, etc), I also have a filco majestouch 2 and a Model M

            1. 3

              I also use and love an HHKB Pro 2 at work. I’ve replaced the controller board with one of Haasu’s units in order to be able to program it myself with QMK - I used this primarily to get play/pause/skip buttons in addition to the volume buttons in the default keyboard map, but also have tap-and-release on the shift keys type parentheses.

              I’d like to add that I type using the Colemak keyboard layout - I switched in college when I was starting to experience RSI, and the option of fixing it for “free” by switching layout was really attractive. I’m glad I use it, and still do, but I’m not sure I would learn it again if I had to do it over. Proper ergonomics makes a bigger difference, and it takes me a second any time I sit down at someone else’s PC to recalibrate myself. Trying to use it on Windows is also a pain, though Dvorak is better in this regard.

            1. 4

              Maybe our idea of the “web” is what’s too small! Web Assembly is more than appropriately named in my opinion for how well it works for the transfer and immediate evaluation of procedures over networks, but the imagination of many for the idea of the web is lost beyond the horizon of their web browser. There’s a lot of our thinking that could use a bit of Imagination Fuel

              1. 2

                I’m very much on that team. I’m giving a full conference talk about it in Barcelona next week. Different framing work well for different people, so I picked this one for this post, as I wanted it to be short, and this framing is shorter.

                1. 1

                  Didn’t mean it to be nitpicking, it’s too easy to accidentally write posts in that style lol. Very good article and I’m excited for any future ones about this topic!

                  1. 1

                    Oh! I’m from Barcelona, which conference are you attending? I may try to attend.

                    1. 1

                      Friday: https://jscamp.tech/schedule/

                      It says TBD but it’s a wasm talk.

                      1. 1

                        Damn! tickets are sold out :( Will the talk be uploaded afterwards?

                        1. 1

                          I believe so! I’d like it to be; the last time I gave this talk it wasn’t recorded.

                  2. 2

                    Yeah I think we browsers have become too big, monolithic, and homogeneous. I would like to see more diversity in web clients. Those clients could use WebAssembly outside the context of the browser.

                    The browser has a very specific and brittle set of security policies, and WebAssembly doesn’t change that. It will inherit the same problems that JavaScript has.

                    1. 3

                      Sort of! You know, at parse time, every function a wasm program could call. This is extremely useful in a security context.

                    2. 2

                      Imagination Fuel

                      Love It. The captures a lot of meetings I have been trying to have with folks at work. They are thinking low level performance fixes for things, while necessary, they are having a huge problem jumping up a couple abstraction levels and thinking transformatively.

                    1. 10

                      I’ve started valuing simplicity a lot more lately, I think unless there is a very good reason the simpler the code, the better. But, I believe that correctness should go first. If a program is not correct it doesn’t matter if it’s simple, it will just not do whatever it’s meant to do, so it is a bad program. I understand where you are coming from, if it’s complex the chances of it also being not correct are higher. But I still think correctness should be placed above.

                      That said I agree that we should strive for simplicity a lot more than we do. Just recently, at the new job I’ve started at, I’ve been rewriting a whole part of the codebase which has mostly come down to simplifying a lot what was there. I’ve found that a very good way of simplifying is thinking about the data flow inside your application. Instead of thinking in some “elegant” abstract organization of code think what data comes in, how the data is transformed and then how it leaves. Once you’ve found how the data is transformed, the program structure will become a lot simpler in my experience. So that’s mostly what I’ve been doing.

                      1. 12

                        I think it’s easier to make simple code correct than to make correct code simple (without starting over and having to make it correct again). If our objective is to reach the same end point, then we should take the easier path.

                        1. 1

                          I think I might disagree. How do I know my code is correct? However I know, that is the key. Even in the worst case of starting over— something someone who isn’t me may do in the future— correctness remains.

                          Writing complicated code in the exploration of a design space can be the easier path.

                          1. 1

                            If we’re talking about a section of code that will be more or less written once and considered “finished”, then I would agree that correctness should come first. This situation certainly exists, but many of us have probably never encountered it. In the case of “living” software (for which the requirements are constantly evolving, for better or for worse), simplicity makes ongoing correctness more attainable. To be clear, though, I don’t think this is a “pick two” kind of a deal, you need all three, but the order in which you satisfy them matters.

                        2. 3

                          but it’s not just a choice “oh shall I make this simple or go with a complex solution?”, it’s a constant battle. it takes a mix of art, design, genius, care. We are told not to do rewrites but rewrites are one of the best ways to achieves simplicity.

                          Instead of thinking in some “elegant” abstract organization of code think what data comes in, how the data is transformed and then how it leaves. Once you’ve found how the data is transformed, the program structure will become a lot simpler in my experience. So that’s mostly what I’ve been doing.

                          I think this is one of the best guidelines we could give for “how to achieve simplicity” in programming.

                          1. 2

                            but it’s not just a choice “oh shall I make this simple or go with a complex solution?”, it’s a constant battle. it takes a mix of art, design, genius, care.

                            Yes, simplicity in a complex (or even in a simple!) domain is very hard to achieve, and I think we should all strive for that as much as we can. But I still think that correctness has to come first for the simplicity to be meaningful.

                            We are told not to do rewrites but rewrites are one of the best ways to achieves simplicity.

                            Couldn’t agree more, I recently read an article (that I can’t find now) about how repetition of code is less costly than the wrong abstraction. I think that is very true, and for that to work we need to be constantly refactoring and rewriting our code in order to simplify in the right ways instead of settling in a wrong abstraction early in the process. Bloat and complexity are diseases for a program.

                        1. 2

                          I’ve recently started a new job, super tiny company (I’m the second programmer) and it’s been a blast. We are working in the programming education sector. This week I’m investigating moving part of our renderer from typescript to wasm (compiled from rust), if that proved to be too much effort for what is worth I will be working on reducing GC of the current renderer to the minimum (same as last week).

                          1. 2

                            For a project that I am working on in my day job I am running some tests and proofs of concept to see if we can use rust & wasm in the near future. I am extremely excited for the predictability that wasm brings when dealing with performance sensitive stuff on the web.

                            1. 7

                              Have been learning x86_64 asm for a couple of projects I have. I hope I’ll get my e-ink screens this week to start trying to make them refresh fast for a e-ink laptop project I’m working on.

                              I’ve been also building my jekyll blog to release a couple of write-ups later this week.

                              1. 1

                                Which e-ink screens? I haven’t seen anything that was particularly hacker-friendly when I’ve looked in the past.

                                1. 2

                                  I went with these ones: https://www.waveshare.com/wiki/7.5inch_e-Paper_HAT Following the work from @ninjatrappeur

                                  1. 1

                                    Neat - thanks for the link.

                              1. 2

                                Yes! I love them

                                I have:

                                • OpenBSD on an old Lenovo W500
                                • FreeBSD on a Macbook Pro 2015

                                Both have been great, the most problematic thing has been wifi for the macbook pro as that model has a very closed card with no drivers but I just used an external dongle.

                                My desktop has Arch but I’m very tempted to try Void Linux. As far as I know it’s a linux with BSD philosophy, so I’m excited about that.

                                1. 17

                                  Trying to finish a long running project: my e-ink computer.

                                  1. 3

                                    Amazing! Please keep us posted!

                                    Are you documenting the project anywhere else besides sporadic tweets?

                                    1. 4

                                      Yes, I document everything along the way. I do not like to publish about ongoing projects as I tend not to finish them when I do that :).

                                      Both the code and the CAD designs will be open sourced once the project will be finished.

                                      I also plan to write a proper blog post about it. I still need to figure out the proper way to do partial refresh with this screen and it should be more or less done (the wooden case still needs some adjustments).

                                      [Edit] Typos.

                                      1. 1

                                        Same, I would definitely be interested in following the project progress.

                                      2. 2

                                        Nice! What screen are you using, and how are you controlling it? Have you written any blog posts?

                                        1. 2

                                          It seems to be this one, same marks on the bottom corners and the shield looks the same:

                                          https://www.waveshare.com/wiki/7.5inch_e-Paper_HAT

                                        2. 1

                                          Is that a raspi it’s hooked up to? Where did you buy the screen?

                                          There is another guy doing e-ink stuff on the internet recently. You should go search for him. He is researching how to get decent refresh rates too.

                                          Instead of creating a laptop-like enclosure, you should make a monitor-like enclosure. It will look way better and more reusable.

                                          1. 1

                                            So, one of the thigns that annoys me about this world is how we don’t have e-ink displays for lots of purposes that nowadays get done with a run of the mill tablet. You don’t need a tablet for things like a board that shows a restaurant menu, or tracking buses in the area. So why can’t I find reasonably sized E-ink displays for such purpses?

                                            1. 1

                                              Entirely agree with you.

                                              I guess it can be explained by the fact that LCD screens have a better brightness, they are better to catch human eye attention.

                                              The eink technology is bistable on the other hand, making it highly energy efficient for such applications - when no frequent updates are needed.

                                              Energy is cheap nowadays, we don’t really care about energy consumption anymore. But I guess this might change past the peak oil.

                                              I guess these techs will start developing as soon as energy becomes scarce and expensive.