Cornering A Bug

I have a Pro, my trusty old circa 2013 model, somewhat on the old side, running MacOSX Big Sur 11.7.10. It works well enough for everything that I need it for, a basic daily driver for work, most of all.

I spotted a great deal at , a 1 terabyte SSD device for a song and so I got it. Then after I unpacked it and setup on it, so it would serve as a backup for my MacBook I noticed a curious bug. Once I had the drive mounted, it worked well, but when I ejected the drive, sometimes it would give me a error that it couldn’t be mounted. I went off to to search, and came across a bunch of people who were experiencing very similar errors with their SanDisk devices. I found that after I rebooted my MacBook, the problem seemed to go away.

With complicated bugs, often times the trigger is either complicated or multi-step, and for a brief while, the problem with this drive returned. It would come and go, seemingly at random. Sometimes when I plugged it in, it would without issue, and other times it would simply not, and off to , where when I tried to force the mount, it refused with the cryptic error and only clear after a reboot.

I started to really concentrate on all the things I was doing, all the little mindless actions that I do at the start and end of the day, because something was causing this seemingly random bug to appear. One day, last week, I caught myself doing the very thing that triggers this bug!

I have my MacBook Pro, it’s plugged into a standard powered USB 3.0 hub, and then I have a 2TB standard external HDD and the 1TB SDD backup drive plugged into the USB Hub. When I eject the drives at the end of the day, and then unplug them both from the hub shortly afterwards, the drives will both re-mount without an issue. Every single time.

When I eject the drives, and instead pull the USB Hub off the side of the MacBook, after that, the standard HDD will mount without a problem, but the SanDisk SDD drive will always fail to mount with the cryptic error.

I don’t know for certain where this bug actually is, but my educated guess is that it has something to do with USB Bus Enumeration or perhaps some sort of flag that doesn’t get set properly either in my MacBook Pro, the USB Hub, or the SanDisk SDD device.

If you have a SanDisk SDD like I have, and it tosses random mount errors on Big Sur, give this a shot. Eject and then unplug the device, see if that doesn’t clear it up, because it did for me.

How 7-Zip, Hyper-V, and DNS Paralyzed A VOIP Phone System

Today was a tour-de-force in unintended consequences. It started with an old coworker, as a kind of boomerang. They came to work for us, then they moved on, only to come back. That was the premise of this story, the start of it, a coworker boomerang.

The task was really straightforward. De-compress the previously compressed user files related to this particular coworker, so that when they login, they see exactly what they left behind. It was modest, about 36GB worth of data. Looking at everything, the intended target had 365GB of open space, so plenty of room for this. I started with 7-Zip on Windows, opened the archive and extracted it to the drive with all the space. Near the end of the transaction, 7-Zip threw an error, “Out of Disk Space.” and I frowned and scratched my head. 365GB open space, and… this? Turns out, 7-Zip on Windows, at least this copy of it, unpacks the archive to a temporary folder on the temporary resource that Windows assigns, by default this ends up on C: drive. The process was filling an already low-on-capacity primary OS drive. I chased the temporary folder and removed it, correcting the issue. Or so I had thought.

An hour later, out of the apparent blue, around 12:30pm today, all the VOIP desk phones suddenly went “NO SERVICE”. I scrambled, naturally, feeling that rising panic as nothing had changed, there were no alarms, just suddenly total phone failure. I called the VOIP support line, and the official line from support was to reboot my network. A stack of eight fully packed Cisco Catalyst switches, three servers, and a gaggle of networking gear designed to offer at least a dozen vital services – reboot all of that. While talking with support, I opened up a console to my Linux box running on Hyper-V on one of my servers, which is to say, plugged into the very network core itself that I was asked to reboot. I then found my out-of-service desk phone, it’s IP was fine, it was totally functional, I grabbed the SIP password, logged into the phone, went to where it lists the VOIP endpoint for our phone carrier, and then asked mtr to show me the packet flow across the network, from my humble little wooden box of an office to the VOIP endpoint. The utility was clear, it was fine. No issues. 500 and counting packets all arriving promptly, no flaws, no errors, and NO SERVICE.

