CoC for Vim

A few weeks ago, I was looking into Typescript a bit.  I've heard lots of good things about it, but never had a chance to play with it.  However, I got tasked with some updates to my company's portal site.  (While not technically my team's responsibility, the portal team was swamped, so I agreed to make the required updates to support a  back-end feature my team added.)  And, of course, the portal team uses Typescript.

Naturally, most of the editing recommendations for Typescript are focused on Visual Studio Code.  But I like Vim, so I did a quick search and found this article, which led me to CoC (which I choose to pronounce "coke", like the soda), which stands for the slightly ungrammatical "Conquer of Completion".  It's a plugin for NeoVim and Vim that essentially does Intellisense (code completion, context popups, etc.) using language servers.

If you're not familiar, the Language Server Protocol (abbreviated LSP, though that always makes me think of the Liskov Substitution Principle) was developed by Microsoft for VS Code.  It's essentially a way to make Intellisense work without the editor having to implement support for each language.  It does this by defining a protocol that "clients" like an editor can use to communicate with a "language server".  The language server is a stand-alone program that can provide code intelligence for a particular language, but is not directly tied to any particular editor.  The server can then be called by any client that implements the protocol, which means that the editor itself doesn't actually have to know anything about the language to implement advanced editing features - which is huge.

Anyway, CoC is an LSP client for Vim.  And I have to say, it's awesome!  I've messed with a few code completion and LSP plugins in the past, but I never really got them to work right.  They were either difficult to configure, or required Vim to be built with particular non-standard options.  But CoC was dead-simple to set up.  The only catch is that you have to install the language servers separately, but it turns out that's super-simple as well.  (The ones I've used so far can all be installed through NPM.)

I'm still getting used to it, but having CoC is a game changer for Vim.  I'd given up on having this level of intelligence in my editor.  I mean, for something that supports as many languages as Vim, building it the old-fashioned way just isn't feasible.  But when you can use the same language servers as more modern editors to do the heavy lifting, suddenly it's no longer crazy.

The next step is to look into the available commands and customizations for CoC and see what I can come up with to optimize my experience.  So far it's a pretty cool tool and it definitely makes the development experience nicer.  I want to see what else I can do with it.


Maniac Mansion on NES

Unlike most episodes of "From the Archives", this one is just going to be current-day commentary. This was supposed to be a "linkblogging" post from way back on February 22, 2006. (That was probably not long after I added draft support to LnBlog!) However, it only had three links and I no longer care about two of them.

The one that is still good is Douglas Crockford's account of The Expurgation of Maniac Mansion for the Nintendo Entertainment System. (The URL has changed since 2006, but but luckily Doug was considerate enough to keep a redirect. However, this publication date is a little misleading.) It's about the back-and-forth they had with Nintendo when trying to port Maniac Mansion to the NES.

I remember playing Maniac Mansion on the NES. I rented it from Video Entertainment, the video rental store in the next town over, several times. I never finished the game, but I remember liking it. I never played the PC version, but even the NES version was more than a little weird.

This article is Crockford's account of some of the odd things that Nintendo insisted they remove from the NES version. They range from silly to head-scratching. But if you've ever heard anything about Nintendo's approval process for NES games, you know that they were very strict about maintaining a certain image and so were very particular about what kind of content they'd allow. Either way, it's an entertaining read.

Amazon MP3

Author's note: Welcome to another edition of "From the Archives", where I post some crappy, half-finished thing that's been sitting in my drafts folder for the last 10 years!

