CMD.EXE will never die

Microsoft recently decided to make a fairly minor change in Windows 10 that led to some misleading headlines about the impending death of CMD.EXE. Microsoft has now posted a nice blog post explaining clearly that the old command prompt isn’t going anywhere. I still use cmd.exe for some stuff, and PowerShell for other stuff. I’ve never gotten entirely comfortable with PowerShell, and I still find myself needing to search the web to figure out how to get stuff done with it, but it’s definitely quite useful, once you’ve gotten the hang of it.

I’m probably just as proficient with PowerShell as I am with bash. (Which is to say, not nearly as proficient as I’d like to be, but good enough to get by.) It’s kind of funny that bash has been around since 1989 and is still so popular. It’s pretty easy to switch to a different command shell in Linux (or other Unix variants), and it used to be common to see people trying out different shells, but it seems like bash has won out over all the others. And, of course, you can now get a good bash shell in Windows, which is pretty cool.

Long ago, back in the MS-DOS days, I was a big fan of JP Software’s 4DOS, which was a replacement for COMMAND.COM. They’re still around, and their current product is called Take Command. I paid for an upgrade to it about a year ago, and gave it a spin, but I had some issues with it, and gave up on it. I may upgrade to the new version and give it another try; it’s got quite a lot of functionality, though it’s gotten pretty hairy over the years. The best example is probably the TPIPE command, which is very powerful, but not at all elegant.

LastPass and 1Password

LastPass just recently made their sync feature available in their free product. Previously, it was only available in their $12/year premium product. So, if that was the only thing holding you back from using a good password management program, go ahead and give LastPass a try.

I’m using 1Password, and I’m still quite happy with it. I bought it back when it was sold as a software product rather than a service. So I paid for the Mac, Windows, and iOS apps, and I sync my passwords via DropBox. AgileBits has been good about continuing to support their “legacy” customers, and not trying to force everyone onto a subscription plan. (I think they learned a bit from TextExpander’s stumbles in this area, and have succeeded in not alienating their long-time customers.)

I was thinking recently about what I would miss if I gave up my MacBook and switched entirely to Windows. One of the things at the top of my list was the 1Password Mac application. They do have a Windows application, but it’s not great. Any time I know that I need to do any non-trivial organization of my password database, I always fire up my MacBook. I only do minor edits on the PC. Thinking about that got me curious as to whether or not AgileBits was working on a new Windows app. It turns out that they were, and they’ve released it, but only for their “team” service. It sounds like they’re going to release it for non-subscription customers at some point, but they haven’t committed to a date for it yet. So I’m looking forward to that.

I’m not actually opposed to paying 1Password $3/month for their paid individual plan, though that does seem a little steep to me. (I think LastPass has it right at $12/year. Of course, their apps probably aren’t as good as 1Password.)

By the way, if you happen to be in the market for a paid LastPass subscription, Humble currently has a software bundle running that includes a one-year LastPass Premium subscription (for new customers only).

surprise Anniversary Update

Over the past weekend, I blogged about trying to get a good backup done on my PC, so I could take a shot at installing the Windows 10 Anniversary Update. To make a long story short, I did get a good full image backup done on Sunday.

So my plan was to maybe try to install the update next weekend. I had expected the update to download and install on its own at some point over the last couple of months, but it never did, so I figured I’d have to do it manually, maybe after uninstalling my anti-virus software, or something like that. Well, I turned on my PC tonight, to check something in Quicken, and I got a pop-up saying that Windows would be restarted for software updates soon. It didn’t really say what the updates were, so I figured they were just normal run-of-the-mill updates. But now, seeing how long it’s taking and what kind of messages are appearing, I’m pretty sure it’s trying to install the Anniversary Update.

I wish Windows 10 would be a bit more transparent about this stuff. The pop-up I got didn’t make any mention of the fact that the updates it wanted to install would tie up my PC for… however long this is going to take. It looks like it might be quite a while. And if I hadn’t gotten that backup done, I’d now be installing a major OS update with no backup to fall back on, if something goes wrong. (And I guess I’m not going to get a chance to check on that thing in Quicken tonight either.)

upgrades and backups and stuff

