Future-proof your skills with Linux, Python, vim & git as I share with you the most timeless and love-worthy tools in tech through my two great projects that work great together.

Teaching My Wife vim

I'm teaching my wife vim, which I use to copy and paste text files and back up code to Github. I've been using vim for decades, and I'm excited to help my wife learn this timeless technology. I overcame my own negative experience with vim to understand its importance, and I'm enjoying the meaningful experience of helping my wife learn it.

Learning Vim Together: My Journey of Teaching My Wife a Timeless Technology

By Michael Levin

Sunday, April 10, 2022

I’m in the process of teaching my wife vim. This was a long time in coming. I could tell from her watching me vim-journal from time to time that she had those pangs of “capability-jealousy” and I may have inadvertently triggered her by having to “think out loud” to myself as I typed and thought and thought and typed, right as I am doing right now. It may appear to be the ultimate meta-process, thinking out loud to yourself in vim, were it not for emacs. I think that thinking out loud to yourself in emacs would be even more meta.

But I digress. Clearly I’ve switched my mindset to public audience in my private journal typing here. Okay, commit myself:

:badd ../whatsametafor/index.md:
(smosh on k a bunch)
j & k to position

…and here I am typing again right under where I pasted. How’s that for meta for you? What just happened here is that I started out journaling for the day in my normal daily journal, which is in one folder under github (a consistent location I store all github repos) and I loaded a file from a folder sitting next to it, named for the site that’s published via Github.io Jekyll integration from there. So I’m web-publishing just by copy/pasting between text files and doing nothing more than the git commits and pushes that you’d do for any repo you kept in Github. In other words, there’s no more work to web-publishing these days than there is backing up your code to Github or some other git repository the way everyone should be doing these days anyway

My life: good dev habits lead to web-publishing merely by remembering to copy/paste the parts you write with an audience in mind to the appropriate text file. Better still, catch yourself early as your audience-targeting shifts and copy/paste immediately and continue your typing over in that repo, exclusively.

Sure it leaves the double-entry out of your main journal and a sense of everything-included continuity the main journal could acquire. But the theoretical value in that is far outweighed by the near certainty that the inspired writing is actually going to be committed and pushed in a timely and reasonable fashion. Too often I stay in my private journal thinking I’ll copy/paste later and I never do. Then it’s too much work to sort out public from private, because my mind is no longer in that same place it was when I wrote the material.

And so here I am on whatsametafor.io, one of my all-time best wordplay domain names and one of my few ventures into a non-.com TLD. I’m still a bit skeptical of .NET seeing as how even that was a target of Microsoft embrace-and-displace. TLDs other that .com are in various ways corruptible. We saw that with the .tv and .me extension where the issuing country can jack rates until nobody wants to renew. I gave up a myname.me domain over renewal rates. I used it as the custom domain for my personal Tumblr account, back when that was a thing.

Anyhoo, I think in vim. It’s clear when I’m “seen” typing. I have a different process than most. I was missing something in life. I knew what it felt like from time to time. It felt like Cygnus Editor on the old Amiga Computer, more commonly known as CED. I take that back. It’s not commonly known at all. In fact I’d be surprised if a single person ever reading this has ever heard of the CED editor on the Amiga before this. On Windows PCs circa Windows 3.1 and 95, there was PFE, the Programmer’s File Editor. PFE is a great editor even to today with it’s macro record/playback muscle-memory friendliness. I might even be still using it today if I didn’t have to become multi-platform (Macs, Linux, etc.) and it’s lack of syntax color-code highlighting. Yes, I do like some “power-tool” features, but thankfully so does Bram Moolenaar, the creator of vim. Vim is multi-platform, but really, get your ass on vim… on Linux.

People find “grounding” in different ways. I find grounding on screen number one in a ribbon of virtual desktops. All mainstream OS’s support them these days. They are accessed on Windows, the most dominant platform still today, by tapping the Windows+Tab key together. It’ll do a nice zoomed animated effect. Mac had this first slightly different by another name. It’s always that way. Get past the tiny OS difference. In 5 minutes you can adapt to that sort of tiny key remapping new-normal. It’s the lack of virtual desktops altogether that would be devastating, like what happened to me for a quarter-century after the Amiga computer went away, along with my beloved Amiga+N blazingly fast full-screen flipping it allowed… in the 80s!