This articles is one I started on September 14, 2008, and apparently made some edits to on October 4, 2016 (don't ask me what they were). It's about Amazon Music, or as it used to be called Amazon MP3. Nobody cares about MP3 or any other specific format anymore, though. In fact, at this point I think most people just stream music through some app that doesn't even tell them what format it's in.

But back in the 2000's, it was all about MP3s. The only other format going was AAC, and only because that's what iTunes used. People would download these files and copy them to dedicated music playing devices. Yes kids, that was a thing. I had a bunch of those devices. They were fine at the time, but it's important to realize that this was in the days before high-speed data was ubiquitous and phones had tens of gigabytes of usable storage available.

Anyway, Amazon MP3 has since become Amazon Music and now focuses more on streaming than downloading. Fortunately, you can still download MP3s from Amazon Music, you now just have to do it through their desktop app. It's not too bad, but I actually don't like it as much as the download experience for the old AmazonMP3 version of the service. The app isn't really focused on that and they keep changing the interface.
And yes, I do still care about downloading the music I buy - that's why I have a Plex instance. I like to feel like I have some measure of control over digital products I buy, even if much of it is an illusion these days.

But anyway, that's enough from now. Back to 2008. Enjoy!

I've really gotten to like Amazon's MP3 download service. I've bought a number of songs and albumns through it in the last couple of months, and it's quite nice. In fact, it's what a music download service should be.

The big win for Amazon, of course, is selection. They might not have everything, but they come damn close. Nearly every other download service I've seen over the years had a limited selection. Great if you're into discovering new artists in particular genres, but they never had mainstream stuff.

The other main selling point for Amazon is price. You can buy individual songs for $0.99 or $0.89 (just as cheap as iTunes) and entire albumns at a discount. No subscriptions or other commitments required.

Aside from those obvious issues, the service is actually very well designed. For starters, it's web-friendly, which already puts it ahead of iTunes in my book. The searching and browsing works well and they have the usual Amazon suggestions and reviews. There's a nice little Flash app for song previews and Amazon's trademark one-click purchasing. It even works well in Opera for Linux, which is notorious for questionable Flash support.

The one non-web-friendly thing about AmazonMP3 is the download app. Instead of an actual MP3, you download a .amz file, which is handed off to this download app. It queues up the files for download and drops them in appropriately organized folders. Apparently it can also import them into iTunes and WMP too. That's about it, though. It's invoked by the browser as the file handler for .amz files and, really, that's the only way you'd ever run it. I mean, other than download files, it really doesn't do anything.


On the up side, the download app is widely supported and failry inocuous. It's available for Windows, Mac, Debian, Ubuntu, Fedora, and Open SuSE, so Linux people aren't left out in the cold. It's a small program, too. The Ubuntu package is a grand total of 772KB uncompressed. Hardly the massive 60MB iTunes package.

It's Olympics time!

It's finally time for the Olympics!  Hooray!

I was very disappointed that the Olympic games were postponed last year.  I'm not too big on watching sports, but the Olympics is the one event that I always look forward to.  And now that the pandemic has receded (at least to some extent), the games are on again.

The one problem with the Olympics is how to watch it.  The problem is that the NBC network has the exclusive rights to show the Olympics in the US.  So yea, I mean, it's on TV, but who watches regular old TV anymore?  I don't want to have to sit in front of the television and listen to commercials every 15 minutes.  And I don't want to have to watch at particular times (and I'm not about to set up a DVR just for one week).  As I recall from the last games, you could watch online, but you had to have a cable subscription.  I cut the cord years ago, and I'm certainly not going to call Spectrum to sign up and then spend an hour on hold trying to cancel the next week.

This year, though, things are better.  NBC now has a streaming service, PeacockTV, and it shows the Olympics!  I signed up for it this week and it's not too bad.  You do have to create an account, but it offers a free tier that includes some Olympic coverage.  I actually signed up for the premium tier because that gets you all of the events and there are "limited" ads.

I have yet to catch up on the opening ceremonies, but I did watch a few of the softball games.  So far, my only complaint is the "limited ads".  Maybe it'll be different for the top-tier events, but for the softball games, it turns out that "limited ads" appears to mean that they just take the normal TV footage and put a slide saying "the event will resume soon" where the ads would go.  But they don't actually cut out the commercial time, they just leave that slide up for two minutes.  And sometimes, they don't cut it correctly and you see the first or last 5 seconds of a Geico ad or something.  It's really kinda cheesy and bush-league.  You'd expect at least an attempt at professional editing from an organization like NBC, so it's clear that this feature is  very much an after-thought.

But regardless of shortcomings, it's nice to have a good, affordable streaming option available for the Olympics.  And it's even better to have one that does replays rather than requiring you to watch live.  So if you like watching the games and don't want to be tied to the prime-time TV schedule, I definitely recommend giving PeacockTV a look.

CaliMove Mobility Program Review

Several months ago, I posted a review of the Athlean-X programs I've done so far.  Since then, I decided to branch out a little and try some of the programs from Calisthenic Movement.  I'm a fan of their YouTube channel, which includes some extremely good exercise demos and other high-quality content, so I was confident I could trust their programs to be at least decent.  I decided to start with their Mobility program.

What is mobility and why would I train it?

Mobility training is quite different from the other programs I've done so far, which are focused on strength and athleticism.  Mobility is a completely different thing - it's about how much you can move your joints.  This is somewhat different from flexibility in that flexibility is about how far a joint can move in absolute terms, whereas mobility is about how far it can move under its own power, so to speak.  So, for example, if you bend your wrist backwards as far as you can using just  the muscles of that arm, that's mobility.  If you move it even farther back by pressing your hand against the wall, that's flexibility.

So why do a mobility program?  Well, I noticed my mobility was lacking.  The big sign for me was my shoulders.  I'd noticed that while my shoulder strength was definitely increasing (as measured by how much weight I could lift), I wasn't able to move them as far as I should.  For example, if I laid in bed with my arm above my head, it wouldn't lay flat.  It would just sort of hover because my shoulder wouldn't go that far without some additional pressure - it was just too tight.

I also had issues with squatting.  It was hard for me to get to a 90 degree knee bend, much less past that.  This is something I'd noticed with dumbbell squats and deadlifts, but it was also very apparent when attempting to do a plain, bodyweight deep squat.  I think that part of it might be an anatomical limitation in my left hip in particular (that one plays way out to the side when I flex it), but still - my range of motion was pretty miserable.  So I figured some mobility training would be helpful.