I decided to spend some time today messing around with my desktop PC and my MacBook. Specifically, I wanted to get full backups done for both of them, then upgrade the MacBook to macOS Sierra, and apply the Windows 10 Anniversary Update on the desktop PC.

I succeeded on the MacBook. I used Carbon Copy Cloner to update an image backup I made a few months ago. I also ran a Time Machine backup. Then, I downloaded and installed Sierra. Downloading it took quite a long time. The update itself was pretty quick. Maybe a bit less than an hour. I’m not seeing anything really new or exciting in Sierra. I didn’t turn on the new iCloud File Sync feature, mostly because I don’t need it, but also because it scares the crap out of me. I really don’t want my OS to randomly start deleting files off my hard drive, thanks. Even just the purgeable storage thing is a bit scary. Please don’t tell me that there’s free space on my hard drive, when it’s not actually free! Anyway, it’s all working fine.

On the PC side, I didn’t get very far. I tried making a new image backup with Macrium Reflect, but it ended in failure twice. I think the external drive I’ve been using for backups may be failing. I started a full chkdsk on it, and that’s been running for hours. Depending on what that reveals, I may run out to Costco tomorrow and pick up a new external drive, or order one from Newegg. The drive in question is probably ten years old, and it’s just a 1 TB drive, so it’s only big enough to hold a single image backup. So replacing it with a 4 TB drive might be a good idea regardless. Oh, and my other external drive, that I’ve been using for Windows File History backups, is also a bit flaky. I keep having to unplug it and plug it back in to get Windows to recognize it. (Other than that it seems to work fine.) So maybe it wouldn’t be a bad idea to replace that too. Heck, if I get a 4 TB external drive, I can partition it into two volumes, and use one for image backups and the other for File History. Of course, that leaves me with a single point of failure, so maybe that’s not a good idea.

Windows 10 Anniversary Update

I am currently installing the Windows 10 Anniversary Update on my ThinkPad. Surprisingly, it still hasn’t shown up in Windows Updates on my fairly new desktop PC, but it showed up today on my 2011 ThinkPad. I though Microsoft was pushing it out to newer machines first, but maybe there’s something about my desktop PC that’s made them hold it back. (Possibly the fact that I’ve got McAfee on my desktop, while I’ve got no third-party anti-virus on the ThinkPad?) Either way, I’d rather install it to the ThinkPad first, since that machine is a bit more expendable than my desktop, if something goes wrong.

Microsoft is taking a lot of heat for their behavior regarding Windows 10 lately. I agree with a lot of this criticism, but, from a practical standpoint, I still think Windows is a good choice for a desktop operating system, and I’m going to continue using it. (Keep in mind that this opinion is coming from someone who makes his living writing software that runs on Windows…)

ShutUp10 is an interesting utility that allows you to tweak a number of privacy-related settings in Windows 10. I haven’t tried it, but it looks interesting, for anyone who’s concerned about that kind of thing.

I’m pretty enthusiastic about the Bash/Ubuntu on Windows feature, so I’ll likely be installing that as soon as I’ve got the Anniversary Update up and running. I honestly haven’t had much time for side projects lately, but Bash/Ubuntu should make it a bit easier to mess around with stuff like Ruby on Rails on a Windows machine, without setting up full-fledged VMs.

Oh, and I’m hoping the Anniversary Update doesn’t kill Neverwinter Nights (which I haven’t even had time to play in the last few weeks).

Installers

I’m currently working on a somewhat oddball project at work. The output of this project is going to be a DLL that will need to get deployed on a bunch of production servers, along with some related support DLLs. These DLLs will need to get deployed to some combination of four different folders, depending on the configuration of the target machine.

The last time I had to do something like this, I put together an installer with WiX. That project got revised in such a way that I wound up not needing the installer anyway. But I remember it as being a bit of a pain to put together, and I’m not even sure if I managed to create an installer that did everything I needed it to.

I looked at WiX again for this, but for now I’m using NSIS, which I’ve used before, in the (distant) past. I actually assumed NSIS was dead (or close to it), but it appears that it’s not. Version 3.0 was just recently released, on July 24, 2016. I’ve actually gotten pretty far with NSIS. It took most of the day, but I now have an installer that does what I need it to do, without too much weirdness.

