Review of a Year with a Linux Laptop

There are many posts across the web about converting to using Linux, either from Windows or a Mac.  This post is similar but really more of a review of what is was like for me to use a Linux laptop primarily after being a long time Mac user.

Most people who would come across the blog and know me already know that my primary work is writing software or managing and estimating such projects or both.  Much of my work has been in the Apple ecosystem over the last 10 years or so but not all.  At times, I work on Windows only projects, backend projects usually deployed on Linux, and the occasional Android project.  Even on projects where I am hired for iOS work, I often end up heavily involved on backend systems running on another platform.

A year ago I was looking to purchase a new laptop.  My MacBook Pro at that time was over 3 year old and, even though it was still fast enough, was beginning to become a constraint from a storage and memory perspective.  The laptop was configured with the max 16gb RAM at the time I purchased it but, given the variety of projects that I work on, I often need to run one or even multiple VMs simultaneously and this becomes an issue when trying to do anything else at the same time.  With 1tb of SSD storage, the space required for many VMs was a large issue and I hated having to carry around an external drive for that purpose.

Like many others, I was disappointed when Apple did not release a new laptop configuration with 32gb RAM as an option.  While there was the option to now have 2tb of storage, the RAM limitation was the larger issue for my work.  The TouchBar feature of the new high end MacBook Pro laptops was not something that I was the least bit interested in either but that has been covered at length by many others.

Because I work on iOS projects, replacing my MacBook Pro completely with another machine was not an option.  I decided that I would look for another laptop, which would be my primary laptop for everything except iOS work, an keep the old laptop which was more than sufficient for Apple platform development work.

The New Laptop

I purchased the Serval WS from System76.  I probably over configured it but I typically buy the highest end laptop that is offered in the hopes that I can keep it longer.  I hate moving to a new laptop so the longer I can use one the better.

The new laptop was configured with 64gb RAM and 3 1tb SSDs.  It also came with a significantly more powerful GPU than the old MacBook Pro but that was not a deciding factor for me in the purchase.  The laptop came with Ubuntu 16.04 LTS installed (long term support).

I chose a Linux laptop (or GNU/Linux if you prefer) because the environment is closer to the Mac than Windows and much of my work is deployed on Linux.  The availability of many open source software alternatives to what I had been using was also attractive.

After using the laptop for a year, I would admin that 32gb RAM was more than enough for my usage but it was nice to have that extra buffer for VMs.  

The New Software

I use VMWare Fusion on the Mac and purchased a VMWare Workstation Pro license for the Linux laptop.  The Workstation UI is not as nice in my opinion when compared to the Fusion UI but I was able to move VMs back and forth between the laptops without an issue.  I use virtual machines quite a bit and my clients appreciate the fact that I can hand them a copy of my complete development environment after the project is over.

Sublime Text is the programmer’s editor that I use and it works with the same license key on Mac, Windows, and Linux so there was no issue at all converting.  Other tools that fall into the same category are Firefox, Chrome, the Slack desktop client, and all of the Jetbrains IDEs that I use for various development platforms.  Hopper disassembler is also available on both Mac and Linux.  I occasionally use that tool in debugging scenarios so it is handy to have available.

Libre Office is the office suite that I used when I went to using Linux full-time. The suite is fine for my use however I am not a heavy user of the advanced features of office suites.  Consulting work means that I have to share and exchange files with people from other companies quite a bit.  I never had any issue converting to or from other file formats but, like I stated previously, I am not an advancer user of office suite functionality.  I do prefer Libre Office over Pages and Numbers on the Mac but I typically use MS Office for the Mac and I prefer that over Libre Office.  This might be because of my long term use of Office on both Windows and Mac though.  Keynote is preferable to me over Libre Office and Powerpoint but I think that is personal preference more than anything.  All three will get the job done if needed.

For email, I chose Thunderbird on Linux.  This is one area where I liked the features better than the Mac alternative that I was using which was  Thunderbird has nicer and more detailed features for handing and displaying of SPAM.  At times, I may have up to 5 mail accounts I need to check for work, personal, and clients.  Both email clients are capable of handling that without an issue.  Thunderbird does lack the threaded email view that provides which was a feature that I did miss.

