Nine things we learned from the Epic v. Apple trial – The Verge

It’s particularly notable since some people are worried that macOS is inching toward the iOS model, making it a little more difficult to install unauthorized software with each new version. If you were already anxious about the Mac ecosystem closing off entirely, Federighi’s testimony gave you plenty more to worry about.

Source: Nine things we learned from the Epic v. Apple trial – The Verge

Indeed. Federighi says he’s worried about malware on macOS. I think that’s scaremongering. (Now watch me get a virus.) But, for all-around safety, I’ve come to the tenuous conclusion that requiring everything to be signed is acceptable. However, if Apple finally closes the last door, and begins to require that everything you install on a Mac to come through the App Store, we’re going to have a problem. As a Rails developer, I’m very worried about the trend of making macOS more and more like iOS, but I don’t seriously think they can ever do this, completely, and I’ll step through why.

A large part of the reason that Apple sells Macs is for development. Obviously, developers must make up a very small percentage of Mac users, being dwarfed by media creators, but the inescapable reality is that Apple themselves require a Mac to write software for their most-profitable products: the iPhone and iPad. So, even by Apple’s own rules, a generally-open development environment needs to exist to continue to support their mobile ecosystem.

Very closely related to this is that a lot of developers (like me) prefer the platform for developing web apps, which, again, is a type of development that helps Apple’s efforts. I mean, they don’t want people going off and creating Windows-native applications, right? So keeping the operating system of Macs in such a state as to make it productive for web development is — at least tangentially — also in their own best interests. However, this sort of focus almost requires the use of either Homebrew or MacPorts, which I have a hard time believing could be delivered through the App Store.

So, following the logic, and while I understand that it might be really attractive to Apple leadership to lock down macOS as tightly as iOS, I don’t see a path for getting there. At least, not in a way that won’t alienate the entire demographic of developers. Obviously, if they get really serious about it, they could lock the system down for iOS app development, but I think this would leave web development blowing in the breeze. If that were to happen, my only consolation is that Linux is just as nice for doing Rails development as macOS. It’s not as great for just about everything else, but it is a first-class platform to develop web applications on. So, moving back to Linux on the desktop is a viable fallback position for me, and the really great thing about that is that no one can take that away from me.

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.