TLDR; I currently use NeoVim in the Linux layer of ChromeOS for development. I recommend this setup for anyone interested in web development who has a bit of knowledge of Linux or is willing to learn. If Vim or Linux aren’t for you, VSCode in the Linux layer of ChromeOS is simple to set up, and once you are done you shouldn’t need to bother with knowing any Linux commands (other than for stuff like npm).
I’ve been doing web development at various levels for well over 20 years, mostly working through various iterations of my own site. As such, my toolchain has gone through a few iterations of tools. When I first started, I was using a Mac on System 7, later updated to a better Mac with OS8. For these, I used Claris HomePage Lite and BBEdit Lite. The lite version of Claris didn’t support tables, without which “cutting edge” web development of the late 1900’s was impossible. But it did make it easier to do the basics of a design, which I could then edit in BBEdit. This is how the first couple of iterations of my site were created. It was static, had no purpose, and the only part of it that mattered was the link to my LiveJournal. I alternated between IE6 (the Mac edition was easily the best browser available at the time) and iCab, a small German browser that helped introduce me to web standards. It had a small icon that showed a smiley face when a page validated, and a frown when it didn’t that explained why when clicked. Trying to make iCab smile made me research web standards. This in turn led to a rabbit hole of Jeffrey Zeldman, the Web Standards Project, A List Apart, and many others. Some of the people and sites that Zeldman introduced me to, I still follow to this day.
Around 2001, I upgraded to OSX. The first version. BBEdit Lite was replaced by TextWrangler, which I used for a year or two. At some point, though, I heard about something called Vim that was available on the console, as well as in a “Mac” GUI. I ran the vimtutor and, while it took me a while to get good at it, I could immediately see that it would make text editing more productive. Vim has not left my toolkit since, though it has been supplemented a few times by tools such as Bluefish. I used Safari, and later Camino, for my browser. I enjoyed Camino so much, even though it lacked extensions, that I wrote a bookmarklet that could turn Greasemonkey userscripts into other bookmarklets. It was well-received and featured on a site that showcased the few ways to improve Camino.
I used OSX all the way until Panther, but when I read a post by Mark Pilgrim (archive.org link as his web presence is 410 gone) it gave me pause. I had heard of Linux, of course, and had played with old versions of Red Hat before, but it wasn’t really usable. I had recently heard of a new version, though, Ubuntu. Mark’s post caused me to give Ubuntu a try, and I have been using Linux since 2006, in one form or another. I currently have two laptops, one running Mint and the other ChromeOS. My toolchain is the same in both: Vim (currently in the process of switching to NeoVim by symlinking the config files), git, Chrome (with Firefox and Epiphany for testing), and of course node.js and some tools for it like prettier. That’s it. No visual editor, no VSCode (the last time I tried it I almost lost three weeks worth of work on my client’s site). I do run a pretty customized Vim setup which I’ll cover in a future post. The Linux wrapper for ChromeOS makes it a very good machine, and if the Chromebook I had did not have such a tiny, uncomfortable keyboard, it would be my preferred environment.
While my dev toolkit is small, I am always tinkering with my machines, trying out new settings and tools to make things just a fraction of a percent slicker. Normally I wind up deleting them, but this of course means that I have lots of cruft like old config files or dependencies laying around. Cleaning all this up is something I do on my Mint machine at least four times a year. It takes a day or two, and risks deleting the wrong thing. As my config files are backed up onto GitHub, however, with the Chromebook I can easily disable and reenable the Linux system to get back to square one, or even powerwash if needed. This saves me time and helps keep my system responsive. My Mint machine can cross-boot into Windows for school, and ChromeOS Flex does not support dual-booting. This is the only reason I still use any other operating system. If you currently use Linux for web development (or really anything), I recommend you look into the Linux layer of Chromebooks for your next machine instead; it increases security, simplifies a lot of troubleshooting, and for most computer usage boots nearly instantly into the browser. So long as using an OS by Google isn’t a dealbreaker for you, this makes the nicest development environment I’ve ever used. And I’ve used several.