And you know what?  I was right - the CaliMove program really did help my mobility. But more on that later.

Program structure

As the webpage tells you, this is a six-month program, broken into three two-month phases, as well as a "prep week" to get you started.  The phases are progressive, so both the exercise volume and the difficulty of the exercises increases with each phase.

In addition, there's progression within each phase.  In the first two weeks, you get used to the phase.  In the second two, you increase the number of reps for each exercise.  Then in weeks 5 and 6, you keep the reps the same but add another day of training.  And then in the last two weeks you bump up the reps again.

After the main six-month training period, there are four additional workouts.  One is an advanced warmup/maintenance workout that aims to help you keep your mobility improvements.  There are also three specialized workouts targeted and making you mobile enough to do specific calisthenics techniques.  These are just stand-alone workouts that are structured in the same way as the rest of the program.  You can use them or not as you see fit.

In terms of the presentation, each phase starts with a presentation of the schedule and a summary of the routine for each week.  You get individual demonstration videos for each exercise which are very much in the style of their YouTube demo videos (so generally very good and helpful).  There is also a video demonstrating the routine, but it's abbreviated and sped up, so it's not something you can follow along with.

The primary tool you use to navigate is a graphic that illustrates the flow between exercises, each annotated with the number of reps and sets.  The graphic also includes a back/front/center symbol indicating your relative orientation for the exercise, which is cute but not especially helpful.  If you know how to do the exercise - which you should - this information is redundant.  But still, it's a nice summary and it looks good.

I only have two complaints about the presentation.  The first is that the mobile webpage isn't zoomable.  This isn't an issue if you're using a laptop or tablet, or if you're young and have good vision, but if you have bad eyesight like me, and you're trying to do this on a phone, then it can be hard to read the sets and reps.  The second is that while the workouts are clear about the sets and reps, the demo videos don't always make it 100% clear what constitutes a "set" or a "rep".  It's not enough to stop you from doing a productive workout (the actual technique is clear), but for some exercises it's a little ambiguous whether some movement sequence is a set, or a rep, or multiple reps.  You can easily end up doing too little or more than you need to depending on your interpretation.

My assessment

Overall, I found this to be a very good program.  I chose to do the mobility program at the same time as a strength training program.  This is advertised as being a totally reasonable thing to do with this program.  The first three months I did alongside a second round of Athlean-X AX-2, while for the second three months I started the CaliMove at-home workout program (which will be another review).

In terms of results, measuring mobility gains can be difficult.  However, I definitely saw good results.  I fixed my shoulder mobility issues and saw noticeable improvements in my squat depth.  I also noticed increased strength and mobility in other joints.  I feel like my joints are generally stronger, more stable, and less prone to collapsing into dangerous positions.

One thing to note with the way I did the program is the time commitment.  The program starts off slow, with relatively short workouts done three times a week.  However, by the time you get to the end, you're doing the mobility program six times a week and the time has increased significantly.  And while the webpage says the workouts take between 15 and 40 minutes, by the later level 3 workouts were taking me a little over an hour.  I generally tried to schedule things so that I wasn't doing strength and mobility workouts on the same day, but by phase three this was unavoidable.  So on those days I would generally end up doing the mobility program first, as a very extended warm-up, followed immediately by my strength program.  This generally took me at least an hour and a half and left me feeling pretty wiped out.  So if you're planning to do this in conjunction with another program, you might want to be mindful of that.

In general, I was actually surprised by how physically taxing the mobility program was.  I sometimes felt more sore and fatigued on mobility days than on strength days.  I chalk this up to the fact that I wasn't used to working those particular muscles.  The recovery wasn't as long as a really hard strength workout, but it was still noteworthy.  I guess I almost expected it to be like a nice, relaxing yoga session, but it's actually much more demanding than that.

Another important thing to realize with this program is that there's a good chance you won't be able to do all of the exercises properly.  I know I couldn't.  Even after finishing the program, there are still several that I can't even get close on, like the back bridge.  However, simply going as far with them as you can still seems to work pretty well.  It can be a bit frustrating, but it's a long program and there's plenty of opportunity to improve.

Currently, even though I've finished the main six-month program, I'm still doing mobility training several days a week.  I sometimes use the advanced routine as a warm-up to my main workout if I have some extra time (the advanced routine takes me about 20 minutes).  I also do the advanced routine and possibly one of the technique-specific routines on my "rest" days.  The technique routines are good, but I find them a bit less interesting, as they tend to involve fewer exercises, but at higher rep ranges.  A lot of the exercises are also quite difficult for me (especially the split training), so while they're beneficial, they're not the most fun workouts.

At any rate, I would definitely recommend this program.  Mobility training is a beneficial and easily overlooked area and I think I'm definitely better off for getting some experience with it.  This is definitely a type of training that I'm going to continue to do while working towards other goals.  Perhaps I'll branch out and try some other mobility programs.  But even if I don't, the CaliMove program has given me some great tools to maintain and enhance the mobility gains I've already made.