New Tech Setup: Embracing NeoVim, Ollama, and More!
Written on
Greetings, Cloudlings!
As I continue my exploration in the tech realm, I felt it was time for an upgrade to my computer. My trusty MacBook Air, purchased as a new model two years before I took the Texas Bar in 2017, has served me well. However, with a declining battery life and only 256GB of storage, it was time to retire it.
After some contemplation, I opted to stick with a Mac. Nothing extravagant—just a reliable machine that I hope will last me another 3 to 4 years. As I delve into coding, development, cloud computing, and DevOps, I’ve come to appreciate the immense capabilities of the terminal, various coding tools, and applications that help tailor my machine to my needs.
In this article, I will share some of the fantastic applications and command-line tools I've integrated into my new setup, along with specific configurations I’ve established. I hope you find some valuable insights for your own workflow, just as I have from numerous articles on Medium and videos on YouTube.
System Search
Here’s a little secret: I had never utilized Spotlight for system searches until 2023—I didn't even know it was an option! If you’re unfamiliar, just press cmd + space on your Mac and see what pops up.
Spotlight is an excellent way to navigate your system without needing to leave the keyboard, ensuring you maintain your workflow. Interrupting your thought process to use a mouse can hinder productivity, so using this keyboard shortcut allows for seamless navigation.
I only began using Spotlight after watching a YouTube video about alternatives. If you think it could enhance your efficiency, I recommend checking out Alfred and Raycast as upgrades to Spotlight. They provide more functionalities, allowing you to search files, browse the web, perform calculations, and much more.
Alfred - Productivity App for macOS
Alfred is a powerful productivity application for macOS that enhances efficiency through hotkeys, keywords, and text expansion. www.alfredapp.com
Raycast - Supercharged Productivity
Raycast allows you to manage your tools with just a few keystrokes, designed to keep you focused. www.raycast.com
I’ve been using both Raycast and Alfred and enjoy them immensely, though I must admit Raycast has a more appealing aesthetic.
Applications
I've also incorporated several applications to help keep me organized and improve my overall experience.
Maccy: Maccy is a simple clipboard manager that keeps your copy history handy—lightweight and open-source.
Maccy:
maccy.app
CleanShotX: For documenting my tech journey, I wanted a better tool for screenshots and screen recordings. CleanShotX has been effective, especially since QuickTime's recordings can be large and cumbersome.
CleanShot X for Mac:
cleanshot.com
Rectangle: A fantastic window manager that enhances keyboard usage with numerous pre-configured shortcuts.
Rectangle:
rectangleapp.com
Today: A simple app for quick access to your daily calendar entries. It helps me stay on top of my monthly and project planning.
Today:
sindresorhus.com
Menu Bar Calendar: Similar to Today, but it gives access to your entire monthly calendar.
Menu Bar Calendar:
sindresorhus.com
Plain Text Editor: A straightforward text editor that helps me focus on writing without distractions.
Plain Text Editor:
sindresorhus.com
Obsidian
I must mention Obsidian, a vital tool for keeping track of and organizing everything I learn. In a world where tools like Notion are popular, I found that the extensive customization options of Notion became a distraction rather than a benefit.
Through my explorations, I discovered Obsidian—a knowledge management system that has become essential for compiling tech notes, study sheets for certifications, and interesting information.
Anything I wish to remember goes into my Obsidian vault. It’s user-friendly and designed to visualize connections between information.
Obsidian is essentially a markdown editor and local file organizer. When you create a vault, it simply acts as a folder on your device, allowing for organized file management.
I am currently utilizing a mix of the Zettelkasten system and the PARA method to stay organized and connect reusable resources with relevant notes.
As I become more privacy-conscious, I found the notion of cloud-based files uncomfortable. Obsidian offers a solution by keeping my files local while providing a simple interface for organization.
Obsidian: obsidian.md
NeoVim
If you’re reading this, you likely understand what an IDE (Integrated Development Environment) is—software that helps developers write, build, and debug code. I typically use VS Code, but recently discovered NeoVim while browsing YouTube, and it piqued my interest.
NeoVim is an extension of Vim, a text editor that has evolved since its inception in 1976. It enhances Vim by introducing features that make it suitable for coding, including plugin support through Lua, moving it closer to a full IDE.
I’m still navigating NeoVim myself, but I recommend checking out these YouTube videos to see how many programmers are embracing it:
There are different distributions of NeoVim, preloaded with essential plugins to facilitate coding right after installation.
I’m currently exploring NVChad and LunarVim, both popular variants that enhance the NeoVim experience.
NVChad: nvchad.com
LunarVim: www.lunarvim.org
Bruno
To complete my toolkit, I want to mention Bruno, an open-source API client I’ve been utilizing. Initially, I only encountered Postman and Insomnia, but later learned about Thunderclient as a VS Code extension.
While I’m not a full-time developer, Bruno has proven reliable, and I appreciate supporting open-source software.
Bruno: www.usebruno.com
Terminal Shenanigans
Now, let's dive into the terminal—the most efficient way to communicate directly with your computer's backend. As both Linux and macOS derive from Unix, their command lines share many similarities.
If you’ve used the terminal, it may look something like this:
The terminal application on a Mac is called Terminal, and it typically runs zsh as the shell. If you're venturing into hands-on tech, mastering the terminal is essential for efficient computer manipulation.
Last year, I began exploring Virtual Machines and SSH access, which opened my eyes to the world of terminal customization. I've discovered that the terminal application, shell, and prompt are all highly customizable.
There are various terminal emulators that replace the default Terminal app, offering enhanced speed and features. I've been trying Alacritty and Warp, both of which I enjoy, though I've focused more on customizing Alacritty.
Alacritty: github.com
Warp: www.warp.dev
Terminal Shell
The shell is the scripting language used to interact with your computer. Currently, I’ve focused on bash and fish—both achieve similar goals but with slight variations.
For example, in bash, you assign and access a variable like this:
name="John Doe" echo $name
Whereas in fish, it would look like this:
set name "John Doe" echo $name
While both shells will get you to the same end goal, bash is more widely used and is POSIX compliant, making it a better choice for professional purposes.
Terminal Prompt
The terminal prompt, while often overlooked, displays information about the machine and user. I opted for Starship, a third-party application for prompt customization, which allowed for an enjoyable customization process.
Starship: starship.rs
Nerd Fonts is also essential for nice icons and font customization in the terminal.
Nerd Fonts: www.nerdfonts.com
My current setup includes Alacritty with fish and Starship as the prompt, utilizing the SauceCodePro Nerd Font.
Terminal Utilities
This article has turned out longer than expected, so I’ll briefly mention some utilities that enhance terminal functionality. If any pique your interest, I encourage you to explore them further.
tmux: A terminal multiplexer that allows you to split your terminal window into sections for accessing multiple applications at once.
tmux:
github.com
thefuck: A humorous tool that corrects incorrectly entered commands.
thefuck:
github.com
btop: A resource monitor that provides detailed system information.
btop:
github.com
eza: A modern replacement for the ls command that adds more features.
eza:
github.com
fzf: A command-line fuzzy finder for searching through system files.
fzf:
github.com
zoxide: A smarter cd command that remembers previously used file paths.
zoxide:
github.com
ripgrep: An extension of the grep command for searching within files.
ripgrep:
github.com
bat: A tool that extends the cat command to display files with syntax highlighting.
bat:
github.com
tldr: A collection of simplified help pages for commands.
tldr:
github.com
navi: An interactive tool for creating or downloading command cheatsheets.
navi:
github.com
broot: A modern way to view and navigate directory trees.
broot:
github.com
devtoys: A versatile toolkit for developers.
devtoys:
github.com
Ollama
Finally, I want to highlight Ollama, an open-source application that utilizes large language models (LLMs). Ollama runs in the terminal and offers a GUI, allowing users to access GPT-like models locally.
Ollama also provides a coding assistant in VS Code, serving as an alternative to GitHub Copilot. I'm currently using the Continue extension to access downloaded LLMs within VS Code, offering a user-friendly interface for coding assistance.
Continue - Visual Studio Marketplace: marketplace.visualstudio.com
If Ollama intrigues you, I also recommend checking out HuggingFace and Kaggle's machine learning resources.
Hugging Face: huggingface.co
Kaggle: www.kaggle.com
I'm Finally Done
I’m exhausted from typing! I didn’t expect this article to be so lengthy, but I hope it provides new insights to enhance your productivity and workflows. Time for a break!
Catch you later in the Cloud!