32
votes
Which are your top five computer programs?
In terms of
- Utility: It is useful!
- Reliability: It will always work when you need it to!
- Uniqueness: It gives you the option of doing things that would never have been necessary before it came along.
- Aesthetic: It satisfies your sense of beauty: It gives you the same kind of feeling a painting or a poem would.
- Transcendence: It transcends the zeitgeist and is the simplest it can and thus ought to be.
Mine are:
Firefox: It's a damn fine browser run by a damn fine team, and works well for like 98% of my browsing needs, and the other 2% are weird, inconsistent failures.
Vim: Once you learn the basics, it's almost impossible to use anything else. As a predominantly Windows user, I hate Notepad, but use it because I'm rarely doing text editing. In Linux, it's vim.
SuperCollider: You can code synthesizers and make music, in a way that is in some ways a bit more intuitive than a DAW. Honorable mention to TidalCycles and FoxDot, two of the best environments for interacting with SC, but SC's JITlib is pretty powerful anyway, and what they're built around.
Renoise: For making music, the tracker interface always made more sense to me with its straightforward representation of all data values, and you can program your sequences with just a computer keyboard. After a year on OpenMPT and another on Buzz (RIP) and Aldrin (also RIP), I decided to shell out for Renoise. Seven years later, and it's my favorite DAW. Renoise is also important because if its modular interface, even if it isn't as obvious as Buzz or Radium's pseudo cable-routing systems.
The i3 window manager: Back when I started learning Linux, I fell in love with wmii after about a year using DWM. It's the current hype for the *nix ricing crowd, the kids who want to look like l33t hax0rs and such, but it's also just damn fine software. If I'm doing a live-coding session with tidalcycles, I'll use i3 because I can cut my distractions down and put my windows precisely where I want them with minimal effort. Around 2010-2012 there were a lot of random WMs coming out, but i3 seems to be the most popular for good reason.
<3
Always nice to see i3 mentioned, it really is a solid piece of software. I recently dug up my old config and started using it again - I originally started using it on a chromebook because I didn't need a mouse to use all the features properly, and the trackpad it had was horrible.
I went back to it because I found I was wasting time arranging windows properly while I should've been working, and as you say now I can cut down on distractions and actually get some work done :)
oh man, I forgot to mention i3. I use i3 for linux and Yabai for macOS. i3 is better, but yabai is good, all things considered.
There is little in life better than a good TWM.
That's exactly what I use awesomeWM for! Been using it for a decade now. I think once one gets used to software like i3, awesomeWM, DWM, etc., all standard interfaces feel too imprisoning.
One of my favorite pieces of software is
ffmpeg
. For the most part, if you can think of something you need to do to audio or video,ffmpeg
has a way.I'm with you re: the Lucas Arts point and clicks. I was DEEP into Monkey Island and Maniac Mansion. So many solid titles.
Another piece of software I truly love is Foobar2000. It's the only reason I have Windows in my life (on my HTPC.) I run Foobar2000 on my other systems in WINE, but I mostly use the Windows box for it. The software is perfect -- it can be as fancy or as minimal as you choose.
Weechat is another gem that is inline with Foobar2000 when it comes to customization. For IRC, I don't see why anybody would use anything else. I love software that just works, and weechat is in this boat.
I'm curious about people's music listening habits: Everyone around me seems to be content with spotify, while I'm the only one who enjoys owning albums, organizing music, converting formats, etc. The existence of software like foobar2k and quod libet indicate that there are lots of people like me out there who haven't put all their eggs in spotify (I use mpd+ncmpcpp). I'd really like to see some data on this.
I'm another in the "own library" + mpd camp, although I usually use Cantata (KDE/Qt also has an MPRIS interface) or KDE Connect/M.A.L.P (Android) for clients.
I do, however, use Google Music for its radio feature. In my experience it works better than Pandora used to for introducing me to new artists. I also really like that I can upload my own library and then easily stream it to my phone when I'm away from home, which is the killer feature that keeps me using Google over Spotify.
So mpd for "serious" listening at home, and GPM for discovery and streaming on the go. There's some noise about Google switching to/replacing the service with YouTube Music in the future, but it's not clear to me what that means for the upload feature. If they drop that I'll probably just move to Spotify for streaming, or finally get around to setting up my own streaming server.
I am in the Spotify camp these days.
For close to fifteen years I used first Winamp, then later Foobar2000 to manage playlists and put them on various portable devices.
I also had a couple other programs, Windows things from when I had Windows on my machines. I forget the names of both, but one was for renaming and handling meta information in bulk, and one was a volumizer.
It was nice to be able to have so much music and so much control, and countless hours could be spent customizing things and tweaking and making everything just so.
As I started doing more office work, and getting software gigs, I found my passion for building playlists, hunting down more music, and doing backups to get less and less as my other mandatory keyboard time increased. I experimented with Rhapsody, 8tracks, a couple others. They each had their own weak points, so I kept the music collection but just put less energy into it.
At some point, the only piece of Windows software I could find that was capable of interfacing with my iPod Classic was Foobar2000, and an update or something made it so that a user had to do some convoluted thing like download iTunes, extract some files out of it, and chant in a foreign tongue under the first full moon of November, and maybe it would work.
I did it once, it took me like half a day; when it stopped working I just bailed on the whole thing completely.
It's weird to think about now, but for a couple years I mostly stopped listening to music. I was busy with a big learning curve at a new dev position and family stuff going on, and I completely stopped putting energy into it.
Eventually I started listening at the computer to some of the services that came and went for a while, and then one day Spotify all of a sudden got popular and good, and that's that.
The "all your eggs in Spotify" is a valid concern, but I'm not worried about becoming unable to listen to music because of it. Something would fill the void. If anything, I want to see Spotify get as much support as possible.
If Spotify goes away, it would very likely be because they were dethroned or bought out by Google, Apple, or Amazon. IMHO, those guys already have big enough slices of the pie.
I use Spotify to discover new music then load it up on my PSP for listening. On my PC I don't have any set music player. Usually Lollipop.
I could never wrap my head around configuration for beets or the other command line stuff so I use Quod Libet and manage my collection manually (tagging with MusicBrainz Picard, flac compression for archival, transcoding to opus for streaming, moving files to NAS, backups, etc).
MusicBee was my music player and library management tool back when I still used Windows.
The real question: does it have a UPnP server plug-in (a la foo_upnp + BubbleUPnP). Also, can it listen to an internet UPnP server (my self hosted box).
I'd be happy to switch to a native app, but the last time I tried I wasn't able to find any native Linux app that could meet this requirement on a few hours of searching (but maybe I just didn't find the right program).
My use case is fairly niche, but more broadly Fb2k has a pretty great plug-in ecosystem.
Boy '5. Transcendence' is a high bar. I don't think I could come up with 5 programs, but
git
- coming from a non-programming background, this program had a profound impact on how I think about systems and writing.python3
fuck
Haha! thefuck is hilarious!
locate
on linux, but miles better.Counterpoint: SublimeText
Main reason why it's better: multiselect functionality allows for quick multi-line text editing such as wrapping every word after a
,
in quotesI don't think Notepad++ and Sublime Text are competing in the same space. As someone who uses something similar (but in my opinion better) to Sublime, VS Code, I still often use Notepad++ because it's just way quicker and simpler if all I want is to read through a file.
For me the best hex editor is Okteta, because of one killer feature: structure definitions. Basically, you can write down an XML description of a binary structure, enable it in Okteta, select the first byte and the structure will be shown as a nice tree structure in a tool window. Click on a field in that tree structure, it will be highlighted in the editor. Got a more complicated structure with logic needed to decode it? Okteta got you covered, you can write a small JavaScript scripts doing the same, but dynamically.
I am seriously wondering why this feature seems to overlooked by everyone and missing from other editors.
Excel.
I once met a guy who had 3 of his top 5 programs be Excel, never 5/5 though.
Give me excel, word, MacOS, iOS and I am a happy man.
Only Excel fulfills this oddly worded requirement IMHO
This is going to be a pretty boring list with items that mostly explain themselves. I'm listing these based on how important they are to what I do every day.
The Unix shell. Bourne, Korn, C, TENEX C, Z, whatever. I was going to say the shell's
|
operator (so, so grateful Doug McIlroy exerted management prerogative to get that in!), but it's really the shell as a whole. Job control, input and output redirection, pipes, scripting (when I can't justify to coworkers / manglement that it'd be better to do it in another language), everything.nvi. Not vim. Not vi on Linux (which is almost always a painfully minimal vim). nvi, Keith Bostic's baby. nvi is an improvement over classic vi in a few ways, most notably in that it introduced unlimited undo. It definitely fits your criteria, particularly transcendence. It is a simple editor, without any syntax highlighting or language awareness or anything like that.
ssh, specifically OpenSSH. It is entirely reasonable to say that I would not be where I am in my career if ssh did not exist. Other editors exist, other shells exist, but ssh makes things possible that no other program does (rsh doesn't have nearly the same features, and of course is entirely lacking in security).
less. less is more (perhaps literally, depending upon your system and configuration). Traditional more didn't support scrolling back, which is annoying for seekable streams like files on disk but quite problematic for nonseekable streams like output from a program. less has evolved in much the same way as some programs people have listed here, like vim and mutt and ffmpeg, to have lots of options and features, but that one little bit of functionality, scrolling back, earns less a position in this list. It's like SMB3 compared to SMB1: being able to go back is a literal gamechanger.
man. I wouldn't know half of what I know about Unix and C without being able to read about them in manpages. I wish more things were documented with manpages. It's a lovely interface with decades-old standards that similarly meet the transcendence criterion. Beyond this, really good manpages (particularly those on OpenBSD, or those in far older Unixes) are an outright pleasure to read, both for their elucidating nature but also for the good writing. A good manpage documents not just the technical topic, but gives one an insight into the character of the developer, something that helps a user understand how something is intended to be used in a way that a mere description cannot provide.
Wow! Just learned about Doug McIlroy and came across this:
From here
I have PTSD from using openmailbox (which I chose over fastmail at the time because I found their "we're open/pure/clean" idealization a bit more compelling) a couple of years ago. The company went through an administration change and overnight made all mail inaccessible to users unless they made premium accounts and soon after just went invisible. I've been scared ever since to sign up for personal email outside google, even though I know I should. The question is one of trust: not just trust in the immediate, but long term capital T Trust. Not just "Do no evil", but "Never evil".
Windows's clipboard manager exists, but it's extremely barebones. Ditto supports, like, every feature I could want. The three biggest ones are:
I know GNOME used to have glipper, which was almost equivalent to Ditto (and I think might have even been able to sync with it), but it hasn't been maintained in a long time and no longer runs on modern Ubuntu. No other Linux clipboard manager I've tried has really felt that great.
I recently started using emacs (with evil, so I can keep some of my vim bindings I'm used to) and I'm quite impressed by how configurable it is, and how easy lisp was to grasp. I was introduced to it through TexMaCs, which my college recommended for getting documents ready & formatted to submit, and have ended up using regular emacs for most everything else since
fzf is really terrific. I use it in zsh but also use fzf.vim in vim and notational-fzf-vim as my primary notes app, which is really wonderful (think a combination of notational velocity / nvalt, vim, and fzf).
Kakoune looks like a very thoughtful successor to vim. Going to try it out!
(Neo)Vim. The former because it adds some very useful features, the later just because it's on every system and pretty good overall.
VLC. It Just Works (TM) unless it's a MIDI file, but I'm too lazy to try to get that working.
OneNote (desktop version). I depend on it to organize all my notes. Dumping everything in, being able to easily playback audio recordings, automatic OCRing, and being able to search everything has been a complete game-changer for me. My only gripes are a) not being able to specify when a printout is broken onto multiple pages and b) landscape PDFs are rotated (which is a pain whenever a professor uploads lecture slides as PDF, especially considering a printout of the powerpoint file wouldn't be incorrectly rotated). Honestly, OneNote is what prevents me from switching to Linux fulltime. I only use it for my classes, though, as my 365 license expires after I graduate.
Back when I used it, Foobar2000. I stopped using it because I started using Google Play Music for the most part, but I had worked on my plugin config for a long time.
wget - curl but when you just need to grab a file over HTTP.
In no particular order:
Python 3: all purpose programming language
Sublime Text 3: fast cross platform editor
Ack: configurable text search from command line
Trello: versatile platform for notes, lists, and more
Tmux: terminal multiplexer, because sometimes one plex is just not enough
If you like ack, you may like ag, the silver searcher which is rather like ack but much, much faster (a full order of magnitude faster). Once I learned about ag I uninstalled ack and haven't regretted it.
... that, and ag's maintainer is far more approachable than ack's.
I've been poking about with ripgrep a bit and will see whether it's faster for the kind of things I use ag for. In addition, as I'm using Rust a lot at work, it makes sense to take a closer look at the project.
Nice. I have seen people chatting about ripgrep on HN; didn't know about ag. I will check these out.
f.lux
is not Windows-only.I didn't know there was an android version, but I remember using f.lux on a mac and linux a while back - I don't know if they're maintained anymore but they exist
I think only ping meets the transcendence bar.
A bunch of other people have already touched on most of my favourites (unix shells, git), so I'll try to add something new:
Latex/Tex - For submitting papers/assignments/whatever, I used it even before I swapped to linux and MS word wasn't an option anymore. I always found myself fighting with word to try to get the formatting right, and had a couple instances where my version of word was older than my professor's and formatting got ruined - Latex -> pdfs fixed that for me, and let me focus more on the content of what I was writing than tiptoeing around Word to make sure the formatting worked. I don't think it's terribly unique (I think Word can also export to PDF now?) but it was certainty reliable, and a good skill to have now that I have to submit in latex (the PDF + source)
Retroarch/libretro - Emulators had been done before, but retroarch was the first good, unified interface to a lot of them I found. Coupled with ffmpeg, which can be built in now, it also runs my TV's PC and manages videos and music!
Wikipedia - Not sure if this one qualifies as a program per se, but being able to access knowledge on just about anything (in english, at least) at almost any time is pretty incredible
Not in any particular order:
find
(Unix)