So I was growing more vexed with support, really unwilling to reboot the entirety of my network core when mtr was just merrily popping packets directly to the correct VOIP endpoint deep inside the carriers network. My traffic could get to where it had to go, the phones were NO SERVICE still. Support was flat-footed. I stopped myself, because I could feel the rage build, my old companion, the anger that comes when people aren’t listening to what I am trying to tell them. I stopped. It was not going anywhere and I promised myself that I would fight this anger, tooth and claw to the best of my ability. So I simply calmly asked for the ticket number on their side, and thanked them for their time and hung up my cell phone. I obviously muttered some choice phrases in a small voice, but otherwise I was very proud of myself. I derailed what could have become a very ugly scene.

Everything works. I am not going to reboot the core. The phones simply say NO SERVICE. Then other reports rolled in, network faults, adjacent but not the same, Wifi failures in Houston Texas, hmmm. What does Wifi out in Houston have to do with dud phones in Kalamazoo?

I had this sinking feeling, my gut screamed at me, something about the PDC, Wifi, and the Phones were all touching something common that had failed, but had failed silently. I chuckled to myself, the old IT chestnut occurred to me, “It’s always DNS.” and so, in respect to that, I opened the Hyper-V management window on the PDC and looked for my twin OpenDNS Resolvers, they are VM’s that run quietly, flawlessly, for years on years without a peep deep within Hyper-V. There it was, right there, right in front of me. The two resolver VM’s and just to the right of their names, the quaint little status indicator from Hyper-V. “PAUSED.”

The moment I saw that, I yelled out “PAUSED” and “NO SERVICE” and screamed. Right click on both VM’s, click Resume, and Hyper-V gleefully, in a heartbeat, resumed both little VM’s and just like that, another reboot to the VOIP phone and bleep-bloop-blunk, the phone was functional and just fine.

It is always DNS. I have three resolvers, the two resolvers were on the same host and the host had a wee panic and Hyper-V silently just paused everything, and then after a short while of cooking, the phones and Wifi, which also uses those resolvers, all went kaput all in one happy bunch.

Obviously the answer is to round-robin the resolvers, the primary on the PDC, then one resolver running in VMWare nearby, and then the secondary on the PDC. A sandwich right down the middle. I both thanked my past self and kicked my past self, for having the wits to set up a third resolver, which was then for a short while, the only resolver there was, except for choice parts of my network.

So, it ended happily, alls well that ends well. The next step is to spread this round-robin resolver correction throughout my network, to help avoid this from ever happening again. But then I laughed as I considered the gamut of what had transpired. 7-Zip, well meaning and purely accidentally caused an unintended disk space alert, Hyper-V silently and studiously paused its charges, and the network kind of rolled on over the speed-bumps, and at the end, proved again, “It’s always DNS.”

VAR Blues

I had to step away from the VAR I was using at work because of a recent change they had instituted with my business account. For years, I had enjoyed a classic relationship of having a single VAR Account Executive assigned to my account, where the AE would learn from me and get to know me, and I would get to know them as well. It was a very successful working relationship, and had been the way of things for six years. Around two months ago, the company made a change. They moved my business account from the structure that I was familiar with over to a team-based structure, and billed the benefits to include “There will always be an AE to work on your account” as a value-added proposition. I was worried that the change would instead eliminate the engagement, the learning, and the developing relationship between customer and reseller.

This new structure included a single shared email address that many people had access to, the AE’s assigned to the “Pod” and the “Pod Manager” who also kept a view on the shared mailbox. I was supposed to send every correspondence to this shared address. At first, I enjoyed the value proposition that there would always be someone to get my messages and to execute my requests. Although, to be brutally honest, access to my Account Executive was never really a problem, so this value proposition was actually a “solution in search of a problem” that I didn’t have. It wasn’t until much later, in the retrospective analysis, that I came to realize this as more significant than I considered it at first.

