corneretageres.com

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.

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!