Web developers and MacBooks

I got my first MacBook Pro in 2011. I bought it used because a new one would be impossible to afford at the time. What captivated me about Apple computers was that nice and well thought UI, with that bash terminal thanks to the FreeBSD roots. On top of that: hardware; I haven’t seen a trackpad as good as the ones on Apple laptops.

Being a web developer I would have access to (at the time great) TextMate and Photoshop, two important tools in my development workflow at the time. I tried going full Ubuntu a couple of times before the MacBook, but no access to Photoshop for example made me go back to Windows over and over.

Web developers working on Ruby, JS or related tech, usually go with Apple. It is a de facto standard, and for good reasons.

On the other hand: Apple is extremely expensive and lately Apple software became very buggy. Also had made some bad decissions on hardware.

Fast forward to the present day. My workflow does not require Photoshop nor Sketch. I can get by working on web projects involving some backend language (if it is not Java) and frontend JS just fine. I might need to peek at images for some specific task, but no need to edit or move layers around.

My old MacBook Pro (late 2013) had some water damage and is not very usable. So I had a PC laying around (mostly used for gaming) that can be re used as a powerful workstation! Time to pick a distro.

Picking a Distro

I started looking for a good balance between UI/UX stable enough to make me not miss the beautiful OSX interface. I tried Ubuntu, Lubuntu, pure Debian, Elementary and finally Mint.

I won’t go on great detail of all of them, but I had some experiences that were better than others. Ubuntu’s shortcomings are mostly UI related. Lubuntu’s lack of everything out of the box (not even make was included on the base image) which is kind of the point but it made things to laborious. Debian in it’s pure form was on the same camp.

Elementary gave me great hopes. It was basically a ver nice looking UI, linux on top. Even the shortcuts list the “Super” key with the Command symbol. In practice it was kind of awful, the UI was sluggish. The installation of a wifi dongle (which requires driver compilation) didn’t go well.

Finally I looked into Mint. The codename for this release is Sylvia, and I downloaded the 64b Cinammon edition.

I’ve used KDE, Unity, Xfce, Gnome and MATE over the years. I wanted to give Cinammon a try and I’m glad I did. The speed and solid performance of this desktop environment is superb.

Installing Linux

After the ISO is downloaded it is time to flash a USB key to boot up the destination machine. I’ve seen many methods to do that; but now there’s a solution that is extremely easy: Etcher.

After flashing your USB drive, plug it in into the destination machine and boot from it.

I started a fresh hard drive installation that took my entire hard disk, but it is possible to leave existent systems (ie: Windows) installed alongside linux using different partitions. This process of selecting the destination partitions is now pretty straightforward and easy to understand with the installer.

First time booting Linux Mint

The first thing you note is a classic Windows-like taskbar at the bottom.

This is looking good… now the main tool on a day to day life of a developer is the terminal. You can see a little terminal icon on the lower left corner.

A few thoughts here:

  • Nice animation to pop up the terminal!
  • Solid UI elements
  • Stylish drop shadow!

I was hooked! after some tine playing around I found out I missed one of the most used key shortcuts. Command + Tab. Time to customize.

Bringing Command back

I went with mapping Super(CMD on OSX, Win on Windows) to Ctrl:

Later I modified the cycling of windows shortcut:

And now I was feeling more at home.

Replacing Spectacle (window tiling)

I’ve been doing Desktop tiling on OSX through Spectacle. It is a great app and I got used to the key combos that allow me to push windows left and right or maximize. On my Ergodox I have a dedicated key to deal with Spectacle shortcuts, It emulates the Ctrl + Alt + CMD.

Turns out that is already included as a default in Cinammon. And since Command is Ctrl now, I can reuse the same key and it works. Just needed to assign the key strokes to the actions here:

A good app launcher

As a long time user of Alfred I’m a fan of app launchers. Mint comes with something that is not quite there, but a little googling led me to Kupfer. Is not as pretty but does the job.

Missing homebrew?

Linux Mint uses Ubuntu’s software repositories and APT package manager. So the transition there from Homebrew to APT is not hard at all.

In order to install a package (let’s say GIT) you simply:

sudo apt install git

vs

brew install git

If you want something more AppStore-ish, Mint has a Software Manager app:

Editing code

I’m usually on VIM or VScode (lately due to the perfect integration with JS debugging tools). VIM is *nix native and VSCode runs on pretty much anything, so you’ll find .deb packages to install on your Mint.

Surfing the web

Going to Chrome’s web page you’ll find another .deb to install. Mint comes with Firefox already baked in. I’ve been using both browsers with 0 problems, same performance as usual.

Communication

Slack has a version for linux. It says is beta but works without problems. Skype also has a linux version if you are into that kind of thing.

I also have found some guides to have google hangouts in a very native-ish way.

Screenshots and screencasts

This post is being written on linux Mint, so I faced new requirements. I often point out things annotating with MonoSnap. Looking around I’ve found some interesting options, but the annotation part is still a little cumbersome. The best option so far has been Shutter.

When describing something requires some video my favorite tool on OSX is Recordit. Sadly Recordit has no linux version, but a good alternative is Peek.

Image Preview

Browsing folders with Finder on OSX I use a cool shortcut to see images: Spacebar. It allows you to see mockups, pictures, etc.

I can easily do it using that same key on Mint out of the box. No extra configuration needed.

Terminal

Guake is a very nice terminal replacement. It works like the Quake game terminal (hence the name) and is very practical. Combined with tmux I can jump from normal terminal windows to Guake if I need to.

If the need is a common terminal, the one that comes by default is pretty customizable and reliable.

Final Thoughts

With the mentioned replacements and customizations I can jump from my macbook to my linux without any problems. My Ergodox configuration performs the same actions, improving my productivity.

Is not all perfect on linux world tho. Some things need polishing and sometimes you see some apps are not as stable as we would like, but often we are speaking about open source products that do not have the quality control of commercial versions. For example I tried to take a screenshot of the screenshot tool (Shutter), and I created some sort of dimensional vortex that hung up my UI.

Putting that aside other tools work better on linux, like Docker.

So far the experience has been mostly positive and I’ll keep updating this post to reflect that.