It was after this, when the rest of the feature set for this new structure started to appear. I’m certain that the VAR thought that all of these things were only enhancing value for customers, but really every step just led me further away from where I was most comfortable. I wasn’t able to “get to know” my team of Account Executives, they remain faceless, voiceless text in email. This lack of humanity was at first not considered to be an issue, but later on became significantly problematic. The disconnection accelerated as we progressed. I was no longer handing work to an Account Executive, asking them for advice and tips, and there was a significant amount of value that I was suddenly unable to access. I had come into the arrangement with a habit of asking my Account Executive to send me quotes on various items, and they would seek the best fitting item that suited my preferences and hand me a quote for the recommended items that best fit my needs and, during pandemic, had a better chance of being in stock. This habit was broken by the new way of doing things. I was no longer able to reach out to an Account Executive to get advice, to have their vantage point much closer to the manufacturers and distributors that we all were using to acquire technology, now I was supposed to simply go on the VAR website, find what I wanted, do my own shopping, and then assemble my own quotes. This feeling of being cut loose became pervasive because it was just another touted feature, considered by the VAR to be part of the “Value Added”, and quickly included not only writing my own quotes, but submitting my own orders as well.

The loss of engagement, the anonymity of the Account Executives involved, and how I was supposed to move all of my previous activities to self-directed work, ostensibly leveraged on the VAR website, all touted as “value added” components were actually just the opposite for me. It wasn’t until I started actually living in this new environment, doing my tasks this new way, that I realized just how much I had missed the old way that I used to do things. The value proposition was always above board, nobody was intentionally being manipulative or malicious, but the result was cold, impersonal, and made me feel like there was an erosion of all the value that at one point was part of my “value added” experience with my VAR.

Whenever there is a change, items can be lost in translation, they can get missed, I do not fault anyone for missing say one or two small things as the customer and the Account Executive in the VAR start to grow together and establish a working relationship together. I didn’t want to, at the time, hold people’s feet to the fire, but that’s exactly what I ended up having to do. I maintain a strict three-strikes policy when it comes to faults, if it’s awful, and you did it three times, that means that it isn’t a mistake, it isn’t overlooking something, it’s part of the design.

The first fault was completely missing the deadline on renewal of security software that my company depends upon to protect us all online. Thankfully, the manufacturer has a very gracious fifteen day grace period, where deadlines are much softer than how they actually sound. The fault resolved, and we moved forward. The second fault came shortly after the first one, and again, the same manufacturer. Missing the renewal of contractual agreements that enable me as a customer to approach the manufacturer’s technical support center if I have any questions or problems. It was addressed and we landed on our feet, but again, we had to sag backwards into the fifteen-day grace period. The third strike was one of tragic poor communication, and one of the most egregious failures I’ve ever witnessed. This failure also coincided with a new Account Executive team member whom I had never communicated with before.

The lack of experience and knowledge on both sides of the divide, again, became a problem that really got in the way. This new Account Executive asked me over several email exchanges questions that were too vague to answer because there wasn’t any included detail. IT is a detail-centric category. We thrive on details, we need exact details, like numbers, or topics, some way to clearly identify what it is that we are talking about. It doesn’t really work when people try to use vague communication styles packed with pronouns and references to unknown objects. Exchange after exchange in this manner became tedious and incredibly tiresome. After several iterations, where I had also started carbon-copying the Pod Manager, did the truth of the situation reveal itself. Once I learned what the object of the conversation was, I tracked it and realized that the subject work should have been completed months before when they had already invoiced my company for the work completed, invoiced and paid.

That was the last straw, the VAR relationship had a tragic and lethal attack right on that spot, right at that time. I began to pursue a kind of “re-entry to the VAR marketplace”, essentially shopping for a new VAR. I found one, chatted them up, had several fantastic meetings and the new VAR has more energy than I’ve seen from the previous one, more professionalism, and more effectiveness. Furthermore, I was also clear with the old VAR, telling them that it was unconscionable how things had unraveled between us, including the “Pod Manager” who never even once attempted to intervene. It was like complaining at a brick wall, for all that I got out of the subsequent correspondences.