WiX and NSIS have some similarities, but it’s important to understand the differences. WiX generates MSI files, so those are “official” modern Windows installer files. NSIS generates EXE files that can act as standard installers, in the sense that they can add your program to the Windows “Programs” list, and can implement an uninstaller, but they’re not MSI files. (This can be good and bad; in my case, it’s helpful, as I don’t really want a standard Windows installer or uninstaller.)

There’s another limitation with NSIS: it only produces Windows apps, not console apps. It has support for “silent” installs, so you can run it from the command line with no user interaction. But you can’t (easily) read stdin or write to stdout. I can live with that, but if I knew that when I started, I might have made a different choice.

NSIS is one of those tools that’s been around for a long time and has had a bunch of stuff grafted onto it over the years, so it’s got a lot of peculiarities in its syntax and style, but if you can get past all that, it’s a really useful and powerful tool. (It’s kind of like AutoHotKey in that respect.) There’s an interesting line in the NSIS docs that sums this up well: “The instructions that NSIS uses for scripting are sort of a cross between PHP and assembly.” It’s a weird hybrid of low-level and high-level stuff, and it takes some getting used to.

I’ve also written a couple of PowerShell scripts for this project that act a bit like make files. I could probably use nmake for those, but PowerShell is fine. I briefly considered trying to use Cake and/or Fake for this project, but either one of those would have introduced added complexity for no useful purpose. (Though it would have been fun to play with those tools!)

TFS and Git

I recently started working on a new C# project at work. I’ve mostly been doing Dynamics AX (X++) work recently, so it’s been a while since I had a big C# project. With AX, TFS is pretty much the only viable option for source control. So, I just use what’s there, and don’t think about it too much.

With C#, though, it’s pretty easy to use Git too. I’m using Visual Studio 2013, which supports Git directly. I decided to start this project off in Git, just as an experiment. I knew that I’d have to put it into TFS eventually, since our department uses a TFS 2012 server, so I would need to get the source code into that server at some point. But starting off with Git seemed like a good idea, since I knew I’d be making a lot of changes early on, and possibly even discarding the whole project at some point and starting over. So I figured doing all that in a local Git repo would be an efficient and flexible way to start off.

So that’s what I did. I started off with the built-in VS 2013 Git support, which hides a lot of the complexity of Git, and makes it look more like TFS. At the same time, I started reading Pro Git, a pretty hefty book on Git that’s freely available on the web. I’ve used Git before, of course, but I’ve never really spent enough time learning the ins and outs. Pro Git is a pretty good book, and I’m learning a lot from it.

Meanwhile, I also started looking into ways in which I could use Git and TFS in parallel. My idea was that I’d keep using Git locally, allowing me to commit frequently, branch and merge, and just generally manage my work in an agile way. Then, whenever I got to a good stable point, I’d do a TFS check-in.

Skipping ahead a bit, I’ve now switched the project to TFS-only, and have a backup of my .git folder that I’m ignoring for now. I had hoped that I’d be able to switch back and forth easily, in VS 2013, but that’s really not the case. I’ve found that VS 2013, if it sees a .git folder, assumes you’re using git, regardless of any TFS info in your solution file. I had hoped that getting the TFS info into the solution file would cause VS 2013 to use TFS, while I could use Git from the command-line (or via SourceTree).

Alternately, I’ve looked into the possibility of using Git from VS 2013 and doing the TFS commits via the command-line. That actually looks like it might be a possibility, using tf.exe. I might give that a try next week.

I’ve also looked into git-tfs, which is a “two-way bridge” between Git and TFS. I think that would let me keep one branch in a local Git repo synced with TFS, while letting me work locally in a dev branch in Git that I could just merge into the main TFS branch occasionally, or something like that. I’m not entirely clear.

And yes, I know that if we could upgrade our server from TFS 2012 to TFS 2013, I could use the native Git support in TFS 2013. But that’s not something we can do right now, largely because it might not be compatible with Dynamics AX 2012, and doing the upgrade would be too much of a distraction and risk right now. (Similarly, Microsoft’s hosted TFS would be great, but almost definitely wouldn’t work with our current AX setup.)

