-
Review: ShimoVPN
Ever since I started working, I've had to connect back to an office network either occasionally or full time. First there was AppleTalk Remote Access and then there were a variety of VPN solutions that different companies employed. While macOS has gotten better at supporting VPNs natively, it really only handles Cisco and IPSec VPNs. This has worked for some of my connections, but for others, I've had to have a separate VPN client. Those VPN clients have ranged from bad to worse in terms of quality. Why they are so bad, I have no idea.
Several years ago, I tried out ShimoVPN to connect to my companies network as the native Mac client didn't have a feature I wanted (I can't remember what). Shimo worked, but the native client was good enough and I forgot about Shimo.
Now that I'm self-employed again with several clients, I decided to take another look at Shimo. In particular, I didn't want to run all my traffic over a client's VPN and I also wanted to be able to connect back to my own OpenVPN server (the native Mac client doesn't handle OpenVPN and the free OpenVPN client didn't work). After I installed ShimoVPN, it imported my configurations and I was quickly able to get things setup. At that point, it didn't buy me anything for my clients over the native Mac client.
The power of ShimoVPN comes into play in how it can setup specific routing. I only want certain traffic to go over the VPN and Shimo lets me configure that on a per VPN basis.
I set this up for 2 of my clients and am able to have both VPNs up at the same time and connect to sites on both without having to disconnect and connect to a particular VPN. This feature alone is worth the money for Shimo!
Shimo has one additional feature that make it a must use application for me. The first is that it automatically reconnects to the VPN when my machine wakes up. This, of course, works best when 2FA isn't used as I'm not prompted. Another feature it has is the ability to setup triggers to connect and disconnects from certain VPNs based on WiFi SSID, location, and other conditions. I haven't used this feature much, but the potential to simplify things is great.
Pros
- Handles OpenVPN connections.
- Allows custom routing.
- Has triggers for certain events.
- Reconnects automatically upon disconnect.
Cons
- Cost (built in macOS client is free).
- Powerful features require some networking knowledge to setup.
Summary
ShimoVPN is a utility that most people won't need, but for those that do, it will pay for itself pretty quickly. VPNs are necessary and while ShimoVPN won't me on anyone's holiday wishlist, it is definitely going to remain a tool in my toolbelt.
-
Dependency Management
With most software projects these days, including open source components is almost a given. There is no reason to reinvent the wheel and some components are so customized that it would take months to mimic the behavior. There are many ways to integrate these components into an application. One of my mantras when working on projects is that I just want to be able to checkout the project from a repository and build it; there shouldn't be several steps and I shouldn't have to worry about something outside of my control breaking the build.
Years ago when I worked on a particular project, there was a several step process to just get the source code which integrated open source components. This was extremely fragile as the references to the open source components was for an external repository that could go away at any time. When I became in charge of the project, I changed things so that we only relied on repositories that were under the control of the company (we had shared components).
In iOS development, there are now 2 (or 3) main systems for managing these external dependencies. The first is CocoaPods which is very popular, but relies on the external repositories to always be there and requires modifications to how the project is built. The newer entrant into this arena is called Carthage. Carthage gives me more control on the dependencies. The system makes it easy to store the dependencies in my repo and easily update them. In particular, I use the following command to update
carthage update --platform iOS --no-build
Basically I just let Carthage update the components and I have my project setup to do all the builds. When I checkout the project, it has everything in it and I just build. I think that this setup, at least currently, strikes the best balance to handling dependencies.
The other day I was reminded of this problem when a developer was describing dependencies on one of my projects; the developer basically said that he used a dependency management system that didn't store the components with the source code. I've been writing software for awhile now and while open source makes it easier to get things done, many developers don't consider the entire build process or risks involved in not having control over all the components.
-
Mobile App Done Right
Last week I went to test drive a new car and after test driving, I was ready to buy. There are, of course, a number of steps required to purchase a car including securing a loan, providing proof of insurance, and getting insurance for the new vehicle. I've used my banking and insurance company's app for years basically to check my account balances. For the last year or so, I've checked my credit card balance almost weekly to make sure it isn't too high in anticipation of applying for a car loan. The app was useful for this, but that didn't prove the power of the app.
When it came time to apply for a loan, I pushed a few buttons on the app (while someone else was driving), applied for a loan, got approved, and signed all the loan documents. On top of just getting the loan, the app let me fax or email the payment instructions directly to the dealer. In case that wasn't enough, I knew I needed insurance and didn't know what my insurance company provided on a new car before I spoke to them, so I looked on the app to see what I could do. Even before I left the finance guy's office, I had entered the VIN of the car into the app, got a quote on the new policy and added the car to my policy. The app also provided me with proof of insurance. Now that was cool.
Apps can do so much these days, it is so hard to know what I want an app to do until I have a need. It's not like I'm going to do this every day or week, but knowing that this company has put in just about every feature you could imagine to handle everyday and occasional needs makes me even more pleased that I've used them for a long time.
-
Navigation or No Navigation
Back in July, I stumbled upon the Subaru Impreza as possibly my next car. With the release pegged at the end of the year, a few weeks ago, I started looking at the dealer sites to see when they'd get the car so I could test drive it. I picked the trim level I wanted (that was easy) and was looking at the option packages. There were only 2 choices and trying to figure out which one I wanted was quite difficult.
Subaru's website shows the following image:
If you look closely, the differences are that the more expensive package has better audio and the Multimedia Navigation. It implies that only it has the 8" display and the less expensive option doesn't. I definitely wanted the 8" display, but finding that option package on the cars coming to the dealers proved more difficult. After more research, I found another link that described the different multimedia systems.
SUBARU STARLINK™ 8.0" Multimedia Plus with Apple CarPlay™, Android Auto™, Pandora® and Aha™ smartphone app integration5, STARLINK™ cloud-based applications, including Yelp®, iHeart® Radio, Magellan® navigation7, SiriusXM® All Access Satellite Radio8 and Travel Link®8, high-resolution LCD touchscreen display, 6 speakers, AM/FM/CD player, HD Radio®, USB port/iPod® control, Bluetooth® audio streaming and hands-free phone and text messaging connectivity, and 3.5-mm auxiliary jack
And...
SUBARU STARLINK™ 8.0" Multimedia Navigation System: Voice-activated 8.0-inch multi-touch gesture high-resolution GPS navigation system with Apple CarPlay™, Android-Auto™, Pandora®, Aha™ and smartphone app integration5, STARLINK™ cloud-based applications, including Yelp®, iHeart® Radio, Magellan® navigation7, SiriusXM® All Access Satellite Radio8, Traffic®16 and Travel Link®16, high-resolution LCD touchscreen display, AM/FM/CD player, HD Radio®, dual USB port/iPod® control, Bluetooth® audio streaming and hands-free phone and text messaging connectivity, and 3.5-mm auxiliary jack
Spotting the differences between the two became even harder. Both had the 8" display (great), but what were the other differences? The only difference that matters is that the second one has "GPS navigation". Now I was getting somewhere. This means that there are maps loaded into a navigation system and there is a GPS antenna. However, with CarPlay and Maps on my phone, why would I want this?
Pros of GPS Navigation
- Doesn't use smartphone data
- External GPS antenna provides faster acquisition and potentially better accuracy
- Potentially faster recalculating as it doesn't have to goto the cloud
- Works when there are no cell towers
Cons
- Separate interface to Maps on iPhone
- No integration with contacts on phone
Now I was getting somewhere. Given that Maps on my phone has worked well with my phone in my pocket (connecting over Bluetooth) and the number of times I haven't had cell coverage in the last 5 years I can count on one hand, the decision was easy; forget the GPS navigation. Too bad the choices weren't clearer.
(An interesting note is that while NAVIGON and other iPhone mapping apps can store maps locally and not use GPS data, Apple hasn't given them the ability to use CarPlay.)