A while back I was discussing with friends the different software and hardware solutions I use to do my job. One of them suggested I write-up something that they could just read through, because explaining and discussing all of the pieces in person was taking a lot of time, I was going into a lot of detail, and they would just forget. Well, here you go.
I wear a lot of hats at work. At times I am a general-purpose system administrator, while other times I am the resident expert on a given system. Even still, sometimes I act as an unrelated third-party ‘solutionist’. The point is, day-to-day I may see a lot of variance in the types of problems I solve. It is one of the reasons I love my job. The hardware and software tools used need to be general enough to accommodate the wide variety of problems. It is important to not be held back by your tools or environment. Like-wise, personality and principles play a big part with regards to keeping your mind open, and developing a good set of problem solving skills.
The Hardware In My Environment
One of the most important things to a sysadmin is their environment. My take is, I spend 40-70 hours a week at my job. Most of that (80%) is spent at my desk. That ranges from 1660 – 2800+ hours a year in front of a computer, monitor, keyboard, mouse, sitting in a chair, in an office.. Everything matters; lighting, AC vents, arm rests, appropriate mouse pad space… Everything. Do what you can to find what is comfortable for you; here is what is comfortable for me.
Truth-be-told, you don’t need a super powerful computer to administer individual systems. I probably could’ve made do with a budget Windows-based system; an average Dell. You could just connect to whatever system you need to and do whatever you need to do; but, this limits you. Slow systems don’t run VM sandboxes well, and non-Mac systems suffer from being constrained to only Linux and Windows OSes. Macs can run all three major OSes, either natively or virtually, thus allowing you to solve problems on every operating system (Mac, Windows, and Linux) from the convenience of the same machine. Apple makes a damn good computer too, so if you can spend the money I’d say go for a quality computer. Thankfully, I was able to receive this system by writing a proposal.
Apple Mac Pro (2014)
32GB ECC RAM
Dual AMD FirePro D300 GPUs
Purchase Price: ~$5300.00
Initially, I had an arrangement of six monitors. Three monitors were vertically stacked on top of three more monitors. The outer monitors consisted of 4 4:3 Dell 20″ Ultrasharps, all connected via DVI, using DVI to MiniDisplayport adapters. The inner monitors were 2 16:9 Dell P2314H monitors, connected using Displayport to MDP adapters.
There were inherent problems with this setup. The Mac Pro has three separate video buses, split across two Thunderbolt connections each (six total connections). Effectively, Thunderbolt, when video only, is MiniDisplayPort. There is also an HDMI connection attached to one of the video buses, but it is irrelevant because I didn’t use it. The point is by using all six of the MDP ports on the Mac I was maxing out the video buses. Weird things started happening; flickering, monitor shut-offs… In the end, after research I knew I had to minimize the load on the video buses. The bezels started to bother me too. It seems dumb to complain about ~1″ of plastic, but it got to me after about 6 months. In that time it became apparent that color temp settings were off between all of the monitors too. All that means is that colors would appear differently depending on the monitor. From tweaking the settings I was able to get all of them close, but not perfect. The 23″ monitors were the same, and the 20″ monitors were the same, but the 23″ monitors were always different from the 20″ monitors. Color consistency is far from top priority for a sysadmin, but remember, I wear many hats. I’ve done graphic design and created videos for work related projects…
Through a tech life-cycle upgrade provided via another proposal, most of my department was able to upgrade to the fantastic Dell U3415W Ultrasharp 34″ 21:9 monitor.
I spec’d this model for a few specific reasons. The display is absolutely gorgeous, though the image below doesn’t quite do it justice. Normally, 34″ would be way too big if it was a conventional 16:9 aspect ratio. Because this monitor has a 21:9 aspect ratio the entire screen is stretched much wider than normal. The resolution for this monitor is 3440×1440. It has two USB 3.0 upstream ports, with an integrated USB 3.0 hub. Essentially, if you plug devices into the monitor (mouse and keyboard) and switch between two different display inputs, the devices follow the switch. This allows a single mouse/keyboard to be used with two separate machines without the use of Synergy (or similar). The monitors support MiniDisplayPort, Displayport, and HDMI (and HDMI MHL) input, but also support MST via Displayport, allowing for display chaining provided the graphics card supports it.
As pictured above, my current setup has two of the Dell U3415Ws stacked, with one of the P2314H displays rotated sideways. Later, in the software section, I discuss how I manage all of that screen real estate.
Before the aforementioned life-cycle upgrade I was using the standard Dell 3-button mouse. It certainly got the job done, and it was convenient that we always seemed to have three or four hanging around for replacements, but it was less than ideal. Those who’ve never used a premium mouse before really won’t understand this, but it is more than just the pointer on the screen. The feeling, the texture, the way it scrolls, the rise of the buttons… Don’t even get me started on wired vs wireless! Anyway, we upgraded to the Logitech G700s. It’s got 8 extra buttons that are fully programmable, in addition to the L/R/M and side-click buttons (total of 13 programmable buttons). There is a scroll brake that easily switches between a stepped scroll and free-spin scroll. It is wireless, but can be wired with the charging cable. The primary attribute is that it is comfortable!
I’m a big fan of the standard full-size keyboard from Apple (check out this post’s first image). For $50 you get a nimble chiclet-style keyboard that mitigate’s hand fatigue from typing. The keyboard I had been using was well-worn, had had coffee spilled on it, had keys that were stuckkkkk… It was a mess. It was replaced with the Das Keyboard 4 Pro for Mac. The DK4P is a mechanical keyboard with an integrated 2-port USB 3.0 Hub, and dedicated media controls. While it doesn’t use Cherry switches (non-gaming people are lost at this point), what it uses are similar to Cherry Brown switches. This thing is loud and clicky, but extremely easy to type with. One gripe that I could have is that the keyboard is not backlit. Normally, from a gaming perspective, that would not be acceptable, but this is a work keyboard. I’ll just keep the lights on in the office 🙂 .
Speakers & Headphones
I don’t put a lot of stock (or money) into speakers for my work rig. The building I work in is frequented by students and upper administration, so it is unwise to crank it to 11. I care about the quality of the sound, just not enough to spend a ton of money on a really nice system, considering the environmental restrictions. However, I’ve been rocking the Altec Lansing ACS340 speakers for a long time, in multiple jobs, and they do not disappoint! These are no-frill speakers. Volume, Treble, Bass, 3.5mm headphone-jack output. Good sound, consolidated setup, just right!
For moments when I need to zone-in and get some serious
work done, those moments when I cannot afford to be bothered by anything in the world, those instances where my very life could be on the line and concentration is of utmost importance… I use headphones. Specifically, I use over-the-ear headphones from Monoprice. For ~$16 I got a fantastic pair of headphones that disconnect at the left ear-phone, come with two different cables, fold down, fold flat, and deliver great sound.
Laptop / Tablet
Prior to the life-cycle upgrade, I used a personal laptop and work-provided Dell Latitude D630. After the upgrade I now use a Microsoft Surface Book, 16GB RAM, dGPU, 512GB SSD, with an i7 processor. Not the most tippy-top model, but the only difference is the SSD size! For those out of ‘the know’, the MSB is a full PC, shaped like a 14″ tablet, with a keyboard base that allows it to function like a laptop. With the press of a button the screen detaches and is usable as a standalone tablet. The screen can even be rotated and reattached, forming sort of a clipboard-mode that both adds some weight to the tablet, but also makes use of the dock’s extra battery and discrete GPU. The MSB performs very well, though it is not without problems. The Surface Book is a Gen1 product, and despite the fact that Microsoft has made the Surface tablet line for years, the MSB is a whole new animal. I’ve suffered abrupt dock disconnects and freezing under normal use. Extreme cold can sometimes cause blue-screening. The MiniDisplayPort output has caused the entire system to crash when connected to an external display. Initially, the entire experience was rocky, though through several firmware patches and updates the system is rather stable now. It is powerful and versatile enough to act as a secondary work environment, and extremely capable as a disaster recovery component.
The Software In My Environment
Not every piece of software listed here will work for you.
I mentioned earlier that Macs can run the three major operating systems, either virtually or natively. By ‘natively’ I was referring to Boot Camp, and by ‘virtually’ I was referring to Parallels. I’ve been using Parallels for about seven years, and it is definitely a staple in my day-to-day work. I configure my locally run Windows 10 VM to operate in ‘coherence’ mode and simply use spotlight to search and run programs normally. What this does is blur the lines between what is Mac and what is Windows by allowing Windows’ applications to be installed and run as if they were Mac applications. The integration is fantastic, with offerings for shared folders, mapped drives, network and local drive sharing, and tons more. If you would prefer toy have Windows run on a dedicated screen, or in a separate window, you can do that as well.
Larger monitors mean nothing if your desktop is chaos! Smart window and application management is key to increasing productivity and keeping your sanity. Divvy allows you to resize windows and applications using a configurable grid system. Padding and alignment are handled by the app.
Terminal / MobaXterm
On my Mac workstation I use the included Terminal application to access command-line functionality and ssh to other servers. Since Windows does not yet natively support ssh, I use MobaXterm. There are a ton of features that I have yet to fully configure and use, but from what I’ve used so far MobaXterm is awesome!
Frequently I manage multiple systems that need very similar, if not exactly the same, configurations. I needed a way to multicast commands to multiple machines at the same time; csshX saved the day! On Windows, MobaXterm has ‘multi-execution mode’.
Speaking of ‘multiple systems’… There are dozens of systems that I manage that need to be configured individually. The settings for one may not apply to another. To keep all of those connection settings and commands organized I use Shuttle. It allows the categorization and grouping of ssh and csshX commands, and supplies me with an easy to use drop down menu. MobaXterm has a ‘saved sessions’ sidebar that serves a similar purpose.
Frequently, I am significantly changing or deploying a new system for the entire organization and/or my coworkers. It helps to be able to generate training material that is more than just a PDF. Using ScreenFlow I can easily record and edit screencasts with narrative audio.
iStat Menus is a program that delivers quantitative statistics about your Mac workstation to your menubar. It has integrated fan controls, per-app statistics, and loads of graphs for every sub-system you could need.
I use TextEdit for a lot of my simple text editing needs, and Pages for more complex formatted documents. For writing code, I use Brackets, and sometimes Atom. They are pretty similar for what I use them for, but I tend to use Brackets more often.
To connect to Windows machines from a Mac I use the RDP application from Microsoft. It works, and has all of the features I need. I used to use CoRD, but transitioned away from it when MRD updated to version 2.
For years several of my coworkers used ICQ for chat. Even after we switched to Gmail for our email system, they stayed on ICQ instead of moving to Hangouts. I convinced enough people to try Slack, and they seemed to really like it; however, Slack isn’t free, and imposed a limit on the number of messages you could keep. We moved to ChatGrape, then Glip, but neither of these were self-hosted options with LDAP support. Eventually I found RocketChat! RC is effectively the same things as Slack, except open-source and self-hosted. Most of the webhook integrations written for Slack will work with RocketChat, not that we use any. Hubot also works with RC! I cannot talk up RC enough, it is fantastic.
For a long time my work used Zabbix, and then later BigBrother/Xymon for server/system monitoring. I revamped the whole process using Check_MK. It offers a lot of the same features that Zabbix and Xymon offer, but changes the way the checks are delivered to the monitoring server. Xymon and Zabbix send out individual checks to each end device, and get individual replies back. This means that for any given server you can have dozens of checks going out, and the same amount coming in. Scale this to hundreds of servers, and then recheck every minute, and you can understand how there would be a bit of a problem… Check_MK sends out a single check request to the end device, and the end device compiles all of its replies into a single reply. It’s unfair to give Check_MK all the credit, considering it uses Nagios on the backend.
We host our own Git instance using GitLab CE. All of the comforts of services like Github and BitBucket, but completely controlled and on-site. Free and easy, and packed with tons of features. I develop a lot of scripts, automation, and programs for internal use; all of which are uploaded and version controlled via GitLab.
Some may know Kanban boards as ‘swim-lanes’. Kanboard is a self-host system for managing project staging and progression.
Where would we be without music?! I subscribe to Google Play Music, and use RadiantPlayer to get run GPM in a separate application.