password management

I’ve been using KeePass to keep track of all my passwords for several years now, since 2007. I use KeePass 1.x on my Windows machines, KeePassX on my Mac, and iKeePass on iOS. I keep my KeePass file on DropBox, so it stays in sync on the Mac and Windows machines, no problem. And iKeePass pulls the file in from DropBox every time I open it. (I don’t think I can save changes back to DropBox though. If there’s a way to do that, it’s not intuitive.) iKeePass works well enough, but it’s not great, and it hasn’t been udpated since 2012. So, I’m (once again) looking for something better.

I started using an app called DataVault in 2010, but I never really got that far with it. I had the Mac client and iOS client working, but syncing was a hassle, and it was just easier to stick with KeePass. I think the syncing situation with DataVault has probably gotten better since the last time I looked at it, but I really don’t want to go back to it.

This week, I decided to see what was out there in the way of alternative KeePass clients for iOS. I tried MiniKeePass, which is a free open-source program, with source available on GitHub. It’s being actively maintained, and can open files from DropBox, so that’s all good. But, to open a file from DropBox, you have to go into the DropBox program itself, find your KeePass file, then choose MiniKeePass from the “open in” menu. So it’s a bit unwieldy. Once it’s opened, you can just pull it up from within MiniKeePass, but it will never update automatically. To pull in a new version of the file, you have to go back to DropBox. So, it’s a nice enough program, but not quite perfect.

I’m thinking about giving up on KeePass and giving 1Password another try. I’d messed around with it previously, but never really talked myself into committing to it. There were various issues with older versions that kept me from getting too excited about it. But I think I may take another shot at it. They currently have Mac, Windows, and iOS clients, so that’s good. And they support keeping the database in sync with DropBox, so that’s also good. (I’m not sure how seamless that is on iOS, but it’s likely better than iKeePass or MiniKeePass.)

One possible sticking point: 1Password used to support import from KeePass, but they dropped that in version 4 (I think), and I don’t know if they added it back for version 5 (but I don’t think they did). But, really, I should probably take this opportunity to clean up that database and re-organize everything. I’m just not looking forward to how much work it’ll take to do that.

 

Apple iOS devices

I’ve updated both my iPhone 5s and iPad 2 to iOS 8.1. The iPhone is working fine, but the iPad is really showing its age. It’s running pretty slow, and some apps are crashing occasionally.

I’m looking to buy a new iPad, but I’m still not sure if I want to shell out for the new Air 2, or get last year’s Air 1. Either would be much speedier than the iPad 2.

Meanwhile, though, I decided to trade in my old iPad, and my old iPhone 4, which has been gathering dust for the last year. (I’m not sure why I didn’t do something with the old iPhone sooner, but better late than never, I guess.) I was surprised to see that the iPhone 4 is still worth $35 from Apple’s recycling program. I’m not sure if they’ll actually pay that, or if they’ll mark it down for some reason, but I wasn’t expecting anything for it, so whatever I get is fine. And, while Apple’s site gave me a value of $85 for the iPad 2, Gazelle offered me $100, so I’m sending that to Gazelle. (Gazelle’s offer for the iPhone 4 would only be $25, so I’m slightly better off using Apple’s program for that.)

Yosemite upgrade

I went ahead and upgraded my MacBook to Yosemite today. As is usual with recent OS X upgrades, it went smoothly and I didn’t have any problems. My MacBook seems slower, but that may be due to some post-install stuff that’s running in the background or something like that. I’m going to give it some time, and see what happens.

I’m not seeing anything in Yosemite at this point that I’m at all excited about. But I’m also not seeing anything that bugs me too much either, except for the way they screwed around with iTunes yet again.

I just bought the two new Yosemite books from Take Control, and I’m hoping that I’ll learn something from them. Oh, and I should really read John Siracusa’s review. I’m assuming that there will be some useful stuff in there.

Cloud Storage, Yosemite, and other stuff

I haven’t upgraded my MacBook to Yosemite yet, but I probably will soon. Before I do any major OS upgrade, I like to clean things up a bit. One thing that’s been on the back-burner for a while is going through the list of programs that are running in the background and seeing which can be dropped. I’m currently using Bartender to keep my menu bar under control. But even with that, it’s clear that I’ve got too much stuff running.

For a while, it seemed like every company out there, regardless of whether it made any sense or not, wanted to become a cloud storage provider, like Dropbox. So, at various times, I’ve had programs running on my Mac and/or PC to keep a local folder synced with cloud storage services from Dropbox, Amazon, Google, Microsoft, and maybe a few others. Currently, I seem to be running clients for Dropbox, Amazon Cloud, and Google’s Music Manager.