VPN software is necessary if you are going to work outside of your own office.  I was a user of Cloak (EncryptMe is the name now) VPN on Mac and iOS.  This VPN service was not supported on Linux so I chose to go with an OpenVPN provider called CryptoStorm.  Going with an OpenVPN provider gave me the option to use one service for Mac, iOS, and Linux.  On Linux, I used the OpenVPN tools to configure the connections and on the Mac I used the Tunnelblick open source product for configuration.  On iOS, I used the OpenVPN app to perform the configuration.  The CryptoStorm service and OpenVPN in general is much more complicated to setup than EncryptMe but it is about half the ongoing yearly cost.  A normal user might have given up trying to configure this.

The Software That I Could Not Replace

There were some solutions that I had on the Mac that I never, or at least up to the point, was able to find a good replacement that I was happy with.

Vienna is the product that I use for reading RSS on the Mac.  The product is free to use and integrates with several of the Google Reader replacement services that appears in the years after Reader was shutdown.  I use one of these services called The Old Reader.  I found a product on Linux called Liferea which worked the best of the products I looked at.  The product was almost as good as Vienna with the exception that it did not pull down all articles that were unread in the instance that there were more unread articles than currently appeared in the site’s rss feed.  Vienna handles this issue by reading the list to pull down from The Old Reader rather than consulting the site’s rss feed.  This is an issue for me because I read many high volume feeds but I can’t always keep up consistently and I tend to sort of binge read some of those feeds.  As a result of this, I often used the FeedlerPro app on my iPad to read rss feeds that I had not caught up in a while.  That app has the same unread functionality as Vienna on the Mac desktop.

Calendar app integration on the Mac is outstanding.  I continued to use the calendaring on my iPhone and iPad because my family shares calendars with each other and I was never able to find a solution to viewing this on my Linux laptop.  There is the iCloud website but I found it unstable and unresponsive much of the time so I eventually gave up and used my iPad most of the time.  Fantastical is the app that I use on the Mac and it is outstanding.  This is an area where Linux isn’t close to other platforms on the desktop.

For todo lists, Omnifocus is the app that I used on the Mac and iOS prior to using the Linux laptop full-time.  The app is excellent and a backend server to synchronize across the installs that you use is provided free of charge.  There was nothing like this that I was able to find on Linux.  I ended up using Sublime to edit simple text files stored in DropBox, which works perfectly on Linux as it does on other platforms.  This was an acceptable solution and one that I already employed to take notes on projects but not a complete replacement for the notifications and nice organization of Omnifocus.

For blog posts, which I have sadly been failing to produce very often, I use MarsEdit on the Mac.  I was unable to find anything similar on Linux and resulted in using the online editor provided with WordPress installs.  This is a suitable replacement and I would guess this is what most people use even on the Mac but MarsEdit is quite a nice app to use.  So nice that I am using it now to write this post.

I work in my home office over 80% of the time.  That means that I need an office phone solution and I use Skype for that.  Some clients also prefer to use the Skype chat functionality although that is more rare.  I subscribe to the Skype service that allows you to have a phone number that can be called and appears to others on caller id.  There is a version of Skype available on Linux and I was able to use it with somewhat limited success.  The Mac version is more usable and has more convenient features like integration with iCloud contacts for phone numbers. I also found Skype to be much more unstable with more crashes and issues with headsets plugged into the laptop.

The Laptops Themselves

The System76 laptop weighs a good bit more that the MacBook Pro.  I would estimate for than 4 times the weight of the Mac in fact.  It is closer in weight to an old 17” MacBook Pro with the magnetic drive, which was no lightweight.  The footprint of it reminds me of old Dell Laptops.  It is thicker by 2x at least.  The power supply is equally heavy coming in at least 3x as heavy and 2x the size of a MacBook Pro adapter.

The keyboard on the System76 is very nice.  One of the nicest I have used on a laptop in fact.  It is also a full sized keyboard complete with number pad.  This is possible because it is slightly wider that the Apple and the extra thickness doesn’t hurt either.

