i installed freebsd 13.1 and lived to tell the tale

Firstly, know I’m not a FreeBSD fan, even though I have MacBooks with an operating system that can trace its lineage back to the original Berkeley BSD. Even going back to the time when it was essentially BSD vs AT&T Unix, I tended to eschew BSD. So why install FreeBSD 13.1? Curiosity.

Before we get into this, I haven’t changed my opinion of BSD. My installation experience of FreeBSD 13.1 has only rekindled my general dislike of the operating system.

I installed FreeBSD 13.1 into a Parallel’s virtual machine (Parallels Version 17.1.4 (51567)). My first attempt failed with a “missing /boot/lua/loader.lua” file. I went looking for a reason for this, and found a solution in a forum question ( https://forums.freebsd.org/threads/freebsd-12-x-13-x-14-x-installation-issue-on-parallels-16.79271/ ). There are some choice comments about why there is this failure mode, and why it’s been in FreeBSD since version 11. I applied the solution in the forum post to my second installation attempt:

Which then led to success:

After that initial boot screen it was uneventful, as I picked various subsystems to install (especially ports), picked my keyboard and timezone and what services to start on boot, that kind of thing. When it was done it booted back into a console window.

From there I attempted to install a desktop environment. That turned into a real dumpster fire. The directions are long, at times unfathomable, and takes too much time to get anything done. I gave up after my first attempt failed.

I deleted that failure and reinstalled a new fresh copy, choosing not to install a desktop environment the next time. Right now it sits idle, and I suppose if I have a need for a BSD other than macOS I can fire it up and do… whatever.

FreeBSD makes Arch look brilliant. I am definitely not the target demographic for FreeBSD.

a tale told by an idiot

Windows10Version14393.67I have been wrestling recently with a series of self-imposed requirements that sprang from two personal needs; the first being the development of “sane” native tools and libraries for manipulating Raspberry Pi 3 built-in peripherals (GPIO being at the top of my list), and the second being a way to find a common language and framework that would work across multiple operating systems, those operating systems being Arch Linux ARM, Mac OS X, and Windows 10. And a web framework would be really nice to have because I’m really getting tired of having to use ssh all the time.

So I did a bit of research and decided to focus on Python, specifically version 3.5 and later. That version of Python is available across all those platforms, and appears to work equally well across them. That means that trivial and not-so-trivial Python applications that aren’t platform specific work equally well across all three. That means I can do a good deal of work on either my Samsung running Windows 10 or my MBP, which includes debugging. I would then transfer the code over to the RPi3 and do final integration there.

The problem I ran into was the choice of a Python web framework. For reasons I won’t go into here I decided to install and learn how to use Django. I’ve successfully followed the getting started tutorials on both the MBP and the Samsung. On the MBP I’ve used Homebrew  to install a number of up-to-date software tools, specifically Python 3.5, while on Windows I downloaded and installed Python 3.5 from the Python site. The only comments I have to make about installing Python on Windows 10 are these:

  • Install Python at the root of the C: drive (i.e. C:\Python3.5, for example). This makes the path to Python a lot shorter than where the default is, somewhere in your private user area.
  • Assuming you installed Python in C:\Python3.5 (for example) you should also add the Python Scripts folder to the path, i.e. C:\Python3.5\Scripts. This will put pip and django-admin in the path and make the instructions for using both the same as under Linux and Mac OS X. I don’t know why the tutorial instructions didn’t point this out.

As I said, running the Django utilities works just fine on Mac OS X and Windows 10. Getting Django installed on Arch Linux ARM doesn’t work, either as a pacman package or via pip. There is no package for ARM Arch, and even though the pip install seems to work, trying to create a default site with django-admin on Arch ARM fails, with django-admin complaining there is no django.core. This makes the second major framework failure I’ve run into under Arch ARM, the first being the failure of Express under Node.js. The Express failure was particularly annoying, as it worked about a year ago when I was investigating Express and Node.js on the Raspberry Pi 2. If anything, these failures have proven that the Raspberry Pi 3, at least under Arch Linux ARM, is not the full first-class client that regular installations are.

I suppose I could be a hero (to someone) if I could find and fix the problems I’ve run into on the Raspberry Pi 3, but I don’t feel particularly heroic. I’e gone down multiple paths now with trying to build a full stack of software with a web front end on the RPi 3, and it’s not gone well. One reason for doing the same types of activities on a “regular” computer is to see if the tutorials are repeatable, and they are. It’s trying to move over to the RPi 3 with Arch Linux where it breaks down.

Perhaps it’s time to realize that if I want a better development experience that I need to spend more money and buy a more commercial system than the Raspberry.

As for where the title came from, here it is:

Life’s but a walking shadow, a poor player
That struts and frets his hour upon the stage
And then is heard no more: it is a tale
Told by an idiot, full of sound and fury,
Signifying nothing.
Macbeth, Act 5, Scene 5

The quote about life could just as easily apply to software development.