1. 4

    I order some PC parts to build a simple virtualization “homelab.” I’m going to put it together this evening and play around with virtual machines over the weekend. I’m thinking I’ll install Debian on it as a KVM hypervisor. I think I will also play Resident Evil 0 or do another playthrough of Resident Evil as the character I haven’t played yet.

    1. 14

      Probably not the things people expect, but:

      • Learn what I feel like learning
      • Rest when I feel like resting
      • Go for long walks
      1. 2

        This is extremely important. I am learning to do this too.

      1. 2
        1. I love how every quote in this article is from Beyoncé.

        2. I haven’t used most of the tools on this list but I have used Winget. I don’t think Winget is ready for primetime yet. I would recommend chocolatey instead. When I tried using Winget several weeks ago, the new “upgrade” feature was unaware of any of the packages I had installed through Winget, and therefore it wouldn’t find any packages to upgrade. Furthermore, it would emit an error message for what looks like an out-of-bounds exception whenever I invoked the upgrade subcommand.

        3. I did install quicklook at this list’s recommendation and it is pretty neat.

        1. 28

          Being not shell literate is one of the most surprisingly common things I’ve found in the dev world. The amount of people that will copy/paste commands over and over and over rather than just learning what the command(s) do to eventually compose your own commands as needed is just crazy to me.

          People look at you like a wizard for coming up with command strings like these when the real solution is learning the tools. After that it becomes second nature.

          Now you’re thinking with pipes

          1. 11

            Seriously. And it’s not like all of these people are bad programmers. I once helped an otherwise phenomenally skilled database engineer type sudo apt-get install mysql-server.

            1. 2

              Truth be told, I can never keep straight the various installers on different flavors of Linux. apt, emerge, yum… whenever I switch systems (and I do deal with some old ones) I have to look up which to use. Hopefully I’ve installed something recently on the machine so I can find it in the history.

            2. 4

              Agreed. At a previous company I ran a small shell intro workshop. It was originally for new hires on our graduate programme, but I ended up running it a few times for more seasoned devs too. The company blog where I wrote about it is gone now, but way back machine has my back: http://web.archive.org/web/20200927133906/http://techblog.net-a-porter.com/2013/02/shell-quickstart/#more-754

              1. 1

                I’m going to share this article with some of my friends who haven’t really grok’d shell programming yet, the examples still work and definitely force one to think with pipes. Thank you for sharing!

                1. 1

                  It’s kind of you to say so! FWIW I reposted it on my personal blog, as I found the Internet Archive version to load very slowly: https://www.brautaset.org/articles/2020/shell-quickstart.html

              2. 2

                Yes!! It’s super common, even at my top 10 CS school, for CS undergrads to not be shell literate.

                1. 4

                  the absolute state of CS education… hardly anyone even uses ssh nowadays

                  1. 4

                    I mean, they’re largely not trying to teach vocational skills other than by accident; it’s not like SSH is particularly relevant to that ‘science’ part of ‘computer science’.

                    (This is one of my top peeves with CS-as-a-programming-degree; IMO it would be better taught in a vocational school)

                    1. 4

                      I went to a college in Ontario, Canada, which is more of a vocational/practical skills education as compared to a University which is much more academic. I studied Computer Engineering Technology. Very similar to Computer Science degrees offered at Universities. We had two classes on BASH specifically, as well as three classes on C. The first class, an introduction to the language, was taught inside VisualStudio. The second two were all taught using GCC and GDB.

                      I have worked alongside CS grads from universities here and they are perplexed by not only the shell, but not using Windows as a main driver for every day development (I work mostly in web). Its interesting to see so many people head to university because of weird negative associations to college there are out there - despite more practical knowledge being taught at colleges.

                      1. 2

                        I can assure you the decline in shell usage is not due to making good on the name of the degree. If anything curricula are moving in a vocational direction.

                        FWIW even academic CS research is mostly engineering, not science, and for that SSH is quite relevant.

                      2. 3

                        Expecting a computer scientist to know intracracies of the Unix shell is like expecting a physicist to wrench on an engine.

                        1. 1

                          But almost all computer scientists are proficient with the Unix shell.

                          1. 3

                            Citation most definitely needed…

                            1. 1

                              You’ll have to take my word for it as someone who claims to be a computer science grad student on the Internet.

                              1. 1

                                On the internet, no-one knows you’re a dog … or a computer scientist.

                                1. 1

                                  yup

                      3. 2

                        Yep. It was incredibly shocking to me when I conducted a workshop on reverse engineering on campus, and the attendees weren’t able to navigate the filesystem to run gdb.

                        1. 1

                          Curious as to why their systems were configured such that gdb was not in their path and they could just invoke it without having to navigate the file system.

                          1. 2

                            I should’ve been clearer—I meant navigate the filesystem to run gdb against a program. In thid case, the program was in the downloads folder.

                        2. 1

                          I think there’s a difference between CS education and IT education.

                          Some universities and private schools focus mainly on using those tools rather than the underlying concepts.

                          For example, take cryptography, some education will focus on the math, and some other on the use case (like where signing is used how to practically use it etc…).

                      1. 2

                        Record a video on Transport Protocols (TCP vs UDP) for my youtube channel https://youtube.com/theroadmap and continue working on the redesign of https://roadmap.sh

                        1. 1

                          I love the presentation for your DevOps roadmap. Do you have any plans to add a roadmap for people who want to get into systems programming?

                        1. 4

                          Taking a deep dive into a dozen or so job applications to find the ones worth a phone interview. This is the first time I’ve been on the resume receiving side, rather than the resume sending side, so it’s been interesting to look through them.

                          Also, a couple unsolicited PSAs I’ve learned from these resumes: 1. Acronyms are not always your friend, claiming that you wrote a POS application leads to ambiguity that might not benefit you. 2. For the love of all that’s holy, have someone else proofread your resume. 33% (out of a sample size of 12, admittedly, but still) of the resumes I received have a typo or grammatical error (not including the one that put their phone number as 555-555-5555!).

                          1. 3

                            (not including the one that put their phone number as 555-555-5555!).

                            Maybe you’ve finally met the person with this fabled phone number.

                            1. 1

                              Tried calling them, didn’t work :D

                          1. 1

                            Work:

                            For fun:

                            • Continuing to study “Computer Networking: A Top Down Approach”
                            • Enabling paging for the entry code for the xv6 Rust port my friend and I seem to start and never finish. I’m finally doubling down on this. In fact, I’ve gone so far as to time block this out on my calendar… no excuses 😃
                            • Enjoying my annual re-read of The Hobbit.
                            1. 2

                              My site is at https://goel.io/. My friends love how simple it is. But I just can’t fathom taking all the (minimal) styling away.

                              Here’s my principles for the design and architecture: https://goel.io/blog-2020

                              1. 1

                                I think your site looks great, too! I love simple sites that still present the text in a beautiful way. It’s also a cool effect how your twitter handle collapses into the Twitter icon when the view-width becomes too small.

                                1. 1

                                  Thanks, I wanted it to not do that but I couldn’t make the width work without a hamburger menu which I very much dislike.

                                2. 1

                                  I would maybe decrease the font at the index, so more posts are visible without needing to scroll.

                                  1. 1

                                    That’s fair.

                                1. 8

                                  This article does a good job in pointing out equivalent Rust crates for feature parity with parts of Go’s standard library. My worry for Rust articles like this are that they might quickly become obsolete, whereas Go articles that demonstrate techniques using the standard library may not.

                                  Sometimes it feels like I blink and there’s a new error handling crate that everyone just has to use. As a result, the previously reigning error crate du jour becomes unmaintained. It makes for a frustrating experience when searching for what to use, as many of the results still show the abandoned ones and all of their praise. Maybe the trick is just to restrict search results to the past year or something.

                                  1. 9

                                    https://lib.rs tracks falling popularity of crates, e.g. https://lib.rs/crates/failure/rev and this analysis is included in search ranking.

                                    1. 1

                                      That’s nice, didn’t know that.

                                    2. 2

                                      Would be very helpful to add some kind of “deprecated” flag to crates.io. So search results can exclude them. Wouldn’t help with articles, but searching for a crate on the registry.

                                      But I’ve got to say: I’m using error crates from 2015 and they’re working fine. Sure it’s not nice to start with something deprecated, but it’s not like they’ll just stop working. At least they didn’t for me. (And with said search feature on crates.io you could figure out the right choice.)

                                    1. 1

                                      I’d be interested to see how git fits into this workflow. If code lives on a remote VPS, what’s the most efficient process of committing your changes and pushing a new branch.

                                      1. 2
                                        1. Install git on the remote machine
                                        2. Set up your git config on the remote machine
                                        3. Perform git commands on the remote machine while you work in VS Code

                                        When you’re using VS Code’s remote extension, any terminals you open are ssh sessions on the remote machine, so step 3 can still be done without leaving your local VS Code window.

                                        1. 1

                                          You forgot step 2.5:

                                          Compromise your keys or other authentication data by copying them to an unencrypted remote VM.

                                          Now your hosting provider can push to the branches that autodeploy to production.

                                          1. 3

                                            Alternatively:

                                            1. Don’t put any private keys on the VM
                                            2. Use the VM as a git remote
                                            3. When you’re ready to push to branches, pull the code from the remote onto your better-protected machine and push from there…
                                            1. 1

                                              I use a hardware key for authentication that it is connected to my local machine. Thanks to ssh -A I can use that key on my remote machines. It is amazing ;)

                                            2. 1

                                              Yes, that’s exactly how I do it.

                                          1. 2

                                            People still use Launchpad? I thought most projects had migrated off of it at this point, and it stuck around mostly for PPAs.

                                            1. 1

                                              Yes. Ubuntu is a non-trivial project that uses Launchpad; though I suspect that’s not any real surprise to people that already know that the company behind Ubuntu is the company behind Launchpad.

                                            1. 2

                                              It might be a fine book, but wow $60 feels an eye-watering amount of money to pay for a tech book, especially one about what is likely the most well-covered programming language already.

                                              1. 3

                                                And yet if you paid the going rates for the time spent it reading and understanding it, you would be looking at 1k or more.

                                                1. 2

                                                  $60 seems pretty normal for most tech books.

                                                  1. 1

                                                    there is a 30% discount coupon there, if that helps

                                                  1. 2

                                                    At work I’m implementing a no_std Rust crate full of types that are used to interact with AMD SEV. My goal is to provide all of the types with constructors to uphold any invariants required by the SEV API spec.

                                                    At home I’m just starting to research affordable data storage solutions like DigitalOcean Spaces or Linode Object Storage. Ultimately I’d like to have a place where I can upload my photos and optionally share them kind of like Google Photos. Off the top of my head I’m thinking I’d use a cheap cloud VM to host something that knows how to talk the data buckets but I’ve never done anything like this before. In addition to hosting and sharing photos, I’d also like to store backups to it as well.

                                                    If anyone has any suggestions for setting something like this up, please share :-)

                                                    1. 1

                                                      I use AWS Glacier but people I know say really good things about Backblaze C2 as well.

                                                    1. 1

                                                      Work: Dusting off my rusty Ruby neurons and really enjoying it. I don’t see Python not being my programming language of choice anytime soon but Ruby’s blocks are just so expressive and fun to write, and it has an honest to god case statement! :)

                                                      Omission of a case statement is the ONE design choice in Python I Just Don’t Get. Sure, if/then/else trailing off into the middle distance do the job but a case and a slew of “when”s is SO much more readable IMO.

                                                      Personal:

                                                      Probably won’t have time for much personal coding this week. Been running Ubuntu 20.04 Focal Fossa on Yamato - my battleship laptop, and really enjoying it. For a pre-release it’s surprisingly solid, but I’m having fun reporting the bugs I find and engaging the community to help out in what small ways I can anyway.

                                                      Also seeing some really anomalous seeming numbers running bench.sh under Ubuntu and Windows/WSL. The WSL numbers are CONSIDERABLY better and I think I must be not where I think I am in the filesystem or something. Gonna dig into that more if I have time.

                                                      1. 3

                                                        Probably won’t have time for much personal coding this week. Been running Ubuntu 20.04 Focal Fossa on Yamato - my battleship laptop, and really enjoying it. For a pre-release it’s surprisingly solid, but I’m having fun reporting the bugs I find and engaging the community to help out in what small ways I can anyway.

                                                        This is a great way to contribute to a project! I love seeing people testing software and reporting bugs on it. Given how close Focal is to releasing, it’s good to see that you’re finding it to be a solid environment so far.

                                                        1. 1

                                                          Thanks a bunch! Eventually I want to write some Gtk programs in Python but for now this will have to do :)

                                                          I’m super excited about the progress by leaps and bounds the Gnome project is making. It’s incredibly performant considering it’s running a bunch of web tech like Javascript and CSS under the hood!

                                                      1. 2

                                                        Is this directly related to SEV which came from video consoles?

                                                        https://www.tomshardware.com/uk/news/amd-sev-xbox-cryptographic-isolation,40274.html

                                                        1. 1

                                                          Yes. SME encrypts the system’s entire address space. SEV encrypts virtual machines running on the system. With SEV, not even the host has any visibility into the address space of its SEV-protected guests. This is enforced at the hardware level by a chip that controls accesses to system memory called the Platform Secure Processor.

                                                          There are also newer extensions to SEV. There’s SEV-ES which is SEV but where the contents of the virtual machine registers are encrypted. This way a host can’t glean information from the virtual CPU’s context which is exposed when the virtual machine needs to call out to the host.

                                                          AMD recently published a white paper detailing another extension called SEV-SNP which seeks to guarantee memory integrity for the protected virtual machines. Basically, SEV-SNP seeks to ensure that the contents of a memory page written by the virtual machine are precisely what it wrote there before, suggesting that it hasn’t been tampered with. The Platform Secure Processor (the chip that controls these accesses to protected memory) basically maintains a map of pages and keeps notes on which ones the guest has claimed. It only lets the guest manipulate those memory pages.

                                                          There’s way more information (and more accurately described) on the AMD Secure Encrypted Virtualization page.

                                                          1. 1

                                                            Amazing how some anti-piracy work is leading to better system security for us all. It usually doesn’t work out that way.

                                                        1. 2

                                                          I finished Dune last weekend. After giving up on The Lord of the Rings 15+ years ago, I will attempt reading it again. This weekend, I will start reading Fellowship and hopefully this time I will get into the literary style of Tolkien.

                                                          1. 1

                                                            From my memory of The Fellowship of the Ring, the first 2 or 3 chapters can be a slog. It picks up after that.

                                                            1. 2

                                                              I love the Lord of the Rings… but it is a glacial book. Maybe that’s just because the last time I read it I was trying to get back into the habit of reading and my attention span was shot, though… do read it, though :-)

                                                          1. 1

                                                            This is exactly the kind of thing I’ve been looking to do. I want to turn my laptop into a thin client and have a much more powerful machine to remote into to do my development work on.

                                                            I played around with the idea of having that remote computer be a well-equipped VM in the cloud, but apparently GCP limits vCPU count to 8 in us-west, so it’s looking like I’ll end up upgrading my desktop instead. That’s fine because I’ve been staring wistfully at a parts list for the past three months or so.

                                                            1. 3

                                                              Writing a Rust build script that compiles a library, then creates an additional library on the fly with a single function that returns the original compiled library in byte form.

                                                              1. 1

                                                                That sounds fun and cool! What kinds of applications do you envision it will be used for?

                                                                1. 1

                                                                  I’m trying to come up with a more efficient build system for WebAssembly binaries that are executed in an interpreter. The way I have been handling it is via makefiles, but I feel like compiling the project to wasm and injecting that binary as a static function in a library will significantly increase the usability as I’ll only need to import the crate! I’ve got an MVP working now :-) https://github.com/quilt/umbrella/tree/master/contracts/wallet

                                                              1. 3

                                                                After abandoning the project for months I’m going to try to get back to working on the field structure layout randomization feature for the Clang compiler. This was a capstone project between myself and a few others back at university but we’ve all since graduated and gone our own separate ways after posting the RFC.

                                                                I started refactoring it and adding tests a few months later then stopped again. I feel a bit bad for being so absent from the project.

                                                                Last night I was struck with the motivation to see this all the way through, so I wrote down all the “to do” items I could remember and this weekend I’ll be reacquainting myself with code that my past self left me. I’m hoping to cross off at least a couple of those items on the to do list :-)

                                                                1. 2

                                                                  Well, yes.

                                                                  While I am a fan of mailing lists, I think that is just a substitute “middle man” in social media’s absence as far as family and friends go. You’re still just offloading parts of your life into document rather than getting together and catching up–an interaction which would be more meaningful. Having a conversation with someone about “what’s new” is better than saying “oh, you didn’t read my June issue?” Not to mention I think it’d be kind of awkward to ask my family to subscribe to a personal update newsletter. I’d put money on their collective reaction being: “wat”

                                                                  1. 2

                                                                    I agree, a mailing list isn’t as personal as other means of communication, but it is an easy way of communicating with a large group of people. It would be hard to make an update both personal and addressed to a whole group of friends/family.

                                                                    I do think it is a bit strange too, but I know several people (friends and family) that do this. The emails are enjoyable to read and usually contain about half a dozen pictures. It kind of reminds me of getting Christmas cards every year with letters and pictures in them. That wasn’t weird to me and was also pleasant to read. I’m not going to be setting up a personal newsletter for myself right now (newsletter on my blog is mostly technical stuff), mostly because I don’t have anything to say or any significant updates to share with friends and family.