My tools as a web/"full-stack" consultant, part 1 of manyBy Benjamin Howarth on
I've been meaning to write about my tools of choice during my day job for a while now, but between freelance work and speaking at conferences, it's been put onto my back-burner. No longer!
I want to start by talking about the software I use as a "web" developer. Later on, I'll pick the specific definition of that apart, but for now, this is just the setup I use for coding, presenting, gaming, and all-round general use.
Some developers prefer Macs, React, and WebStorm, some prefer Windows, some prefer vim, some emacs... this is my developer story. Take what you want to try out from it, leave what you don't.
Metal is always important to a developer, and I travel an awful lot, between on-site consulting and speaking at meetups and conferences. I generally don't care about the "pretty" factor of a laptop, so I tend to want one machine that's got the power of a desktop that fits in my bag.
For the past 6 years I've used 17" laptops, as I tend to find they offer better expansion options for hard drives (although as M2 and NVMe have arisen, form factor is now less of an issue). From 2013 to 2017 I had a Toshiba P75-A7200 acquired for around $900 at Best Buy in the USA. It had:
- Intel i7 4th-gen, quad-core, i7-4700MQ @ 2.8GHz (max 3.4GHz)
- 8GB RAM, upgradeable to 32GB;
- Intel onboard graphics (I'll address this later);
- 2 x 2.5" hard drive bays.
The two bays was a massive win for the price as it allowed me to cheaply upgrade to my first Toshiba SSD about 9 months after my initial purchase.
To begin with I just wanted 16GB with scope to go higher if I needed to (I did, eventually). At the time I didn't need graphics processing, and I was happing having the odd utility like Photoshop use shared RAM. However, after my Toshiba died, I went through a couple of loan laptops (thanks, Carl!), before acquiring my current rig in October 2017 - the PC Specialist Optimus VIII, otherwise known as a generic Clevo N870-HK1.
I bought it off-the-shelf:
- Intel i7, 7th-gen Kaby Lake architecture, quad-core, i7-7700HQ @ 2.8GHz
- 16GB included, upgraded to 32GB RAM (2 x RAM slots);
- Nvidia GTX 1050Ti 4GB;
- 500GB spinning rust included
Then, I picked these up from Amazon:
- WD Black WDS512G1X0C 512GB (NVMe M.2 form factor);
- 2 x Corsair CMSO16GX4M1A2133C15 16 GB DDR4 @ 2133 MHz
At the time, I wanted the speed of NVMe and the 32GB RAM, knowing that starting in 2018, I'd be looking at both machine-learning platforms like Tensorflow, plus I wanted to do some heavier A/V work, so the upgrades were affordable. The total cost for this rig, plus the above mentioned upgrades, was just above £1400 at the time of purchase (Oct 2017). In hindsight, I regret not investing a little more in higher-spec RAM and SSD, which is why my next upgrades will be:
- Samsung 860 Evo or 970 Evo SSD; 1TB NVMe M.2 (I have a lot installed on my OS drive for speed - Visual Studio + 4 x SQL Server Developer instances);
- Crucial CT2000MX500SSD1Z 2TB SSD;
- Some kind of 2x16GB 2666MHz RAM setup - another 566Mhz will always help, I've got an eye on Crucial's kit for this.
These upgrades should cost in total around £600, so, for roughly £2200 in total, I've got a machine that will probably last me at least another 3 years before I look for a chassis upgrade. And this is great for my needs - if you need a beefier graphics card for machine-learning purposes, or you're a gamer, you'll probably have different requirements than I will.
To begin with, my browser of choice is Opera, not Chrome.
Whilst Opera still uses the Blink rendering engine, originally based on WebKit & forked by Google, Opera comes with a built-in VPN service, free for users.
Due to lack of an extensive extensions marketplace, as a result, my memory usage is light compared to the... checks 28 extensions I have in Chrome.
However, extensions can be installed by way of a wrapper extensions supplied by Opera, which is extremely useful for the few extensions I do want (Harvest, Toggl, LastPass, and the Amazon Assistant).
By using Blink, Opera also has the advantage of the DevTools window being identical to Chrome's.
Opera also comes with both WhatsApp Web and Facebook Messenger chat windows - very handy for personal communication, as it means I don't have to pick up my phone to send messages to friends, family & supporting colleagues throughout the day.
Text editors & IDEs
As an ASP.NET developer, Visual Studio Professional comes straight in at #1, along with SQL Server Management Studio. I'm also extremely please that Management Studio is now a separate download, instead of requiring a full SQL Server download & installation. However, I'm dealing a lot with AngularJS & ReactJS projects of late, so I'm spending more and more time in Visual Studio Code, an Electron-based app which is starting to get a lot of traction with the non-Windows developer base. I also use Notepad++ for general text editing, and the Powershell ISE that comes with Windows for Powershell scripting.
IDE & text editor extensions
To complement Visual Studio Professional, I've got an entire list of extensions which I use. Exporting this list of extensions is never easy! However, ReSharper, Mads Kristensen's Web Essentials, and NDepend all prominently feature here.
R# needs virtually no introduction for experienced .NET developers. Basically, it helps you pick up "code smells" or places where you can tidy up common syntactical sugar, such as C# get-only properties using lambda
Mads Kristensen is the Program Manager for Visual Studio extensibility. Over the past decade, he's curated a collection of shortcuts and tools collectively known as Web Essentials. It's an absolute must for web developers working inside Visual Studio, as it includes linting tools, image compression shortcuts, bundling & minification tools - and was the first tool to enable Node.js support in Visual Studio in-situ, if I recall correctly.
NDepend is a brilliant architecture tool - I love letting it loose on big web application rearchitecture projects (think 20+ custom project DLLs, left right & centre). It gives you a high-level & detailed view of code coupling, redundancies, dependencies, and lots and lots of code metrics. For architects that have to pick up legacy codebases and bring them into the present-day, it's absolutely essential. You can run single project analyses, but I'm dying to get it installed in an environment where I can show off it's continuous integration capabilities, so that your entire team has a view on how your application's structure is improving over time.
I will eventually assimilate an entire list of extensions that I install, but these are definitely the first three I go to on a new machine.
Over the coming weeks I'll be blogging more about these tools and how these get used in my day-to-day activities.
In the meantime, what are your tools & extensions of choice? Comment below or @ me on Twitter!