The screen on the Serval WS is nice for a laptop, but not as nice as the MacBook Pro even though it is several years newer.  The support for external monitors on both laptops is excellent.  Both handle 2 display port monitors (Dell 26”) but the Apple seems to do this more easily even though the graphics card is not quite a substantial.

The System76 is quite a bit louder.  The fan kicks in much more often, probably due to the heat of the faster processor and most certainly the GPU.

I prefer the System76 having more ports that do not require dongles.  It is painful to carry around the number of dongles that you might need with the MacBook Pro.  Apple is not making this better with the newer models either.  One could argue that the extra weight of the Serval WS more than makes up for the extra dongles that need to be carried with an Apple laptop and it would be difficult to refute that.

The build quality is a hands down victory for Apple.  The MacBook Pro is nicer to use and the aluminum body is nicer to look at and feel.  The MacBook Pro screen is much easier on the eyes although the System76 screen is not bad.  I have read a lot of complaining about the keyboards on the newer MacBook Pros but I do not have any extended usage time with one beyond the Apple Store and Best Buy so I can’t really comment on that.  I do wish that the TouchBar was optional on all models or at least something that appears above the standard function key line so that physical keys were still available.

The Verdict

The System76 laptop is perfectly usable for everything I do except for iOS development work.  Linux has become reasonably easy to use.  Not as easy as Windows or MacOS but easy enough for a power user or even a computer user of many years to get along with and be productive.  I was pleasantly surprised to find it worked flawlessly with my NAT and wireless printer.  About halfway though the last year, my printer gave out and I went down to Office Depot and purchased another wireless printer (HP OfficeJet 8740).  I brought the printer home, unboxed it, plugged it in, and the Linux laptop saw it and was able to use it without an issue.  My daughter thought this was completely normal and could not understand why I was stunned.

I enjoy using the laptop and will continue to use it but the rough edges around a lot of software on Linux still leave something to be desired.  When Apple finally gets around to introducing a laptop configuration with 32gb RAM, I will probably buy one and go back to using a Mac as my full-time laptop.  It is just a little too inconvenient to have two laptops for work (at least for me).  I hope when that happens, Apple will also provide an option to remove the TouchBar or at least make it an additional thing above the function keys that can be ignored for those of us who have no use for it.


Recently, I attended my first dedicated security conference – LASCON 2017.  I have been passionate about security for a number of years, but never had the time (or rather never made the time) to attend any related conferences.

The conference was held at the Norris Conference Center in Austin which is a nice venue with plenty of room for a conference of this size.

The short version is that I would highly recommend attending one of these conferences.  There are many local security conferences, the most common you will find are the BSides conferences that occur all over the world and are locally organized.  These conferences are not just for those who work primarily with a focus on InfoSec.  There is a lot of information that is applicable to software developers as well.

DevOps is a popular topic now days so it isn’t a surprise that there were many sessions related to this. I attended a session that discussed injected security reviews into the DevOps process.  I thought there were many good ideas and the Q&A was relevant to both admins and developers.  Some in the room were clearly managers of developers looking to inject security into there own workflows for development.

Another development related presentation that I attended had to do with dynamic versus static code analysis and how each can help uncover vulnerabilities in application code.

Other sessions that I attended discussed topics such as securing a Raspberry Pi home monitoring solution, social engineering with Facebook, and few sessions on Information Security Risk Assessment which is something that I have participated in on several occasions with clients.

The second day of the conference I decided to participate in the badge challenge.  This is sort of simple version of a CTF (capture the flag) challenge that is popular at InfoSec conferences. The challenge involved decoded a message on the back of the conference badges that led to the challenge of adding your name to a list on a web page.  I managed to finish with less than two hours to go until the end of the conference and was awarded with a nice LASCON 2017 challenge coin. I would definitely participate in another such challenge when I get the chance to do so.

Workaround for iCloud Calendar Spam

Techcrunch has an article about the amount of spam has been appearing on the iCloud calendars of unsuspecting users lately.

