proofreading.
This commit is contained in:
		
							parent
							
								
									bc251f8790
								
							
						
					
					
						commit
						39bb47ab7f
					
				
					 3 changed files with 66 additions and 48 deletions
				
			
		| 
						 | 
					@ -26,7 +26,7 @@ vim,https://www.vim.org/,1991,c
 | 
				
			||||||
midnight commander,,1994,c
 | 
					midnight commander,,1994,c
 | 
				
			||||||
ssh,,1995,c
 | 
					ssh,,1995,c
 | 
				
			||||||
curl,https://github.com/curl/curl,1996,c
 | 
					curl,https://github.com/curl/curl,1996,c
 | 
				
			||||||
fish,https://fishshell.com/,2005,c/rust
 | 
					fish,https://fishshell.com/,2005,c (currently being rewritten in rust)
 | 
				
			||||||
fossil,https://fossil-scm.org/home/doc/trunk/www/index.wiki,2006,c
 | 
					fossil,https://fossil-scm.org/home/doc/trunk/www/index.wiki,2006,c
 | 
				
			||||||
tmux,https://github.com/tmux/tmux,2007,c
 | 
					tmux,https://github.com/tmux/tmux,2007,c
 | 
				
			||||||
git,https://git-scm.com/,2008,c
 | 
					git,https://git-scm.com/,2008,c
 | 
				
			||||||
| 
						 | 
					@ -78,34 +78,36 @@ xsel -bi
 | 
				
			||||||
ls specifically can trace its history to 1961 
 | 
					ls specifically can trace its history to 1961 
 | 
				
			||||||
