bitwyze's recent activity

  1. Comment on open_slate: private and powerful 2-in-1 tablet in ~tech

    bitwyze
    Link Parent
    Happy to help! I'm sure a networking stack will be included, and they'll have to hook the stack into their NIC (the wifi adapter in the tablet). They'll probably use an off-the-shelf wifi module...

    Happy to help! I'm sure a networking stack will be included, and they'll have to hook the stack into their NIC (the wifi adapter in the tablet). They'll probably use an off-the-shelf wifi module that has support in the kernel already (so no custom kernel code for that) and simply configure the adapter with something like systemd-networkd configurations. The Arch wiki had a good writeup on how that works. Section 3.4 shows how to set up a wifi adapter.

    They might not include the package manager (Yocto ships with rpm) in their distro, but if you were to build your own OS image and flash the tablet with it, you could add it back in.

    I'm guessing a product like this would be super lean on resources as well right, seeing as you customized it just for the hardware, so should be slightly more performant than a typical x86 tablet/computer equivalent or something like that?

    It kind of depends. Apple silicon chips are technically ARM processors (it was a huge deal when they came out with them - none of the existing software that runs on x86 works on the different architecture without a translation layer), but the performance is great now because Apple has tuned the hardware specifically for their software needs. However, when building a product like this tablet, you generally don't design your own processor, you pick an off-the-shelf product from companies like Qualcomm. Those processors are generally less performant than an Intel or AMD x86 processor. However, the lesser performance there is generally acceptable because it helps your battery life, and you don't really need a top-of-the-line processor on a tablet that's just going to be web browsing.

    You do generally cheap out on stuff like RAM for these embedded products. It helps with margins, but you also just don't need 64GB of RAM for a product like this.

    You're better off comparing the performance of this tablet running stock aarch64 Ubuntu vs a custom Yocto OS - in that case, it's very likely that the Yocto-based OS will be more performant because there's less stuff (bloat) running on the OS.


    ... how different is working embedded systems on a day to day basis compared to traditional hardware? I'm guessing you have more knowledge of low level code such as assembly? Is it something you can transition into, or something you mostly learn through schooling?

    For background, I have a BS in Electrical and Computer Engineering (2016). Much of my curriculum was in embedded systems and we exclusively learned C and Assembly and worked a lot on STM32 dev kits. I did do some perl in my unix administration class.

    In my first job out of college, I worked on building application-level code - Qt-based GUI apps for Windows and Linux. I taught myself OOP on the job. From there, I found myself living in that application level and excelling, so that's really where I've stayed. I learned about Yocto in my last job and dove into it, but 90% of my work was still in the application layer, hooking libraries together to build end-user, customer-facing products. I even worked on some web front-end code, so I guess you could say I'm a full-stack developer for embedded products? I'm in a very similar role in my new job, which I started a year and a half ago. So, to directly answer your question - you absolutely can learn this stuff on the job.

    I don't do much down at the kernel level, I'm just aware of it and review the mods that my co-workers make at that layer.

    Edit: hit post too soon!

    1 vote
  2. Comment on open_slate: private and powerful 2-in-1 tablet in ~tech

    bitwyze
    Link Parent
    Let me try to clarify! When you go and install a Linux operating system (OS) onto your PC (what's known as an "x86 architecture" processor), you can generally just go and download some ISO image...
    • Exemplary

    Let me try to clarify!


    custom Linux firmware images

    When you go and install a Linux operating system (OS) onto your PC (what's known as an "x86 architecture" processor), you can generally just go and download some ISO image from the distribution's website (a distribution, or distro, is just a flavor of Linux. Examples are Ubuntu, Fedora, Arch, etc.), boot into that image off of a USB, and install the OS onto your hard drive. Embedded processors are very different - they use an entirely different "instruction set" (referred to as assembly, byte-code, etc.) than an x86 machine, and therefore the OS is fundamentally not compatible. Some distros provide OS images that are compatible with embedded processors, but not all of them do. And not all embedded processors use the same instruction set, so the more exotic processors usually don't have out-of-the-box support for the standard OS flavors.

    More importantly, for the distros that do provide an embedded flavor ISO, the hardware support isn't guaranteed. In embedded applications, such as this tablet, there's a lot of custom hardware going on, like the keyboard attachment, camera, kill switches, power button, etc. The Linux kernel (you can think of "the kernel" as the hardware-software interface code) does a great job of supporting a wide variety of relatively common and even some niche hardware. But for custom built, in-house hardware, there's no way the Linux kernel could support it because the kernel developers have no visibility into it. So, your engineering team has to write their own kernel drivers for this custom hardware. That's fine, and installing a kernel driver isn't necessarily hard, but if your production process is to flash your final product with some off-the-shelf embedded Linux OS, then install your kernel driver onto the hardware, that's going to be cumbersome and error-prone at-scale.

    Enter the Yocto project. It's a platform that allows you to build your own custom distro - no more trying to find some Linux OS on the internet that supports your processor. You say what processor you're targeting, and they'll build you a barebones OS that will run on that processor. From there, you can expand on that base OS and add exactly the elements you want and skip the stuff you don't (package managers, networking stacks, etc. that come baked in to the standard flavors like Ubuntu). For example, take the keyboard interface for this tablet - the development team will probably write a USB interface for that hardware that can be used to interpret keyboard inputs. They will write that hardware-software interface code, and that gets installed into their bespoke OS through a "recipe" in their Yocto codebase. Build the image and flash it onto the device, et voilĂ  - a custom operating system that supports your hardware. Now, when producing at scale, you take the final version of your operating system, flash it onto the hardware, and it's guaranteed to work straight out of the box.


    docker/podman containers

    Containerization is a methodology to run programs in a virtual environment. If you've heard of virtual machines (VMs), they're similar, but more "lightweight" due to the fact that a container does not have to spin up its own kernel, whereas a VM does. Docker is the de facto standard for containerization software, but Podman is a competitor that's gaining momentum.

    meta-virtualization layer and add the docker recipe to your image

    The way the Yocto project works is by having developers build "layers" and define software packages within these layers. There are lots of open-source layers, such as the meta-virtualization layer. That layer provides the information needed to build the docker executable (and all its dependencies) to run on the custom hardware. You can just grab it from GitHub and hook it into your custom Yocto-based distro, and now you've got containerization in your custom OS.


    Got secrets in your password manager that you want to grab at compile time and inject into your system?

    Say you write a bot to post on Reddit/Discord/etc. You need credentials to log in to the site and make the posts. If you hard-code the credentials (API keys, passwords, etc.) into your code-base, that's a massive security problem. Anybody could go find your code base and grab that password out and log in as your bot. We've got a concept called "secrets management" where you save your "secrets" (API keys, passwords) into some vault and then grab the data out only when needed.

    When one of our customers wants to do a version update on our product, we don't want them to be able to open our operating system image and reverse engineer our IP. Therefore, we encrypt our OS images before handing them out to customers. At my job, I wrote a hook into our Yocto distro that, when we compile our OS, grabs the encryption/decryption keys out of our 1Password vaults, and encrypts the final payload, rather than making that a manual process.


    Provision your system with custom A/B partitioning.

    Mistakes happen when updating software. In the event that a customer were to update the OS on our product and something fails during the update process, we don't want our hardware to become a useless brick that they then have to ship back to us. So, we use what's called an "A/B partitioning scheme", where you hold two copies of the operating system. One of them is the "active" partition (the one you're currently booted into), and the other is the "inactive" partition. When you perform an update, you write the new operating system into the "inactive" partition. Then, at the next boot, you swap the flags and boot into the previously inactive one.

    For example, if I'm currently booted into partition A and I perform an update, I will write the new OS image into partition B. When I reboot, I'll go into the new software in partition B. If it's good, I'll keep booting into partition B. Then, when I want to update again, I'll write the new new OS back into partition A and boot into that one. If the update into partition B was bad, I'll fall back to the known good state in partition A.


    Hope that helps :-) I hand-waved a few concepts, but can go into more detail as needed.

    8 votes
  3. Comment on Boston/Stow, MA with young kids in ~travel

    bitwyze
    Link
    If you're looking to spend some time outdoors, the Assabet River Rail Trail is great if the weather cooperates. There's a trail head in East Hudson with a nice parking lot. The trails haven't been...

    If you're looking to spend some time outdoors, the Assabet River Rail Trail is great if the weather cooperates. There's a trail head in East Hudson with a nice parking lot. The trails haven't been maintained through the winter, but all the snow should be melted by now.

    If you want to go into Boston, I highly recommend not driving (it's absolutely chaos), but instead take the commuter rail. It looks like the closest stop is in South Acton. You're beholden to the train schedule which can be a bit stressful, but the train ride itself isn't too bad and it's way cheaper than getting a ride share or driving in yourself and trying to find parking. There's lots of great stuff to do in the city, but the Boston Aquarium is the first thing that comes to mind!

    1 vote
  4. Comment on open_slate: private and powerful 2-in-1 tablet in ~tech

    bitwyze
    Link Parent
    As @bme said, it's the standard for building custom Linux firmware images. It's a massive open source project that allows you to very finely customize exactly what runs on your hardware, including...

    As @bme said, it's the standard for building custom Linux firmware images. It's a massive open source project that allows you to very finely customize exactly what runs on your hardware, including open- and closed-source software from an upstream source, as well as your own software. It's written in Python and recipes use the bitbake language. It can be extended with both python and bash. As long as you can compile/package it for embedded, you can run it on your hardware.

    You want to run docker/podman containers on your hardware? Pull in the meta-virtualization layer and add the docker recipe to your image.

    Got secrets in your password manager that you want to grab at compile time and inject into your system? You can write some python/bash code to pluck it out and use it (assuming the password manager has a CLI you can use).

    You can build your own bootloader. Provision your system with custom A/B partitioning. Pull in the software you want and drop what you don't. It's hard for me to not nerd out about how cool it is!

    6 votes
  5. Comment on open_slate: private and powerful 2-in-1 tablet in ~tech

    bitwyze
    Link
    I've been burned too many times kick-starting things, but a tablet that supports Yocto Linux is pretty sweet. I've worked on building Yocto-based operating systems for embedded products in my last...

    I've been burned too many times kick-starting things, but a tablet that supports Yocto Linux is pretty sweet. I've worked on building Yocto-based operating systems for embedded products in my last two jobs and that's an incredibly powerful amount of flexibility.

    15 votes
  6. Comment on What are you reading these days? in ~books

    bitwyze
    Link Parent
    It's a Kobo Libra Color. I had my eye on the Libra 2, but didn't pull the trigger before it got discontinued. My main goals were to have buttons for page turning and not Kindle since I've heard...

    It's a Kobo Libra Color. I had my eye on the Libra 2, but didn't pull the trigger before it got discontinued. My main goals were to have buttons for page turning and not Kindle since I've heard Amazon's ecosystem is very locked down (I want to own the ebooks I don't get from the library and I have now started organizing my limited collection of them with a self-hosted Booklore instance).

    I probably won't use the color screen for much - I'm not really a manga consumer.

    2 votes
  7. Comment on What are you reading these days? in ~books

    bitwyze
    Link
    I tried getting into The Way Of Kings, but after ~400 pages in I still wasn't hooked. I'm about a third of the way through The Will of the Many and am enjoying that significantly more. Patiently...

    I tried getting into The Way Of Kings, but after ~400 pages in I still wasn't hooked. I'm about a third of the way through The Will of the Many and am enjoying that significantly more.

    Patiently waiting in my library queue for Operation: Bounce House and for DCC Book 8 to come out.

    My wife got me an e-reader for my birthday last week and I've been loving it. I tend to gravitate toward physically large fiction books and it makes the physical act of reading much easier!

    3 votes
  8. Comment on Here are your choices for a self-hosted ebook server in ~books

    bitwyze
    Link
    I just got a Kobo ereader and have been (unsuccessfully) doing research on how to host an ebook library in my homelab - thank you for posting!

    I just got a Kobo ereader and have been (unsuccessfully) doing research on how to host an ebook library in my homelab - thank you for posting!

    3 votes
  9. Comment on Looking for a particular kind of computer speaker in ~tech

  10. Comment on What are you reading these days? in ~books

    bitwyze
    Link Parent
    I finished up Hail Mary a couple of days ago - it was solid and had me hooked, but the ending I felt was a bit of a letdown compared to the rest of the book. I guess it just wasn't as exciting as...

    I finished up Hail Mary a couple of days ago - it was solid and had me hooked, but the ending I felt was a bit of a letdown compared to the rest of the book. I guess it just wasn't as exciting as I was expecting.

    Yeah, I'm a couple of chapters into The Way of Kings and I'm super in over my head - very confusing, lots of world mechanics right off the top. Hopefully it gets clarified more in the coming chapters.

    1 vote
  11. Comment on Minimal image self-hosting in ~comp

    bitwyze
    Link Parent
    I self-host immich as a replacement for Google photos and absolutely love it. I'd highly recommend it for anyone looking for that style of photo manager.

    I self-host immich as a replacement for Google photos and absolutely love it. I'd highly recommend it for anyone looking for that style of photo manager.

    2 votes
  12. Comment on What are you reading these days? in ~books

    bitwyze
    Link
    I finished the seventh dungeon crawler Carl book a few weeks ago and am waiting for the eighth to come out this spring. In the meantime, I'm about a quarter of the way through Project Hail Mary by...

    I finished the seventh dungeon crawler Carl book a few weeks ago and am waiting for the eighth to come out this spring. In the meantime, I'm about a quarter of the way through Project Hail Mary by Andy Weir. Next up in my queue is The Way of Kings by Brandon Sanderson - it'll be my first Sanderson book.

    I've also got The Will of the Many by James Islington on hold with my library, but there's about 20 people in line ahead of me so it'll be a while before I get that one.

    4 votes
  13. Comment on What private companies are you happy doing business with? in ~talk

    bitwyze
    Link
    My favorite grocery store of all time, Wegmans. It's been in the top of Fortune's "Best 100 Companies to Work For" list a few times. The employees are always super helpful and their quality and...

    My favorite grocery store of all time, Wegmans. It's been in the top of Fortune's "Best 100 Companies to Work For" list a few times. The employees are always super helpful and their quality and range of products are great. They also have superb gluten-free options (and clear labeling!), which is great because my wife is gluten intolerant.

    It's honestly the only place we shop. If we're getting good meat for a special occasion, we'll run to whole foods because their butcher is better. I'd be lying if I said that we didn't take proximity to Wegmans into consideration when we were buying our house... We're 7 minutes away from the closest one.

    12 votes
  14. Comment on What are you reading these days? in ~books

    bitwyze
    Link Parent
    I just finished book 7 of DCC! Fantastic series and I can't wait for book 8 to come out in May. I hear the audiobooks are phenomenal as well.

    I just finished book 7 of DCC! Fantastic series and I can't wait for book 8 to come out in May. I hear the audiobooks are phenomenal as well.

    3 votes
  15. Comment on Winter boot recommendations for women in ~life.style

    bitwyze
    Link Parent
    Crazy to see another black bear here on tildes! Go blue!

    Crazy to see another black bear here on tildes! Go blue!

    1 vote
  16. Comment on What programming/technical projects have you been working on? in ~comp

    bitwyze
    Link Parent
    The proxmox backup server is connected to backblaze through the PBS (beta) s3 interface. You plug in the API key from backblaze into PBS, pick your bucket, and you're done. (Optional but highly...

    The proxmox backup server is connected to backblaze through the PBS (beta) s3 interface. You plug in the API key from backblaze into PBS, pick your bucket, and you're done.

    (Optional but highly recommended - set up backup encryption in proxmox VE). Then, you add the PBS server as a "storage" location in proxmox VE and designate it as a backup storage. In proxmox VE, you can set up automatic backups on a schedule. I've got mine configured for every Sunday morning at 1am. Proxmox VE takes snapshots, encrypts them, and sends them over to PBS. PBS then takes those backups, performs de-duplication, and pushes the diffs to backblaze. That's my mental model, at least. Someone can correct me if I got any details wrong.

    I can post some screenshots later if you'd like.

    I don't know about the power loss. My guess is that it will not automatically resume. I've got my PCE, PBS, and all my networking equipment on a UPS :-)

    1 vote
  17. Comment on What programming/technical projects have you been working on? in ~comp

    bitwyze
    Link
    I finally finished migrating my proxmox instance on an old college laptop to a real server I built a few weeks ago. I've got 6TB of storage now, so my wife and I are fully migrating our Google...

    I finally finished migrating my proxmox instance on an old college laptop to a real server I built a few weeks ago. I've got 6TB of storage now, so my wife and I are fully migrating our Google Photos to Immich, Google Drive to Nextcloud, etc. I repurposed the laptop to be a proxmox backup server and it's doing weekly backups to my Backblaze bucket. We were spending something like $20/month for Google's storage between the two of us, now the storage is something like $0.002/day.

    Just nobody tell her how expensive the server was ;-) (she already knows, it came out of my fun money budget)

    4 votes
  18. Comment on US President Donald Trump calls Democrat video to troops 'seditious behaviour, punishable by death' in ~society

    bitwyze
    Link Parent
    Yes, when I made this post, I used the current (at the time) headline as the title.

    Yes, when I made this post, I used the current (at the time) headline as the title.

    7 votes
  19. Comment on US President Donald Trump calls Democrat video to troops 'seditious behaviour, punishable by death' in ~society

    bitwyze
    Link
    Meta: Shame on BBC for editing the title. It feels like they walked it back to avoid retribution. I understand updating the news as it comes in, but it feels... Icky, like we're rewriting history...

    Meta: Shame on BBC for editing the title. It feels like they walked it back to avoid retribution. I understand updating the news as it comes in, but it feels... Icky, like we're rewriting history to soften the language.

    25 votes