A Web Backend Developers Migration to FreeBSD

I’ve been using different Linux distributions since around 1997. Originally, it was more personal than anything. Although I did learn to setup samba, web servers, databases, etc.. I had made several attempts moving to FreeBSD throughout the years.

Fast forward to today and here I am a Python developer I’ve moved away from Perl scripting at my previous job. I’ve been more and more frustrated with every Linux distributions having so many different ways with so many different locations of where configs and packages are placed. Yes, I’ve jumped, moved, migrated, run from, and run to many different Linux distributions. Timing of my switching is not due to the systemd controversy.

My primary focus is web and backend based applications. So naturally, by default, we have a web server and a database.

Where the web server comes in, I haven’t really tested any of them by setting it up locally on my dev machine. Although I doubt there is much of an issue.

Databases

For relational databases, I’ve used MySQL on Linux, but never professionally. I’ve been using PostgreSQL professionally and much prefer it. You can get a pretty recent version of PostgreSQL through pkgng. Getting the PostgreSQL configuration location is a little different than the majority of Linux locations; however, once you understand the Unix way, it’s less of an issue. One big difference is that the postgresql user created on FreeBSD is actually ‘pgsql’. Where as Linux is usually ‘postgresql’. Performance wise, I haven’t gotten to fully vet it yet.

Recently I decided to take a free MongoDB class for Python developers. Yes, I know; MongoDB, not a real database, eww, etc. I’ve been curious about it for a while, so I decided why not. The class was using MongoDB 3+. As of this writing, I can only get 2.6.7 installed through either pkgng or ports. It is stable; however, if you’re looking for the current version with the latest features, it ain’t happening unless you want to compile from source, which I may or not know exactly what I’m doing with scons and building. Something I’ll have to do more research into to get running.

Virtualization

At my current place of employment, we currently deploy strictly on Debian Stable machines. So while I can do most development locally with the databases and code base, at times I still need a production like system.

I prefer using a VM, specifically qemu, to have a development vm running; however, the removal of the kernel-kqemu has made it difficult. Performance w/o the kernel virtualization makes it painfully slow to run anything. It feels like trying to start something up on a 486!

VirtualBox is a pretty sad excuse, but does work. When I used it on Linux, qemu had much more performance. Hence why I initially went with qemu. Yes, VirtualBox does work; but it doesn’t feel like it’s running at its full potential.

I’m in the process of testing bhyve on another machine. One thing I’ve noticed is that performing a graphical install is impossible at the moment with bhyve. Your Linux distro must have a text installer. Maybe this is something in the works.

Desktop

On to the primary work space. I’ve found what I need for most of my work, I use a combination of Emacs, ssh’ing into my dev box through a terminal, and I have both Firefox and Chromium. Both Firefox and Chromium packages are pretty up to date, so that isn’t an issue.

Unfortunately, my company does use Exchange for email. I’ve been used to using Exquilla, a plugin for Thunderbird, on Linux. Sadly, I am unable to get a copy of that for FreeBSD. I may have to see if I can install a Thunderbird Linux port. Evolution is available; but their GPG integration is hit and miss and won’t always recognize your current working key.

I can be running a pretty solid version of Python(3 or 2) without any problems. Very stable for my uses. I can get a python2 virtualenv working without problems. Pip for Python2 also works as advertised. The tricky part comes to Python3. Most users experiences with Linux and Python3 are exposed to there being individual system packages to Python3’s pip and virtual environments. python3.4 -m venv or even pyvenv-3.4 both work for virtual environments. And once inside a virtualenv, python -m pip <standard command> works the same. I haven’t yet found or truly looked into getting a python3 global package installed with pip. I’m sure there’s a way.

Overall, I’m very pleased with the switch over all. The community is top notch when it comes to assistance. There is some work that needs to be done on my end:

  • I’ll be trying to get bhyve to do what I need
  • Get get a better understanding of build tools on FreeBSD
  • Learn to create bug reports for genuine problems I run into.
bsdfreebsdlinuxdeveloperpython

Android vs iOS