console.blog()

a "technical" "blog" by Eric Zheng

My Software
Summary: these are a few of my favorite things

I must apologize: I originally had an epic (at least in my mind) post (or even series of posts) that I was planning to write about a really cool (at least I think) project that I’ve begun. However, I will not be posting about it because:

  1. I haven’t actually finished the project yet.
  2. Marking period 3 posts are due tonight, and I don’t think I can write up what I have in time.

So, without further ado, I present you the low hanging fruit of any computer-related blog: a post about my personal software recommendations based on what I like to use!

Those of you know know me probably know that I mainly use Debian Linux, so these recommendations are obviously going to be fairly Linux-centric. If you don’t use Linux, you are probably either:

  1. Some weird hippie BSD user who doesn’t care what I have to say about software
  2. Severely misinformed

I’ll split this post by software type so that it’s easier to navigate.


terminal stuffs

Like most computer nerds, I spend a lot of time in the terminal, so it’s nice to customize things a bit and get cozy. (Actually, I once made an attempt to put my configuration/dotfiles online, but they’re now somewhat outdated.) I’m sorry, Bryan, but I still use bash, mostly because I can’t be bothered to change my ways. That being said, I do highly recommend tmux, a terminal multiplexer. tmux allows you to split your terminal into multiple panes, which is really nice for productivity. Plus, it makes me feel like a legit hacker. (Yes, I am well aware of the timestamp in the screenshot below. Stop judging me.)

tmux


general productivity software

I haven’t found much need for conventional word processing software, but LibreOffice has suited me well on the rare occassions that I’ve needed it. Generally, I work on either:

  1. Lightweight documents (e.g. schoolwork), for which I benefit massively from Google Doc’s baked-in collaboration, easy access from multiple devices, and integration with Google Classroom. I won’t bother screenshotting Google Docs for obvious reasons.
  2. More complex documents, for which I benefit from LaTeX’s superior typesetting (especially with math) and possibly cleaner semantics. This is what LaTeX markup and rendering looks like:

latex


software development

Since I like to hop around a lot, mostly work on small-ish projects, and don’t like very heavyweight toolchains, I generally dislike big IDEs. Honestly, I’ve found even a text editor like Atom to be rather cumbersome (I don’t like the bloat of having to fire up Electron every time I want to write something.) I mostly write code in Vim, which is a notoriously difficult to use yet extremely lightweight editor. (Hey, at least it’s not ed!) Actually, I happen to be typing this post in Vim. I’m not particularly good with it yet, but it’s getting to the point where it’s actually pleasant to use.

For the actual compilation/execution of software, I stick to your traditional command-line compilers/interpreters: good old gcc for C, ghc for Haskell, etc. Like 90% of software developers under a certain age, I mostly manage code with git. I used to run a personal git server for things I didn’t want to put on Github until my AWS free tier trial expired.


specialized domains

For some more specialized software domains:

  • Browser: arguably the program one would expect to spend the most time in these days. I mostly stick to the tried-and-true Firefox.
  • Video editing: not something I do much, but it’s nice to have quality software for the times I need it. I used to like DaVinci Resolve a lot (it’s technically color grading software with a pretty good video editor), since it’s industry-grade software that’s been released for free. However, I’ve found that it doesn’t play well with Debian, so I’ve switched to Kdenlive, which has the added bonus of being free/open source. It’s also very attractive software (shown below with a white screen because that’s all I could find on my desktop at the moment):

kdenlive

  • Animation: did someone say seamless animation? Like video editing, I don’t animate much, but it’s nice to have a go-to animation software that I’m familiar with whenever I need it. I used to use Adobe Animate CC until I switched to Linux. I mostly use Synfig Studio now. It gets the job done, but it’s extremely finnicky: one must be sure to save frequently, lest one lose one’s work in an all-too-frequent crash.
  • Photo editing: this is slightly more useful than video editing. As one might expect, I use GIMP.
  • CAD: I’ve already written a post about this. To summarize: I use Autodesk Inventor, although there are definitely many things I don’t like about it. I’m open to suggestions if you have any.
  • Scientific computing: I want to get into MATLAB/Octave, but my go-to is numpy and matplotlib. It’s very convenient to be able to do scientific computing in a language with which I’m already quite familiar. I have dabbled with the GNU Scientific Library in C…let’s just say that I won’t be dabbling with it again if I can help it. Just the other day, I decided to install Anaconda/Jupyter/all that stuff. I actually kind of like the interactive notebook idea, although I don’t have much experience with it. It reminds me of literate programming. Judge for yourself:

jupyter

octave


summary

Honestly, that’s about it. If you’re up for a change or liked anything I shared in this post, I would encourage you to try it. If you have any recommendations for me (whether it be GNOME extensions, command line clients, or anything else), I’d love to hear them. (And no, Sam Alws, “use dwm” does not count as a valid suggestion.)


addendum (4/28)

As always, I have an update after grading is over: I’ve finally decided to spruce up my terminal with some stylish themes/messing around with $PS1. You can see the results of my effort below, and you can try it out for yourself here.

shiny and new

Also, with regard to scientific computing, I noticed that I can get Mathematica for free from my university, so I went ahead and tried it. My first impressions are extremely positive; besides its obvious strength in symbolic computing, I was shocked by the sophistication of the built-in natural language processing. I’ll probably mostly stick to my current Python stack, but this is a really neat tool to have. I can tell Mathematica in plain English to plot a function, get the current price of Bitcoin, and even easily get the current coordinates of the nearest GPS satellite!

mathematica