For better or worse, I seem to have drifted into using Dropbox across all my devices. So that stays. And the Google music software just uploads any new music from my computer to my Google Play library, which is useful, so I’m keeping that. (And I think I should write up a blog post on that some time too.) But, after looking into where things stand with Amazon’s cloud drive, it looks like they’ve probably discontinued the Mac client software. If you look at their Cloud drive site right now, there’s no mention of the Mac client, and searching Amazon’s site didn’t turn up any place from which to download it. So I guess they’re not that interested in it anymore. And I’m not really using it, so away it goes.

I haven’t found much else that I’m willing to give up. So I don’t think there’s much else I can do to streamline my OS X install before the Yosemite upgrade. But the MacBook has been running slower than I’d like for a while now, so I’m hoping that either Yosemite speeds things up somehow, or that I can find some (relatively) painless way to speed it up on my own.

LaunchBar 6

I’ve been using LaunchBar on my Mac for quite some time. It hasn’t changed much over the last several years, and, for a while, I don’t think it was very popular, as Mac apps go. But LaunchBar 6 was just released, with a bit of an interface refresh, and it’s getting some attention, including a good review on Cult of Mac, and a lengthy and useful writeup by Shawn Blanc. I just installed it, and paid the $19 upgrade fee for it. That seems pretty reasonable, given that they haven’t done a paid upgrade since 2010. I’d recommend it to any Mac user who likes the idea of being able to quickly launch programs without having to use their mouse or trackpad.

InstaCast

After my issue with podcasts that I posted about last week, I decided to switch from using iTunes and the Apple podcast app to Instacast. I bought both the Mac and iOS versions. After using both for about a week, I’m mostly satisfied, but there are definitely a few shortcomings.

First, on the plus side, Instacast hasn’t arbitrarily deleted a bunch of podcasts from my Mac, as iTunes did last week. Instacast has a pretty interesting way of dealing with podcast files, actually. It’s not quite perfect for the way I’d like to do it, but it’s reasonable. Basically, you set a maximum amount of space that you’d like to use for podcasts, and Instacast deletes stuff once it reaches that limit. It’s pretty sensible about picking what to delete — it goes for episodes that you’ve already played and haven’t marked as favorites first, if I understand it correctly. I’ve set it to use up to 10 GB on my Mac, and 1 GB on my iPhone, so that should be good enough. I kind of wish, though, that you could set certain podcasts to keep forever. There are a few podcasts, like Warren Ellis’ SPEKTRMODULE, for instance, that I’d like to just keep forever. With Instacast, I can’t really do that, and I guess I’d want to copy the files out of Instacast and into a separate folder.

Which brings up a separate point: Instacast does allow you to right-click on a given podcast episode and select “Show in Finder”, so that’s good. But, unlike iTunes, it doesn’t organize individual podcasts into their own folders, now does it keep the original file names. Instead, it puts all of its files together in a single folder, and names them with (I assume) random GUIDs. So, to copy out all of the episodes of a given podcast, I’d really have to do “show in finder” on each one individually, and copy them one at a time. (And if I wanted the copied files to have reasonable names, I’d have to rename them too.) So I’m not too happy about that, but it’s not a terribly big deal.

In terms of the actual functionality of the apps, let’s start with the Mac app. It seems to be a reasonably well-written Mac app, not taking up too much memory or CPU, and launching pretty quickly. (I wish that was something I could take for granted with a commercial Mac app, but alas, no…) I’m using the Mac app mostly to watch Tekzilla. (If there were any other video podcasts that I was interested in, I’d use it for those too, but there isn’t anything else I’m following right now.) It does a good enough job on that. Basically, it just plays the video and gets out of the way, which is what I want. It works fine for playing downloaded episodes, and it can also stream episodes that you haven’t downloaded, which is nice.

For the iOS app, that also works reasonably well. I use it only for audio podcasts, and I follow a few of those. You can set it to download episodes only when on wifi, which is a good thing, as my Verizon data usage has been a problem lately. I’ve had it randomly stop playing a podcast twice so far, which is a bit puzzling. In both cases, I could start the podcast back up where I left off, no problem. I was driving both times, so I didn’t see what happened. I’m not sure if the app crashed or if it just stopped playing. And I think it was the same podcast file both times, so maybe there was just something wrong with that file. If this keeps happening, I’m going to get frustrated with it pretty quickly, but we’ll see what happens over time.