Neverwinter Nights and Windows 10

I got off to a pretty good start with Neverwinter Nights over the last few days. I got it working reasonably well under Windows 10 on my ThinkPad, played through the tutorial, and got started on the first “chapter.”

I had a little trouble with the ThinkPad last night though, so I decided to do some troubleshooting. Which was probably a bad idea, since it led me down a rat-hole that I’m only just now (mostly) dug out of. I won’t get into too much detail, but I discovered that I hadn’t successfully installed any Windows Updates since April. I eventually figured out that this tip from SuperUser fixed things and allowed me to get back on the update bandwagon again. But then there was so much stuff to update, I had to just leave the laptop running all day. (Which is fine, since I was going to GS Comic Fest anyway.) So, after that was all done, I appear to have an up-to-date Windows 10 install, ready (I hope) for the coming Anniversary Update.

But then I found that Neverwinter Nights didn’t work anymore. So, after a bunch of flailing around with settings on that, I finally gave up and uninstalled it, then reinstalled it. Then, tweaked a bunch of parameters. And now I think I have that working again.

At some point in this process, I also uninstalled Norton Anti-Virus. I don’t think Norton was the cause of any of my problems, but it seemed like a possible culprit, so I removed it. Now, I’m not sure if I want to add it back or not. I only have about a month to go on my current subscription. Recent news indicates that maybe Norton isn’t such a good choice right now, having “multiple critical vulnerabilities” according to a researcher at Google.

My desktop PC is running McAfee, which came pre-installed, and I haven’t (yet) decided to remove it. I can also get a free version of McAfee from my internet provider, so I maybe I should put that on the ThinkPad. But I’ve never been a big fan of McAfee, so I’m not sure about that. Maybe I’ll just stick with Windows Defender for now.

So after all that, I’m ready to jump back into Neverwinter Nights. But, heck, it’s just about dinner time now, and I’m tired of messing around on this laptop. So I guess I’ll shut it all down and grab a bite to eat.

Office 365 Home

Some time ago, I broke down and paid for an Office 365 Home subscription. I paid for my first year with a card I bought from eBay, and my second year with a card I bought from Costco. Well, I was in Costco today and saw that they had two-packs of one-year Office 365 subscriptions on sale for $140. So I picked one up, and now my Office 365 subscription is good through December 2018. Overkill, I guess, but at least I don’t have to worry about it for a while now. And $70/year is a good price, since it’s $100/year if you buy it from Microsoft.

The packaging on the thing I got from Costco was a little silly. It’s two shrink-wrapped one-year Office 365 boxes, inside a bigger box, which is itself shrink-wrapped. All for two product keys. Oh well. Now I need to resist the urge to buy any more of these, if I see them on sale again. It’s probably not a good idea to extend one of these subscriptions too far into the future.

File History on Windows and photos in OneDrive

In addition to the backups I did last weekend, I also turned on File History on my desktop PC. This is kind of like Time Machine for Windows. I’m using a separate external drive for this, so now I have one external drive with my Macrium image backup, and one being used for File History.

I also decided to move all my photos into OneDrive. Previously, I had a big folder of old photos on my desktop PC, containing digital photos from my pre-iPhone days, and scanned photos from ScanCafe. That folder had about 12 GB of stuff in it. Most of that space is used up by the full-resolution ScanCafe photos. I just moved that folder so it’s now under the OneDrive hierarchy. It took a while to upload, but it’s all in OneDrive now.

On the Mac, all my iPhone photos are in the Apple Photos app. I don’t want to try to move that library into OneDrive, since it’s not a normal folder. (And, by the way, it would be so much more convenient if it was a normal folder, but that’s a rant for another day.) Instead, I copied the photos from ~/Pictures/Photos Library.photoslibrary/Masters into OneDrive, which should be all the original full-resolution photos from my iPhone. That’s about 2 GB worth of photos. I’ll need to remember to do that occasionally to keep the copy in OneDrive up to date. I should probably write a script for that.

So now I have all of my photos in the cloud, which is probably something I should have done quite some time ago. And I think I’ve got myself covered pretty well on backups, on both the Mac and PC.