The way I was treated was more educational than bothersome. It was a lesson for how important my companies account was to the old VAR, that during the COVID-19 Pandemic, our purchasing slowed because the supply channels also slowed. We wanted technology that was on extensive backorder, and so as our purchasing slowed and stopped, our value to the old VAR ebbed away. The group arrangement was a lesson in and of itself, we were too small, too insignificant to assign to a singular Account Executive, and so, we were effectively downsized as a customer.

We were expected to do all our own work, be our own VAR, as it were because we simply weren’t buying enough to be relevant to our previous VAR. This in itself carries a rather embarrassing knock-on side effect because we had ordered a particular kind of technology from a particular manufacturer and we had eleven items on extreme backorder with the VAR. The old VAR never valued our account, and this was proven out to us by the later revelation that the eleven items on extreme backorder actually slipped into “End Of Life” from the manufacturer. The VAR couldn’t be bothered to re-evaluate the old Open Orders unprompted, discover the EOL surprise themselves, and try saving face by explaining to us what had happened and offering alternatives. What had happened instead, was that the customer had started conversing with a new VAR, discovered the EOL condition, that highlighted just how little the prior VAR cared.

It didn’t matter what the old VAR even wanted to attempt in recovery efforts for the now fully dead business relationship because the single thing that they bring, their “Value Added Reseller” nature, was proven to be totally absentee. We didn’t buy technology for lack of funds, we didn’t buy technology because the people meant to handle the reselling never noticed that what they had already sold ceased to be for sale by the manufacturer!

So I walked away. I moved many orders from the old VAR, spec’ed them out with the new VAR, and actually ended up solving nearly all the seriously backordered gaps in our purchasing stream in one singular afternoon. I sometimes wonder, idly so, if the old VAR thinks about the suddenly cancelled orders, where we were waiting since April with extreme backorders, and then interest fades. Do they even care, do they even notice? They didn’t care enough to look at any old open orders, to even see that the item that we were waiting for shipping on was never ever going to ship because the manufacturer simply stopped selling it. Not having the attention to detail on historical items makes it not really any surprise that they kept on fumbling until the customer simply walked away.

I think that the critical lesson for me in all this drama with the two VARs has been the hidden value that engagement had throughout the entire experience. I never really had a visceral feeling for just how important the engagement was between myself and my VAR Account Executive until it was eroded almost completely. Once engagement disappeared, it was a game-changer for me because it illustrated just how important VAR Account Executives are in the process, how much I had come to rely on them. The VAR Account Executive sits in a very high place, able to see things that customers cannot. Their fingers on the pulse of international transport, distribution, and delivery. I only wish that my prior VAR had not allowed six years of solid, dependable positive experiences go down the drain like it did. I am far happier with my new VAR. With the right engagement between customer and Account Executive, I have already spent $25,000 with the new VAR! These dollar values are still small potatoes in comparison to other customers, but $25,000 is certainly more profit for the new VAR than for the old one who is just sitting on a pile of cancelled orders.

Meraki Z1 & Cisco 2801 Link Negotiation Gremlin

Today at work I ran into a really long-standing issue that we’ve had in one of our company branches. This branch uses an EOL/EOS Meraki Z1 Teleworker Gateway and also uses a hilariously EOL/EOS Cisco 2801 Integrated Services Router.

The setup is very straightforward, on the Internet side of the Teleworker gateway is a Comcast cable modem, and it’s only capable of 60mbit downlink and 10mbit uplink for maximum speed. We rebooted everything, re-tested from the cable modem and then to the desktop itself, and the speed from the cable modem was just as we expected, 60/10, but the speed from the desktop was 4/6!

I had rebooted everything. The cable modem, the Meraki Z1 Gateway, the Cisco 2801 ISR, and the Cisco 3560 Catalyst switch. Even the Cisco IP Phone got a reset! The speed gremlin held out, 4/6. So while working with some staff in the branch, I just happened to mouse-over the graphic on the Meraki Dashboard for this device and spotted the gremlin. The mouse-over tip for LAN1, where the Cat5 cable goes from the Meraki Z1 to the Cisco 2801 showed 100mbit/half-duplex. I checked into the terminal on the 2801 and verified that the port was fixed at 100mbit/full-duplex! So, I opened the Meraki Z1 device Ethernet configuration page, found LAN1, and changed it from “Auto” to 100mbit/full-duplex.