There’s a function built into both the Mac and iOS apps called “Up Next” that lets you create an on-the-fly playlist of a few random podcast episodes, so you can set yourself up if you’ve got a long drive. I used it today for my 90-minute drive down to a friend’s house, and it worked well. There doesn’t seem to be a way, though, to tell it to just continuously play consecutive episodes of a single podcast, which is a bit weird.

There are a few other things I could mention, but this post is long enough as-is, so I’ll leave it there, and just say that I don’t regret spending the $20 on the Mac app and $4 on the iOS app, but I’m still not sure if I’ll stick with it or switch to something else in the long term.

contact and calendar management

A few years back, I wrote up a couple of blog posts on my search for the “holy grail” of contact and calendar management. Back then, I had a BlackBerry, and I was hoping to find a good way to keep things in sync between the phone, my PC, and my Mac. I went through a few less than perfect options, which aren’t worth going into at this point.

Nowadays, I’ve got an iPhone, and I’ve found that iCloud does a fine job of keeping the iPhone, iPad, and Mac in sync. On the PC, I really don’t bother trying to keep a full set of contacts in Outlook anymore, nor do I keep my calendar there. I can always look anything up on icloud.com or on my iPhone. And, while I use Gmail for most of my mail, I don’t really feel a need to keep my Gmail contacts fully up-to-date either. There’s really only a small set of people who I e-mail regularly, and they’re all in my Google contacts, so there’s no problem there.

So, since everything’s working so well, of course I’m starting to mess around with it. I installed the vipOrbit app on my iPhone this week. It’s a program for managing contacts and calendars. Right now, the iPhone and iPad clients are free, the Mac desktop client is $30, and the sync service that I would need to subscribe to is $45/year. So I thought I’d start out by trying the iPhone app, and see if it was worth going any farther with it. The app imported my contacts from the main iPhone contact app with no problems. But, I found that it did not import all the fields. In particular, it didn’t import birthdays or the free-form notes field from contacts. The app has several user-defined fields available, so maybe there was a way to map those and import the birthdays and notes into them, but it wasn’t obvious how I could do that. I played around with the app a bit, and, while I think it might be useful for a salesperson tracking leads and/or customers, it’s not really useful enough for me to justify both the price and the inconvenience of keeping my contacts and calendar outside of the normal default iPhone apps.

Next, I may choose to try out fruux. Fruux is just a sync & backup service for contacts, calendars, and tasks. So, I’d keep using the default iOS apps, but would keep things in sync with fruux instead of iCloud. I honestly have no good reason to do this, except “just for the hell of it”. Or maybe so I can say I’m not 100% tied in to the Apple ecosystem.

Remapping Keystrokes in MorphX

The shortcut keys used in MorphX, the Dynamics AX code editor, are almost exactly the same as those used in Visual Studio. In fact, the code editor basically is the editor from Visual Studio, with somewhat reduced functionality, if I understand correctly.

The one thing that’s always bugged me about it is that the keystrokes for commenting and un-commenting code are different. In VS (and various other editors), it’s Ctrl-K,Ctrl-C and Ctrl-K,Ctrl-U. For no obvious reason, MorphX uses Ctrl-E,Ctrl-C and Ctrl-E,Ctrl-U. This isn’t too bad, until you start getting used to it, then you accidentally press Ctrl-E in SQL Management Studio, hence executing a block of SQL instead of commenting it out. After doing that a few times, I decided that I needed to fix MorphX.

Surprisingly, I couldn’t find any facility built into AX for changing keyboard shortcuts. So, I turned to AutoHotKey. It’s very easy to remap a single keystroke in AHK. For instance, I can just remap Ctrl-K to Ctrl-E with “^k::^e”. I went ahead and did that for awhile, since it didn’t really seem that there would be any harm in that. But, I wanted to figure out how to create a more targeted replacement, so only the two specific commands would get remapped.

The snippet below does that. And, or course, it limits the remapping to the AX code editor.

; https://gist.github.com/andyhuey/5466566
; comment/uncomment, the way it was intended to be...
#IfWinActive ahk_class AxMainFrame
^k::
Transform, CtrlC, Chr, 3
Transform, CtrlU, Chr, 21
Input Key, L1 M T1
if Key = %CtrlC%
     Send ^e^c
if Key = %CtrlU%
     Send ^e^u
return
#IfWinActive

Hard drive crash

