Skip to content

Commit

Permalink
blog: New post on AI and how it impacts learning; General blog updates
Browse files Browse the repository at this point in the history
  • Loading branch information
nicosalm committed Sep 29, 2024
1 parent 53f0df7 commit 13ad08f
Show file tree
Hide file tree
Showing 5 changed files with 109 additions and 38 deletions.
36 changes: 14 additions & 22 deletions src/pages/blog/cli-productivity/index.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -2,50 +2,42 @@
layout: ../../../layouts/BlogLayout.astro
pubDate: 2024/04/24
title: "Spotlight: CLI Productivity"
description: "My command-line-centric workflow where I do my best work."
description: "My Command-Line-Centric Workflow Where I Do My Best Work"
---

import BlogPicture from '../../../components/BlogPicture.astro';

# command line productivity
*You can achieve peak productivity with nothing but the command line and your web browser. I will describe my minimal, focused, keyboard-centric workflow where I do my best work.*

## Intro
## Motivation

You can achieve peak productivity with nothing but the command line and your web browser. I will describe my minimal, focused, keyboard-centric workflow where I do my best work.
The purpose of this article isn’t to persuade you to radically overhaul your development workflow overnight, nor is it a critique of “mainstream” editors and IDEs. My aim is to share my perspective and introduce you to the tools that have worked well for me.

The goal of this article is not to convince you to make monumental changes in your developer workflow overnight, nor is it a hit-job against “mainstream” editors and IDEs. My intention is to expose you to my perspective and the tools which work for me.
In my view, there are two distinct areas of technical productivity:

There are, in my mind, two distinct domains of technical productivity:
On one side, you have foundational tools like Git and GitHub—vital systems that revolutionize how you manage projects. They’re your safety net when things go wrong and should be part of every developer's toolkit. However, they aren’t the focus of this article.

On one hand, you have tools like Git and Github. They are essential overhauls to how you approach work. They save the day when things go awry, and should be used in every single case. They will not be the focus of this article.
On the other side, there are tools designed to genuinely accelerate your coding process and task completion. That’s what I’ll be highlighting today.

On the other hand, there are tools which genuinely increase the rate at which you produce code and complete tasks. This is what I am showcasing today.
## Multiplexing

Let's go!

---

## tmux

When you dedicate a lot of time in your terminal, I think you pretty quickly realize it can become cumbersome. In the web browser you can create new tabs and swiftly `ALT-TAB` between them. You can bookmark and return to your workspace at will. And I guess there’s a parallel here – you can make a bunch of terminal windows, and that works… sort of. But you have to reopen everything with each new terminal instance.
When you dedicate a lot of time in your terminal, it quickly becomes apparent how cumbersome it can get. In a web browser, you can create new tabs and swiftly `ALT-TAB` between them. You can bookmark and return to your workspace at will. There’s a parallel here—you can open multiple terminal windows, and that works… sort of. But you still have to reopen everything with each new terminal instance.