Apple seems to have no idea that users might not want events from email that resides in the Junk or Spam folders to appear in their calendar.  They also seem to believe that a user would never want to delete these events without sending a decline message to the originator.

However, there is an inconvenient but workable solution – 

1. Create a new calendar. The name doesn’t matter because it won’t last long.

2. Move the spam events to the new calendar.

3. Delete the newly created calendar.  iCal will give you the option to delete without sending the decline notifications.


There is a local Houston security conference that occurs every year or so called HOU.SEC.CON.  The next HOU.SEC.CON will be March 23, 2017.  

I have been wanting to make it for a few years but it seems like I always have a conflict.  This year, however, I will be able to make it and I am looking forward to it.

If you are interested in infosec and will be in the area, you should check it out.

Houston Techfest coming this weekend

This coming Saturday, September 28, will be the Houston Techfest.  This is annual conference that is free to attend and seems to grow larger and better each year.

The conference will be at Reliant Center and has many great talks on the schedule. I did not have the time this year to submit a talk but I will be sitting on the Business of Software discussion panel during lunch.

I have never been disappointed with the selection of talks at Techfest so you should come out if you are in the Houston area and have some free time this Saturday.

Presentation Slides and Code from October iPhone Dev Meetup

As promised, here are the slides and code that I used in last night’s presentation on Core Data.

Thanks to everyone who attended my talk. I thought the Q&A and conversation made the presentation much better than just me standing and talking to the room (although it also made the presentation go longer than I had planned).

Anyone in the Houston area doing iOS work that is not taking advantage of this great meetup is missing out.

Slides and Code

Check over your model when mogenerator isn’t working

This is not a very lengthly post but it might help someone out. I like to use mogenerator and Xmo’d to generate my core data model classes rather than using the standard code generator included in xcode.

Usually everything works beautifully with my classes generating as expected when I save my data model. However, I have run into two cases where the old classes are removed but the new classes are never generated. When this happens, looking at the crash in won’t be of much help because the location of the crash in the mogenerator source simply states that the model failed to load with no reason given.

Both of the causes were errors on my part. The first being I added an attribute to an entity but did not assign a type to it. The second being I apparently added an entity that had some sort of name collision. The entity in question was named “List” and when I renamed it to “DSList”, the model classes generated without an issue.

Hopefully this will save someone time and give them an idea of what to look for.

Creating a Versioned Core Data Model Under Subversion

Recently, I tried to create a versioned data model for an application I had created earlier this year and had some issues with Subversion not being able to commit the changes.

When xcode creates a new versioned data model, the existing data model essentially gets moved into a .zip file format consisting of the current version (named the same as the un-versioned model) and any older versions that might be there named with sequential numbers appended to the name (only 1 in the beginning).

The problem with svn occurs because apparently the svn integration in xcode 3.2.x doesn’t perform a move into the .zip. Therefore, when you try to commit the code, svn will complain that the new data model within the .zip has the same name as an already existing file.

The workaround I implemented is to go to finder and duplicate the model before versioning it. Then switch back to xcode and create the versioned data model. Afterwards, rename the duplicated file back to the original data model file name. If you look at the file system in finder, you should see both the newly created version data model and the old data model.

Now expand the versioned data model and delete the file of the same the name as the original data model inside. Afterwards perform an svn move of the un-versioned data model to inside the versioned data model. Now you can commit the changes without an issue and everything will work fine.

Hopefully xcode 4 will fix this because it caused me a little pain before I figured out how to workaround the issue.

Speaking at Houston iPhone Developer Meetup Oct 26

I will be speaking at the next Houston iPhone Developer Meetup. I will be using almost the same slides as I did for the Core Data presentation at the Houston Techfest this past Saturday but I will have a little more time to present and the Q&A that goes on during the presentations is often the best part.

If you are in Houston, this is a great way to meet other iOS developers. We are fortunate in Houston, there are usually several individuals in attendance who have presented talks at national and regional conferences.

Presentation Slides from Houston Techfest 2010

As promised, here are the presentation slides (keynote) and the code from the presentation I gave today at the Houston Techfest. Thanks to everyone who attended my talk.

Next Page »