Forcing the speed and duplex settings resolved all the problems right out to the Desktop! Hooray! And what I learned from this is that Meraki Z1 Teleworker Gateways cannot successfully auto-negotiate link speed and duplex with a Cisco 2801 Router. So if you have unexplained crappy network performance, always make sure that link speed and duplex match what you think they should. Sometimes “Auto” isn’t.

Photo Credit: Gremlin Grotesque, Winchelsea church
cc-by-sa/2.0 - © Julian P Guffogg - geograph.org.uk/p/3334405

We’re Always Shufflin

Yesterday I came home and like many precursors to the weekend we talk about what sort of meal plan we would like for the coming week. Along with that, we put together the shopping list for our weekend supply chores.

Ever since Apple released iOS 13, we’ve had nothing but headaches with their Reminder app. So the two places we usually go are named lists in the Apple Reminders app. My partner rattled off that there were four items in one list, and I saw none of them. After we wasted an hour resetting and screwing around with Reminders I went to look for alternatives. I found one, an app called “Remember The Milk” and I chiuckled as I had seen it before. Apparently I had an account there a long time ago, so instead of creating a new account, I reccovered the old one. I invited my partner to the app, he installed it, and then I created two lists for our two spots we usually go to, and then I shared them both out to him. Then we sat back and chuckled because with this alternative, proper sync was happening, which was everything we wanted. So we have turned our backs on the Reminder app.

As I started to look through Remember The Milk, I noticed that it had grown up a lot in the time I had been away from it. I’ve been having a headache with the ToDo App from Microsoft, which is actually Wunderlist rebranded. I had split some of my work tasks into ToDo from Microsoft because it was free with my work email, an Office 365 account. ToDo from Microsoft was having serious problems, mostly whenever I had to check off a task, a zombie task would reappear and I’d have to check each task off twice. There were only a few tasks there, so converting them over to Remember The Milk was really easy.

Then as I was working with Remember The Milk, I thought that I might finally leave Toodledo, so I bought a yearly subscription to Remember The Milk, which gave me parity features with Toodledo, and then backed up my Toodledo account and imported the entire thing over to Remember The Milk.

So now all my tasks live in one place again, instead of Reminders, ToDo from Microsoft, and Toodledo, now it’s all Remember The Milk. We’ll see how it goes.

Secure Channels

I explored the challenge of establishing a secure channel in a business-to-business use case a few days ago. Between the company I work for and another company, where the information was very sensitive, the risk of it being compromised was unacceptable, and the requirement that I share the information with the other party undeniable.

The goal was to get a secret string of text from my system into the system of another party. I have explored cryptography for a long while and so I was confident that all the tools I had could do the job very well. The real challenge was in establishing a communications protocol and a secure channel. Amongst my explorations, I had the entire suite of OpenSSL library ciphers at hand, I had GPG, and the answer which I sort of knew already even before I started this foray into cybersecurity, that Signal would eventually be my answer.

It was at first exploration of the challenge of it. How could I get a secret alphanumeric string to another party that had none of the tools or the experience of cryptography that I had in my library? All of it was fated before I even started, but I at least wanted to go through the motions and explore this problem as if I was sitting in the middle of it without any view of the win condition at the end. The first stab was GPG, so I searched for any public keys related to the other company, and there were none. That was worth a smirk, and I nodded because I would have been shocked if there was a hit at all, so GPG was a dead end. The next effort was thinking about what sort of cipher could be used. This selection of a cipher was symmetric cryptography. I would need to encode the message so that it would be suitable for email transmission, and encrypt the data using some standard cipher that I knew would be possible for both parties, and then I spent a while trying to figure out the password for the cipher. I knew that base64 would be great for encoding and decoding the message, and I still have faith in AES-256-CTR, but that left me having to select a password that I could use that both sides knew. Any effort to share that password in any other non-secure channel would render all my efforts for nothing because then the cipher would be a mathematical contrivance because the security of the password then became equivalent to the security of the payload. If the password was passed in clear text, then the entire endeavor was meaningless.