One of the hard drives on my work PC crashed a couple of days ago. My work PC is (or rather, was) configured with an SSD for a boot drive, and two regular SATA drives, in a RAID 0 configuration, for a secondary data volume. It was one of those SATA drives that failed. Since RAID 0 doesn’t have any redundancy built in, that killed the volume.

The only data I had on that volume were the files for my VM. The way we have developer machines configured here, we have general productivity stuff (Office, etc) on the boot volume, and all the developer stuff on the VM. The setup for developing for Dynamics AX is fairly complicated, so it makes sense to do it on a VM.
Unfortunately, we don’t have any facility set up for backing up our VMs anywhere. Also, between the way AX stores source files, and the way we have TFS set up, we don’t always check in code daily, nor do we have a simple way of backing up in-progress code changes that haven’t been checked in. So, the end result is that I lost about two days worth of work on my current project.
I had, at one point, written a backup script (using PowerShell and 7-Zip) to back up the My Docs folder on the VM to the My Docs folder on the physical machine, but I hadn’t ever set it to run on a scheduled basis, so the backup file there was about a week old, which meant that I also lost a few SQL files, some test spreadsheets, and one quickie VS 2010 project that I’d written to test a web service. Oh, and I was keeping the backup script itself (plus some other scripts) in a ‘util’ folder on the root of the VM C: drive, so those didn’t get backed up either, and were lost.
So the takeaway from all of this, of course, is that I need to do what I can to get around the limitations of the environment I’m working in, and set up some automated backup procedures.
In terms of backing up the My Docs folder, I rewrote my lost PowerShell script, and set it up in task scheduler to run at 6pm daily. It ran fine last night, and I think it’ll work fine on a continuing basis.
In terms of backing up in-progress work in AX, I extended the ‘startup projects’ class that I blogged about recently to also allow me to export all of my active projects. I have it exporting them to a folder under the My Docs folder, so, if I run the export at the end of the day, prior to the file system backup, I should always have a backup of my current work, in a format that I can re-import into AX, if need be.
There are still some big holes in this system, including the fact that I have to remember to run that export daily. But it’s a good start. I’d like to add some extra stuff to this process, including daily SQL backups, and maybe a push of certain backup files to the cloud. The SQL backups are kind of hard, since the AX test database is 70 GB. And my employer, for some reason, likes to block access to cloud-based backup & storage providers, so I can’t just copy stuff into a DropBox folder, so that part’s a little tricky too. 
I’ve also considered setting up a local Mercurial or Git repo, checking in the AX export files every day, and pushing them up to a private Bitbucket repo. This would give me offsite backup, with the added benefit of increased granularity and visibility, but it would probably violate one or more corporate policies.
As a follow-up to this post, I’m going to write a few more posts, about some of the scripts I’m using now.

geocoding experiments

I wrote an initial blog post on Gisgraphy about a month ago. I wanted to write a follow-up, but hadn’t gotten around to it, what with all the other stuff I have going on. But I’m going to take a few minutes now and write something up.

The initial import process to get the Gisgraphy server up and running took about 250 hours. The documentation said it would take around 40 hours, but of course there’s no way to be accurate about that kind of thing without knowing about the specific hardware of the server it’s being installed on, and the environment it’s in. I’m guessing that, if I had more experience with AWS/EC2, I would have been better able to configure a machine properly for this project.

Once the import was complete, I started experimenting with the geocoding web service. I quickly discovered something that I’d overlooked when I was first testing, against his hosted web service. The geocoding web service takes a free-form address string as a parameter. It’s not set up to accept the parts of the address (street, city, state, zip) separately. It runs that string through an address parser, and here’s where we hit a problem. The address parser, while “part of the gisgraphy project,” is not actually open source. An installed instance of Gisgraphy, by default, calls out to the author’s web service site to do the address parsing. And, if you call it too often, you get locked out. At which point, you have to talk about licensing the DLL or JAR for it, or paying for access to it via web service.

Technically, the geocoder will work without the address parser, but I found that it returns largely useless results without it. For instance, it will happily return a result in California, given an address in New Jersey. I’m not entirely sure how the internal logic works, but it appears to just be doing a text search when it’s trying to geocode an un-parsed address, merely returning a location with a similar street name, for instance, regardless of where in the US it is.

While I don’t think the author is purposely running a bait-and-switch, I also don’t think he’s clear enough about the fact that the address parser isn’t part of the open source project, and that the geocoder is fairly useless without it. So, we shut down the EC2 instance for this and moved on the other things.

Specifically, we moved on to MapQuest Open, which I was going to write up here in this post, but I need to head out to work now, so maybe another time.