I found something much better. It does exactly what I want. It’s called [TMUX](https://tmuxcheatsheet.com/how-to-install-tmux/).

`tmux` is a terminal multiplexer.

<BlogPicture src="https://omniti.com/i/terminal_multiplexing_before_and_after-small.png" alt="Multiplexing Diagram" />

A terminal multiplexer is a program which transparently “stands between” your active terminal connection and <i>K</i> spawned terminal sessions. With TMUX, you can start a session, open new windows and hotkey between them. You can detach and reattach to sessions at will. In other words, you can put a session down and pick it up later and it will be exactly how you left it. With a plugin, these sessions can even persist even across system restarts.

TMUX is really neat and if you plan on doing ANY work in the terminal, it saves an incredible amount of time. Install it.
A terminal multiplexer is a program that transparently “sits between” your active terminal connection and <i>K</i> spawned terminal sessions. With TMUX, you can start a session, open new windows, and hotkey between them. You can detach and reattach to sessions at will. In other words, you can set a session aside and return to it later, and everything will be exactly how you left it. With a plugin, these sessions can even persist across system restarts.

### customization
TMUX is incredibly useful, and if you plan on doing **any** serious work in the terminal, it will save you a huge amount of time. Go ahead and install it.

When you start TMUX, the program looks for a .dotfile[^1] at `~/.tmux.conf`. This single plain-text file is where you can set up and “rice out”[^2] your multiplexer. You begin by adding a plugin manager, [tpm](https://github.com/tmux-plugins/tpm), and then using it to load a couple plugins and a nice theme[^3].
### Customization

---
When you start TMUX, the program looks for a .dotfile[^1] at `~/.tmux.conf`. This plain-text file is where you can configure and "rice out"[^2] your multiplexer. You’ll begin by adding a plugin manager, [tpm](https://github.com/tmux-plugins/tpm), and then use it to load a few plugins and a nice theme[^3].

## Vim
## Vim As Your Editor

I’ve been using Vim for about two years. When we mention Vim, it’s usually in one of two contexts: `vim` (the program), or Vim Motions.

Expand Down
48 changes: 33 additions & 15 deletions src/pages/blog/ergonomics/index.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -2,12 +2,12 @@
layout: ../../../layouts/BlogLayout.astro
pubDate: 2024/08/18
title: "Preserving my Future Self"
description: "Improving my health and reducing strain with these ergonomic setup modifications."
description: "My Ergonomic Overhaul to Improve Health and Reduce Strain"
---

import BlogPicture from '../../../components/BlogPicture.astro';

### Introduction
### Motivation

Humans have a natural aversion to change and it makes adjusting daily routines difficult. A month ago,
I embarked on a journey to overhaul my typing experience by learning not just a new keyboard layout but also
Expand All @@ -16,51 +16,66 @@ to share my impressions after a month of using a split, ortholinear keyboard cal
I paired this with the [Colemak-DH keyboard layout](https://colemakmods.github.io/mod-dh/).

But why? — Why go through so much work? Will it make me type blazingly fast? Well, no, although I believe the ceiling has been raised
inadvertently. I chose to refactor my workflow because of vast ergonomic benefit which promises to preserve my physical health. I
did this for me ten years from now.
inadvertently.

### Adjustment: Rebuilding Muscle Memory
I chose to refactor my workflow for one reason alone: the vast ergonomic benefit which promises to preserve my physical health. I
did this for me ten years from now[^1].

### Rebuilding Muscle Memory

A lot of experts and articles will advise slowly adjusting to a new keyboard layout over time, perhaps adding
in a small subsection of the keyboard each week. That's lame and takes too long, so I erased my muscle
memory in one go and just went for it. I unplugged my old keyboard and set up my Voyager. Split keyboard,
blank keycaps, and an entirely new keyboard schema with a symbols layer.
in a small subsection of the keyboard each week. I think that is fair, but not for me[^2]. Instead, I erased my muscle
memory in one sweep and just went for it.

I unplugged my old keyboard and set up my Voyager. Split keyboard, blank keycaps, and an entirely new keyboard schema with a symbols layer. Challenge accepted.

I began with typing websites. I introduced one letter at a time, building familiarity:

<BlogPicture src="https://cdn.discordapp.com/attachments/1089411233788203153/1226887612887859250/CleanShot_2024-04-08_at_08.33.102x.png?ex=66f95721&is=66f805a1&hm=3349b6fbe3867c208e5b2430ecb55820e58104a8d1493015767dd8488d94f055&" alt="Keys" />

I saw gradual but consistent progression. It was like a game:

<BlogPicture src="https://cdn.discordapp.com/attachments/1089411233788203153/1226212970309357629/CleanShot_2024-04-06_at_11.51.332x.png?ex=66f985d2&is=66f83452&hm=fd3d5fe40383fb4aef0eb4dcaefa33be9c777ea963a0fe9776e6eb7c1a20c293&" alt="Progression" />

I eventually unlocked the entire keyboard. Including numbers and symbols. After a month of practice, I'm now typing at ~70 wpm down from my previous average of ~125.

In time, I transitioned from typing websites to real projects, coursework, and general day-to-day productivity. I see a strong linear trend and I am confident it is only a matter of time until I meet my old personal best.

After a month of practice, I'm now typing at ~70 wpm down from my previous average of ~125. I mapped my
typing speed on a website and I see a clear linear trend, so it's safe to say it's only a matter of time.

### Breaking Down the Changes

#### 1. The Voyager Split Keyboard: Ergonomics First
I changed many things about my setup. I think there's value in analyzing each change and the impact it brought my way.

#### 1. The Voyager Split Keyboard

The Voyager split keyboard is a revelation. My [IQUNIX F97 Hitchhiker](https://iqunix.store/collections/hitchhiker-series/products/f97-hitchhiker)
is an excellent pre-built keyboard, but the Voyager implements a handful of essential improvements.
With the split design, my hands rest more naturally, and my shoulders are no longer pulled inward.
This alignment improvement alone has made typing for extended periods significantly more
comfortable and eased the constant, dull pain between my shoulder blades.

#### 2. Ortholinear Keys: Stop Staggering!
#### 2. Ortholinear Keys

Ortholinear keys, where keys are aligned in a grid rather than staggered, are simply better.
The staggered design we’re all used to was born out of typewriter constraints, not ergonomics. With
ortholinear keys, every finger's movement feels more intentional and precise.

#### 3. Proper 10-Finger Touch-Typing: Less Strain, More Gain
#### 3. Proper 10-Finger Touch-Typing

One of the biggest changes I’ve made is enforcing proper 10-finger touch-typing. Paired with the key layout
of the Voyager, using all ten fingers has effectively eliminated moving my hand to reach for a key.
Each finger is responsible for a column of keys on the keyboard. I also eliminated some of my bad habits!
In the past, some fingers took on more responsibility than they ought to, and this fixed that.

#### 4. Colemak-DH Layout: The Home Row Hero
#### 4. Colemak-DH Layout

Colemak-DH takes the already ergonomic Colemak layout and makes it even better by keeping your most-used
keys on the home row. It’s designed to minimize finger movement and keep your hands
comfortable while typing. For someone like me, who spends a significant amount of time programming,
the inclusion of a symbol layer (where symbols are mapped to easily accessible keys) is revolutionary.
The result? A layout that’s not only ergonomic but also extremely fast.

### The Bigger Picture: Chairs, Posture, and Avoiding Upper Crossed Syndrome
### The Bigger Picture

While I’m optimizing my typing setup, it’s crucial not to overlook the importance of overall
posture. After all, no keyboard layout can save you from the effects of poor posture. I’ve been
Expand All @@ -83,3 +98,6 @@ like a worthwhile investment in my professional workflow.

The journey is just beginning, and I look forward to seeing how much my typing speed and comfort
improve over the coming months. Stay tuned for updates!

[^1]: As a programmer, I will spend the majority of my professional career at a desk.
[^2]: I am a firm believer of ripping of the band-aid. I would rather get it all over in one go.
2 changes: 1 addition & 1 deletion src/pages/blog/mit-iquhack24/index.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
layout: ../../../layouts/BlogLayout.astro
pubDate: 2024/01/21
title: "MIT's IQuHACK 2024"
description: "We secured a top 3 finish at MIT's quantum hackathon, IQuHACK. Here are my outtakes and experience."
description: "We Secured a Top 3 Finish at MIT's Quantum Hackathon"
---
import BlogPicture from '../../../components/BlogPicture.astro';

Expand Down
Binary file added src/pages/blog/the-hollow-path/hero.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading

0 comments on commit 13ad08f

Please sign in to comment.