So this entry becomes a love letter to Signal. It covered everything I needed. It used encryption end-to-end and it was vetted and secure, it didn’t require public keys, or specifically, the user wasn’t involved with that part of the process, and I could trust that the inbound mobile number matched the intended recipient. I didn’t need to exchange passwords or agree on a cipher or a protocol. The application and service are free as well, so there wasn’t even a cost barrier to this solution! It checks off every box on my list. I was able to copy and paste the secure string of data over Signal to the other person and conclude the task that I set for myself at the beginning of all of this. There is more to Signal than just this use case and I encourage everyone I know to download it, sign in, and start using it.

Done with Higher Ed

I haven’t had a University dream in a long while. We were moved to new offices and I went exploring. Trying to find the vending machines I end up on a service elevator that heads to a basement. I don’t have the oddly shaped key that lets you return so I leave and discover that I’m in the middle of service corridors and I start to try to get outside. I end up in another one way hall in the library with an odd platform that seems to have only one function, to crush people. Like a compactor. I get out of there and end up in a sub-basement and eventually find my way out through a construction area with metal and glass doors allowing only exit, not entry. A student looking terrified actually gains entry and runs the other way. I make my way out to a courtyard and run into a younger student fleeing an older man who is chasing him with a machete. Then I wake up.

I can say that the part of my life where actually being inside University buildings is well and truly over. Here’s a dream exploring that awful place. I woke up and laughed, “Yeah, not going there ever again. You don’t have to wrap it in symbolism.”

Higher Ed, hah. Done with that.

Apple iOS 13 or How To Kill An App

Apple released iOS 13.0 a few days ago, and then a series of iterative updates from there. The last I checked, we are now up to iOS 13.1.2. They have updated the Reminders app, and in doing so, and making the updates non-functional across their entire platform across the version barrier of iOS 12 and 13, iOS on iPad and iPadOS, and Mojave/Catalina they have, with a single stroke, killed their Reminders app for me. I was looking forward to the update to Reminders, maybe replacing the rather dull Toodledo app on my devices, and then they did it. Reminders only works if you “Convert” and if you do, it’s a one way deal. So now there is little to no point in actually using Reminders since it doesn’t work everywhere I am any longer, but it does push me further into using Toodledo and reinforces my purchase of another year of premium service with Toodledo.

I have just fielded a question about Exchange and sent items in iOS 13. It appears that iOS may not be successfully chaining Exchange emails into conversations. I will have to look into that today.

Vim’s Red Pill

I started this foray into Vim a few days ago. I’ve been talking with folks on
Mastodon.technology about exploring Vim and inspired by their learning and
exploration of this application that has been around publicly since 1991.

Vim is just a plain text editor, it’s ubiquitous on a lot of Linux and Unix
based operating systems, and less so on others. While I was in college the
professors in computer science were very fond of Emacs, so I sort of remember a
bit about Emacs and that I didn’t know Vim at all, nor did I really care for
it. Now that I’m older, I’m looking for new things to learn and Vim is quite a
good challenge for that.

The Learning Curve for Vim Resembles The Cliffs of Insanity

Learning this editor is a sheer climb straight up, on an imaginary learning
curve. There is very little that anyone who comes at Vim without any knowledge
of it will be able to understand. You get a little motd blurb on a blind open
with the name of the application and its version detail. You can’t really write
anything into the screen until you accidentally hit a command for getting into
the — INSERT — mode, like A, O, or I, or the lowercase equivalents. Over time
you start to accumulate more skills and you rely on the cheatsheets a lot less
than you were at the start.

