Linux in 2020: 27.8 million lines of code in the kernel, 1.3 million in systemd • The Register

Another point of interest is that systemd, a replacement for init that is the first process to run when Linux starts, is now approaching 1.3 million lines of code thanks to nearly 43,000 commits in 2019.

“Everybody who has ever worked at that level in the operating system has agreed that systemd is the proper solution. It solves a problem that people have. Distros have adopted it because it solves a problem for them. If you don’t want to use it, you don’t have to use it. There’s other init replacements out there. Android doesn’t use it because they use other things,” he (Greg Kroah-Hartman) said.

Source: Linux in 2020: 27.8 million lines of code in the kernel, 1.3 million in systemd • The Register

A Linux distribution is the kernel, the userspace programs, a service management system, and a package manager. I’m still not clear on everything systemd does, and that bothers me. As it continues to grow, it’s a learning process, and I’m not down in the weeds with Linux every day like I used to be. But I appreciate what they’re doing. It always bothered me that init was just a cobbled together bunch of scripts. This feels like the proper, modern approach.

Christmas Day, 2019

Here’s how my Christmas Day went, after a lovely morning of opening presents with the family.

I just upgraded to Comcast — I mean, Xfiniti — gigabit internet service, and got rid of all TV service. (I’m going to try streaming everything now, and I’m sure that will be fodder for another post in the future.) Unfortunately, I discovered that my nifty, little, fanless, single-board-computer router, running Linux, can’t seem to push any more than about 300 mbps on its ethernet ports, no matter what I try. So I fell back to using my Linksys Velop mesh wifi as my router, and then continued to try to figure out if I could get gigabit speeds out of my little computer’s NIC’s.

I had already looked at several things in Linux. All the basics checked out. Yes, before I even got the service activated, I upgraded to a DOCSIS 3.1-compliant cable modem. Yes, the kernel thinks it should be running at 1000 mpbs. Yes, it’s set to full-duplex. So I started to get serious, and I…

  • turned off everything.
  • cleared the kernel iptables rules
  • turned off the firewall completely
  • upgraded the NIC driver using a supplemental driver in the Ubuntu repos
  • upgraded Ubuntu from LTS to current

After all of this produced no change, I noticed that the board had a firmware update available. In for a penny, right? So I…

  • failed at using their utility to create a bootable firmware update USB stick on my Mac
  • did it on my work PC
  • used it to boot the SBC, but found I couldn’t get a console
  • tried different baud rates and serial programs, to no avail
  • tried and failed to create a new bootable image, using a different program on my Mac
  • tried to create new bootable image on Windows using the different program
  • noticed that my work laptop automatically deleted the firmware image as soon as I copied it over
  • tried to create the new bootable image on Windows under Parallels
  • hassled with which “machine” has control over the USB stick
  • found I couldn’t copy-and-paste between host and guest
  • upgraded all of Parallels, and Parallels Toolbox, on both guess and host
  • finally created new bootable image, which also did not boot
  • finally tried a different USB stick, which worked the first time

I finally, finally, finally got the router’s firmware updated, and, of course, there is literally no difference in the throughput. I’ll leave it to the reader to take a guess at how long this took me.

I also discovered tuned, which I was really hopeful for, but it also does not do anything for me.

So, like a sucker, I’ve now ordered the upgraded version of this board, which should fit in the same case I already have. I’m holding my breath…

I Miss My Old Graphics

Someone on Twitter mentioned BeOS, and that got me looking over my old pictures from the previous incarnations of my blog. This was how the site looked when I hand-coded it. I miss it.

Old Graphics (RedHat & Ximian Desktop)

I had created the graphics all by hand in a graphic editing program that came with FrontPage 97, called Microsoft Image Composer. (I still can’t drive Photoshop.)

This is what it looked like before I did a big upgrade. I still like the look of the title with the color gradient.

Old Old Graphics (BeOS)

I still use the 4-corner gradient I created with that program as my desktop background on every computer I use.

Ruby on Rails on Windows is not just possible, it’s fabulous using WSL2 and VS Code – Scott Hanselman

I’ve been trying on and off to enjoy Ruby on Rails development on Windows for many years. I was doing Ruby on Windows as long as 13 years ago. There’s been many valiant efforts to make Rails on Windows a good experience. However, given that Windows 10 can run Linux with WSL (Windows Subsystem for Linux) and now Windows runs Linux at near-native speeds with an actual shipping Linux Kernel using WSL2, Ruby on Rails folks using Windows should do their work in WSL2.

Source: Ruby on Rails on Windows is not just possible, it’s fabulous using WSL2 and VS Code – Scott Hanselman

I’ve been doing Rails for about 13 years as well, and I’ve been following Scott for probably about that long. Heck, being a tech evangelist for Microsoft, it was probably him that alerted me to the fact that WSL was being put into Windows to begin with. And using it for Ruby on Rails development is precisely why I wanted it. So when it was first released in Windows 10 Insiders Edition, I hastily upgraded my gaming rig to try it out.

There were literal, show-stopping bugs that prevented doing the “normal”  kind of Rails development, where you install a Ruby version manager, then install the bundle gem, then install Rails, then bootstrap your site.

I keep wanting to say “emerge” when I mean “install.” I guess using Gentoo broke my brain, but, really, that’s what’s going on. When you’re doing this sort of thing, you’re installing software that’s dependent on your environment, which is exactly why portage was created.

I filed some bugs, and watched and waited. A couple of them were fixed pretty quickly. But then other problems became apparent, and they weren’t going to be fixed any time soon, so I gave up.

Then they announced the release of a big upgrade to the system. So I tried again. And, again, I found problems that prevented me from being able to develop with Rails. So I gave up, and stopped watching this space.

Now Microsoft has been evangelizing a total rewrite of WSL, and how they’ve made it “native,” and how this fixes compatibility problems and speed issues. But all they’ve done is make the tool a total virtualization of the environment, when the whole point of WSL was that it was not a virtualized environment!

WSL was supposed to bring “open source” development (like Rails, and Node) out of the dark ages on Windows, and make it a first-class workflow on the platform. This was easy to believe, because Microsoft was really lagging in these popular development scenarios, and it could be expected that they were motivated to create a bridge to get back on equal footing with Mac as the platform of choice for working with modern web technologies.

However, the situation on Windows is now worse than ever. It used to be such a hassle to do this kind of work on Windows that you’d install VirtualBox, create a VM, map your VM’s drive onto a Windows mount point, and run your development tools on the files in the mounted drive. Now, WSL2 is basically doing that for you, and not even giving you the courtesy of a GUI to manage the virtualization settings. I guess the positive way of looking it is that they’ve created a VirtualBox-type Linux VM with all the file-system mapping pre-configured.

It’s telling that the workflow that Scott is proposing is to use Visual Studio Code with a plugin for remote development.

Whatever. It’s a hard pass for me, dawg. If I needed this, I’d just install VirtualBox, and be explicit about what I’m doing.

As a side note, I’ve been using RubyInstaller for years now, on my work laptop, and it “just works.” I mean, sure, you’re limited to a specific version of Ruby, but I just make that my base, and “emerge” that one on my Mac and the Linux host server, and everything lines up. So my need for any sort of virtualized Linux environment on Windows has already been satisfied.