Most of my education and entertainment (aka content) comes from podcasts and YouTube. My Linux journey started from those sources and continues today. While this list is fluid, in February 2020 my podcast and YouTube subscriptions include, in no particular order:
Linux for Everyone – Host, Jason, recently switched to Linux and has the switcher insight into Linux. He is a talented writer and entertainer.
Ask Noah Show – Weekly tech radio show with a Linux slant.
Destination Linux – A podcast from techies that love Linux.
Going Linux – Long time show (380+ episodes), a discussion format, much like my show TalkingDrupal.com. It’s just a good listen.
Big Daddy Linux – A weekly live show and “spotlight” interviews with people in the Linux world.
Distro Tube – In depth videos about all things Linux.
Chris Titus Tech – Another switcher that shares how-to and review videos.
Joe Collins – Also known as EzeeLinux, educated on a broad range of Linux topics. His channel is a great resource learning in plain English.
Luke Smith – An open source, privacy guy. Simple and insightful.
LearnLinuxTV – A well rounded show about a variety of software and hardware topics.
Local Drupal development has moved to docker based environments with solutions like Lando and DDEv. With these tools, it’s fast and easy to spin up a local environment and manage many projects. The days of MAMP and WAMP are (long) gone.
Here’s the problem, Mac OS is the dominant development platform for Drupal developers, and Docker runs terribly on it. Docker interacts differently with macOS than it does with Linux. The source code on the host computer is shared with Docker containers. The multiple layers of communication between Docker and the macOS file system make file-sharing very slow. While Docker’s direct access to the Linux file system makes it very fast. This video, Improving Docker Desktop File Sharing Performance, from DockerCon 18 describes this issue in detail.
The file-sharing performance issue became apparent when working with a colleague to set up a new Drupal 8 website build. I was shocked to see the local build process taking over 8 minutes on my colleague’s computer and less than 30 seconds on my computer.
In an unscientific way, with some help from my friends, I tested the build process on a few Macs and Linux computers with different hardware specs. Each computer had Docker and Lando installed. The website is a Drupal 8 Standard profile with Acquia’s BLT. The test is simple, run the BLT artifact build, blt artifact:build
Below are the results of this test.
ThinkPad T420 (2011)
i5 (2 cores), 8GB RAM, SSD
Linux (Endevour OS)
Custom Build (2020)
Ryzen i7 (8 cores), 32GB, SSD
Linux (Endevour OS)
Macbook Air (2018)
i5 (2 cores), 8GB RAM, SSD
MacBook Pro (2015)
i7 (4 cores), 16GB RAM, SSD
There are some potential solutions. Lando has an undocumented Mac-only feature called “Turbo Mode”. Reviewing the issue thread, there are mixed results with this implementation. Turbo Mode had little impact on my test case shaving off 30 to 60 seconds. A 5% to 10% improvement is good, but when comparing it to performance on Linux, there is no practical improvement. Others have seen better improvements with Turbo Mode. This approach is easy to implement and worth exploring, but Turbo Mode hasn’t made it’s way into Lando as a supported feature. Use with caution.
Some tweaks can be made to your Docker configuration. Increasing the default RAM usage from 2GB to 4GB is a starting point. You can also limit the number of shared folders Docker watches, by default, the entire /Users folder is included. I tested the memory upgrade and limited the shared folders to only the necessary application folders. Similar to the results with Turbo Mode, they were minimal for my test case. You may have more promising results. There are many online resources with recommendations to improve performance, search “Docker Mac performance”.
The beauty of using Lando is simplicity, which starts to diminish with lots of OS based tweaks. I suspect more research and testing could result in better performance on Mac. BUT, using Linux for Drupal development with Docker will get you the best performance by far, with ease. It’s that simple.
Over the past two years, I switched from Mac to Linux. I’ve also been breathing life into old computers with upgrades and Linux. With some projects coming up that need more computing power, I decided to build a desktop. After some research, advice from friends, posting questions on forums, and watching many YouTube videos, I built the courage to get started.
I didn’t have a budget, per se, but didn’t want to spend more than necessary. I decided to go with an eight core AMD CPU instead of Intel. A middle of the road GPU. A motherboard and power supply that will handle growth. All wrapped in a low-end case.
AMD Ryzen 7 2700 CPU
MSI x470 Gaming Plus Motherboard
AMD Radeon RX 580 GPU
Corsair 32GB (2x16GB) 3200MHz DDR4 DRAM
500MB m.2 SATA Drive
ROSEWILL ATX Mid Tower Gaming Computer Case
Rosewill ARC Series 750W Power Supply
A pile of parts, where to begin? I had different advice on where to start. I put the CPU, heat sync, RAM, and m.2 on the motherboard first. I then attached the motherboard to the case. I then installed the GPU and plugged the case cables for the front panel buttons and ports into the motherboard. The last step, connect the power supply.
Due to inexperience, I made some minor mistakes and struggled through a few steps.
DDR4 RAM comes in different sizes, 260 pin SO-DIMM for laptops, and a larger 288 pin DIMM for desktops. I assumed the 32GB SO-DIMM I already had could be used in the new computer. I noticed the issue when unboxing the motherboard. I quickly sold the SO-DIMMS on eBay and purchased the proper RAM
When attaching the motherboard to the case, there was no mention in the instructions of ‘stand-off’ screws, which raise the motherboard off the side of the case. I tightened down the motherboard directly on the case without stand-offs. Recognizing a twisted motherboard is likely not correct, I found the answer with a Google search. Luckily, no damage was done. Stand-offs installed.
After checking and double-checking that everything was plugged in properly, the moment of truth arrived, pushing the button. The lights came on, the fans started spinning, but nothing appeared on the screen. I removed the GPU and plugged the screen into the onboard HDMI port. Again nothing. I feared that I didn’t install the CPU correctly. It turned out I plugged the CPU fan into power for the system fan, as you seen in the photo below.
The next step, install Linux. I then discovered the system did not recognize the m.2 500GB drive. Following recommendations from an MSI forum, I re-seated the m.2. No luck. I then updated the BIOS. As a rookie, I felt nervous about doing this step, but it was easy enough. No luck. I also reset the CMOS. No luck. Then I moved the m.2 to the second m.2 location, and it worked. This could be an issue with the motherboard, but is more likely an issue with my understanding of the configuration. I need to do more research on this.
My new desktop is up and running with Endevour OS. It runs great. With three case fans, power supply fan and CPU fan, I’m surprised at how quiet the computer is. I have a few tasks remaining.
Cable management – cables are hanging everywhere inside the case, I need to organize them better.
M.2 – Figure why the m.2 doesn’t work in the first m.2 slot.
Fans – I need to understand where the fans power should be plugged into. The motherboard has spots for pump fans and system fans. I suspect there is a way to control fans for optimum use.
Wireless and Bluetooth – I need to order a card for wireless and bluetooth.
This was a fun project and great learning experience.
Destination Linux – The Destination Linux Network is a great Linux resource. They have great podcasts and a supportive community.
Carey Holzman – Carey is a professional computer technician. His YouTube channel is a good resource for learning about computer builds and repairs.
My Friends – Tim and Nic have experience building computers and were supportive in answering my many questions.
When Apple released MacOS Majove in 2018, the minimum hardware requirements abandon lots of great hardware. While the hardware is still usable, macOS and Apple software cannot be updated to their current releases. That sucks.
This post outlines the process of moving a Mac Mini (mid-2011) to Linux.
The Mac Mini I’m rescuing is a mid-2011 with i5-2415M, 2GB RAM and 500GB HDD, running macOS High Sierra (version 10.13). It’s dreadfully slow. The goal is to use this machine as a general purpose computer in a classroom for high school students.
In addition to changing the operating system from macOS to Linux, the RAM will be upgraded to 8MB and 550GB hard drive replaced with 128GB SSD.
The overall steps:
Order new hardware
Upgrade RAM and Hard disk drive (HDD)
I use Crucial’s website to help determine the parts I can upgrade. Using the model of the computer you’re working on, Crucial will show you the options for memory, hard drive, and SSD upgrades. I often buy the parts on Amazon.
Upgrading this Mac mini is straight-forward. It was built in the days when ‘upgrade-ability’ was built into the hardware design. Finding a YouTube video to guide you through the steps of taking the Mac Mini apart is very helpful. I used this video from MacSales.
The parts inside the Mac mini fit just right. The first time I did one of these upgrades, the SSD wasn’t aligned properly which prevented the wifi from fitting, and the screw holes did not align. Take your time and don’t force anything.
I’ve been using Elementary OS for a few weeks, and I’m impressed. I appears to be a good distribution choice for someone coming from MAC. While my day-to-day distribution is currently Pop_OS!, I’m going to give Elementary a try with this upgrade.
Installing Linux is the same basic process for any distribution.
Download .iso file from the distribution’s website.
Create a bootable USB Drive with the .iso. There are utilities to do that with; I use Etcher.
Boot the target computer from the USB Drive and follow the prompts.
I expected to have issues with wifi. In my experience, when installing Linux on Macs from this era, wifi does not work out of the box. I was pleasantly surprised the Elementary install screen recognized the wifi card and connected to it, and downloaded the latest software update.. After the installation was complete and the computer rebooted, the wifi card was no longer recognized. I needed to install drivers. As in the past, running the following command from the terminal fixes the issue:
sudo apt-get install firmware-b43-installer
Up and running
This upgrade was simple and straight-forward. It’s a fun project for someone that has no experience with hardware upgrades or Linux.
This is my first experience running any type of benchmark. I used GeekBench on the Mac Mini before and after the upgrade. I don’t have much insight into what these numbers mean; I expect to in the future. But my hands-on benchmark tells me this computer runs as fast as much newer hardware and is totally usable.
Before – MacOS w/2GB RAM and HDD
After – Elementary OS w/8GB RAM and SSD
The performance of this Mac Mini would have improved with only the hardware upgrades (without switching to Linux). But on Linux, the performance is really good.
A more important point is that Apple abandoned this Mac Mini. When Mojave was released in 2018, the minimum hardware requirements are:
MacBook: Early 2015 or newer
MacBook Air: Mid 2012 or newer
MacBook Pro: 2012 or newer, Retina display not needed
Mac Mini: Late 2012 or newer
iMac: Late 2012 or newer
Struck at High-Sierra, this computer would only receive security updates, moving forward. Many software applications cannot be updated either. After switching to Linux, this computer can run the latest operating system and applications available on Linux.
I did this upgrade for my friend, Chris. I look forward to see what experience he has in the classroom with Elementary OS.
(It took me 3x longer to write this post than it did to save that Mac mini)
Create a local folder. <app> will be the name of your application folder and Lando instance.
Position your working directory as your new folder
Initialize Lando and answer a few questions. This utility creates a .lando.yml file in your working directory. When you start Lando in the next step, this file is used to define the Lando configuration.
Choose: current working directory
Enter for webroot: web
Enter for app: <app>
Install Drupal code using composer. Note – Drupal is being install in a Docker container, not on your local computer.
lando composer create-project drupal-composer/drupal-project:8.x-dev blah -n
The above command uses composer to install Drupal and it’s dependencies into a folder called ‘blah’. Now, the files/folders in ‘blah’ will be move up one level into your directory and the ‘blah’ folder will be removed.
mv blah/* .
mv blah/.* .
rm -rf blah
Rebuild Lando containers.
lando rebuild -y
On a success rebuilt on Lando, it’s time to install Drupal 8. Goto the local URL for your Drupal 8 website.
Follow the steps in the Drupal installation Wizard. When the database page appears, use ‘drupal8’ for the database name, username and password. Also, use ‘database’ for the host name (under the Advanced settings.
You should be up and running,
12/10/2019 – As of Drupal 8.8.0, Composer project templates are now available as part of Drupal core. The composer create-project command was updated to reflect this change.
This website, stephencross.com, has mostly been a place for me to play with new technology. Moving forward, I’m going to play somewhere else, and use this location to share information.
This time around I’m using WordPress. I picked a simple theme, and copied a few posts from the previous version of stephencross.com. I haven’t used WordPress in many years. I’m impressed how quickly I was able to put this website together and feel comfortable publishing the first draft.
At the beginning of 2018 I switch to Linux as my ‘daily driver’. I have a desktop and laptop from System76 running Pop_OS!. I’m super happy about that switch.
Linux is everywhere; from Rasperry PIs to supercomputers. It runs nuclear submarines, refrigerators, air traffic control and my Drupal development environment. It can run fantastically on modern hardware and bring life back to the forgotten computer in the closet.
I wondered if it was possible to configure an under $300 laptop for Drupal development. I started by looking at low-end consumer laptops. Best Buy has Intel and AMD laptops, 4-8GBs Ram with an SSD, preinstalled with Windows, on sale in that price range. I asked for recommendations in an online Linux community. I was advised by many not to buy consumer ‘junk’, but instead, look for used enterprise-class laptops on Ebay in the same price range or less. In my research, I found a cult-like following for the Thinkpad T420, a laptop released in 2011 (see video The $110 Lenovo Thinkpad T420, a Laptop with a Legacy). It’s known for its durability, performance and ‘old-school’ keyboard. That seemed like a reasonable place to start.
The price range on eBay for a T420 with an SSD was between $125 – $225. I found one without an HD (or SSD) or power cord. With those two essential parts missing, I was highest bigger at $45 (plus 12.97 shipping). This T420 has as i5-2520M @ 3.200GHz with 8GB Ram. I bought a 240GB SSD for $28.95 and power cord for $10.99. At worse case, this would be a failed $97.91 experiment.
You never know what you’re going to get with used equipment. The Thinkpad was in surprisingly good shape. As promised, everything was in working order with normal wear for a nine-year-old computer. I unboxed it, slid in the SSD and had Manjaro Linux installed in 10 minutes. Manjaro is my first experience with a Linux distribution outside of Pop_OS!.
Infamous Linux Wifi Issue?
I had one hiccup, the wireless card wouldn’t work. It wasn’t a big problem because the T420 has lots of ports, one of which is ethernet (take that Apple). I tried to get wireless working late into the evening, then decided to install the distribution I was familiar with, maybe it was a software issue. I installed POP_OS! and immediately identified the issue from a message, something like “wireless hardware switch is off”. What!!?? Sure enough, there’s a small hardware switch on the side of the T420 to turn off blue tooth and wireless. This problem was undoubtedly not software or hardware related. I decided to leave Pop_OS! running, I will experiment with Manjaro at another time.
The primary software requirements for my Drupal development includes web browsers (Chrome and Firefox), Lando (and required software) and VS Code (IDE). While there are many other tools I use day to day, those are the must-haves. Outside of Docker needing some extra attention, loading this software was straight forward. I’m was up and running in short order.
After a month of using the T420 as a second laptop for Drupal development and general computing tasks, my observations are:
The Thinkpad T420 is a solid computer. It feels and is a quality build.
I like the feel of the classic, “clicky clack” keyboard. It’s easy to use.
I missed a laptop with lots of ports and single purpose buttons
This computer is fast, not just fast enough. While I didn’t push the limit with lots of containers running at the same time I’m editing audio on a Zoom call, it performs well.
This T420 running Linux is at least a solid backup computer, and maybe a daily driver for most developers. It feels good to sit behind a classic laptop, running a current OS, while building a modern website. Maybe it’s like cruising down the road in a 1964 Mustang. Is it a fluke that I was able to put this system together for under $100? No. I’ve bought two more and have done the same thing.
I have forty-six tapes with home videos that cover family events from 1996 to 2005. These tapes have been stored in a box for as many years. I recently took on the project of moving them to a format we can enjoy. My two challenges: how to get them off of the tapes and how to make them accessible to everyone in the family.
Camera to Computer
The camera used to take these videos, a Sony Digital HandyCam DCR TRV 120 , is still operational. I made that discovery after purchasing a power cord from Amazon. Then I needed cabling to connect the camera to my computer. This was hit and miss because it wasn’t clear to me which cables would work. I’m thankful Amazon has a generous return policy. I had three cable attempts fail. I settled on a combination of two cables that allowed me to go from a 1/4 inch camera output to composite and then composite to USB. The composite to USB came with drivers and software to capture video on a Mac.
The capture process requires each tape to be played from the camera and recorded on the Mac. A 45-minute recording takes 45 minutes to capture. I learned the capture process is a bit fragile. After recording eighteen videos (aka eighteen hours of recording), I discovered eleven videos had no audio or the audio was out of sync. I made some changes to my process to ensure the remaining recording would go well.
The video capture software should be the only application running on the Mac during the capture process
Play the audio through the Mac, not the camera, to verify the audio is getting to the camera
Rebooted at the start of each recording session or after every four tapes
Some tapes had sixty minutes of content while others had thirty-five. The best process for me was to let the 60-minute tape run through and edit out the blue screen when it completed. This allowed me to do other things while capturing the video. When the recording was complete, I would open the resulting .mov file in QuickTime and trim out the blank recording from the end.
Serving Home Video
I chose to serve the home videos through Plex. Plex allows you to store, manage, and stream your personal media. I expect I will be using Plex home movies and maybe photos in the future. Plex is an open source application that requires a central server to stream content to Plex clients. A Plex client can be almost any device. For me it will be Apple TV, iPads, iPhones, a Roku, and Fire TVs. Content can be streamed in and out of my home network. With grown-up children, having remote access to the video content is important.
After a bit of research, I learned that a Raspberry Pi could be used as a server, but it may not be powerful enough. Since I had a Pi 3, I decided to give it a try. Comfortable with Linux and the command line, I had a Plex server running on the Pi in 15 minutes using a resource like How to set up a Raspberry Pi Plex server. I connected a USB external drive to the Pi to store the 140GB of home videos.
It worked! The quality of the video is fantastic. When streaming a 30-minute video from a device, it will stop a few times and buffer. A “your server is not powerful enough…” type message will also appear, but it works. (See Update 12-31-18 below)
Plex Server Upgrade – My next project is to upgrade the $35 Raspberry Pi to a more powerful single board computer (SBC). I’m looking at a RockPro64 or NanoPC T4 with 250GB m.2 storage. I think this will deliver my minimal needs and not break the bank. And more importantly, it’s a fun tech project. Stay tuned. (See Update 12-31-18 below)
Video Editing – I discovered that the 19-year-old video labeled as Christmas 1999, was really four events starting in December, 1999 and ending in July, 2000. Now that I have the videos on my computer, I’ll be breaking them into smaller videos. No commitment on when this will be complete.
Moving forward – We all take lots of video with our smartphones. For me, it’s not intentional, long-form video, like my Digital 8 tapes. It’s short bursts of interesting things. Moving forward, I need to figure out how to aggregate that video in a format my kids can enjoy in 25 years.
It turns out, I don’t need to upgrade the Raspberry Pi, I just needed to educate myself on video formats, transcoding, and Plex. As I utilize more features of Plex in the future, I may need more power than a Raspberry Pi 3 provides, but for now, it will work fine to serve my fifty home movies.
The power of Plex is its ability to transcode video for the device viewing the content. When converting my video from tape to digital, I create .mov files. When viewing these videos on Apple TV or iPads, they are transcoded from MPEG to H.264. This is a CPU heavy process.
Plex provides the ability to pre-optimize videos and save them on the server. For my videos, that format is H.264 at 480p resolution. When viewing a pre-optimized video, Plex doesn’t need to transcode the video, just stream it, which is not CPU intensive. This is called Direct Play.
When you have a low powered Plex server, like a Raspberry Pi, the goals is to Direct Play all videos by pre-optimizing them for the devices they are viewed on.
Pre-Optimizing is very easy. You simply choose one or more videos and select the Optimize option. Since this process is CPU intensive, it may take a long time for each video, but it’s only a one-time process.