Once the learning is done, then you start to move forward with the
customization part of the application. Vim is improved by plugins that enhance
or sometimes detract from the core use of the application. If you can get a
plugin to work, that is. Sometimes they just don’t, and there isn’t any clear
way to force the issue. Much of the plugins now live on GitHub, and sometimes
your mileage may vary when you are looking for help. For example, one plugin
which is for autocompletion at first seemed to be exactly what I was looking
for, but the fit wasn’t right for me. There is nothing on GitHub, for that
project, that even mentioned Q&A or anything like that. One thing that I have
learned is that sometimes when you add plugins to Vim, they can get “stuck” in
the Session system which forces you to dump your session details and start from
scratch. But once I was happy with how everything came together, it is a very
powerful editor.

Once You Pop A Red Pill, You Can’t Stop!

The first foray into Vim starts with editing. Then I started to look at some of
the other things that this editor could do. I fiddled a bit with Markdown, that
went well, and then afterwards I moved on to installing the Mutt mail
application. I have dwelled, perhaps malingered at Mac OSX Yosemite so when I
started to look into Mutt on my Macbook Pro, the Homebrew system complained a
lot about how some things would likely be broken because I was unwilling to
install the latest and greatest version of the Mac OSX operating system.
Everything worked out for the best in the end, and I got Mutt working for both
my Gmail account as well as my Office365 Hosted Exchange account at work. As a
funny side note, Mutt works well with IMAP servers however there was a bit of
skullduggery with the SMTP authenticator settings. For Mutt, this is the
general plan for a standard IMAP .muttrc file:

set ssl_starttls=yes
set ssl_force_tls=yes
set imap_user ='username@gmail.com'
set imap_pass = 'password'
set from='username@gmail.com'
set realname='First Last'
set folder = imaps://imap.gmail.com/
set spoolfile = imaps://imap.gmail.com/INBOX
set postponed="imaps://imap.gmail.com/[Gmail]/Drafts"
set header_cache ="~/.mutt/cache/headers"
set message_cachedir = "~/.mutt/cache/bodies"
set certificate_file = "~/.mutt/certificates"
set smtp_url ='smtp://username@gmail.com:password@smtp.gmail.com:587/'
set move = no
set imap_keepalive = 900
set smtp_authenticators = 'gssapi:login'
set signature ="~/.mutt/gmailsig"
unset sig_dashes

While the last bit, for smtp_authenticators simply won’t work with Office365.
To get that to work with Mutt, you’ll need this line in its place:

set smtp_authenticators = 'login'

Once I was able to get all that figured out, I then had another way to see my
email, through the Mutt email client. It wasn’t until this point, after being
able to login and logout, and receive new email and send new email that I
looked over my email to discover that almost all of it is HTML encoded. Which
makes reading it a headache in Mutt. But that wasn’t the point! The point was,
Mutt helped bring Vim closer to me. I may use it, or I might not. The HTML is a
definite headache so it’ll die a slow death because of HTML.

Distraction Free Writing

Vim’s editing powers are one part of it, the other part is the sheer speed and
usefulness of the application. There are a lot of systems that I use that seem
to have these little lags for text entry, like the system is always a few
microseconds behind registering what I want to do, which when typing in text,
is to do just that. It’s only slightly present on my Macbook, but often times
very present in apps on my iPhone. I’ll never know why user text input isn’t
the number one thing for any device to do first. Everything else can wait, be
put aside, but my typing? That should take top billing each and every time! So
with a full-screen iTerm2 screen, Vim is almost a killer app for distraction
free writing. I like line numbers on the side, and margins on either side, so
for me, this is almost a perfect arrangement. Plus the cost can’t be beat, Vim
is free. Another big draw for me is that Vim should be useful still even on
very low-powered computers, if it turns on, if it can run Linux (or Mac, or
Windows even) then it can run Vim.

Where Do We Go From Here?

We’ll see where I take Vim in the weeks to come. There is a lot of travel
coming up for me and I expect I’ll be doing a lot of blogging during it.
Writing everything out in Vim, saving it as Markdown, and then importing it
into WordPress. I suppose I could very well just email it into my blog as well,
we’ll have to work on that workflow in the future. Maybe I’ll find a WordPress
installation that works and be able to leverage Vim more directly with that
system. We shall see.