Well ladies, gentlemen and others, modern mainstream tech has finally caught up to the kooky stuff from the 1980s, and it’s time you looked closely at these features and benefited. I can see that most won’t. Virtual desktops are a mystery and more of a hindrance to productivity with mysteriously disappearing loaded apps and inconsistent appearance of icons on the task-bar. This is a shame as it is the single largest productivity-boosting and quite grounding techniques one can use on computers these days.

You can organize your thoughts. They always occur in a full-screen instance of vim on the first in a ribbon of left-to-right virtual desktops… or at least they do for me. I am fully and firmly in the habit of having my first screen full-screen vim with the same text-file loaded all the time. It is my daily journal. I keep it for life. I occasionally back-fill it with text-archives I discover in from lost data-archives in personal archaeology excavations. And of course it can’t go THAT far back. I’m putting back scanning my personal paper journals which I kept until I came to New York and got married. For reasons I am only now beginning to understand, paper journals had to go away and I had to switch my thinking-out-loud methods off of paper and onto something which I knew had to feel like CED or PFE.

vim was first released for the Amiga computer in 1991 on Fred Fish disk 591. I remember this. I learned about it in the Philadelphia Amiga Users Group, of which I was president there for awhile, meeting at Drexel University, the first college to require all their incoming students, CompSci-majors or not, to buy computers. And there I was a student and leading the computer club for an “enemy” computer there on their campus. Amiga had a rebel streak. vim came out on a rebel computer. I briefly looked at vim, probably loaded it a few times, it didn’t truly “get” it was to be my future heir apparent to CED and PFE.

I forgot about vim for a few decades. Then Microsoft Active Server Pages went away. I invested my heart, soul and know-how into what I figured was dominant platform couldn’t-fail, wouldn’t let-me-down proprietary alternative to the LAMP platform. Linux, Apache, MyPHP and PERL were all a bit too scary for me at the time. Microsoft .asp-files with SQLServer and IIS was just easier. It’s what everyone had running in their business and making websites from that made me relevant and valuable in the marketplace. How quickly reality changes!

Your ability to easily manage your Web-code in the editor of your choice, such as PFE, EditPlus (which I used), NotePad++ and such also went away with the .asp world. A mere “x” was added: .aspx. Alas, in that x were a cascading and crushing set of details that made all the difference. If you wanted to make the move to ASP.NET you were using VSCode.NET or you were suffering. There was no way to manage all those codebehinds and viewstates if you didn’t fully lean-into and embrace marketing & fad-driven vendor products.

I “got it”. I finally understood that there were at least 2-classes of tech. There was timeless stuff that you just kept hearing of and it seemed to never go away. Then there was the stuff vendors were trying to make money off of you every year with. There was a third-class, really. But this third class was of the sort that no matter how good it was, it was going away anyway because of the volatility of the platform it was made for, the lack of ongoing developer support or dedication, and the non-portability between platforms. This are things like CED and PFE. Gems that shined bright for blips in time. Vim comes from vi that started shining bright in 1976 and is still shining bright in seemingly endless variety, including one dominant one today: vim.

I balked against vim at first. When I started dabbling with Mandrake Linux back in 1999 and toyed with moving Scala Multimedia’s Website over to LAMP from ASP a person I respected very little said in a pompous tone: “Well then I guess you’ll be brushing up on your vim skills” to which I shot-back, I can use pico/nano very effectively to edit text files, thank-you-very-much. Close brush number-two with vim. I did not switch to LAMP in the early 2000s. Instead, I stayed on ASP, moved to NYC, became a vice president of a public relations company, and slowly drifted into the oblivion of a bad marriage and sudden soil liquefaction of all the tech that gave me superpowers.

Ugh! The pain. The betrayal. I don’t learn things easily. And when I finally learned I had to get my ass of Microsoft and EVERYONE ELSE TOO whose intentions regarding my dependencies was not noble. And so I discovered free and open source software, it’s long, interesting history, and the text editor wars. I thought surely both emacs and vi must have died out by now. There could not be software so good from the 1960s and 70s that could still be in regular use today. How wrong I was. And when I corrected my wrongness and chose videogame-like muscle-memory-biased approach of vim over the deeply macro-oriented and customization-biased approach of emacs, I suffered my way through the first legs of my vim adventures… on Linux. Because I quickly learned, it had to be on Linux.

And so now I go through this same adventure with my wife.

It is deeply meaningful. It’s hard for me to imagine other people have similar “tool betrayal” issues as me that could lead them to such radical steps as dabbling in a non-graphical user interface these days.