-->
 | 
					-->
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Take a look at this [table](#appendix-the-tools) at the bottom of the page. Ill
 | 
					Take a look at this [table](#appendix-the-tools) at the bottom of the page.
 | 
				
			||||||
wait. Notice the relative scarcity between ~1995 and ~2015? Id like to talk
 | 
					Ill wait.
 | 
				
			||||||
about a trend Ive seen these past few years, where people are rewriting and
 | 
					Notice the relative scarcity between ~1995 and ~2015?
 | 
				
			||||||
rethinking staples of the CLI, why I think this trend is a good thing, and why I
 | 
					Id like to talk about a trend Ive seen these past few years,
 | 
				
			||||||
think this trend might be happening.
 | 
					where people are rewriting and rethinking staples of the command line interface,
 | 
				
			||||||
 | 
					why I think this trend might be happening,
 | 
				
			||||||
 | 
					and why I think this trend is a good thing.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
## History
 | 
					## History
 | 
				
			||||||
 | 
					
 | 
				
			||||||
The terminal has been a staple of computer user interfaces since before computer monitors were available,
 | 
					The terminal and the command line interface have been staples of computer user interfaces before computer monitors were even available,
 | 
				
			||||||
with some of the first computers offering an interactive mode in the late 1950's.
 | 
					with some of the first computers offering an interactive mode in the late 1950's.
 | 
				
			||||||
The 'modern' Linux terminal traces its linage to the very first version of Unix, in 1971.
 | 
					The recognizable Linux terminal traces its linage to the very first version of Unix in 1971.
 | 
				
			||||||
Many utilities that a Linux user interacts with every day,
 | 
					Many utilities that a Linux user interacts with every day,
 | 
				
			||||||
commands like `rm`, `cat`, `cd`, `cp`, `man` and a host of other core commands trace their initial versions to this first version of Unix.
 | 
					commands like `rm`, `cat`, `cd`, `cp`, `man`, and a host of other core commands trace their initial versions to this first version of Unix.
 | 
				
			||||||
Other tools are a bit newer, such as `sed` (1974), `diff` (1974) `bc` (1975), `make` (1976) or `vi` (1976).
 | 
					Other tools are a bit newer, such as `sed` (1974), `diff` (1974) `bc` (1975), `make` (1976), or `vi` (1976).
 | 
				
			||||||
There were a few more tools introduced in the 90's, such as `vim` (1991) and `ssh`, (1995), but you get the picture.
 | 
					There were a few more tools introduced in the 90's, such as `vim` (1991) and `ssh` (1995), but you get the picture.
 | 
				
			||||||
The majority of the foundational CLI tools on a Linux pc, even one installed yesterday, are older than Linux itself is.
 | 
					The majority of the foundational CLI tools on a Linux pc, even one installed yesterday, are older than Linux itself is.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
## Ok, so?
 | 
					## Ok, so?
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Now, theres nothing wrong with this, the tools work fine still, but,
 | 
					Now, theres nothing wrong with this.
 | 
				
			||||||
in the half-century since they were first written,
 | 
					The tools still work fine, but in the half-century since they were first written,
 | 
				
			||||||
Terminals and the broader Linux ecosystem have all changed.
 | 
					terminals and the broader Linux ecosystem have all changed.
 | 
				
			||||||
Terminals now have capacity to display more colours, Unicode symbols, and even inline images.
 | 
					Terminals now have capacity to display more colours, Unicode symbols, and even inline images.
 | 
				
			||||||
Terminal programs now coexist with graphical user interfaces,
 | 
					Terminal programs now coexist with graphical user interfaces,
 | 
				
			||||||
and only a small subset of computer users even know they exist,
 | 
					and only a small subset of computer users even know they exist,
 | 
				
			||||||
wheras in the past, terminals were the only way one interacted with the computer.
 | 
					whereas in the past, terminals were the only way one interacted with the computer.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Additionally, and perhaps more importantly, our knowledge has expanded,
 | 
					Perhaps more importantly, our knowledge has expanded:
 | 
				
			||||||
our knowledge of user interfaces,
 | 
					our knowledge of user interfaces,
 | 
				
			||||||
of what works and what doesnt,
 | 
					of what works and what doesnt,
 | 
				
			||||||
of what usecases are common and what usecases are niche,
 | 
					of what usecases are common and what usecases are niche,
 | 
				
			||||||
| 
						 | 
					@ -113,18 +115,25 @@ the way that error messages can teach,
 | 
				
			||||||
the value of a good out of the box experience,
 | 
					the value of a good out of the box experience,
 | 
				
			||||||
and the value of documentation that is easy to find and digest.
 | 
					and the value of documentation that is easy to find and digest.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
## Exploration of the solution space
 | 
					These changes to the environment surrounding CLI apps in recent years have
 | 
				
			||||||
 | 
					 | 
				
			||||||
These changes to the environment surrounding CLI apps has in recent years,
 | 
					 | 
				
			||||||
led to a resurgence in development of command line utilities.
 | 
					led to a resurgence in development of command line utilities.
 | 
				
			||||||
Instead of just developing completely new tools,
 | 
					Instead of just developing completely new tools or cloning old tools,
 | 
				
			||||||
Ive noticed that people are rethinking and reinventing tools that have existed since the early days of Unix.
 | 
					Ive noticed that people are rethinking and reinventing tools that have existed since the early days of Unix.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
<!--TODO: add more here-->
 | 
					This isnt just some compulsive need to rewrite every tool out there in your favorite language.
 | 
				
			||||||
 | 
					People are looking at the problem these tools set out to solve,
 | 
				
			||||||
 | 
					and coming up with their own solutions to them,
 | 
				
			||||||
 | 
					exploring the space of possible solutions and taking new approaches.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Its this exploration of the solution space that id like to take a look at:
 | 
				
			||||||
 | 
					the ways that tools are changing,
 | 
				
			||||||
 | 
					why people are changing them,
 | 
				
			||||||
 | 
					and what kicked off this phenomenon.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
## The lessons learned from the past
 | 
					## The lessons learned from the past
 | 
				
			||||||
 | 
					
 | 
				
			||||||
A large amount of the innovation in the area, I think, can be attributed to lessons that have been learned in 50 years of using software;
 | 
					A large amount of the innovation in the area, I think,
 | 
				
			||||||
 | 
					can be attributed to lessons that have been learned in 50 years of using software:
 | 
				
			||||||
sharp edges we have repeatedly cut ourselves on,
 | 
					sharp edges we have repeatedly cut ourselves on,
 | 
				
			||||||
unintuitive interfaces that repeatedly trip us up,
 | 
					unintuitive interfaces that repeatedly trip us up,
 | 
				
			||||||
and growing frustration at the limitations that maintaining decades of backwards compatibility imposes on our tools.
 | 
					and growing frustration at the limitations that maintaining decades of backwards compatibility imposes on our tools.
 | 
				
			||||||
| 
						 | 
					@ -145,12 +154,12 @@ One of the earliest examples of this principle may be the fish shell.
 | 
				
			||||||
Both zsh and fish have powerful prompt and autocompletion engines,
 | 
					Both zsh and fish have powerful prompt and autocompletion engines,
 | 
				
			||||||
but zsh requires you to setup a custom prompt and enable completions in order to use the features that set it apart from the competition.
 | 
					but zsh requires you to setup a custom prompt and enable completions in order to use the features that set it apart from the competition.
 | 
				
			||||||
With no config file, zsh is no better than bash.
 | 
					With no config file, zsh is no better than bash.
 | 
				
			||||||
When starting fish for the first time however,
 | 
					When starting fish for the first time, however,
 | 
				
			||||||
its powerful autocompletion and information rich prompt are front and center with no configuration required.
 | 
					its powerful autocompletion and information rich prompt are front and center with no configuration required.
 | 
				
			||||||
Of course, fish still has the same level of configurability as zsh, it just also has sensible defaults.
 | 
					Of course, fish still has the same level of configurability as zsh, it just also has sensible defaults.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
To demonstrate my point, this is the default prompt for zsh with no configuration.
 | 
					To demonstrate my point, this is the default prompt for zsh with no configuration.
 | 
				
			||||||
It *only* shows the hostname, none of the advanced featurs you can get out of a zsh prompt even without plugins.
 | 
					It *only* shows the hostname, none of the advanced features you can get out of a zsh prompt even without plugins.
 | 
				
			||||||

 | 
					
 | 
				
			||||||
Here is bash's prompt.
 | 
					Here is bash's prompt.
 | 
				
			||||||
It actually gives more info than zsh's, even though zsh can do more when properly configured.
 | 
					It actually gives more info than zsh's, even though zsh can do more when properly configured.
 | 
				
			||||||
| 
						 | 
					@ -172,29 +181,33 @@ support much for configuration. What you see out of the box is more or less
 | 
				
			||||||
whats there.
 | 
					whats there.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Vim (top right) greatly improved on Vi, adding things such as syntax highlighting, line numbers, spellchecking, split windows, folding, and even basic autocompletion.
 | 
					Vim (top right) greatly improved on Vi, adding things such as syntax highlighting, line numbers, spellchecking, split windows, folding, and even basic autocompletion.
 | 
				
			||||||
However, everything but syntax highligting is either extremely clunky or outright disabled without configuration.
 | 
					However, everything but syntax highlighting is either extremely clunky or outright disabled without configuration.
 | 
				
			||||||
(for example, the earliest things I did when I first made a `.vimrc` was to enable indent folding,
 | 
					(for example, the earliest things I did when I first made a `.vimrc` was to enable indent folding,
 | 
				
			||||||
make some better keybinds for navigating windows, and adding a line number ruler to the side)
 | 
					make some better keybinds for navigating windows, and adding a line number ruler to the side)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Neovim (bottom left) further improved on Vim, adding support for Treesitter and the Language Server Protocoll, but the out of the box experience is the *exact* same as vim!
 | 
					Neovim (bottom left) further improved on Vim, adding support for Treesitter and the Language Server Protocol, 
 | 
				
			||||||
 | 
					but the out of the box experience is the *exact* same as vim!
 | 
				
			||||||
In order to take advantage of the LSP and Treesitter support, you have to install plugins,
 | 
					In order to take advantage of the LSP and Treesitter support, you have to install plugins,
 | 
				
			||||||
which means learning a Nvim package manager, learning how to configure LSPs, and configuring a new LSP for every language you want to use it with.
 | 
					which means learning a Nvim package manager, learning how to configure LSPs,
 | 
				
			||||||
(Or finding out about Mason and being OK with having multiple levels of package management in your Nvim install alone).
 | 
					and configuring a new LSP for every language you want to use it with
 | 
				
			||||||
Dont get me wrong, Neovim is a great editor once you get over the hump, I still use it as my daily driver, but so much of its functionality is simply hidden.
 | 
					(or finding out about Mason and being OK with having multiple levels of package management in your Nvim install alone).
 | 
				
			||||||
 | 
					Dont get me wrong: Neovim is a great editor once you get over the hump.
 | 
				
			||||||
 | 
					I still use it as my daily driver, but so much of its functionality is simply hidden.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Then we have the Helix (bottom right) editor. Colour scheme aside, everything is just there.
 | 
					Then we have the Helix (bottom right) editor.
 | 
				
			||||||
 | 
					Slightly glaring default colour scheme aside, everything is just *there*.
 | 
				
			||||||
Helix doesnt have plugin support [yet](https://github.com/helix-editor/helix/discussions/3806),
 | 
					Helix doesnt have plugin support [yet](https://github.com/helix-editor/helix/discussions/3806),
 | 
				
			||||||
but it has so much stuff in core that,
 | 
					but it has so much stuff in core that,
 | 
				
			||||||
looking through my neovim plugins,
 | 
					looking through my neovim plugins,
 | 
				
			||||||
pretty much all of them are in the core editor!
 | 
					pretty much all of them are in the core editor!
 | 
				
			||||||
(ironically, the one feature that I feel helix is missing, [folding](https://github.com/helix-editor/helix/issues/1840),
 | 
					(Ironically, the one feature that I feel helix is missing, [folding](https://github.com/helix-editor/helix/issues/1840),
 | 
				
			||||||
is a core part of neovim, albiet one that requires some configuration to get good use out of).
 | 
					is a core part of neovim, albeit one that requires some configuration to get good use out of).
 | 
				
			||||||
Helix does have a config file where you can change a huge amount of settings,
 | 
					Helix does have a config file where you can change a huge amount of settings,
 | 
				
			||||||
but its an extremely usable IDE out of the box, thanks to having all of its features enabled by default.
 | 
					but its an extremely usable IDE out of the box thanks to having all of its features enabled by default.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
### Friendly error messages
 | 
					### Friendly error messages
 | 
				
			||||||
 | 
					
 | 
				
			||||||
<!-- look at nushells error messages-->
 | 
					<!-- look at nushells error messages -->
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[before](../nushell)
 | 
					[before](../nushell)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -250,7 +263,7 @@ available, wikipedia otherwise, and sorting is by year first, then alphabetical.
 | 
				
			||||||
|midnight commander|1994|c|
 | 
					|midnight commander|1994|c|
 | 
				
			||||||
|ssh|1995|c|
 | 
					|ssh|1995|c|
 | 
				
			||||||
|[curl](https://github.com/curl/curl)|1996|c|
 | 
					|[curl](https://github.com/curl/curl)|1996|c|
 | 
				
			||||||
|[fish](https://fishshell.com/)|2005|c/rust|
 | 
					|[fish](https://fishshell.com/)|2005|c (currently being rewritten in rust)|
 | 
				
			||||||
|[fossil](https://fossil-scm.org/home/doc/trunk/www/index.wiki)|2006|c|
 | 
					|[fossil](https://fossil-scm.org/home/doc/trunk/www/index.wiki)|2006|c|
 | 
				
			||||||
|[tmux](https://github.com/tmux/tmux)|2007|c|
 | 
					|[tmux](https://github.com/tmux/tmux)|2007|c|
 | 
				
			||||||
|[git](https://git-scm.com/)|2008|c|
 | 
					|[git](https://git-scm.com/)|2008|c|
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -6,35 +6,40 @@ draft = false
 | 
				
			||||||
image = "keyboard_with_case"
 | 
					image = "keyboard_with_case"
 | 
				
			||||||
+++
 | 
					+++
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Ive been using a split keyboard at home now for several years,
 | 
					Ive been using a split keyboard at home now for several years
 | 
				
			||||||
(specifically, the [UHKv2](https://ultimatehackingkeyboard.com/), though nowadays I probably would have gone for something ortholinear)
 | 
					(specifically, the [UHKv2](https://ultimatehackingkeyboard.com/), though nowadays I probably would have gone for something ortholinear)
 | 
				
			||||||
and ive always wanted one for the office.
 | 
					and ive always wanted one for the office.
 | 
				
			||||||
The problem was, if I was going to get a new keyboard,
 | 
					The problem was, if I was going to get a new keyboard,
 | 
				
			||||||
I wanted it to be for both the office and travel,
 | 
					I wanted it to be for both the office and travel,
 | 
				
			||||||
and most prebuilts around are not that portable.
 | 
					and most prebuilts around are not that portable.
 | 
				
			||||||
I also was not confident enough in my soldering skills to solder the SMT diodes found on many handbuilt designs out there.
 | 
					I also was not confident enough in my soldering skills to solder the SMT diodes found on many handbuilt designs out there.
 | 
				
			||||||
Eventually, though, I stumbled upon the github page for the [Ferris Sweep](https://github.com/davidphilipbarr/Sweep).
 | 
					Eventually though, I stumbled upon the github page for the [Ferris Sweep](https://github.com/davidphilipbarr/Sweep).
 | 
				
			||||||
 | 
					
 | 
				
			||||||
## The Basic Build
 | 
					## The Basic Build
 | 
				
			||||||
 | 
					
 | 
				
			||||||
The Sweep seemed simple enough that I could assemble it,
 | 
					The Sweep seemed simple enough that I could assemble it,
 | 
				
			||||||
and after doing some shopping around, I was able to source all the parts I needed for under $100.
 | 
					and after doing some shopping around,
 | 
				
			||||||
 | 
					I was able to source all the parts I needed for under $100.
 | 
				
			||||||
I ordered the pcb from JLPCB and the parts from [Keebio](https://keeb.io/) and [Lowprob.ca](https://lowprokb.ca/),
 | 
					I ordered the pcb from JLPCB and the parts from [Keebio](https://keeb.io/) and [Lowprob.ca](https://lowprokb.ca/),
 | 
				
			||||||
and started the long wait for it all to arrive.
 | 
					and started the long wait for it all to arrive.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
In the meantime, I researched what how to flash the [elite-pi](https://docs.keeb.io/elite-pi-guide)'s I had purchased with QMK.
 | 
					In the meantime, I researched how to flash the [elite-pi](https://docs.keeb.io/elite-pi-guide)'s I had purchased with QMK.
 | 
				
			||||||
(normal elite-c's were out of stock, and I like the RP2040.)
 | 
					(Normal elite-c's were out of stock, and I like the RP2040.)
 | 
				
			||||||
its a little bit different, but as long as you have used QMK before, it wasnt much extra to that.
 | 
					Its a little bit different, but as long as you have used QMK before, it isnt much extra.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
When the parts came, I socketed the microcontrollers, soldered the sockets to the pcbs,
 | 
					When the parts came,
 | 
				
			||||||
and finally soldered the switches in. (I used choc purpz, a bit of a leap of faith from my usual heavy tactile switches).
 | 
					I socketed the microcontrollers,
 | 
				
			||||||
 | 
					soldered the sockets to the pcbs,
 | 
				
			||||||
 | 
					and finally soldered the switches in.
 | 
				
			||||||
 | 
					(I used choc purpz, a bit of a leap of faith from my usual heavy tactile switches).
 | 
				
			||||||
I did ruin one switch by letting a leg getting hot enough to melt the housing plastic,
 | 
					I did ruin one switch by letting a leg getting hot enough to melt the housing plastic,
 | 
				
			||||||
and desoldering it was unexpectedly difficult, but not every build can be mistake free, right?
 | 
					and desoldering it was unexpectedly difficult,
 | 
				
			||||||
 | 
					but not every build can be mistake free, right?
 | 
				
			||||||
 | 
					
 | 
				
			||||||

 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Flashing QMK was uneventful, working exactly as the [QMK docs](https://github.com/qmk/qmk_firmware/tree/master/keyboards/ferris/sweep) for the Ferris Sweep suggested.
 | 
					Flashing QMK was uneventful, working exactly as the [QMK docs](https://github.com/qmk/qmk_firmware/tree/master/keyboards/ferris/sweep) for the Ferris Sweep suggested.
 | 
				
			||||||
I would, however, recommend flashing the micros _before_ doing any soldering,
 | 
					I would, however, recommend flashing the micros *before* doing any soldering,
 | 
				
			||||||
I had to take my micros out of their sockets in order to access the boot buttons.
 | 
					I had to take my micros out of their sockets in order to access the boot buttons.
 | 
				
			||||||
(once the keyboard is assembled, there is a dedicated keycombo on most layouts to enter the bootloader,
 | 
					(once the keyboard is assembled, there is a dedicated keycombo on most layouts to enter the bootloader,
 | 
				
			||||||
so you dont have to do this every time you reflash your keyboard)
 | 
					so you dont have to do this every time you reflash your keyboard)
 | 
				
			||||||
| 
						 | 
					@ -52,7 +57,7 @@ I moved the numpad layer to my right hand side, swapping its position with the f
 | 
				
			||||||
I also put the meta key as a hold-mod on the lower pinky keys, as my window manager uses it for all its keybinds.
 | 
					I also put the meta key as a hold-mod on the lower pinky keys, as my window manager uses it for all its keybinds.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
The mod-tap home row layer changes actually feel really natural,
 | 
					The mod-tap home row layer changes actually feel really natural,
 | 
				
			||||||
and the extra space afforded by layers allows me to organize things in a more natural feeing way,
 | 
					and the extra space afforded by layers allows me to organize things in a more natural feeling way,
 | 
				
			||||||
such as putting the numbers in a numpad layout, rather than along the top.
 | 
					such as putting the numbers in a numpad layout, rather than along the top.
 | 
				
			||||||
Im not quite happy with my modifiers being mod-taps on the bottom row,
 | 
					Im not quite happy with my modifiers being mod-taps on the bottom row,
 | 
				
			||||||
they can feel slightly awkward to reach,
 | 
					they can feel slightly awkward to reach,
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -4,8 +4,8 @@ date = 2024-03-01T11:34:04-06:00
 | 
				
			||||||
+++
 | 
					+++
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Ive been experimenting with the tools I use on a regular basis lately -- switching
 | 
					Ive been experimenting with the tools I use on a regular basis lately -- switching
 | 
				
			||||||
up my shell, terminal multiplexer, and even trying out other editors. Today,
 | 
					up my shell, terminal multiplexer, and even trying out other editors.
 | 
				
			||||||
Id like to focus on my experiments with my shell.
 | 
					Today, Id like to focus on my experiments with my shell.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
## My old setup
 | 
					## My old setup
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue